| name | ui-token-first |
| description | Enforce UI token usage for Espresso Engineered frontend work. Use when editing Svelte/SvelteKit UI, styling typography, voice lines, headers, cards, surfaces, or layout so styles come from frontend/src/lib/ui tokens instead of app.css or ad-hoc CSS. |
UI Token First
Overview
Apply UI framework tokens (typography, color, surfaces) for all UI styling in this repo. Avoid new CSS in frontend/src/app.css or local hardcoded styles unless no token exists.
Workflow
- Identify the UI elements being changed (headers, voice lines, cards, surfaces, etc.).
- Pull tokens from
frontend/src/lib/uiand apply them withtoStyleString. - Remove or avoid ad-hoc font/color rules that bypass the tokens.
- Confirm voice text rules in
docs/ee-ui-execution-standard.md.
Token Sources
- Typography:
frontend/src/lib/ui/foundations/typography.ts(textStyles,fontFamilies) - Colors:
frontend/src/lib/ui/foundations/color.ts(colorCss) - Surfaces:
frontend/src/lib/ui/components/card.ts(pageSurface,recordListShell,secondarySurface) - CSS utilities:
frontend/src/lib/ui/style.ts(toStyleString,toCssVars)
Patterns to Use
- Voice lines: use
.voice-lineor.voice-text+textStyles.voiceandcolorCss.text.ink.mutedviatoStyleString. Never add newfont-familyCSS for voice text. - Headers: use
textStyles.headingPrimary|Secondary|Tertiary+colorCss.text.ink.*. - Subtext/helper: use
textStyles.helper+ muted ink. - Surfaces: wrap sections with
recordListShell/pageSurfacetokens and wire CSS vars rather than hardcoded backgrounds/borders.
Quick Checks
- Search for
font-family,color: #, or newapp.cssrules; replace with UI tokens. - If you add a new text element, it should map to a
textStyles.*token.