Files
Parsons/tokens/semantic/colours.json
Richie 732c872576 Initial commit: FA 2.0 Design System foundation
Token pipeline (Style Dictionary v4, DTCG format):
- Primitive tokens: colour palettes (brand, sage, neutral, feedback),
  typography (3 font families, 21-variant type scale), spacing (4px grid),
  border radius, shadows, opacity
- Semantic tokens: text, surface, border, interactive, feedback colours;
  typography roles; layout spacing
- Component tokens: Button (4 sizes), Input (2 sizes)
- Generated outputs: CSS custom properties, JS ES6 module, flat JSON

Atoms (3 components):
- Button: contained/soft/outlined/text × primary/secondary, 4 sizes,
  loading state, underline for text variant
- Typography: 21 variants across display/heading/body/label/caption/overline,
  maxLines truncation
- Input: external label, helper text, error/success validation,
  start/end icons, required indicator, 2 sizes, multiline support

Infrastructure:
- MUI v5 theme with full token mapping
- Storybook 8 with autodocs
- Claude Code agents and skills for token/component workflows
- Design system documentation and cross-session memory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:08:15 +11:00

165 lines
6.4 KiB
JSON

{
"color": {
"$type": "color",
"text": {
"$description": "Semantic text colours — define the hierarchy and intent of text across the UI.",
"primary": {
"$value": "{color.neutral.800}",
"$description": "Primary text — body content, headings. Cool charcoal (#2C2E35) for comfortable extended reading"
},
"secondary": {
"$value": "{color.neutral.600}",
"$description": "Secondary text — helper text, descriptions, metadata, less prominent content"
},
"tertiary": {
"$value": "{color.neutral.500}",
"$description": "Tertiary text — placeholders, timestamps, attribution, meta information"
},
"disabled": {
"$value": "{color.neutral.400}",
"$description": "Disabled text — clearly diminished but still readable for accessibility"
},
"inverse": {
"$value": "{color.white}",
"$description": "Inverse text — white text on dark or coloured backgrounds (buttons, banners)"
},
"brand": {
"$value": "{color.brand.600}",
"$description": "Brand-coloured text — links, inline brand emphasis. Copper tone meets AA on white (4.8:1)"
},
"error": {
"$value": "{color.red.600}",
"$description": "Error text — form validation messages, error descriptions"
},
"success": {
"$value": "{color.green.600}",
"$description": "Success text — confirmation messages, positive feedback"
},
"warning": {
"$value": "{color.amber.700}",
"$description": "Warning text — cautionary messages. Uses amber.700 for WCAG AA compliance on white (5.1:1)"
}
},
"surface": {
"$description": "Background/surface colours for page sections, cards, and containers.",
"default": {
"$value": "{color.white}",
"$description": "Default surface — main page background, card faces"
},
"subtle": {
"$value": "{color.neutral.50}",
"$description": "Subtle surface — slight differentiation from default, alternate row backgrounds"
},
"raised": {
"$value": "{color.white}",
"$description": "Raised surface — cards, elevated containers (distinguished by shadow rather than colour)"
},
"warm": {
"$value": "{color.brand.50}",
"$description": "Warm surface — brand-tinted sections, promotional areas, upsell cards like 'Protect your plan'"
},
"cool": {
"$value": "{color.sage.50}",
"$description": "Cool surface — calming sections, information panels, FAQ backgrounds"
},
"overlay": {
"$value": "#00000080",
"$description": "Overlay surface — modal/dialog backdrop at 50% black"
}
},
"border": {
"$description": "Border colours for containers, inputs, and visual dividers.",
"default": {
"$value": "{color.neutral.200}",
"$description": "Default border — cards, containers, resting input borders"
},
"strong": {
"$value": "{color.neutral.400}",
"$description": "Strong border — emphasis borders, active input borders"
},
"subtle": {
"$value": "{color.neutral.100}",
"$description": "Subtle border — section dividers, soft separators"
},
"brand": {
"$value": "{color.brand.500}",
"$description": "Brand border — focused inputs, selected cards, brand-accented containers"
},
"error": {
"$value": "{color.red.500}",
"$description": "Error border — form fields with validation errors"
},
"success": {
"$value": "{color.green.500}",
"$description": "Success border — validated fields, confirmed selections"
}
},
"interactive": {
"$description": "Colours for interactive elements — buttons, links, form controls.",
"default": {
"$value": "{color.brand.600}",
"$description": "Default interactive — primary button fill, link colour, checkbox accent. Uses brand.600 (copper) for WCAG AA compliance (4.6:1 on white)"
},
"hover": {
"$value": "{color.brand.700}",
"$description": "Hover state — deepened copper on hover for clear visual feedback"
},
"active": {
"$value": "{color.brand.800}",
"$description": "Active/pressed state — dark brown during click/tap"
},
"disabled": {
"$value": "{color.neutral.300}",
"$description": "Disabled interactive — muted grey, no pointer events"
},
"focus": {
"$value": "{color.brand.600}",
"$description": "Focus ring colour — keyboard navigation indicator, 2px outline with 2px offset"
},
"secondary": {
"$value": "{color.sage.700}",
"$description": "Secondary interactive — grey/sage buttons, less prominent actions"
},
"secondary-hover": {
"$value": "{color.sage.800}",
"$description": "Secondary interactive hover — darkened sage on hover"
}
},
"feedback": {
"$description": "System alert and feedback colours. Each type has a strong variant (for text/icons) and a subtle variant (for backgrounds).",
"success": {
"$value": "{color.green.600}",
"$description": "Success — confirmations, completed arrangement steps, booking confirmed"
},
"success-subtle": {
"$value": "{color.green.50}",
"$description": "Success background — success message container fill, completion banners"
},
"warning": {
"$value": "{color.amber.600}",
"$description": "Warning — price change alerts, important notices, bond/insurance prompts"
},
"warning-subtle": {
"$value": "{color.amber.50}",
"$description": "Warning background — warning message container fill, notice banners"
},
"error": {
"$value": "{color.red.600}",
"$description": "Error — form validation failures, system errors, payment issues"
},
"error-subtle": {
"$value": "{color.red.50}",
"$description": "Error background — error message container fill, alert banners"
},
"info": {
"$value": "{color.blue.600}",
"$description": "Info — helpful tips, supplementary information, guidance callouts"
},
"info-subtle": {
"$value": "{color.blue.50}",
"$description": "Info background — info message container fill, tip banners"
}
}
}
}