feat(calendar): reclaim dead space — combined cadence/needs-client bar, wider mains, scrolling agenda - #119
Merged
Merged
Conversation
…r, wider mains, scrolling agenda Presentational-only layout cleanup from the Aug 11 review. - Combine the "N meetings need a client" (AmbiguousSection) and "Cadence tracker" (CadenceSection) cards into one bottom bar split in two side by side (lg:flex-1 on each root card; either half fills the width when the other is absent; lg:items-start keeps them independently sized). - Widen the day agenda 1/4 -> 1/3 (grid lg:grid-cols-4 -> grid-cols-3); calendar stays the dominant main at 2/3. - Equalize the day agenda to the calendar's height and scroll within itself (~3 meetings at a time). Absolute-inset-0 layer in a zero-contribution relative column lets the calendar alone size the row, capping the agenda; DayDetail's card fills that height with an inner overflow-y-auto list. Mobile keeps the natural stacked full-height flow. No data fetching, org-link, or create-client logic changed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Calendar — kill the dead space (Aug 11 review)
Presentational-only layout cleanup. No data fetching, org-link, or create-client logic changed. Follows #103 (agenda-left / calendar-right + collapsible attendees).
1. Combined cadence / needs-client bar (one bar, split in two, at the bottom)
The two previously-stacked full-width cards — "N meetings need a client" (
AmbiguousSection, admin-only) and "Cadence tracker" (CadenceSection) — now sit side by side in one bottom row (lg:flex-1on each root card):AmbiguousSectionreturningnullwhen nothing needs a client) → the remaining half fills the full width — no new dead half;lg:items-startkeeps the two halves independently sized.2. Wider + longer mains
lg:grid-cols-4→lg:grid-cols-3: day agenda widens 1/4 → 1/3; calendar stays the dominant main at 2/3.3. Day agenda equalizes height with the calendar and scrolls within itself
Pure-CSS height cap, no JS, no fixed pixel height:
lg:relativeand its content sits in alg:absolute lg:inset-0layer. Because that layer contributes zero intrinsic height, the calendar column alone sizes the grid row — so the agenda is always capped to exactly the calendar's height, regardless of meeting count.DayDetail's card becameflex min-h-0 flex-1 flex-col; its meeting list moved into amin-h-0 flex-1 overflow-y-autoregion under the fixed header → ~3 meetings at a time, scroll for more.< lg): thelg:-gated absolute positioning is off, so the agenda stacks above the calendar and flows the full list naturally.Files
apps/web/app/(app)/calendar/page.tsx— grid ratio, agenda wrapper, combined barapps/web/app/(app)/calendar/components/DayDetail.tsx— full-height card + inner scroll regionapps/web/app/(app)/calendar/components/CadenceSection.tsx—lg:flex-1apps/web/app/(app)/calendar/components/AmbiguousSection.tsx—lg:flex-1(both root cards)All four are calendar-only (grep-confirmed).
Verification
pnpm -r typecheck✅ (5/5) ·pnpm -r lint✅ (5/5)/calendarcouldn't be previewed here (Logto auth + NAT-gated backend). The core CSS mechanic (agenda equal-height cap + inner scroll showing ~3 items; bottom bar split in two) was validated in a standalone static HTML mock rendered in the browser pane using the identical layout classes — recommend a quick live look after deploy.Known ceiling
In Week view the calendar grid is short (one Mon–Fri row), so the height-matched agenda is correspondingly short there. Acceptable (week view also lists each day's meetings in its columns; the reviewed dead space was Month view). Brief notes the upgrade path.
Brief:
docs/plan/calendar-deadspace.md🤖 Generated with Claude Code