@tcn/ui 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/inputs/multiselect/multiselect_inline_values.js +9 -7
  2. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  3. package/dist/inputs/multiselect/multiselect_values.js +4 -2
  4. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  5. package/dist/layouts/index.d.ts +1 -3
  6. package/dist/layouts/index.d.ts.map +1 -1
  7. package/dist/layouts/index.js +20 -20
  8. package/dist/layouts/section/detail.d.ts +4 -0
  9. package/dist/layouts/section/detail.d.ts.map +1 -0
  10. package/dist/layouts/section/detail.js +11 -0
  11. package/dist/layouts/section/detail.js.map +1 -0
  12. package/dist/layouts/section/heading.js +1 -1
  13. package/dist/layouts/section/index.d.ts +4 -0
  14. package/dist/layouts/section/index.d.ts.map +1 -0
  15. package/dist/layouts/section/index.js +9 -0
  16. package/dist/layouts/section/index.js.map +1 -0
  17. package/dist/layouts/section/section.js +1 -1
  18. package/dist/section.css +1 -1
  19. package/dist/section.module-BXlxYmJK.js +5 -0
  20. package/dist/section.module-BXlxYmJK.js.map +1 -0
  21. package/dist/surfaces/pop_confirm/pop_confirm.js +2 -2
  22. package/dist/term.css +1 -0
  23. package/dist/themes/build_stylesheet.d.ts +2 -0
  24. package/dist/themes/build_stylesheet.d.ts.map +1 -0
  25. package/dist/themes/build_stylesheet.js +9 -0
  26. package/dist/themes/build_stylesheet.js.map +1 -0
  27. package/dist/themes/theme_variables.d.ts +7 -0
  28. package/dist/themes/theme_variables.d.ts.map +1 -1
  29. package/dist/themes/theme_variables.js +16 -9
  30. package/dist/themes/theme_variables.js.map +1 -1
  31. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  32. package/dist/themes/themes/ergo/ergo_theme.d.ts.map +1 -1
  33. package/dist/themes/themes/ergo/ergo_theme.js +254 -152
  34. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  35. package/dist/themes/themes/ergo/tokens/system_tokens.css +1 -0
  36. package/dist/themes/themes/ergo/tokens/theme_tokens.css +1 -0
  37. package/dist/tokens/index.d.ts +1 -0
  38. package/dist/tokens/index.d.ts.map +1 -1
  39. package/dist/tokens/index.js +4 -2
  40. package/dist/tokens/index.js.map +1 -1
  41. package/dist/tokens/key/key.d.ts +8 -1
  42. package/dist/tokens/key/key.d.ts.map +1 -1
  43. package/dist/tokens/key/key.js +20 -3
  44. package/dist/tokens/key/key.js.map +1 -1
  45. package/dist/tokens/term/term.d.ts +4 -0
  46. package/dist/tokens/term/term.d.ts.map +1 -0
  47. package/dist/tokens/term/term.js +20 -0
  48. package/dist/tokens/term/term.js.map +1 -0
  49. package/dist/tokens/value/value.d.ts +8 -1
  50. package/dist/tokens/value/value.d.ts.map +1 -1
  51. package/dist/tokens/value/value.js +23 -5
  52. package/dist/tokens/value/value.js.map +1 -1
  53. package/dist/utils/types/variations.d.ts +1 -0
  54. package/dist/utils/types/variations.d.ts.map +1 -1
  55. package/dist/value.css +1 -0
  56. package/dist/value.module-DFaCouFD.js +5 -0
  57. package/dist/value.module-DFaCouFD.js.map +1 -0
  58. package/package.json +1 -1
  59. package/src/layouts/index.ts +1 -3
  60. package/src/layouts/section/__stories__/section.stories.tsx +79 -50
  61. package/src/layouts/section/detail.tsx +14 -0
  62. package/src/layouts/section/index.ts +3 -0
  63. package/src/layouts/section/section.module.css +0 -36
  64. package/src/surfaces/panel/__stories__/panel.stories.tsx +84 -40
  65. package/src/themes/build_stylesheet.ts +5 -0
  66. package/src/themes/theme_variables.ts +9 -0
  67. package/src/themes/themes/ergo/ergo_theme.css +148 -213
  68. package/src/themes/themes/ergo/ergo_theme.ts +4 -2
  69. package/src/themes/themes/ergo/tokens/system_tokens.css +68 -0
  70. package/src/themes/themes/ergo/tokens/theme_tokens.css +99 -0
  71. package/src/tokens/index.ts +1 -0
  72. package/src/tokens/key/key.tsx +23 -2
  73. package/src/tokens/term/term.module.css +14 -0
  74. package/src/tokens/term/term.stories.tsx +84 -0
  75. package/src/tokens/term/term.tsx +20 -0
  76. package/src/tokens/value/value.module.css +5 -0
  77. package/src/tokens/value/value.tsx +24 -2
  78. package/src/utils/types/variations.ts +1 -0
  79. package/dist/layouts/row/row.d.ts +0 -4
  80. package/dist/layouts/row/row.d.ts.map +0 -1
  81. package/dist/layouts/row/row.js +0 -11
  82. package/dist/layouts/row/row.js.map +0 -1
  83. package/dist/row.css +0 -1
  84. package/dist/section.module-0wyGkhDg.js +0 -5
  85. package/dist/section.module-0wyGkhDg.js.map +0 -1
  86. package/src/layouts/row/row.module.css +0 -5
  87. package/src/layouts/row/row.tsx +0 -15
@@ -1,143 +1,10 @@
1
1
  @layer tcn-theme {
2
2
  /* ===== CSS VARIABLES ===== */
3
- :root {
4
- /* ========== Ergo Brand Palette ========== */
5
- --ergo-primary: #ce6b2b;
6
- --ergo-secondary: #669eb4;
7
- --ergo-secondary-light: #ecf4fb;
8
- --ergo-secondary-dark: #497485;
9
- --ergo-tertiary: #dfd7cd;
10
- --ergo-tertiary-light: #f9f4ed;
11
- --ergo-tertiary-dark: #7e6c5d;
12
- --ergo-white: #ffffff;
13
-
14
- --ergo-accent-blue: #395578;
15
- --ergo-accent-blue-light: #f3f4f6;
16
- --ergo-accent-green: #97bba3;
17
- --ergo-accent-green-light: #eef8ef;
18
- --ergo-accent-green-dark: #4f785c;
19
- --ergo-accent-yellow: #dbc97e;
20
- --ergo-accent-yellow-light: #fef9e7;
21
-
22
- --ergo-grey: #aaaaaa;
23
- --ergo-grey-light: #d3d3d3;
24
- --ergo-grey-dark: #808080;
25
-
26
- --ergo-status-red: #ff6565;
27
- --ergo-status-red-dark: #c24848;
28
-
29
- --ergo-status-yellow: #ffd439;
30
- --ergo-status-yellow-dark: #dbb735;
31
-
32
- --ergo-status-blue: var(--ergo-secondary);
33
- --ergo-status-blue-dark: var(--ergo-secondary-dark);
34
-
35
- --ergo-status-green: #3fbc6a;
36
- --ergo-status-green-dark: #2d904f;
37
-
38
- /* ========== Ergo Component Tokens ========== */
39
- --font-size-input: 12px;
40
-
41
- --ergo-ink-primary: var(--ergo-accent-blue);
42
- --ergo-ink-inverse: var(--ergo-white);
43
-
44
- /* ========== Blackcat System Tokens ========== */
45
- --scalar: 1;
46
- --accent-color: var(--ergo-primary);
47
-
48
- /* Typography */
49
- --font-color: var(--ergo-ink-primary);
50
- --font-family: "Lato", sans-serif;
51
- --font-size: 12px;
52
-
53
- /* Spacing */
54
- --gap-xs: 2px;
55
- --gap-small: 4px;
56
- --gap-medium: 8px;
57
- --gap-large: 16px;
58
-
59
- --padding-small: 4px;
60
- --padding-medium: 8px;
61
- --padding-large: 16px;
62
-
63
- /* Sizing */
64
- --bar-xs: 16px;
65
- --bar-sm: 24px;
66
- --bar-md: 32px;
67
- --bar-lg: 40px;
68
- --bar-xl: 48px;
69
-
70
- --action-sm: 20px;
71
- --action-md: 24px;
72
- --action-lg: 32px;
73
-
74
- /* Status Colors */
75
- --status-color-disabled: var(--ergo-grey-light);
76
- --status-color-info: var(--ergo-status-blue);
77
- --status-color-warning: var(--ergo-status-yellow);
78
- --status-color-positive: var(--ergo-status-green);
79
- --status-color-error: var(--ergo-status-red);
80
-
81
- --async-color-initial: var(--ergo-grey);
82
- --async-color-pending: var(--ergo-status-blue);
83
- --async-color-success: var(--ergo-status-green);
84
- --async-color-failed: var(--ergo-status-red);
85
-
86
- --action-severity-dangerous: var(--ergo-status-red);
87
- --action-severity-cautious: var(--ergo-status-yellow);
88
- --action-severity-neutral: var(--ergo-primary);
89
- --action-severity-suggested: var(--ergo-status-blue);
90
- --action-severity-encouraged: var(--ergo-status-green);
91
-
92
- /* Shape */
93
- --shape-radius-small: 2px;
94
- --shape-radius-medium: 4px;
95
- --shape-radius-large: 8px;
96
- --shape-triangle-medium: 12px;
97
-
98
- /* Palette */
99
- --primary-color-faint: #c0c0c0;
100
- --primary-color: #008cff;
101
- --primary-color-strong: #008cff;
102
-
103
- --secondary-color-faint: #c0c0c0;
104
- --secondary-color: #008cff;
105
- --secondary-color-strong: #008cff;
106
-
107
- --tertiary-color-faint: #c0c0c0;
108
- --tertiary-color: #008cff;
109
- --tertiary-color-strong: #008cff;
110
-
111
- --quaternary-color-faint: #c0c0c0;
112
- --quaternary-color: #008cff;
113
- --quaternary-color-strong: #008cff;
114
-
115
- --background-color-primary: #ffffff;
116
- --background-color-secondary: #fafafa;
117
- --background-color-tertiary: #f1f1f1;
118
- --background-color-quaternary: #ffffff;
119
-
120
- --foreground-color-primary: #aaa;
121
- --foreground-color-secondary: #222222;
122
- --foreground-color-tertiary: #222222;
123
- --foreground-color-quaternary: #222222;
124
-
125
- --material-disabled: var(--ergo-grey-light);
126
- --on-material-disabled: var(--ergo-ink-inverse);
127
- --ink-disabled: var(--ergo-grey-light);
128
-
129
- --material-line: var(--ergo-grey);
130
-
131
- /* Default Material */
132
- --action: var(--ergo-primary);
133
- --on-action: var(--ergo-white);
134
- --material: var(--ergo-white);
135
- --on-material: var(--ergo-accent-blue);
136
- }
137
3
 
138
4
  .tcn-theme-root {
139
5
  font-family: var(--font-family);
140
6
  color: var(--font-color);
7
+ /* TODO: move to system */
141
8
  --action: var(--ergo-primary);
142
9
  --on-action: var(--ergo-white);
143
10
  --material: var(--ergo-white);
@@ -208,7 +75,7 @@
208
75
  --btn-pad: calc(var(--btn-pad-base) + var(--btn-pad-delta) * var(--btn-step));
209
76
  --btn-size: calc(var(--btn-size-base) + var(--btn-size-delta) * var(--btn-step));
210
77
 
211
- border-radius: var(--shape-radius-medium);
78
+ border-radius: var(--ergo-shape-radius-medium);
212
79
  min-height: var(--btn-size);
213
80
  padding: var(--padding-small) var(--btn-pad);
214
81
 
@@ -444,12 +311,12 @@
444
311
  border-radius: 0;
445
312
  }
446
313
  .tcn-button-group-button:first-child {
447
- border-start-start-radius: var(--shape-radius-medium);
448
- border-end-start-radius: var(--shape-radius-medium);
314
+ border-start-start-radius: var(--ergo-shape-radius-medium);
315
+ border-end-start-radius: var(--ergo-shape-radius-medium);
449
316
  }
450
317
  .tcn-button-group-button:last-child {
451
- border-start-end-radius: var(--shape-radius-medium);
452
- border-end-end-radius: var(--shape-radius-medium);
318
+ border-start-end-radius: var(--ergo-shape-radius-medium);
319
+ border-end-end-radius: var(--ergo-shape-radius-medium);
453
320
  }
454
321
  .tcn-button-group-button[data-hierarchy="tertiary"] {
455
322
  border: 0;
@@ -489,26 +356,26 @@
489
356
  }
490
357
 
491
358
  .tcn-select-group-option[data-hierarchy="secondary"][data-is-disabled="true"] {
492
- color: var(--material-disabled);
493
- border: 1px solid var(--material-disabled);
359
+ color: var(--ergo-material-disabled-outline);
360
+ border: 1px solid var(--ergo-material-disabled-outline);
494
361
  }
495
362
 
496
363
  .tcn-select-group-option[data-hierarchy="primary"][data-is-disabled="true"] {
497
- background: var(--material-disabled);
364
+ background: var(--ergo-material-disabled-outline);
498
365
  color: white;
499
- border: 1px solid var(--material-disabled);
366
+ border: 1px solid var(--ergo-material-disabled-outline);
500
367
  }
501
368
 
502
369
  .tcn-select-group-option {
503
370
  border-radius: 0;
504
371
  }
505
372
  .tcn-select-group-option:first-child {
506
- border-top-left-radius: var(--shape-radius-medium);
507
- border-bottom-left-radius: var(--shape-radius-medium);
373
+ border-top-left-radius: var(--ergo-shape-radius-medium);
374
+ border-bottom-left-radius: var(--ergo-shape-radius-medium);
508
375
  }
509
376
  .tcn-select-group-option:last-child {
510
- border-top-right-radius: var(--shape-radius-medium);
511
- border-bottom-right-radius: var(--shape-radius-medium);
377
+ border-top-right-radius: var(--ergo-shape-radius-medium);
378
+ border-bottom-right-radius: var(--ergo-shape-radius-medium);
512
379
  }
513
380
  }
514
381
 
@@ -589,7 +456,7 @@
589
456
  left: 0;
590
457
  width: 100%;
591
458
  height: 1px;
592
- background: var(--material-line);
459
+ background: var(--ergo-material-divider);
593
460
  pointer-events: none;
594
461
  z-index: 1;
595
462
  }
@@ -601,16 +468,15 @@
601
468
  min-width: min-content;
602
469
  width: auto;
603
470
  flex-grow: 0;
604
- border-radius: var(--shape-radius-medium);
471
+ border-radius: 6px;
605
472
  border: 1px solid var(--on-material);
606
- padding-block: 1px;
607
- padding-inline: 2px;
473
+ padding: 2px;
608
474
 
609
475
  .tcn-tabs-list {
610
476
  height: 20px;
611
- gap: var(--gap-xs);
477
+ gap: var(--ergo-spacing-xs);
612
478
  .tcn-tab-item {
613
- border-radius: var(--shape-radius-medium);
479
+ border-radius: var(--ergo-shape-radius-medium);
614
480
  min-height: 20px;
615
481
  }
616
482
  }
@@ -698,19 +564,19 @@
698
564
  }
699
565
 
700
566
  &[data-anchor-direction="bottom"] {
701
- padding-bottom: var(--shape-triangle-medium);
567
+ padding-bottom: var(--ergo-shape-triangle-medium);
702
568
  }
703
569
 
704
570
  &[data-anchor-direction="top"] {
705
- padding-top: var(--shape-triangle-medium);
571
+ padding-top: var(--ergo-shape-triangle-medium);
706
572
  }
707
573
 
708
574
  &[data-anchor-direction="start"] {
709
- padding-left: var(--shape-triangle-medium);
575
+ padding-left: var(--ergo-shape-triangle-medium);
710
576
  }
711
577
 
712
578
  &[data-anchor-direction="end"] {
713
- padding-right: var(--shape-triangle-medium);
579
+ padding-right: var(--ergo-shape-triangle-medium);
714
580
  }
715
581
  }
716
582
 
@@ -725,7 +591,7 @@
725
591
  box-shadow: 0px 4px 7px 0px rgba(65, 65, 65, 0.66);
726
592
  color: var(--on-material);
727
593
  background: var(--material);
728
- border-radius: var(--shape-radius-medium);
594
+ border-radius: var(--ergo-shape-radius-medium);
729
595
  padding: var(--padding-medium);
730
596
  }
731
597
  }
@@ -735,12 +601,12 @@
735
601
  .tcn-item {
736
602
  height: 24px;
737
603
  padding: 0px var(--padding-medium);
738
- border-radius: var(--shape-radius-medium);
604
+ border-radius: var(--ergo-shape-radius-medium);
739
605
  }
740
606
  }
741
607
  /* Rail: */
742
608
  .tcn-utility-strip {
743
- min-width: var(--bar-md);
609
+ min-width: var(--ergo-sizing-bar-md);
744
610
  }
745
611
 
746
612
  .tcn-utility-strip,
@@ -758,12 +624,12 @@
758
624
  }
759
625
 
760
626
  .tcn-utility-bar {
761
- min-height: var(--bar-md);
627
+ min-height: var(--ergo-sizing-bar-md);
762
628
  }
763
629
 
764
630
  .tcn-footer,
765
631
  .tcn-header {
766
- min-height: var(--bar-lg);
632
+ min-height: var(--ergo-sizing-bar-lg);
767
633
  }
768
634
 
769
635
  .tcn-scaffold {
@@ -777,14 +643,14 @@
777
643
  :where(.tcn-utility-bar) + :where(.tcn-scaffold),
778
644
  :where(.tcn-utility-bar) + :where(.tcn-rail) {
779
645
  border-top: calc(var(--scaffold-divide-header) * 1px) solid
780
- var(--foreground-color-primary);
646
+ var(--ergo-material-border);
781
647
  }
782
648
 
783
649
  /* Border appears on footer when it follows scaffold/rail */
784
650
  :where(.tcn-scaffold) + :where(.tcn-footer),
785
651
  :where(.tcn-rail) + :where(.tcn-footer) {
786
652
  border-top: calc(var(--scaffold-divide-footer) * 1px) solid
787
- var(--foreground-color-primary);
653
+ var(--ergo-material-border);
788
654
  }
789
655
  }
790
656
 
@@ -811,13 +677,13 @@
811
677
  .tcn-modal {
812
678
  --divide-header: 0;
813
679
  box-shadow: 0px 4px 34px 0px #00000096;
814
- border-radius: var(--shape-radius-medium);
680
+ border-radius: var(--ergo-shape-radius-medium);
815
681
  background-color: var(--background-color-primary);
816
682
  overflow: hidden;
817
- border: 1px solid var(--foreground-color-primary);
683
+ border: 1px solid var(--ergo-material-border);
818
684
 
819
685
  :where(.tcn-header) {
820
- --material: var(--ergo-secondary-dark);
686
+ --material: var(--ergo-material-overlay);
821
687
  --on-material: var(--ergo-white);
822
688
  --action: var(--ergo-tertiary);
823
689
  --on-action: var(--ergo-secondary-dark);
@@ -838,7 +704,7 @@
838
704
  overflow: hidden;
839
705
 
840
706
  :where(.tcn-header) {
841
- --material: var(--ergo-secondary-dark);
707
+ --material: var(--ergo-material-overlay);
842
708
  --on-material: var(--ergo-white);
843
709
  --action: var(--ergo-tertiary);
844
710
  --on-action: var(--ergo-secondary-dark);
@@ -855,13 +721,13 @@
855
721
  .tcn-window {
856
722
  box-shadow: 0px 4px 34px 0px #00000096;
857
723
  --divide-header: 0;
858
- border-radius: var(--shape-radius-medium);
724
+ border-radius: var(--ergo-shape-radius-medium);
859
725
  background-color: var(--background-color-primary);
860
726
  overflow: hidden;
861
727
  border: 2px solid white;
862
728
 
863
729
  :where(.tcn-header) {
864
- --material: var(--ergo-secondary-dark);
730
+ --material: var(--ergo-material-overlay);
865
731
  --on-material: var(--ergo-white);
866
732
  --action: var(--ergo-tertiary);
867
733
  --on-action: var(--ergo-secondary-dark);
@@ -880,7 +746,7 @@
880
746
  --pad-inline: var(--padding-medium);
881
747
 
882
748
  .tcn-pop-confirm-scaffold > .tcn-scaffold-stack {
883
- border-radius: var(--shape-radius-medium);
749
+ border-radius: var(--ergo-shape-radius-medium);
884
750
  box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.4);
885
751
  background-color: var(--background-color-primary);
886
752
  }
@@ -892,14 +758,14 @@
892
758
  /* Set the indicator to match the header color */
893
759
  &[data-v-origin="top"] {
894
760
  :where(.tcn-tethered-origin-indicator) {
895
- --material: var(--ergo-secondary-dark);
761
+ --material: var(--ergo-material-overlay);
896
762
  }
897
763
  }
898
764
 
899
765
  :where(.tcn-header) {
900
- min-height: var(--bar-md);
766
+ min-height: var(--ergo-sizing-bar-md);
901
767
 
902
- --material: var(--ergo-secondary-dark);
768
+ --material: var(--ergo-material-overlay);
903
769
  --on-material: var(--ergo-white);
904
770
  --action: var(--ergo-tertiary);
905
771
  --on-action: var(--ergo-secondary-dark);
@@ -927,7 +793,7 @@
927
793
  min-width: 2px;
928
794
  height: 18px;
929
795
  background: var(--ergo-grey);
930
- border-radius: var(--shape-radius-small);
796
+ border-radius: var(--ergo-shape-radius-small);
931
797
  align-self: center;
932
798
  }
933
799
  }
@@ -938,7 +804,7 @@
938
804
  --divide-footer: 1;
939
805
  --material: var(--background-color-primary);
940
806
  background-color: var(--material);
941
- border-radius: var(--shape-radius-medium);
807
+ border-radius: var(--ergo-shape-radius-medium);
942
808
  overflow: hidden;
943
809
 
944
810
  :where(.tcn-title) {
@@ -956,11 +822,11 @@
956
822
  overflow: hidden;
957
823
 
958
824
  :where(.tcn-header) {
959
- min-height: var(--bar-md);
825
+ min-height: var(--ergo-sizing-bar-md);
960
826
  }
961
827
 
962
828
  :where(.tcn-footer) {
963
- min-height: var(--bar-md);
829
+ min-height: var(--ergo-sizing-bar-md);
964
830
  }
965
831
 
966
832
  :where(.tcn-title) {
@@ -975,12 +841,12 @@
975
841
  --pad-inline: var(--padding-medium);
976
842
 
977
843
  background-color: var(--background-color-primary);
978
- border-radius: var(--shape-radius-medium);
979
- border: 1px solid var(--foreground-color-primary);
844
+ border-radius: var(--ergo-shape-radius-medium);
845
+ border: 1px solid var(--ergo-material-border);
980
846
  overflow: hidden;
981
847
 
982
848
  :where(.tcn-header) {
983
- min-height: var(--bar-md);
849
+ min-height: var(--ergo-sizing-bar-md);
984
850
 
985
851
  --material: var(--ergo-secondary-light);
986
852
  --on-material: var(--ergo-accent-blue);
@@ -995,7 +861,7 @@
995
861
  }
996
862
 
997
863
  :where(.tcn-utility-bar) {
998
- min-height: var(--bar-sm);
864
+ min-height: var(--ergo-sizing-bar-sm);
999
865
  }
1000
866
 
1001
867
  :where(.tcn-scaffold-stack) > :where(.tcn-scaffold) > :where(.tcn-scaffold-stack),
@@ -1016,19 +882,24 @@
1016
882
  var(--section-tab-start) +
1017
883
  (var(--section-tab-width) * var(--section-tab-depth))
1018
884
  );
885
+ --section-heading-height: var(--ergo-sizing-bar-md);
1019
886
  --section-action: var(--ergo-secondary);
1020
887
  --section-mat: var(--ergo-secondary-light);
1021
- --section-on-mat: var(--ergo-ink-primary);
888
+ --section-on-mat: var(--ergo-text-color-primary);
1022
889
  }
1023
890
 
1024
891
  .tcn-heading {
1025
- background-color: #f1f1f1;
892
+ position: sticky;
893
+ background-color: var(--material);
1026
894
  padding-inline-start: var(--pad-inline, var(--padding-medium));
1027
- height: 30px;
895
+ padding-inline-end: var(--pad-inline, var(--padding-medium));
896
+ height: var(--section-heading-height);
1028
897
  z-index: 5;
898
+ user-select: none;
1029
899
  }
1030
900
 
1031
901
  .tcn-section > .tcn-heading {
902
+ top: calc(var(--section-heading-height) * var(--section-tab-depth));
1032
903
  z-index: calc(var(--max-section-depth) - var(--section-tab-depth));
1033
904
  padding-inline-start: var(--section-tab);
1034
905
  --material: var(--section-mat);
@@ -1039,14 +910,18 @@
1039
910
  gap: var(--gap-small);
1040
911
  }
1041
912
 
1042
- /* TODO: Consider an opt-in model (E) where Section exposes --section-tab but does not
1043
- apply padding-inline-start automatically. A dedicated component (e.g. SectionContent)
1044
- would opt in via the variable, and surfaces like Card would be unaffected by default.
1045
- This would decouple Section from needing to know about every surface type and give
1046
- clearer boundaries between "content that lives inside a section" vs "a surface placed
1047
- at section level". High blast-radius refactor — table for a future pass. */
1048
- .tcn-section > :not(.tcn-heading, .tcn-section) {
913
+ .tcn-detail {
914
+ padding-block: var(--padding-medium);
915
+ gap: var(--padding-medium);
916
+ }
917
+
918
+ .tcn-section > .tcn-detail {
1049
919
  padding-inline-start: var(--section-tab);
920
+ padding-inline-end: var(--pad-inline, var(--padding-medium));
921
+ }
922
+
923
+ .tcn-scaffold-stack > .tcn-detail {
924
+ padding-inline: var(--pad-inline, var(--padding-medium));
1050
925
  }
1051
926
 
1052
927
  .tcn-section > .tcn-section {
@@ -1068,7 +943,7 @@
1068
943
  }
1069
944
 
1070
945
  .tcn-caret {
1071
- --caret-size: var(--shape-triangle-medium);
946
+ --caret-size: var(--ergo-shape-triangle-medium);
1072
947
  --caret-triangle-height: calc(var(--caret-size) / 2);
1073
948
  --caret-triangle-width: var(--caret-size);
1074
949
  --caret-triangle-base: var(--caret-triangle-height) solid transparent;
@@ -1111,7 +986,7 @@
1111
986
  --table-pad-inline: var(--pad-inline, var(--padding-medium));
1112
987
 
1113
988
  --material: var(--ergo-white);
1114
- --on-material: var(--ergo-ink-primary);
989
+ --on-material: var(--ergo-text-color-primary);
1115
990
  --action: var(--ergo-accent-blue);
1116
991
  --on-action: var(--ergo-white);
1117
992
  background-color: var(--material);
@@ -1152,7 +1027,7 @@
1152
1027
  .tcn-thead {
1153
1028
  /* Border for header row */
1154
1029
  .tcn-tr {
1155
- height: var(--bar-md);
1030
+ height: var(--ergo-sizing-bar-md);
1156
1031
  .tcn-th {
1157
1032
  border-bottom: 1px solid var(--ergo-grey-light);
1158
1033
  }
@@ -1169,7 +1044,7 @@
1169
1044
  font-weight: bold;
1170
1045
  /* Border for footer row */
1171
1046
  .tcn-tr {
1172
- height: var(--bar-sm);
1047
+ height: var(--ergo-sizing-bar-sm);
1173
1048
  .tcn-th,
1174
1049
  .tcn-td {
1175
1050
  border-top: 1px solid var(--ergo-grey-light);
@@ -1195,7 +1070,7 @@
1195
1070
  }
1196
1071
 
1197
1072
  .tcn-tr {
1198
- height: var(--bar-sm);
1073
+ height: var(--ergo-sizing-bar-sm);
1199
1074
  align-content: center;
1200
1075
  }
1201
1076
 
@@ -1254,17 +1129,17 @@
1254
1129
  --mat: var(--material);
1255
1130
  --act-raised: color-mix(in srgb, var(--mat), var(--act) 12%);
1256
1131
 
1257
- font-size: var(--font-size-input);
1132
+ font-size: var(--ergo-text-size-input);
1258
1133
  border: 1px solid var(--ergo-grey);
1259
1134
  box-sizing: border-box;
1260
- min-height: var(--action-md);
1261
- border-radius: var(--shape-radius-medium);
1135
+ min-height: var(--ergo-sizing-action-md);
1136
+ border-radius: var(--ergo-shape-radius-medium);
1262
1137
  padding-inline: 4px;
1263
1138
  }
1264
1139
 
1265
1140
  .tcn-radio-label,
1266
1141
  .tcn-select-selected-label {
1267
- font-size: var(--font-size-input);
1142
+ font-size: var(--ergo-text-size-input);
1268
1143
  }
1269
1144
 
1270
1145
  .tcn-control[data-is-disabled="false"]:hover {
@@ -1286,12 +1161,12 @@
1286
1161
 
1287
1162
  .tcn-control[data-is-disabled="true"] {
1288
1163
  cursor: not-allowed;
1289
- background: var(--material-disabled);
1290
- color: var(--on-material-disabled);
1164
+ background: var(--ergo-material-disabled-outline);
1165
+ color: var(--ergo-text-color-disabled-outline);
1291
1166
  }
1292
1167
 
1293
1168
  .tcn-control[data-is-disabled="true"]::placeholder {
1294
- color: var(--on-material-disabled);
1169
+ color: var(--ergo-text-color-disabled-outline);
1295
1170
  }
1296
1171
 
1297
1172
  .tcn-control {
@@ -1341,7 +1216,7 @@
1341
1216
  }
1342
1217
 
1343
1218
  .tcn-control-set {
1344
- border-radius: var(--shape-radius-medium);
1219
+ border-radius: var(--ergo-shape-radius-medium);
1345
1220
 
1346
1221
  &:focus-within {
1347
1222
  outline: 2px solid var(--ergo-primary);
@@ -1352,7 +1227,7 @@
1352
1227
  z-index: 1;
1353
1228
  border-radius: 0;
1354
1229
  height: auto;
1355
- min-height: var(--action-md);
1230
+ min-height: var(--ergo-sizing-action-md);
1356
1231
  padding-block: 0;
1357
1232
  &:focus,
1358
1233
  &:focus-visible {
@@ -1362,8 +1237,8 @@
1362
1237
  }
1363
1238
 
1364
1239
  .tcn-control-set-item:first-child {
1365
- border-top-left-radius: var(--shape-radius-medium);
1366
- border-bottom-left-radius: var(--shape-radius-medium);
1240
+ border-top-left-radius: var(--ergo-shape-radius-medium);
1241
+ border-bottom-left-radius: var(--ergo-shape-radius-medium);
1367
1242
  }
1368
1243
 
1369
1244
  .tcn-control-set-item:not(:last-child) {
@@ -1371,8 +1246,8 @@
1371
1246
  }
1372
1247
 
1373
1248
  .tcn-control-set-item:last-child {
1374
- border-top-right-radius: var(--shape-radius-medium);
1375
- border-bottom-right-radius: var(--shape-radius-medium);
1249
+ border-top-right-radius: var(--ergo-shape-radius-medium);
1250
+ border-bottom-right-radius: var(--ergo-shape-radius-medium);
1376
1251
  }
1377
1252
 
1378
1253
  .tcn-select,
@@ -1380,8 +1255,8 @@
1380
1255
  .tcn-button[data-hierarchy] {
1381
1256
  border: 1px solid var(--ergo-grey);
1382
1257
  height: auto;
1383
- min-height: var(--action-md);
1384
- min-width: var(--action-md);
1258
+ min-height: var(--ergo-sizing-action-md);
1259
+ min-width: var(--ergo-sizing-action-md);
1385
1260
  box-sizing: border-box;
1386
1261
  &:hover,
1387
1262
  &[data-hover] {
@@ -1425,7 +1300,7 @@
1425
1300
 
1426
1301
  &[data-is-disabled="true"] {
1427
1302
  cursor: not-allowed;
1428
- border-color: var(--material-disabled);
1303
+ border-color: var(--ergo-material-disabled-outline);
1429
1304
  }
1430
1305
 
1431
1306
  &[data-checked="true"] {
@@ -1470,4 +1345,64 @@
1470
1345
  .tcn-suggestion-list {
1471
1346
  --accent-color: var(--ergo-primary);
1472
1347
  }
1348
+
1349
+ /* Datum/Tokens */
1350
+ .tcn-chip {
1351
+ --action: var(--ergo-primary);
1352
+ --accent-color: var(--ergo-primary);
1353
+ }
1354
+
1355
+ .tcn-datum[data-emphasis="normal"] {
1356
+ --datum-font-color: var(--on-material);
1357
+ }
1358
+
1359
+ .tcn-datum[data-emphasis="strong"] {
1360
+ --datum-font-weight: 700;
1361
+ }
1362
+
1363
+ .tcn-datum[data-emphasis="faint"] {
1364
+ --datum-font-color: color-mix(in srgb, var(--on-material), transparent 12%);
1365
+ }
1366
+
1367
+ .tcn-datum[data-severity="dangerous"] {
1368
+ --datum-font-color: var(--ergo-status-red);
1369
+ }
1370
+
1371
+ .tcn-datum[data-severity="cautious"] {
1372
+ --datum-font-color: var(--ergo-status-yellow);
1373
+ }
1374
+
1375
+ .tcn-datum[data-severity="suggested"] {
1376
+ --datum-font-color: var(--ergo-status-blue);
1377
+ }
1378
+
1379
+ .tcn-datum[data-severity="encouraged"] {
1380
+ --datum-font-color: var(--ergo-status-green);
1381
+ }
1382
+
1383
+ .tcn-key {
1384
+ --accent-color: var(--action);
1385
+ font-size: 14px;
1386
+ color: var(--datum-font-color);
1387
+ font-weight: var(--datum-font-weight, 400);
1388
+ }
1389
+
1390
+ .tcn-value {
1391
+ font-size: 12px;
1392
+
1393
+ color: var(--datum-font-color);
1394
+ font-weight: var(--datum-font-weight, 400);
1395
+ }
1396
+
1397
+ .tcn-term > .tcn-key,
1398
+ .tcn-term > .tcn-value {
1399
+ max-width: 50%;
1400
+ }
1401
+
1402
+ .tcn-value {
1403
+ :where(.tcn-chip) {
1404
+ --action: var(--ergo-accent-blue);
1405
+ --accent-color: var(--ergo-accent-blue);
1406
+ }
1407
+ }
1473
1408
  }
@@ -1,5 +1,7 @@
1
+ import { buildStyleSheet } from '../../build_stylesheet';
2
+ import tokensCss from './tokens/theme_tokens.css?raw';
3
+ import systemTokensCss from './tokens/system_tokens.css?raw';
1
4
  import css from './ergo_theme.css?raw';
2
5
  import '@fontsource/lato';
3
6
 
4
- export const ergoStyleSheet = new CSSStyleSheet();
5
- ergoStyleSheet.replaceSync(css);
7
+ export const ergoStyleSheet = buildStyleSheet([tokensCss, systemTokensCss, css]);