- Merge rpt-appt-type + calendar into unified rpt-booking Preact component;
service state drives event source via useEffect, no DOM event bus
- Each service has distinct availability (different slot density, start hours);
surgical rehab only available 46+ days out
- Slot click reveals inline Last name / Phone / Comments form; submits all
fields together to storeSlot rather than redirecting immediately
- Fix nextBusinessDay() timezone bug (toISOString is UTC; use local date
components instead); pre-select first available day >= next business day
- Today always has no availability (backend now starts from tomorrow)
- Replace all raw hex colour values with named palette tokens throughout
templates and JS components
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Slots panel moves from popup to side-by-side with the calendar
- First available slot is pre-selected (highlighted) on load
- Calendar initializes to the next business day
- eventsSet auto-selects that date if it has availability
- Events endpoint now skips Sat/Sun (N > 5)
- Removed backdrop/close-button popup infrastructure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- rpt-testimonials: pixel-offset carousel with DOM-measured max scroll,
cards overflow the 1200px safe area to the right; red debug border on container
- calendar: circle-per-day design replacing event bars; teal outline for
available days, filled for selected; dateClick replaces moreLinkClick
- settings.php: normalize BASE_URL before parse_url to fix trusted host
error when scheme is missing; always include localhost fallback patterns
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>