Deploy Ladill Events / deploy (push) Successful in 28s
Proxy registration transaction paths on Events, add a join button on the confirmation page, introduce speaker roster management, and replace the QR design wizard with merchant-style create/show flows. Co-authored-by: Cursor <cursoragent@cursor.com>
47 lines
3.1 KiB
PHP
47 lines
3.1 KiB
PHP
<x-user-layout>
|
|
<x-slot name="title">Speakers</x-slot>
|
|
|
|
<div class="mx-auto max-w-5xl space-y-6">
|
|
<div>
|
|
<h1 class="text-2xl font-bold text-slate-900">Speakers</h1>
|
|
<p class="mt-1 text-sm text-slate-500">Manage speaker rosters and programme assignments for each event.</p>
|
|
</div>
|
|
|
|
<form method="GET" class="flex items-center gap-2">
|
|
<input type="text" name="search" value="{{ $search }}" placeholder="Search events…"
|
|
class="w-full max-w-sm rounded-xl border border-slate-200 px-3.5 py-2 text-sm focus:border-indigo-400 focus:outline-none focus:ring-1 focus:ring-indigo-400/30">
|
|
<button type="submit" class="rounded-xl border border-slate-200 px-4 py-2 text-sm font-semibold text-slate-600 hover:bg-slate-50 transition">Search</button>
|
|
</form>
|
|
|
|
<div class="overflow-hidden rounded-2xl border border-slate-200 bg-white">
|
|
@if($events->isEmpty())
|
|
<div class="px-6 py-14 text-center">
|
|
<p class="text-sm text-slate-500">{{ $search ? 'No events match your search.' : 'No events yet.' }}</p>
|
|
@unless($search)
|
|
<a href="{{ route('events.create') }}" class="mt-4 btn-primary">Create your first event</a>
|
|
@endunless
|
|
</div>
|
|
@else
|
|
<div class="divide-y divide-slate-100">
|
|
@foreach($events as $event)
|
|
@php $content = $event->content(); @endphp
|
|
<a href="{{ route('speakers.show', $event) }}" class="flex items-center gap-4 px-6 py-4 transition hover:bg-slate-50">
|
|
<div class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-violet-50 text-violet-600">
|
|
<svg class="h-5 w-5" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 0 1 6 0v8.25a3 3 0 0 1-3 3Z"/></svg>
|
|
</div>
|
|
<div class="min-w-0 flex-1">
|
|
<p class="truncate text-sm font-semibold text-slate-900">{{ $content['name'] ?? $event->label }}</p>
|
|
<p class="truncate text-xs text-slate-500">{{ $event->label }}</p>
|
|
</div>
|
|
<div class="hidden text-right text-xs text-slate-500 sm:block">
|
|
<p class="font-semibold text-slate-900">{{ number_format($event->speaker_count) }} speakers</p>
|
|
</div>
|
|
<svg class="h-4 w-4 shrink-0 text-slate-300" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"/></svg>
|
|
</a>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</x-user-layout>
|