Sonarist project

Sonarist / Design system

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

Design system contents

Foundations

Light, dark and system themes

Theme preference belongs to this device and updates the document’s dark class and native color scheme.

On this page

Theme model

Theme model
PreferenceResult
lightAlways native light classes
darkAlways native dark classes
systemFollows prefers-color-scheme and changes when the OS preference changes
Storagesonarist-theme; legacy helpdesk-theme accepted as fallback
Initial paintRoot inline script reads storage before rendering
React stateuseSyncExternalStore observes storage and sonarist-theme-change

Capture policy

Both implemented themes are captured. Each isolated browser context seeds sonarist-theme before navigation and uses the matching browser color scheme. The capture process asserts the document class, waits for fonts, and retains the source theme control rather than recoloring screenshots.

There is no claim of account-wide sync. The preference is browser localStorage; the source applies changes without a server mutation.

Source references

Source references
FileResponsibility
components/theme-toggle.tsxPreference subscription, updates and OS listener
app/layout.tsxInitial theme script
app/globals.cssDark custom variant

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