{{ __('hotel::modules.roomStatusBoard.roomStatusBoard') }}

{{-- Room type tabs (styled like settings tabs) --}}
  • @foreach($roomTypes as $roomType)
  • @endforeach
{{-- Legend --}}
@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
@if($rooms->isEmpty())

{{ __('hotel::modules.room.noRoomsFound') }}

@endif
{{-- Walk-in Instant Check-In Modal --}} @if($showCheckInModal && $selectedRoom)
{{ __('hotel::modules.checkIn.checkIn') }} — {{ __('hotel::modules.roomStatusBoard.room') }} {{ $selectedRoom->room_number }} ({{ __('hotel::modules.checkIn.walkIn') }})
{{-- ══ Room banner ══ --}}

{{ __('hotel::modules.roomStatusBoard.room') }} {{ $selectedRoom->room_number }} — {{ $selectedRoom->roomType->name }}

@if($selectedRoom->floor)

{{ __('hotel::modules.roomStatusBoard.floor', ['floor' => $selectedRoom->floor]) }} · {{ __('hotel::modules.roomStatusBoard.vacantClean') }}

@endif
Walk-in
{{-- ══ SECTION 1: Stay Details ══ --}}
{{-- Section header --}}
{{ __('hotel::modules.checkIn.stayDetails') ?? 'Stay Details' }}
{{-- Fields --}}
{{ __('hotel::modules.checkIn.checkOutDate') }} * @error('checkOutDate')

{{ $message }}

@enderror
{{ __('hotel::modules.checkIn.checkOutTime') }}
{{ __('hotel::modules.reservation.adults') }} * @error('adults')

{{ $message }}

@enderror
{{ __('hotel::modules.reservation.children') }}
{{-- ══ SECTION 2: Billing ══ --}}
{{-- Section header --}}
{{ __('hotel::modules.checkIn.pricing') }}
{{-- Rate chip --}}
{{ currency_format($ratePerNight) }} / night · {{ $nights }} {{ Str::plural('night', $nights) }}
{{-- Charge inputs --}}
{{ __('hotel::modules.checkIn.roomCharge') }} * @error('totalRoomCharge')

{{ $message }}

@enderror
{{ __('hotel::modules.checkIn.advancePaid') }} @error('advancePaid')

{{ $message }}

@enderror
{{-- Balance summary strip --}} @php $balance = max(0, (float)$totalRoomCharge - (float)$advancePaid); @endphp
{{ __('hotel::modules.checkOut.balanceDue') ?? 'Balance Due at Checkout' }} {{ $balance > 0 ? currency_format($balance) : '✓ Fully Paid' }}
{{-- ══ SECTION 3: Guests ══ --}}
{{-- Section header --}}
{{ __('hotel::modules.checkIn.guestDetails') }}
{{-- Primary guest --}}
{{ __('hotel::modules.guest.firstName') }} * @error('checkInGuest.first_name')

{{ $message }}

@enderror
{{ __('hotel::modules.guest.lastName') }}
{{ __('hotel::modules.guest.phone') }} * @error('checkInGuest.phone')

{{ $message }}

@enderror
{{ __('hotel::modules.guest.email') }} @error('checkInGuest.email')

{{ $message }}

@enderror
{{ __('hotel::modules.guest.idType') }} * @error('checkInGuest.id_type')

{{ $message }}

@enderror
{{ __('hotel::modules.guest.idNumber') }} * @error('checkInGuest.id_number')

{{ $message }}

@enderror
{{-- Additional guests --}} @foreach($additionalGuests as $gIndex => $guest)
{{ __('hotel::modules.guest.firstName') }} * @error("additionalGuests.{$gIndex}.first_name")

{{ $message }}

@enderror
{{ __('hotel::modules.guest.lastName') }}
{{ __('hotel::modules.guest.phone') }} * @error("additionalGuests.{$gIndex}.phone")

{{ $message }}

@enderror
{{ __('hotel::modules.guest.email') }} @error("additionalGuests.{$gIndex}.email")

{{ $message }}

@enderror
{{ __('hotel::modules.guest.idType') }} * @error("additionalGuests.{$gIndex}.id_type")

{{ $message }}

@enderror
{{ __('hotel::modules.guest.idNumber') }} * @error("additionalGuests.{$gIndex}.id_number")

{{ $message }}

@enderror
@endforeach
{{ __('hotel::modules.checkIn.cancel') }} {{ __('hotel::modules.checkIn.confirmCheckIn') }}
@endif