@vinaverse/tokens 0.1.0-alpha.2 → 0.1.0-alpha.21

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/index.js CHANGED
@@ -27,6 +27,10 @@ var tokens_default = {
27
27
  $type: "color",
28
28
  $value: "#545B67"
29
29
  },
30
+ textSecondary: {
31
+ $type: "color",
32
+ $value: "#454B55"
33
+ },
30
34
  primary: {
31
35
  $type: "color",
32
36
  $value: "#2B57CF"
@@ -86,6 +90,14 @@ var tokens_default = {
86
90
  focus: {
87
91
  $type: "color",
88
92
  $value: "#2B57CF"
93
+ },
94
+ primarySubtle: {
95
+ $type: "color",
96
+ $value: "#F5F6F8"
97
+ },
98
+ rating: {
99
+ $type: "color",
100
+ $value: "#7A4F00"
89
101
  }
90
102
  },
91
103
  dark: {
@@ -113,6 +125,10 @@ var tokens_default = {
113
125
  $type: "color",
114
126
  $value: "#A6ADBA"
115
127
  },
128
+ textSecondary: {
129
+ $type: "color",
130
+ $value: "#BEC4CF"
131
+ },
116
132
  primary: {
117
133
  $type: "color",
118
134
  $value: "#8DB0FF"
@@ -172,6 +188,14 @@ var tokens_default = {
172
188
  focus: {
173
189
  $type: "color",
174
190
  $value: "#8DB0FF"
191
+ },
192
+ primarySubtle: {
193
+ $type: "color",
194
+ $value: "#181B21"
195
+ },
196
+ rating: {
197
+ $type: "color",
198
+ $value: "#E6B85C"
175
199
  }
176
200
  }
177
201
  },
@@ -262,9 +286,13 @@ var tokens_default = {
262
286
  }
263
287
  },
264
288
  motion: {
289
+ instant: {
290
+ $type: "duration",
291
+ $value: 80
292
+ },
265
293
  fast: {
266
294
  $type: "duration",
267
- $value: 120
295
+ $value: 140
268
296
  },
269
297
  normal: {
270
298
  $type: "duration",
@@ -274,6 +302,26 @@ var tokens_default = {
274
302
  $type: "duration",
275
303
  $value: 600,
276
304
  $description: "how long a connecting banner waits before it shows, so a quick connection never flashes one"
305
+ },
306
+ base: {
307
+ $type: "duration",
308
+ $value: 220
309
+ },
310
+ slow: {
311
+ $type: "duration",
312
+ $value: 320
313
+ },
314
+ stagger: {
315
+ $type: "duration",
316
+ $value: 30
317
+ },
318
+ rise: {
319
+ $type: "dimension",
320
+ $value: 8
321
+ },
322
+ pressScale: {
323
+ $type: "number",
324
+ $value: 0.97
277
325
  }
278
326
  },
279
327
  size: {
@@ -291,6 +339,333 @@ var tokens_default = {
291
339
  $description: "the AI disclosure is never drawn smaller"
292
340
  }
293
341
  },
342
+ chat: {
343
+ $description: "The chat shell (spec 00), kit defaults a tenant overrides (ThemeOverrides.chat): elevation draws in light only.",
344
+ gutter: {
345
+ $type: "dimension",
346
+ $value: 16
347
+ },
348
+ gap: {
349
+ sameAuthor: {
350
+ $type: "dimension",
351
+ $value: 4
352
+ },
353
+ authorChange: {
354
+ $type: "dimension",
355
+ $value: 12
356
+ },
357
+ block: {
358
+ $type: "dimension",
359
+ $value: 8
360
+ }
361
+ },
362
+ bubble: {
363
+ padX: {
364
+ $type: "dimension",
365
+ $value: 14
366
+ },
367
+ padY: {
368
+ $type: "dimension",
369
+ $value: 10
370
+ },
371
+ maxWidth: {
372
+ $type: "number",
373
+ $value: 0.82
374
+ }
375
+ },
376
+ card: {
377
+ pad: {
378
+ $type: "dimension",
379
+ $value: 14
380
+ },
381
+ gap: {
382
+ $type: "dimension",
383
+ $value: 8
384
+ },
385
+ carouselGap: {
386
+ $type: "dimension",
387
+ $value: 10
388
+ },
389
+ carouselWidth: {
390
+ $type: "dimension",
391
+ $value: 214
392
+ }
393
+ },
394
+ chip: {
395
+ height: {
396
+ $type: "dimension",
397
+ $value: 38
398
+ },
399
+ gap: {
400
+ $type: "dimension",
401
+ $value: 8
402
+ }
403
+ },
404
+ header: {
405
+ height: {
406
+ $type: "dimension",
407
+ $value: 56
408
+ }
409
+ },
410
+ composer: {
411
+ minHeight: {
412
+ $type: "dimension",
413
+ $value: 48
414
+ }
415
+ },
416
+ input: {
417
+ gap: {
418
+ $type: "dimension",
419
+ $value: 12
420
+ }
421
+ },
422
+ radius: {
423
+ bubble: {
424
+ $type: "dimension",
425
+ $value: 20
426
+ },
427
+ bubbleTail: {
428
+ $type: "dimension",
429
+ $value: 6
430
+ },
431
+ card: {
432
+ $type: "dimension",
433
+ $value: 16
434
+ },
435
+ cardMedia: {
436
+ $type: "dimension",
437
+ $value: 12
438
+ },
439
+ chip: {
440
+ $type: "dimension",
441
+ $value: 999
442
+ },
443
+ slot: {
444
+ $type: "dimension",
445
+ $value: 12
446
+ },
447
+ field: {
448
+ $type: "dimension",
449
+ $value: 12
450
+ },
451
+ composer: {
452
+ $type: "dimension",
453
+ $value: 24
454
+ },
455
+ sheet: {
456
+ $type: "dimension",
457
+ $value: 28
458
+ }
459
+ },
460
+ elevation: {
461
+ card: {
462
+ $type: "shadow",
463
+ $value: {
464
+ offsetY: 1,
465
+ blur: 3,
466
+ opacity: 0.08
467
+ }
468
+ },
469
+ raised: {
470
+ $type: "shadow",
471
+ $value: {
472
+ offsetY: 4,
473
+ blur: 12,
474
+ opacity: 0.08
475
+ }
476
+ },
477
+ overlay: {
478
+ $type: "shadow",
479
+ $value: {
480
+ offsetY: 12,
481
+ blur: 28,
482
+ opacity: 0.12
483
+ }
484
+ },
485
+ sheet: {
486
+ $type: "shadow",
487
+ $value: {
488
+ offsetY: -4,
489
+ blur: 16,
490
+ opacity: 0.08
491
+ }
492
+ }
493
+ },
494
+ type: {
495
+ bubble: {
496
+ size: {
497
+ $type: "dimension",
498
+ $value: 16
499
+ },
500
+ line: {
501
+ $type: "dimension",
502
+ $value: 22
503
+ },
504
+ weight: {
505
+ $type: "fontWeight",
506
+ $value: 400
507
+ }
508
+ },
509
+ meta: {
510
+ size: {
511
+ $type: "dimension",
512
+ $value: 12
513
+ },
514
+ line: {
515
+ $type: "dimension",
516
+ $value: 16
517
+ },
518
+ weight: {
519
+ $type: "fontWeight",
520
+ $value: 400
521
+ }
522
+ },
523
+ cardTitle: {
524
+ size: {
525
+ $type: "dimension",
526
+ $value: 15
527
+ },
528
+ line: {
529
+ $type: "dimension",
530
+ $value: 20
531
+ },
532
+ weight: {
533
+ $type: "fontWeight",
534
+ $value: 600
535
+ }
536
+ },
537
+ cardBody: {
538
+ size: {
539
+ $type: "dimension",
540
+ $value: 13
541
+ },
542
+ line: {
543
+ $type: "dimension",
544
+ $value: 18
545
+ },
546
+ weight: {
547
+ $type: "fontWeight",
548
+ $value: 400
549
+ }
550
+ },
551
+ cardPrice: {
552
+ size: {
553
+ $type: "dimension",
554
+ $value: 15
555
+ },
556
+ line: {
557
+ $type: "dimension",
558
+ $value: 20
559
+ },
560
+ weight: {
561
+ $type: "fontWeight",
562
+ $value: 600
563
+ }
564
+ },
565
+ chip: {
566
+ size: {
567
+ $type: "dimension",
568
+ $value: 14
569
+ },
570
+ line: {
571
+ $type: "dimension",
572
+ $value: 20
573
+ },
574
+ weight: {
575
+ $type: "fontWeight",
576
+ $value: 500
577
+ }
578
+ },
579
+ working: {
580
+ size: {
581
+ $type: "dimension",
582
+ $value: 14
583
+ },
584
+ line: {
585
+ $type: "dimension",
586
+ $value: 19
587
+ },
588
+ weight: {
589
+ $type: "fontWeight",
590
+ $value: 400
591
+ }
592
+ }
593
+ },
594
+ thinking: {
595
+ dotSize: {
596
+ $type: "dimension",
597
+ $value: 6
598
+ },
599
+ dotGap: {
600
+ $type: "dimension",
601
+ $value: 4
602
+ },
603
+ rise: {
604
+ $type: "dimension",
605
+ $value: 3
606
+ },
607
+ cycle: {
608
+ $type: "duration",
609
+ $value: 900
610
+ },
611
+ delay: {
612
+ $type: "duration",
613
+ $value: 300
614
+ },
615
+ dotDelay: {
616
+ $type: "duration",
617
+ $value: 150
618
+ }
619
+ },
620
+ working: {
621
+ minStep: {
622
+ $type: "duration",
623
+ $value: 600
624
+ },
625
+ iconSize: {
626
+ $type: "dimension",
627
+ $value: 14
628
+ },
629
+ fontSize: {
630
+ $type: "dimension",
631
+ $value: 14
632
+ },
633
+ lineHeight: {
634
+ $type: "dimension",
635
+ $value: 19
636
+ }
637
+ },
638
+ caret: {
639
+ width: {
640
+ $type: "dimension",
641
+ $value: 2
642
+ },
643
+ height: {
644
+ $type: "dimension",
645
+ $value: 18
646
+ },
647
+ cycle: {
648
+ $type: "duration",
649
+ $value: 1e3
650
+ }
651
+ },
652
+ stream: {
653
+ flush: {
654
+ $type: "duration",
655
+ $value: 50
656
+ }
657
+ },
658
+ skeleton: {
659
+ pulse: {
660
+ $type: "duration",
661
+ $value: 1200
662
+ },
663
+ minOpacity: {
664
+ $type: "number",
665
+ $value: 0.55
666
+ }
667
+ }
668
+ },
294
669
  contrast: {
295
670
  $description: "The text and control pairs a theme must keep legible, in every mode: WCAG 2 ratio of fg on bg at least min (4.5 for text, 3 for controls and borders). divider is decorative and has none.",
296
671
  pairs: [
@@ -314,6 +689,21 @@ var tokens_default = {
314
689
  bg: "color.surface",
315
690
  min: 4.5
316
691
  },
692
+ {
693
+ fg: "color.textSecondary",
694
+ bg: "color.background",
695
+ min: 4.5
696
+ },
697
+ {
698
+ fg: "color.textSecondary",
699
+ bg: "color.surface",
700
+ min: 4.5
701
+ },
702
+ {
703
+ fg: "color.textSecondary",
704
+ bg: "color.agentBubble",
705
+ min: 4.5
706
+ },
317
707
  {
318
708
  fg: "color.agentText",
319
709
  bg: "color.agentBubble",
@@ -359,6 +749,11 @@ var tokens_default = {
359
749
  bg: "color.background",
360
750
  min: 4.5
361
751
  },
752
+ {
753
+ fg: "color.warning",
754
+ bg: "color.surface",
755
+ min: 4.5
756
+ },
362
757
  {
363
758
  fg: "color.success",
364
759
  bg: "color.background",
@@ -373,8 +768,28 @@ var tokens_default = {
373
768
  fg: "color.focus",
374
769
  bg: "color.background",
375
770
  min: 3
771
+ },
772
+ {
773
+ fg: "color.primary",
774
+ bg: "color.primarySubtle",
775
+ min: 4.5
376
776
  }
377
777
  ]
778
+ },
779
+ ease: {
780
+ $description: "cubic-bezier control points: standard for what moves and stays, out for what enters, in for what leaves",
781
+ standard: {
782
+ $type: "cubicBezier",
783
+ $value: [0.2, 0, 0, 1]
784
+ },
785
+ out: {
786
+ $type: "cubicBezier",
787
+ $value: [0.16, 1, 0.3, 1]
788
+ },
789
+ in: {
790
+ $type: "cubicBezier",
791
+ $value: [0.4, 0, 1, 1]
792
+ }
378
793
  }
379
794
  };
380
795
 
@@ -394,6 +809,16 @@ var space = values(tokens_default.space);
394
809
  var radius = values(tokens_default.radius);
395
810
  var motion = values(tokens_default.motion);
396
811
  var size = values(tokens_default.size);
812
+ var ease = values(
813
+ tokens_default.ease
814
+ );
815
+ function tree(node) {
816
+ const leaf = (n) => typeof n === "object" && n !== null && "$value" in n ? n.$value : Object.fromEntries(
817
+ Object.entries(n).filter(([k]) => !k.startsWith("$")).map(([k, v]) => [k, leaf(v)])
818
+ );
819
+ return leaf(node);
820
+ }
821
+ var chat = tree(tokens_default.chat);
397
822
  var CONTRAST_PAIRS = tokens_default.contrast.pairs.map(
398
823
  (p) => [
399
824
  p.fg.replace("color.", ""),
@@ -442,6 +867,6 @@ function luminance(hex) {
442
867
  return 0.2126 * r + 0.7152 * g + 0.0722 * b;
443
868
  }
444
869
 
445
- export { CONTRAST_PAIRS, colors, contrastProblems, contrastRatio, cssVariable, font, motion, radius, size, space, tokenPaths };
870
+ export { CONTRAST_PAIRS, chat, colors, contrastProblems, contrastRatio, cssVariable, ease, font, motion, radius, size, space, tokenPaths };
446
871
  //# sourceMappingURL=index.js.map
447
872
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tokens.json","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["{\n \"$description\": \"The Vinaverse design tokens, shared by every UI kit (React Native, Angular) so they look alike out of the box. Shape: W3C design-tokens style ($type, $value). Colors per mode with identical paths; sizes are numbers in a 16-based reference unit (16 = 1rem on the web, dp in React Native). The paths are public API: a CSS custom property is the path without the mode, kebab-cased (color.light.agentBubble -> --vv-color-agent-bubble), and a test freezes the list. With reduced motion asked for, every motion duration is 0: no fades, no animated scrolling.\",\n \"color\": {\n \"light\": {\n \"background\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"surface\": {\n \"$type\": \"color\",\n \"$value\": \"#F5F6F8\"\n },\n \"border\": {\n \"$type\": \"color\",\n \"$value\": \"#858C98\"\n },\n \"divider\": {\n \"$type\": \"color\",\n \"$value\": \"#E3E6EA\"\n },\n \"text\": {\n \"$type\": \"color\",\n \"$value\": \"#15171A\"\n },\n \"textMuted\": {\n \"$type\": \"color\",\n \"$value\": \"#545B67\"\n },\n \"primary\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n },\n \"onPrimary\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"agentBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#EEF1F5\"\n },\n \"agentText\": {\n \"$type\": \"color\",\n \"$value\": \"#15171A\"\n },\n \"personBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n },\n \"personText\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"staffBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#FFF3DC\"\n },\n \"staffText\": {\n \"$type\": \"color\",\n \"$value\": \"#3A2800\"\n },\n \"staffAccent\": {\n \"$type\": \"color\",\n \"$value\": \"#7A4F00\"\n },\n \"disclosureBackground\": {\n \"$type\": \"color\",\n \"$value\": \"#EEF1F5\"\n },\n \"disclosureText\": {\n \"$type\": \"color\",\n \"$value\": \"#3A414D\"\n },\n \"danger\": {\n \"$type\": \"color\",\n \"$value\": \"#B42318\"\n },\n \"warning\": {\n \"$type\": \"color\",\n \"$value\": \"#7A4F00\"\n },\n \"success\": {\n \"$type\": \"color\",\n \"$value\": \"#1C6E3F\"\n },\n \"focus\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n }\n },\n \"dark\": {\n \"background\": {\n \"$type\": \"color\",\n \"$value\": \"#0F1115\"\n },\n \"surface\": {\n \"$type\": \"color\",\n \"$value\": \"#181B21\"\n },\n \"border\": {\n \"$type\": \"color\",\n \"$value\": \"#6B7383\"\n },\n \"divider\": {\n \"$type\": \"color\",\n \"$value\": \"#262A31\"\n },\n \"text\": {\n \"$type\": \"color\",\n \"$value\": \"#ECEEF2\"\n },\n \"textMuted\": {\n \"$type\": \"color\",\n \"$value\": \"#A6ADBA\"\n },\n \"primary\": {\n \"$type\": \"color\",\n \"$value\": \"#8DB0FF\"\n },\n \"onPrimary\": {\n \"$type\": \"color\",\n \"$value\": \"#0F1115\"\n },\n \"agentBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#1E2229\"\n },\n \"agentText\": {\n \"$type\": \"color\",\n \"$value\": \"#ECEEF2\"\n },\n \"personBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#3A63D8\"\n },\n \"personText\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"staffBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#2B2416\"\n },\n \"staffText\": {\n \"$type\": \"color\",\n \"$value\": \"#F5E3C0\"\n },\n \"staffAccent\": {\n \"$type\": \"color\",\n \"$value\": \"#E6B85C\"\n },\n \"disclosureBackground\": {\n \"$type\": \"color\",\n \"$value\": \"#1A1D23\"\n },\n \"disclosureText\": {\n \"$type\": \"color\",\n \"$value\": \"#C3C8D2\"\n },\n \"danger\": {\n \"$type\": \"color\",\n \"$value\": \"#FF8F85\"\n },\n \"warning\": {\n \"$type\": \"color\",\n \"$value\": \"#E6B85C\"\n },\n \"success\": {\n \"$type\": \"color\",\n \"$value\": \"#72D49E\"\n },\n \"focus\": {\n \"$type\": \"color\",\n \"$value\": \"#8DB0FF\"\n }\n }\n },\n \"font\": {\n \"size\": {\n \"xs\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"xl\": {\n \"$type\": \"dimension\",\n \"$value\": 22\n }\n },\n \"weight\": {\n \"regular\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n },\n \"medium\": {\n \"$type\": \"fontWeight\",\n \"$value\": 500\n },\n \"semibold\": {\n \"$type\": \"fontWeight\",\n \"$value\": 600\n }\n },\n \"lineHeight\": {\n \"$type\": \"number\",\n \"$value\": 1.4\n }\n },\n \"space\": {\n \"xxs\": {\n \"$type\": \"dimension\",\n \"$value\": 2\n },\n \"xs\": {\n \"$type\": \"dimension\",\n \"$value\": 4\n },\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"xl\": {\n \"$type\": \"dimension\",\n \"$value\": 24\n }\n },\n \"radius\": {\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 6\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"pill\": {\n \"$type\": \"dimension\",\n \"$value\": 999\n }\n },\n \"motion\": {\n \"fast\": {\n \"$type\": \"duration\",\n \"$value\": 120\n },\n \"normal\": {\n \"$type\": \"duration\",\n \"$value\": 200\n },\n \"bannerDelay\": {\n \"$type\": \"duration\",\n \"$value\": 600,\n \"$description\": \"how long a connecting banner waits before it shows, so a quick connection never flashes one\"\n }\n },\n \"size\": {\n \"touchTarget\": {\n \"$type\": \"dimension\",\n \"$value\": 44\n },\n \"avatar\": {\n \"$type\": \"dimension\",\n \"$value\": 32\n },\n \"disclosureFontMin\": {\n \"$type\": \"dimension\",\n \"$value\": 12,\n \"$description\": \"the AI disclosure is never drawn smaller\"\n }\n },\n \"contrast\": {\n \"$description\": \"The text and control pairs a theme must keep legible, in every mode: WCAG 2 ratio of fg on bg at least min (4.5 for text, 3 for controls and borders). divider is decorative and has none.\",\n \"pairs\": [\n {\n \"fg\": \"color.text\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textMuted\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.text\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textMuted\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.agentText\",\n \"bg\": \"color.agentBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.personText\",\n \"bg\": \"color.personBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.staffText\",\n \"bg\": \"color.staffBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.staffAccent\",\n \"bg\": \"color.staffBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.disclosureText\",\n \"bg\": \"color.disclosureBackground\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.onPrimary\",\n \"bg\": \"color.primary\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.primary\",\n \"bg\": \"color.background\",\n \"min\": 3\n },\n {\n \"fg\": \"color.danger\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.warning\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.success\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.border\",\n \"bg\": \"color.background\",\n \"min\": 3\n },\n {\n \"fg\": \"color.focus\",\n \"bg\": \"color.background\",\n \"min\": 3\n }\n ]\n }\n}\n","// @vinaverse/tokens: the design tokens every Vinaverse UI kit starts from, as one JSON (`@vinaverse/tokens/tokens.json`,\n// for build tools that emit CSS custom properties) and as typed values. No framework, no platform.\nimport json from './tokens.json';\n\nexport type ColorScheme = 'light' | 'dark';\nexport type ColorName = keyof (typeof json)['color']['light'];\nexport type Colors = Readonly<Record<ColorName, string>>;\n\ntype Leaf<T> = { readonly $value: T };\nconst values = <K extends string, T>(group: Record<K, Leaf<T>>) =>\n Object.fromEntries(\n Object.entries(group).map(([k, v]) => [k, (v as Leaf<T>).$value]),\n ) as Readonly<Record<K, T>>;\n\n/** The default colors of a scheme, by name. */\nexport function colors(scheme: ColorScheme): Colors {\n return values(json.color[scheme]) as Colors;\n}\n\n/** Type sizes, weights and line height; spacing, radii, motion durations (ms) and sizes, in density-independent px. */\nexport const font = {\n size: values(json.font.size),\n weight: values(json.font.weight),\n lineHeight: json.font.lineHeight.$value,\n} as const;\nexport const space = values(json.space);\nexport const radius = values(json.radius);\nexport const motion = values(json.motion);\nexport const size = values(json.size);\n\n/** The text and control pairs a theme must keep legible: [foreground, background, minimum WCAG contrast], from the JSON. */\nexport const CONTRAST_PAIRS: readonly (readonly [\n ColorName,\n ColorName,\n number,\n])[] = json.contrast.pairs.map(\n (p) =>\n [\n p.fg.replace('color.', '') as ColorName,\n p.bg.replace('color.', '') as ColorName,\n p.min,\n ] as const,\n);\n\n/**\n * Every token's path, modes included (`color.light.agentBubble`, `font.size.md`): the public names, frozen by a test.\n */\nexport function tokenPaths(): string[] {\n const out: string[] = [];\n const walk = (node: unknown, path: string[]) => {\n if (typeof node !== 'object' || node === null) return;\n if ('$value' in node) {\n out.push(path.join('.'));\n return;\n }\n for (const [key, child] of Object.entries(node))\n if (!key.startsWith('$') && key !== 'contrast')\n walk(child, [...path, key]);\n };\n walk(json, []);\n return out;\n}\n\n/** A token's CSS custom property: the path without its mode, kebab-cased (`--vv-color-agent-bubble`). */\nexport function cssVariable(path: string): string {\n const parts = path\n .split('.')\n .filter((_, i, all) => !(all[0] === 'color' && i === 1));\n return `--vv-${parts\n .map((p) => p.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`))\n .join('-')}`;\n}\n\n/** The WCAG 2 contrast ratio of two `#RRGGBB` colors (1 to 21); NaN when either is not one. */\nexport function contrastRatio(a: string, b: string): number {\n const la = luminance(a);\n const lb = luminance(b);\n return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);\n}\n\n/** The pairs of a set of colors below their minimum: a tenant theme to warn about. */\nexport function contrastProblems(palette: Colors): {\n foreground: ColorName;\n background: ColorName;\n ratio: number;\n minimum: number;\n}[] {\n return CONTRAST_PAIRS.flatMap(([foreground, background, minimum]) => {\n const ratio = contrastRatio(palette[foreground], palette[background]);\n return ratio >= minimum ? [] : [{ foreground, background, ratio, minimum }];\n });\n}\n\nfunction luminance(hex: string): number {\n const m = /^#([0-9a-f]{6})$/i.exec(hex);\n if (!m) return Number.NaN;\n const n = Number.parseInt(m[1] as string, 16);\n const [r, g, b] = [(n >> 16) & 255, (n >> 8) & 255, n & 255].map((c) => {\n const s = c / 255;\n return s <= 0.04045 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n"]}
1
+ {"version":3,"sources":["../src/tokens.json","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["{\n \"$description\": \"The Vinaverse design tokens, shared by every UI kit (React Native, Angular) so they look alike out of the box. Shape: W3C design-tokens style ($type, $value). Colors per mode with identical paths; sizes are numbers in a 16-based reference unit (16 = 1rem on the web, dp in React Native). The paths are public API: a CSS custom property is the path without the mode, kebab-cased (color.light.agentBubble -> --vv-color-agent-bubble), and a test freezes the list. With reduced motion asked for, every motion duration is 0: no fades, no animated scrolling.\",\n \"color\": {\n \"light\": {\n \"background\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"surface\": {\n \"$type\": \"color\",\n \"$value\": \"#F5F6F8\"\n },\n \"border\": {\n \"$type\": \"color\",\n \"$value\": \"#858C98\"\n },\n \"divider\": {\n \"$type\": \"color\",\n \"$value\": \"#E3E6EA\"\n },\n \"text\": {\n \"$type\": \"color\",\n \"$value\": \"#15171A\"\n },\n \"textMuted\": {\n \"$type\": \"color\",\n \"$value\": \"#545B67\"\n },\n \"textSecondary\": {\n \"$type\": \"color\",\n \"$value\": \"#454B55\"\n },\n \"primary\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n },\n \"onPrimary\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"agentBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#EEF1F5\"\n },\n \"agentText\": {\n \"$type\": \"color\",\n \"$value\": \"#15171A\"\n },\n \"personBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n },\n \"personText\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"staffBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#FFF3DC\"\n },\n \"staffText\": {\n \"$type\": \"color\",\n \"$value\": \"#3A2800\"\n },\n \"staffAccent\": {\n \"$type\": \"color\",\n \"$value\": \"#7A4F00\"\n },\n \"disclosureBackground\": {\n \"$type\": \"color\",\n \"$value\": \"#EEF1F5\"\n },\n \"disclosureText\": {\n \"$type\": \"color\",\n \"$value\": \"#3A414D\"\n },\n \"danger\": {\n \"$type\": \"color\",\n \"$value\": \"#B42318\"\n },\n \"warning\": {\n \"$type\": \"color\",\n \"$value\": \"#7A4F00\"\n },\n \"success\": {\n \"$type\": \"color\",\n \"$value\": \"#1C6E3F\"\n },\n \"focus\": {\n \"$type\": \"color\",\n \"$value\": \"#2B57CF\"\n },\n \"primarySubtle\": {\n \"$type\": \"color\",\n \"$value\": \"#F5F6F8\"\n },\n \"rating\": {\n \"$type\": \"color\",\n \"$value\": \"#7A4F00\"\n }\n },\n \"dark\": {\n \"background\": {\n \"$type\": \"color\",\n \"$value\": \"#0F1115\"\n },\n \"surface\": {\n \"$type\": \"color\",\n \"$value\": \"#181B21\"\n },\n \"border\": {\n \"$type\": \"color\",\n \"$value\": \"#6B7383\"\n },\n \"divider\": {\n \"$type\": \"color\",\n \"$value\": \"#262A31\"\n },\n \"text\": {\n \"$type\": \"color\",\n \"$value\": \"#ECEEF2\"\n },\n \"textMuted\": {\n \"$type\": \"color\",\n \"$value\": \"#A6ADBA\"\n },\n \"textSecondary\": {\n \"$type\": \"color\",\n \"$value\": \"#BEC4CF\"\n },\n \"primary\": {\n \"$type\": \"color\",\n \"$value\": \"#8DB0FF\"\n },\n \"onPrimary\": {\n \"$type\": \"color\",\n \"$value\": \"#0F1115\"\n },\n \"agentBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#1E2229\"\n },\n \"agentText\": {\n \"$type\": \"color\",\n \"$value\": \"#ECEEF2\"\n },\n \"personBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#3A63D8\"\n },\n \"personText\": {\n \"$type\": \"color\",\n \"$value\": \"#FFFFFF\"\n },\n \"staffBubble\": {\n \"$type\": \"color\",\n \"$value\": \"#2B2416\"\n },\n \"staffText\": {\n \"$type\": \"color\",\n \"$value\": \"#F5E3C0\"\n },\n \"staffAccent\": {\n \"$type\": \"color\",\n \"$value\": \"#E6B85C\"\n },\n \"disclosureBackground\": {\n \"$type\": \"color\",\n \"$value\": \"#1A1D23\"\n },\n \"disclosureText\": {\n \"$type\": \"color\",\n \"$value\": \"#C3C8D2\"\n },\n \"danger\": {\n \"$type\": \"color\",\n \"$value\": \"#FF8F85\"\n },\n \"warning\": {\n \"$type\": \"color\",\n \"$value\": \"#E6B85C\"\n },\n \"success\": {\n \"$type\": \"color\",\n \"$value\": \"#72D49E\"\n },\n \"focus\": {\n \"$type\": \"color\",\n \"$value\": \"#8DB0FF\"\n },\n \"primarySubtle\": {\n \"$type\": \"color\",\n \"$value\": \"#181B21\"\n },\n \"rating\": {\n \"$type\": \"color\",\n \"$value\": \"#E6B85C\"\n }\n }\n },\n \"font\": {\n \"size\": {\n \"xs\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"xl\": {\n \"$type\": \"dimension\",\n \"$value\": 22\n }\n },\n \"weight\": {\n \"regular\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n },\n \"medium\": {\n \"$type\": \"fontWeight\",\n \"$value\": 500\n },\n \"semibold\": {\n \"$type\": \"fontWeight\",\n \"$value\": 600\n }\n },\n \"lineHeight\": {\n \"$type\": \"number\",\n \"$value\": 1.4\n }\n },\n \"space\": {\n \"xxs\": {\n \"$type\": \"dimension\",\n \"$value\": 2\n },\n \"xs\": {\n \"$type\": \"dimension\",\n \"$value\": 4\n },\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"xl\": {\n \"$type\": \"dimension\",\n \"$value\": 24\n }\n },\n \"radius\": {\n \"sm\": {\n \"$type\": \"dimension\",\n \"$value\": 6\n },\n \"md\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"lg\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"pill\": {\n \"$type\": \"dimension\",\n \"$value\": 999\n }\n },\n \"motion\": {\n \"instant\": {\n \"$type\": \"duration\",\n \"$value\": 80\n },\n \"fast\": {\n \"$type\": \"duration\",\n \"$value\": 140\n },\n \"normal\": {\n \"$type\": \"duration\",\n \"$value\": 200\n },\n \"bannerDelay\": {\n \"$type\": \"duration\",\n \"$value\": 600,\n \"$description\": \"how long a connecting banner waits before it shows, so a quick connection never flashes one\"\n },\n \"base\": {\n \"$type\": \"duration\",\n \"$value\": 220\n },\n \"slow\": {\n \"$type\": \"duration\",\n \"$value\": 320\n },\n \"stagger\": {\n \"$type\": \"duration\",\n \"$value\": 30\n },\n \"rise\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n },\n \"pressScale\": {\n \"$type\": \"number\",\n \"$value\": 0.97\n }\n },\n \"size\": {\n \"touchTarget\": {\n \"$type\": \"dimension\",\n \"$value\": 44\n },\n \"avatar\": {\n \"$type\": \"dimension\",\n \"$value\": 32\n },\n \"disclosureFontMin\": {\n \"$type\": \"dimension\",\n \"$value\": 12,\n \"$description\": \"the AI disclosure is never drawn smaller\"\n }\n },\n \"chat\": {\n \"$description\": \"The chat shell (spec 00), kit defaults a tenant overrides (ThemeOverrides.chat): elevation draws in light only.\",\n \"gutter\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"gap\": {\n \"sameAuthor\": {\n \"$type\": \"dimension\",\n \"$value\": 4\n },\n \"authorChange\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"block\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n }\n },\n \"bubble\": {\n \"padX\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"padY\": {\n \"$type\": \"dimension\",\n \"$value\": 10\n },\n \"maxWidth\": {\n \"$type\": \"number\",\n \"$value\": 0.82\n }\n },\n \"card\": {\n \"pad\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"gap\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n },\n \"carouselGap\": {\n \"$type\": \"dimension\",\n \"$value\": 10\n },\n \"carouselWidth\": {\n \"$type\": \"dimension\",\n \"$value\": 214\n }\n },\n \"chip\": {\n \"height\": {\n \"$type\": \"dimension\",\n \"$value\": 38\n },\n \"gap\": {\n \"$type\": \"dimension\",\n \"$value\": 8\n }\n },\n \"header\": {\n \"height\": {\n \"$type\": \"dimension\",\n \"$value\": 56\n }\n },\n \"composer\": {\n \"minHeight\": {\n \"$type\": \"dimension\",\n \"$value\": 48\n }\n },\n \"input\": {\n \"gap\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n }\n },\n \"radius\": {\n \"bubble\": {\n \"$type\": \"dimension\",\n \"$value\": 20\n },\n \"bubbleTail\": {\n \"$type\": \"dimension\",\n \"$value\": 6\n },\n \"card\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"cardMedia\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"chip\": {\n \"$type\": \"dimension\",\n \"$value\": 999\n },\n \"slot\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"field\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"composer\": {\n \"$type\": \"dimension\",\n \"$value\": 24\n },\n \"sheet\": {\n \"$type\": \"dimension\",\n \"$value\": 28\n }\n },\n \"elevation\": {\n \"card\": {\n \"$type\": \"shadow\",\n \"$value\": {\n \"offsetY\": 1,\n \"blur\": 3,\n \"opacity\": 0.08\n }\n },\n \"raised\": {\n \"$type\": \"shadow\",\n \"$value\": {\n \"offsetY\": 4,\n \"blur\": 12,\n \"opacity\": 0.08\n }\n },\n \"overlay\": {\n \"$type\": \"shadow\",\n \"$value\": {\n \"offsetY\": 12,\n \"blur\": 28,\n \"opacity\": 0.12\n }\n },\n \"sheet\": {\n \"$type\": \"shadow\",\n \"$value\": {\n \"offsetY\": -4,\n \"blur\": 16,\n \"opacity\": 0.08\n }\n }\n },\n \"type\": {\n \"bubble\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 22\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n }\n },\n \"meta\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 12\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 16\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n }\n },\n \"cardTitle\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 15\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 20\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 600\n }\n },\n \"cardBody\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 13\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n }\n },\n \"cardPrice\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 15\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 20\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 600\n }\n },\n \"chip\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 20\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 500\n }\n },\n \"working\": {\n \"size\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"line\": {\n \"$type\": \"dimension\",\n \"$value\": 19\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"$value\": 400\n }\n }\n },\n \"thinking\": {\n \"dotSize\": {\n \"$type\": \"dimension\",\n \"$value\": 6\n },\n \"dotGap\": {\n \"$type\": \"dimension\",\n \"$value\": 4\n },\n \"rise\": {\n \"$type\": \"dimension\",\n \"$value\": 3\n },\n \"cycle\": {\n \"$type\": \"duration\",\n \"$value\": 900\n },\n \"delay\": {\n \"$type\": \"duration\",\n \"$value\": 300\n },\n \"dotDelay\": {\n \"$type\": \"duration\",\n \"$value\": 150\n }\n },\n \"working\": {\n \"minStep\": {\n \"$type\": \"duration\",\n \"$value\": 600\n },\n \"iconSize\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"fontSize\": {\n \"$type\": \"dimension\",\n \"$value\": 14\n },\n \"lineHeight\": {\n \"$type\": \"dimension\",\n \"$value\": 19\n }\n },\n \"caret\": {\n \"width\": {\n \"$type\": \"dimension\",\n \"$value\": 2\n },\n \"height\": {\n \"$type\": \"dimension\",\n \"$value\": 18\n },\n \"cycle\": {\n \"$type\": \"duration\",\n \"$value\": 1000\n }\n },\n \"stream\": {\n \"flush\": {\n \"$type\": \"duration\",\n \"$value\": 50\n }\n },\n \"skeleton\": {\n \"pulse\": {\n \"$type\": \"duration\",\n \"$value\": 1200\n },\n \"minOpacity\": {\n \"$type\": \"number\",\n \"$value\": 0.55\n }\n }\n },\n \"contrast\": {\n \"$description\": \"The text and control pairs a theme must keep legible, in every mode: WCAG 2 ratio of fg on bg at least min (4.5 for text, 3 for controls and borders). divider is decorative and has none.\",\n \"pairs\": [\n {\n \"fg\": \"color.text\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textMuted\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.text\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textMuted\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textSecondary\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textSecondary\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.textSecondary\",\n \"bg\": \"color.agentBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.agentText\",\n \"bg\": \"color.agentBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.personText\",\n \"bg\": \"color.personBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.staffText\",\n \"bg\": \"color.staffBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.staffAccent\",\n \"bg\": \"color.staffBubble\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.disclosureText\",\n \"bg\": \"color.disclosureBackground\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.onPrimary\",\n \"bg\": \"color.primary\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.primary\",\n \"bg\": \"color.background\",\n \"min\": 3\n },\n {\n \"fg\": \"color.danger\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.warning\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.warning\",\n \"bg\": \"color.surface\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.success\",\n \"bg\": \"color.background\",\n \"min\": 4.5\n },\n {\n \"fg\": \"color.border\",\n \"bg\": \"color.background\",\n \"min\": 3\n },\n {\n \"fg\": \"color.focus\",\n \"bg\": \"color.background\",\n \"min\": 3\n },\n {\n \"fg\": \"color.primary\",\n \"bg\": \"color.primarySubtle\",\n \"min\": 4.5\n }\n ]\n },\n \"ease\": {\n \"$description\": \"cubic-bezier control points: standard for what moves and stays, out for what enters, in for what leaves\",\n \"standard\": {\n \"$type\": \"cubicBezier\",\n \"$value\": [0.2, 0, 0, 1]\n },\n \"out\": {\n \"$type\": \"cubicBezier\",\n \"$value\": [0.16, 1, 0.3, 1]\n },\n \"in\": {\n \"$type\": \"cubicBezier\",\n \"$value\": [0.4, 0, 1, 1]\n }\n }\n}\n","// @vinaverse/tokens: the design tokens every Vinaverse UI kit starts from, as one JSON (`@vinaverse/tokens/tokens.json`,\n// for build tools that emit CSS custom properties) and as typed values. No framework, no platform.\nimport json from './tokens.json';\n\nexport type ColorScheme = 'light' | 'dark';\nexport type ColorName = keyof (typeof json)['color']['light'];\nexport type Colors = Readonly<Record<ColorName, string>>;\n\ntype Leaf<T> = { readonly $value: T };\nconst values = <K extends string, T>(group: Record<K, Leaf<T>>) =>\n Object.fromEntries(\n Object.entries(group).map(([k, v]) => [k, (v as Leaf<T>).$value]),\n ) as Readonly<Record<K, T>>;\n\n/** The default colors of a scheme, by name. */\nexport function colors(scheme: ColorScheme): Colors {\n return values(json.color[scheme]) as Colors;\n}\n\n/** Type sizes, weights and line height; spacing, radii, motion durations (ms) and sizes, in density-independent px. */\nexport const font = {\n size: values(json.font.size),\n weight: values(json.font.weight),\n lineHeight: json.font.lineHeight.$value,\n} as const;\nexport const space = values(json.space);\nexport const radius = values(json.radius);\nexport const motion = values(json.motion);\nexport const size = values(json.size);\n/** Easing curves as cubic-bezier control points: `standard` moves, `out` enters, `in` leaves. */\nexport const ease = values(\n json.ease as unknown as Record<'standard' | 'out' | 'in', Leaf<number[]>>,\n);\n\n/** A token group's values, nested as in the JSON, `$` keys dropped. */\nexport type TokenTree<T> = T extends { readonly $value: infer V }\n ? V\n : {\n readonly [K in keyof T as K extends `$${string}` ? never : K]: TokenTree<\n T[K]\n >;\n };\nfunction tree<T>(node: T): TokenTree<T> {\n const leaf = (n: unknown): unknown =>\n typeof n === 'object' && n !== null && '$value' in n\n ? (n as Leaf<unknown>).$value\n : Object.fromEntries(\n Object.entries(n as object)\n .filter(([k]) => !k.startsWith('$'))\n .map(([k, v]) => [k, leaf(v)]),\n );\n return leaf(node) as TokenTree<T>;\n}\n\n/**\n * The chat shell (spec 00): spacing, radii, elevation (light only), type and the agent's state indicators, as a tenant\n * overrides them through the theme (`ThemeOverrides.chat`).\n */\nexport const chat = tree(json.chat);\nexport type ChatTokens = typeof chat;\n\n/** The text and control pairs a theme must keep legible: [foreground, background, minimum WCAG contrast], from the JSON. */\nexport const CONTRAST_PAIRS: readonly (readonly [\n ColorName,\n ColorName,\n number,\n])[] = json.contrast.pairs.map(\n (p) =>\n [\n p.fg.replace('color.', '') as ColorName,\n p.bg.replace('color.', '') as ColorName,\n p.min,\n ] as const,\n);\n\n/**\n * Every token's path, modes included (`color.light.agentBubble`, `font.size.md`): the public names, frozen by a test.\n */\nexport function tokenPaths(): string[] {\n const out: string[] = [];\n const walk = (node: unknown, path: string[]) => {\n if (typeof node !== 'object' || node === null) return;\n if ('$value' in node) {\n out.push(path.join('.'));\n return;\n }\n for (const [key, child] of Object.entries(node))\n if (!key.startsWith('$') && key !== 'contrast')\n walk(child, [...path, key]);\n };\n walk(json, []);\n return out;\n}\n\n/** A token's CSS custom property: the path without its mode, kebab-cased (`--vv-color-agent-bubble`). */\nexport function cssVariable(path: string): string {\n const parts = path\n .split('.')\n .filter((_, i, all) => !(all[0] === 'color' && i === 1));\n return `--vv-${parts\n .map((p) => p.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`))\n .join('-')}`;\n}\n\n/** The WCAG 2 contrast ratio of two `#RRGGBB` colors (1 to 21); NaN when either is not one. */\nexport function contrastRatio(a: string, b: string): number {\n const la = luminance(a);\n const lb = luminance(b);\n return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);\n}\n\n/** The pairs of a set of colors below their minimum: a tenant theme to warn about. */\nexport function contrastProblems(palette: Colors): {\n foreground: ColorName;\n background: ColorName;\n ratio: number;\n minimum: number;\n}[] {\n return CONTRAST_PAIRS.flatMap(([foreground, background, minimum]) => {\n const ratio = contrastRatio(palette[foreground], palette[background]);\n return ratio >= minimum ? [] : [{ foreground, background, ratio, minimum }];\n });\n}\n\nfunction luminance(hex: string): number {\n const m = /^#([0-9a-f]{6})$/i.exec(hex);\n if (!m) return Number.NaN;\n const n = Number.parseInt(m[1] as string, 16);\n const [r, g, b] = [(n >> 16) & 255, (n >> 8) & 255, n & 255].map((c) => {\n const s = c / 255;\n return s <= 0.04045 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n"]}