--- id: 24-5 title: 24-5 Home Booking Card (Compact Booking and Day Strip) status: QA Review date: 2026-10-31 parent: 24 --- ## Description Add section 8 of the home page: a forest booking card that embeds the existing guest-booking component in a one-screen "compact" mode, with a 14-day strip of bookable days. The booking rules must not change: name, email and phone required; case summary required, minimum 20 characters; the math captcha (`App\Services\CaptchaService`); one booking per email per day; slots from `App\Services\AvailabilityService`; the existing confirm step (`showConfirmation`); and the existing `submit()` that redirects to `route('booking.success')`. Logged-in visitors see the existing logged-in message instead of the form. ### 1. Availability calendar — `resources/views/livewire/availability-calendar.blade.php` - Add `public string $variant = 'month';` (settable from the tag: `variant="strip"`). The default `month` must render exactly as today, because `resources/views/livewire/client/consultations/book.blade.php` also uses this component. - When `$variant === 'strip'`: - Compute `$stripDays`: starting today, step one day at a time up to 60 days ahead and collect the first 14 dates for which `AvailabilityService::getDateStatus($date)` returns `'available'` or `'partial'` (the same two values `selectDate()` accepts today), each with its `getAvailableSlots($date)`. - On mount, select the first strip day (`$selectedDate`) and load its slots with the existing `loadAvailableSlots()`. - Render a day strip: `
` of `