/** * HappyVertical Theme — "Day Shift" * * The HappyVertical brand identity (happyvertical/smrt#2318), signed off * 2026-08-12. A calm instrument panel: a warm-grey enamel ground, raised * faceplate panels separated by hairline bezels, graphite ink, and exactly one * budgeted accent — a signal amber. The execution rule is the owner's, verbatim: * **"calm is less for the brain to process, not theatre."** No decorative * vocabulary, no glow, nothing animates unless it represents a state change. * * Unlike a generated dark scheme, **both schemes are hand-authored**. The dark * scheme keeps a blue-graphite cast (rather than collapsing to near-black) and * carries both accent hues — amber and green — at dark-surface strengths. * * Named roles (issue vocabulary → token slots): * * | role | light | dark | slots | * |-------------|-----------|-----------|------------------------------------| * | enamel | `#E8EBE9` | `#14181B` | `background`, the ground | * | faceplate | `#F4F6F5` | `#1C2226` | `surface`, raised panels | * | graphite | `#20272B` | `#E4E9E7` | `on-surface` / `on-background` | * | etch | `#5A6660` | `#97A29C` | `on-surface-variant` | * | bezel | `#C9CFCC` | `#2A3238` | `outline-variant`, hairlines | * | amber | `#9C5300` | `#FFB454` | `primary`, incl. the focus ring | * | green | `#1E7A4B` | `#53C989` | `success` | * * `background` is the enamel ground and `surface` is the raised faceplate, so a * `Card` (which paints `--smrt-color-surface`) reads as a panel sitting on the * ground exactly as in the sign-off mock. The `surface-container-*` ramp is * anchored on those two — lightest at `lowest` in light, inverted in dark — and * deliberately extends one hand-tuned step past each anchor (`lowest`/`bright` * a shade above faceplate, `highest`/`dim` a shade below enamel). Confining all * seven levels strictly between enamel and faceplate would compress them into a * ~12-value band, and components that stack container levels (DataTable rows * under a header, nested panels) would lose their separation entirely. * * **Green is never text.** It is a status lamp, marker, or container fill only; * light `#1E7A4B` measures 4.44:1 on the enamel ground, just under AA. The * accent-as-text contrast set in `__tests__/happyvertical-theme.test.ts` * excludes `success` and a companion scan enforces that no component in this * package paints text with it. Every other text/surface pairing in both schemes * clears WCAG AA (4.5:1), and `outline` plus the amber focus ring clear 3:1 * non-text on every surface slot. * * `outline` and `outline-variant` are deliberately different strengths, and the * distinction is the a11y contract: `outline` is the boundary token and is * tuned to clear 3:1 on every surface, while `outline-variant` is the bezel — * the decorative hairline between panels — which measures 1.25–1.54:1 in light * and 1.03–1.43:1 in dark. That is the look the design signs off on and the * same register every other preset here uses for its dividers. Never "fix" the * bezel by raising its value; a structure that must be perceivable (a control * boundary, a focus ring) should consume `outline` or `primary` instead. * * The dark bezel sits at the top of the surface ramp, so the ramp deliberately * stops below it: `surfaceContainerHighest` and `surfaceBright` were originally * authored AT `#2A3238` and a bezel-bordered panel on either was invisible at * exactly 1.00:1. They are now distinct, and a test pins that no surface may * ever equal `outline-variant` again. Separating them further would mean * lifting the top of the ramp past the bezel, which drops `on-surface-variant` * below AA on those surfaces — the wrong trade. */ import type { Theme } from '../types.js'; /** * HappyVertical "Day Shift" theme definition */ export declare const happyverticalTheme: Theme; export default happyverticalTheme; //# sourceMappingURL=index.d.ts.map