@alessandrogiordano/stk 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -0
- package/build/css/tokens.css +588 -0
- package/build/js/tokens.js +591 -0
- package/build/json/tokens.json +696 -0
- package/package.json +43 -0
- package/tokens/base/borders.json +21 -0
- package/tokens/base/colors.json +17 -0
- package/tokens/base/elevation.json +11 -0
- package/tokens/base/motion.json +16 -0
- package/tokens/base/opacity.json +14 -0
- package/tokens/base/shades.json +965 -0
- package/tokens/base/shadows.json +35 -0
- package/tokens/base/spacing.json +12 -0
- package/tokens/base/typography.json +17 -0
- package/tokens/components/badge-status.json +66 -0
- package/tokens/components/button.json +152 -0
- package/tokens/components/card.json +19 -0
- package/tokens/components/checkbox.json +34 -0
- package/tokens/components/image.json +9 -0
- package/tokens/components/list-item.json +87 -0
- package/tokens/components/radio-button.json +46 -0
- package/tokens/components/spinner.json +30 -0
- package/tokens/components/text-input.json +47 -0
- package/tokens/components/tooltip.json +39 -0
- package/tokens/semantic/borders.json +18 -0
- package/tokens/semantic/icons.json +17 -0
- package/tokens/semantic/layout.json +11 -0
- package/tokens/semantic/states.json +29 -0
- package/tokens/semantic/surfaces.json +87 -0
- package/tokens/semantic/text.json +17 -0
- package/tokens/semantic/typography.json +49 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shadow": {
|
|
3
|
+
"color": {
|
|
4
|
+
"value": "0 0 0",
|
|
5
|
+
"type": "color",
|
|
6
|
+
"$description": "RGB values for shadow color"
|
|
7
|
+
},
|
|
8
|
+
"opacity": {
|
|
9
|
+
"value": "0.08",
|
|
10
|
+
"type": "number",
|
|
11
|
+
"$description": "Shadow opacity — light mode"
|
|
12
|
+
},
|
|
13
|
+
"key": {
|
|
14
|
+
"xs": { "value": "0px 1px 4px 0px", "type": "shadow", "$description": "Key light XS" },
|
|
15
|
+
"sm": { "value": "0px 2px 8px 0px", "type": "shadow", "$description": "Key light SM" },
|
|
16
|
+
"md": { "value": "0px 3px 12px 0px", "type": "shadow", "$description": "Key light MD" },
|
|
17
|
+
"lg": { "value": "0px 4px 16px 0px", "type": "shadow", "$description": "Key light LG" },
|
|
18
|
+
"xl": { "value": "0px 2px 8px 0px", "type": "shadow", "$description": "Key light XL" }
|
|
19
|
+
},
|
|
20
|
+
"ambient": {
|
|
21
|
+
"xs": { "value": "0px 2px 8px 0px", "type": "shadow", "$description": "Ambient light XS" },
|
|
22
|
+
"sm": { "value": "0px 3px 12px 0px", "type": "shadow", "$description": "Ambient light SM" },
|
|
23
|
+
"md": { "value": "0px 4px 16px 0px", "type": "shadow", "$description": "Ambient light MD" },
|
|
24
|
+
"lg": { "value": "0px 5px 20px 0px", "type": "shadow", "$description": "Ambient light LG" },
|
|
25
|
+
"xl": { "value": "0px 6px 24px 0px", "type": "shadow", "$description": "Ambient light XL" }
|
|
26
|
+
},
|
|
27
|
+
"preset": {
|
|
28
|
+
"xs": { "value": "surface", "type": "shadow", "$description": "Cards, panels — surface level elements" },
|
|
29
|
+
"sm": { "value": "non-modal", "type": "shadow", "$description": "Non-modal elements" },
|
|
30
|
+
"md": { "value": "sticky", "type": "shadow", "$description": "Sticky elements" },
|
|
31
|
+
"lg": { "value": "non-modal-sticky", "type": "shadow", "$description": "Non-modal elements on sticky surfaces" },
|
|
32
|
+
"xl": { "value": "modal", "type": "shadow", "$description": "Modal elements" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spacing": {
|
|
3
|
+
"xxs": { "value": "4px", "type": "spacing" },
|
|
4
|
+
"xs": { "value": "8px", "type": "spacing" },
|
|
5
|
+
"sm": { "value": "12px", "type": "spacing" },
|
|
6
|
+
"md": { "value": "16px", "type": "spacing" },
|
|
7
|
+
"lg": { "value": "24px", "type": "spacing" },
|
|
8
|
+
"xl": { "value": "32px", "type": "spacing" },
|
|
9
|
+
"xxl": { "value": "48px", "type": "spacing" },
|
|
10
|
+
"xxxl": { "value": "64px", "type": "spacing" }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"typography": {
|
|
3
|
+
"config": {
|
|
4
|
+
"base": { "value": 16, "type": "number" },
|
|
5
|
+
"ratio": { "value": 1.2, "type": "number" }
|
|
6
|
+
},
|
|
7
|
+
"size": {
|
|
8
|
+
"xs": { "value": "11px", "type": "dimension" },
|
|
9
|
+
"sm": { "value": "13px", "type": "dimension" },
|
|
10
|
+
"md": { "value": "16px", "type": "dimension" },
|
|
11
|
+
"lg": { "value": "19px", "type": "dimension" },
|
|
12
|
+
"xl": { "value": "23px", "type": "dimension" },
|
|
13
|
+
"xxl": { "value": "28px", "type": "dimension" },
|
|
14
|
+
"xxxl": { "value": "33px", "type": "dimension" }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"badge-status": {
|
|
3
|
+
"bg": {
|
|
4
|
+
"neutral": { "value": "{surface.neutral.subtle}", "type": "color", "$description": "Neutral variant background" },
|
|
5
|
+
"brand-1": { "value": "{surface.brand-1.subtlest}", "type": "color", "$description": "Brand-1 variant background" },
|
|
6
|
+
"brand-2": { "value": "{surface.brand-2.subtlest}", "type": "color", "$description": "Brand-2 variant background" },
|
|
7
|
+
"brand-3": { "value": "{surface.brand-3.subtlest}", "type": "color", "$description": "Brand-3 variant background" },
|
|
8
|
+
"success": { "value": "{surface.news.subtlest}", "type": "color", "$description": "Success variant background" },
|
|
9
|
+
"danger": { "value": "{surface.danger.subtlest}", "type": "color", "$description": "Danger variant background" },
|
|
10
|
+
"alert": { "value": "{surface.alert.subtlest}", "type": "color", "$description": "Alert variant background" },
|
|
11
|
+
"info": { "value": "{surface.info.subtlest}", "type": "color", "$description": "Info variant background" },
|
|
12
|
+
"ai": { "value": "{surface.ai.subtlest}", "type": "color", "$description": "AI variant background" }
|
|
13
|
+
},
|
|
14
|
+
"text": {
|
|
15
|
+
"neutral": { "value": "{text.default}", "type": "color", "$description": "Neutral variant text" },
|
|
16
|
+
"brand-1": { "value": "{text.brand-1}", "type": "color", "$description": "Brand-1 variant text" },
|
|
17
|
+
"brand-2": { "value": "{text.brand-2}", "type": "color", "$description": "Brand-2 variant text" },
|
|
18
|
+
"brand-3": { "value": "{text.brand-3}", "type": "color", "$description": "Brand-3 variant text" },
|
|
19
|
+
"success": { "value": "{text.news}", "type": "color", "$description": "Success variant text" },
|
|
20
|
+
"danger": { "value": "{text.danger}", "type": "color", "$description": "Danger variant text" },
|
|
21
|
+
"alert": { "value": "{text.alert}", "type": "color", "$description": "Alert variant text" },
|
|
22
|
+
"info": { "value": "{text.info}", "type": "color", "$description": "Info variant text" },
|
|
23
|
+
"ai": { "value": "{text.ai}", "type": "color", "$description": "AI variant text" }
|
|
24
|
+
},
|
|
25
|
+
"border-color": {
|
|
26
|
+
"value": "{border.default}",
|
|
27
|
+
"type": "color",
|
|
28
|
+
"$description": "Badge border — defaults to transparent via CSS; semantic token wired for override"
|
|
29
|
+
},
|
|
30
|
+
"border-width": {
|
|
31
|
+
"value": "{border.width.sm}",
|
|
32
|
+
"type": "borderWidth",
|
|
33
|
+
"$description": "Badge border width — 1px"
|
|
34
|
+
},
|
|
35
|
+
"radius": {
|
|
36
|
+
"value": "{radius.md}",
|
|
37
|
+
"type": "borderRadius",
|
|
38
|
+
"$description": "Badge corner radius — 8px"
|
|
39
|
+
},
|
|
40
|
+
"font-size": {
|
|
41
|
+
"value": "{typography.size.xs}",
|
|
42
|
+
"type": "dimension",
|
|
43
|
+
"$description": "Badge label size — 11px (xs)"
|
|
44
|
+
},
|
|
45
|
+
"spacing-h": {
|
|
46
|
+
"value": "{spacing.xs}",
|
|
47
|
+
"type": "spacing",
|
|
48
|
+
"$description": "Horizontal padding — 8px"
|
|
49
|
+
},
|
|
50
|
+
"spacing-v": {
|
|
51
|
+
"value": "{spacing.xxs}",
|
|
52
|
+
"type": "spacing",
|
|
53
|
+
"$description": "Vertical padding — 4px"
|
|
54
|
+
},
|
|
55
|
+
"spacing-gap": {
|
|
56
|
+
"value": "{spacing.xxs}",
|
|
57
|
+
"type": "spacing",
|
|
58
|
+
"$description": "Gap between dot/icon and label — 4px"
|
|
59
|
+
},
|
|
60
|
+
"dot-size": {
|
|
61
|
+
"value": "{spacing.xs}",
|
|
62
|
+
"type": "dimension",
|
|
63
|
+
"$description": "Status dot diameter — 8px"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"button": {
|
|
3
|
+
"sm": {
|
|
4
|
+
"spacing": {
|
|
5
|
+
"horizontal": { "value": "{spacing.sm}", "type": "spacing", "$description": "Horizontal padding sm — 12px via spacing/sm" },
|
|
6
|
+
"vertical": { "value": "{spacing.xs}", "type": "spacing", "$description": "Vertical padding sm — 8px via spacing/xs" },
|
|
7
|
+
"gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Icon-label gap sm — 8px via spacing/xs" }
|
|
8
|
+
},
|
|
9
|
+
"radius": { "value": "{radius.sm}", "type": "borderRadius", "$description": "Corner radius sm — 4px via radius/sm" }
|
|
10
|
+
},
|
|
11
|
+
"md": {
|
|
12
|
+
"spacing": {
|
|
13
|
+
"horizontal": { "value": "{spacing.md}", "type": "spacing", "$description": "Horizontal padding md — 16px via spacing/md" },
|
|
14
|
+
"vertical": { "value": "{spacing.xs}", "type": "spacing", "$description": "Vertical padding md — 8px via spacing/xs" },
|
|
15
|
+
"gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Icon-label gap md — 8px via spacing/xs" }
|
|
16
|
+
},
|
|
17
|
+
"radius": { "value": "{radius.md}", "type": "borderRadius", "$description": "Corner radius md — 8px via radius/md" }
|
|
18
|
+
},
|
|
19
|
+
"lg": {
|
|
20
|
+
"spacing": {
|
|
21
|
+
"horizontal": { "value": "{spacing.lg}", "type": "spacing", "$description": "Horizontal padding lg — 24px via spacing/lg" },
|
|
22
|
+
"vertical": { "value": "{spacing.md}", "type": "spacing", "$description": "Vertical padding lg — 16px via spacing/md" },
|
|
23
|
+
"gap": { "value": "{spacing.sm}", "type": "spacing", "$description": "Icon-label gap lg — 12px via spacing/sm" }
|
|
24
|
+
},
|
|
25
|
+
"radius": { "value": "{radius.md}", "type": "borderRadius", "$description": "Corner radius lg — 8px via radius/md" }
|
|
26
|
+
},
|
|
27
|
+
"primary": {
|
|
28
|
+
"background": {
|
|
29
|
+
"color": { "value": "{surface.brand-1.strong}", "type": "color", "$description": "Primary button background" }
|
|
30
|
+
},
|
|
31
|
+
"text": {
|
|
32
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Primary button label" }
|
|
33
|
+
},
|
|
34
|
+
"icon": {
|
|
35
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Primary button icon" }
|
|
36
|
+
},
|
|
37
|
+
"active": {
|
|
38
|
+
"background": {
|
|
39
|
+
"color": { "value": "{surface.brand-1.strongest}", "type": "color", "$description": "Primary button active/pressed background" }
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"disabled": {
|
|
43
|
+
"background": {
|
|
44
|
+
"color": { "value": "{state.disabled.bg}", "type": "color", "$description": "Primary button disabled background" }
|
|
45
|
+
},
|
|
46
|
+
"text": {
|
|
47
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Primary button disabled label" }
|
|
48
|
+
},
|
|
49
|
+
"icon": {
|
|
50
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Primary button disabled icon" }
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"loading": {
|
|
54
|
+
"background": {
|
|
55
|
+
"color": { "value": "{surface.brand-1.strong}", "type": "color", "$description": "Primary button loading background — same as default" }
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"ghost": {
|
|
60
|
+
"background": {
|
|
61
|
+
"color": { "value": "{surface.neutral.subtlest}", "type": "color", "$description": "Ghost button background" }
|
|
62
|
+
},
|
|
63
|
+
"text": {
|
|
64
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Ghost button label" }
|
|
65
|
+
},
|
|
66
|
+
"icon": {
|
|
67
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Ghost button icon" }
|
|
68
|
+
},
|
|
69
|
+
"active": {
|
|
70
|
+
"background": {
|
|
71
|
+
"color": { "value": "{surface.neutral.default}", "type": "color", "$description": "Ghost button active/pressed background" }
|
|
72
|
+
},
|
|
73
|
+
"press": {
|
|
74
|
+
"text": {
|
|
75
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Ghost button active+pressed label" }
|
|
76
|
+
},
|
|
77
|
+
"icon": {
|
|
78
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Ghost button active+pressed icon" }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"disabled": {
|
|
83
|
+
"background": {
|
|
84
|
+
"color": { "value": "{state.disabled.bg}", "type": "color", "$description": "Ghost button disabled background" }
|
|
85
|
+
},
|
|
86
|
+
"text": {
|
|
87
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Ghost button disabled label" }
|
|
88
|
+
},
|
|
89
|
+
"icon": {
|
|
90
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Ghost button disabled icon" }
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"loading": {
|
|
94
|
+
"background": {
|
|
95
|
+
"color": { "value": "{surface.transparent}", "type": "color", "$description": "Ghost button loading background — transparent to reveal spinner only" }
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"danger": {
|
|
100
|
+
"background": {
|
|
101
|
+
"color": { "value": "{surface.danger.strong}", "type": "color", "$description": "Danger button background" }
|
|
102
|
+
},
|
|
103
|
+
"text": {
|
|
104
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Danger button label" }
|
|
105
|
+
},
|
|
106
|
+
"icon": {
|
|
107
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Danger button icon" }
|
|
108
|
+
},
|
|
109
|
+
"active": {
|
|
110
|
+
"background": {
|
|
111
|
+
"color": { "value": "{surface.danger.strongest}", "type": "color", "$description": "Danger button active/pressed background" }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"disabled": {
|
|
115
|
+
"background": {
|
|
116
|
+
"color": { "value": "{state.disabled.bg}", "type": "color", "$description": "Danger button disabled background" }
|
|
117
|
+
},
|
|
118
|
+
"text": {
|
|
119
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Danger button disabled label" }
|
|
120
|
+
},
|
|
121
|
+
"icon": {
|
|
122
|
+
"color": { "value": "{state.disabled.text}", "type": "color", "$description": "Danger button disabled icon" }
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"loading": {
|
|
126
|
+
"background": {
|
|
127
|
+
"color": { "value": "{surface.danger.strong}", "type": "color", "$description": "Danger button loading background — same as default" }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"hover": {
|
|
132
|
+
"overlay": {
|
|
133
|
+
"color": { "value": "{state.hover}", "type": "color", "$description": "Hover state overlay — applied on top of any button variant" }
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"press": {
|
|
137
|
+
"overlay": {
|
|
138
|
+
"color": { "value": "{state.active}", "type": "color", "$description": "Press state overlay" }
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"active-hover": {
|
|
142
|
+
"overlay": {
|
|
143
|
+
"color": { "value": "{state.hover}", "type": "color", "$description": "Hover overlay when button is in active state" }
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"active-press": {
|
|
147
|
+
"overlay": {
|
|
148
|
+
"color": { "value": "{state.active}", "type": "color", "$description": "Press overlay when button is in active state" }
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"card": {
|
|
3
|
+
"bg": {
|
|
4
|
+
"value": "{surface.neutral.white}",
|
|
5
|
+
"type": "color",
|
|
6
|
+
"$description": "Card background"
|
|
7
|
+
},
|
|
8
|
+
"border": {
|
|
9
|
+
"value": "{border.subtle}",
|
|
10
|
+
"type": "color",
|
|
11
|
+
"$description": "Card border color"
|
|
12
|
+
},
|
|
13
|
+
"radius": {
|
|
14
|
+
"value": "{radius.lg}",
|
|
15
|
+
"type": "borderRadius",
|
|
16
|
+
"$description": "Card corner radius"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"checkbox": {
|
|
3
|
+
"size": { "value": "{spacing.md}", "type": "spacing", "$description": "Checkbox box width/height — 16px via spacing/md" },
|
|
4
|
+
"check": {
|
|
5
|
+
"size": { "value": "10", "type": "dimension", "$description": "Checkmark icon size — 10px (justified: ~60% of box; no exact semantic token between spacing/xs=8 and spacing/sm=12)" },
|
|
6
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Checkmark icon fill — inverse for contrast on brand background" }
|
|
7
|
+
},
|
|
8
|
+
"border": {
|
|
9
|
+
"width": { "value": "{border.width.sm}", "type": "borderWidth", "$description": "Box stroke width — 1px via border/width/sm" },
|
|
10
|
+
"color-default": { "value": "{border.default}", "type": "color", "$description": "Unselected border color" },
|
|
11
|
+
"color-hover": { "value": "{border.strong}", "type": "color", "$description": "Hovered border color" },
|
|
12
|
+
"color-error": { "value": "{border.danger}", "type": "color", "$description": "Error state border color" }
|
|
13
|
+
},
|
|
14
|
+
"radius": { "value": "{radius.xs}", "type": "borderRadius", "$description": "Box corner radius — 2px via radius/xs" },
|
|
15
|
+
"bg": {
|
|
16
|
+
"default": { "value": "{surface.neutral.subtlest}", "type": "color", "$description": "Unselected background" },
|
|
17
|
+
"hover": { "value": "{surface.neutral.subtle}", "type": "color", "$description": "Hovered background" },
|
|
18
|
+
"press": { "value": "{surface.neutral.default}", "type": "color", "$description": "Pressed background" },
|
|
19
|
+
"checked": { "value": "{surface.brand-1.strong}", "type": "color", "$description": "Checked fill" },
|
|
20
|
+
"checked-hover": { "value": "{surface.brand-1.bold}", "type": "color", "$description": "Checked + hovered fill" },
|
|
21
|
+
"checked-press": { "value": "{surface.brand-1.strongest}", "type": "color", "$description": "Checked + pressed fill" },
|
|
22
|
+
"disabled": { "value": "{state.disabled.bg}", "type": "color", "$description": "Disabled background" }
|
|
23
|
+
},
|
|
24
|
+
"focus-ring": {
|
|
25
|
+
"color": { "value": "{border.focus}", "type": "color", "$description": "Focus ring color" }
|
|
26
|
+
},
|
|
27
|
+
"label": {
|
|
28
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Label text color" },
|
|
29
|
+
"disabled-color":{ "value": "{state.disabled.text}", "type": "color", "$description": "Disabled label color" }
|
|
30
|
+
},
|
|
31
|
+
"gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Gap between checkbox box and label — 8px via spacing/xs" },
|
|
32
|
+
"required-color": { "value": "{text.subtle}", "type": "color", "$description": "Required asterisk color" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"image": {
|
|
3
|
+
"bg": { "value": "{surface.neutral.subtlest}", "type": "color", "$description": "Image placeholder background" },
|
|
4
|
+
"radius": { "value": "{radius.md}", "type": "borderRadius", "$description": "Image container corner radius" },
|
|
5
|
+
"selection": {
|
|
6
|
+
"bg": { "value": "{surface.neutral.white}", "type": "color", "$description": "Background behind the selection control (checkbox/radio) for contrast over the image" }
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"list-item": {
|
|
3
|
+
"bg": {
|
|
4
|
+
"default": {
|
|
5
|
+
"value": "{surface.neutral.white}",
|
|
6
|
+
"type": "color",
|
|
7
|
+
"$description": "Default background"
|
|
8
|
+
},
|
|
9
|
+
"hover": {
|
|
10
|
+
"value": "{state.hover}",
|
|
11
|
+
"type": "color",
|
|
12
|
+
"$description": "Background on hover"
|
|
13
|
+
},
|
|
14
|
+
"press": {
|
|
15
|
+
"value": "{state.active}",
|
|
16
|
+
"type": "color",
|
|
17
|
+
"$description": "Background while pressed"
|
|
18
|
+
},
|
|
19
|
+
"selected": {
|
|
20
|
+
"value": "{state.selected}",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"$description": "Selected state overlay opacity — apply over brand color via rgb(from …)"
|
|
23
|
+
},
|
|
24
|
+
"disabled": {
|
|
25
|
+
"value": "{state.disabled.bg}",
|
|
26
|
+
"type": "color",
|
|
27
|
+
"$description": "Background when disabled"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"text": {
|
|
31
|
+
"title": {
|
|
32
|
+
"value": "{text.default}",
|
|
33
|
+
"type": "color",
|
|
34
|
+
"$description": "Title text color"
|
|
35
|
+
},
|
|
36
|
+
"description": {
|
|
37
|
+
"value": "{text.subtle}",
|
|
38
|
+
"type": "color",
|
|
39
|
+
"$description": "Description text color"
|
|
40
|
+
},
|
|
41
|
+
"disabled": {
|
|
42
|
+
"value": "{state.disabled.text}",
|
|
43
|
+
"type": "color",
|
|
44
|
+
"$description": "Text color when disabled"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"icon": {
|
|
48
|
+
"color": {
|
|
49
|
+
"value": "{icon.default}",
|
|
50
|
+
"type": "color",
|
|
51
|
+
"$description": "Left icon color"
|
|
52
|
+
},
|
|
53
|
+
"size": {
|
|
54
|
+
"value": "{spacing.md}",
|
|
55
|
+
"type": "sizing",
|
|
56
|
+
"$description": "Left icon width and height"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"spacing": {
|
|
60
|
+
"padding-x": {
|
|
61
|
+
"value": "{spacing.sm}",
|
|
62
|
+
"type": "spacing",
|
|
63
|
+
"$description": "Horizontal padding (compact)"
|
|
64
|
+
},
|
|
65
|
+
"padding-y": {
|
|
66
|
+
"value": "{spacing.xs}",
|
|
67
|
+
"type": "spacing",
|
|
68
|
+
"$description": "Vertical padding (compact)"
|
|
69
|
+
},
|
|
70
|
+
"gap": {
|
|
71
|
+
"value": "{spacing.xs}",
|
|
72
|
+
"type": "spacing",
|
|
73
|
+
"$description": "Gap between icon, content and slot"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"radius": {
|
|
77
|
+
"value": "{radius.sm}",
|
|
78
|
+
"type": "borderRadius",
|
|
79
|
+
"$description": "Corner radius"
|
|
80
|
+
},
|
|
81
|
+
"min-height": {
|
|
82
|
+
"value": "40px",
|
|
83
|
+
"type": "sizing",
|
|
84
|
+
"$description": "Minimum row height — matches Figma variant height (40px)"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"radio-button": {
|
|
3
|
+
"size": { "value": "{spacing.md}", "type": "spacing", "$description": "Radio circle diameter — 16px via spacing/md" },
|
|
4
|
+
"dot": {
|
|
5
|
+
"size": { "value": "6", "type": "dimension", "$description": "Inner dot diameter — 6px (justified: no exact semantic token between spacing/xxs=4 and spacing/xs=8)" },
|
|
6
|
+
"color": { "value": "{text.inverse}", "type": "color", "$description": "Inner dot fill — inverse for contrast on brand background" }
|
|
7
|
+
},
|
|
8
|
+
"border": {
|
|
9
|
+
"width": { "value": "1.5", "type": "borderWidth", "$description": "Ring stroke width — 1.5px (justified: between border/width/sm=1 and border/width/md=2)" },
|
|
10
|
+
"color-default": { "value": "{border.default}", "type": "color", "$description": "Unselected border color" },
|
|
11
|
+
"color-hover": { "value": "{border.strong}", "type": "color", "$description": "Hovered border color" }
|
|
12
|
+
},
|
|
13
|
+
"bg": {
|
|
14
|
+
"default": { "value": "{surface.neutral.subtlest}", "type": "color", "$description": "Unselected background" },
|
|
15
|
+
"hover": { "value": "{surface.neutral.subtle}", "type": "color", "$description": "Hovered background" },
|
|
16
|
+
"press": { "value": "{surface.neutral.default}", "type": "color", "$description": "Pressed background" },
|
|
17
|
+
"selected": { "value": "{surface.brand-1.strong}", "type": "color", "$description": "Selected fill" },
|
|
18
|
+
"selected-hover": { "value": "{surface.brand-1.bold}", "type": "color", "$description": "Selected + hovered fill" },
|
|
19
|
+
"selected-press": { "value": "{surface.brand-1.strongest}","type": "color", "$description": "Selected + pressed fill" },
|
|
20
|
+
"disabled": { "value": "{state.disabled.bg}", "type": "color", "$description": "Disabled background" }
|
|
21
|
+
},
|
|
22
|
+
"focus-ring": {
|
|
23
|
+
"color": { "value": "{border.focus}", "type": "color", "$description": "Focus ring color" }
|
|
24
|
+
},
|
|
25
|
+
"label": {
|
|
26
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Label text color" },
|
|
27
|
+
"disabled-color": { "value": "{state.disabled.text}", "type": "color", "$description": "Disabled label color" }
|
|
28
|
+
},
|
|
29
|
+
"required": {
|
|
30
|
+
"color": { "value": "{text.subtle}", "type": "color", "$description": "Required asterisk color" }
|
|
31
|
+
},
|
|
32
|
+
"spacing": {
|
|
33
|
+
"gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Gap between radio control and label — 8px via spacing/xs" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"radio-group": {
|
|
37
|
+
"spacing": {
|
|
38
|
+
"gap": { "value": "{spacing.sm}", "type": "spacing", "$description": "Gap between group header and radio items" },
|
|
39
|
+
"item-gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Gap between individual radio items" },
|
|
40
|
+
"header-gap": { "value": "{spacing.xxs}", "type": "spacing", "$description": "Gap between group label and hint text" }
|
|
41
|
+
},
|
|
42
|
+
"label-color": { "value": "{text.default}", "type": "color", "$description": "Group label color" },
|
|
43
|
+
"hint-color": { "value": "{text.subtle}", "type": "color", "$description": "Group hint/helper text color" },
|
|
44
|
+
"required-color": { "value": "{text.subtle}", "type": "color", "$description": "Required asterisk color" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spinner": {
|
|
3
|
+
"sm": {
|
|
4
|
+
"size": { "value": "{spacing.md}", "type": "dimension", "$description": "Small spinner — 16px" },
|
|
5
|
+
"stroke-width": { "value": "{border.width.sm}", "type": "borderWidth","$description": "Stroke for sm spinner — 1px" }
|
|
6
|
+
},
|
|
7
|
+
"md": {
|
|
8
|
+
"size": { "value": "20", "type": "dimension", "$description": "Medium spinner — 20px (no exact token)" },
|
|
9
|
+
"stroke-width": { "value": "{border.width.md}", "type": "borderWidth","$description": "Stroke for md spinner — 2px" }
|
|
10
|
+
},
|
|
11
|
+
"lg": {
|
|
12
|
+
"size": { "value": "{spacing.lg}", "type": "dimension", "$description": "Large spinner — 24px" },
|
|
13
|
+
"stroke-width": { "value": "{border.width.md}", "type": "borderWidth","$description": "Stroke for lg spinner — 2px" }
|
|
14
|
+
},
|
|
15
|
+
"xl": {
|
|
16
|
+
"size": { "value": "{spacing.xl}", "type": "dimension", "$description": "Extra-large spinner — 32px" },
|
|
17
|
+
"stroke-width": { "value": "{border.width.md}", "type": "borderWidth","$description": "Stroke for xl spinner — 2px" }
|
|
18
|
+
},
|
|
19
|
+
"track-opacity": { "value": "0.2", "type": "opacity", "$description": "Track ring opacity — 20% so track is subtle behind the active arc" },
|
|
20
|
+
"color": {
|
|
21
|
+
"default": { "value": "{border.default}", "type": "color", "$description": "Default spinner color — neutral border" },
|
|
22
|
+
"brand": { "value": "{border.brand-1}", "type": "color", "$description": "Brand spinner color" },
|
|
23
|
+
"success": { "value": "{border.success}", "type": "color", "$description": "Success spinner color" },
|
|
24
|
+
"danger": { "value": "{border.danger}", "type": "color", "$description": "Danger spinner color" },
|
|
25
|
+
"inverse": { "value": "{border.inverse}", "type": "color", "$description": "Inverse spinner color — for dark backgrounds" }
|
|
26
|
+
},
|
|
27
|
+
"duration": { "value": "{duration.slower}", "type": "duration", "$description": "One full rotation — 500ms" },
|
|
28
|
+
"easing": { "value": "{easing.linear}", "type": "cubicBezier", "$description": "Constant-speed rotation" }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"text-input": {
|
|
3
|
+
"spacing": {
|
|
4
|
+
"padding-x": { "value": "{spacing.sm}", "type": "spacing", "$description": "Horizontal padding — 12px" },
|
|
5
|
+
"padding-y": { "value": "{spacing.xs}", "type": "spacing", "$description": "Vertical padding — ~8px (10px in component CSS; closest token)" },
|
|
6
|
+
"gap": { "value": "{spacing.xxs}", "type": "spacing", "$description": "Icon-to-text gap — 4px" },
|
|
7
|
+
"label-gap": { "value": "{spacing.xxs}", "type": "spacing", "$description": "Gap between label and input — 4px" },
|
|
8
|
+
"inner-gap": { "value": "{spacing.xs}", "type": "spacing", "$description": "Gap between prefix/suffix and input text — 8px" },
|
|
9
|
+
"error-gap": { "value": "{spacing.xxs}", "type": "spacing", "$description": "Gap between input and error message — 4px" }
|
|
10
|
+
},
|
|
11
|
+
"border-radius": { "value": "{radius.md}", "type": "borderRadius", "$description": "Input corner radius — 8px" },
|
|
12
|
+
"border": {
|
|
13
|
+
"width": { "value": "{border.width.sm}", "type": "borderWidth", "$description": "Default border width — 1px" },
|
|
14
|
+
"width-hover": { "value": "{border.width.md}", "type": "borderWidth", "$description": "Hover border width — 2px" },
|
|
15
|
+
"width-focus": { "value": "{border.width.md}", "type": "borderWidth", "$description": "Focus border width — 2px" },
|
|
16
|
+
"color": {
|
|
17
|
+
"default": { "value": "{border.default}", "type": "color", "$description": "Default border" },
|
|
18
|
+
"hover": { "value": "{border.strong}", "type": "color", "$description": "Hover border" },
|
|
19
|
+
"focus": { "value": "{border.focus}", "type": "color", "$description": "Focus border" },
|
|
20
|
+
"error": { "value": "{border.danger}", "type": "color", "$description": "Error border" },
|
|
21
|
+
"disabled": { "value": "{state.disabled.border}", "type": "color", "$description": "Disabled border" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"bg": {
|
|
25
|
+
"default": { "value": "{surface.neutral.white}", "type": "color", "$description": "Input background" },
|
|
26
|
+
"disabled": { "value": "{state.disabled.bg}", "type": "color", "$description": "Disabled input background" }
|
|
27
|
+
},
|
|
28
|
+
"label": {
|
|
29
|
+
"color": { "value": "{text.subtle}", "type": "color", "$description": "Label text" },
|
|
30
|
+
"disabled-color": { "value": "{state.disabled.text}", "type": "color", "$description": "Disabled label text" }
|
|
31
|
+
},
|
|
32
|
+
"required-color": { "value": "{text.subtlest}", "type": "color", "$description": "Required asterisk" },
|
|
33
|
+
"text": {
|
|
34
|
+
"color": { "value": "{text.default}", "type": "color", "$description": "Input text" },
|
|
35
|
+
"disabled-color": { "value": "{state.disabled.text}", "type": "color", "$description": "Disabled input text" }
|
|
36
|
+
},
|
|
37
|
+
"error": {
|
|
38
|
+
"color": { "value": "{text.danger}", "type": "color", "$description": "Error message text" },
|
|
39
|
+
"disabled-color": { "value": "{state.disabled.text}", "type": "color", "$description": "Error text in disabled state" }
|
|
40
|
+
},
|
|
41
|
+
"icon": {
|
|
42
|
+
"color": { "value": "{icon.subtle}", "type": "color", "$description": "Leading/trailing icon" },
|
|
43
|
+
"disabled-color": { "value": "{state.disabled.text}", "type": "color", "$description": "Disabled icon" },
|
|
44
|
+
"size": { "value": "20", "type": "dimension", "$description": "Icon width/height — 20px (between spacing.md=16 and spacing.lg=24)" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tooltip": {
|
|
3
|
+
"bg": {
|
|
4
|
+
"value": "{surface.neutral.strongest}",
|
|
5
|
+
"type": "color",
|
|
6
|
+
"$description": "Tooltip background — darkest neutral surface"
|
|
7
|
+
},
|
|
8
|
+
"text": {
|
|
9
|
+
"value": "{text.inverse}",
|
|
10
|
+
"type": "color",
|
|
11
|
+
"$description": "Tooltip label — inverse text for dark background"
|
|
12
|
+
},
|
|
13
|
+
"arrow": {
|
|
14
|
+
"value": "{surface.neutral.strongest}",
|
|
15
|
+
"type": "color",
|
|
16
|
+
"$description": "Tooltip arrow — matches background"
|
|
17
|
+
},
|
|
18
|
+
"radius": {
|
|
19
|
+
"value": "{radius.md}",
|
|
20
|
+
"type": "borderRadius",
|
|
21
|
+
"$description": "Corner radius — matches radius/md"
|
|
22
|
+
},
|
|
23
|
+
"padding-x": {
|
|
24
|
+
"value": "{spacing.sm}",
|
|
25
|
+
"type": "spacing",
|
|
26
|
+
"$description": "Horizontal padding — 12px via spacing/sm"
|
|
27
|
+
},
|
|
28
|
+
"padding-y": {
|
|
29
|
+
"value": "{spacing.xs}",
|
|
30
|
+
"type": "spacing",
|
|
31
|
+
"$description": "Vertical padding — 8px via spacing/xs"
|
|
32
|
+
},
|
|
33
|
+
"max-width": {
|
|
34
|
+
"value": "250",
|
|
35
|
+
"type": "dimension",
|
|
36
|
+
"$description": "Maximum width before text wraps"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|