The color layer for your
design system
Built on perceptual color science. One color becomes a full, role-mapped token set - coherent in any system it's bound into.
One color becomes a complete system
Pick a color, you get back a finished, accessible system. One decision instead of many.
Agent-ready tokens, not agent-picked colors
Tonex gives it the commands, contrast checks, and target tokens to update your project without hand-picking colors.
See your theme on product UI
Drop your palette onto the components you build with every day. What you preview is what your users get.
One identity, on every surface
Send the same theme to your products. No drift between channels, because none of it was built twice.
One seed. Every channel.
The same color contract drives all five formats — every pairing passes AA.
Summer citrus drop
Drink in the daylight.
sola.drinks
Sponsored
1,284 likes
sola.drinks your sign to hydrate ☀️
Drop goes live in
SOLA
hello@sola.drinks
Your summer staple is back ☀️
Yuzu × Sea Salt sparkling is shipping again — and your first case ships free.
Promo code
SUNUP15
12-pack
$32 · free shipping
Exports that drop straight into your stack
Export in the format your stack already speaks, there's nothing left to re-theme.
:root {
--primary: oklch(0.5057 0.1635 317.07);
--on-primary: oklch(0.9834 0.01 345.41);
--primary-container: oklch(0.5795 0.164 317.85);
--on-primary-container: oklch(1 0 0);
--secondary: oklch(0.4943 0.0719 320.24);
--on-secondary: oklch(0.9834 0.01 345.41);
--secondary-container: oklch(0.8877 0.0764 321.28);
--on-secondary-container: oklch(0.4204 0.0717 319.03);
--tertiary: oklch(0.4984 0.1162 318.23);
--on-tertiary: oklch(0.9834 0.01 345.41);
--tertiary-container: oklch(0.5734 0.1177 319.18);
--on-tertiary-container: oklch(1 0 0);
--error: oklch(0.5036 0.1454 18.37);
--on-error: oklch(0.982 0.0087 26.02);
--error-container: oklch(0.7262 0.1614 17.78);
--on-error-container: oklch(0.2686 0.1076 18.47);
--surface: oklch(0.9834 0.01 345.41);
--on-surface: oklch(0.3237 0.0465 318.79);
--on-surface-variant: oklch(0.4904 0.0469 320.91);
--surface-dim: oklch(0.8929 0.0504 323.92);
--surface-bright: oklch(0.9834 0.01 345.41);
--surface-container-lowest: oklch(1 0 0);
--surface-container-low: oklch(0.9687 0.0251 329.71);
--surface-container: oklch(0.9534 0.0401 324.63);
--surface-container-high: oklch(0.9346 0.0437 324.75);
--surface-container-highest: oklch(0.9203 0.05 323.91);
--outline: oklch(0.5861 0.0475 322.42);
--outline-variant: oklch(0.7684 0.0481 322.64);
}
Everything else you'd reach for
The smaller decisions, already made, the polish is there before you ask for it.