@hanzo/design 0.1.0 → 0.2.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 +24 -1
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/tokens.gen.d.ts +413 -0
- package/dist/tokens.gen.d.ts.map +1 -0
- package/dist/tokens.gen.js +414 -0
- package/package.json +19 -2
- package/src/index.ts +47 -0
- package/src/tokens.gen.ts +428 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/gen-tokens.mjs from tokens/*.css — DO NOT EDIT.
|
|
2
|
+
// Edit the token in tokens/<group>.css and re-run `npm run gen`.
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/** colors tokens (from tokens/colors.css). Values are raw CSS. */
|
|
5
|
+
export const colors = {
|
|
6
|
+
'neutral-50': '#FAFAFA',
|
|
7
|
+
'neutral-100': '#F5F5F5',
|
|
8
|
+
'neutral-200': '#E5E5E5',
|
|
9
|
+
'neutral-300': '#D4D4D4',
|
|
10
|
+
'neutral-400': '#A3A3A3',
|
|
11
|
+
'neutral-500': '#737373',
|
|
12
|
+
'neutral-600': '#525252',
|
|
13
|
+
'neutral-700': '#404040',
|
|
14
|
+
'neutral-800': '#262626',
|
|
15
|
+
'neutral-900': '#171717',
|
|
16
|
+
'neutral-950': '#0A0A0A',
|
|
17
|
+
'pure-black': '#000000',
|
|
18
|
+
'pure-white': '#FFFFFF',
|
|
19
|
+
'hanzo-black': '#0A0A0B',
|
|
20
|
+
'hanzo-white': '#FFFFFF',
|
|
21
|
+
'white-05': 'rgb(255 255 255 / .05)',
|
|
22
|
+
'white-10': 'rgb(255 255 255 / .10)',
|
|
23
|
+
'white-15': 'rgb(255 255 255 / .15)',
|
|
24
|
+
'white-20': 'rgb(255 255 255 / .20)',
|
|
25
|
+
'white-30': 'rgb(255 255 255 / .30)',
|
|
26
|
+
'white-40': 'rgb(255 255 255 / .40)',
|
|
27
|
+
'white-60': 'rgb(255 255 255 / .60)',
|
|
28
|
+
'white-80': 'rgb(255 255 255 / .80)',
|
|
29
|
+
'background': '#000000',
|
|
30
|
+
'foreground': '#ededed',
|
|
31
|
+
'card': '#0a0a0a',
|
|
32
|
+
'card-foreground': '#f5f5f5',
|
|
33
|
+
'popover': '#0a0a0a',
|
|
34
|
+
'popover-foreground': '#f5f5f5',
|
|
35
|
+
'primary': '#ffffff',
|
|
36
|
+
'primary-foreground': '#000000',
|
|
37
|
+
'secondary': '#1a1a1a',
|
|
38
|
+
'secondary-foreground': '#f5f5f5',
|
|
39
|
+
'muted': '#101010',
|
|
40
|
+
'muted-foreground': '#888888',
|
|
41
|
+
'accent': '#1a1a1a',
|
|
42
|
+
'accent-foreground': '#f5f5f5',
|
|
43
|
+
'destructive': '#666666',
|
|
44
|
+
'destructive-foreground': '#f5f5f5',
|
|
45
|
+
'border': '#1f1f1f',
|
|
46
|
+
'input': '#1f1f1f',
|
|
47
|
+
'ring': '#333333',
|
|
48
|
+
'brand': '#e4e4e7',
|
|
49
|
+
'brand-foreground': '#09090b',
|
|
50
|
+
'brand-muted': '#a3a3a3',
|
|
51
|
+
'black': '#000000',
|
|
52
|
+
'white': '#f5f5f5',
|
|
53
|
+
'surface-page': 'var(--background)',
|
|
54
|
+
'surface-card': 'rgb(23 23 23 / .5)',
|
|
55
|
+
'surface-card-emphasis': 'rgb(23 23 23 / .8)',
|
|
56
|
+
'surface-card-quiet': 'rgb(23 23 23 / .4)',
|
|
57
|
+
'surface-overlay': 'rgb(10 10 10 / .95)',
|
|
58
|
+
'surface-header': 'rgb(0 0 0 / .7)',
|
|
59
|
+
'border-hairline': 'var(--neutral-800)',
|
|
60
|
+
'border-card': 'var(--white-10)',
|
|
61
|
+
'border-strong': 'var(--neutral-700)',
|
|
62
|
+
'text-primary': 'var(--pure-white)',
|
|
63
|
+
'text-secondary': 'var(--white-80)',
|
|
64
|
+
'text-tertiary': 'var(--white-60)',
|
|
65
|
+
'text-helper': 'var(--muted-foreground)',
|
|
66
|
+
'text-disabled': 'var(--white-30)',
|
|
67
|
+
'state-error': '#ef4444',
|
|
68
|
+
'state-error-text': '#fca5a5',
|
|
69
|
+
'state-error-bg': 'rgb(239 68 68 / .1)',
|
|
70
|
+
'state-online': '#4ade80',
|
|
71
|
+
'state-success': '#22c55e',
|
|
72
|
+
'chrome-dot-red': 'rgb(239 68 68 / .6)',
|
|
73
|
+
'chrome-dot-yellow': 'rgb(234 179 8 / .6)',
|
|
74
|
+
'chrome-dot-green': 'rgb(34 197 94 / .6)',
|
|
75
|
+
};
|
|
76
|
+
/** typography tokens (from tokens/typography.css). Values are raw CSS. */
|
|
77
|
+
export const typography = {
|
|
78
|
+
'text-xs': '0.6875rem',
|
|
79
|
+
'leading-xs': '1rem',
|
|
80
|
+
'text-sm': '0.8125rem',
|
|
81
|
+
'leading-sm': '1.15rem',
|
|
82
|
+
'text-base': '0.875rem',
|
|
83
|
+
'leading-base': '1.35rem',
|
|
84
|
+
'text-lg': '0.9375rem',
|
|
85
|
+
'leading-lg': '1.4rem',
|
|
86
|
+
'text-xl': '1.0625rem',
|
|
87
|
+
'leading-xl': '1.55rem',
|
|
88
|
+
'text-2xl': '1.3125rem',
|
|
89
|
+
'leading-2xl': '1.7rem',
|
|
90
|
+
'text-3xl': '1.625rem',
|
|
91
|
+
'leading-3xl': '1.95rem',
|
|
92
|
+
'text-4xl': '2rem',
|
|
93
|
+
'leading-4xl': '2.25rem',
|
|
94
|
+
'text-5xl': '2.5rem',
|
|
95
|
+
'leading-5xl': '1.05',
|
|
96
|
+
'text-6xl': '3.25rem',
|
|
97
|
+
'leading-6xl': '1',
|
|
98
|
+
'text-7xl': '4rem',
|
|
99
|
+
'leading-7xl': '1',
|
|
100
|
+
'weight-normal': '400',
|
|
101
|
+
'weight-medium': '500',
|
|
102
|
+
'weight-semibold': '600',
|
|
103
|
+
'weight-bold': '700',
|
|
104
|
+
'tracking-tight': '-0.025em',
|
|
105
|
+
'tracking-normal': '0em',
|
|
106
|
+
'tracking-wide': '0.025em',
|
|
107
|
+
'tracking-widest': '0.1em',
|
|
108
|
+
'leading-none': '1',
|
|
109
|
+
'leading-tight': '1.25',
|
|
110
|
+
'leading-snug': '1.375',
|
|
111
|
+
'leading-normal': '1.5',
|
|
112
|
+
'leading-relaxed': '1.625',
|
|
113
|
+
'leading-golden': '1.618',
|
|
114
|
+
'type-hero': '600 var(--text-5xl)/1.05 var(--font-display)',
|
|
115
|
+
'type-h2': '700 var(--text-4xl)/var(--leading-4xl) var(--font-display)',
|
|
116
|
+
'type-h3': '600 var(--text-xl)/var(--leading-xl) var(--font-display)',
|
|
117
|
+
'type-lead': '400 var(--text-lg)/var(--leading-relaxed) var(--font-sans)',
|
|
118
|
+
'type-body': '400 var(--text-sm)/var(--leading-sm) var(--font-sans)',
|
|
119
|
+
'type-caption': '400 var(--text-xs)/var(--leading-xs) var(--font-sans)',
|
|
120
|
+
'type-code': '400 var(--text-sm)/var(--leading-relaxed) var(--font-mono)',
|
|
121
|
+
'type-eyebrow': '600 0.625rem/1 var(--font-sans)',
|
|
122
|
+
};
|
|
123
|
+
/** spacing tokens (from tokens/spacing.css). Values are raw CSS. */
|
|
124
|
+
export const spacing = {
|
|
125
|
+
'space-0': '0',
|
|
126
|
+
'space-1': '0.25rem',
|
|
127
|
+
'space-2': '0.5rem',
|
|
128
|
+
'space-3': '0.75rem',
|
|
129
|
+
'space-4': '1rem',
|
|
130
|
+
'space-5': '1.25rem',
|
|
131
|
+
'space-6': '1.5rem',
|
|
132
|
+
'space-8': '2rem',
|
|
133
|
+
'space-10': '2.5rem',
|
|
134
|
+
'space-12': '3rem',
|
|
135
|
+
'space-14': '3.5rem',
|
|
136
|
+
'space-16': '4rem',
|
|
137
|
+
'space-20': '5rem',
|
|
138
|
+
'space-24': '6rem',
|
|
139
|
+
'space-32': '8rem',
|
|
140
|
+
'golden-1': '0.25rem',
|
|
141
|
+
'golden-2': '0.405rem',
|
|
142
|
+
'golden-3': '0.654rem',
|
|
143
|
+
'golden-4': '1.059rem',
|
|
144
|
+
'golden-5': '1.713rem',
|
|
145
|
+
'golden-6': '2.772rem',
|
|
146
|
+
'golden-7': '4.487rem',
|
|
147
|
+
'golden-8': '7.26rem',
|
|
148
|
+
'golden-9': '11.749rem',
|
|
149
|
+
'golden-split': '38.2% 61.8%',
|
|
150
|
+
'container-max': '80rem',
|
|
151
|
+
'container-prose': '48rem',
|
|
152
|
+
'container-wide': '72rem',
|
|
153
|
+
'gutter': '1rem',
|
|
154
|
+
'gutter-sm': '1.5rem',
|
|
155
|
+
'gutter-lg': '2rem',
|
|
156
|
+
'section-y': '4rem',
|
|
157
|
+
'section-y-lg': '6rem',
|
|
158
|
+
'hero-y': '5rem',
|
|
159
|
+
'hero-y-lg': '8rem',
|
|
160
|
+
'header-height': '4rem',
|
|
161
|
+
};
|
|
162
|
+
/** radius tokens (from tokens/radius.css). Values are raw CSS. */
|
|
163
|
+
export const radius = {
|
|
164
|
+
'radius': '0.5rem',
|
|
165
|
+
'radius-sm': '0.375rem',
|
|
166
|
+
'radius-md': '0.5rem',
|
|
167
|
+
'radius-lg': '0.75rem',
|
|
168
|
+
'radius-xl': '1rem',
|
|
169
|
+
'radius-2xl': '1.5rem',
|
|
170
|
+
'radius-composer': '28px',
|
|
171
|
+
'radius-full': '9999px',
|
|
172
|
+
};
|
|
173
|
+
/** elevation tokens (from tokens/elevation.css). Values are raw CSS. */
|
|
174
|
+
export const elevation = {
|
|
175
|
+
'shadow-none': 'none',
|
|
176
|
+
'shadow-floating': '0 25px 50px -12px rgb(0 0 0 / .25)',
|
|
177
|
+
'shadow-inset-hairline': 'inset 0 0 0 1px var(--white-10)',
|
|
178
|
+
'ring-focus': '0 0 0 2px var(--ring)',
|
|
179
|
+
'glow-hero': 'radial-gradient(circle,rgb(255 255 255 / .12) 0%,transparent 68%)',
|
|
180
|
+
'glow-hero-blur': '120px',
|
|
181
|
+
'sheen-card': 'radial-gradient(120% 120% at 80% 0%,rgb(255 255 255 / .08) 0%,transparent 55%)',
|
|
182
|
+
'gradient-chrome': 'linear-gradient(to right,#ffffff,var(--white-80),var(--white-60))',
|
|
183
|
+
'gradient-chrome-2': 'linear-gradient(to right,#ffffff,var(--neutral-500))',
|
|
184
|
+
'gradient-protect': 'linear-gradient(to bottom,var(--white-10),transparent)',
|
|
185
|
+
};
|
|
186
|
+
/** motion tokens (from tokens/motion.css). Values are raw CSS. */
|
|
187
|
+
export const motion = {
|
|
188
|
+
'duration-fast': '150ms',
|
|
189
|
+
'duration-base': '300ms',
|
|
190
|
+
'duration-slow': '400ms',
|
|
191
|
+
'duration-slower': '500ms',
|
|
192
|
+
'duration-glow': '9s',
|
|
193
|
+
'ease-out': 'cubic-bezier(0,0,0.2,1)',
|
|
194
|
+
'ease-in-out': 'cubic-bezier(0.4,0,0.2,1)',
|
|
195
|
+
'stagger': '60ms',
|
|
196
|
+
'entry-rise': '16px',
|
|
197
|
+
'entry-rise-lg': '24px',
|
|
198
|
+
};
|
|
199
|
+
/** zIndex tokens (from tokens/z.css). Values are raw CSS. */
|
|
200
|
+
export const zIndex = {
|
|
201
|
+
'z-base': '0',
|
|
202
|
+
'z-raised': '10',
|
|
203
|
+
'z-sticky': '200',
|
|
204
|
+
'z-header': '300',
|
|
205
|
+
'z-dropdown': '400',
|
|
206
|
+
'z-overlay': '500',
|
|
207
|
+
'z-modal': '600',
|
|
208
|
+
'z-popover': '700',
|
|
209
|
+
'z-toast': '800',
|
|
210
|
+
};
|
|
211
|
+
/** fonts tokens (from tokens/fonts.css). Values are raw CSS. */
|
|
212
|
+
export const fonts = {
|
|
213
|
+
'font-sans': '"Geist","Geist Sans",ui-sans-serif,system-ui,sans-serif',
|
|
214
|
+
'font-display': 'var(--font-sans)',
|
|
215
|
+
'font-mono': '"Geist Mono",ui-monospace,SFMono-Regular,monospace',
|
|
216
|
+
'font-serif': 'Georgia,serif',
|
|
217
|
+
'font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
|
|
218
|
+
};
|
|
219
|
+
/** base tokens (from tokens/base.css). Values are raw CSS. */
|
|
220
|
+
export const base = {};
|
|
221
|
+
/** Every token, keyed by its literal CSS custom-property name ('--background', …). */
|
|
222
|
+
export const cssVars = {
|
|
223
|
+
'--neutral-50': '#FAFAFA',
|
|
224
|
+
'--neutral-100': '#F5F5F5',
|
|
225
|
+
'--neutral-200': '#E5E5E5',
|
|
226
|
+
'--neutral-300': '#D4D4D4',
|
|
227
|
+
'--neutral-400': '#A3A3A3',
|
|
228
|
+
'--neutral-500': '#737373',
|
|
229
|
+
'--neutral-600': '#525252',
|
|
230
|
+
'--neutral-700': '#404040',
|
|
231
|
+
'--neutral-800': '#262626',
|
|
232
|
+
'--neutral-900': '#171717',
|
|
233
|
+
'--neutral-950': '#0A0A0A',
|
|
234
|
+
'--pure-black': '#000000',
|
|
235
|
+
'--pure-white': '#FFFFFF',
|
|
236
|
+
'--hanzo-black': '#0A0A0B',
|
|
237
|
+
'--hanzo-white': '#FFFFFF',
|
|
238
|
+
'--white-05': 'rgb(255 255 255 / .05)',
|
|
239
|
+
'--white-10': 'rgb(255 255 255 / .10)',
|
|
240
|
+
'--white-15': 'rgb(255 255 255 / .15)',
|
|
241
|
+
'--white-20': 'rgb(255 255 255 / .20)',
|
|
242
|
+
'--white-30': 'rgb(255 255 255 / .30)',
|
|
243
|
+
'--white-40': 'rgb(255 255 255 / .40)',
|
|
244
|
+
'--white-60': 'rgb(255 255 255 / .60)',
|
|
245
|
+
'--white-80': 'rgb(255 255 255 / .80)',
|
|
246
|
+
'--background': '#000000',
|
|
247
|
+
'--foreground': '#ededed',
|
|
248
|
+
'--card': '#0a0a0a',
|
|
249
|
+
'--card-foreground': '#f5f5f5',
|
|
250
|
+
'--popover': '#0a0a0a',
|
|
251
|
+
'--popover-foreground': '#f5f5f5',
|
|
252
|
+
'--primary': '#ffffff',
|
|
253
|
+
'--primary-foreground': '#000000',
|
|
254
|
+
'--secondary': '#1a1a1a',
|
|
255
|
+
'--secondary-foreground': '#f5f5f5',
|
|
256
|
+
'--muted': '#101010',
|
|
257
|
+
'--muted-foreground': '#888888',
|
|
258
|
+
'--accent': '#1a1a1a',
|
|
259
|
+
'--accent-foreground': '#f5f5f5',
|
|
260
|
+
'--destructive': '#666666',
|
|
261
|
+
'--destructive-foreground': '#f5f5f5',
|
|
262
|
+
'--border': '#1f1f1f',
|
|
263
|
+
'--input': '#1f1f1f',
|
|
264
|
+
'--ring': '#333333',
|
|
265
|
+
'--brand': '#e4e4e7',
|
|
266
|
+
'--brand-foreground': '#09090b',
|
|
267
|
+
'--brand-muted': '#a3a3a3',
|
|
268
|
+
'--black': '#000000',
|
|
269
|
+
'--white': '#f5f5f5',
|
|
270
|
+
'--surface-page': 'var(--background)',
|
|
271
|
+
'--surface-card': 'rgb(23 23 23 / .5)',
|
|
272
|
+
'--surface-card-emphasis': 'rgb(23 23 23 / .8)',
|
|
273
|
+
'--surface-card-quiet': 'rgb(23 23 23 / .4)',
|
|
274
|
+
'--surface-overlay': 'rgb(10 10 10 / .95)',
|
|
275
|
+
'--surface-header': 'rgb(0 0 0 / .7)',
|
|
276
|
+
'--border-hairline': 'var(--neutral-800)',
|
|
277
|
+
'--border-card': 'var(--white-10)',
|
|
278
|
+
'--border-strong': 'var(--neutral-700)',
|
|
279
|
+
'--text-primary': 'var(--pure-white)',
|
|
280
|
+
'--text-secondary': 'var(--white-80)',
|
|
281
|
+
'--text-tertiary': 'var(--white-60)',
|
|
282
|
+
'--text-helper': 'var(--muted-foreground)',
|
|
283
|
+
'--text-disabled': 'var(--white-30)',
|
|
284
|
+
'--state-error': '#ef4444',
|
|
285
|
+
'--state-error-text': '#fca5a5',
|
|
286
|
+
'--state-error-bg': 'rgb(239 68 68 / .1)',
|
|
287
|
+
'--state-online': '#4ade80',
|
|
288
|
+
'--state-success': '#22c55e',
|
|
289
|
+
'--chrome-dot-red': 'rgb(239 68 68 / .6)',
|
|
290
|
+
'--chrome-dot-yellow': 'rgb(234 179 8 / .6)',
|
|
291
|
+
'--chrome-dot-green': 'rgb(34 197 94 / .6)',
|
|
292
|
+
'--text-xs': '0.6875rem',
|
|
293
|
+
'--leading-xs': '1rem',
|
|
294
|
+
'--text-sm': '0.8125rem',
|
|
295
|
+
'--leading-sm': '1.15rem',
|
|
296
|
+
'--text-base': '0.875rem',
|
|
297
|
+
'--leading-base': '1.35rem',
|
|
298
|
+
'--text-lg': '0.9375rem',
|
|
299
|
+
'--leading-lg': '1.4rem',
|
|
300
|
+
'--text-xl': '1.0625rem',
|
|
301
|
+
'--leading-xl': '1.55rem',
|
|
302
|
+
'--text-2xl': '1.3125rem',
|
|
303
|
+
'--leading-2xl': '1.7rem',
|
|
304
|
+
'--text-3xl': '1.625rem',
|
|
305
|
+
'--leading-3xl': '1.95rem',
|
|
306
|
+
'--text-4xl': '2rem',
|
|
307
|
+
'--leading-4xl': '2.25rem',
|
|
308
|
+
'--text-5xl': '2.5rem',
|
|
309
|
+
'--leading-5xl': '1.05',
|
|
310
|
+
'--text-6xl': '3.25rem',
|
|
311
|
+
'--leading-6xl': '1',
|
|
312
|
+
'--text-7xl': '4rem',
|
|
313
|
+
'--leading-7xl': '1',
|
|
314
|
+
'--weight-normal': '400',
|
|
315
|
+
'--weight-medium': '500',
|
|
316
|
+
'--weight-semibold': '600',
|
|
317
|
+
'--weight-bold': '700',
|
|
318
|
+
'--tracking-tight': '-0.025em',
|
|
319
|
+
'--tracking-normal': '0em',
|
|
320
|
+
'--tracking-wide': '0.025em',
|
|
321
|
+
'--tracking-widest': '0.1em',
|
|
322
|
+
'--leading-none': '1',
|
|
323
|
+
'--leading-tight': '1.25',
|
|
324
|
+
'--leading-snug': '1.375',
|
|
325
|
+
'--leading-normal': '1.5',
|
|
326
|
+
'--leading-relaxed': '1.625',
|
|
327
|
+
'--leading-golden': '1.618',
|
|
328
|
+
'--type-hero': '600 var(--text-5xl)/1.05 var(--font-display)',
|
|
329
|
+
'--type-h2': '700 var(--text-4xl)/var(--leading-4xl) var(--font-display)',
|
|
330
|
+
'--type-h3': '600 var(--text-xl)/var(--leading-xl) var(--font-display)',
|
|
331
|
+
'--type-lead': '400 var(--text-lg)/var(--leading-relaxed) var(--font-sans)',
|
|
332
|
+
'--type-body': '400 var(--text-sm)/var(--leading-sm) var(--font-sans)',
|
|
333
|
+
'--type-caption': '400 var(--text-xs)/var(--leading-xs) var(--font-sans)',
|
|
334
|
+
'--type-code': '400 var(--text-sm)/var(--leading-relaxed) var(--font-mono)',
|
|
335
|
+
'--type-eyebrow': '600 0.625rem/1 var(--font-sans)',
|
|
336
|
+
'--space-0': '0',
|
|
337
|
+
'--space-1': '0.25rem',
|
|
338
|
+
'--space-2': '0.5rem',
|
|
339
|
+
'--space-3': '0.75rem',
|
|
340
|
+
'--space-4': '1rem',
|
|
341
|
+
'--space-5': '1.25rem',
|
|
342
|
+
'--space-6': '1.5rem',
|
|
343
|
+
'--space-8': '2rem',
|
|
344
|
+
'--space-10': '2.5rem',
|
|
345
|
+
'--space-12': '3rem',
|
|
346
|
+
'--space-14': '3.5rem',
|
|
347
|
+
'--space-16': '4rem',
|
|
348
|
+
'--space-20': '5rem',
|
|
349
|
+
'--space-24': '6rem',
|
|
350
|
+
'--space-32': '8rem',
|
|
351
|
+
'--golden-1': '0.25rem',
|
|
352
|
+
'--golden-2': '0.405rem',
|
|
353
|
+
'--golden-3': '0.654rem',
|
|
354
|
+
'--golden-4': '1.059rem',
|
|
355
|
+
'--golden-5': '1.713rem',
|
|
356
|
+
'--golden-6': '2.772rem',
|
|
357
|
+
'--golden-7': '4.487rem',
|
|
358
|
+
'--golden-8': '7.26rem',
|
|
359
|
+
'--golden-9': '11.749rem',
|
|
360
|
+
'--golden-split': '38.2% 61.8%',
|
|
361
|
+
'--container-max': '80rem',
|
|
362
|
+
'--container-prose': '48rem',
|
|
363
|
+
'--container-wide': '72rem',
|
|
364
|
+
'--gutter': '1rem',
|
|
365
|
+
'--gutter-sm': '1.5rem',
|
|
366
|
+
'--gutter-lg': '2rem',
|
|
367
|
+
'--section-y': '4rem',
|
|
368
|
+
'--section-y-lg': '6rem',
|
|
369
|
+
'--hero-y': '5rem',
|
|
370
|
+
'--hero-y-lg': '8rem',
|
|
371
|
+
'--header-height': '4rem',
|
|
372
|
+
'--radius': '0.5rem',
|
|
373
|
+
'--radius-sm': '0.375rem',
|
|
374
|
+
'--radius-md': '0.5rem',
|
|
375
|
+
'--radius-lg': '0.75rem',
|
|
376
|
+
'--radius-xl': '1rem',
|
|
377
|
+
'--radius-2xl': '1.5rem',
|
|
378
|
+
'--radius-composer': '28px',
|
|
379
|
+
'--radius-full': '9999px',
|
|
380
|
+
'--shadow-none': 'none',
|
|
381
|
+
'--shadow-floating': '0 25px 50px -12px rgb(0 0 0 / .25)',
|
|
382
|
+
'--shadow-inset-hairline': 'inset 0 0 0 1px var(--white-10)',
|
|
383
|
+
'--ring-focus': '0 0 0 2px var(--ring)',
|
|
384
|
+
'--glow-hero': 'radial-gradient(circle,rgb(255 255 255 / .12) 0%,transparent 68%)',
|
|
385
|
+
'--glow-hero-blur': '120px',
|
|
386
|
+
'--sheen-card': 'radial-gradient(120% 120% at 80% 0%,rgb(255 255 255 / .08) 0%,transparent 55%)',
|
|
387
|
+
'--gradient-chrome': 'linear-gradient(to right,#ffffff,var(--white-80),var(--white-60))',
|
|
388
|
+
'--gradient-chrome-2': 'linear-gradient(to right,#ffffff,var(--neutral-500))',
|
|
389
|
+
'--gradient-protect': 'linear-gradient(to bottom,var(--white-10),transparent)',
|
|
390
|
+
'--duration-fast': '150ms',
|
|
391
|
+
'--duration-base': '300ms',
|
|
392
|
+
'--duration-slow': '400ms',
|
|
393
|
+
'--duration-slower': '500ms',
|
|
394
|
+
'--duration-glow': '9s',
|
|
395
|
+
'--ease-out': 'cubic-bezier(0,0,0.2,1)',
|
|
396
|
+
'--ease-in-out': 'cubic-bezier(0.4,0,0.2,1)',
|
|
397
|
+
'--stagger': '60ms',
|
|
398
|
+
'--entry-rise': '16px',
|
|
399
|
+
'--entry-rise-lg': '24px',
|
|
400
|
+
'--z-base': '0',
|
|
401
|
+
'--z-raised': '10',
|
|
402
|
+
'--z-sticky': '200',
|
|
403
|
+
'--z-header': '300',
|
|
404
|
+
'--z-dropdown': '400',
|
|
405
|
+
'--z-overlay': '500',
|
|
406
|
+
'--z-modal': '600',
|
|
407
|
+
'--z-popover': '700',
|
|
408
|
+
'--z-toast': '800',
|
|
409
|
+
'--font-sans': '"Geist","Geist Sans",ui-sans-serif,system-ui,sans-serif',
|
|
410
|
+
'--font-display': 'var(--font-sans)',
|
|
411
|
+
'--font-mono': '"Geist Mono",ui-monospace,SFMono-Regular,monospace',
|
|
412
|
+
'--font-serif': 'Georgia,serif',
|
|
413
|
+
'--font-feature-settings': '"ss01","ss02","cv01","cv02","cv03"',
|
|
414
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzo/design",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Hanzo Design System \u2014 monochrome, dark-default tokens + components + brand assets, the single source of truth for every Hanzo surface.",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Hanzo Design System \u2014 monochrome, dark-default tokens + components + brand assets, the single source of truth for every Hanzo surface. CSS + typed programmatic tokens.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -12,7 +12,14 @@
|
|
|
12
12
|
"sideEffects": [
|
|
13
13
|
"*.css"
|
|
14
14
|
],
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"module": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
15
18
|
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
},
|
|
16
23
|
"./styles.css": "./styles.css",
|
|
17
24
|
"./tokens/*": "./tokens/*",
|
|
18
25
|
"./components/*": "./components/*",
|
|
@@ -20,7 +27,17 @@
|
|
|
20
27
|
"./content/*": "./content/*",
|
|
21
28
|
"./assets/*": "./assets/*"
|
|
22
29
|
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"gen": "node scripts/gen-tokens.mjs",
|
|
32
|
+
"build": "npm run gen && tsc -p tsconfig.json",
|
|
33
|
+
"prepublishOnly": "npm run build"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"typescript": "^5.9.3"
|
|
37
|
+
},
|
|
23
38
|
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"src",
|
|
24
41
|
"styles.css",
|
|
25
42
|
"tokens",
|
|
26
43
|
"components",
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// @hanzo/design — the ONE programmatic control plane for Hanzo's look & feel.
|
|
2
|
+
//
|
|
3
|
+
// The look/feel is authored ONCE as CSS custom properties in tokens/*.css
|
|
4
|
+
// (monochrome, dark-default — "one hue through an opacity ladder"). This module
|
|
5
|
+
// exposes those exact tokens to code, generated from the CSS so the two can
|
|
6
|
+
// never drift. Change a token in the CSS → the stylesheet AND every code
|
|
7
|
+
// consumer (the @hanzogui/shell theme, Tamagui, any TS surface) update together.
|
|
8
|
+
//
|
|
9
|
+
// import '@hanzo/design/styles.css' // the CSS layer (unchanged)
|
|
10
|
+
// import { colors, spacing, radius, cssVar } from '@hanzo/design' // the code layer
|
|
11
|
+
//
|
|
12
|
+
export * from './tokens.gen.js'
|
|
13
|
+
import { cssVars, type CssVarName } from './tokens.gen.js'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A `var(--name[, fallback])` reference to a token — the ONE way code should
|
|
17
|
+
* reach a token so it resolves through the live CSS cascade (honoring the
|
|
18
|
+
* viewer's light/dark theme) rather than baking a fixed value.
|
|
19
|
+
*
|
|
20
|
+
* background: cssVar('--background') // → "var(--background)"
|
|
21
|
+
* color: cssVar('--foreground', '#fff')
|
|
22
|
+
*/
|
|
23
|
+
export function cssVar(name: CssVarName | (string & {}), fallback?: string): string {
|
|
24
|
+
const n = name.startsWith('--') ? name : `--${name}`
|
|
25
|
+
return fallback ? `var(${n}, ${fallback})` : `var(${n})`
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The raw authored value of a token (the literal from the CSS), or `undefined`. */
|
|
29
|
+
export function tokenValue(name: CssVarName): string | undefined {
|
|
30
|
+
return (cssVars as Record<string, string>)[name]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Inject the design-system stylesheet from code (idempotent) for surfaces that
|
|
35
|
+
* cannot use a bundler CSS import (e.g. a runtime-mounted island). Prefer the
|
|
36
|
+
* static `import '@hanzo/design/styles.css'` where a bundler is available.
|
|
37
|
+
* No-op outside the browser.
|
|
38
|
+
*/
|
|
39
|
+
export function injectDesignCss(href = 'https://esm.sh/@hanzo/design/styles.css'): void {
|
|
40
|
+
if (typeof document === 'undefined') return
|
|
41
|
+
if (document.querySelector('link[data-hanzo-design]')) return
|
|
42
|
+
const l = document.createElement('link')
|
|
43
|
+
l.rel = 'stylesheet'
|
|
44
|
+
l.href = href
|
|
45
|
+
l.setAttribute('data-hanzo-design', '')
|
|
46
|
+
document.head.appendChild(l)
|
|
47
|
+
}
|