Color is how Dew communicates.
Semantic tokens that keep meaning consistent across themes.
Semantic first. Palette never.
Color communicates meaning, hierarchy, and interaction state. Tokens define the role of a color rather than its visual appearance — so the system supports theming, dark mode, and future palette changes without touching a single component.
#12344DElephant 900 (E900)color.text.primarycolor/text/primarytoken('color.text.primary');var(--color-text-primary)Use semantic naming
Apply colors based on their purpose, not their appearance. Use tokens like color.text.brand or color.icon.semantic.error so theming and dark mode just work.
#12344DPrimitive and semantic layers are bypassed.
#12344Dcolor: '#12344D';color: #12344D;Avoid hard-coded values
Never paste a hex code or reference a palette token directly in a component. Dark mode and future themes rely on the semantic layer — bypassing it silently breaks them.
Five roles, mapped to the palette.
Semantic tokens map roles like success, warning, and error to palette values — so components stay intact when themes or palettes change.
The raw palette.
Palette tokens are the underlying values. They power the semantic layer — but they never ship inside components directly.
Smoke
(S) · 14 shadesNeutral
(N) · 13 shadesElephant
(E) · 10 shadesAzure
(A) · 10 shadesJungle
(J) · 10 shadesCasablanca
(C) · 10 shadesPersimmon
(P) · 10 shadesIris
(I) · 10 shadesCategorical data colors.
Twenty perceptually distinct hues for data visualisation. Identical in light and dark themes so charts stay legible across surfaces. Use them in order — the earliest categories are the easiest to tell apart.
Overlays adapt to their background.
Fixed-alpha colors that blend with whatever sits underneath. Use them for component backdrops — hover, selected row, tag fill, focus scrim — where the overlay should shift visually with the surface below.
- Low contrast against the background. Always pair overlays with an icon, border, or text so the region stays perceivable.
- Standalone use needs a solid fill in the container behind the overlay layer.
- Revalidate contrast when dark-theme derivatives are updated.
Chromatic tints
20% opacityChromatic shades
20% opacityNeutral & dark overlays
Element backdropsText tokens.
Semantic text colors communicate status, feedback, and meaning across the interface. Use these tokens in every UI element instead of referencing palette colors or raw hex.
color.text.brandcolor.text.primarycolor.text.secondarycolor.text.disabledcolor.text.placeholdercolor.text.inversecolor.text.semantic.successcolor.text.semantic.warningcolor.text.semantic.errorcolor.text.semantic.infocolor.text.semantic.highlightIcon tokens.
Semantic icon colors pair with text to reinforce feedback and hierarchy. Match the icon color to the text color it accompanies.
color.icon.primarycolor.icon.secondarycolor.icon.selectedcolor.icon.disabledcolor.icon.inversecolor.icon.semantic.successcolor.icon.semantic.warningcolor.icon.semantic.errorcolor.icon.semantic.infocolor.icon.semantic.highlight