feat(dashboard): console shell with sidebar, mobile menu sheet and roster - #867
Open
kmonsoe wants to merge 1 commit into
Open
feat(dashboard): console shell with sidebar, mobile menu sheet and roster#867kmonsoe wants to merge 1 commit into
kmonsoe wants to merge 1 commit into
Conversation
…ster DashboardShell delegates to a new ConsoleShell: 280px bone sidebar with org switcher, role-gated nav groups with /v1/inbox badges, and an On-duty-now roster card; phones get a 56px header with a full-screen menu sheet and sign-out foot. Settings routes keep their own chrome. console-groups.ts mirrors the settings-groups nav-data pattern. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CPwvC1MqF1uhpNqC8BmvQN
This was referenced Aug 28, 2026
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.
Stacked on #866 (→ #865). Third slice of the Oversight console: the sidebar shell replaces the topbar dashboard chrome on all
/dashboard/*routes, per the design's console frame.What's here
shells/console-shell.tsx— desktop: 280px bone sidebar (border-r border-ink) with logo + org switcher (drives/v1/me/memberships, pick →setActiveOrgId+ reload, reuses the existingdashboard.orgSwitcherkeys), role-gated nav groups with cobalt left-bar active state and live count badges, and the "On duty now" foot card fed byGET /v1/orgs/me/roster(feat(conv): review-queue read model, internal notes, draft reject stamps #865) with per-member claim loads (viewer highlighted cobalt)./v1/inboxaggregate: waiting = crm+outreach+cms+feedback buckets (Overview), queue = live conversations, learning = kb candidates; refreshed over the org realtime channel with the same event-prefix filterinbox-datauses.nav/console-groups.ts(+tests) — mirrorssettings-groups:consoleGroupsForRole(agents loseadminOnlyitems),extendConsoleGroupsfor the cloud app,isConsoleItemActive(exact match for/dashboardso Overview doesn't swallow every route). Ships with Admin/Overview + Workspace/Settings; the Conversations / Automation / Learning entries land with their destination PRs, exactly like the previous stack did.DashboardShellkeeps its public props (brand,logoSrc,leftSlot→sidebar head slot,withConfirmDialog) so apps/web and the cloud web need no changes; settings routes keep their own chrome branch.nav.automation/nav.learning+dashboard.console.*in en and nb (nb transcreated: Oversight group → "Drift", "På vakt nå", "har {count}").Tests
dashboard-pages: 92 passed (new: role filtering, exact-root active matching, group splicing). Typecheck clean for dashboard-pages and apps/web. Full visual walkthrough (desktop + 390px) happens once the queue destination and overview rework land on this stack.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CPwvC1MqF1uhpNqC8BmvQN