add ticket type color coding with dark/light presets

TicketTypeColors maps initiative/epic/story/task/bug to distinct
colors, with dark and light presets auto-selected from the active
theme. Ticket IDs are now color-coded by type (purple initiative,
blue epic, green story, muted task, red bug). Status dot remains
for state. Pattern documented in theme-ui skill as the standard
for extension-owned domain colors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 12:32:11 +02:00
co-authored by Claude Opus 4.6
parent 310f1a88c0
commit d52e1130ec
3 changed files with 66 additions and 2 deletions
+13
View File
@@ -154,6 +154,19 @@ the shared root for all frame surfaces. They resolve to `bgSunken` /
`textDim` / `border` in the palette. Themes can override them to diverge
hat from sidebar from status bar if desired.
## Extension-owned domain colors
Extensions that need domain-specific color coding (ticket types, decision
types, priority levels) should NOT add tokens to `SurfaceTokens`. Instead:
1. Create a color map class in the extension (e.g. `TicketTypeColors`)
2. Ship dark and light presets, auto-selected via `ClideTheme.of(context).dark`
3. Store user overrides under `ext.<id>.colors` in settings
4. Reference: `lib/builtin/tickets/src/ticket_colors.dart`
This keeps the core token surface lean and lets each extension own its
palette. The pattern scales to any extension needing domain colors.
## Anti-patterns
- Borrowing another surface's token (`sidebarBackground` for hat bar)