Kesko Design Tokens are a tech-agnostic way to store variables. We use tokens instead of hard coded values to ensure a better UI consistency across different platforms.
Accent colors #
| Example | Description | Token |
|---|---|---|
4.73:1 {color.orange.800} | Color accent Primary accent color used for interactive elements and theming. | var(--k-color-accent) |
3.01:1 {color.orange.700} | Color accent secondary Secondary accent color used as the default background for secondary interactive elements. | var(--k-color-accent-secondary) |
Background colors #
| Example | Description | Token |
|---|---|---|
1:1 {color.neutral.100} | Color background Base background color used as the default page surface. | var(--k-color-bg) |
1.14:1 {color.neutral.200} | Color background disabled Disabled background color used for disabled controls. | var(--k-color-bg-disabled) |
1.04:1 #fafafa | Color background subtle Subtle background color used as a slightly recessed surface. | var(--k-color-bg-subtle) |
1.08:1 #f6f6f6 | Color background muted Muted background color used as the deepest neutral surface in the color hierarchy. | var(--k-color-bg-muted) |
14.74:1 {color.neutral.1100} | Color background inverted Inverted background color used for high-contrast surfaces. | var(--k-color-bg-inverted) |
1.12:1 {color.orange.200} | Color background hover Hover background color used to indicate interactive hover states. | var(--k-color-bg-hover) |
1.42:1 {color.red.400} | Color background highlight Highlight background color used to draw attention to selected or important content. | var(--k-color-bg-highlight) |
Border colors #
| Example | Description | Token |
|---|---|---|
2.49:1 {color.neutral.600} | Color border Default border color used for static borders and outlines. | var(--k-color-border) |
3.54:1 {color.neutral.700} | Color border active Active border color used to indicate the active or selected state of a bordered element. | var(--k-color-border-active) |
1.82:1 {color.neutral.500} | Color border disabled Disabled border color used for the borders of disabled controls. | var(--k-color-border-disabled) |
6.57:1 {color.red.900} | Color border warning Warning border color used to indicate validation errors and warning states. | var(--k-color-border-warning) |
3.01:1 {color.orange.700} | Color border hover Hover border color used to indicate the hover state of a bordered element. | var(--k-color-border-hover) |
6.62:1 {color.blue.900} | Color border focus Focus border color used to indicate keyboard focus on interactive elements. | var(--k-color-border-focus) |
2.49:1 {color.neutral.600} | Color border divider Divider border color used to separate content sections and list rows. | var(--k-color-border-divider) |
Fill colors #
| Example | Description | Token |
|---|---|---|
1.14:1 {color.neutral.200} | Color fill Default fill color. | var(--k-color-fill) |
1.36:1 {color.neutral.300} | Color fill secondary Secondary fill color. | var(--k-color-fill-secondary) |
1.82:1 {color.neutral.500} | Color fill tertiary Tertiary fill color. | var(--k-color-fill-tertiary) |
15.18:1 {color.purple.1100} | Color fill decorative Decorative fill color used. | var(--k-color-fill-decorative) |
Overlay colors #
| Example | Description | Token |
|---|---|---|
1:1 rgba(255, 255, 255, 0.05) | Color overlay Translucent white overlay applied on top of an interactive surface. Stored as a raw rgba value because alpha overlays cannot be expressed via primitive palette aliases. | var(--k-color-overlay) |
1:1 rgba(0, 0, 0, 0.1) | Color overlay dimmed Translucent black overlay applied on top of an interactive surface. Stored as a raw rgba value because alpha overlays cannot be expressed via primitive palette aliases. | var(--k-color-overlay-dimmed) |
Status colors #
| Example | Description | Token |
|---|---|---|
6.57:1 {color.red.900} | Color status error Background color for solid error messages and badges. | var(--k-color-status-error) |
1.2:1 {color.red.300} | Color status error weak Background color for soft error messages and inline validation surfaces. | var(--k-color-status-error-weak) |
6.62:1 {color.blue.900} | Color status info Background color for solid informational messages and badges. | var(--k-color-status-info) |
1.13:1 {color.blue.200} | Color status info weak Background color for soft informational messages and inline notes. | var(--k-color-status-info-weak) |
1.64:1 {color.yellow.600} | Color status warning Background color for solid warning messages and badges. | var(--k-color-status-warning) |
1.09:1 {color.yellow.200} | Color status warning weak Background color for soft warning messages and inline cautions. | var(--k-color-status-warning-weak) |
6.56:1 {color.green.900} | Color status success Background color for solid success messages and badges. | var(--k-color-status-success) |
1.13:1 {color.green.200} | Color status success weak Background color for soft success messages and confirmation surfaces. | var(--k-color-status-success-weak) |
Text colors #
| Example | Description | Token |
|---|---|---|
14.74:1 {color.neutral.1100} | Color text Default text color used for the main body content. | var(--k-color-text) |
10.7:1 {color.neutral.1000} | Color text weak Weak text color used for supporting copy and slightly de-emphasized content. | var(--k-color-text-weak) |
7.34:1 {color.neutral.900} | Color text weaker Weaker text color used for less emphasized supporting content. | var(--k-color-text-weaker) |
4.61:1 {color.neutral.800} | Color text weakest Weakest text color used for muted helper text and metadata. | var(--k-color-text-weakest) |
3.54:1 {color.neutral.700} | Color text disabled Disabled text color used for the lowest-emphasis text such as disabled labels. | var(--k-color-text-disabled) |
4.73:1 {color.orange.800} | Color text link Link text color that is used for links inside paragraph text. | var(--k-color-text-link) |
4.73:1 {color.orange.800} | Color text accent Accent text color used for branded text and highlighted inline content. | var(--k-color-text-accent) |
14.74:1 {color.neutral.100} | Color text on inverted Foreground color used on top of | var(--k-color-text-on-inverted) |
6.57:1 {color.neutral.100} | Color text on error Foreground color used on top of | var(--k-color-text-on-error) |
15.05:1 {color.red.1200} | Color text on error weak Foreground color used on top of | var(--k-color-text-on-error-weak) |
6.56:1 {color.neutral.100} | Color text on success Foreground color used on top of | var(--k-color-text-on-success) |
16.01:1 {color.green.1200} | Color text on success weak Foreground color used on top of | var(--k-color-text-on-success-weak) |
6.62:1 {color.neutral.100} | Color text on info Foreground color used on top of | var(--k-color-text-on-info) |
16:1 {color.blue.1200} | Color text on info weak Foreground color used on top of | var(--k-color-text-on-info-weak) |
10.97:1 {color.yellow.1200} | Color text on warning Foreground color used on top of | var(--k-color-text-on-warning) |
16.52:1 {color.yellow.1200} | Color text on warning weak Foreground color used on top of | var(--k-color-text-on-warning-weak) |
4.73:1 {color.neutral.100} | Color text on accent Foreground color used for content placed on top of | var(--k-color-text-on-accent) |
3.01:1 {color.neutral.100} | Color text on secondary Foreground color used for content placed on top of | var(--k-color-text-on-secondary) |
4.04:1 {color.neutral.800} | Color text on disabled Foreground color used on top of | var(--k-color-text-on-disabled) |
15.18:1 {color.neutral.100} | Color text on decorative Foreground color used for content placed on top of | var(--k-color-text-on-decorative) |
Brand colors #
| Example | Description | Token |
|---|---|---|
3.01:1 #f86800 | Color brand Kesko orange Kesko brand orange. | var(--k-color-brand-kesko-orange) |
2.42:1 #fd8726 | Color brand Kesko orange inverted Kesko brand orange inverted. | var(--k-color-brand-kesko-orange-inverted) |
21:1 #000000 | Color brand Kesko pure black Kesko pure black. | var(--k-color-brand-kesko-pure-black) |
1:1 #ffffff | Color brand Kesko pure white Kesko pure white. | var(--k-color-brand-kesko-pure-white) |
6.31:1 #c20614 | Color brand K-Citymarket red K-Citymarket brand red. | var(--k-color-brand-kcm-red) |
14.94:1 #570000 | Color brand K-Citymarket dark red K-Citymarket brand dark red. | var(--k-color-brand-kcm-dark-red) |
10.95:1 #800000 | Color brand K-Citymarket warm red K-Citymarket brand warm red. | var(--k-color-brand-kcm-warm-red) |
4.96:1 #e20000 | Color brand K-Citymarket bright red K-Citymarket brand bright red. | var(--k-color-brand-kcm-bright-red) |
1.21:1 #ffed00 | Color brand K-Citymarket outlet K-Citymarket outlet section background yellow. | var(--k-color-brand-kcm-outlet) |
14.64:1 #002855 | Color brand K-Supermarket blue K-Supermarket brand blue. | var(--k-color-brand-ksm-blue) |
7.94:1 #335377 | Color brand K-Supermarket secondary blue K-Supermarket brand secondary blue. | var(--k-color-brand-ksm-secondary-blue) |
8.06:1 #962242 | Color brand K-Market berry K-Market brand berry. | var(--k-color-brand-km-berry) |
11.83:1 #651d32 | Color brand K-Market burgundy K-Market brand burgundy. | var(--k-color-brand-km-burgundy) |
15.18:1 #330072 | Color brand K-Rauta violet K-Rauta brand violet. | var(--k-color-brand-krauta-violet) |
1.82:1 #78d64b | Color brand K-Rauta green K-Rauta brand green. | var(--k-color-brand-krauta-green) |
7.19:1 #54585a | Color brand K-Rauta procenter K-Rauta Procenter brand neutral. | var(--k-color-brand-krauta-procenter) |
14.64:1 #002855 | Color brand Onninen blue Onninen brand blue. | var(--k-color-brand-onninen-blue) |
4.51:1 #00857e | Color brand Onninen teal Onninen brand teal. | var(--k-color-brand-onninen-teal) |
11.52:1 #671f34 | Color brand K-Bygg burgundy K-bygg brand burgundy. | var(--k-color-brand-kbygg-burgundy) |
10.59:1 #384043 | Color brand Byggmakker pro Byggmakker Pro brand neutral. | var(--k-color-brand-byggmakker-pro) |
3.91:1 #5b879a | Color brand Byggmakker blue Byggmakker brand blue. | var(--k-color-brand-byggmakker-blue) |
6.56:1 #b81921 | Color brand Byggmakker red Byggmakker brand red. | var(--k-color-brand-byggmakker-red) |
15.77:1 #1e2233 | Color brand K-Auto dark blue K-Auto brand dark blue. | var(--k-color-brand-kauto-dark-blue) |
1.22:1 #ffe4cb | Color brand K-Auto approval peach K-Auto approval peach. | var(--k-color-brand-kauto-approval-peach) |
7.39:1 #4a566d | Color brand K-Auto campaign K-Auto campaign neutral. | var(--k-color-brand-kauto-campaign) |
2.89:1 #ff6900 | Color brand Kespro primary Kespro brand primary orange. | var(--k-color-brand-kespro-primary) |
15.52:1 #242424 | Color brand K-Business black K-Business brand black. | var(--k-color-brand-kbusiness-black) |
Font families #
| Example | Description | Token |
|---|---|---|
Quick brown fox 'SkattaSansUI', 'SkattaSansUI-fallback', system-ui, sans-serif | Font family sans Skatta Sans UI is the default font family utilized across all Kesko user interfaces. | var(--k-font-family-sans) |
Quick brown fox monospace, monospace | Font family code Monospace typeface for code blocks and development purposes. | var(--k-font-family-code) |
Font weights #
| Example | Description | Token |
|---|---|---|
Quick brown fox {font.weight.regular} | Font weight Default font weight for body text. | var(--k-font-weight) |
Quick brown fox 400 | Font weight regular Default font weight for body text. | var(--k-font-weight-regular) |
Quick brown fox 500 | Font weight medium Default font weight for medium text. | var(--k-font-weight-medium) |
Quick brown fox 700 | Font weight bold Default font weight for bold text. | var(--k-font-weight-bold) |
Quick brown fox 900 | Font weight black Default font weight for black text. | var(--k-font-weight-black) |
Font sizes #
| Example | Description | Token |
|---|---|---|
Quick brown fox 0.625rem | Font size 3XS 10px font size used for the smallest captions and disclaimers. | var(--k-font-size-3xs) |
Quick brown fox 0.75rem | Font size 2XS 12px font size used for small labels, badges, and metadata. | var(--k-font-size-2xs) |
Quick brown fox 0.8125rem | Font size XS 13px font size used as a bridge between the small body and small label scales. | var(--k-font-size-xs) |
Quick brown fox 0.875rem | Font size SM 14px font size used for compact body copy and secondary controls. | var(--k-font-size-sm) |
Quick brown fox 1rem | Font size MD 16px font size used as the default body font size across the system. | var(--k-font-size-md) |
Quick brown fox 1.125rem | Font size LG 18px font size used for emphasized body copy and small headings. | var(--k-font-size-lg) |
Quick brown fox 1.25rem | Font size XL 20px font size used for sub-section headings. | var(--k-font-size-xl) |
Quick brown fox 1.5rem | Font size 2XL 24px font size used for section headings. | var(--k-font-size-2xl) |
Quick brown fox 2rem | Font size 3XL 32px font size used for page-level headings. | var(--k-font-size-3xl) |
Font leading #
| Example | Description | Token |
|---|---|---|
Quick brown fox 1 | Font leading XS Extra small line-height. 1× the used font size. | var(--k-font-leading-xs) |
Quick brown fox 1.25 | Font leading SM Compact line-height. 1.25× the used font size. | var(--k-font-leading-sm) |
Quick brown fox 1.5 | Font leading MD Default body line-height. 1.5× the used font size. | var(--k-font-leading-md) |
Layers #
| Example | Description | Token |
|---|---|---|
1 1 | Layer Default layer used for the default in-flow content stacking context. | var(--k-layer) |
calc(-infinity) calc(-infinity) | Layer lowest Deep layer used for stacking something behind everything else. | var(--k-layer-lowest) |
50 50 | Layer masked Masked layer for masked interface elements. | var(--k-layer-masked) |
100 100 | Layer mask Mask layer for masking masked layers. | var(--k-layer-mask) |
150 150 | Layer sticky Sticky layer used for elements that should appear above the base content, such as sticky headers. | var(--k-layer-sticky) |
200 200 | Layer overlay Overlay layer used for floating UI such as modals, popovers, and toast notifications. | var(--k-layer-overlay) |
calc(infinity) calc(infinity) | Layer highest The highest possibly layer that will always sit on top of everything else. | var(--k-layer-highest) |
Motion #
| Example | Description | Token |
|---|---|---|
50ms | Motion duration XS Extra-small motion duration used for instantaneous micro-feedback such as ripples and tap highlights. | var(--k-motion-duration-xs) |
100ms | Motion duration SM Small motion duration used for snappy state changes such as hover and focus transitions. | var(--k-motion-duration-sm) |
300ms | Motion duration MD Default motion duration used for the majority of UI transitions. | var(--k-motion-duration-md) |
400ms | Motion duration LG Large motion duration used for noticeable transitions such as panel slides and modal entries. | var(--k-motion-duration-lg) |
600ms | Motion duration XL Extra-large motion duration used for prominent choreographed sequences. | var(--k-motion-duration-xl) |
1000ms | Motion duration 2XL XX-large motion duration used for loading animations. | var(--k-motion-duration-2xl) |
ease-out | Motion easing decelerate Standard decelerate easing for elements entering the screen or settling into place. | var(--k-motion-easing-decelerate) |
ease-in | Motion easing accelerate Standard accelerate easing for elements leaving the screen or speeding away. | var(--k-motion-easing-accelerate) |
cubic-bezier(0.05, 0.7, 0.1, 1) | Motion easing decelerate emphasized Emphasized decelerate easing used for prominent entrances and hero transitions. | var(--k-motion-easing-decelerate-emphasized) |
cubic-bezier(0.3, 0, 0.8, 0.15) | Motion easing accelerate emphasized Emphasized accelerate easing used for prominent exits and dismissive gestures. | var(--k-motion-easing-accelerate-emphasized) |
Opacity #
| Example | Description | Token |
|---|---|---|
1 | Opacity Default opacity for fully opaque elements. | var(--k-opacity) |
0.9 | Opacity active Opacity applied to elements in their active (pressed) state. | var(--k-opacity-active) |
0.1 | Opacity overlay dimmed Opacity used for dimmed overlay surfaces such as scrim backgrounds. | var(--k-opacity-overlay-dimmed) |
0.05 | Opacity overlay Opacity used for translucent hover and pressed overlay layers. | var(--k-opacity-overlay) |
Radius #
| Example | Description | Token |
|---|---|---|
{radius.sm} | Radius button Corner rounding for buttons. | var(--k-radius-button) |
{radius.sm} | Radius input Corner rounding for text inputs and select controls. | var(--k-radius-input) |
{radius.xs} | Radius checkbox Corner rounding for checkboxes. | var(--k-radius-checkbox) |
{radius.md} | Radius element Default corner rounding applied to generic elements. | var(--k-radius-element) |
0 | Radius none Square corners with no rounding. | var(--k-radius-none) |
0.125rem | Radius XS Minimal corner rounding used on fine details and compact elements. | var(--k-radius-xs) |
0.25rem | Radius SM Subtle corner rounding used on tags and small inline controls. | var(--k-radius-sm) |
0.5rem | Radius MD Default corner rounding used on most controls and cards. | var(--k-radius-md) |
0.75rem | Radius LG Large corner rounding used for larger surfaces. | var(--k-radius-lg) |
1rem | Radius XL Extra large corner rounding used on prominent containers and modals. | var(--k-radius-xl) |
999px | Radius pill Rounded corners used on pills and fully rounded buttons. | var(--k-radius-pill) |
50% | Radius circle Rounded corners used on circular items such as avatars. | var(--k-radius-circle) |
Shadows #
| Example | Description | Token |
|---|---|---|
0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 4px rgba(0, 0, 0, 0.12) | Shadow Subtle elevation used for resting cards, list items, and toolbars. | var(--k-shadow) |
0 8px 24px 2px rgba(0, 0, 0, 0.04), 0 2px 28px rgba(0, 0, 0, 0.02), 0 4px 4px rgba(0, 0, 0, 0.08) | Shadow float Low floating elevation used for hovered cards and lightly raised surfaces. | var(--k-shadow-float) |
0 20px 32px 2px rgba(0, 0, 0, 0.08), 0 4px 36px rgba(0, 0, 0, 0.04), 0 8px 12px rgba(0, 0, 0, 0.12) | Shadow float high Medium floating elevation used for popovers, dropdowns, and menus. | var(--k-shadow-float-high) |
0 24px 36px 4px rgba(0, 0, 0, 0.12), 0 8px 44px rgba(0, 0, 0, 0.08), 0 12px 16px rgba(0, 0, 0, 0.16) | Shadow float higher High floating elevation used for modals, dialogs, and overlays. | var(--k-shadow-float-higher) |
0 2px 4px -1px rgba(0, 0, 0, 0.05), 0 4px 6px -1px rgba(0, 0, 0, 0.1) | Shadow popover popover shadow. | var(--k-shadow-popover) |
0 4px 2px 0 rgba(0, 0, 0, 0.1) | Shadow switch toggle switch knob shadow. | var(--k-shadow-switch) |
Sizes #
| Example | Description | Token |
|---|---|---|
0.0625rem | Size border Default border width for interface elements. | var(--k-size-border) |
0.125rem | Size border button Border width for interface buttons. | var(--k-size-border-button) |
0.0625rem | Size border badge Border width for interface badges. | var(--k-size-border-badge) |
0.375em | Size spinner SM Small size for interface loading spinners. | var(--k-size-spinner-sm) |
0.5em | Size spinner MD Default size for interface loading spinners. | var(--k-size-spinner-md) |
0.625em | Size spinner LG Large size for interface loading spinners. | var(--k-size-spinner-lg) |
0.875em | Size spinner XL Extra large size for interface loading spinners. | var(--k-size-spinner-xl) |
1.25em | Size spinner 2XL XXL size for interface loading spinners. | var(--k-size-spinner-2xl) |
1rem | Size icon XS Extra small size for icons that renders them in 16×16px. | var(--k-size-icon-xs) |
1.25rem | Size icon SM Small size for icons that renders them in 20×20px. | var(--k-size-icon-sm) |
1.5rem | Size icon MD Medium size for icons that renders them in 24×24px. | var(--k-size-icon-md) |
2rem | Size icon LG Large size for icons that renders them in 32×32px. | var(--k-size-icon-lg) |
3rem | Size icon XL Extra large size for icons that renders them in 48×48px. | var(--k-size-icon-xl) |
Spacing #
| Example | Description | Token |
|---|---|---|
{space.sm} | Space button Button spacing used to calculate inline and block padding for buttons. | var(--k-space-button) |
0.125rem | Space 4XS 2px spacing used for the finest hairline gaps. | var(--k-space-4xs) |
0.25rem | Space 3XS 4px spacing used for tightly packed inline elements. | var(--k-space-3xs) |
0.5rem | Space 2XS 8px spacing used between closely related elements. | var(--k-space-2xs) |
0.625rem | Space XS 10px spacing used between small adjacent elements and inside compact controls. | var(--k-space-xs) |
0.75rem | Space SM 12px spacing used between small adjacent elements and inside compact controls. | var(--k-space-sm) |
1rem | Space MD 16px default spacing used as the base spacing unit across the system. | var(--k-space-md) |
1.5rem | Space LG 24px spacing used between sections within a card or panel. | var(--k-space-lg) |
2rem | Space XL 32px spacing used between major content blocks on a page. | var(--k-space-xl) |
2.5rem | Space 2XL 40px spacing used as a generous separator between distinct page sections. | var(--k-space-2xl) |
3rem | Space 3XL 48px spacing used as the largest standard layout gap. | var(--k-space-3xl) |
Primitives #
| Example | Description | Token |
|---|---|---|
1:1 #ffffff | Color neutral 100 Neutral 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-100) |
1.14:1 #f0f0f0 | Color neutral 200 Neutral 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-200) |
1.36:1 #dddddd | Color neutral 300 Neutral 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-300) |
1.59:1 #cdcdcd | Color neutral 400 Neutral 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-400) |
1.82:1 #c0c0c0 | Color neutral 500 Neutral 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-500) |
2.49:1 #a4a4a4 | Color neutral 600 Neutral 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-600) |
3.54:1 #888888 | Color neutral 700 Neutral 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-700) |
4.61:1 #757575 | Color neutral 800 Neutral 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-800) |
7.34:1 #565656 | Color neutral 900 Neutral 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-900) |
10.7:1 #3e3e3e | Color neutral 1000 Neutral 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-1000) |
14.74:1 #282828 | Color neutral 1100 Neutral 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-1100) |
21:1 #000000 | Color neutral 1200 Neutral 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-1200) |
17.22:1 #1b1b1b | Color neutral dark 100 Neutral Dark 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-100) |
15.13:1 #262626 | Color neutral dark 200 Neutral Dark 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-200) |
12.63:1 #333333 | Color neutral dark 300 Neutral Dark 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-300) |
10.86:1 #3d3d3d | Color neutral dark 400 Neutral Dark 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-400) |
9.44:1 #464646 | Color neutral dark 500 Neutral Dark 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-500) |
6.9:1 #5a5a5a | Color neutral dark 600 Neutral Dark 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-600) |
4.88:1 #717171 | Color neutral dark 700 Neutral Dark 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-700) |
3.74:1 #848484 | Color neutral dark 800 Neutral Dark 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-800) |
2.35:1 #a9a9a9 | Color neutral dark 900 Neutral Dark 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-900) |
1.62:1 #cbcbcb | Color neutral dark 1000 Neutral Dark 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-1000) |
1.17:1 #ededed | Color neutral dark 1100 Neutral Dark 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-1100) |
1:1 #ffffff | Color neutral dark 1200 Neutral Dark 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-neutral-dark-1200) |
1.06:1 #fcf8f5 | Color beige 100 Beige 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-100) |
1.12:1 #f6f1ed | Color beige 200 Beige 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-200) |
1.25:1 #ede5dd | Color beige 300 Beige 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-300) |
1.58:1 #dacbbc | Color beige 400 Beige 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-400) |
1.96:1 #c9b6a1 | Color beige 500 Beige 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-500) |
2.42:1 #b9a38c | Color beige 600 Beige 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-600) |
3.01:1 #a7917a | Color beige 700 Beige 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-700) |
4.73:1 #83705c | Color beige 800 Beige 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-800) |
6.62:1 #6a5a4a | Color beige 900 Beige 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-900) |
8.02:1 #5c4e40 | Color beige 1000 Beige 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-1000) |
15.29:1 #2b241e | Color beige 1100 Beige 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-1100) |
18.03:1 #191612 | Color beige 1200 Beige 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-beige-1200) |
1.06:1 #fdf7f7 | Color red 100 Red 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-100) |
1.13:1 #fbeeef | Color red 200 Red 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-200) |
1.2:1 #f9e6e7 | Color red 300 Red 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-300) |
1.42:1 #f5d0d2 | Color red 400 Red 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-400) |
1.97:1 #eda6aa | Color red 500 Red 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-500) |
2.43:1 #e88d92 | Color red 600 Red 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-600) |
3.02:1 #e27378 | Color red 700 Red 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-700) |
4.73:1 #d13c44 | Color red 800 Red 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-800) |
6.57:1 #b9161e | Color red 900 Red 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-900) |
8:1 #a40910 | Color red 1000 Red 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-1000) |
15.25:1 #540001 | Color red 1100 Red 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-1100) |
18.06:1 #370001 | Color red 1200 Red 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-red-1200) |
1.06:1 #fdf7f0 | Color orange 100 Orange 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-100) |
1.12:1 #fcf0e0 | Color orange 200 Orange 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-200) |
1.25:1 #fae2c4 | Color orange 300 Orange 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-300) |
1.58:1 #f9c48c | Color orange 400 Orange 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-400) |
1.96:1 #fba656 | Color orange 500 Orange 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-500) |
2.42:1 #fd8726 | Color orange 600 Orange 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-600) |
3.01:1 #f86800 | Color orange 700 Orange 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-700) |
4.73:1 #cb4700 | Color orange 800 Orange 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-800) |
6.59:1 #a53900 | Color orange 900 Orange 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-900) |
8:1 #903100 | Color orange 1000 Orange 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-1000) |
15.27:1 #451700 | Color orange 1100 Orange 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-1100) |
18.02:1 #2b0e00 | Color orange 1200 Orange 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-orange-1200) |
1.05:1 #fff9e5 | Color yellow 100 Yellow 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-100) |
1.09:1 #fff5d2 | Color yellow 200 Yellow 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-200) |
1.2:1 #ffeaa2 | Color yellow 300 Yellow 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-300) |
1.3:1 #ffe075 | Color yellow 400 Yellow 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-400) |
1.44:1 #ffd23f | Color yellow 500 Yellow 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-500) |
1.64:1 #fcc10f | Color yellow 600 Yellow 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-600) |
2.31:1 #e19e00 | Color yellow 700 Yellow 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-700) |
4.2:1 #ab6f00 | Color yellow 800 Yellow 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-800) |
5.52:1 #935d00 | Color yellow 900 Yellow 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-900) |
8.06:1 #734600 | Color yellow 1000 Yellow 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-1000) |
15.22:1 #372100 | Color yellow 1100 Yellow 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-1100) |
18.03:1 #211400 | Color yellow 1200 Yellow 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-yellow-1200) |
1.06:1 #f5f9f3 | Color green 100 Green 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-100) |
1.13:1 #ebf4e8 | Color green 200 Green 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-200) |
1.26:1 #daead3 | Color green 300 Green 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-300) |
1.58:1 #b6d7a9 | Color green 400 Green 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-400) |
1.97:1 #99c586 | Color green 500 Green 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-500) |
2.42:1 #7eb567 | Color green 600 Green 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-600) |
3.01:1 #66a44c | Color green 700 Green 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-700) |
4.73:1 #408225 | Color green 800 Green 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-800) |
6.56:1 #306a17 | Color green 900 Green 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-900) |
8:1 #275c12 | Color green 1000 Green 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-1000) |
15.28:1 #122b07 | Color green 1100 Green 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-1100) |
18.04:1 #0b1a05 | Color green 1200 Green 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-green-1200) |
1.06:1 #f3f9fa | Color teal 100 Teal 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-100) |
1.13:1 #e6f3f6 | Color teal 200 Teal 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-200) |
1.25:1 #d2eaef | Color teal 300 Teal 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-300) |
1.59:1 #a3d6df | Color teal 400 Teal 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-400) |
1.96:1 #7ec4d2 | Color teal 500 Teal 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-500) |
2.44:1 #5db2c3 | Color teal 600 Teal 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-600) |
3.01:1 #40a1b4 | Color teal 700 Teal 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-700) |
4.73:1 #1b7e91 | Color teal 800 Teal 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-800) |
6.59:1 #106677 | Color teal 900 Teal 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-900) |
8.05:1 #0b5868 | Color teal 1000 Teal 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-1000) |
15.19:1 #042a32 | Color teal 1100 Teal 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-1100) |
18.08:1 #03191e | Color teal 1200 Teal 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-teal-1200) |
1.07:1 #eff8ff | Color blue 100 Blue 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-100) |
1.13:1 #e8f3fb | Color blue 200 Blue 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-200) |
1.25:1 #d9e8f4 | Color blue 300 Blue 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-300) |
1.59:1 #b9d0e3 | Color blue 400 Blue 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-400) |
1.97:1 #9fbcd6 | Color blue 500 Blue 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-500) |
2.43:1 #88aaca | Color blue 600 Blue 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-600) |
3.02:1 #7298be | Color blue 700 Blue 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-700) |
4.77:1 #4676a6 | Color blue 800 Blue 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-800) |
6.62:1 #295f96 | Color blue 900 Blue 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-900) |
8:1 #18528c | Color blue 1000 Blue 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-1000) |
15.63:1 #001f5a | Color blue 1100 Blue 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-1100) |
18.02:1 #00143c | Color blue 1200 Blue 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-blue-1200) |
1.06:1 #f9f7fb | Color purple 100 Purple 100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-100) |
1.12:1 #f4f1f7 | Color purple 200 Purple 200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-200) |
1.25:1 #e9e4f0 | Color purple 300 Purple 300 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-300) |
1.59:1 #d4c9e1 | Color purple 400 Purple 400 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-400) |
1.96:1 #c3b3d5 | Color purple 500 Purple 500 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-500) |
2.43:1 #b29ec9 | Color purple 600 Purple 600 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-600) |
3.01:1 #a28bbe | Color purple 700 Purple 700 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-700) |
4.73:1 #8565aa | Color purple 800 Purple 800 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-800) |
6.56:1 #704c9c | Color purple 900 Purple 900 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-900) |
8.05:1 #643c93 | Color purple 1000 Purple 1000 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-1000) |
15.18:1 #330072 | Color purple 1100 Purple 1100 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-1100) |
18.01:1 #20004c | Color purple 1200 Purple 1200 (generated by @kesko/color). In most cases, you should not use this primitive directly, but use the semantic colors instead that define purpose & intent. | var(--k-color-purple-1200) |
Usage #
Installation #
To install Kesko Design Tokens as a dependency in your project, run:
npm install @kesko/tokenspnpm add @kesko/tokensyarn add @kesko/tokensbun add @kesko/tokensCSS usage #
Import the stylesheet once at the root of your application. This exposes all design tokens as CSS custom properties:
import "@kesko/tokens/dist/tokens.css";Or, if you prefer to load it directly from HTML:
<link rel="stylesheet" href="/tokens.css" />Then reference any design token in your CSS:
.selector {
color: var(--k-color-text-success);
background: var(--k-color-status-success);
font-family: var(--k-font-family-sans);
}SCSS usage #
Import the SCSS file at the start of your stylesheet to expose design tokens as $-prefixed Sass variables:
@use "@kesko/tokens/dist/tokens.scss" as *;
.my-button {
color: $k-color-text-success;
background: $k-color-status-success;
font-family: $k-font-family-sans;
}Less usage #
Import the LESS file to expose design tokens as @-prefixed variables:
@import "@kesko/tokens/dist/tokens.less";
.my-button {
color: @k-color-text-success;
background: @k-color-status-success;
font-family: @k-font-family-sans;
}JavaScript usage #
Each design token is available as a named export in PascalCase:
import { KColorAccent, KFontFamilySans } from "@kesko/tokens";
element.style.background = KColorAccent;
element.style.fontFamily = KFontFamilySans;For richer metadata, import the ES module instead. Unlike tokens.js, the ES module has a single default export with each leaf wrapped in a metadata object:
import tokens from "@kesko/tokens/dist/tokens.esm.js";
console.log(tokens.color.accent);
// Outputs:
//
// {
// key: "{color.accent}",
// value: "#f86800",
// comment: "The primary brand accent color used for theming purposes. Aliases `color.orange.700` in the base Kesko theme.",
// type: "color",
// filePath: "src/color/accent.yaml",
// isSource: true,
// original: {
// value: "{color.orange.700}",
// comment: "The primary brand accent color used for theming purposes. Aliases `color.orange.700` in the base Kesko theme.",
// type: "color",
// key: "{color.accent}",
// },
// name: "accent",
// attributes: {},
// path: ["color", "accent"],
// }TypeScript usage #
Type definitions ship as tokens.d.ts and are referenced by the types field in package.json, so the named exports are typed automatically:
import { KColorAccent, KFontFamilySans } from "@kesko/tokens";The package also exports a DesignToken interface that describes the metadata-rich entries used in the ESM output:
import type { DesignToken } from "@kesko/tokens";
const accent: DesignToken = {
value: "#f86800",
type: "color",
name: "KColorAccent",
};JSON usage #
For tooling, code generation, or non-JavaScript environments, import the full tree as JSON. The output follows the W3C Design Tokens Community Group format:
import tokens from "@kesko/tokens/dist/tokens.json";
const accent = tokens.color.accent["[default]"];
// {
// $value: "{color.orange.800}", // alias preserved; literal for literals
// $type: "color",
// $description: "Primary accent color used for interactive elements and theming.",
// $extensions: {
// "com.amazon.style-dictionary": {
// name: "k-color-accent", // `[default]` sentinel stripped per the kesko/name convention
// path: ["color", "accent", "[default]"],
// attributes: { category: "color", type: "accent", item: "[default]" },
// original: { value: "{color.orange.800}", type: "color", … }
// }
// }
// }The $extensions["design.kesko"] namespace surfaces any non-DTCG-core fields authored in the YAML source. Today, surface on each color/text/on-* token, pairing the foreground with its expected background for contrast checks.
iOS usage #
The ios.swift output exposes the full color palette as UIColor static constants on a KeskoTokens class. Drop dist/ios.swift into your Xcode project and reference design tokens directly:
import UIKit
label.textColor = KeskoTokens.kColorTextBase
view.backgroundColor = KeskoTokens.kColorAccentFrom SwiftUI, bridge the UIColor constants with Color(uiColor:):
import SwiftUI
Text("Hello")
.foregroundColor(Color(uiColor: KeskoTokens.kColorTextBase))
.background(Color(uiColor: KeskoTokens.kColorAccent))Android usage #
The android.xml output exposes color resources following standard Android resource naming. Copy dist/android.xml into your project’s res/values/ directory (typically as colors.xml) and reference tokens from layouts and styles:
<TextView
android:textColor="@color/k_color_text_base"
android:background="@color/k_color_accent"
android:text="Hello" />From Kotlin or Java, use the standard resource lookup:
val accent = ContextCompat.getColor(context, R.color.k_color_accent)Naming #
All design tokens are prefixed with k to prevent conflicts with other libraries. The exact format varies by platform, as described here:
| Platform | Format | Example |
|---|---|---|
| CSS | --k-{path} | --k-color-accent |
| SCSS | $k-{path} | $k-color-accent |
| LESS | @k-{path} | @k-color-accent |
| JavaScript / ESM | K{PascalPath} | KColorAccent |
| TypeScript | K{PascalPath} | KColorAccent |
| JSON | nested object tree | tokens.color.accent |
| iOS Swift | KeskoTokens.k{camelPath} | KeskoTokens.kColorAccent |
| Android XML | k_{snake_path} | k_color_accent |
See the naming guidelines for the complete rules.
Available formats #
The package ships 9 platform-specific formats:
- CSS Custom Properties:
@kesko/tokens/dist/tokens.css - SCSS:
@kesko/tokens/dist/tokens.scss - LESS:
@kesko/tokens/dist/tokens.less - JavaScript (named exports):
@kesko/tokens/dist/tokens.js - ES Module (default tree):
@kesko/tokens/dist/tokens.esm.js - TypeScript declarations:
@kesko/tokens/dist/tokens.d.ts - JSON:
@kesko/tokens/dist/tokens.json - iOS Swift:
@kesko/tokens/dist/ios.swift - Android XML:
@kesko/tokens/dist/android.xml
Design token visualizer #
The design token visualizer is an interactive tool for exploring the full Kesko design token tree and understanding how the relationships work between groups, primitives, semantics, themes, and modes.
