@nateui/cli 0.0.0-stage → 0.0.3

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.
@@ -0,0 +1,535 @@
1
+ @import "tailwindcss";
2
+ @plugin "@tailwindcss/typography";
3
+
4
+ @custom-variant dark (&:where(.dark, .dark *));
5
+
6
+ @theme inline {
7
+ /* Fonts */
8
+ --font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
9
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
10
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
11
+
12
+ /* Semantic surfaces */
13
+ --color-background: var(--nui-background);
14
+ --color-canvas: var(--nui-canvas);
15
+ --color-canvas-border: var(--nui-canvas-border);
16
+ --color-foreground: var(--nui-foreground);
17
+ --color-card: var(--nui-card);
18
+ --color-card-foreground: var(--nui-card-foreground);
19
+ --color-popover: var(--nui-popover);
20
+ --color-popover-foreground: var(--nui-popover-foreground);
21
+ --color-muted: var(--nui-muted);
22
+ --color-muted-foreground: var(--nui-muted-foreground);
23
+ --color-border: var(--nui-border);
24
+ --color-tag: var(--nui-tag);
25
+ --color-card-border: var(--nui-card-border);
26
+ --color-tag-border: var(--nui-tag-border);
27
+ --color-input: var(--nui-input);
28
+ --color-ring: var(--nui-ring);
29
+ --color-overlay: var(--nui-overlay);
30
+ --color-inverse: var(--nui-inverse);
31
+ --color-inverse-foreground: var(--nui-inverse-foreground);
32
+
33
+ /* Form controls */
34
+ --color-control: var(--nui-control);
35
+ --color-control-foreground: var(--nui-control-foreground);
36
+ --color-control-border: var(--nui-control-border);
37
+ --color-control-focus: var(--nui-control-focus);
38
+ --color-control-hover: var(--nui-control-hover);
39
+ --color-control-active: var(--nui-control-active);
40
+ --color-control-disabled: var(--nui-control-disabled);
41
+ --color-control-disabled-foreground: var(--nui-control-disabled-foreground);
42
+
43
+ /* Intent colors */
44
+ --color-primary: var(--nui-primary);
45
+ --color-primary-foreground: var(--nui-primary-foreground);
46
+ --color-primary-hover: var(--nui-primary-hover);
47
+ --color-primary-active: var(--nui-primary-active);
48
+ --color-primary-soft: var(--nui-primary-soft);
49
+
50
+ --color-secondary: var(--nui-secondary);
51
+ --color-secondary-foreground: var(--nui-secondary-foreground);
52
+ --color-secondary-hover: var(--nui-secondary-hover);
53
+ --color-secondary-active: var(--nui-secondary-active);
54
+ --color-secondary-soft: var(--nui-secondary-soft);
55
+
56
+ --color-accent: var(--nui-accent);
57
+ --color-accent-foreground: var(--nui-accent-foreground);
58
+ --color-accent-hover: var(--nui-accent-hover);
59
+ --color-accent-active: var(--nui-accent-active);
60
+
61
+ --color-destructive: var(--nui-destructive);
62
+ --color-destructive-foreground: var(--nui-destructive-foreground);
63
+ --color-destructive-soft: var(--nui-destructive-soft);
64
+ --color-destructive-soft-foreground: var(--nui-destructive-soft-foreground);
65
+
66
+ --color-success: var(--nui-success);
67
+ --color-success-foreground: var(--nui-success-foreground);
68
+ --color-success-soft: var(--nui-success-soft);
69
+ --color-success-soft-foreground: var(--nui-success-soft-foreground);
70
+ --color-warning: var(--nui-warning);
71
+ --color-warning-foreground: var(--nui-warning-foreground);
72
+ --color-warning-soft: var(--nui-warning-soft);
73
+ --color-warning-soft-foreground: var(--nui-warning-soft-foreground);
74
+ --color-info: var(--nui-info);
75
+ --color-info-foreground: var(--nui-info-foreground);
76
+ --color-info-soft: var(--nui-info-soft);
77
+ --color-info-soft-foreground: var(--nui-info-soft-foreground);
78
+
79
+ /* Product palette */
80
+ --color-palette-emerald: var(--nui-palette-emerald-solid);
81
+ --color-palette-emerald-foreground: var(--nui-palette-emerald-foreground);
82
+ --color-palette-emerald-soft: var(--nui-palette-emerald-soft);
83
+ --color-palette-emerald-soft-foreground: var(--nui-palette-emerald-soft-foreground);
84
+
85
+ --color-palette-rose: var(--nui-palette-rose-solid);
86
+ --color-palette-rose-foreground: var(--nui-palette-rose-foreground);
87
+ --color-palette-rose-soft: var(--nui-palette-rose-soft);
88
+ --color-palette-rose-soft-foreground: var(--nui-palette-rose-soft-foreground);
89
+
90
+ --color-palette-blue: var(--nui-palette-blue-solid);
91
+ --color-palette-blue-foreground: var(--nui-palette-blue-foreground);
92
+ --color-palette-blue-soft: var(--nui-palette-blue-soft);
93
+ --color-palette-blue-soft-foreground: var(--nui-palette-blue-soft-foreground);
94
+
95
+ --color-palette-cyan: var(--nui-palette-cyan-solid);
96
+ --color-palette-cyan-foreground: var(--nui-palette-cyan-foreground);
97
+ --color-palette-cyan-soft: var(--nui-palette-cyan-soft);
98
+ --color-palette-cyan-soft-foreground: var(--nui-palette-cyan-soft-foreground);
99
+
100
+ --color-palette-orange: var(--nui-palette-orange-solid);
101
+ --color-palette-orange-foreground: var(--nui-palette-orange-foreground);
102
+ --color-palette-orange-soft: var(--nui-palette-orange-soft);
103
+ --color-palette-orange-soft-foreground: var(--nui-palette-orange-soft-foreground);
104
+
105
+ --color-palette-red: var(--nui-palette-red-solid);
106
+ --color-palette-red-foreground: var(--nui-palette-red-foreground);
107
+ --color-palette-red-soft: var(--nui-palette-red-soft);
108
+ --color-palette-red-soft-foreground: var(--nui-palette-red-soft-foreground);
109
+
110
+ --color-palette-purple: var(--nui-palette-purple-solid);
111
+ --color-palette-purple-foreground: var(--nui-palette-purple-foreground);
112
+ --color-palette-purple-soft: var(--nui-palette-purple-soft);
113
+ --color-palette-purple-soft-foreground: var(--nui-palette-purple-soft-foreground);
114
+
115
+ --color-palette-yellow: var(--nui-palette-yellow-solid);
116
+ --color-palette-yellow-foreground: var(--nui-palette-yellow-foreground);
117
+ --color-palette-yellow-soft: var(--nui-palette-yellow-soft);
118
+ --color-palette-yellow-soft-foreground: var(--nui-palette-yellow-soft-foreground);
119
+
120
+ --color-palette-lime: var(--nui-palette-lime-solid);
121
+ --color-palette-lime-foreground: var(--nui-palette-lime-foreground);
122
+ --color-palette-lime-soft: var(--nui-palette-lime-soft);
123
+ --color-palette-lime-soft-foreground: var(--nui-palette-lime-soft-foreground);
124
+
125
+ --color-palette-gray: var(--nui-palette-gray-solid);
126
+ --color-palette-gray-foreground: var(--nui-palette-gray-foreground);
127
+ --color-palette-gray-soft: var(--nui-palette-gray-soft);
128
+ --color-palette-gray-soft-foreground: var(--nui-palette-gray-soft-foreground);
129
+
130
+ /* Chart series */
131
+ --color-chart-1: var(--nui-chart-1);
132
+ --color-chart-2: var(--nui-chart-2);
133
+ --color-chart-3: var(--nui-chart-3);
134
+ --color-chart-4: var(--nui-chart-4);
135
+ --color-chart-5: var(--nui-chart-5);
136
+ --color-chart-6: var(--nui-chart-6);
137
+ --color-chart-7: var(--nui-chart-7);
138
+ --color-chart-8: var(--nui-chart-8);
139
+ --color-chart-9: var(--nui-chart-9);
140
+ --color-chart-10: var(--nui-chart-10);
141
+
142
+ /* Shape */
143
+ --radius-canvas: var(--nui-radius-canvas);
144
+ --radius-control: var(--nui-radius-control);
145
+ --radius-control-sm: var(--nui-radius-control-sm);
146
+ --radius-card: var(--nui-radius-card);
147
+ --radius-popover: var(--nui-radius-popover);
148
+ --radius-overlay: var(--nui-radius-overlay);
149
+ --radius-tag: var(--nui-radius-tag);
150
+ --radius-badge: var(--nui-radius-badge);
151
+
152
+ /* Elevation */
153
+ --shadow-canvas: var(--nui-shadow-canvas);
154
+ --shadow-card: var(--nui-shadow-card);
155
+ --shadow-control: var(--nui-shadow-control);
156
+ --shadow-popover: var(--nui-shadow-popover);
157
+ --shadow-dialog: var(--nui-shadow-dialog);
158
+ --shadow-drawer: var(--nui-shadow-drawer);
159
+ --shadow-focus: var(--nui-shadow-focus);
160
+ --shadow-inset-active: var(--nui-shadow-inset-active);
161
+
162
+ /* Component sizing */
163
+ --spacing-control-sm: var(--nui-control-size-sm);
164
+ --spacing-control-md: var(--nui-control-size-md);
165
+ --spacing-control-lg: var(--nui-control-size-lg);
166
+ --spacing-field-x-sm: var(--nui-field-x-sm);
167
+ --spacing-field-x-md: var(--nui-field-x-md);
168
+ --spacing-field-x-lg: var(--nui-field-x-lg);
169
+ --spacing-overlay-gap: var(--nui-overlay-gap);
170
+
171
+ /* Layering */
172
+ --z-index-dropdown: var(--nui-z-dropdown);
173
+ --z-index-sticky: var(--nui-z-sticky);
174
+ --z-index-popover: var(--nui-z-popover);
175
+ --z-index-overlay: var(--nui-z-overlay);
176
+ --z-index-modal: var(--nui-z-modal);
177
+ --z-index-toast: var(--nui-z-toast);
178
+ --z-index-tooltip: var(--nui-z-tooltip);
179
+
180
+ /* Focus defaults */
181
+ --default-ring-width: 1px;
182
+ --default-ring-color: var(--nui-ring);
183
+
184
+ /* Breakpoints */
185
+ --breakpoint-xs: 576px;
186
+ --breakpoint-sm: 640px;
187
+ --breakpoint-md: 768px;
188
+ --breakpoint-lg: 1024px;
189
+ --breakpoint-xl: 1280px;
190
+ --breakpoint-2xl: 1536px;
191
+ }
192
+ @layer base {
193
+ :root,
194
+ .light,
195
+ [data-theme='light'] {
196
+ color-scheme: light;
197
+
198
+ --nui-font-family: var(--font-sans), Inter, ui-sans-serif, system-ui, sans-serif;
199
+
200
+ --nui-neutral-50: #fafafa;
201
+ --nui-neutral-100: #f3f3f3;
202
+ --nui-neutral-200: #ebebeb;
203
+ --nui-neutral-300: #dcdcdc;
204
+ --nui-neutral-400: #cdcdcd;
205
+ --nui-neutral-500: #737373;
206
+ --nui-neutral-600: #5c5c5c;
207
+ --nui-neutral-700: #454545;
208
+ --nui-neutral-800: #3A3A3A;
209
+ --nui-neutral-900: #222222;
210
+ --nui-neutral-950: #171717;
211
+
212
+ --nui-background: var(--nui-neutral-50);
213
+ --nui-canvas: var(--nui-card);
214
+ --nui-canvas-border: transparent;
215
+ --nui-foreground: var(--nui-neutral-900);
216
+ --nui-card: #ffffff;
217
+ --nui-card-foreground: var(--nui-neutral-900);
218
+ --nui-popover: #ffffff;
219
+ --nui-popover-foreground: var(--nui-neutral-900);
220
+ --nui-muted: var(--nui-neutral-100);
221
+ --nui-muted-foreground: var(--nui-neutral-500);
222
+ --nui-border: var(--nui-neutral-200);
223
+ --nui-tag: var(--nui-neutral-100);
224
+ --nui-card-border: var(--nui-neutral-200);
225
+ --nui-tag-border: var(--nui-neutral-200);
226
+ --nui-input: var(--nui-neutral-300);
227
+ --nui-ring: var(--nui-primary);;
228
+ --nui-overlay: rgb(10 10 10 / 60%);
229
+ --nui-inverse: var(--nui-neutral-900);
230
+ --nui-inverse-foreground: #ffffff;
231
+
232
+ --nui-control: #ffffff;
233
+ --nui-control-foreground: var(--nui-neutral-900);
234
+ --nui-control-border: var(--nui-neutral-300);
235
+ --nui-control-focus: var(--nui-ring);
236
+ --nui-control-hover: var(--nui-neutral-100);
237
+ --nui-control-active: var(--nui-neutral-100);
238
+ --nui-control-disabled: var(--nui-neutral-100);
239
+ --nui-control-disabled-foreground: rgb(23 23 23 / 40%);
240
+
241
+ --nui-primary: #3380fa;
242
+ --nui-primary-foreground: #ffffff;
243
+ --nui-primary-hover: #579afe;
244
+ --nui-primary-active: #2a6aca;
245
+ --nui-primary-soft: rgb(51 128 250 / 10%);
246
+
247
+ --nui-secondary: var(--nui-neutral-100);
248
+ --nui-secondary-foreground: var(--nui-neutral-900);
249
+ --nui-secondary-hover: var(--nui-neutral-200);
250
+ --nui-secondary-active: var(--nui-neutral-300);
251
+ --nui-secondary-soft: rgb(23 23 23 / 5%);
252
+ --nui-accent: var(--nui-neutral-100);
253
+ --nui-accent-foreground: var(--nui-neutral-800);
254
+ --nui-accent-hover: var(--nui-neutral-200);
255
+ --nui-accent-active: var(--nui-neutral-300);
256
+
257
+ --nui-destructive: #fd2b38;
258
+ --nui-destructive-foreground: #ffffff;
259
+ --nui-destructive-soft: rgb(235 65 55 / 10%);
260
+ --nui-destructive-soft-foreground: var(--nui-destructive);
261
+
262
+ --nui-success: #00a656;
263
+ --nui-success-foreground: #ffffff;
264
+ --nui-success-soft: rgba(0 166 86 / 12%);
265
+ --nui-success-soft-foreground: var(--nui-success);
266
+
267
+ --nui-warning: #f59e0b;
268
+ --nui-warning-foreground: #754729;
269
+ --nui-warning-soft: rgb(245 158 11 / 16%);
270
+ --nui-warning-soft-foreground: var(--nui-warning);
271
+
272
+ --nui-info: #3380fa;
273
+ --nui-info-foreground: #ffffff;
274
+ --nui-info-soft: rgb(23 165 251 / 16%);
275
+ --nui-info-soft-foreground: var(--nui-info);
276
+
277
+ --nui-palette-emerald-solid: #00c27f;
278
+ --nui-palette-emerald-foreground: var(--nui-neutral-100);
279
+ --nui-palette-emerald-soft: #09e33830;
280
+ --nui-palette-emerald-soft-foreground: #1e7151;
281
+
282
+ --nui-palette-rose-solid: #f35084;
283
+ --nui-palette-rose-foreground: var(--nui-neutral-100);
284
+ --nui-palette-rose-soft: #fb576738;
285
+ --nui-palette-rose-soft-foreground: #981847;
286
+
287
+ --nui-palette-blue-solid: #3380fa;
288
+ --nui-palette-blue-foreground: var(--nui-neutral-100);
289
+ --nui-palette-blue-soft: #186bfb1a;
290
+ --nui-palette-blue-soft-foreground: #314c89;
291
+
292
+ --nui-palette-cyan-solid: #05aed3;
293
+ --nui-palette-cyan-foreground: var(--nui-neutral-100);
294
+ --nui-palette-cyan-soft: #0cc5f738;
295
+ --nui-palette-cyan-soft-foreground: #226f81;
296
+
297
+ --nui-palette-orange-solid: #ff6a55;
298
+ --nui-palette-orange-foreground: var(--nui-neutral-100);
299
+ --nui-palette-orange-soft: #f976134d;
300
+ --nui-palette-orange-soft-foreground: #9f2f00;
301
+
302
+ --nui-palette-red-solid: #fe555d;
303
+ --nui-palette-red-foreground: var(--nui-neutral-100);
304
+ --nui-palette-red-soft: #e526102e;
305
+ --nui-palette-red-soft-foreground: #770c19;
306
+
307
+ --nui-palette-purple-solid: #8361cd;
308
+ --nui-palette-purple-foreground: var(--nui-primary-100);
309
+ --nui-palette-purple-soft: #44238e17;
310
+ --nui-palette-purple-soft-foreground: #44238e;
311
+
312
+ --nui-palette-yellow-solid: #f3bd31;
313
+ --nui-palette-yellow-foreground: var(--nui-neutral-100);
314
+ --nui-palette-yellow-soft: #f5c10d45;
315
+ --nui-palette-yellow-soft-foreground: #705611;
316
+
317
+ --nui-palette-lime-solid: #84cc16;
318
+ --nui-palette-lime-foreground: var(--nui-neutral-100);
319
+ --nui-palette-lime-soft: #d0f72f4d;
320
+ --nui-palette-lime-soft-foreground: #516412;
321
+
322
+ --nui-palette-gray-solid: var(--nui-neutral-300);
323
+ --nui-palette-gray-foreground: var(--nui-neutral-100);
324
+ --nui-palette-gray-soft: var(--nui-neutral-200);
325
+ --nui-palette-gray-soft-foreground: var(--nui-neutral-500);
326
+
327
+ --nui-chart-1: var(--nui-primary);
328
+ --nui-chart-2: var(--nui-palette-purple-solid);
329
+ --nui-chart-3: var(--nui-palette-emerald-solid);
330
+ --nui-chart-4: var(--nui-palette-yellow-solid);
331
+ --nui-chart-5: var(--nui-palette-red-solid);
332
+ --nui-chart-6: var(--nui-palette-orange-solid);
333
+ --nui-chart-7: var(--nui-palette-cyan-solid);
334
+ --nui-chart-8: var(--nui-palette-rose-solid);
335
+ --nui-chart-9: var(--nui-palette-lime-solid);
336
+ --nui-chart-10: var(--nui-palette-gray-solid);
337
+
338
+ --nui-radius-xs: 0.125rem;
339
+ --nui-radius-sm: 0.25rem;
340
+ --nui-radius-md: 0.375rem;
341
+ --nui-radius-lg: 0.5rem;
342
+ --nui-radius-xl: 0.75rem;
343
+ --nui-radius-2xl: 1rem;
344
+ --nui-radius-canvas: var(--nui-radius-lg);
345
+ --nui-radius-control: var(--nui-radius-lg);
346
+ --nui-radius-control-sm: var(--nui-radius-md);
347
+ --nui-radius-card: var(--nui-radius-xl);
348
+ --nui-radius-popover: var(--nui-radius-xl);
349
+ --nui-radius-overlay: var(--nui-radius-xl);
350
+ --nui-radius-tag: var(--nui-radius-md);
351
+ --nui-radius-badge: 9999px;
352
+
353
+ --nui-shadow-canvas:
354
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
355
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
356
+ --nui-shadow-card:
357
+ 0 4px 8px 0 rgb(11 11 11 / 8%),
358
+ 0 12px 28px -2px rgb(11 11 11 / 8%);
359
+ --nui-shadow-control: 0 0 #0000;
360
+ --nui-shadow-popover:
361
+ 0px 12px 16px -4px rgba(0, 0, 0, 0.0784),
362
+ 0px 4px 6px -2px rgba(0, 0, 0, 0.0314),
363
+ 0px 2px 2px -1px rgba(0, 0, 0, 0.0392);
364
+ --nui-shadow-dialog:
365
+ 0 0 0 1px rgb(0 0 0 / 2%),
366
+ 0 1px 1px -0.5px rgb(0 0 0 / 2%),
367
+ 0 3px 3px -1.5px rgb(0 0 0 / 2%),
368
+ 0 6px 6px -3px rgb(0 0 0 / 2%),
369
+ 0 12px 12px -6px rgb(0 0 0 / 4%),
370
+ 0 24px 24px -12px rgb(0 0 0 / 4%),
371
+ 0 4px 32px 1px rgb(0 0 0 / 20%);
372
+ --nui-shadow-drawer:
373
+ 0 24px 64px -12px rgb(10 13 18 / 24%),
374
+ 0 0 0 1px rgb(10 13 18 / 4%);
375
+ --nui-shadow-focus: 0 0 0 3px rgb(51 128 250 / 18%);
376
+ --nui-shadow-inset-active:
377
+ inset 0 0 0 1px rgb(10 13 18 / 6%),
378
+ inset 0 1px 1px rgb(10 13 18 / 4%);
379
+
380
+ --nui-control-size-sm: calc(var(--spacing) * 8);
381
+ --nui-control-size-md: calc(var(--spacing) * 9);
382
+ --nui-control-size-lg: calc(var(--spacing) * 12);
383
+ --nui-field-x-sm: 0.75rem;
384
+ --nui-field-x-md: 1rem;
385
+ --nui-field-x-lg: 2rem;
386
+ --nui-overlay-gap: 0.5rem;
387
+
388
+ --nui-z-sticky: 1020;
389
+
390
+ --nui-z-overlay: 1100;
391
+ --nui-z-popover: 1100;
392
+ --nui-z-dropdown: 1100;
393
+ --nui-z-modal: 1100;
394
+ --nui-z-toast: 1200;
395
+ --nui-z-tooltip: 1300;
396
+ }
397
+
398
+ .dark,
399
+ [data-theme='dark'] {
400
+ color-scheme: dark;
401
+
402
+ --nui-background: #121212;
403
+ --nui-canvas: var(--nui-neutral-950);
404
+ --nui-canvas-border: transparent;
405
+ --nui-foreground: var(--nui-neutral-100);
406
+ --nui-card: var(--nui-neutral-900);
407
+ --nui-card-foreground: var(--nui-neutral-100);
408
+ --nui-popover: var(--nui-neutral-900);
409
+ --nui-popover-foreground: var(--nui-neutral-100);
410
+ --nui-muted: var(--nui-neutral-800);
411
+ --nui-muted-foreground: var(--nui-neutral-400);
412
+ --nui-border: color-mix(in srgb, var(--nui-neutral-800) 81%, #000 19%);
413
+ --nui-tag: var(--nui-neutral-800);
414
+ --nui-card-border: var(--nui-card);
415
+ --nui-tag-border: var(--nui-neutral-800);
416
+ --nui-input: var(--nui-neutral-600);
417
+ --nui-ring: var(--nui-primary-hover);
418
+ --nui-overlay: rgb(0 0 0 / 55%);
419
+ --nui-inverse: #ffffff;
420
+ --nui-inverse-foreground: var(--nui-neutral-950);
421
+
422
+ --nui-control: rgb(255 255 255 / 4%);
423
+ --nui-control-foreground: var(--nui-neutral-100);
424
+ --nui-control-border:rgb(255 255 255 / 4%);
425
+ --nui-control-focus: var(--nui-ring);
426
+ --nui-control-hover: var(--nui-neutral-800);
427
+ --nui-control-active: var(--nui-neutral-700);
428
+ --nui-control-disabled: rgb(255 255 255 / 5%);
429
+ --nui-control-disabled-foreground: rgb(245 245 245 / 18%);
430
+
431
+ --nui-primary-soft: rgb(87 154 254 / 16%);
432
+ --nui-secondary: color-mix(in srgb, var(--nui-neutral-800) 81%, #000 19%);
433
+ --nui-secondary-foreground: var(--nui-neutral-100);
434
+ --nui-secondary-hover: var(--nui-neutral-700);
435
+ --nui-secondary-active: var(--nui-neutral-600);
436
+ --nui-secondary-soft: rgb(255 255 255 / 10%);
437
+ --nui-accent: var(--nui-secondary);
438
+ --nui-accent-foreground: var(--nui-neutral-100);
439
+ --nui-accent-hover: var(--nui-neutral-800);
440
+ --nui-accent-active: var(--nui-neutral-800);
441
+
442
+ --nui-destructive-soft: rgb(235 65 55 / 16%);
443
+ --nui-destructive-soft-foreground: var(--nui-destructive);
444
+
445
+ --nui-palette-emerald-foreground: var(--nui-neutral-100);
446
+ --nui-palette-rose-foreground: var(--nui-neutral-100);
447
+ --nui-palette-blue-foreground: var(--nui-neutral-100);
448
+ --nui-palette-cyan-foreground: var(--nui-neutral-100);
449
+ --nui-palette-orange-foreground: var(--nui-neutral-100);
450
+ --nui-palette-red-foreground: var(--nui-neutral-100);
451
+ --nui-palette-purple-foreground: var(--nui-neutral-100);
452
+ --nui-palette-yellow-foreground: var(--nui-neutral-100);
453
+ --nui-palette-lime-foreground: var(--nui-neutral-100);
454
+ --nui-palette-gray-foreground: var(--nui-neutral-100);
455
+ --nui-success-soft-foreground: var(--nui-success);
456
+ --nui-warning-soft-foreground: var(--nui-warning);
457
+ --nui-info-soft-foreground: var(--nui-info);
458
+ --nui-success-soft: rgb(0 166 86 / 16%);
459
+ --nui-warning-soft: rgb(245 158 11 / 18%);
460
+ --nui-info-soft: rgb(51 128 250 / 16%);
461
+
462
+ --nui-palette-emerald-soft: #09e33838;
463
+ --nui-palette-emerald-soft-foreground: #9aebcc;
464
+
465
+ --nui-palette-rose-soft: #fb576738;
466
+ --nui-palette-rose-soft-foreground: #f5c5d7;
467
+
468
+ --nui-palette-blue-soft: #2336568f;
469
+ --nui-palette-blue-soft-foreground: #bfd2fb;
470
+
471
+ --nui-palette-cyan-soft: #0cc5f738;
472
+ --nui-palette-cyan-soft-foreground: #a9e5f3;
473
+
474
+ --nui-palette-orange-soft: #f9761336;
475
+ --nui-palette-orange-soft-foreground: #f7cbb8;
476
+
477
+ --nui-palette-red-soft: #873e3640;
478
+ --nui-palette-red-soft-foreground: #f9ced3;
479
+
480
+ --nui-palette-purple-soft: #44238e91;
481
+ --nui-palette-purple-soft-foreground: #ddd0fb;
482
+
483
+ --nui-palette-yellow-soft: #f5c10d45;
484
+ --nui-palette-yellow-soft-foreground: #f5dd9c;
485
+
486
+ --nui-palette-lime-soft: #d0f72f4d;
487
+ --nui-palette-lime-soft-foreground: #f2ffbc;
488
+
489
+ --nui-palette-gray-solid: var(--nui-neutral-700);
490
+ --nui-palette-gray-soft: var(--nui-neutral-500);
491
+ --nui-palette-gray-soft-foreground: var(--nui-neutral-100);
492
+
493
+ --nui-radius-canvas: var(--nui-radius-lg);
494
+ --nui-shadow-canvas:
495
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
496
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
497
+ --nui-shadow-card:
498
+ 0 1px 2px 0 rgb(0 0 0 / 30%),
499
+ 0 0 0 1px rgb(255 255 255 / 6%);
500
+ --nui-shadow-control: 0 0 #0000;
501
+ --nui-shadow-popover:
502
+ 0 24px 48px -12px rgb(0 0 0 / 45%),
503
+ 0 0 0 1px rgb(255 255 255 / 7%);
504
+ --nui-shadow-dialog:
505
+ 0 24px 64px -12px rgb(0 0 0 / 56%),
506
+ 0 0 0 1px rgb(255 255 255 / 7%);
507
+ --nui-shadow-drawer:
508
+ 0 24px 64px -12px rgb(0 0 0 / 56%),
509
+ 0 0 0 1px rgb(255 255 255 / 7%);
510
+ --nui-shadow-focus: 0 0 0 3px rgb(87 154 254 / 24%);
511
+ --nui-shadow-inset-active:
512
+ inset 0 -2px 1px rgb(0 0 0 / 40%),
513
+ inset 0 1px 1px rgb(255 255 255 / 11%);
514
+ }
515
+
516
+ *,
517
+ ::after,
518
+ ::before,
519
+ ::backdrop,
520
+ ::file-selector-button {
521
+ border-color: var(--color-border, currentColor);
522
+ }
523
+
524
+ @layer base {
525
+ * {
526
+ @apply border-border outline-ring/50;
527
+ }
528
+ body {
529
+ @apply bg-background text-foreground;
530
+ }
531
+ html {
532
+ @apply font-sans;
533
+ }
534
+ }
535
+ }
@@ -0,0 +1,54 @@
1
+ @import "./base.css";
2
+
3
+ @theme {
4
+ --animate-dash-flow: dash-flow 0.3s linear infinite;
5
+
6
+ @keyframes dash-flow {
7
+ to {
8
+ stroke-dashoffset: -12;
9
+ }
10
+ }
11
+ }
12
+
13
+ @layer base {
14
+ button,
15
+ [role="button"] {
16
+ cursor: pointer;
17
+ }
18
+
19
+ body {
20
+ @apply bg-background text-sm leading-normal text-foreground;
21
+ text-rendering: optimizeLegibility;
22
+ -webkit-font-smoothing: antialiased;
23
+ }
24
+
25
+ h1,
26
+ .h1 {
27
+ @apply text-4xl font-semibold text-foreground;
28
+ }
29
+
30
+ h2,
31
+ .h2 {
32
+ @apply text-3xl font-semibold text-foreground;
33
+ }
34
+
35
+ h3,
36
+ .h3 {
37
+ @apply text-2xl font-semibold text-foreground;
38
+ }
39
+
40
+ h4,
41
+ .h4 {
42
+ @apply text-xl font-semibold text-foreground;
43
+ }
44
+
45
+ h5,
46
+ .h5 {
47
+ @apply text-lg font-semibold text-foreground;
48
+ }
49
+
50
+ h6,
51
+ .h6 {
52
+ @apply text-base font-medium text-foreground;
53
+ }
54
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "react-jsx",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./src/*"]
23
+ }
24
+ },
25
+ "include": [
26
+ "next-env.d.ts",
27
+ "**/*.ts",
28
+ "**/*.tsx",
29
+ ".next/types/**/*.ts",
30
+ ".next/dev/types/**/*.ts",
31
+ "**/*.mts"
32
+ ],
33
+ "exclude": ["node_modules"]
34
+ }
@@ -0,0 +1,46 @@
1
+ # Generated tree
2
+
3
+ Base tree produced 2026-09-04 with:
4
+
5
+ ```bash
6
+ npm create vite@latest nateui-vite -- --template react-ts --no-eslint --no-interactive
7
+ ```
8
+
9
+ create-vite version resolved at generation time: 9.2.0.
10
+
11
+ Flags beyond the work order's base command, and why:
12
+ - `--no-eslint` — current create-vite's flag help text reads "use ESLint instead of Oxlint": the react-ts template now defaults to Oxlint as its linter, and this flag chooses between the two, not lint-vs-no-lint. There is no flag to omit a linter entirely. `.oxlintrc.json` and the `oxlint` devDependency + `lint` script it added were stripped afterward — not in the target manifest (`m2-packaging.md` §3) and not something the work order asked for.
13
+ - `--no-interactive` — this session has no TTY; forces the prompts off instead of hanging.
14
+
15
+ ## Kept from the generator as-is
16
+ `.gitignore`, `tsconfig.json` (root; project-references only, unchanged), `tsconfig.node.json`.
17
+
18
+ ## Hand-written, not from the generator
19
+ `package.json` (dependency versions pinned from `code/package.json`, not the generator's auto-resolved latest), `tsconfig.app.json` (generator's base kept, `paths` added — see alias note), `vite.config.ts` (generator's base kept, `@tailwindcss/vite` + `resolve.alias` added), `index.html` (favicon link removed along with the favicon asset; title changed; Google Fonts `<link>` added for Inter — the `<link>` option from `m2-packaging.md` §3, not `@fontsource/inter`, to avoid an extra pinned dependency), `src/main.tsx` (generator's base kept, stylesheet import path changed to `@/styles/index.css`), `src/App.tsx` (counter demo replaced), `src/styles/base.css` + `src/styles/index.css` (copied, see the two notes in the Next.js chassis's own `GENERATED.md` — same content, same caveats, not repeated here).
20
+
21
+ ## Stripped from the generator's output
22
+ `.oxlintrc.json` (see above), `README.md`, `src/App.css`, `src/index.css`, `src/assets/react.svg`, `src/assets/vite.svg`, `src/assets/hero.png`, `public/favicon.svg`, `public/icons.svg` — current create-vite's react-ts template ships a materially different demo than what the work order describes (a hero image + doc/social link sections wired to `public/icons.svg`, not just a spinning-logo counter) — all of it is generator branding/demo content regardless, stripped on the same "buyer must not find generator demo content" basis the work order states for the old template shape.
23
+
24
+ ## No src/vite-env.d.ts
25
+ Current create-vite no longer generates this file. Its role — ambient `import.meta.env` / `ImportMetaEnv` types — is already covered by `tsconfig.app.json`'s `"types": ["vite/client"]`, which the generator does still write. Not hand-added; nothing to add.
26
+
27
+ ## Alias note
28
+ `m2-packaging.md` §3 says the alias goes in "three places... vite.config.ts resolve.alias, plus paths in tsconfig.app.json and the root tsconfig.json if it carries compiler options." The generated root `tsconfig.json` carries no `compilerOptions` (it is a bare project-references file pointing at `tsconfig.app.json` / `tsconfig.node.json`), so per that same sentence's own conditional, only two places actually apply here: `vite.config.ts` and `tsconfig.app.json`. Both are done. `tsconfig.node.json` does not need the alias — nothing under it (just `vite.config.ts` itself) imports `@/*`.
29
+
30
+ ## pnpm-workspace.yaml — deliberately absent
31
+ Not in `m2-packaging.md` §3's file list for this chassis (it is listed for the Next.js one, §2). Tested empirically rather than assumed either way: `pnpm install` against this chassis's exact dependency set (§ Acceptance test below) produced zero "ignored build scripts" warnings with no `pnpm-workspace.yaml` present at all — `sharp` and `unrs-resolver` never entered this dependency graph. Left out, matching the manifest. If a future dependency change pulls either package in transitively, re-check; the fix, if needed, is the Next.js chassis's `pnpm-workspace.yaml` content unchanged (framework-agnostic).
32
+
33
+ ## TypeScript strictness vs. `code/components/ui/` — real finding, not a chassis-only workaround
34
+ `tsconfig.app.json` as generated sets `erasableSyntaxOnly: true` and `verbatimModuleSyntax: true`. Both are incompatible with existing, pervasive `code/components/ui/` patterns, not just the four components this chassis was tested against:
35
+ - `erasableSyntaxOnly` rejects `code/components/ui/config-provider/config-provider.ts`'s `export enum SIZES {...}` — a real (non-`const`) enum compiles to runtime code, which this flag disallows.
36
+ - `verbatimModuleSyntax` rejects `code/components/ui/inputGroup/index.tsx`'s `import _InputGroup, { InputGroupProps } from './InputGroup'` — `InputGroupProps` is a type, imported without `import type`.
37
+
38
+ Both are generator defaults, not spec requirements — `m2-packaging.md` never mentions either flag. Turned off here rather than touched at the source: fixing `code/components/ui/` itself is out of this work order's scope (`code/` is shared ecosystem source, not part of "the two shells"), and either flag failing blocks `pnpm build` for **any** Vite consumer of `ui/**` that touches an enum or a bare type import, not just this chassis. Flagged in the report back to the orchestrator as a `code/components/ui/` finding worth a real fix (enum → `as const` object, `import` → `import type`) rather than a per-consumer tsconfig workaround.
39
+
40
+ ## Acceptance test (F2/F3-equivalent, run by hand per the work order's "Done means")
41
+ Built in a throwaway copy with `code/components/ui/{Button,ConfigProvider,Spinner,InputGroup}/`, `code/components/ui/form/context.ts` (see the Next.js chassis's `GENERATED.md` for why `Form/context.ts` alone, not the whole `Form/` folder, belongs in Button's closure), and `code/utils/class-names.ts` layered into `src/components/ui/` and `src/utils/` respectively — never committed here, this chassis tree stays component-free per §1/§3.
42
+ 1. `pnpm install` — exit 0.
43
+ 2. `pnpm build` (`tsc -b && vite build`) — exit 0, after the tsconfig fix above.
44
+ 3. `pnpm dev`, loaded in-browser: button background `rgb(255, 255, 255)`, border `rgb(213, 215, 218)`, page background `rgb(250, 250, 250)` — resolving through the `--nui-*` tokens, not browser defaults or a grey box.
45
+ 4. `document.fonts.check('16px Inter')` → `true` — the `<link>`-tag Inter wiring actually loads the font, not just falls through the `--font-sans` stack to a system font.
46
+ 5. `document.documentElement.classList.add('dark')` → body background flips to `rgb(10, 10, 10)`, button to `rgba(255, 255, 255, 0.04)`. Confirmed working.