@hanzo/ui 8.0.82 → 8.0.86

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.
Files changed (42) hide show
  1. package/dist/backends/gui/button.d.ts +3 -3
  2. package/dist/backends/gui/card.d.ts.map +1 -1
  3. package/dist/backends/gui/card.js.map +1 -1
  4. package/dist/backends/gui/command.js.map +1 -1
  5. package/dist/backends/gui/context-menu.d.ts +3 -3
  6. package/dist/backends/gui/dropdown-menu.d.ts +4 -4
  7. package/dist/backends/gui/resizable.cjs +4 -1
  8. package/dist/backends/gui/resizable.d.ts.map +1 -1
  9. package/dist/backends/gui/resizable.js +4 -1
  10. package/dist/backends/gui/resizable.js.map +1 -1
  11. package/dist/backends/gui/scroll-area.d.ts.map +1 -1
  12. package/dist/backends/gui/scroll-area.js.map +1 -1
  13. package/dist/backends/gui/textarea.js.map +1 -1
  14. package/dist/box.cjs +31 -0
  15. package/dist/box.d.ts +26 -0
  16. package/dist/box.d.ts.map +1 -0
  17. package/dist/box.js +29 -0
  18. package/dist/box.js.map +1 -0
  19. package/dist/chat/Thread.d.ts.map +1 -1
  20. package/dist/chat/Thread.js.map +1 -1
  21. package/dist/gallery.cjs +2 -1
  22. package/dist/gallery.d.ts.map +1 -1
  23. package/dist/gallery.js +2 -1
  24. package/dist/gallery.js.map +1 -1
  25. package/dist/gui-config.cjs +8 -2
  26. package/dist/gui-config.d.ts +469 -461
  27. package/dist/gui-config.d.ts.map +1 -1
  28. package/dist/gui-config.js +8 -2
  29. package/dist/gui-config.js.map +1 -1
  30. package/dist/index.cjs +5 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/models/ModelSelector.js.map +1 -1
  36. package/dist/styles.css +10 -0
  37. package/dist/tw.cjs +468 -0
  38. package/dist/tw.d.ts +31 -0
  39. package/dist/tw.d.ts.map +1 -0
  40. package/dist/tw.js +466 -0
  41. package/dist/tw.js.map +1 -0
  42. package/package.json +10 -2
package/dist/tw.js ADDED
@@ -0,0 +1,466 @@
1
+ 'use client';/**
2
+ * A utility class and a gui style prop are two notations for one value: `px-4`
3
+ * and `px={16}` say the same thing. This is the function between them.
4
+ *
5
+ * It exists so an app carrying a hundred thousand utility classes can render
6
+ * through gui without either rewriting every class first or keeping a second
7
+ * styling engine around to read them. Convert the notation, delete the engine.
8
+ *
9
+ * Values are CONCRETE — `p-4` is 16, not `$4`. The token scale is where these
10
+ * apps are going, but a token substitution moves every measurement on the page
11
+ * at the same time as the engine underneath it changes, and then nothing
12
+ * identifies which of the two moved it. Retheming is its own step.
13
+ *
14
+ * A class this does not know is returned in `rest`, never dropped. A caller
15
+ * passes it through as a class name, so an unconverted page degrades to what it
16
+ * does today rather than to an unstyled one.
17
+ */
18
+ /** Tailwind's 4px ramp, and the three fractional stops below it. */
19
+ const SPACE = {
20
+ '0': 0, px: 1, '0.5': 2, '1': 4, '1.5': 6, '2': 8, '2.5': 10, '3': 12,
21
+ '3.5': 14, '4': 16, '5': 20, '6': 24, '7': 28, '8': 32, '9': 36, '10': 40,
22
+ '11': 44, '12': 48, '14': 56, '16': 64, '20': 80, '24': 96, '28': 112,
23
+ '32': 128, '36': 144, '40': 160, '44': 176, '48': 192, '52': 208, '56': 224,
24
+ '60': 240, '64': 256, '72': 288, '80': 320, '96': 384,
25
+ };
26
+ const FONT_SIZE = {
27
+ xs: 12, sm: 14, base: 16, lg: 18, xl: 20, '2xl': 24, '3xl': 30, '4xl': 36,
28
+ '5xl': 48, '6xl': 60, '7xl': 72, '8xl': 96, '9xl': 128,
29
+ };
30
+ const WEIGHT = {
31
+ thin: 100, extralight: 200, light: 300, normal: 400, medium: 500,
32
+ semibold: 600, bold: 700, extrabold: 800, black: 900,
33
+ };
34
+ const RADIUS = {
35
+ none: 0, sm: 2, '': 4, md: 6, lg: 8, xl: 12, '2xl': 16, '3xl': 24, full: 9999,
36
+ };
37
+ const LEADING = {
38
+ none: 1, tight: 1.25, snug: 1.375, normal: 1.5, relaxed: 1.625, loose: 2,
39
+ };
40
+ const TRACKING = {
41
+ tighter: -0.8, tight: -0.4, normal: 0, wide: 0.4, wider: 0.8, widest: 1.6,
42
+ };
43
+ /** Flex words Tailwind and the style property spell differently. */
44
+ const ALIGN = {
45
+ start: 'flex-start', end: 'flex-end', center: 'center',
46
+ between: 'space-between', around: 'space-around', evenly: 'space-evenly',
47
+ stretch: 'stretch', baseline: 'baseline',
48
+ };
49
+ const SIDE = { t: 'Top', r: 'Right', b: 'Bottom', l: 'Left' };
50
+ /** Longest first, so `max-w` wins over `max` and `gap-x` over `gap`. */
51
+ const HEADS = [
52
+ 'min-w', 'min-h', 'max-w', 'max-h', 'grid-cols', 'grid-rows', 'col-span',
53
+ 'row-span', 'translate-x', 'translate-y', 'gap-x', 'gap-y', 'space-x', 'space-y', 'overflow-x', 'overflow-y',
54
+ 'transition', 'duration', 'delay', 'ease', 'blur', 'backdrop-blur', 'shadow',
55
+ 'overflow',
56
+ 'tracking', 'leading', 'rounded', 'border', 'divide', 'aspect', 'object',
57
+ 'whitespace', 'align', 'inset', 'items', 'justify', 'content', 'self',
58
+ 'opacity', 'text', 'font', 'bg', 'gap', 'top', 'right', 'bottom', 'left',
59
+ 'w', 'h', 'z', 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl',
60
+ 'm', 'mx', 'my', 'mt', 'mr', 'mb', 'ml',
61
+ ].sort((a, b) => b.length - a.length);
62
+ /** Tailwind names the gradient's destination; CSS names its angle. */
63
+ const DIRECTION = {
64
+ t: 'to top', tr: 'to top right', r: 'to right', br: 'to bottom right',
65
+ b: 'to bottom', bl: 'to bottom left', l: 'to left', tl: 'to top left',
66
+ };
67
+ const FAMILY = {
68
+ sans: 'var(--font-sans)', serif: 'var(--font-serif)', mono: 'var(--font-mono)',
69
+ };
70
+ const DURATION = {
71
+ '0': 0, '75': 75, '100': 100, '150': 150, '200': 200, '300': 300,
72
+ '500': 500, '700': 700, '1000': 1000,
73
+ };
74
+ /** What Tailwind animates under each word. */
75
+ const TRANSITION = {
76
+ none: 'none', all: 'all', DEFAULT: 'color, background-color, border-color, opacity, box-shadow, transform',
77
+ colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',
78
+ opacity: 'opacity',
79
+ shadow: 'box-shadow', transform: 'transform',
80
+ };
81
+ const SHADOW = {
82
+ none: 'none', sm: '0 1px 2px rgb(0 0 0 / .05)',
83
+ DEFAULT: '0 1px 3px rgb(0 0 0 / .1), 0 1px 2px rgb(0 0 0 / .06)',
84
+ md: '0 4px 6px rgb(0 0 0 / .1), 0 2px 4px rgb(0 0 0 / .06)',
85
+ lg: '0 10px 15px rgb(0 0 0 / .1), 0 4px 6px rgb(0 0 0 / .05)',
86
+ xl: '0 20px 25px rgb(0 0 0 / .1), 0 10px 10px rgb(0 0 0 / .04)',
87
+ '2xl': '0 25px 50px rgb(0 0 0 / .25)', inner: 'inset 0 2px 4px rgb(0 0 0 / .06)',
88
+ };
89
+ const BLUR = {
90
+ none: 0, xs: 4, sm: 8, DEFAULT: 8, md: 12, lg: 16, xl: 24, '2xl': 40, '3xl': 64,
91
+ };
92
+ /** A size word, a fraction, or a step on the ramp. */
93
+ function size(v) {
94
+ if (v === 'full')
95
+ return '100%';
96
+ if (v === 'screen')
97
+ return '100vh';
98
+ if (v === 'auto' || v === 'fit' || v === 'min' || v === 'max')
99
+ return v === 'fit' ? 'fit-content' : v;
100
+ if (v in SPACE)
101
+ return SPACE[v];
102
+ const frac = /^(\d+)\/(\d+)$/.exec(v);
103
+ if (frac)
104
+ return `${((+frac[1] / +frac[2]) * 100).toFixed(4).replace(/\.?0+$/, '')}%`;
105
+ const arb = /^\[(.+)]$/.exec(v);
106
+ if (arb)
107
+ return arb[1];
108
+ return undefined;
109
+ }
110
+ /**
111
+ * A colour is a CSS custom property, so `text-foreground` stays exactly the
112
+ * value the sheet already resolves — the palette is not restated here. The
113
+ * `/NN` suffix is an alpha, which `color-mix` applies without needing to know
114
+ * what the variable holds.
115
+ */
116
+ function color(v) {
117
+ if (v === 'transparent')
118
+ return 'transparent';
119
+ if (v === 'current')
120
+ return 'currentColor';
121
+ if (v === 'white')
122
+ return '#fff';
123
+ if (v === 'black')
124
+ return '#000';
125
+ const m = /^(.+?)(?:\/(\d{1,3}))?$/.exec(v);
126
+ if (!m)
127
+ return undefined;
128
+ const [, name, alpha] = m;
129
+ const arb = /^\[(.+)]$/.exec(name);
130
+ const base = arb ? arb[1]
131
+ : name === 'white' ? '#fff' : name === 'black' ? '#000'
132
+ : `var(--${name})`;
133
+ if (!alpha)
134
+ return base;
135
+ return `color-mix(in srgb, ${base} ${alpha}%, transparent)`;
136
+ }
137
+ /** Properties a negative class may set — the rest have no negative form. */
138
+ const NEGATABLE = /^(margin|top|right|bottom|left|zIndex|translate)/;
139
+ /** One class to zero or more props. Returns null when the class is unknown. */
140
+ function one(c) {
141
+ // display and the flex words
142
+ switch (c) {
143
+ case 'flex': return { display: 'flex', flexDirection: 'row' };
144
+ case 'inline-flex': return { display: 'inline-flex', flexDirection: 'row' };
145
+ case 'grid': return { display: 'grid' };
146
+ case 'block': return { display: 'block' };
147
+ case 'inline': return { display: 'inline' };
148
+ case 'inline-block': return { display: 'inline-block' };
149
+ case 'hidden': return { display: 'none' };
150
+ case 'flex-col': return { flexDirection: 'column' };
151
+ case 'flex-row': return { flexDirection: 'row' };
152
+ case 'flex-col-reverse': return { flexDirection: 'column-reverse' };
153
+ case 'flex-row-reverse': return { flexDirection: 'row-reverse' };
154
+ case 'flex-wrap': return { flexWrap: 'wrap' };
155
+ case 'flex-nowrap': return { flexWrap: 'nowrap' };
156
+ case 'flex-1': return { flex: 1 };
157
+ case 'flex-auto': return { flex: 'auto' };
158
+ case 'flex-none': return { flex: 'none' };
159
+ case 'flex-initial': return { flex: 'initial' };
160
+ case 'flex-shrink-0':
161
+ case 'shrink-0': return { flexShrink: 0 };
162
+ case 'flex-grow':
163
+ case 'grow': return { flexGrow: 1 };
164
+ case 'flex-grow-0':
165
+ case 'grow-0': return { flexGrow: 0 };
166
+ case 'absolute': return { position: 'absolute' };
167
+ case 'relative': return { position: 'relative' };
168
+ case 'fixed': return { position: 'fixed' };
169
+ case 'sticky': return { position: 'sticky' };
170
+ case 'static': return { position: 'static' };
171
+ case 'inset-0': return { top: 0, right: 0, bottom: 0, left: 0 };
172
+ case 'uppercase': return { textTransform: 'uppercase' };
173
+ case 'lowercase': return { textTransform: 'lowercase' };
174
+ case 'capitalize': return { textTransform: 'capitalize' };
175
+ case 'normal-case': return { textTransform: 'none' };
176
+ case 'italic': return { fontStyle: 'italic' };
177
+ case 'not-italic': return { fontStyle: 'normal' };
178
+ case 'underline': return { textDecorationLine: 'underline' };
179
+ case 'line-through': return { textDecorationLine: 'line-through' };
180
+ case 'no-underline': return { textDecorationLine: 'none' };
181
+ case 'truncate': return { overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis' };
182
+ case 'mx-auto': return { marginLeft: 'auto', marginRight: 'auto' };
183
+ case 'my-auto': return { marginTop: 'auto', marginBottom: 'auto' };
184
+ case 'border': return { borderWidth: 1 };
185
+ case 'rounded': return { borderRadius: RADIUS[''] };
186
+ case 'cursor-pointer': return { cursor: 'pointer' };
187
+ case 'select-none': return { userSelect: 'none' };
188
+ case 'pointer-events-none': return { pointerEvents: 'none' };
189
+ case 'sr-only': return { position: 'absolute', width: 1, height: 1, overflow: 'hidden' };
190
+ case 'tabular-nums': return { fontVariantNumeric: 'tabular-nums' };
191
+ case 'transform': return { transform: 'translateZ(0)' };
192
+ case 'transition': return { transitionProperty: TRANSITION.DEFAULT };
193
+ case 'blur': return { filter: `blur(${BLUR.DEFAULT}px)` };
194
+ case 'shadow': return { boxShadow: SHADOW.DEFAULT };
195
+ }
196
+ // A leading `-` negates whatever the rest of the class resolves to.
197
+ if (c.startsWith('-')) {
198
+ const pos = one(c.slice(1));
199
+ if (!pos)
200
+ return null;
201
+ const out = {};
202
+ for (const k in pos) {
203
+ const v = pos[k];
204
+ out[k] = typeof v === 'number' && NEGATABLE.test(k) ? -v
205
+ : typeof v === 'string' && /^[\d.]+%$/.test(v) && NEGATABLE.test(k) ? `-${v}`
206
+ : v;
207
+ }
208
+ return out;
209
+ }
210
+ // Heads are matched longest-first. A shortest-match split reads `max-w-3xl`
211
+ // as `max` + `w-3xl`, so every compound head silently fell through.
212
+ let head = '', v = '';
213
+ for (const h of HEADS) {
214
+ if (c.length > h.length + 1 && c.startsWith(h + '-')) {
215
+ head = h;
216
+ v = c.slice(h.length + 1);
217
+ break;
218
+ }
219
+ }
220
+ if (!head)
221
+ return null;
222
+ // padding and margin, whole box or one side
223
+ const box = /^([pm])([xytrbl])?$/.exec(head);
224
+ if (box) {
225
+ const [, kind, where] = box;
226
+ const n = v === 'auto' ? 'auto' : SPACE[v] ?? size(v);
227
+ if (n === undefined)
228
+ return null;
229
+ const base = kind === 'p' ? 'padding' : 'margin';
230
+ if (!where)
231
+ return { [base]: n };
232
+ if (where === 'x')
233
+ return { [`${base}Left`]: n, [`${base}Right`]: n };
234
+ if (where === 'y')
235
+ return { [`${base}Top`]: n, [`${base}Bottom`]: n };
236
+ return { [`${base}${SIDE[where]}`]: n };
237
+ }
238
+ switch (head) {
239
+ case 'gap': {
240
+ const n = SPACE[v] ?? size(v);
241
+ return n === undefined ? null : { gap: n };
242
+ }
243
+ case 'gap-x': {
244
+ const n = SPACE[v] ?? size(v);
245
+ return n === undefined ? null : { columnGap: n };
246
+ }
247
+ case 'gap-y': {
248
+ const n = SPACE[v] ?? size(v);
249
+ return n === undefined ? null : { rowGap: n };
250
+ }
251
+ case 'items': return ALIGN[v] ? { alignItems: ALIGN[v] } : null;
252
+ case 'justify': return ALIGN[v] ? { justifyContent: ALIGN[v] } : null;
253
+ case 'self': return ALIGN[v] ? { alignSelf: ALIGN[v] } : null;
254
+ case 'content': return ALIGN[v] ? { alignContent: ALIGN[v] } : null;
255
+ case 'w': {
256
+ const n = size(v);
257
+ return n === undefined ? null : { width: n };
258
+ }
259
+ case 'h': {
260
+ const n = v === 'screen' ? '100vh' : size(v);
261
+ return n === undefined ? null : { height: n };
262
+ }
263
+ case 'min-w': {
264
+ const n = size(v);
265
+ return n === undefined ? null : { minWidth: n };
266
+ }
267
+ case 'min-h': {
268
+ const n = v === 'screen' ? '100vh' : size(v);
269
+ return n === undefined ? null : { minHeight: n };
270
+ }
271
+ case 'max-w': {
272
+ const n = MAX_W[v] ?? size(v);
273
+ return n === undefined ? null : { maxWidth: n };
274
+ }
275
+ case 'max-h': {
276
+ const n = v === 'screen' ? '100vh' : size(v);
277
+ return n === undefined ? null : { maxHeight: n };
278
+ }
279
+ case 'text': {
280
+ if (v in FONT_SIZE)
281
+ return { fontSize: FONT_SIZE[v] };
282
+ if (v === 'left' || v === 'center' || v === 'right' || v === 'justify')
283
+ return { textAlign: v };
284
+ const col = color(v);
285
+ return col ? { color: col } : null;
286
+ }
287
+ case 'bg': {
288
+ const col = color(v);
289
+ return col ? { backgroundColor: col } : null;
290
+ }
291
+ case 'font': return WEIGHT[v] !== undefined ? { fontWeight: WEIGHT[v] }
292
+ : FAMILY[v] ? { fontFamily: FAMILY[v] } : null;
293
+ case 'leading': {
294
+ const arb = /^\[(.+)]$/.exec(v);
295
+ const n = arb ? Number(arb[1]) || arb[1] : LEADING[v] ?? SPACE[v];
296
+ return n === undefined ? null : { lineHeight: n };
297
+ }
298
+ case 'tracking': return TRACKING[v] !== undefined ? { letterSpacing: TRACKING[v] } : null;
299
+ case 'rounded': {
300
+ if (v in RADIUS)
301
+ return { borderRadius: RADIUS[v] };
302
+ const side = /^([trbl]|tl|tr|br|bl)-(.+)$/.exec(v);
303
+ if (side && side[2] in RADIUS)
304
+ return { [`border${CORNER[side[1]]}Radius`]: RADIUS[side[2]] };
305
+ return null;
306
+ }
307
+ case 'border': {
308
+ if (/^\d+$/.test(v))
309
+ return { borderWidth: +v };
310
+ const side = /^([trbl])(?:-(\d+))?$/.exec(v);
311
+ if (side)
312
+ return { [`border${SIDE[side[1]]}Width`]: side[2] ? +side[2] : 1 };
313
+ const col = color(v);
314
+ return col ? { borderColor: col } : null;
315
+ }
316
+ case 'opacity': return /^\d+$/.test(v) ? { opacity: +v / 100 } : null;
317
+ case 'z': return /^\d+$/.test(v) ? { zIndex: +v } : null;
318
+ case 'overflow': return { overflow: v };
319
+ case 'overflow-x': return { overflowX: v };
320
+ case 'overflow-y': return { overflowY: v };
321
+ case 'top':
322
+ case 'right':
323
+ case 'bottom':
324
+ case 'left': {
325
+ const n = v === 'auto' ? 'auto' : SPACE[v] ?? size(v);
326
+ return n === undefined ? null : { [head]: n };
327
+ }
328
+ case 'inset': {
329
+ const n = SPACE[v] ?? size(v);
330
+ return n === undefined ? null : { top: n, right: n, bottom: n, left: n };
331
+ }
332
+ case 'grid-cols': return /^\d+$/.test(v)
333
+ ? { gridTemplateColumns: `repeat(${v}, minmax(0, 1fr))` } : null;
334
+ case 'grid-rows': return /^\d+$/.test(v)
335
+ ? { gridTemplateRows: `repeat(${v}, minmax(0, 1fr))` } : null;
336
+ case 'col-span': return v === 'full'
337
+ ? { gridColumn: '1 / -1' } : /^\d+$/.test(v) ? { gridColumn: `span ${v} / span ${v}` } : null;
338
+ case 'aspect': return v === 'square' ? { aspectRatio: 1 } : v === 'video' ? { aspectRatio: 16 / 9 } : null;
339
+ case 'object': return { objectFit: v };
340
+ case 'whitespace': return { whiteSpace: v };
341
+ case 'align': return { verticalAlign: v };
342
+ case 'transition': return TRANSITION[v] ? { transitionProperty: TRANSITION[v] } : null;
343
+ case 'duration': return DURATION[v] !== undefined ? { transitionDuration: `${DURATION[v]}ms` } : null;
344
+ case 'delay': return DURATION[v] !== undefined ? { transitionDelay: `${DURATION[v]}ms` } : null;
345
+ case 'blur': return BLUR[v] !== undefined ? { filter: `blur(${BLUR[v]}px)` } : null;
346
+ case 'backdrop-blur': return BLUR[v] !== undefined ? { backdropFilter: `blur(${BLUR[v]}px)` } : null;
347
+ // `space-y` puts the gap on the children's margins; `gap` puts it on the
348
+ // container. The rendering matches wherever the container is flex or grid,
349
+ // which is everywhere these classes are used, and `gap` is the one a stack
350
+ // already speaks.
351
+ case 'space-y': {
352
+ const n = SPACE[v] ?? size(v);
353
+ return n === undefined ? null : { rowGap: n };
354
+ }
355
+ case 'space-x': {
356
+ const n = SPACE[v] ?? size(v);
357
+ return n === undefined ? null : { columnGap: n };
358
+ }
359
+ case 'row-span': return /^\d+$/.test(v) ? { gridRow: `span ${v} / span ${v}` } : null;
360
+ case 'translate-x': {
361
+ const n = SPACE[v] ?? size(v);
362
+ return n === undefined ? null
363
+ : { transform: `translateX(${typeof n === 'number' ? n + 'px' : n})` };
364
+ }
365
+ case 'translate-y': {
366
+ const n = SPACE[v] ?? size(v);
367
+ return n === undefined ? null
368
+ : { transform: `translateY(${typeof n === 'number' ? n + 'px' : n})` };
369
+ }
370
+ case 'shadow': return SHADOW[v] ? { boxShadow: SHADOW[v] } : null;
371
+ }
372
+ return null;
373
+ }
374
+ const MAX_W = {
375
+ none: 'none', xs: 320, sm: 384, md: 448, lg: 512, xl: 576, '2xl': 672,
376
+ '3xl': 768, '4xl': 896, '5xl': 1024, '6xl': 1152, '7xl': 1280, full: '100%',
377
+ prose: '65ch', screen: '100vw',
378
+ };
379
+ const CORNER = {
380
+ t: 'Top', r: 'Right', b: 'Bottom', l: 'Left',
381
+ tl: 'TopLeft', tr: 'TopRight', br: 'BottomRight', bl: 'BottomLeft',
382
+ };
383
+ /** Where a prefixed class lands: a gui media prop, or a pseudo-style. */
384
+ const VARIANT = {
385
+ sm: '$sm', md: '$md', lg: '$lg', xl: '$xl', '2xl': '$2xl',
386
+ hover: 'hoverStyle', focus: 'focusStyle', 'focus-visible': 'focusVisibleStyle',
387
+ active: 'pressStyle', disabled: 'disabledStyle', dark: '$theme-dark',
388
+ 'group-hover': 'groupHoverStyle',
389
+ };
390
+ /** clsx's input shapes, since callers already write class names that way. */
391
+ function flatten(v, out = []) {
392
+ if (!v)
393
+ return out;
394
+ if (typeof v === 'string') {
395
+ for (const s of v.split(/\s+/))
396
+ if (s)
397
+ out.push(s);
398
+ return out;
399
+ }
400
+ if (typeof v === 'number') {
401
+ out.push(String(v));
402
+ return out;
403
+ }
404
+ if (Array.isArray(v)) {
405
+ for (const x of v)
406
+ flatten(x, out);
407
+ return out;
408
+ }
409
+ for (const k in v)
410
+ if (v[k])
411
+ out.push(k);
412
+ return out;
413
+ }
414
+ /**
415
+ * `tw('flex items-center gap-4 md:gap-8 hover:bg-muted')` becomes
416
+ * `{ display, flexDirection, alignItems, gap, $md: { gap }, hoverStyle: { backgroundColor } }`.
417
+ */
418
+ export function tw(input) {
419
+ const props = {};
420
+ const rest = [];
421
+ // A gradient is the one value spelled across several classes — a direction
422
+ // and its stops — so it is assembled here rather than in `one`, which sees
423
+ // a single class and could only ever produce a fragment of it.
424
+ const grad = {};
425
+ for (const raw of flatten(input)) {
426
+ // A class may carry several prefixes; the last one is the variant that
427
+ // decides where it lands, and an unknown prefix keeps the whole class.
428
+ const parts = raw.split(':');
429
+ const bare = parts.pop();
430
+ if (!parts.length) {
431
+ const g = /^(?:bg-gradient-to-([a-z]{1,2})|(from|via|to)-(.+))$/.exec(bare);
432
+ if (g) {
433
+ if (g[1])
434
+ grad.dir = DIRECTION[g[1]];
435
+ else
436
+ grad[g[2]] = color(g[3]);
437
+ continue;
438
+ }
439
+ }
440
+ const found = one(bare);
441
+ if (!found) {
442
+ rest.push(raw);
443
+ continue;
444
+ }
445
+ if (!parts.length) {
446
+ Object.assign(props, found);
447
+ continue;
448
+ }
449
+ const key = VARIANT[parts[parts.length - 1]];
450
+ if (!key) {
451
+ rest.push(raw);
452
+ continue;
453
+ }
454
+ const bucket = (props[key] ??= {});
455
+ Object.assign(bucket, found);
456
+ }
457
+ // A stop with no direction still reads as a gradient; Tailwind's own
458
+ // default is left-to-right.
459
+ const stops = [grad.from, grad.via, grad.to].filter(Boolean);
460
+ if (stops.length > 1) {
461
+ props.backgroundImage = `linear-gradient(${grad.dir ?? 'to right'}, ${stops.join(', ')})`;
462
+ }
463
+ return { props, rest: rest.join(' ') };
464
+ }
465
+ export default tw;
466
+ //# sourceMappingURL=tw.js.map
package/dist/tw.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tw.js","sourceRoot":"","sources":["../src/tw.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.82",
3
+ "version": "8.0.86",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {
@@ -171,7 +171,13 @@
171
171
  "default": "./dist/telemetry.js"
172
172
  },
173
173
  "./styles/motion.css": "./dist/styles/motion.css",
174
- "./package.json": "./package.json"
174
+ "./package.json": "./package.json",
175
+ "./tw": {
176
+ "types": "./dist/tw.d.ts",
177
+ "import": "./dist/tw.js",
178
+ "require": "./dist/tw.cjs",
179
+ "default": "./dist/tw.js"
180
+ }
175
181
  },
176
182
  "main": "./dist/index.cjs",
177
183
  "module": "./dist/index.js",
@@ -238,8 +244,10 @@
238
244
  }
239
245
  },
240
246
  "devDependencies": {
247
+ "@hanzo/dashboard": "^0.2.0",
241
248
  "@hanzo/data": "1.2.3",
242
249
  "@hanzo/gui": "8.1.0",
250
+ "@hanzo/usage": "^0.1.6",
243
251
  "@hanzogui/config": "8.1.0",
244
252
  "@hanzogui/core": "8.1.0",
245
253
  "@hanzogui/lucide-icons-2": "8.1.0",