Loading
feat: add dark mode with manual toggle in settings
Stacked on !11
Summary
dark mode across the whole app, driven by a manual toggle in Settings
Changes
Theme tokens
- 8 tokens with light + dark values in
src/lib/theme.ts:background,surface,ink,subtle,line,muted,brand,fill - One palette drives both delivery paths ->
useColors()returns hex for icon props and navigator options,vars()sets CSS variables for theclassNametokens. Hex-to-"r g b"is computed, so the two can't drift subtleandlineare new; there was previously no name for secondary text or borders, which is why greys were hardcoded
Notes
- Light mode is unchanged. All light values are the existing ones
- Variables are applied via
vars()on a plainViewat the root rather than thedarkMode: "class"strategy; the.dark:rootselector compiled correctly but the runtime never selected it, so the app stayed light.vars()is explicit and keeps the mechanism in one file - Dark values are Tailwind
slate(matching the Figma palette) as an ascending scale: background 900, surface 800, muted 700, line/fill 600.lineandfillshare a value deliberately; nothing puts aborder-lineon abg-fillelement - Onboarding already used only tokens, so it themes with no changes









