V8 Central — Product & Technical Spec
  1. Docs
  2. Experience
  3. Theme

#Theme

ModeSupport
LightYes
DarkYes
SystemYes (default). Follows prefers-color-scheme live

Implementation: next-themes (installed) with the class strategy, and shadcn CSS variables in app/globals.css for both modes. Confirmed scaffold

#Persistence

  • Stored per device (localStorage through next-themes). A cookie copy lets server-rendered pages avoid a flash Assumption.
  • Saving the theme to the user profile is optional. No V8 field exists Open question.
  • No flash on load: the theme script runs before paint (next-themes default).

#Components

ElementRule
ChartsColours from CSS variables (--chart-1…5), axis/grid from --muted-foreground/--border. Tooltips use the popover tokens. Never hard-coded hex
TablesRow hover and selected rows use token colours. Zebra rows optional. Sticky header background = --background
FormsInputs, focus ring (--ring), error text (--destructive) readable in both modes (WCAG AA 4.5:1)
Modals / sheetsOverlay darker in dark mode. Popover tokens
Empty statesIllustrations/icons in currentColor, so they follow the theme
Error states--destructive tokens, never a raw red
Status badgesOne semantic token set (success/warning/danger/info/muted) mapped per mode
Code / logsMonospace panel with its own tokens, readable in both modes

#Testing

Every page is checked in light and dark (Testing). Contrast is checked automatically with axe in both modes.

ServerAvatar V8 Central · prepared by central-app-2 (Pair 2 frontend) for Bhavik Jethwa · nothing in this spec is implemented yet · Built 2026-10-03 12:35 UTC