1 · Pagehead band — Day / Week / Month + range nav
Aug 23 – 29, 2026
12 matching · Aug 23 – 29, 2026 · Each location's local time
Day / Week / Month is a presentation switch, wired via sb-controls.js (Week is the default on). It shares one range-nav pair and one Today jump across all three modes. The meta line states the match count, the exact range, and that times are each location's LOCAL time — multi-location dealerships never see one blended clock.
"Show" menu open — display options, not filters
Weekends
Business hours shading
Cancelled appointments
Service
Delivery
Show controls how the grid PRESENTS what's already loaded (weekend column, the business-hours tint, appointment types drawn at all). Filters controls WHICH ROWS load in the first place (assignee, location, status). Switching Show options never re-queries or resets an active filter — the two stay independent axes.
2 · Week grid — desktop, 8 AM – 7 PM
Sun23
Mon24
Tue25
Wed26
Thu27
Fri28
Sat29
Blocks render at a fixed 30-minute height, never scaled to a real duration — our appointment model stores a single timestamp, not a start/end, so drawing anything but a fixed block would fabricate a duration we don't have. Business-hours shading (blue-02, low opacity) covers the working window on weekdays only; Sunday and closed hours stay plain. Today's date numeral (Mon 24) sits in a filled blue-01 circle. Block skins: default = white surface + gray-06 hairline; selected = filled blue-01 with white text; an unresolved past block keeps a 3px orange-01 left edge; a DAISI-booked block carries the small gold origin mark top-right. Tuesday shows two overlapping bookings side-by-side in one slot — the grid's collision-handling case.
3 · Day mode — one column at scale
Mon24
Same block grammar at a wider column — the Day segment in the pagehead band drives this. No new skins; scale only.
4 · States
Empty week
Nothing scheduled this weekNo appointments in this range.
Loading — two day columns
Month mode is a later figure — a postage-stamp density grid deserves its own pass rather than a half-drawn placeholder here.