@hilum/ui 0.1.1
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/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/icons.d.ts +1 -0
- package/dist/icons.js +3 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +992 -0
- package/dist/index.js +4433 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.css +265 -0
- package/dist/tokens.d.ts +189 -0
- package/dist/tokens.js +193 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +80 -0
- package/src/components/__tests__/data.test.tsx +180 -0
- package/src/components/__tests__/disclosure.test.tsx +198 -0
- package/src/components/__tests__/display.test.tsx +262 -0
- package/src/components/__tests__/feedback.test.tsx +138 -0
- package/src/components/__tests__/form.test.tsx +297 -0
- package/src/components/__tests__/layout.test.tsx +388 -0
- package/src/components/__tests__/overlay.test.tsx +90 -0
- package/src/components/__tests__/primitives.test.tsx +248 -0
- package/src/components/accordion.tsx +68 -0
- package/src/components/action-panel.tsx +112 -0
- package/src/components/activity-feed.tsx +69 -0
- package/src/components/alert-dialog.tsx +132 -0
- package/src/components/alert.tsx +44 -0
- package/src/components/aspect-ratio.tsx +19 -0
- package/src/components/avatar-stack.tsx +70 -0
- package/src/components/avatar.tsx +103 -0
- package/src/components/badge.tsx +33 -0
- package/src/components/breadcrumb.tsx +76 -0
- package/src/components/button-group.tsx +45 -0
- package/src/components/button.tsx +60 -0
- package/src/components/calendar.tsx +61 -0
- package/src/components/card-heading.tsx +60 -0
- package/src/components/card.tsx +120 -0
- package/src/components/carousel.tsx +222 -0
- package/src/components/chart.tsx +77 -0
- package/src/components/checkbox.tsx +35 -0
- package/src/components/collapsible.tsx +9 -0
- package/src/components/color-input.tsx +90 -0
- package/src/components/color-picker.tsx +111 -0
- package/src/components/combobox.tsx +207 -0
- package/src/components/command-palette.tsx +137 -0
- package/src/components/command.tsx +248 -0
- package/src/components/context-menu.tsx +201 -0
- package/src/components/data-table.tsx +151 -0
- package/src/components/date-picker.tsx +56 -0
- package/src/components/description-list.tsx +70 -0
- package/src/components/dialog.tsx +97 -0
- package/src/components/drawer.tsx +90 -0
- package/src/components/dropdown-menu.tsx +202 -0
- package/src/components/empty-state.tsx +43 -0
- package/src/components/field.tsx +45 -0
- package/src/components/grid-list.tsx +159 -0
- package/src/components/hover-card.tsx +34 -0
- package/src/components/input-group.tsx +134 -0
- package/src/components/input-number.tsx +142 -0
- package/src/components/input-otp.tsx +68 -0
- package/src/components/input.tsx +23 -0
- package/src/components/kbd.tsx +18 -0
- package/src/components/label.tsx +23 -0
- package/src/components/media-object.tsx +49 -0
- package/src/components/menubar.tsx +235 -0
- package/src/components/native-select.tsx +44 -0
- package/src/components/navigation-menu.tsx +158 -0
- package/src/components/notification.tsx +109 -0
- package/src/components/page-heading.tsx +125 -0
- package/src/components/pagination.tsx +89 -0
- package/src/components/popover.tsx +35 -0
- package/src/components/progress.tsx +23 -0
- package/src/components/property-row.tsx +56 -0
- package/src/components/radio-card.tsx +105 -0
- package/src/components/radio-group.tsx +38 -0
- package/src/components/resizable.tsx +74 -0
- package/src/components/scroll-area.tsx +42 -0
- package/src/components/section-heading.tsx +64 -0
- package/src/components/select.tsx +130 -0
- package/src/components/separator.tsx +25 -0
- package/src/components/sheet.tsx +117 -0
- package/src/components/sidebar.tsx +636 -0
- package/src/components/skeleton.tsx +14 -0
- package/src/components/slider.tsx +24 -0
- package/src/components/sonner.tsx +34 -0
- package/src/components/spinner.tsx +37 -0
- package/src/components/stacked-list.tsx +64 -0
- package/src/components/stat-card.tsx +54 -0
- package/src/components/steps.tsx +179 -0
- package/src/components/switch.tsx +33 -0
- package/src/components/table.tsx +101 -0
- package/src/components/tabs.tsx +55 -0
- package/src/components/textarea.tsx +21 -0
- package/src/components/toggle-group.tsx +49 -0
- package/src/components/toggle.tsx +66 -0
- package/src/components/tooltip.tsx +43 -0
- package/src/icons.ts +158 -0
- package/src/index.ts +84 -0
- package/src/lib/utils.ts +6 -0
- package/src/tokens/tokens.ts +194 -0
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/* Hilum UI tokens — generated by scripts/build-tokens.mjs. Do not edit by hand. */
|
|
2
|
+
|
|
3
|
+
@theme {
|
|
4
|
+
--color-taupe-50: #f9f7f5;
|
|
5
|
+
--color-taupe-100: #f2eeea;
|
|
6
|
+
--color-taupe-200: #e3dcd4;
|
|
7
|
+
--color-taupe-300: #c9beb3;
|
|
8
|
+
--color-taupe-400: #a8978a;
|
|
9
|
+
--color-taupe-500: #7d6960;
|
|
10
|
+
--color-taupe-600: #5d4e47;
|
|
11
|
+
--color-taupe-700: #4a3d38;
|
|
12
|
+
--color-taupe-800: #332924;
|
|
13
|
+
--color-taupe-900: #26181a;
|
|
14
|
+
--color-taupe-950: #160e0a;
|
|
15
|
+
--color-purple-50: #fdf0ff;
|
|
16
|
+
--color-purple-100: #f5d6ff;
|
|
17
|
+
--color-purple-200: #e8a8ff;
|
|
18
|
+
--color-purple-300: #d870f9;
|
|
19
|
+
--color-purple-400: #c840f6;
|
|
20
|
+
--color-purple-500: #c100f1;
|
|
21
|
+
--color-purple-600: #9c00c0;
|
|
22
|
+
--color-purple-700: #740092;
|
|
23
|
+
--color-purple-800: #4e0062;
|
|
24
|
+
--color-purple-900: #330040;
|
|
25
|
+
--color-purple-950: #200028;
|
|
26
|
+
--color-brand-primary: #C100F1;
|
|
27
|
+
--color-brand-secondary: #FFF5BF;
|
|
28
|
+
--color-butter-50: #ffffe8;
|
|
29
|
+
--color-butter-100: #fffad0;
|
|
30
|
+
--color-butter-200: #fff5bf;
|
|
31
|
+
--color-butter-300: #fde870;
|
|
32
|
+
--color-butter-400: #f6d42a;
|
|
33
|
+
--color-butter-500: #dab010;
|
|
34
|
+
--color-butter-600: #a88008;
|
|
35
|
+
--color-butter-700: #7c5c04;
|
|
36
|
+
--color-butter-800: #543e02;
|
|
37
|
+
--color-butter-900: #382801;
|
|
38
|
+
--color-butter-950: #221600;
|
|
39
|
+
--color-destructive: #dc2626;
|
|
40
|
+
|
|
41
|
+
--font-sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
42
|
+
--font-serif: "Instrument Serif", ui-serif, Georgia, serif;
|
|
43
|
+
--font-mono: ui-monospace, "SFMono-Regular", "Menlo", "Consolas", monospace;
|
|
44
|
+
|
|
45
|
+
--radius-base: 0.5rem;
|
|
46
|
+
--radius-sm: calc(0.5rem - 4px);
|
|
47
|
+
--radius-md: calc(0.5rem - 2px);
|
|
48
|
+
--radius-lg: 0.5rem;
|
|
49
|
+
--radius-xl: calc(0.5rem + 4px);
|
|
50
|
+
--radius-full: 9999px;
|
|
51
|
+
|
|
52
|
+
--shadow-natural: 0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06);
|
|
53
|
+
--shadow-elevated: 0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0 6px 6px -3px rgba(0, 0, 0, 0.06), 0 12px 12px -6px rgba(0, 0, 0, 0.04), 0 24px 24px -12px rgba(0, 0, 0, 0.04), 0 24px 24px 2px rgba(0, 0, 0, 0.1);
|
|
54
|
+
|
|
55
|
+
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
56
|
+
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
57
|
+
--animate-caret-blink: caret-blink 1.25s ease-out infinite;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@theme inline {
|
|
61
|
+
--color-background: var(--background);
|
|
62
|
+
--color-foreground: var(--foreground);
|
|
63
|
+
--color-card: var(--card);
|
|
64
|
+
--color-card-foreground: var(--card-foreground);
|
|
65
|
+
--color-surface: var(--surface);
|
|
66
|
+
--color-surface-foreground: var(--surface-foreground);
|
|
67
|
+
--color-border: var(--border);
|
|
68
|
+
--color-input: var(--input);
|
|
69
|
+
--color-muted: var(--muted);
|
|
70
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
71
|
+
--color-accent: var(--accent);
|
|
72
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
73
|
+
--color-primary: var(--primary);
|
|
74
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
75
|
+
--color-secondary: var(--secondary);
|
|
76
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
77
|
+
--color-destructive: var(--destructive);
|
|
78
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
79
|
+
--color-success: var(--success);
|
|
80
|
+
--color-success-foreground: var(--success-foreground);
|
|
81
|
+
--color-warning: var(--warning);
|
|
82
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
83
|
+
--color-ring: var(--ring);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:root {
|
|
87
|
+
--background: #ffffff;
|
|
88
|
+
--foreground: #26181a;
|
|
89
|
+
--card: #ffffff;
|
|
90
|
+
--card-foreground: #26181a;
|
|
91
|
+
--surface: #f9f7f5;
|
|
92
|
+
--surface-foreground: #332924;
|
|
93
|
+
--border: #f2eeea;
|
|
94
|
+
--input: #f2eeea;
|
|
95
|
+
--muted: #f9f7f5;
|
|
96
|
+
--muted-foreground: #7d6960;
|
|
97
|
+
--accent: #fdf0ff;
|
|
98
|
+
--accent-foreground: #740092;
|
|
99
|
+
--primary: #c100f1;
|
|
100
|
+
--primary-foreground: #ffffff;
|
|
101
|
+
--secondary: #f9f7f5;
|
|
102
|
+
--secondary-foreground: #4a3d38;
|
|
103
|
+
--destructive: #dc2626;
|
|
104
|
+
--destructive-foreground: #ffffff;
|
|
105
|
+
--success: #CDEA19;
|
|
106
|
+
--success-foreground: #26181a;
|
|
107
|
+
--warning: #fff5bf;
|
|
108
|
+
--warning-foreground: #26181a;
|
|
109
|
+
--ring: #c100f1;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@media (prefers-color-scheme: dark) {
|
|
113
|
+
:root:not([data-theme="light"]) {
|
|
114
|
+
--background: #160e0a;
|
|
115
|
+
--foreground: #f9f7f5;
|
|
116
|
+
--card: #26181a;
|
|
117
|
+
--card-foreground: #f9f7f5;
|
|
118
|
+
--surface: #26181a;
|
|
119
|
+
--surface-foreground: #f2eeea;
|
|
120
|
+
--border: #332924;
|
|
121
|
+
--input: #332924;
|
|
122
|
+
--muted: #26181a;
|
|
123
|
+
--muted-foreground: #a8978a;
|
|
124
|
+
--accent: #330040;
|
|
125
|
+
--accent-foreground: #f5d6ff;
|
|
126
|
+
--primary: #c100f1;
|
|
127
|
+
--primary-foreground: #ffffff;
|
|
128
|
+
--secondary: #26181a;
|
|
129
|
+
--secondary-foreground: #f2eeea;
|
|
130
|
+
--destructive: #ef4444;
|
|
131
|
+
--destructive-foreground: #ffffff;
|
|
132
|
+
--success: #CDEA19;
|
|
133
|
+
--success-foreground: #160e0a;
|
|
134
|
+
--warning: #221600;
|
|
135
|
+
--warning-foreground: #fffad0;
|
|
136
|
+
--ring: #c100f1;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
[data-theme="dark"] {
|
|
141
|
+
--background: #160e0a;
|
|
142
|
+
--foreground: #f9f7f5;
|
|
143
|
+
--card: #26181a;
|
|
144
|
+
--card-foreground: #f9f7f5;
|
|
145
|
+
--surface: #26181a;
|
|
146
|
+
--surface-foreground: #f2eeea;
|
|
147
|
+
--border: #332924;
|
|
148
|
+
--input: #332924;
|
|
149
|
+
--muted: #26181a;
|
|
150
|
+
--muted-foreground: #a8978a;
|
|
151
|
+
--accent: #330040;
|
|
152
|
+
--accent-foreground: #f5d6ff;
|
|
153
|
+
--primary: #c100f1;
|
|
154
|
+
--primary-foreground: #ffffff;
|
|
155
|
+
--secondary: #26181a;
|
|
156
|
+
--secondary-foreground: #f2eeea;
|
|
157
|
+
--destructive: #ef4444;
|
|
158
|
+
--destructive-foreground: #ffffff;
|
|
159
|
+
--success: #CDEA19;
|
|
160
|
+
--success-foreground: #160e0a;
|
|
161
|
+
--warning: #221600;
|
|
162
|
+
--warning-foreground: #fffad0;
|
|
163
|
+
--ring: #c100f1;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *, .dark, .dark *));
|
|
167
|
+
|
|
168
|
+
@utility display-xl {
|
|
169
|
+
font-family: var(--font-serif);
|
|
170
|
+
font-size: 3rem;
|
|
171
|
+
font-weight: 400;
|
|
172
|
+
line-height: 1.15;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@utility display {
|
|
176
|
+
font-family: var(--font-serif);
|
|
177
|
+
font-size: 2.25rem;
|
|
178
|
+
font-weight: 400;
|
|
179
|
+
line-height: 1.15;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@utility heading-xl {
|
|
183
|
+
font-family: var(--font-serif);
|
|
184
|
+
font-size: 1.875rem;
|
|
185
|
+
font-weight: 400;
|
|
186
|
+
line-height: 1.2;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@utility heading {
|
|
190
|
+
font-family: var(--font-serif);
|
|
191
|
+
font-size: 1.5rem;
|
|
192
|
+
font-weight: 400;
|
|
193
|
+
line-height: 1.2;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@utility subheading {
|
|
197
|
+
font-family: var(--font-serif);
|
|
198
|
+
font-size: 1.25rem;
|
|
199
|
+
font-weight: 400;
|
|
200
|
+
line-height: 1.4;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@utility body-lg {
|
|
204
|
+
font-family: var(--font-sans);
|
|
205
|
+
font-size: 1rem;
|
|
206
|
+
font-weight: 400;
|
|
207
|
+
line-height: 1.625;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@utility body {
|
|
211
|
+
font-family: var(--font-sans);
|
|
212
|
+
font-size: 0.875rem;
|
|
213
|
+
font-weight: 400;
|
|
214
|
+
line-height: 1.625;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@utility caption {
|
|
218
|
+
font-family: var(--font-sans);
|
|
219
|
+
font-size: 0.75rem;
|
|
220
|
+
font-weight: 400;
|
|
221
|
+
line-height: 1.625;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@utility caption-xs {
|
|
225
|
+
font-family: var(--font-sans);
|
|
226
|
+
font-size: 0.625rem;
|
|
227
|
+
font-weight: 400;
|
|
228
|
+
line-height: 1.625;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
@utility label {
|
|
232
|
+
font-family: var(--font-sans);
|
|
233
|
+
font-size: 0.75rem;
|
|
234
|
+
font-weight: 600;
|
|
235
|
+
line-height: 1;
|
|
236
|
+
letter-spacing: 0.1em;
|
|
237
|
+
text-transform: uppercase;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@keyframes accordion-down {
|
|
241
|
+
from { height: 0; }
|
|
242
|
+
to { height: var(--radix-accordion-content-height); }
|
|
243
|
+
}
|
|
244
|
+
@keyframes accordion-up {
|
|
245
|
+
from { height: var(--radix-accordion-content-height); }
|
|
246
|
+
to { height: 0; }
|
|
247
|
+
}
|
|
248
|
+
@keyframes caret-blink {
|
|
249
|
+
0%, 70%, 100% { opacity: 1; }
|
|
250
|
+
20%, 50% { opacity: 0; }
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
*,
|
|
254
|
+
::before,
|
|
255
|
+
::after {
|
|
256
|
+
box-sizing: border-box;
|
|
257
|
+
border-color: var(--border);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
body {
|
|
261
|
+
background-color: var(--background);
|
|
262
|
+
color: var(--foreground);
|
|
263
|
+
-webkit-font-smoothing: antialiased;
|
|
264
|
+
-moz-osx-font-smoothing: grayscale;
|
|
265
|
+
}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
declare const tokens: {
|
|
2
|
+
readonly taupe: {
|
|
3
|
+
readonly 50: "#f9f7f5";
|
|
4
|
+
readonly 100: "#f2eeea";
|
|
5
|
+
readonly 200: "#e3dcd4";
|
|
6
|
+
readonly 300: "#c9beb3";
|
|
7
|
+
readonly 400: "#a8978a";
|
|
8
|
+
readonly 500: "#7d6960";
|
|
9
|
+
readonly 600: "#5d4e47";
|
|
10
|
+
readonly 700: "#4a3d38";
|
|
11
|
+
readonly 800: "#332924";
|
|
12
|
+
readonly 900: "#26181a";
|
|
13
|
+
readonly 950: "#160e0a";
|
|
14
|
+
};
|
|
15
|
+
readonly butter: {
|
|
16
|
+
readonly 50: "#ffffe8";
|
|
17
|
+
readonly 100: "#fffad0";
|
|
18
|
+
readonly 200: "#fff5bf";
|
|
19
|
+
readonly 300: "#fde870";
|
|
20
|
+
readonly 400: "#f6d42a";
|
|
21
|
+
readonly 500: "#dab010";
|
|
22
|
+
readonly 600: "#a88008";
|
|
23
|
+
readonly 700: "#7c5c04";
|
|
24
|
+
readonly 800: "#543e02";
|
|
25
|
+
readonly 900: "#382801";
|
|
26
|
+
readonly 950: "#221600";
|
|
27
|
+
};
|
|
28
|
+
readonly purple: {
|
|
29
|
+
readonly 50: "#fdf0ff";
|
|
30
|
+
readonly 100: "#f5d6ff";
|
|
31
|
+
readonly 200: "#e8a8ff";
|
|
32
|
+
readonly 300: "#d870f9";
|
|
33
|
+
readonly 400: "#c840f6";
|
|
34
|
+
readonly 500: "#c100f1";
|
|
35
|
+
readonly 600: "#9c00c0";
|
|
36
|
+
readonly 700: "#740092";
|
|
37
|
+
readonly 800: "#4e0062";
|
|
38
|
+
readonly 900: "#330040";
|
|
39
|
+
readonly 950: "#200028";
|
|
40
|
+
};
|
|
41
|
+
readonly brand: {
|
|
42
|
+
readonly primary: "#C100F1";
|
|
43
|
+
readonly secondary: "#FFF5BF";
|
|
44
|
+
};
|
|
45
|
+
readonly destructive: "#dc2626";
|
|
46
|
+
readonly semantic: {
|
|
47
|
+
readonly light: {
|
|
48
|
+
readonly background: "#ffffff";
|
|
49
|
+
readonly foreground: "#26181a";
|
|
50
|
+
readonly card: "#ffffff";
|
|
51
|
+
readonly cardForeground: "#26181a";
|
|
52
|
+
readonly surface: "#f9f7f5";
|
|
53
|
+
readonly surfaceForeground: "#332924";
|
|
54
|
+
readonly border: "#f2eeea";
|
|
55
|
+
readonly input: "#f2eeea";
|
|
56
|
+
readonly muted: "#f9f7f5";
|
|
57
|
+
readonly mutedForeground: "#7d6960";
|
|
58
|
+
readonly accent: "#fdf0ff";
|
|
59
|
+
readonly accentForeground: "#740092";
|
|
60
|
+
readonly primary: "#c100f1";
|
|
61
|
+
readonly primaryForeground: "#ffffff";
|
|
62
|
+
readonly secondary: "#f9f7f5";
|
|
63
|
+
readonly secondaryForeground: "#4a3d38";
|
|
64
|
+
readonly destructive: "#dc2626";
|
|
65
|
+
readonly destructiveForeground: "#ffffff";
|
|
66
|
+
readonly success: "#CDEA19";
|
|
67
|
+
readonly successForeground: "#26181a";
|
|
68
|
+
readonly warning: "#fff5bf";
|
|
69
|
+
readonly warningForeground: "#26181a";
|
|
70
|
+
readonly ring: "#c100f1";
|
|
71
|
+
};
|
|
72
|
+
readonly dark: {
|
|
73
|
+
readonly background: "#160e0a";
|
|
74
|
+
readonly foreground: "#f9f7f5";
|
|
75
|
+
readonly card: "#26181a";
|
|
76
|
+
readonly cardForeground: "#f9f7f5";
|
|
77
|
+
readonly surface: "#26181a";
|
|
78
|
+
readonly surfaceForeground: "#f2eeea";
|
|
79
|
+
readonly border: "#332924";
|
|
80
|
+
readonly input: "#332924";
|
|
81
|
+
readonly muted: "#26181a";
|
|
82
|
+
readonly mutedForeground: "#a8978a";
|
|
83
|
+
readonly accent: "#330040";
|
|
84
|
+
readonly accentForeground: "#f5d6ff";
|
|
85
|
+
readonly primary: "#c100f1";
|
|
86
|
+
readonly primaryForeground: "#ffffff";
|
|
87
|
+
readonly secondary: "#26181a";
|
|
88
|
+
readonly secondaryForeground: "#f2eeea";
|
|
89
|
+
readonly destructive: "#ef4444";
|
|
90
|
+
readonly destructiveForeground: "#ffffff";
|
|
91
|
+
readonly success: "#CDEA19";
|
|
92
|
+
readonly successForeground: "#160e0a";
|
|
93
|
+
readonly warning: "#221600";
|
|
94
|
+
readonly warningForeground: "#fffad0";
|
|
95
|
+
readonly ring: "#c100f1";
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
readonly fontFamily: {
|
|
99
|
+
readonly sans: "Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif";
|
|
100
|
+
readonly serif: "\"Instrument Serif\", ui-serif, Georgia, serif";
|
|
101
|
+
readonly mono: "ui-monospace, \"SFMono-Regular\", \"Menlo\", \"Consolas\", monospace";
|
|
102
|
+
};
|
|
103
|
+
/** Type scale utilities — emitted as Tailwind v4 `@utility` blocks. */
|
|
104
|
+
readonly typeScale: {
|
|
105
|
+
readonly "display-xl": {
|
|
106
|
+
readonly family: "serif";
|
|
107
|
+
readonly size: "3rem";
|
|
108
|
+
readonly weight: 400;
|
|
109
|
+
readonly lineHeight: "1.15";
|
|
110
|
+
};
|
|
111
|
+
readonly display: {
|
|
112
|
+
readonly family: "serif";
|
|
113
|
+
readonly size: "2.25rem";
|
|
114
|
+
readonly weight: 400;
|
|
115
|
+
readonly lineHeight: "1.15";
|
|
116
|
+
};
|
|
117
|
+
readonly "heading-xl": {
|
|
118
|
+
readonly family: "serif";
|
|
119
|
+
readonly size: "1.875rem";
|
|
120
|
+
readonly weight: 400;
|
|
121
|
+
readonly lineHeight: "1.2";
|
|
122
|
+
};
|
|
123
|
+
readonly heading: {
|
|
124
|
+
readonly family: "serif";
|
|
125
|
+
readonly size: "1.5rem";
|
|
126
|
+
readonly weight: 400;
|
|
127
|
+
readonly lineHeight: "1.2";
|
|
128
|
+
};
|
|
129
|
+
readonly subheading: {
|
|
130
|
+
readonly family: "serif";
|
|
131
|
+
readonly size: "1.25rem";
|
|
132
|
+
readonly weight: 400;
|
|
133
|
+
readonly lineHeight: "1.4";
|
|
134
|
+
};
|
|
135
|
+
readonly "body-lg": {
|
|
136
|
+
readonly family: "sans";
|
|
137
|
+
readonly size: "1rem";
|
|
138
|
+
readonly weight: 400;
|
|
139
|
+
readonly lineHeight: "1.625";
|
|
140
|
+
};
|
|
141
|
+
readonly body: {
|
|
142
|
+
readonly family: "sans";
|
|
143
|
+
readonly size: "0.875rem";
|
|
144
|
+
readonly weight: 400;
|
|
145
|
+
readonly lineHeight: "1.625";
|
|
146
|
+
};
|
|
147
|
+
readonly caption: {
|
|
148
|
+
readonly family: "sans";
|
|
149
|
+
readonly size: "0.75rem";
|
|
150
|
+
readonly weight: 400;
|
|
151
|
+
readonly lineHeight: "1.625";
|
|
152
|
+
};
|
|
153
|
+
readonly "caption-xs": {
|
|
154
|
+
readonly family: "sans";
|
|
155
|
+
readonly size: "0.625rem";
|
|
156
|
+
readonly weight: 400;
|
|
157
|
+
readonly lineHeight: "1.625";
|
|
158
|
+
};
|
|
159
|
+
readonly label: {
|
|
160
|
+
readonly family: "sans";
|
|
161
|
+
readonly size: "0.75rem";
|
|
162
|
+
readonly weight: 600;
|
|
163
|
+
readonly lineHeight: "1";
|
|
164
|
+
readonly letterSpacing: "0.1em";
|
|
165
|
+
readonly textTransform: "uppercase";
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
readonly radius: {
|
|
169
|
+
readonly base: "0.5rem";
|
|
170
|
+
readonly sm: "calc(0.5rem - 4px)";
|
|
171
|
+
readonly md: "calc(0.5rem - 2px)";
|
|
172
|
+
readonly lg: "0.5rem";
|
|
173
|
+
readonly xl: "calc(0.5rem + 4px)";
|
|
174
|
+
readonly full: "9999px";
|
|
175
|
+
};
|
|
176
|
+
readonly shadow: {
|
|
177
|
+
readonly natural: "0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06)";
|
|
178
|
+
readonly elevated: "0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0 6px 6px -3px rgba(0, 0, 0, 0.06), 0 12px 12px -6px rgba(0, 0, 0, 0.04), 0 24px 24px -12px rgba(0, 0, 0, 0.04), 0 24px 24px 2px rgba(0, 0, 0, 0.1)";
|
|
179
|
+
};
|
|
180
|
+
readonly animation: {
|
|
181
|
+
readonly "accordion-down": "accordion-down 0.2s ease-out";
|
|
182
|
+
readonly "accordion-up": "accordion-up 0.2s ease-out";
|
|
183
|
+
readonly "caret-blink": "caret-blink 1.25s ease-out infinite";
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
type Tokens = typeof tokens;
|
|
187
|
+
type SemanticTokens = typeof tokens.semantic.light;
|
|
188
|
+
|
|
189
|
+
export { type SemanticTokens, type Tokens, tokens };
|
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// src/tokens/tokens.ts
|
|
2
|
+
var tokens = {
|
|
3
|
+
/* ============================================================== *
|
|
4
|
+
* PALETTE — concrete colors *
|
|
5
|
+
* ============================================================== */
|
|
6
|
+
taupe: {
|
|
7
|
+
50: "#f9f7f5",
|
|
8
|
+
100: "#f2eeea",
|
|
9
|
+
200: "#e3dcd4",
|
|
10
|
+
300: "#c9beb3",
|
|
11
|
+
400: "#a8978a",
|
|
12
|
+
500: "#7d6960",
|
|
13
|
+
600: "#5d4e47",
|
|
14
|
+
700: "#4a3d38",
|
|
15
|
+
800: "#332924",
|
|
16
|
+
900: "#26181a",
|
|
17
|
+
950: "#160e0a"
|
|
18
|
+
},
|
|
19
|
+
// Pale lemon — anchor: butter-200 = #FFF5BF
|
|
20
|
+
butter: {
|
|
21
|
+
50: "#ffffe8",
|
|
22
|
+
100: "#fffad0",
|
|
23
|
+
200: "#fff5bf",
|
|
24
|
+
300: "#fde870",
|
|
25
|
+
400: "#f6d42a",
|
|
26
|
+
500: "#dab010",
|
|
27
|
+
600: "#a88008",
|
|
28
|
+
700: "#7c5c04",
|
|
29
|
+
800: "#543e02",
|
|
30
|
+
900: "#382801",
|
|
31
|
+
950: "#221600"
|
|
32
|
+
},
|
|
33
|
+
// Vivid purple — anchor: purple-500 = #C100F1 (brand.primary)
|
|
34
|
+
purple: {
|
|
35
|
+
50: "#fdf0ff",
|
|
36
|
+
100: "#f5d6ff",
|
|
37
|
+
200: "#e8a8ff",
|
|
38
|
+
300: "#d870f9",
|
|
39
|
+
400: "#c840f6",
|
|
40
|
+
500: "#c100f1",
|
|
41
|
+
600: "#9c00c0",
|
|
42
|
+
700: "#740092",
|
|
43
|
+
800: "#4e0062",
|
|
44
|
+
900: "#330040",
|
|
45
|
+
950: "#200028"
|
|
46
|
+
},
|
|
47
|
+
// Legacy functional colors — used by components not yet migrated to the new palette.
|
|
48
|
+
brand: {
|
|
49
|
+
primary: "#C100F1",
|
|
50
|
+
// purple-500
|
|
51
|
+
secondary: "#FFF5BF"
|
|
52
|
+
// butter-200
|
|
53
|
+
},
|
|
54
|
+
destructive: "#dc2626",
|
|
55
|
+
// red-600
|
|
56
|
+
/* ============================================================== *
|
|
57
|
+
* SEMANTIC — what components reference *
|
|
58
|
+
* ============================================================== */
|
|
59
|
+
semantic: {
|
|
60
|
+
light: {
|
|
61
|
+
background: "#ffffff",
|
|
62
|
+
foreground: "#26181a",
|
|
63
|
+
// taupe-900
|
|
64
|
+
card: "#ffffff",
|
|
65
|
+
cardForeground: "#26181a",
|
|
66
|
+
surface: "#f9f7f5",
|
|
67
|
+
// taupe-50
|
|
68
|
+
surfaceForeground: "#332924",
|
|
69
|
+
// taupe-800
|
|
70
|
+
border: "#f2eeea",
|
|
71
|
+
// taupe-100
|
|
72
|
+
input: "#f2eeea",
|
|
73
|
+
muted: "#f9f7f5",
|
|
74
|
+
mutedForeground: "#7d6960",
|
|
75
|
+
// taupe-500
|
|
76
|
+
accent: "#fdf0ff",
|
|
77
|
+
// purple-50
|
|
78
|
+
accentForeground: "#740092",
|
|
79
|
+
// purple-700
|
|
80
|
+
primary: "#c100f1",
|
|
81
|
+
// purple-500 = brand.primary
|
|
82
|
+
primaryForeground: "#ffffff",
|
|
83
|
+
secondary: "#f9f7f5",
|
|
84
|
+
// taupe-50
|
|
85
|
+
secondaryForeground: "#4a3d38",
|
|
86
|
+
// taupe-700
|
|
87
|
+
destructive: "#dc2626",
|
|
88
|
+
destructiveForeground: "#ffffff",
|
|
89
|
+
success: "#CDEA19",
|
|
90
|
+
// lime — functional semantic only
|
|
91
|
+
successForeground: "#26181a",
|
|
92
|
+
warning: "#fff5bf",
|
|
93
|
+
// butter-200 = brand.secondary
|
|
94
|
+
warningForeground: "#26181a",
|
|
95
|
+
// taupe-900
|
|
96
|
+
ring: "#c100f1"
|
|
97
|
+
// purple-500 = brand.primary
|
|
98
|
+
},
|
|
99
|
+
dark: {
|
|
100
|
+
background: "#160e0a",
|
|
101
|
+
// taupe-950
|
|
102
|
+
foreground: "#f9f7f5",
|
|
103
|
+
// taupe-50
|
|
104
|
+
card: "#26181a",
|
|
105
|
+
// taupe-900
|
|
106
|
+
cardForeground: "#f9f7f5",
|
|
107
|
+
surface: "#26181a",
|
|
108
|
+
surfaceForeground: "#f2eeea",
|
|
109
|
+
border: "#332924",
|
|
110
|
+
// taupe-800
|
|
111
|
+
input: "#332924",
|
|
112
|
+
muted: "#26181a",
|
|
113
|
+
mutedForeground: "#a8978a",
|
|
114
|
+
// taupe-400
|
|
115
|
+
accent: "#330040",
|
|
116
|
+
// purple-900
|
|
117
|
+
accentForeground: "#f5d6ff",
|
|
118
|
+
// purple-100
|
|
119
|
+
primary: "#c100f1",
|
|
120
|
+
// purple-500 — brand stays consistent (D8)
|
|
121
|
+
primaryForeground: "#ffffff",
|
|
122
|
+
secondary: "#26181a",
|
|
123
|
+
secondaryForeground: "#f2eeea",
|
|
124
|
+
destructive: "#ef4444",
|
|
125
|
+
// red-500 (slightly lighter for dark)
|
|
126
|
+
destructiveForeground: "#ffffff",
|
|
127
|
+
success: "#CDEA19",
|
|
128
|
+
// lime — functional semantic only
|
|
129
|
+
successForeground: "#160e0a",
|
|
130
|
+
warning: "#221600",
|
|
131
|
+
// butter-950 surface
|
|
132
|
+
warningForeground: "#fffad0",
|
|
133
|
+
// butter-100
|
|
134
|
+
ring: "#c100f1"
|
|
135
|
+
// purple-500 = brand.primary
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
/* ============================================================== *
|
|
139
|
+
* TYPOGRAPHY *
|
|
140
|
+
* ============================================================== */
|
|
141
|
+
fontFamily: {
|
|
142
|
+
sans: 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
143
|
+
serif: '"Instrument Serif", ui-serif, Georgia, serif',
|
|
144
|
+
mono: 'ui-monospace, "SFMono-Regular", "Menlo", "Consolas", monospace'
|
|
145
|
+
},
|
|
146
|
+
/** Type scale utilities — emitted as Tailwind v4 `@utility` blocks. */
|
|
147
|
+
typeScale: {
|
|
148
|
+
"display-xl": { family: "serif", size: "3rem", weight: 400, lineHeight: "1.15" },
|
|
149
|
+
display: { family: "serif", size: "2.25rem", weight: 400, lineHeight: "1.15" },
|
|
150
|
+
"heading-xl": { family: "serif", size: "1.875rem", weight: 400, lineHeight: "1.2" },
|
|
151
|
+
heading: { family: "serif", size: "1.5rem", weight: 400, lineHeight: "1.2" },
|
|
152
|
+
subheading: { family: "serif", size: "1.25rem", weight: 400, lineHeight: "1.4" },
|
|
153
|
+
"body-lg": { family: "sans", size: "1rem", weight: 400, lineHeight: "1.625" },
|
|
154
|
+
body: { family: "sans", size: "0.875rem", weight: 400, lineHeight: "1.625" },
|
|
155
|
+
caption: { family: "sans", size: "0.75rem", weight: 400, lineHeight: "1.625" },
|
|
156
|
+
"caption-xs": { family: "sans", size: "0.625rem", weight: 400, lineHeight: "1.625" },
|
|
157
|
+
label: {
|
|
158
|
+
family: "sans",
|
|
159
|
+
size: "0.75rem",
|
|
160
|
+
weight: 600,
|
|
161
|
+
lineHeight: "1",
|
|
162
|
+
letterSpacing: "0.1em",
|
|
163
|
+
textTransform: "uppercase"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
/* ============================================================== *
|
|
167
|
+
* GEOMETRY *
|
|
168
|
+
* ============================================================== */
|
|
169
|
+
radius: {
|
|
170
|
+
base: "0.5rem",
|
|
171
|
+
sm: "calc(0.5rem - 4px)",
|
|
172
|
+
md: "calc(0.5rem - 2px)",
|
|
173
|
+
lg: "0.5rem",
|
|
174
|
+
xl: "calc(0.5rem + 4px)",
|
|
175
|
+
full: "9999px"
|
|
176
|
+
},
|
|
177
|
+
shadow: {
|
|
178
|
+
natural: "0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06)",
|
|
179
|
+
elevated: "0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0 6px 6px -3px rgba(0, 0, 0, 0.06), 0 12px 12px -6px rgba(0, 0, 0, 0.04), 0 24px 24px -12px rgba(0, 0, 0, 0.04), 0 24px 24px 2px rgba(0, 0, 0, 0.1)"
|
|
180
|
+
},
|
|
181
|
+
/* ============================================================== *
|
|
182
|
+
* ANIMATION *
|
|
183
|
+
* ============================================================== */
|
|
184
|
+
animation: {
|
|
185
|
+
"accordion-down": "accordion-down 0.2s ease-out",
|
|
186
|
+
"accordion-up": "accordion-up 0.2s ease-out",
|
|
187
|
+
"caret-blink": "caret-blink 1.25s ease-out infinite"
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export { tokens };
|
|
192
|
+
//# sourceMappingURL=tokens.js.map
|
|
193
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/tokens.ts"],"names":[],"mappings":"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","file":"tokens.js","sourcesContent":["// @hilum/ui/tokens — JS-first design tokens (D6).\n//\n// This module is the single source of truth for the Hilum visual identity.\n// A build step (scripts/build-tokens.mjs) reads the compiled output of this\n// file and emits dist/tokens.css for consumers to `@import`.\n//\n// Brand model: D8 — fully fixed. No per-app overrides.\n// Color modes: D7 — light + dark, both auto (`prefers-color-scheme`) and\n// explicit via `[data-theme]`.\n//\n// Core brand colors:\n// brand.primary #C100F1 — vivid purple — purple-500 on the scale below\n// brand.secondary #FFF5BF — pale lemon — butter-200 on the scale below\n//\n// taupe — neutral spine for text, borders, and structure (unchanged)\n\nexport const tokens = {\n /* ============================================================== *\n * PALETTE — concrete colors *\n * ============================================================== */\n\n taupe: {\n 50: \"#f9f7f5\",\n 100: \"#f2eeea\",\n 200: \"#e3dcd4\",\n 300: \"#c9beb3\",\n 400: \"#a8978a\",\n 500: \"#7d6960\",\n 600: \"#5d4e47\",\n 700: \"#4a3d38\",\n 800: \"#332924\",\n 900: \"#26181a\",\n 950: \"#160e0a\",\n },\n\n // Pale lemon — anchor: butter-200 = #FFF5BF\n butter: {\n 50: \"#ffffe8\",\n 100: \"#fffad0\",\n 200: \"#fff5bf\",\n 300: \"#fde870\",\n 400: \"#f6d42a\",\n 500: \"#dab010\",\n 600: \"#a88008\",\n 700: \"#7c5c04\",\n 800: \"#543e02\",\n 900: \"#382801\",\n 950: \"#221600\",\n },\n\n // Vivid purple — anchor: purple-500 = #C100F1 (brand.primary)\n purple: {\n 50: \"#fdf0ff\",\n 100: \"#f5d6ff\",\n 200: \"#e8a8ff\",\n 300: \"#d870f9\",\n 400: \"#c840f6\",\n 500: \"#c100f1\",\n 600: \"#9c00c0\",\n 700: \"#740092\",\n 800: \"#4e0062\",\n 900: \"#330040\",\n 950: \"#200028\",\n },\n\n // Legacy functional colors — used by components not yet migrated to the new palette.\n brand: {\n primary: \"#C100F1\", // purple-500\n secondary: \"#FFF5BF\", // butter-200\n },\n\n destructive: \"#dc2626\", // red-600\n\n /* ============================================================== *\n * SEMANTIC — what components reference *\n * ============================================================== */\n\n semantic: {\n light: {\n background: \"#ffffff\",\n foreground: \"#26181a\", // taupe-900\n card: \"#ffffff\",\n cardForeground: \"#26181a\",\n surface: \"#f9f7f5\", // taupe-50\n surfaceForeground: \"#332924\", // taupe-800\n border: \"#f2eeea\", // taupe-100\n input: \"#f2eeea\",\n muted: \"#f9f7f5\",\n mutedForeground: \"#7d6960\", // taupe-500\n accent: \"#fdf0ff\", // purple-50\n accentForeground: \"#740092\", // purple-700\n primary: \"#c100f1\", // purple-500 = brand.primary\n primaryForeground: \"#ffffff\",\n secondary: \"#f9f7f5\", // taupe-50\n secondaryForeground: \"#4a3d38\", // taupe-700\n destructive: \"#dc2626\",\n destructiveForeground: \"#ffffff\",\n success: \"#CDEA19\", // lime — functional semantic only\n successForeground: \"#26181a\",\n warning: \"#fff5bf\", // butter-200 = brand.secondary\n warningForeground: \"#26181a\", // taupe-900\n ring: \"#c100f1\", // purple-500 = brand.primary\n },\n dark: {\n background: \"#160e0a\", // taupe-950\n foreground: \"#f9f7f5\", // taupe-50\n card: \"#26181a\", // taupe-900\n cardForeground: \"#f9f7f5\",\n surface: \"#26181a\",\n surfaceForeground: \"#f2eeea\",\n border: \"#332924\", // taupe-800\n input: \"#332924\",\n muted: \"#26181a\",\n mutedForeground: \"#a8978a\", // taupe-400\n accent: \"#330040\", // purple-900\n accentForeground: \"#f5d6ff\", // purple-100\n primary: \"#c100f1\", // purple-500 — brand stays consistent (D8)\n primaryForeground: \"#ffffff\",\n secondary: \"#26181a\",\n secondaryForeground: \"#f2eeea\",\n destructive: \"#ef4444\", // red-500 (slightly lighter for dark)\n destructiveForeground: \"#ffffff\",\n success: \"#CDEA19\", // lime — functional semantic only\n successForeground: \"#160e0a\",\n warning: \"#221600\", // butter-950 surface\n warningForeground: \"#fffad0\", // butter-100\n ring: \"#c100f1\", // purple-500 = brand.primary\n },\n },\n\n /* ============================================================== *\n * TYPOGRAPHY *\n * ============================================================== */\n\n fontFamily: {\n sans: 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n serif: '\"Instrument Serif\", ui-serif, Georgia, serif',\n mono: 'ui-monospace, \"SFMono-Regular\", \"Menlo\", \"Consolas\", monospace',\n },\n\n /** Type scale utilities — emitted as Tailwind v4 `@utility` blocks. */\n typeScale: {\n \"display-xl\": { family: \"serif\", size: \"3rem\", weight: 400, lineHeight: \"1.15\" },\n display: { family: \"serif\", size: \"2.25rem\", weight: 400, lineHeight: \"1.15\" },\n \"heading-xl\": { family: \"serif\", size: \"1.875rem\", weight: 400, lineHeight: \"1.2\" },\n heading: { family: \"serif\", size: \"1.5rem\", weight: 400, lineHeight: \"1.2\" },\n subheading: { family: \"serif\", size: \"1.25rem\", weight: 400, lineHeight: \"1.4\" },\n \"body-lg\": { family: \"sans\", size: \"1rem\", weight: 400, lineHeight: \"1.625\" },\n body: { family: \"sans\", size: \"0.875rem\", weight: 400, lineHeight: \"1.625\" },\n caption: { family: \"sans\", size: \"0.75rem\", weight: 400, lineHeight: \"1.625\" },\n \"caption-xs\": { family: \"sans\", size: \"0.625rem\", weight: 400, lineHeight: \"1.625\" },\n label: {\n family: \"sans\",\n size: \"0.75rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n },\n\n /* ============================================================== *\n * GEOMETRY *\n * ============================================================== */\n\n radius: {\n base: \"0.5rem\",\n sm: \"calc(0.5rem - 4px)\",\n md: \"calc(0.5rem - 2px)\",\n lg: \"0.5rem\",\n xl: \"calc(0.5rem + 4px)\",\n full: \"9999px\",\n },\n\n shadow: {\n natural:\n \"0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06)\",\n elevated:\n \"0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0 6px 6px -3px rgba(0, 0, 0, 0.06), 0 12px 12px -6px rgba(0, 0, 0, 0.04), 0 24px 24px -12px rgba(0, 0, 0, 0.04), 0 24px 24px 2px rgba(0, 0, 0, 0.1)\",\n },\n\n /* ============================================================== *\n * ANIMATION *\n * ============================================================== */\n\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n \"caret-blink\": \"caret-blink 1.25s ease-out infinite\",\n },\n} as const;\n\nexport type Tokens = typeof tokens;\nexport type SemanticTokens = typeof tokens.semantic.light;\n"]}
|