@foreach([
['bg-emerald-500', __('hotel::modules.roomStatusBoard.vacantClean')],
['bg-amber-400', __('hotel::modules.roomStatusBoard.vacantDirty')],
['bg-sky-500', __('hotel::modules.roomStatusBoard.occupied')],
['bg-orange-400', __('hotel::modules.roomStatusBoard.maintenance')],
['bg-rose-500', __('hotel::modules.roomStatusBoard.outOfOrder')],
['bg-slate-400', __('hotel::modules.roomStatusBoard.outOfService')],
] as [$dot, $label])
{{ $label }}
@endforeach
@foreach($rooms as $room)
@php
$cfg = [
'vacant_clean' => ['accent' => 'bg-emerald-500', 'badge' => 'bg-emerald-50 text-emerald-700 ring-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:ring-emerald-700', 'dot' => 'bg-emerald-500', 'action' => 'text-emerald-600 hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-900/20 border-emerald-100 dark:border-emerald-800/50'],
'vacant_dirty' => ['accent' => 'bg-amber-400', 'badge' => 'bg-amber-50 text-amber-700 ring-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:ring-amber-700', 'dot' => 'bg-amber-400', 'action' => ''],
'occupied' => ['accent' => 'bg-sky-500', 'badge' => 'bg-sky-50 text-sky-700 ring-sky-200 dark:bg-sky-900/30 dark:text-sky-400 dark:ring-sky-700', 'dot' => 'bg-sky-500', 'action' => ''],
'maintenance' => ['accent' => 'bg-orange-400', 'badge' => 'bg-orange-50 text-orange-700 ring-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:ring-orange-700', 'dot' => 'bg-orange-400', 'action' => ''],
'out_of_order' => ['accent' => 'bg-rose-500', 'badge' => 'bg-rose-50 text-rose-700 ring-rose-200 dark:bg-rose-900/30 dark:text-rose-400 dark:ring-rose-700', 'dot' => 'bg-rose-500', 'action' => ''],
'out_of_service' => ['accent' => 'bg-slate-400', 'badge' => 'bg-slate-50 text-slate-600 ring-slate-200 dark:bg-slate-700/40 dark:text-slate-400 dark:ring-slate-600', 'dot' => 'bg-slate-400', 'action' => ''],
][$room->status->value] ?? ['accent' => 'bg-gray-400', 'badge' => 'bg-gray-100 text-gray-600 ring-gray-200', 'dot' => 'bg-gray-400', 'action' => ''];
$isVacantClean = $room->status === \Modules\Hotel\Enums\RoomStatus::VACANT_CLEAN;
$isOccupied = $room->status === \Modules\Hotel\Enums\RoomStatus::OCCUPIED;
$primaryGuest = $isOccupied
? ($room->currentStay?->stayGuests->firstWhere('is_primary', true) ?? $room->currentStay?->stayGuests->first())
: null;
@endphp
!$isVacantClean,
'border-emerald-200 dark:border-emerald-800/60 hover:shadow-lg hover:-translate-y-0.5 cursor-pointer' => $isVacantClean,
]) @if($isVacantClean) wire:click="openCheckInModal({{ $room->id }})" @endif>
{{-- Coloured left accent bar --}}
{{-- Card body --}}
{{-- Top row: room number + status dot --}}
{{ $room->room_number }}
{{ $room->status->label() }}
{{-- Room type --}}
{{ $room->roomType->name }}
@if($room->floor)
· {{ __('hotel::modules.roomStatusBoard.floor', ['floor' => $room->floor]) }}
@endif
{{-- Occupied: guest name + checkout --}}
@if($isOccupied && $room->currentStay)
{{ $primaryGuest?->guest?->full_name ?? __('hotel::modules.roomStatusBoard.guest') }}
@endif
{{-- Vacant Clean: integrated check-in footer --}}
@if($isVacantClean)
{{ __('hotel::modules.checkIn.checkInButton') }}
@endif
@endforeach
{{ __('hotel::modules.room.noRoomsFound') }}