Sonarist project

Sonarist / Design system

Documentation v1.0.0 · Work in progress · UI prototype with separate server foundations

Design system contents

Components

Theme preference control

Choose native light, system or dark appearance with a stable pressed state.

On this page

Purpose and composition

Choose native light, system or dark appearance with a stable pressed state.

Use in Appearance settings; source controls are locally scoped preference UI.

Anatomy

Anatomy
PartResponsibility
GroupThree equal-width icon controls
SelectionRaised surface and filled icon

Configuration and variants

Configuration and variants
Input / variantContract
preferenceslight / system / dark
storagesonarist-theme with helpdesk-theme fallback
eventsstorage and sonarist-theme-change

States and feedback

States and feedback
StateVisible / behavioral result
Pressedaria-pressed=true
SystemOS media changes update class
InitialRoot script applies before paint

Interaction and responsive behavior

  • Selecting writes localStorage and dispatches change.
  • Native colorScheme follows resolved mode.
  • Do not claim server/account synchronization.

Accessibility contract

  • Each control has label/title.
  • aria-pressed exposes selection.

Known implementation limits

Group is a div with aria-label rather than a semantic role=group; assess announcement in assistive technology.

Composition example

<ThemeToggle />

Source references

Source references
FileResponsibility
components/theme-toggle.tsxThemeToggle

Examples from the app

Actual Sonarist components with fictional conversations, people, example.com addresses and simulated operational states. Captured at 2× resolution or higher. Select an image to inspect it full size.

Theme · Component detail · Light · Desktop · 1792 × 152 px
Settings Appearance · Screen · Light · Desktop · 2880 × 2000 px

Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0