feat(client): universal client nav shell — icons, collapse, theme + locale switchers, native drawer #210
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol#210
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
#185 deleted the Next.js UI; the Expo client is now the user-facing surface. The minimal nav shell that landed alongside #185 (a flat list of nav links + identity + logout) gets users from screen to screen but misses several features the deleted PWA sidebar had. This ticket brings the universal client's nav shell up to parity with the old UI.
Scope
Visual + interaction parity
lucide-react-nativeor@expo/vector-icons(Lucide line icons per the CLAUDE.md voice rules). Pick one and pin it.useSettings/useUpdateSettingsif there's room in the DTO; otherwise local secure storage. Thenav.collapseSidebar/nav.expandSidebari18n keys already exist for the toggle's aria label.Quick-action controls in the sidebar footer
useSettings+useUpdateSettings. Thenav.theme+nav.toggleThemekeys already exist.SUPPORTED_LOCALES. Thenav.localekey already exists.Native (Android, Flatpak)
@react-navigation/drawer(Expo Router supports it as a drop-in replacement forSlot). On web the drawer collapses to the sidebar above; on native it slides from the left.Acceptance criteria
pnpm -F @carol/client webandbuild:android) shows a drawer, not a stacked layout.react-i18next; no hardcoded copy.Out of scope
/dev/components) — that lives with the API and was deleted in #185.Composes with
sidebarCollapsedfield; either land that with this ticket or use secure storage if the DTO change is heavy.Part of
#176