aziros/src/resources/views/livewire/admin/versions.blade.php

134 lines
7.2 KiB
PHP

<div class="space-y-6">
{{-- Form --}}
<div class="bg-white rounded-2xl border border-gray-100 p-6">
<h3 class="font-semibold text-gray-900 mb-4">
{{ $editingId ? t('admin.versions.edit') : t('admin.versions.new') }}
</h3>
<div class="grid grid-cols-2 gap-4 mb-4">
<div>
<label class="text-sm font-medium text-gray-700 block mb-1">{{ t('admin.versions.version') }}</label>
<input wire:model="version" placeholder="1.1.0"
class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500"/>
@error('version') <p class="text-xs text-red-500 mt-1">{{ $message }}</p> @enderror
</div>
<div>
<label class="text-sm font-medium text-gray-700 block mb-1">{{ t('admin.versions.name') }}</label>
<input wire:model="name" placeholder="Reminder Update"
class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500"/>
@error('name') <p class="text-xs text-red-500 mt-1">{{ $message }}</p> @enderror
</div>
</div>
<div class="grid grid-cols-3 gap-4 mb-4">
<div>
<label class="text-sm font-medium text-gray-700 block mb-1">{{ t('admin.versions.status') }}</label>
<select wire:model="status"
class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500">
<option value="draft">Draft</option>
<option value="beta">Beta</option>
<option value="live">Live</option>
<option value="rollback">Rollback</option>
</select>
</div>
<div>
<label class="text-sm font-medium text-gray-700 block mb-1">{{ t('admin.versions.platform') }}</label>
<select wire:model="platform"
class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500">
<option value="all">{{ t('admin.versions.platform_all') }}</option>
<option value="web">Web</option>
<option value="app">App</option>
</select>
</div>
<div class="flex items-end pb-2">
<label class="flex items-center gap-2 cursor-pointer">
<input type="checkbox" wire:model="show_popup" class="rounded"/>
<span class="text-sm text-gray-700">{{ t('admin.versions.show_popup') }}</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="text-sm font-medium text-gray-700 block mb-1">{{ t('admin.versions.changelog') }}</label>
<textarea wire:model="changelog" rows="3" placeholder="{{ t('admin.versions.changelog_placeholder') }}"
class="w-full border border-gray-200 rounded-xl px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500"></textarea>
</div>
<div class="flex gap-2">
<button wire:click="save"
class="bg-indigo-600 text-white rounded-xl px-4 py-2 text-sm font-medium hover:bg-indigo-700">
{{ $editingId ? t('common.save') : t('common.create') }}
</button>
@if($editingId)
<button wire:click="$set('editingId', null)"
class="bg-gray-100 text-gray-700 rounded-xl px-4 py-2 text-sm hover:bg-gray-200">
{{ t('common.cancel') }}
</button>
@endif
</div>
</div>
{{-- Liste --}}
<div class="bg-white rounded-2xl border border-gray-100 overflow-hidden">
<table class="w-full">
<thead class="bg-gray-50 border-b border-gray-100">
<tr>
<th class="text-left px-4 py-3 text-xs font-medium text-gray-500">{{ t('admin.versions.version') }}</th>
<th class="text-left px-4 py-3 text-xs font-medium text-gray-500">{{ t('admin.versions.name') }}</th>
<th class="text-left px-4 py-3 text-xs font-medium text-gray-500">{{ t('admin.versions.status') }}</th>
<th class="text-left px-4 py-3 text-xs font-medium text-gray-500">{{ t('admin.versions.platform') }}</th>
<th class="text-left px-4 py-3 text-xs font-medium text-gray-500">{{ t('admin.versions.released') }}</th>
<th class="px-4 py-3"></th>
</tr>
</thead>
<tbody class="divide-y divide-gray-50">
@foreach($this->versions as $v)
<tr class="hover:bg-gray-50 transition">
<td class="px-4 py-3">
<span class="font-mono text-sm font-medium text-gray-900">{{ $v->version }}</span>
</td>
<td class="px-4 py-3 text-sm text-gray-700">{{ $v->name }}</td>
<td class="px-4 py-3">
<span class="px-2 py-1 rounded-full text-xs font-medium
{{ match($v->status) {
'live' => 'bg-green-100 text-green-700',
'beta' => 'bg-amber-100 text-amber-700',
'draft' => 'bg-gray-100 text-gray-600',
'rollback' => 'bg-red-100 text-red-600',
default => ''
} }}">
{{ ucfirst($v->status) }}
</span>
</td>
<td class="px-4 py-3 text-sm text-gray-500">{{ ucfirst($v->platform) }}</td>
<td class="px-4 py-3 text-sm text-gray-500">
{{ $v->released_at?->format('d.m.Y H:i') ?? '—' }}
</td>
<td class="px-4 py-3">
<div class="flex items-center gap-2 justify-end">
@if($v->status !== 'live')
<button wire:click="setLive('{{ $v->id }}')"
class="text-xs text-green-600 hover:text-green-800 font-medium">
{{ t('admin.versions.go_live') }}
</button>
@endif
<button wire:click="edit('{{ $v->id }}')"
class="text-xs text-indigo-600 hover:text-indigo-800">
{{ t('common.edit') }}
</button>
<button wire:click="delete('{{ $v->id }}')"
wire:confirm="{{ t('admin.versions.confirm_delete') }}"
class="text-xs text-red-500 hover:text-red-700">
{{ t('common.delete') }}
</button>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>