Move start/restart actions into join link cards for webinars and conferences.
Deploy Ladill Meet / deploy (push) Successful in 29s

Remove the duplicate webinar header button and make the primary purple action
first in the join card, with a mobile rotate icon when restarting.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-04 02:48:22 +00:00
co-authored by Cursor
parent da93c9814d
commit c2cb9cf33a
2 changed files with 34 additions and 35 deletions
@@ -1,4 +1,7 @@
<x-app-layout title="{{ $room->title }}">
@php
$conferenceRestarting = $room->status === 'ended' || $room->sessions->isNotEmpty();
@endphp
<div class="mx-auto max-w-2xl">
<div>
<p class="text-xs font-semibold uppercase tracking-wide text-violet-600">Conference</p>
@@ -32,7 +35,19 @@
@elseif ($room->canRestart())
<form method="POST" action="{{ route('meet.conferences.start', $room) }}" class="inline">
@csrf
<button type="submit" class="btn-primary btn-primary-sm">{{ $room->restartLabel() }}</button>
<button type="submit"
class="btn-primary btn-primary-sm {{ $conferenceRestarting ? 'inline-flex max-lg:h-9 max-lg:w-9 max-lg:items-center max-lg:justify-center max-lg:rounded-full max-lg:p-0' : '' }}"
title="{{ $room->restartLabel() }}"
aria-label="{{ $room->restartLabel() }}">
@if ($conferenceRestarting)
<svg class="h-4 w-4 lg:hidden" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"/>
</svg>
<span class="hidden lg:inline">{{ $room->restartLabel() }}</span>
@else
{{ $room->restartLabel() }}
@endif
</button>
</form>
@endif
<a href="{{ route('meet.rooms.ical', $room) }}" class="btn-secondary btn-secondary-sm">Download iCal</a>
+18 -34
View File
@@ -3,30 +3,10 @@
$webinarRestarting = $room->status === 'ended' || $room->sessions->isNotEmpty();
@endphp
<div class="mx-auto max-w-2xl">
<div class="flex items-start justify-between gap-4">
<div>
<p class="text-xs font-semibold uppercase tracking-wide text-indigo-600">Webinar</p>
<h1 class="text-2xl font-semibold text-slate-900">{{ $room->title }}</h1>
<p class="mt-1 text-sm text-slate-500">{{ config('meet.room_statuses')[$room->status] ?? $room->status }}</p>
</div>
@if ($room->canRestart())
<form method="POST" action="{{ route('meet.webinars.start', $room) }}">
@csrf
<button type="submit"
class="btn-primary {{ $webinarRestarting ? 'inline-flex max-lg:h-10 max-lg:w-10 max-lg:shrink-0 max-lg:items-center max-lg:justify-center max-lg:rounded-full max-lg:p-0' : '' }}"
title="{{ $room->restartLabel() }}"
aria-label="{{ $room->restartLabel() }}">
@if ($webinarRestarting)
<svg class="h-5 w-5 lg:hidden" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"/>
</svg>
<span class="hidden lg:inline">{{ $room->restartLabel() }}</span>
@else
{{ $room->restartLabel() }}
@endif
</button>
</form>
@endif
<div>
<p class="text-xs font-semibold uppercase tracking-wide text-indigo-600">Webinar</p>
<h1 class="text-2xl font-semibold text-slate-900">{{ $room->title }}</h1>
<p class="mt-1 text-sm text-slate-500">{{ config('meet.room_statuses')[$room->status] ?? $room->status }}</p>
</div>
@if (session('success'))
@@ -49,24 +29,28 @@
</div>
<div class="btn-group mt-4">
<a href="{{ route('meet.rooms.ical', $room) }}" class="btn-secondary btn-secondary-sm">Download iCal</a>
@if ($room->sessions->isNotEmpty())
<a href="{{ route('meet.rooms.attendance', $room) }}" class="btn-secondary btn-secondary-sm">Attendance CSV</a>
@endif
@if ($room->canRestart() && ($room->status === 'ended' || $room->sessions->isNotEmpty()))
@if ($room->canRestart())
<form method="POST" action="{{ route('meet.webinars.start', $room) }}" class="inline">
@csrf
<button type="submit"
class="btn-secondary btn-secondary-sm inline-flex max-lg:h-9 max-lg:w-9 max-lg:items-center max-lg:justify-center max-lg:rounded-full max-lg:p-0"
class="btn-primary btn-primary-sm {{ $webinarRestarting ? 'inline-flex max-lg:h-9 max-lg:w-9 max-lg:items-center max-lg:justify-center max-lg:rounded-full max-lg:p-0' : '' }}"
title="{{ $room->restartLabel() }}"
aria-label="{{ $room->restartLabel() }}">
<svg class="h-4 w-4 lg:hidden" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"/>
</svg>
<span class="hidden lg:inline">{{ $room->restartLabel() }}</span>
@if ($webinarRestarting)
<svg class="h-4 w-4 lg:hidden" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"/>
</svg>
<span class="hidden lg:inline">{{ $room->restartLabel() }}</span>
@else
{{ $room->restartLabel() }}
@endif
</button>
</form>
@endif
<a href="{{ route('meet.rooms.ical', $room) }}" class="btn-secondary btn-secondary-sm">Download iCal</a>
@if ($room->sessions->isNotEmpty())
<a href="{{ route('meet.rooms.attendance', $room) }}" class="btn-secondary btn-secondary-sm">Attendance CSV</a>
@endif
</div>
@if ($room->passcode)