Design System
Live showcase of tokens and primitives. Hidden route — not linked from nav.
Colour tokens
Semantic pairs bridged from CSS vars. Never use raw hex in app code.
background / foreground
page canvas
card / card-foreground
raised surfaces
popover / popover-foreground
floating menus
muted / muted-foreground
hover tint, secondary text
accent / accent-foreground
interactive hover fills
primary / primary-foreground
main CTA
secondary / secondary-foreground
alternative CTA
destructive
danger, delete
Typography
Ten-step scale. Use semantic names; avoid inline text-[Npx].
TYPOGRAPHY.displayThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.h1The quick brown fox jumps over the lazy dog
TYPOGRAPHY.h2The quick brown fox jumps over the lazy dog
TYPOGRAPHY.h3The quick brown fox jumps over the lazy dog
TYPOGRAPHY.bodyLgThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.bodyThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.labelThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.captionThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.monoThe quick brown fox jumps over the lazy dog
TYPOGRAPHY.tinyThe quick brown fox jumps over the lazy dog
Radius
One radius scale. Constant across states — never change radius on :active.
nonesmmdlgxlpillElevation
Border-first; shadows only when the theme casts them.
flat
ELEVATION.flat
raised
ELEVATION.raised
floating
ELEVATION.floating
overlay
ELEVATION.overlay
Buttons — variants × sizes
Interact to see hover, active (translate-y-px), and focus ring.
default
secondary
outline
ghost
link
destructive
Icon buttons
Square sizes for pure-icon controls.
Toggle button
aria-pressed flips the visual. Same radius in both states — only fill and border change.
aria-pressed=false
Inputs
Same radius + focus treatment as Button.
Badges
DefaultSecondaryOutlineDestructiveGhostLink
Cards
Card title
Cards use ELEVATION.raised by default.
Body content sits inside CardContent and inherits card-foreground.
Another card
Pair with Button primitives for actions.
Spacing scale
4px grid. Numbers map to Tailwind spacing units.
SPACING.xs4pxSPACING.sm8pxSPACING.md12pxSPACING.lg16pxSPACING.xl24pxSPACING.xxl32pxZ-index scale
Numeric so arithmetic works in style objects.
Z.base = 0Z.dropdown = 40Z.overlay = 50Z.dialog = 60Z.toast = 70Z.tooltip = 80