@kbach/react 1.0.0-beta.16 → 1.0.0-beta.18
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/dist/{chunk-D7OC2AE7.mjs → chunk-5EXGGZMA.mjs} +1 -1
- package/dist/{chunk-KJY3W4GF.mjs → chunk-BJEOK2VK.mjs} +1 -1
- package/dist/{chunk-XV2ZLURB.mjs → chunk-MGPV3PS6.mjs} +21 -717
- package/dist/index.d.mts +49 -1
- package/dist/index.d.ts +49 -1
- package/dist/index.js +32 -2
- package/dist/index.mjs +31 -2
- package/dist/jsx-dev-runtime.js +1 -1
- package/dist/jsx-dev-runtime.mjs +2 -2
- package/dist/jsx-runtime.js +1 -1
- package/dist/jsx-runtime.mjs +2 -2
- package/dist/postcss-plugin.js +19 -7
- package/dist/postcss-plugin.mjs +7 -2
- package/dist/vite-plugin.js +17 -717
- package/dist/vite-plugin.mjs +1 -1
- package/package.json +15 -4
|
@@ -206,709 +206,6 @@ ${block}` : block;
|
|
|
206
206
|
return true;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
// src/vite-plugin/classNameHints.ts
|
|
210
|
-
var STRUCTURAL_TOKENS = [
|
|
211
|
-
// layout.rs
|
|
212
|
-
"flex",
|
|
213
|
-
"flex-row",
|
|
214
|
-
"flex-col",
|
|
215
|
-
"flex-row-reverse",
|
|
216
|
-
"flex-col-reverse",
|
|
217
|
-
"flex-wrap",
|
|
218
|
-
"flex-wrap-reverse",
|
|
219
|
-
"flex-nowrap",
|
|
220
|
-
"flex-1",
|
|
221
|
-
"flex-auto",
|
|
222
|
-
"flex-initial",
|
|
223
|
-
"flex-none",
|
|
224
|
-
"flex-grow",
|
|
225
|
-
"flex-grow-0",
|
|
226
|
-
"flex-shrink",
|
|
227
|
-
"flex-shrink-0",
|
|
228
|
-
"grow",
|
|
229
|
-
"grow-0",
|
|
230
|
-
"shrink",
|
|
231
|
-
"shrink-0",
|
|
232
|
-
"grid",
|
|
233
|
-
"block",
|
|
234
|
-
"inline-block",
|
|
235
|
-
"inline",
|
|
236
|
-
"inline-flex",
|
|
237
|
-
"inline-grid",
|
|
238
|
-
"contents",
|
|
239
|
-
"flow-root",
|
|
240
|
-
"hidden",
|
|
241
|
-
"items-center",
|
|
242
|
-
"items-start",
|
|
243
|
-
"items-end",
|
|
244
|
-
"items-baseline",
|
|
245
|
-
"items-stretch",
|
|
246
|
-
"justify-center",
|
|
247
|
-
"justify-start",
|
|
248
|
-
"justify-end",
|
|
249
|
-
"justify-between",
|
|
250
|
-
"justify-around",
|
|
251
|
-
"justify-evenly",
|
|
252
|
-
"content-start",
|
|
253
|
-
"content-end",
|
|
254
|
-
"content-center",
|
|
255
|
-
"content-between",
|
|
256
|
-
"content-around",
|
|
257
|
-
"content-evenly",
|
|
258
|
-
"content-stretch",
|
|
259
|
-
"self-auto",
|
|
260
|
-
"self-center",
|
|
261
|
-
"self-start",
|
|
262
|
-
"self-end",
|
|
263
|
-
"self-stretch",
|
|
264
|
-
"self-baseline",
|
|
265
|
-
"overflow-hidden",
|
|
266
|
-
"overflow-auto",
|
|
267
|
-
"overflow-scroll",
|
|
268
|
-
"overflow-visible",
|
|
269
|
-
"static",
|
|
270
|
-
"relative",
|
|
271
|
-
"absolute",
|
|
272
|
-
"fixed",
|
|
273
|
-
"sticky",
|
|
274
|
-
"aspect-square",
|
|
275
|
-
"aspect-video",
|
|
276
|
-
"w-full",
|
|
277
|
-
"h-full",
|
|
278
|
-
"min-w-full",
|
|
279
|
-
"max-w-full",
|
|
280
|
-
"min-h-full",
|
|
281
|
-
"max-h-full",
|
|
282
|
-
"w-screen",
|
|
283
|
-
"h-screen",
|
|
284
|
-
"min-w-screen",
|
|
285
|
-
"max-w-screen",
|
|
286
|
-
"min-h-screen",
|
|
287
|
-
"max-h-screen",
|
|
288
|
-
"w-auto",
|
|
289
|
-
"h-auto",
|
|
290
|
-
"m-auto",
|
|
291
|
-
"mx-auto",
|
|
292
|
-
"my-auto",
|
|
293
|
-
// grid.rs — web-only (see the module's own doc comment for why)
|
|
294
|
-
"grid-cols-none",
|
|
295
|
-
"grid-rows-none",
|
|
296
|
-
"grid-flow-row",
|
|
297
|
-
"grid-flow-col",
|
|
298
|
-
"grid-flow-dense",
|
|
299
|
-
"grid-flow-row-dense",
|
|
300
|
-
"grid-flow-col-dense",
|
|
301
|
-
"auto-cols-auto",
|
|
302
|
-
"auto-cols-min",
|
|
303
|
-
"auto-cols-max",
|
|
304
|
-
"auto-cols-fr",
|
|
305
|
-
"auto-rows-auto",
|
|
306
|
-
"auto-rows-min",
|
|
307
|
-
"auto-rows-max",
|
|
308
|
-
"auto-rows-fr",
|
|
309
|
-
"col-span-full",
|
|
310
|
-
"row-span-full",
|
|
311
|
-
"col-start-auto",
|
|
312
|
-
"col-end-auto",
|
|
313
|
-
"row-start-auto",
|
|
314
|
-
"row-end-auto",
|
|
315
|
-
"col",
|
|
316
|
-
"col-auto",
|
|
317
|
-
"row",
|
|
318
|
-
"row-auto",
|
|
319
|
-
"place-items-start",
|
|
320
|
-
"place-items-end",
|
|
321
|
-
"place-items-center",
|
|
322
|
-
"place-items-stretch",
|
|
323
|
-
"place-items-baseline",
|
|
324
|
-
"place-content-start",
|
|
325
|
-
"place-content-end",
|
|
326
|
-
"place-content-center",
|
|
327
|
-
"place-content-stretch",
|
|
328
|
-
"place-content-between",
|
|
329
|
-
"place-content-around",
|
|
330
|
-
"place-content-evenly",
|
|
331
|
-
"place-content-baseline",
|
|
332
|
-
"place-self-auto",
|
|
333
|
-
"place-self-start",
|
|
334
|
-
"place-self-end",
|
|
335
|
-
"place-self-center",
|
|
336
|
-
"place-self-stretch",
|
|
337
|
-
"justify-items-start",
|
|
338
|
-
"justify-items-end",
|
|
339
|
-
"justify-items-center",
|
|
340
|
-
"justify-items-stretch",
|
|
341
|
-
"justify-self-auto",
|
|
342
|
-
"justify-self-start",
|
|
343
|
-
"justify-self-end",
|
|
344
|
-
"justify-self-center",
|
|
345
|
-
"justify-self-stretch",
|
|
346
|
-
// transform.rs — web-only (see the module's own doc comment for why)
|
|
347
|
-
"transform-none",
|
|
348
|
-
"origin-center",
|
|
349
|
-
"origin-top",
|
|
350
|
-
"origin-top-right",
|
|
351
|
-
"origin-right",
|
|
352
|
-
"origin-bottom-right",
|
|
353
|
-
"origin-bottom",
|
|
354
|
-
"origin-bottom-left",
|
|
355
|
-
"origin-left",
|
|
356
|
-
"origin-top-left",
|
|
357
|
-
// filters.rs — web-only (see the module's own doc comment for why)
|
|
358
|
-
"blur",
|
|
359
|
-
"blur-sm",
|
|
360
|
-
"blur-md",
|
|
361
|
-
"blur-lg",
|
|
362
|
-
"blur-xl",
|
|
363
|
-
"blur-2xl",
|
|
364
|
-
"blur-3xl",
|
|
365
|
-
"blur-none",
|
|
366
|
-
"grayscale",
|
|
367
|
-
"grayscale-0",
|
|
368
|
-
"invert",
|
|
369
|
-
"invert-0",
|
|
370
|
-
"sepia",
|
|
371
|
-
"sepia-0",
|
|
372
|
-
"drop-shadow",
|
|
373
|
-
"drop-shadow-sm",
|
|
374
|
-
"drop-shadow-md",
|
|
375
|
-
"drop-shadow-lg",
|
|
376
|
-
"drop-shadow-xl",
|
|
377
|
-
"drop-shadow-2xl",
|
|
378
|
-
"drop-shadow-none",
|
|
379
|
-
"filter-none",
|
|
380
|
-
"backdrop-filter-none",
|
|
381
|
-
"backdrop-blur",
|
|
382
|
-
"backdrop-blur-sm",
|
|
383
|
-
"backdrop-blur-md",
|
|
384
|
-
"backdrop-blur-lg",
|
|
385
|
-
"backdrop-blur-xl",
|
|
386
|
-
"backdrop-blur-2xl",
|
|
387
|
-
"backdrop-blur-3xl",
|
|
388
|
-
"backdrop-blur-none",
|
|
389
|
-
"backdrop-grayscale",
|
|
390
|
-
"backdrop-grayscale-0",
|
|
391
|
-
"backdrop-invert",
|
|
392
|
-
"backdrop-invert-0",
|
|
393
|
-
"backdrop-sepia",
|
|
394
|
-
"backdrop-sepia-0",
|
|
395
|
-
// border.rs
|
|
396
|
-
"border",
|
|
397
|
-
"border-t",
|
|
398
|
-
"border-r",
|
|
399
|
-
"border-b",
|
|
400
|
-
"border-l",
|
|
401
|
-
"rounded",
|
|
402
|
-
"rounded-none",
|
|
403
|
-
"rounded-sm",
|
|
404
|
-
"rounded-md",
|
|
405
|
-
"rounded-lg",
|
|
406
|
-
"rounded-xl",
|
|
407
|
-
"rounded-2xl",
|
|
408
|
-
"rounded-3xl",
|
|
409
|
-
"rounded-full",
|
|
410
|
-
"ring",
|
|
411
|
-
"ring-0",
|
|
412
|
-
"ring-1",
|
|
413
|
-
"ring-2",
|
|
414
|
-
"ring-4",
|
|
415
|
-
"ring-8",
|
|
416
|
-
"ring-inset",
|
|
417
|
-
"ring-offset-0",
|
|
418
|
-
"ring-offset-1",
|
|
419
|
-
"ring-offset-2",
|
|
420
|
-
"ring-offset-4",
|
|
421
|
-
"ring-offset-8",
|
|
422
|
-
"outline",
|
|
423
|
-
"outline-none",
|
|
424
|
-
"border-solid",
|
|
425
|
-
"border-dashed",
|
|
426
|
-
"border-dotted",
|
|
427
|
-
"border-none",
|
|
428
|
-
// typography.rs
|
|
429
|
-
"font-thin",
|
|
430
|
-
"font-normal",
|
|
431
|
-
"font-medium",
|
|
432
|
-
"font-semibold",
|
|
433
|
-
"font-bold",
|
|
434
|
-
"font-extrabold",
|
|
435
|
-
"uppercase",
|
|
436
|
-
"lowercase",
|
|
437
|
-
"capitalize",
|
|
438
|
-
"underline",
|
|
439
|
-
"line-through",
|
|
440
|
-
"no-underline",
|
|
441
|
-
"truncate",
|
|
442
|
-
"text-xs",
|
|
443
|
-
"text-sm",
|
|
444
|
-
"text-base",
|
|
445
|
-
"text-lg",
|
|
446
|
-
"text-xl",
|
|
447
|
-
"text-2xl",
|
|
448
|
-
"text-3xl",
|
|
449
|
-
"text-4xl",
|
|
450
|
-
"text-left",
|
|
451
|
-
"text-center",
|
|
452
|
-
"text-right",
|
|
453
|
-
"text-justify",
|
|
454
|
-
// typography.rs — Phase 20 (typography completeness)
|
|
455
|
-
"italic",
|
|
456
|
-
"not-italic",
|
|
457
|
-
"leading-none",
|
|
458
|
-
"leading-tight",
|
|
459
|
-
"leading-snug",
|
|
460
|
-
"leading-normal",
|
|
461
|
-
"leading-relaxed",
|
|
462
|
-
"leading-loose",
|
|
463
|
-
"tracking-tighter",
|
|
464
|
-
"tracking-tight",
|
|
465
|
-
"tracking-normal",
|
|
466
|
-
"tracking-wide",
|
|
467
|
-
"tracking-wider",
|
|
468
|
-
"tracking-widest",
|
|
469
|
-
"decoration-auto",
|
|
470
|
-
"decoration-from-font",
|
|
471
|
-
"decoration-solid",
|
|
472
|
-
"decoration-dashed",
|
|
473
|
-
"decoration-dotted",
|
|
474
|
-
"decoration-double",
|
|
475
|
-
"decoration-wavy",
|
|
476
|
-
"underline-offset-auto",
|
|
477
|
-
"underline-offset-0",
|
|
478
|
-
"underline-offset-1",
|
|
479
|
-
"underline-offset-2",
|
|
480
|
-
"underline-offset-4",
|
|
481
|
-
"underline-offset-8",
|
|
482
|
-
"text-wrap",
|
|
483
|
-
"text-nowrap",
|
|
484
|
-
"text-balance",
|
|
485
|
-
"text-pretty",
|
|
486
|
-
"whitespace-normal",
|
|
487
|
-
"whitespace-nowrap",
|
|
488
|
-
"whitespace-pre",
|
|
489
|
-
"whitespace-pre-wrap",
|
|
490
|
-
"whitespace-pre-line",
|
|
491
|
-
"break-normal",
|
|
492
|
-
"break-words",
|
|
493
|
-
"break-all",
|
|
494
|
-
"align-baseline",
|
|
495
|
-
"align-top",
|
|
496
|
-
"align-middle",
|
|
497
|
-
"align-bottom",
|
|
498
|
-
"align-text-top",
|
|
499
|
-
"align-text-bottom",
|
|
500
|
-
"align-sub",
|
|
501
|
-
"align-super",
|
|
502
|
-
"list-none",
|
|
503
|
-
"list-disc",
|
|
504
|
-
"list-decimal",
|
|
505
|
-
"list-inside",
|
|
506
|
-
"list-outside",
|
|
507
|
-
"hyphens-none",
|
|
508
|
-
"hyphens-manual",
|
|
509
|
-
"hyphens-auto",
|
|
510
|
-
// effects.rs
|
|
511
|
-
"shadow",
|
|
512
|
-
"shadow-sm",
|
|
513
|
-
"shadow-md",
|
|
514
|
-
"shadow-lg",
|
|
515
|
-
"shadow-xl",
|
|
516
|
-
"shadow-2xl",
|
|
517
|
-
"shadow-inner",
|
|
518
|
-
"shadow-none",
|
|
519
|
-
"transition",
|
|
520
|
-
"transition-none",
|
|
521
|
-
"ease-linear",
|
|
522
|
-
"ease-in",
|
|
523
|
-
"ease-out",
|
|
524
|
-
"ease-in-out",
|
|
525
|
-
"cursor-pointer",
|
|
526
|
-
"cursor-default",
|
|
527
|
-
"cursor-not-allowed",
|
|
528
|
-
"cursor-wait",
|
|
529
|
-
"select-none",
|
|
530
|
-
"select-text",
|
|
531
|
-
"select-all",
|
|
532
|
-
"pointer-events-none",
|
|
533
|
-
"pointer-events-auto",
|
|
534
|
-
// effects.rs — Phase 22 (effects completeness)
|
|
535
|
-
"text-shadow",
|
|
536
|
-
"text-shadow-sm",
|
|
537
|
-
"text-shadow-lg",
|
|
538
|
-
"text-shadow-none",
|
|
539
|
-
"mix-blend-normal",
|
|
540
|
-
"mix-blend-multiply",
|
|
541
|
-
"mix-blend-screen",
|
|
542
|
-
"mix-blend-overlay",
|
|
543
|
-
"mix-blend-darken",
|
|
544
|
-
"mix-blend-lighten",
|
|
545
|
-
"mix-blend-color-dodge",
|
|
546
|
-
"mix-blend-color-burn",
|
|
547
|
-
"mix-blend-hard-light",
|
|
548
|
-
"mix-blend-soft-light",
|
|
549
|
-
"mix-blend-difference",
|
|
550
|
-
"mix-blend-exclusion",
|
|
551
|
-
"mix-blend-hue",
|
|
552
|
-
"mix-blend-saturation",
|
|
553
|
-
"mix-blend-color",
|
|
554
|
-
"mix-blend-luminosity",
|
|
555
|
-
"mix-blend-plus-lighter",
|
|
556
|
-
"bg-blend-normal",
|
|
557
|
-
"bg-blend-multiply",
|
|
558
|
-
"bg-blend-screen",
|
|
559
|
-
"bg-blend-overlay",
|
|
560
|
-
"bg-blend-darken",
|
|
561
|
-
"bg-blend-lighten",
|
|
562
|
-
"bg-blend-color-dodge",
|
|
563
|
-
"bg-blend-color-burn",
|
|
564
|
-
"bg-blend-hard-light",
|
|
565
|
-
"bg-blend-soft-light",
|
|
566
|
-
"bg-blend-difference",
|
|
567
|
-
"bg-blend-exclusion",
|
|
568
|
-
"bg-blend-hue",
|
|
569
|
-
"bg-blend-saturation",
|
|
570
|
-
"bg-blend-color",
|
|
571
|
-
"bg-blend-luminosity",
|
|
572
|
-
"bg-blend-plus-lighter",
|
|
573
|
-
"animate-spin",
|
|
574
|
-
"animate-ping",
|
|
575
|
-
"animate-pulse",
|
|
576
|
-
"animate-bounce",
|
|
577
|
-
"animate-none",
|
|
578
|
-
// interactivity.rs — Phase 23 (interactivity & sizing rest)
|
|
579
|
-
"resize",
|
|
580
|
-
"resize-none",
|
|
581
|
-
"resize-y",
|
|
582
|
-
"resize-x",
|
|
583
|
-
"touch-auto",
|
|
584
|
-
"touch-none",
|
|
585
|
-
"touch-pan-x",
|
|
586
|
-
"touch-pan-left",
|
|
587
|
-
"touch-pan-right",
|
|
588
|
-
"touch-pan-y",
|
|
589
|
-
"touch-pan-up",
|
|
590
|
-
"touch-pan-down",
|
|
591
|
-
"touch-pinch-zoom",
|
|
592
|
-
"touch-manipulation",
|
|
593
|
-
"will-change-auto",
|
|
594
|
-
"will-change-scroll",
|
|
595
|
-
"will-change-contents",
|
|
596
|
-
"will-change-transform",
|
|
597
|
-
"sr-only",
|
|
598
|
-
"not-sr-only",
|
|
599
|
-
"border-collapse",
|
|
600
|
-
"border-separate",
|
|
601
|
-
"table-auto",
|
|
602
|
-
"table-fixed",
|
|
603
|
-
"caption-top",
|
|
604
|
-
"caption-bottom",
|
|
605
|
-
"stroke-width-0",
|
|
606
|
-
"stroke-width-1",
|
|
607
|
-
"stroke-width-2",
|
|
608
|
-
// spacing.rs — Phase 23 (size-* shorthand + fraction-based width/height)
|
|
609
|
-
"size-full",
|
|
610
|
-
"size-auto",
|
|
611
|
-
"size-px",
|
|
612
|
-
"w-1/2",
|
|
613
|
-
"w-1/3",
|
|
614
|
-
"w-2/3",
|
|
615
|
-
"w-1/4",
|
|
616
|
-
"w-2/4",
|
|
617
|
-
"w-3/4",
|
|
618
|
-
"w-1/5",
|
|
619
|
-
"w-2/5",
|
|
620
|
-
"w-3/5",
|
|
621
|
-
"w-4/5",
|
|
622
|
-
"w-1/6",
|
|
623
|
-
"w-5/6",
|
|
624
|
-
"w-1/12",
|
|
625
|
-
"w-5/12",
|
|
626
|
-
"w-7/12",
|
|
627
|
-
"w-11/12",
|
|
628
|
-
"h-1/2",
|
|
629
|
-
"h-1/3",
|
|
630
|
-
"h-2/3",
|
|
631
|
-
"h-1/4",
|
|
632
|
-
"h-2/4",
|
|
633
|
-
"h-3/4",
|
|
634
|
-
"h-1/5",
|
|
635
|
-
"h-2/5",
|
|
636
|
-
"h-3/5",
|
|
637
|
-
"h-4/5",
|
|
638
|
-
"h-1/6",
|
|
639
|
-
"h-5/6",
|
|
640
|
-
// scroll.rs — Phase 23 (scroll-behavior/-margin/-padding, scroll-snap)
|
|
641
|
-
"scroll-auto",
|
|
642
|
-
"scroll-smooth",
|
|
643
|
-
"snap-start",
|
|
644
|
-
"snap-end",
|
|
645
|
-
"snap-center",
|
|
646
|
-
"snap-align-none",
|
|
647
|
-
"snap-normal",
|
|
648
|
-
"snap-always",
|
|
649
|
-
"snap-none",
|
|
650
|
-
"snap-x",
|
|
651
|
-
"snap-y",
|
|
652
|
-
"snap-both",
|
|
653
|
-
"snap-mandatory",
|
|
654
|
-
"snap-proximity",
|
|
655
|
-
// divide.rs
|
|
656
|
-
"divide-x",
|
|
657
|
-
"divide-y",
|
|
658
|
-
// background.rs — web-only (see the module's own doc comment for why)
|
|
659
|
-
"bg-top",
|
|
660
|
-
"bg-bottom",
|
|
661
|
-
"bg-left",
|
|
662
|
-
"bg-right",
|
|
663
|
-
"bg-center",
|
|
664
|
-
"bg-left-top",
|
|
665
|
-
"bg-left-bottom",
|
|
666
|
-
"bg-right-top",
|
|
667
|
-
"bg-right-bottom",
|
|
668
|
-
"bg-auto",
|
|
669
|
-
"bg-cover",
|
|
670
|
-
"bg-contain",
|
|
671
|
-
"bg-repeat",
|
|
672
|
-
"bg-no-repeat",
|
|
673
|
-
"bg-repeat-x",
|
|
674
|
-
"bg-repeat-y",
|
|
675
|
-
"bg-repeat-round",
|
|
676
|
-
"bg-repeat-space",
|
|
677
|
-
"bg-fixed",
|
|
678
|
-
"bg-local",
|
|
679
|
-
"bg-scroll",
|
|
680
|
-
"bg-clip-border",
|
|
681
|
-
"bg-clip-padding",
|
|
682
|
-
"bg-clip-content",
|
|
683
|
-
"bg-clip-text",
|
|
684
|
-
"bg-origin-border",
|
|
685
|
-
"bg-origin-padding",
|
|
686
|
-
"bg-origin-content",
|
|
687
|
-
"bg-none",
|
|
688
|
-
"bg-linear-to-t",
|
|
689
|
-
"bg-linear-to-tr",
|
|
690
|
-
"bg-linear-to-r",
|
|
691
|
-
"bg-linear-to-br",
|
|
692
|
-
"bg-linear-to-b",
|
|
693
|
-
"bg-linear-to-bl",
|
|
694
|
-
"bg-linear-to-l",
|
|
695
|
-
"bg-linear-to-tl",
|
|
696
|
-
"bg-radial",
|
|
697
|
-
"bg-conic",
|
|
698
|
-
// Ancestor/sibling-state marker classes — carry no styles of their own,
|
|
699
|
-
// just a selector target for group-hover:/peer-hover:/etc. below (see
|
|
700
|
-
// unknownClassWarnings.ts's MARKER_CLASSES for why they need special
|
|
701
|
-
// handling there too).
|
|
702
|
-
"group",
|
|
703
|
-
"peer",
|
|
704
|
-
// registry.rs modifiers — bare tokens only, not composed with a
|
|
705
|
-
// following utility (see this module's doc header / the Phase 15 plan).
|
|
706
|
-
"hover:",
|
|
707
|
-
"focus:",
|
|
708
|
-
"focus-visible:",
|
|
709
|
-
"focus-within:",
|
|
710
|
-
"active:",
|
|
711
|
-
"visited:",
|
|
712
|
-
"disabled:",
|
|
713
|
-
"checked:",
|
|
714
|
-
"group-hover:",
|
|
715
|
-
"group-focus:",
|
|
716
|
-
"peer-hover:",
|
|
717
|
-
"peer-focus:",
|
|
718
|
-
"peer-checked:",
|
|
719
|
-
"dark:",
|
|
720
|
-
"motion-safe:",
|
|
721
|
-
"motion-reduce:",
|
|
722
|
-
"print:",
|
|
723
|
-
"sm:",
|
|
724
|
-
"md:",
|
|
725
|
-
"lg:",
|
|
726
|
-
"xl:",
|
|
727
|
-
"2xl:",
|
|
728
|
-
// registry.rs modifiers — Phase 24 (expanded variant system), the
|
|
729
|
-
// FIXED/static additions only. Deliberately excluded: every genuinely
|
|
730
|
-
// parameterized modifier (has-[...]/group-has-[...]/peer-has-[...]/
|
|
731
|
-
// data-[...]/aria-[...]/not-[...]/min-[...]/max-[...], and the
|
|
732
|
-
// generalized group-<pseudo>/peer-<pseudo> beyond the five hardcoded
|
|
733
|
-
// combos above) — these have no finite enumerable set (their whole point
|
|
734
|
-
// is arbitrary user-supplied content), so there's nothing meaningful to
|
|
735
|
-
// suggest beyond the bare prefix, same reasoning as every other
|
|
736
|
-
// arbitrary-value exclusion in this file. `not-hover:`/`not-disabled:`/
|
|
737
|
-
// etc. (wrapping a KNOWN static modifier) are excluded for the same
|
|
738
|
-
// reason — enumerable in principle, but a full cross-product with every
|
|
739
|
-
// modifier above would be more noise than signal for an editor hint list.
|
|
740
|
-
"first:",
|
|
741
|
-
"last:",
|
|
742
|
-
"only:",
|
|
743
|
-
"odd:",
|
|
744
|
-
"even:",
|
|
745
|
-
"open:",
|
|
746
|
-
"inert:",
|
|
747
|
-
"aria-checked:",
|
|
748
|
-
"aria-disabled:",
|
|
749
|
-
"aria-expanded:",
|
|
750
|
-
"aria-hidden:",
|
|
751
|
-
"aria-pressed:",
|
|
752
|
-
"aria-readonly:",
|
|
753
|
-
"aria-required:",
|
|
754
|
-
"aria-selected:",
|
|
755
|
-
"aria-busy:",
|
|
756
|
-
// registry.rs modifiers, added later — same "fixed/static, finite" bar
|
|
757
|
-
// as the Phase 24 block above. Structural -of-type/empty, form-state and
|
|
758
|
-
// validation pseudo-classes, other native pseudo-classes with no aria-*
|
|
759
|
-
// counterpart, a pseudo-element, pointer media variants, and the
|
|
760
|
-
// direct-children/all-descendants variants. "supports-[...]:"/"in-*:" are
|
|
761
|
-
// deliberately excluded here for the same "no finite enumerable set"
|
|
762
|
-
// reason as has-[...]:/group-<pseudo>: above.
|
|
763
|
-
"first-of-type:",
|
|
764
|
-
"last-of-type:",
|
|
765
|
-
"only-of-type:",
|
|
766
|
-
"empty:",
|
|
767
|
-
"enabled:",
|
|
768
|
-
"read-only:",
|
|
769
|
-
"required:",
|
|
770
|
-
"optional:",
|
|
771
|
-
"valid:",
|
|
772
|
-
"invalid:",
|
|
773
|
-
"in-range:",
|
|
774
|
-
"out-of-range:",
|
|
775
|
-
"default:",
|
|
776
|
-
"indeterminate:",
|
|
777
|
-
"placeholder-shown:",
|
|
778
|
-
"autofill:",
|
|
779
|
-
"user-valid:",
|
|
780
|
-
"user-invalid:",
|
|
781
|
-
"target:",
|
|
782
|
-
"fullscreen:",
|
|
783
|
-
"popover-open:",
|
|
784
|
-
"details-content:",
|
|
785
|
-
"pointer-coarse:",
|
|
786
|
-
"pointer-fine:",
|
|
787
|
-
"any-pointer-coarse:",
|
|
788
|
-
"any-pointer-fine:",
|
|
789
|
-
"*:",
|
|
790
|
-
"**:",
|
|
791
|
-
// Phase 25 (container queries & arbitrary properties). "@container" is a
|
|
792
|
-
// real UTILITY (container-type: inline-size), not a modifier — included
|
|
793
|
-
// as a bare token like "flex"/"hidden" above, not with the trailing ":"
|
|
794
|
-
// the modifier tokens below get. "@sm:"/"@md:"/"@lg:"/"@xl:"/"@2xl:" are
|
|
795
|
-
// container-responsive modifiers (registry.rs's `is_container_responsive`),
|
|
796
|
-
// and "starting:" wraps in @starting-style. Deliberately excluded, same
|
|
797
|
-
// "no finite enumerable set" reasoning as Phase 24's exclusions:
|
|
798
|
-
// "@min-[...]:"/"@max-[...]:" (arbitrary container breakpoints) and every
|
|
799
|
-
// `[property:value]` arbitrary property — both are open-ended by design.
|
|
800
|
-
"@container",
|
|
801
|
-
"@sm:",
|
|
802
|
-
"@md:",
|
|
803
|
-
"@lg:",
|
|
804
|
-
"@xl:",
|
|
805
|
-
"@2xl:",
|
|
806
|
-
"starting:"
|
|
807
|
-
];
|
|
808
|
-
var COLOR_PREFIXES = [
|
|
809
|
-
"bg-",
|
|
810
|
-
"text-",
|
|
811
|
-
"border-",
|
|
812
|
-
"divide-",
|
|
813
|
-
"decoration-",
|
|
814
|
-
"from-",
|
|
815
|
-
"via-",
|
|
816
|
-
"to-",
|
|
817
|
-
"text-shadow-",
|
|
818
|
-
"ring-",
|
|
819
|
-
"ring-offset-",
|
|
820
|
-
"caret-",
|
|
821
|
-
"accent-",
|
|
822
|
-
"fill-",
|
|
823
|
-
"stroke-"
|
|
824
|
-
];
|
|
825
|
-
var SPACING_PREFIXES = [
|
|
826
|
-
"p-",
|
|
827
|
-
"px-",
|
|
828
|
-
"py-",
|
|
829
|
-
"pt-",
|
|
830
|
-
"pr-",
|
|
831
|
-
"pb-",
|
|
832
|
-
"pl-",
|
|
833
|
-
"m-",
|
|
834
|
-
"mx-",
|
|
835
|
-
"my-",
|
|
836
|
-
"mt-",
|
|
837
|
-
"mr-",
|
|
838
|
-
"mb-",
|
|
839
|
-
"ml-",
|
|
840
|
-
"gap-",
|
|
841
|
-
"gap-x-",
|
|
842
|
-
"gap-y-",
|
|
843
|
-
"w-",
|
|
844
|
-
"h-",
|
|
845
|
-
"min-w-",
|
|
846
|
-
"max-w-",
|
|
847
|
-
"min-h-",
|
|
848
|
-
"max-h-",
|
|
849
|
-
"size-",
|
|
850
|
-
"top-",
|
|
851
|
-
"right-",
|
|
852
|
-
"bottom-",
|
|
853
|
-
"left-",
|
|
854
|
-
"inset-",
|
|
855
|
-
"space-x-",
|
|
856
|
-
"space-y-",
|
|
857
|
-
"indent-",
|
|
858
|
-
"scroll-m-",
|
|
859
|
-
"scroll-mx-",
|
|
860
|
-
"scroll-my-",
|
|
861
|
-
"scroll-mt-",
|
|
862
|
-
"scroll-mr-",
|
|
863
|
-
"scroll-mb-",
|
|
864
|
-
"scroll-ml-",
|
|
865
|
-
"scroll-p-",
|
|
866
|
-
"scroll-px-",
|
|
867
|
-
"scroll-py-",
|
|
868
|
-
"scroll-pt-",
|
|
869
|
-
"scroll-pr-",
|
|
870
|
-
"scroll-pb-",
|
|
871
|
-
"scroll-pl-"
|
|
872
|
-
];
|
|
873
|
-
var SIZE_PREFIXES = ["w-", "h-", "min-w-", "max-w-", "min-h-", "max-h-", "size-"];
|
|
874
|
-
var NAMED_SIZES = ["sm", "md", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "7xl", "8xl", "9xl"];
|
|
875
|
-
function buildClassTokens(theme) {
|
|
876
|
-
const tokens = new Set(STRUCTURAL_TOKENS);
|
|
877
|
-
for (const colorKey of Object.keys(theme.colors)) {
|
|
878
|
-
for (const prefix of COLOR_PREFIXES) tokens.add(`${prefix}${colorKey}`);
|
|
879
|
-
}
|
|
880
|
-
for (const spacingKey of Object.keys(theme.spacing)) {
|
|
881
|
-
for (const prefix of SPACING_PREFIXES) tokens.add(`${prefix}${spacingKey}`);
|
|
882
|
-
}
|
|
883
|
-
for (const size of NAMED_SIZES) {
|
|
884
|
-
for (const prefix of SIZE_PREFIXES) tokens.add(`${prefix}${size}`);
|
|
885
|
-
}
|
|
886
|
-
return Array.from(tokens).sort();
|
|
887
|
-
}
|
|
888
|
-
function buildClassNameHintsDts(tokens) {
|
|
889
|
-
const literals = tokens.map((t) => ` | '${t}'`).join("\n");
|
|
890
|
-
return [
|
|
891
|
-
"// Generated by Kbach \u2014 do not edit",
|
|
892
|
-
"// Editor autocomplete for className \u2014 see packages/react/src/vite-plugin/classNameHints.ts",
|
|
893
|
-
"",
|
|
894
|
-
"type KbachClassToken =",
|
|
895
|
-
literals,
|
|
896
|
-
";",
|
|
897
|
-
"",
|
|
898
|
-
"export type KbachClassName = KbachClassToken | `${string} ${KbachClassToken}` | (string & {});",
|
|
899
|
-
"",
|
|
900
|
-
"declare module 'react' {",
|
|
901
|
-
" interface HTMLAttributes<T> {",
|
|
902
|
-
" className?: KbachClassName | undefined;",
|
|
903
|
-
" }",
|
|
904
|
-
" interface SVGAttributes<T> {",
|
|
905
|
-
" className?: KbachClassName | undefined;",
|
|
906
|
-
" }",
|
|
907
|
-
"}",
|
|
908
|
-
""
|
|
909
|
-
].join("\n");
|
|
910
|
-
}
|
|
911
|
-
|
|
912
209
|
// src/staticCss/engine.ts
|
|
913
210
|
import { readFileSync as readFileSync2 } from "fs";
|
|
914
211
|
import { join as join3 } from "path";
|
|
@@ -1102,8 +399,8 @@ function scanDir(dir, onFile, depth = 0, fileMatch = DEFAULT_FILE_MATCH) {
|
|
|
1102
399
|
|
|
1103
400
|
// src/vite-plugin/unknownClassWarnings.ts
|
|
1104
401
|
import { join as join2 } from "path";
|
|
1105
|
-
|
|
1106
|
-
|
|
402
|
+
|
|
403
|
+
// src/terminalWarn.ts
|
|
1107
404
|
var useColor = !!process.stdout?.isTTY && !process.env.NO_COLOR;
|
|
1108
405
|
var paint = (code, s) => useColor ? `\x1B[${code}m${s}\x1B[0m` : s;
|
|
1109
406
|
var green = (s) => paint("32", s);
|
|
@@ -1111,9 +408,14 @@ var blue = (s) => paint("34", s);
|
|
|
1111
408
|
var white = (s) => paint("97", s);
|
|
1112
409
|
var gray = (s) => paint("90", s);
|
|
1113
410
|
var bold = (s) => paint("1", s);
|
|
1114
|
-
var ARROW = () => green("\u2192");
|
|
1115
|
-
var TAG = () => bold(green("[kbach]"));
|
|
1116
411
|
var highlight = (s) => bold(white(s));
|
|
412
|
+
function kbachTag() {
|
|
413
|
+
return `${green("\u2192")} ${bold(green("[Kbach]"))}`;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// src/vite-plugin/unknownClassWarnings.ts
|
|
417
|
+
var CSS_CLASS_SELECTOR_RE = /\.(-?[a-zA-Z_][a-zA-Z0-9_-]*)/g;
|
|
418
|
+
var CSS_FILE_RE = /\.(css|scss|sass|less)$/;
|
|
1117
419
|
function findLineCol(code, needle) {
|
|
1118
420
|
const index = code.indexOf(needle);
|
|
1119
421
|
if (index === -1) return null;
|
|
@@ -1143,15 +445,21 @@ function stripModifierPrefix(token) {
|
|
|
1143
445
|
return token.replace(/^(?:[a-zA-Z0-9_/-]+:)+/, "");
|
|
1144
446
|
}
|
|
1145
447
|
var MARKER_CLASSES = /* @__PURE__ */ new Set(["group", "peer"]);
|
|
448
|
+
function isMarkerClass(base) {
|
|
449
|
+
if (MARKER_CLASSES.has(base)) return true;
|
|
450
|
+
const slashIdx = base.lastIndexOf("/");
|
|
451
|
+
if (slashIdx === -1) return false;
|
|
452
|
+
return MARKER_CLASSES.has(base.slice(0, slashIdx)) && slashIdx < base.length - 1;
|
|
453
|
+
}
|
|
1146
454
|
function warnIfUnknownClass(token, filePath, code, isResolvable, projectCssClasses, warnedTokens) {
|
|
1147
455
|
if (isResolvable || warnedTokens.has(token)) return;
|
|
1148
456
|
const base = stripModifierPrefix(token);
|
|
1149
|
-
if (!base || projectCssClasses.has(base) ||
|
|
457
|
+
if (!base || projectCssClasses.has(base) || isMarkerClass(base)) return;
|
|
1150
458
|
warnedTokens.add(token);
|
|
1151
459
|
const pos = findLineCol(code, token);
|
|
1152
460
|
const location = pos ? `${blue(filePath)}${green(`:${pos.line}:${pos.column}`)}` : blue(filePath);
|
|
1153
461
|
console.warn(
|
|
1154
|
-
`${
|
|
462
|
+
`${kbachTag()} ${gray("Unknown class")} ${highlight(token)} ${gray("\u2014 no Kbach utility or project CSS rule matches it. Typo?")}
|
|
1155
463
|
${bold("at")} ${location}`
|
|
1156
464
|
);
|
|
1157
465
|
}
|
|
@@ -1303,13 +611,6 @@ function kbach(options = {}) {
|
|
|
1303
611
|
function mainCSSFile() {
|
|
1304
612
|
return mainCSSFilePath;
|
|
1305
613
|
}
|
|
1306
|
-
function classNameHintsFile() {
|
|
1307
|
-
return join4(root, ".kbach", "kbach-classnames.d.ts");
|
|
1308
|
-
}
|
|
1309
|
-
function writeClassNameHints() {
|
|
1310
|
-
const dts = buildClassNameHintsDts(buildClassTokens(theme));
|
|
1311
|
-
writeFileEnsuringDir(classNameHintsFile(), dts);
|
|
1312
|
-
}
|
|
1313
614
|
function syncMainCSSFile(server) {
|
|
1314
615
|
const changed = writeKbachToFile(mainCSSFile(), engine.generateCSS(), readSourceFile, writeFileEnsuringDir);
|
|
1315
616
|
if (changed && server) server.watcher.emit("change", mainCSSFile());
|
|
@@ -1336,7 +637,6 @@ function kbach(options = {}) {
|
|
|
1336
637
|
engine.initialScan();
|
|
1337
638
|
engine.processSafelist();
|
|
1338
639
|
writeKbachToFile(mainCSSFile(), engine.generateCSS(), readSourceFile, writeFileEnsuringDir);
|
|
1339
|
-
writeClassNameHints();
|
|
1340
640
|
},
|
|
1341
641
|
// handleHotUpdate covers edits; add/unlink (create/delete) land on the
|
|
1342
642
|
// raw watcher instead — Vite's handleHotUpdate hook only fires for
|
|
@@ -1373,6 +673,10 @@ function kbach(options = {}) {
|
|
|
1373
673
|
}
|
|
1374
674
|
|
|
1375
675
|
export {
|
|
676
|
+
gray,
|
|
677
|
+
bold,
|
|
678
|
+
highlight,
|
|
679
|
+
kbachTag,
|
|
1376
680
|
createKbachStaticCssEngine,
|
|
1377
681
|
findMainCSSFile,
|
|
1378
682
|
DEFAULT_SCAN_DIRS,
|