Radarist project

Radarist / Design system

Documentation v0.1 · Product in progress

Design system contents

Components

Theme selector

Offer light, dark, and system without changing the semantic responsibilities of the palette.

On this page

Purpose and usage

Offer light, dark, and system without changing the semantic responsibilities of the palette.

Use the existing selector for the product’s actual theme. Documentation screenshot controls are independent.

Anatomy

Anatomy
PartContract
ChoiceLabeled mode buttons.
Persistenceradarist-theme browser storage.
Root stylingdata-theme for an explicit mode; absence for system.

Variants and configuration

Variants and configuration
ConfigurationBehavior
LightUse base tokens.
DarkUse explicit dark overrides.
SystemFollow OS preference.

State coverage

State coverage
StateImplemented behavior
SelectedCurrent mode is visibly distinguished.
Initial loadSaved explicit preference is applied by layout script and component.
Storage unavailableTheme script catches storage access failures.

Interaction and responsive behavior

  • Keep mode preference independent of other local preference forms.
  • Use the same storage key and root attribute in any new entry point.
  • Review initial rendering for theme mismatch.

Accessibility contract

  • Buttons need names and clear selected semantics.
  • Mode icons do not replace labels.
  • Test all choices with keyboard activation.

Known gaps and readiness

This is browser preference persistence. It is not proof of a saved cross-device account setting.

Composition example

<ThemeSelector />

Source references

Source references
FileResponsibility
app/components/theme-selector.tsxTheme choice and browser storage
app/components/app-header.tsxApplication placement

Examples from the app

Actual Radarist components with fictional data. Captured at 2× resolution or higher. Select an image to inspect it full size.

Theme Selector · Component detail · Light · Desktop · 1864 × 214 px

Source audit: 2026-10-07 · Revision 0103e2549959 · Documentation v0.1