Files
2026-07-24 11:02:38 +01:00

2 lines
2.7 KiB
PHP

<x-layouts.app :title="__('Workflows')"><main class="p-6 space-y-6"><div><flux:heading size="xl">Workflow</flux:heading><flux:text>Approval definitions, active reviews and completed work.</flux:text></div><div class="grid gap-4 md:grid-cols-3"><div class="rounded-xl border p-4"><flux:text>Definitions</flux:text><flux:heading size="xl">{{ $definitions->count() }}</flux:heading></div><div class="rounded-xl border p-4"><flux:text>Awaiting action</flux:text><flux:heading size="xl">{{ $queue->total() }}</flux:heading></div><div class="rounded-xl border p-4"><flux:text>Completed</flux:text><flux:heading size="xl">{{ $completed }}</flux:heading></div></div><div class="grid gap-6 xl:grid-cols-3"><section class="xl:col-span-2 rounded-xl border p-5"><flux:heading>Review queue</flux:heading><div class="mt-4 space-y-3">@forelse($queue as $item)<div class="rounded-lg border p-4"><div class="flex items-start justify-between gap-4"><div><div class="font-semibold">{{ method_exists($item->subject,'workflowLabel') ? $item->subject->workflowLabel() : class_basename($item->subject_type).' #'.$item->subject_id }}</div><div class="text-sm text-zinc-500">{{ $item->definition->name }} · {{ $item->stage->name }} @if($item->due_at) · due {{ $item->due_at->diffForHumans() }} @endif</div></div><div class="flex gap-2"><form method="POST" action="{{ route('administration.workflows.transition',$item) }}">@csrf<input type="hidden" name="action" value="approve"><flux:button type="submit" size="sm" variant="primary">Approve</flux:button></form><form method="POST" action="{{ route('administration.workflows.transition',$item) }}" class="flex gap-2">@csrf<input type="hidden" name="action" value="reject"><input name="comment" required placeholder="Reason" class="rounded-md border px-2 text-sm"><flux:button type="submit" size="sm">Changes</flux:button></form></div></div></div>@empty<flux:text>No items are awaiting review.</flux:text>@endforelse</div><div class="mt-4">{{ $queue->links() }}</div></section><section class="rounded-xl border p-5"><flux:heading>Create workflow</flux:heading><form method="POST" action="{{ route('administration.workflows.store') }}" class="mt-4 space-y-4">@csrf<flux:input name="name" label="Name" required/><flux:input name="subject_type" label="Subject model (optional)" placeholder="Modules\Pages\Models\Page"/><flux:textarea name="description" label="Description"/><flux:button type="submit" variant="primary">Create</flux:button></form><div class="mt-6 space-y-2">@foreach($definitions as $definition)<div class="rounded-lg border p-3"><div class="font-medium">{{ $definition->name }}</div><div class="text-xs text-zinc-500">{{ $definition->stages->pluck('name')->join(' → ') }}</div></div>@endforeach</div></section></div></main></x-layouts.app>