@include('partials.favicon') @vite(['resources/css/app.css', 'resources/js/meet-room.js'])
@php use App\Models\User; use App\Services\Meet\ParticipantPresenter; $joined = $session->participants->whereIn('status', ['joined', 'waiting']); $participantAvatars = ParticipantPresenter::avatarMap($joined, $room->host_user_ref); $joinedParticipants = $joined ->map(fn ($p) => ParticipantPresenter::toArray($p, $participantAvatars, $room->host_user_ref)) ->values(); $roomHostUser = User::query()->where('public_id', $room->host_user_ref)->first(); $roomHost = [ 'user_ref' => $room->host_user_ref, 'display_name' => $roomHostUser?->name ?? 'Host', 'avatar_url' => $roomHostUser?->avatarUrl(), ]; $isConferenceSession = $isConference ?? false; $sessionNoun = match (true) { $isConferenceSession => 'conference', ($isSpace ?? false) => 'room', $room->isWebinar() => 'webinar', default => 'meeting', }; $sessionNounTitle = ucfirst($sessionNoun); $presenterRefsList = (array) ($presenterRefs ?? []); $headerHostPerson = ParticipantPresenter::headerHost($joinedParticipants->all(), $roomHost); $headerParticipantCount = ParticipantPresenter::headerCountNumber( $joinedParticipants->all(), (bool) ($usesStageLayout ?? false), $presenterRefsList, ); $headerParticipantSuffix = ParticipantPresenter::headerCountSuffix( $joinedParticipants->all(), (bool) ($usesStageLayout ?? false), $presenterRefsList, ); $headerWaitingCount = $joinedParticipants->where('status', 'waiting')->count(); $stageLayoutName = ($stageConfig['stage_layout'] ?? 'plenary') === 'panel' ? 'Panel discussion' : 'Plenary'; $initialConferenceStatus = match (true) { ($inBreakout ?? false) => 'Breakout · meeting mode', ($isGreenRoom ?? false) && ($usesStageLayout ?? false) => "Green room · {$stageLayoutName}", ($isGreenRoom ?? false) => 'Green room', ! ($usesStageLayout ?? false) => 'Conference live', ($stageConfig['stage_layout'] ?? 'plenary') === 'panel' => 'Panel discussion live', default => 'Plenary live', }; $initialConferenceStatusClass = match (true) { ($inBreakout ?? false) => 'text-amber-400/90', ($isGreenRoom ?? false) => 'text-violet-400/90', ($stageConfig['stage_layout'] ?? 'plenary') === 'panel' => 'text-violet-400/90', default => 'text-sky-400/90', }; @endphp @if (! $mediaConfigured)Audio room
@elseif ($isConference ?? false){{ $initialConferenceStatus }}
@endifGreen room
Only hosts and speakers are visible. Attendees join after you go live.
Stage layout:
Breakout session
Breakouts are active
Attendees are in smaller discussion groups. You remain on the main stage.
Invite others
Share this link so people can join the {{ $sessionNoun }}.
Passcode:
Attendees and speakers are split into smaller groups with full meeting controls. You stay on the main stage.
All participants will be disconnected and the session will close.
Messages are visible to everyone in the {{ ($isSpace ?? false) ? 'room' : 'call' }}
{{ $message->sender_name }}
@endunless{{ $message->body }}
{{ $message->created_at->format('g:i A') }}
Lineup from Events when linked to this {{ $sessionNoun }}
Raised hands
Invited to speak
Waiting to join
Requesting to speak
Choose how speakers appear on stage. Changes apply when you save.
Plenary shows one speaker on the main stage.
On stage
Switching to panel discussion changes the live stage to a multi-speaker grid for everyone in the room.
{{ ($isSpace ?? false) ? 'Audio room controls' : $sessionNounTitle.' tools and extras' }}
Broadcast to breakouts
Q&A