Skip to content

Add semantic color tokens for light/dark modes #40

@AndreRobitaille

Description

@AndreRobitaille

Summary

  • Implement a centralized semantic color token system (CSS variables) for light and dark modes.
  • Replace hardcoded colors with tokens across existing CSS.
  • Adjust light/dark palettes to reduce "too white" light mode and "too blue" dark mode.

Context

The current UI feels visually flat: light mode is overly white and dark mode is mostly shades of blue. We want calm civic authority with neutral bases and controlled accents.

Requirements

  • Add a centralized color token file (CSS/SCSS) defining semantic variables (not component-specific colors).
  • Define tokens for:
    • Background (page)
    • Surface (cards/rows/panels)
    • Surface subtle (alternate row background or hover)
    • Border / divider
    • Text primary / text secondary / text muted
    • Link / primary accent
    • Status colors (success, attention, danger, neutral)
  • Implement both light and dark mode values using the same token names.
  • Ensure contrast is acceptable for readability (especially text-muted vs background).

Design Intent

  • Light mode:
    • Page background should be off-white (not pure white).
    • Cards/surfaces can be true white with subtle borders.
  • Dark mode:
    • Page background and surfaces should be neutral charcoal/slate (not blue).
    • Blue becomes an accent, not the base background tone.

Non-requirements

  • Do not change layout.
  • Do not add new UI elements.
  • Do not add fancy gradients.

Acceptance Criteria

  • There is a single source of truth for theme colors.
  • Existing CSS is updated to use tokens instead of hardcoded colors.
  • Light mode and dark mode feel clearly distinct and less fatiguing.

Token Names (examples)

  • --c-bg
  • --c-surface
  • --c-surface-2
  • --c-border
  • --c-text
  • --c-text-2
  • --c-text-3
  • --c-link
  • --c-success
  • --c-attention
  • --c-danger
  • --c-neutral

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions