Stop manually building palettes. Automate your entire color workflow.
Semantic roles give meaning to your colors beyond their appearance. They represent the purpose and intent of colors in your design system. WebShades uses the family defintion to alias the shades to semantic roles.
Semantic roles are automatically assigned based on your color family and the scales generated. WebShades creates role mappings that connect specific shades to semantic purposes:
text.faint: Very subtle text, typically shade 400-500
text.muted: Secondary text, typically shade 600-700
text.default: Primary body text, typically shade 900-950
text.strong: Emphasized text, typically shade 950
surface.50: Base background
surface.100: Slightly elevated (cards, panels)
surface.200: Moderately elevated (modals, dropdowns)
surface.300: Highly elevated (tooltips, popovers)
border.faint: Subtle dividers, typically shade 200
border.default: Standard borders, typically shade 300-400
border.strong: Prominent borders, typically shade 500-600
success: Green family, for positive actions and states
danger: Red family, for destructive actions and errors
warning: Yellow/orange family, for cautionary states
info: Blue family, for informational messages
WebShades automatically generates dark mode variants for all semantic roles. The dark mode generation uses inverted lightness curves:
This ensures that text remains readable, surfaces have proper contrast, and semantic meanings are preserved in both light and dark modes.
WebShades is an OKLCH-based color palette generator for UI design and Tailwind CSS. Built by Drew Poling.