mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-13 03:15:34 +02:00
* fix(layout): fold inbox and chat to one column below lg On a tablet or a folded inner screen the inbox and chat pages spend 256px on the nav and another 320px on the list column, leaving the reading pane a couple hundred pixels — 203px on a Pixel Fold inner screen at 851px, 118px at 768px. Both pages already have a complete single-column list/detail branch with its own back affordance and test coverage; it was only reachable below 768px. Widen the trigger instead of adding a layout: - `useIsCompact()` (max-width 1023px) alongside `useIsMobile()`, sharing one implementation. Inbox, chat and the sidebar provider switch to it, so below `lg` the pages take one column and the nav becomes a sheet. The provider's context field is renamed to `isCompact` to match, since a consumer reading `isMobile` would assume the phone breakpoint. - Between `lg` and `xl` the two panes stay, but the nav auto-collapses on entering the band and restores on leaving it. A manual re-open inside the band sticks until the next crossing. - The header's sidebar trigger is visible wherever the nav is not a permanent column (`xl:hidden`). At and above 1280px nothing changes: the persisted panel sizes and the resizable nav width are untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(layout): give settings a nav trigger and align the sidebar CSS gate Follow-ups to folding the list/detail pages below `lg`, all three in the 768–1023 range the previous commit opened up: - Settings builds its own chrome instead of a `PageHeader`, so it never rendered a sidebar trigger. That was harmless while the nav was a fixed column at those widths; now the nav is a closed sheet and the page had no control to reopen it, stranding touch users. `MobileSidebarTrigger` is exported as `CollapsedNavTrigger` and reused there. - The in-flow sidebar's CSS gate said `md` while `useIsCompact()` said `lg`. Since the hook only resolves after the first paint, every load in between painted a 256px sidebar for a frame before collapsing it into a sheet. Both gates are `lg` now. - The auto-collapse listener's ref is refreshed in an effect rather than during render. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: bowser-bot <bowser-bot@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>