import type { DesignToken, DesignTokensConfig } from '@shoptet/tokens';
import { ColorDesignToken, isDesignToken, ShadowDesignToken } from '@shoptet/tokens';
import { objectEntries, objectFromEntries } from '@shoptet/utils';
import { createPathSelector } from '@shoptet/utils';
import { Scales } from './scales';
const selector = createPathSelector(Scales);
function select
(
path: P extends Parameters[0] ? P : never
): ReturnType {
const reference = selector(path);
if (typeof reference === 'object' && isDesignToken(reference)) {
return {
...reference,
$reference: path,
} satisfies DesignToken;
} else {
return reference;
}
}
const presetSteps = {
light: {
// base (canonical 1000)
// low (canonical 850) anchor-drift +75 ✓consensus×3
// medium (canonical 700) anchor-drift -25
// strong (canonical 450) anchor-drift +50
// full (canonical 0)
background: {
base: {
default: 1000,
},
low: {
default: 950,
hovered: 875,
},
medium: {
default: 725,
hovered: 650,
selected: 725,
},
high: {
default: 675,
hovered: 525,
},
xHigh: {
default: 575,
hovered: 400,
},
strong: {
default: 325,
},
full: {
default: 0,
},
},
// base (canonical 1000)
// low (canonical 850) anchor-drift +50
// medium (canonical 650) anchor-drift +25
// high (canonical 500) anchor-drift +75
// strong (canonical 450) anchor-drift -125
// full (canonical 0)
foreground: {
base: {
default: 1000,
},
low: {
default: 875,
},
medium: {
default: 725,
hovered: 600,
selected: 725,
},
high: {
default: 600,
hovered: 525,
},
strong: {
default: 475,
hovered: 550,
},
full: {
default: 0,
hovered: 425,
},
},
},
// Dark steps are the inverse of light steps: dark = 1000 - light.
dark: {
background: {
base: {
default: 0,
},
low: {
default: 50,
hovered: 125,
},
medium: {
default: 275,
hovered: 350,
selected: 275,
},
high: {
default: 325,
hovered: 475,
},
xHigh: {
default: 425,
hovered: 600,
},
strong: {
default: 675,
},
full: {
default: 1000,
},
},
foreground: {
base: {
default: 0,
},
low: {
default: 125,
},
medium: {
default: 275,
hovered: 400,
selected: 275,
},
high: {
default: 400,
hovered: 475,
},
strong: {
default: 525,
hovered: 450,
},
full: {
default: 1000,
hovered: 575,
},
},
},
dimensionUtilities: {
none: 0,
line: 1,
xxs: 2,
xs: 4,
sm: 8,
md: 12,
lg: 16,
xl: 24,
'2xl': 32,
'3xl': 40,
'4xl': 48,
},
} as const;
export const colors = {
light: {
background: {
blue: {
low: {
default: select(`swatch/blue/${presetSteps.light.background.low.default}`),
},
},
controls: {
low: {
default: select(`swatch/controls/${presetSteps.light.background.low.default}`),
hovered: select(`swatch/controls/${presetSteps.light.background.low.hovered}`),
},
medium: {
default: select(`swatch/controls/${presetSteps.light.background.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.light.background.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.light.background.medium.selected}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.light.background.medium.default}`),
hovered: select(`swatch/main/${presetSteps.light.background.medium.hovered}`),
selected: select(`swatch/main/${presetSteps.light.background.medium.selected}`),
},
},
neutral: {
full: {
default: select(`swatch/neutral/${presetSteps.light.background.full.default}`),
},
strong: {
default: select(`swatch/neutral/${presetSteps.light.background.strong.default}`),
},
// StatusIndicator neutral intent.
xHigh: {
default: select(`swatch/neutral/525`),
hovered: select(`swatch/neutral/${presetSteps.light.background.xHigh.hovered}`),
},
high: {
default: select(`swatch/neutral/${presetSteps.light.background.high.default}`),
},
low: {
default: select(`swatch/neutral/${presetSteps.light.background.low.default}`),
hovered: select(`swatch/neutral/${presetSteps.light.background.low.hovered}`),
},
base: {
default: select(`swatch/neutral/${presetSteps.light.background.base.default}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.light.background.medium.default}`),
},
high: {
default: select(`swatch/notice/${presetSteps.light.background.high.default}`),
hovered: select(`swatch/notice/${presetSteps.light.background.high.hovered}`),
},
},
informative: {
low: {
default: select(`swatch/informative/${presetSteps.light.background.low.default}`),
},
high: {
default: select(`swatch/informative/${presetSteps.light.background.high.default}`),
},
xHigh: {
default: select(`swatch/informative/${presetSteps.light.background.xHigh.default}`),
},
strong: {
default: select(`swatch/informative/${presetSteps.light.background.xHigh.default}`),
},
},
success: {
low: {
default: select(`swatch/success/${presetSteps.light.background.low.default}`),
},
high: {
default: select(`swatch/success/${presetSteps.light.background.high.default}`),
},
xHigh: {
hovered: select(`swatch/success/${presetSteps.light.background.xHigh.hovered}`),
},
},
warning: {
low: {
default: select(`swatch/warning/${presetSteps.light.background.low.default}`),
},
medium: {
default: select(`swatch/warning/${presetSteps.light.background.medium.default}`),
},
high: {
default: select(`swatch/warning/${presetSteps.light.background.high.default}`),
hovered: select(`swatch/warning/${presetSteps.light.background.high.hovered}`),
},
},
critical: {
low: {
default: select(`swatch/critical/${presetSteps.light.background.low.default}`),
},
high: {
default: select(`swatch/critical/${presetSteps.light.background.high.default}`),
hovered: select(`swatch/critical/${presetSteps.light.background.high.hovered}`),
},
xHigh: {
default: select(`swatch/critical/${presetSteps.light.background.xHigh.default}`),
hovered: select(`swatch/critical/${presetSteps.light.background.xHigh.hovered}`),
},
},
},
foreground: {
blue: {
medium: {
default: select(`swatch/blue/${presetSteps.light.foreground.medium.default}`),
},
},
green: {
medium: {
default: select(`swatch/green/${presetSteps.light.foreground.medium.default}`),
},
},
controls: {
medium: {
default: select(`swatch/controls/${presetSteps.light.foreground.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.light.foreground.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.light.foreground.medium.selected}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.light.foreground.medium.default}`),
},
},
warning: {
medium: {
default: select(`swatch/warning/${presetSteps.light.foreground.medium.default}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.light.foreground.medium.default}`),
hovered: select(`swatch/main/${presetSteps.light.foreground.medium.hovered}`),
},
},
critical: {
high: {
default: select(`swatch/critical/${presetSteps.light.foreground.high.default}`),
hovered: select(`swatch/critical/${presetSteps.light.foreground.high.hovered}`),
},
},
success: {
high: {
default: select(`swatch/success/${presetSteps.light.foreground.high.default}`),
},
},
superadmin: {
high: {
default: select(`swatch/superadmin/${presetSteps.light.foreground.high.default}`),
hovered: select(`swatch/superadmin/${presetSteps.light.foreground.high.hovered}`),
},
},
links: {
strong: {
default: select(`swatch/links/${presetSteps.light.foreground.strong.default}`),
hovered: select(`swatch/links/${presetSteps.light.foreground.strong.hovered}`),
},
},
neutral: {
low: {
default: select(`swatch/neutral/${presetSteps.light.foreground.low.default}`),
},
medium: {
default: select(`swatch/neutral/${presetSteps.light.foreground.medium.default}`),
},
high: {
default: select(`swatch/neutral/${presetSteps.light.foreground.high.default}`),
},
full: {
default: select(`swatch/neutral/${presetSteps.light.foreground.full.default}`),
hovered: select(`swatch/neutral/${presetSteps.light.foreground.full.hovered}`),
},
},
informative: {
strong: {
default: select(`swatch/informative/${presetSteps.light.foreground.strong.default}`),
},
},
},
border: {
controls: {
low: {
default: select(`swatch/controls/${presetSteps.light.foreground.low.default}`),
},
medium: {
default: select(`swatch/controls/${presetSteps.light.foreground.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.light.foreground.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.light.foreground.medium.selected}`),
},
},
success: {
high: {
default: select(`swatch/success/${presetSteps.light.foreground.high.default}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.light.foreground.medium.default}`),
hovered: select(`swatch/main/${presetSteps.light.foreground.medium.hovered}`),
},
},
neutral: {
low: {
default: select(`swatch/neutral/${presetSteps.light.foreground.low.default}`),
},
medium: {
default: select(`swatch/neutral/${presetSteps.light.foreground.medium.default}`),
},
high: {
default: select(`swatch/neutral/${presetSteps.light.foreground.high.default}`),
},
full: {
// default: path(`swatch/neutral/${config.light.foreground.full.default}`),
hovered: select(`swatch/neutral/${presetSteps.light.foreground.full.hovered}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.light.foreground.medium.default}`),
},
},
blue: {
medium: {
default: select(`swatch/blue/${presetSteps.light.foreground.medium.default}`),
},
},
warning: {
medium: {
default: select(`swatch/warning/${presetSteps.light.foreground.medium.default}`),
},
},
critical: {
high: {
default: select(`swatch/critical/${presetSteps.light.foreground.high.default}`),
hovered: select(`swatch/critical/${presetSteps.light.foreground.high.hovered}`),
},
},
links: {
strong: {
default: select(`swatch/links/${presetSteps.light.foreground.strong.default}`),
},
},
informative: {
strong: {
default: select(`swatch/informative/${presetSteps.light.foreground.strong.default}`),
},
},
},
shadow: {
focus: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/0'),
blur: select('dimension/2'),
spread: select('dimension/0'),
color: ColorDesignToken(select(`swatch/controls/${presetSteps.light.background.medium.default}`)),
}),
high: {
soft: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/12'),
blur: select('dimension/32'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/15'),
]),
}),
sharp: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/4'),
blur: select('dimension/10'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/5'),
]),
}),
},
medium: {
soft: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/3'),
blur: select('dimension/7'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/10'),
]),
}),
sharp: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/-3'),
blur: select('dimension/7'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/10'),
]),
}),
},
low: {
soft: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/2'),
blur: select('dimension/6'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/5'),
]),
}),
sharp: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/1'),
blur: select('dimension/2'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.light.background.full.default}`),
select('blend/5'),
]),
}),
},
},
blend: {
solid: select('blend/100'),
low: select('blend/70'),
medium: select('blend/60'),
high: select('blend/30'),
strong: select('blend/10'),
full: select('blend/0'),
},
},
dark: {
background: {
blue: {
low: {
default: select(`swatch/blue/${presetSteps.dark.background.low.default}`),
},
},
controls: {
low: {
default: select(`swatch/controls/${presetSteps.dark.background.low.default}`),
hovered: select(`swatch/controls/${presetSteps.dark.background.low.hovered}`),
},
medium: {
default: select(`swatch/controls/${presetSteps.dark.background.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.dark.background.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.dark.background.medium.selected}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.dark.background.medium.default}`),
hovered: select(`swatch/main/${presetSteps.dark.background.medium.hovered}`),
selected: select(`swatch/main/${presetSteps.dark.background.medium.selected}`),
},
},
neutral: {
full: {
default: select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
},
strong: {
default: select(`swatch/neutral/${presetSteps.dark.background.strong.default}`),
},
// StatusIndicator neutral intent — fixed across themes.
xHigh: {
default: select(`swatch/neutral/525`),
},
high: {
default: select(`swatch/neutral/${presetSteps.dark.background.high.default}`),
},
low: {
default: select(`swatch/neutral/${presetSteps.dark.background.low.default}`),
hovered: select(`swatch/neutral/${presetSteps.dark.background.low.hovered}`),
},
base: {
default: select(`swatch/neutral/${presetSteps.dark.background.base.default}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.dark.background.medium.default}`),
},
high: {
default: select(`swatch/notice/${presetSteps.dark.background.high.default}`),
},
},
informative: {
low: {
default: select(`swatch/informative/${presetSteps.dark.background.low.default}`),
},
high: {
default: select(`swatch/informative/${presetSteps.dark.background.high.default}`),
},
xHigh: {
default: select(`swatch/informative/${presetSteps.dark.background.xHigh.default}`),
},
},
success: {
low: {
default: select(`swatch/success/${presetSteps.dark.background.low.default}`),
},
high: {
default: select(`swatch/success/${presetSteps.dark.background.high.default}`),
},
},
warning: {
low: {
default: select(`swatch/warning/${presetSteps.dark.background.low.default}`),
},
medium: {
default: select(`swatch/warning/${presetSteps.dark.background.medium.default}`),
},
high: {
default: select(`swatch/warning/${presetSteps.dark.background.high.default}`),
},
},
critical: {
low: {
default: select(`swatch/critical/${presetSteps.dark.background.low.default}`),
},
high: {
default: select(`swatch/critical/${presetSteps.dark.background.high.default}`),
hovered: select(`swatch/critical/${presetSteps.dark.background.high.hovered}`),
},
xHigh: {
default: select(`swatch/critical/${presetSteps.dark.background.xHigh.default}`),
},
},
},
foreground: {
blue: {
medium: {
default: select(`swatch/blue/${presetSteps.dark.foreground.medium.default}`),
},
},
green: {
medium: {
default: select(`swatch/green/${presetSteps.dark.foreground.medium.default}`),
},
},
controls: {
medium: {
default: select(`swatch/controls/${presetSteps.dark.foreground.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.dark.foreground.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.dark.foreground.medium.selected}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.dark.foreground.medium.default}`),
},
},
warning: {
medium: {
default: select(`swatch/warning/${presetSteps.dark.foreground.medium.default}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.dark.foreground.medium.default}`),
hovered: select(`swatch/main/${presetSteps.dark.foreground.medium.hovered}`),
},
},
critical: {
high: {
default: select(`swatch/critical/${presetSteps.dark.foreground.high.default}`),
hovered: select(`swatch/critical/${presetSteps.dark.foreground.high.hovered}`),
},
},
success: {
high: {
default: select(`swatch/success/${presetSteps.dark.foreground.high.default}`),
},
},
superadmin: {
high: {
default: select(`swatch/superadmin/${presetSteps.dark.foreground.high.default}`),
hovered: select(`swatch/superadmin/${presetSteps.dark.foreground.high.hovered}`),
},
},
links: {
strong: {
default: select(`swatch/links/${presetSteps.dark.foreground.strong.default}`),
hovered: select(`swatch/links/${presetSteps.dark.foreground.strong.hovered}`),
},
},
neutral: {
low: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.low.default}`),
},
medium: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.medium.default}`),
},
high: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.high.default}`),
},
full: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.full.default}`),
hovered: select(`swatch/neutral/${presetSteps.dark.foreground.full.hovered}`),
},
},
informative: {
strong: {
default: select(`swatch/informative/${presetSteps.dark.foreground.strong.default}`),
},
},
},
border: {
controls: {
low: {
default: select(`swatch/controls/${presetSteps.dark.foreground.low.default}`),
},
medium: {
default: select(`swatch/controls/${presetSteps.dark.foreground.medium.default}`),
hovered: select(`swatch/controls/${presetSteps.dark.foreground.medium.hovered}`),
selected: select(`swatch/controls/${presetSteps.dark.foreground.medium.selected}`),
},
},
success: {
high: {
default: select(`swatch/success/${presetSteps.dark.foreground.high.default}`),
},
},
main: {
medium: {
default: select(`swatch/main/${presetSteps.dark.foreground.medium.default}`),
hovered: select(`swatch/main/${presetSteps.dark.foreground.medium.hovered}`),
},
},
neutral: {
low: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.low.default}`),
},
medium: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.medium.default}`),
},
high: {
default: select(`swatch/neutral/${presetSteps.dark.foreground.high.default}`),
},
full: {
// default: path(`swatch/neutral/${config.light.foreground.full.default}`),
hovered: select(`swatch/neutral/${presetSteps.dark.foreground.full.hovered}`),
},
},
notice: {
medium: {
default: select(`swatch/notice/${presetSteps.dark.foreground.medium.default}`),
},
},
blue: {
medium: {
default: select(`swatch/blue/${presetSteps.dark.foreground.medium.default}`),
},
},
warning: {
medium: {
default: select(`swatch/warning/${presetSteps.dark.foreground.medium.default}`),
},
},
critical: {
high: {
default: select(`swatch/critical/${presetSteps.dark.foreground.high.default}`),
hovered: select(`swatch/critical/${presetSteps.dark.foreground.high.hovered}`),
},
},
links: {
strong: {
default: select(`swatch/links/${presetSteps.dark.foreground.strong.default}`),
},
},
informative: {
strong: {
default: select(`swatch/informative/${presetSteps.dark.foreground.strong.default}`),
},
},
},
shadow: {
down: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/3'),
blur: select('dimension/7'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/10'),
]),
}),
focus: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/0'),
blur: select('dimension/2'),
spread: select('dimension/0'),
color: ColorDesignToken(select(`swatch/controls/${presetSteps.dark.background.medium.default}`)),
}),
up: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/-3'),
blur: select('dimension/7'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/10'),
]),
}),
high: {
primary: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/12'),
blur: select('dimension/32'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/15'),
]),
}),
secondary: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/4'),
blur: select('dimension/10'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/5'),
]),
}),
},
low: {
primary: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/2'),
blur: select('dimension/6'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/5'),
]),
}),
secondary: ShadowDesignToken({
offsetX: select('dimension/0'),
offsetY: select('dimension/1'),
blur: select('dimension/2'),
spread: select('dimension/0'),
color: ColorDesignToken([
select(`swatch/neutral/${presetSteps.dark.background.full.default}`),
select('blend/5'),
]),
}),
},
},
blend: {
solid: select('blend/100'),
low: select('blend/70'),
medium: select('blend/50'),
high: select('blend/30'),
strong: select('blend/10'),
full: select('blend/0'),
},
},
} satisfies DesignTokensConfig;
const utilitySpacing = objectFromEntries(
objectEntries(presetSteps.dimensionUtilities).map(([key, value]) => [key, select(`dimension/${value}`)] as const)
);
export const dimensions = {
default: {
screen: {
width: {
default: select('dimension/0'),
sm: select('dimension/576'),
md: select('dimension/768'),
lg: select('dimension/992'),
xl: select('dimension/1024'),
xxl: select('dimension/1400'),
},
},
tweak: {
0: select('dimension/0'),
100: select('dimension/0.1'),
125: select('dimension/0.125'),
200: select('dimension/0.2'),
250: select('dimension/0.25'),
300: select('dimension/0.3'),
333: select('dimension/0.333333'),
400: select('dimension/0.4'),
500: select('dimension/0.5'),
600: select('dimension/0.6'),
666: select('dimension/0.666666'),
700: select('dimension/0.7'),
750: select('dimension/0.75'),
800: select('dimension/0.8'),
900: select('dimension/0.9'),
1000: select('dimension/1'),
2000: select('dimension/2'),
3000: select('dimension/3'),
4000: select('dimension/4'),
5000: select('dimension/5'),
6000: select('dimension/6'),
7000: select('dimension/7'),
neg7000: select('dimension/-7'),
neg6000: select('dimension/-6'),
neg5000: select('dimension/-5'),
neg4000: select('dimension/-4'),
neg3000: select('dimension/-3'),
neg2000: select('dimension/-2'),
neg1000: select('dimension/-1'),
neg900: select('dimension/-0.9'),
neg800: select('dimension/-0.8'),
neg750: select('dimension/-0.75'),
neg700: select('dimension/-0.7'),
neg666: select('dimension/-0.666666'),
neg600: select('dimension/-0.6'),
neg500: select('dimension/-0.5'),
neg400: select('dimension/-0.4'),
neg333: select('dimension/-0.333333'),
neg300: select('dimension/-0.3'),
neg250: select('dimension/-0.25'),
neg200: select('dimension/-0.2'),
neg125: select('dimension/-0.125'),
neg100: select('dimension/-0.1'),
},
gap: utilitySpacing,
padding: utilitySpacing,
margin: utilitySpacing,
borderRadius: {
...utilitySpacing,
// Themeable corners; defaults mirror the historical hardcoded values.
button: select('dimension/0'),
formField: select('dimension/0'),
checkboxField: select('dimension/3'),
},
borderWidth: utilitySpacing,
offset: utilitySpacing,
size: {
...utilitySpacing,
// The form field's CONTENT height; consumers add the two border widths,
// which keeps the historical 26px box on a scale step.
formField: select('dimension/24'),
},
elevation: {
default: select('elevation/1'),
overlay: select('elevation/999'),
sidebar: select('elevation/1003'),
header: select('elevation/1100'),
modal: select('elevation/11000'),
loader: select('elevation/12000'),
},
},
sm: {},
} as const;
export const typography = {
default: {
fontFamily: {
icons: select('fontFamily/icons'),
numbers: select('fontFamily/default'),
display: select('fontFamily/accent'),
headline: select('fontFamily/accent'),
title: select('fontFamily/accent'),
body: select('fontFamily/default'),
strong: select('fontFamily/default'),
label: select('fontFamily/default'),
controls: select('fontFamily/default'),
navigation: select('fontFamily/default'),
caption: select('fontFamily/default'),
monospace: select('fontFamily/monospace'),
},
fontSize: {
numbers: {
large: select('fontSize/60'),
medium: select('fontSize/36'),
small: select('fontSize/24'),
},
display: {
large: select('fontSize/56'),
medium: select('fontSize/48'),
small: select('fontSize/40'),
},
headline: {
h1: select('fontSize/26'),
h2: select('fontSize/22'),
h3: select('fontSize/18'),
h4: select('fontSize/16'),
h5: select('fontSize/12'),
},
title: {
large: select('fontSize/16'),
medium: select('fontSize/14'),
small: select('fontSize/12'),
},
label: {
large: select('fontSize/16'),
medium: select('fontSize/14'),
small: select('fontSize/12'),
},
controls: {
large: select('fontSize/16'),
medium: select('fontSize/12'),
small: select('fontSize/12'),
},
navigation: {
large: select('fontSize/16'),
medium: select('fontSize/14'),
small: select('fontSize/12'),
},
body: {
large: select('fontSize/14'),
medium: select('fontSize/12'),
small: select('fontSize/10'),
},
strong: {
large: select('fontSize/14'),
medium: select('fontSize/12'),
small: select('fontSize/10'),
},
caption: {
large: select('fontSize/16'),
medium: select('fontSize/14'),
small: select('fontSize/12'),
},
monospace: {
large: select('fontSize/16'),
medium: select('fontSize/14'),
small: select('fontSize/12'),
},
},
lineHeight: {
numbers: {
large: select('lineHeight/72'),
medium: select('lineHeight/42') /* Original: 36 * 1.2 = 43.2 */,
small: select('lineHeight/28') /* Original: 24 * 1.2 = 28.8 */,
},
display: {
large: select('lineHeight/56'),
medium: select('lineHeight/48'),
small: select('lineHeight/40'),
},
headline: {
h1: select('lineHeight/32'),
h2: select('lineHeight/28') /* Original: 22px * 1.2727273 = 28px */,
h3: select('lineHeight/24') /* Original: 18px * 1.2777778 = 23px */,
h4: select('lineHeight/24') /* Original: 16px * 1.5 = 24px */,
h5: select('lineHeight/14') /* Original: 12px * 1.1666667 = 14px */,
},
title: {
large: select('lineHeight/24'),
medium: select('lineHeight/20'),
small: select('lineHeight/16'),
},
label: {
large: select('lineHeight/24'),
medium: select('lineHeight/20'),
small: select('lineHeight/18'),
},
controls: {
large: select('lineHeight/24') /* Original: 1.5 * 16 = 24 */,
medium: select('lineHeight/24') /* Original: 2 * 12 = 24 */,
small: select('lineHeight/16') /* Original: 1.3333333 * 12 = 16 */,
},
navigation: {
large: select('lineHeight/24'),
medium: select('lineHeight/20'),
small: select('lineHeight/16'),
},
body: {
large: select('lineHeight/22') /* Original: 14 * 1.5714286 = 22 */,
medium: select('lineHeight/18') /* Original: 12 * 1.5 = 18 */,
small: select('lineHeight/16') /* Original: 10 * 1.6 = 16 */,
},
strong: {
large: select('lineHeight/22'),
medium: select('lineHeight/18'),
small: select('lineHeight/16'),
},
caption: {
large: select('lineHeight/24'),
medium: select('lineHeight/20'),
small: select('lineHeight/16'),
},
monospace: {
large: select('lineHeight/24'),
medium: select('lineHeight/20'),
small: select('lineHeight/16'),
},
},
fontWeight: {
numbers: {
large: select('fontWeight/700'),
medium: select('fontWeight/700'),
small: select('fontWeight/400'),
},
display: {
large: select('fontWeight/500'),
medium: select('fontWeight/500'),
small: select('fontWeight/500'),
},
headline: {
h1: select('fontWeight/400'),
h2: select('fontWeight/400'),
h3: select('fontWeight/400'),
h4: select('fontWeight/400'),
h5: select('fontWeight/400'),
},
title: {
large: select('fontWeight/700'),
medium: select('fontWeight/700'),
small: select('fontWeight/700'),
},
label: {
large: select('fontWeight/400'),
medium: select('fontWeight/400'),
small: select('fontWeight/400'),
},
controls: {
large: select('fontWeight/400'),
medium: select('fontWeight/400'),
small: select('fontWeight/400'),
},
navigation: {
large: {
default: select('fontWeight/400'),
selected: select('fontWeight/700'),
},
medium: {
default: select('fontWeight/400'),
selected: select('fontWeight/700'),
},
small: {
default: select('fontWeight/400'),
selected: select('fontWeight/700'),
},
},
body: {
large: select('fontWeight/400'),
medium: select('fontWeight/400'),
small: select('fontWeight/400'),
},
strong: {
large: select('fontWeight/700'),
medium: select('fontWeight/700'),
small: select('fontWeight/700'),
},
caption: {
large: select('fontWeight/400'),
medium: select('fontWeight/400'),
small: select('fontWeight/400'),
},
monospace: {
large: select('fontWeight/400'),
medium: select('fontWeight/400'),
small: select('fontWeight/400'),
},
},
letterSpacing: {
numbers: {
large: select('letterSpacing/0'),
medium: select('letterSpacing/0'),
small: select('letterSpacing/0'),
},
display: {
large: select('letterSpacing/0'),
medium: select('letterSpacing/0'),
small: select('letterSpacing/0'),
},
headline: {
h1: select('letterSpacing/0'),
h2: select('letterSpacing/0'),
h3: select('letterSpacing/0'),
h4: select('letterSpacing/0'),
h5: select('letterSpacing/0'),
},
title: {
large: select('letterSpacing/0'),
medium: select('letterSpacing/0'),
small: select('letterSpacing/0'),
},
label: {
large: select('letterSpacing/0.1'),
medium: select('letterSpacing/0.1'),
small: select('letterSpacing/0.1'),
},
controls: {
large: select('letterSpacing/0.4'),
medium: select('letterSpacing/0.4'),
small: select('letterSpacing/0.4'),
},
navigation: {
large: select('letterSpacing/0.1'),
medium: select('letterSpacing/0.1'),
small: select('letterSpacing/0.1'),
},
body: {
large: select('letterSpacing/0.16') /* Original: 0.15 */,
medium: select('letterSpacing/0.1') /* Original: 0.1 */,
small: select('letterSpacing/0.06') /* Original: 0.05 */,
},
strong: {
large: select('letterSpacing/0.16') /* Original: 0.15 */,
medium: select('letterSpacing/0.1') /* Original: 0.1 */,
small: select('letterSpacing/0.06') /* Original: 0.05 */,
},
caption: {
large: select('letterSpacing/0.1'),
medium: select('letterSpacing/0.1'),
small: select('letterSpacing/0.1'),
},
monospace: {
large: select('letterSpacing/0'),
medium: select('letterSpacing/0'),
small: select('letterSpacing/0'),
},
},
fontStyle: {
italic: select('fontStyle/italic'),
normal: select('fontStyle/normal'),
},
},
sm: {
fontSize: {
headline: {
h1: select('fontSize/36'),
},
},
lineHeight: {
headline: {
h1: select('fontSize/46') /* Original: 36px * 1.2777778 = 46px */,
},
},
fontWeight: {
headline: {
h1: select('fontWeight/400'),
},
},
letterSpacing: {
headline: {
h1: select('letterSpacing/0'),
},
},
},
} satisfies DesignTokensConfig;