Skip to content

Define remaining design-system token families (accent, brand, state) #555

Description

@oleksandr-korin

Summary

PR #553 introduced 5 status-color tokens (status-success/warning/danger/info/urgent) but deliberately scoped to the status family only. Several components use colors that don't fit the status taxonomy and need their own token families before they can be migrated.

Components that need new tokens

Component Color used Needs
RuntimeBadge.vue orange (Anthropic), blue (Gemini) brand-claude, brand-gemini (literal brand identity, not status)
AutonomyToggle.vue amber (AUTO mode) state-autonomous or similar (a mode indicator, distinct from status-warning)
ReadOnlyToggle.vue rose (Read-Only ON) status-restrictive or state-locked (rose ≠ red intentionally; mapping to status-danger would change appearance)
DashboardPanel.getStatusColors purple accent family — purple is used for "informational accent", distinct from the 5 status tones

Scope

  1. Decide on a naming convention. Options:

    • Family-per-purpose: state-* for modes, brand-* for vendor identity, accent-* for tertiary UI accents.
    • Single extended status family: status-restrictive, status-autonomous, status-accent, brand-claude, etc.
    • Hybrid: keep status-* strict (success/warning/danger/info/urgent), add separate brand-*, state-*, accent-* families.
  2. Add the chosen tokens to tailwind.config.js using the same alias-the-full-palette pattern as feat(frontend): semantic status color tokens (#67) #553.

  3. Update src/frontend/scripts/check-design-tokens.mjs so the validator knows about the new families.

  4. Migrate the four components above (small, contained PR).

Acceptance

  • Token naming convention agreed and documented (in tailwind config comment or DESIGN_SYSTEM.md)
  • Tokens added with full palette aliasing
  • check-design-tokens.mjs extended to validate the new families
  • RuntimeBadge.vue, AutonomyToggle.vue, ReadOnlyToggle.vue, and DashboardPanel.getStatusColors's purple slot migrated
  • Visual appearance unchanged

Why this matters

This unblocks ~4 components in the sweep ticket (#554). Until these families exist, those four files would either need an inconsistent partial migration or be left on raw colors entirely.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions