> ## Documentation Index
> Fetch the complete documentation index at: https://design.slingshotai.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This site documents Sundial 2.0, the design system of the Ash mobile app (Flutter). For implementing UI: use the Design System pages — color/typography tokens (foundations/*), Flutter theming (theming/*), and component APIs (components/*) — as your reference; every value there mirrors the Dart source in lib/design_system/. The Philosophy pages (philosophy/*) are design rationale written for humans: consult them when making design decisions, not for API lookups. Golden rules: never hardcode colors or text styles — read tokens via context.colorTheme and context.textTheme; prefer the 2.0 semantic names (contentPrimary, surfaceComponent, accentSolid…) over legacy contrast*/surface* getters and over SundialRef primitives; the accent is a single pale lavender solid that takes dark content — never use accent fills as text, icons, or borders (use contentAccent / borderSelected); brand surfaces are mode-invariant and pair with the contentOnBrand* inks; check lib/design_system/components/ before building custom widgets.

# Accent Theming

> What replaced persona theming in Sundial 2.0 — one lavender accent, brightness-only overrides

> [!NOTE]
>
> **Personas were retired in Sundial 2.0.** This page documents what replaced the system this URL used to describe.

Sundial 1.0 let a selected persona recolor the app through five accent palettes (`plum`, `apricot`, `olive`, `damson`, `cherry`). Sundial 2.0 removes that axis entirely: the app has **one accent — brand Lavender Blue** — and themes vary only by brightness.

## What changed

* `AccentPalette` and the ten per-persona `AccentColors` statics are deleted. Two instances remain: `AccentColors.lavenderLight` / `.lavenderDark`, wired into `AppTheme.light` / `.dark`.
* `AppTheme.fromPalette(palette, brightness)` is gone — construct with `AppTheme.light` or `AppTheme.dark`.
* `ThemeOverride` is **brightness-only**: it flips a subtree light/dark (dark chrome over a photo, a dark-locked sheet) and no longer accepts a palette.

```dart theme={null}
// Flip a subtree to dark regardless of the app theme:
ThemeOverride(
  brightness: Brightness.dark,
  child: ...,
)
```

* Server-driven UI ignores palette hints: the SDUI `themeOverride` component honors brightness and drops `ACCENT_PALETTE_*` values (the proto enum survives — resolver cases are never deleted — but every palette resolves to lavender).

## Why

Persona expression moves to content — voice, illustration, conversation — rather than repainting the interface. One accent keeps the bright-solid grammar coherent (a pale solid taking dark content only works if the solid is *known*), makes contrast guarantees provable once, and lets brand color carry recognition consistently across every surface.

## If you need per-surface color

Brand expression on cards and spotlight surfaces uses the mode-invariant [brand surface tokens](https://design.slingshotai.com/foundations/colors/semantic.md#brand-surfaces) (`surfaceBrandGreen`, `surfaceBrandOrange`, …) with their paired on-brand inks — a per-card choice, not a theme axis.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.