@tcn/ui 0.3.2 → 0.4.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 (207) hide show
  1. package/dist/Color-6BZIO3FS-CWWwv-fq.js +1004 -0
  2. package/dist/Color-6BZIO3FS-CWWwv-fq.js.map +1 -0
  3. package/dist/{WithTooltip-IO6J4KBT-B1oq93K5.js → WithTooltip-65CFNBJE-DvcUZizH.js} +4 -4
  4. package/dist/WithTooltip-65CFNBJE-DvcUZizH.js.map +1 -0
  5. package/dist/actions/__docs__/components/showcase.d.ts.map +1 -1
  6. package/dist/actions/__docs__/components/showcase.js +1 -1
  7. package/dist/actions/button/base_button/base_button.d.ts +2 -4
  8. package/dist/actions/button/base_button/base_button.d.ts.map +1 -1
  9. package/dist/actions/button/base_button/base_button.js +35 -35
  10. package/dist/actions/button/base_button/base_button.js.map +1 -1
  11. package/dist/actions/button/button/button.d.ts +7 -1
  12. package/dist/actions/button/button/button.d.ts.map +1 -1
  13. package/dist/actions/button/button/button.js +9 -7
  14. package/dist/actions/button/button/button.js.map +1 -1
  15. package/dist/actions/button/slim_button/slim_button.d.ts +6 -1
  16. package/dist/actions/button/slim_button/slim_button.d.ts.map +1 -1
  17. package/dist/actions/button/slim_button/slim_button.js +13 -14
  18. package/dist/actions/button/slim_button/slim_button.js.map +1 -1
  19. package/dist/actions/toggle/toggle.d.ts +9 -0
  20. package/dist/actions/toggle/toggle.d.ts.map +1 -0
  21. package/dist/actions/toggle/toggle.js +21 -0
  22. package/dist/actions/toggle/toggle.js.map +1 -0
  23. package/dist/date_picker_time_selector.css +1 -1
  24. package/dist/feedback/lazy/lazy.js +3 -3
  25. package/dist/form/field/common/field_error.js +16 -9
  26. package/dist/form/field/common/field_error.js.map +1 -1
  27. package/dist/formatter-EIJCOSYU-D6nmx63h.js +6 -0
  28. package/dist/formatter-EIJCOSYU-D6nmx63h.js.map +1 -0
  29. package/dist/input.css +1 -1
  30. package/dist/inputs/mask_input/mask.d.ts.map +1 -1
  31. package/dist/inputs/mask_input/mask.js.map +1 -1
  32. package/dist/inputs/multiselect/multiselect_inline_values.js +3 -2
  33. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  34. package/dist/inputs/multiselect/multiselect_values.js +3 -2
  35. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  36. package/dist/layouts/index.d.ts +2 -1
  37. package/dist/layouts/index.d.ts.map +1 -1
  38. package/dist/layouts/index.js +20 -18
  39. package/dist/layouts/index.js.map +1 -1
  40. package/dist/layouts/row/row.d.ts +4 -0
  41. package/dist/layouts/row/row.d.ts.map +1 -0
  42. package/dist/layouts/row/row.js +11 -0
  43. package/dist/layouts/row/row.js.map +1 -0
  44. package/dist/layouts/section/heading.d.ts +7 -0
  45. package/dist/layouts/section/heading.d.ts.map +1 -0
  46. package/dist/layouts/section/heading.js +9 -0
  47. package/dist/layouts/section/heading.js.map +1 -0
  48. package/dist/layouts/section/section.d.ts +4 -0
  49. package/dist/layouts/section/section.d.ts.map +1 -0
  50. package/dist/layouts/section/section.js +22 -0
  51. package/dist/layouts/section/section.js.map +1 -0
  52. package/dist/navigation/index.d.ts +7 -0
  53. package/dist/navigation/index.d.ts.map +1 -0
  54. package/dist/navigation/index.js +17 -0
  55. package/dist/navigation/index.js.map +1 -0
  56. package/dist/navigation/tabs/primitives/tabs_bar.d.ts +7 -0
  57. package/dist/navigation/tabs/primitives/tabs_bar.d.ts.map +1 -0
  58. package/dist/navigation/tabs/primitives/tabs_bar.js +21 -0
  59. package/dist/navigation/tabs/primitives/tabs_bar.js.map +1 -0
  60. package/dist/navigation/tabs/primitives/tabs_list.d.ts +10 -0
  61. package/dist/navigation/tabs/primitives/tabs_list.d.ts.map +1 -0
  62. package/dist/navigation/tabs/primitives/tabs_list.js +29 -0
  63. package/dist/navigation/tabs/primitives/tabs_list.js.map +1 -0
  64. package/dist/navigation/tabs/state/context.d.ts +21 -0
  65. package/dist/navigation/tabs/state/context.d.ts.map +1 -0
  66. package/dist/navigation/tabs/state/context.js +34 -0
  67. package/dist/navigation/tabs/state/context.js.map +1 -0
  68. package/dist/navigation/tabs/state/link/tab_link.d.ts +9 -0
  69. package/dist/navigation/tabs/state/link/tab_link.d.ts.map +1 -0
  70. package/dist/navigation/tabs/state/link/tab_link.js +36 -0
  71. package/dist/navigation/tabs/state/link/tab_link.js.map +1 -0
  72. package/dist/navigation/tabs/state/link/use_tab_link.d.ts +5 -0
  73. package/dist/navigation/tabs/state/link/use_tab_link.d.ts.map +1 -0
  74. package/dist/navigation/tabs/state/link/use_tab_link.js +13 -0
  75. package/dist/navigation/tabs/state/link/use_tab_link.js.map +1 -0
  76. package/dist/navigation/tabs/state/nav_bar.d.ts +5 -0
  77. package/dist/navigation/tabs/state/nav_bar.d.ts.map +1 -0
  78. package/dist/navigation/tabs/state/nav_bar.js +36 -0
  79. package/dist/navigation/tabs/state/nav_bar.js.map +1 -0
  80. package/dist/navigation/tabs/state/tab.d.ts +6 -0
  81. package/dist/navigation/tabs/state/tab.d.ts.map +1 -0
  82. package/dist/navigation/tabs/state/tab.js +6 -0
  83. package/dist/navigation/tabs/state/tab.js.map +1 -0
  84. package/dist/overlay/carrot/base_carrot.d.ts +8 -0
  85. package/dist/overlay/carrot/base_carrot.d.ts.map +1 -0
  86. package/dist/overlay/carrot/base_carrot.js +21 -0
  87. package/dist/overlay/carrot/base_carrot.js.map +1 -0
  88. package/dist/overlay/portal/portal_platform.d.ts.map +1 -1
  89. package/dist/overlay/portal/portal_platform.js +3 -3
  90. package/dist/overlay/portal/portal_platform.js.map +1 -1
  91. package/dist/row.css +1 -0
  92. package/dist/section.css +1 -0
  93. package/dist/section.module-0wyGkhDg.js +5 -0
  94. package/dist/section.module-0wyGkhDg.js.map +1 -0
  95. package/dist/{showcase-WfP6kBEb.js → showcase-DK557szS.js} +18018 -16269
  96. package/dist/showcase-DK557szS.js.map +1 -0
  97. package/dist/surfaces/pop_confirm/pop_confirm.js +4 -3
  98. package/dist/surfaces/pop_confirm/pop_confirm.js.map +1 -1
  99. package/dist/{syntaxhighlighter-IQDEPFLK-BX_eF8__.js → syntaxhighlighter-ED5Y7EFY-DaMS-2cF.js} +54 -54
  100. package/dist/syntaxhighlighter-ED5Y7EFY-DaMS-2cF.js.map +1 -0
  101. package/dist/tabs_bar.css +1 -0
  102. package/dist/textarea.css +1 -1
  103. package/dist/theme_provider.css +1 -0
  104. package/dist/theme_provider.module-ChZQ5Xsk.js +5 -0
  105. package/dist/theme_provider.module-ChZQ5Xsk.js.map +1 -0
  106. package/dist/themes/stylesheets/reset.css +1 -1
  107. package/dist/themes/stylesheets/reset.js +1 -0
  108. package/dist/themes/stylesheets/reset.js.map +1 -1
  109. package/dist/themes/theme.d.ts +3 -2
  110. package/dist/themes/theme.d.ts.map +1 -1
  111. package/dist/themes/theme.js +20 -10
  112. package/dist/themes/theme.js.map +1 -1
  113. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  114. package/dist/themes/themes/ergo/ergo_theme.d.ts.map +1 -1
  115. package/dist/themes/themes/ergo/ergo_theme.js +488 -238
  116. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  117. package/dist/themes/themes/windows_98/windows_98.css +1 -1
  118. package/dist/themes/themes/windows_98/windows_98_theme.js +149 -4
  119. package/dist/themes/themes/windows_98/windows_98_theme.js.map +1 -1
  120. package/dist/tokens/bubble/bubble.js +31 -24
  121. package/dist/tokens/bubble/bubble.js.map +1 -1
  122. package/dist/tokens/chip/chip.js +15 -8
  123. package/dist/tokens/chip/chip.js.map +1 -1
  124. package/dist/tokens/index.d.ts +2 -0
  125. package/dist/tokens/index.d.ts.map +1 -1
  126. package/dist/tokens/index.js +5 -1
  127. package/dist/tokens/index.js.map +1 -1
  128. package/dist/tokens/key/key.d.ts +3 -0
  129. package/dist/tokens/key/key.d.ts.map +1 -0
  130. package/dist/tokens/key/key.js +8 -0
  131. package/dist/tokens/key/key.js.map +1 -0
  132. package/dist/tokens/value/value.d.ts +3 -0
  133. package/dist/tokens/value/value.d.ts.map +1 -0
  134. package/dist/tokens/value/value.js +8 -0
  135. package/dist/tokens/value/value.js.map +1 -0
  136. package/dist/utils/css_utils.d.ts +9 -0
  137. package/dist/utils/css_utils.d.ts.map +1 -0
  138. package/dist/utils/css_utils.js +45 -0
  139. package/dist/utils/css_utils.js.map +1 -0
  140. package/package.json +8 -1
  141. package/src/actions/__docs__/actions.mdx +159 -34
  142. package/src/actions/__docs__/actions.stories.tsx +416 -101
  143. package/src/actions/__docs__/components/showcase.tsx +10 -6
  144. package/src/actions/button/__stories__/button.stories.tsx +10 -0
  145. package/src/actions/button/__stories__/toggle.stories.tsx +177 -0
  146. package/src/actions/button/base_button/base_button.tsx +8 -10
  147. package/src/actions/button/button/button.tsx +11 -2
  148. package/src/actions/button/slim_button/slim_button.tsx +20 -13
  149. package/src/actions/toggle/toggle.tsx +26 -0
  150. package/src/inputs/date_picker/date_picker_time_selector.module.css +0 -1
  151. package/src/inputs/input/input.module.css +0 -1
  152. package/src/inputs/mask_input/mask.ts +7 -1
  153. package/src/inputs/textarea/textarea.module.css +0 -1
  154. package/src/layouts/index.ts +3 -2
  155. package/src/layouts/row/row.module.css +5 -0
  156. package/src/layouts/row/row.tsx +15 -0
  157. package/src/layouts/section/__stories__/section.stories.module.css +6 -0
  158. package/src/layouts/section/__stories__/section.stories.tsx +152 -0
  159. package/src/layouts/section/heading.tsx +16 -0
  160. package/src/layouts/section/section.module.css +41 -0
  161. package/src/layouts/section/section.tsx +21 -0
  162. package/src/navigation/index.ts +18 -0
  163. package/src/navigation/tabs/__stories__/state.stories.tsx +136 -0
  164. package/src/navigation/tabs/__stories__/tabs.stories.tsx +40 -0
  165. package/src/navigation/tabs/primitives/tabs_bar.module.css +13 -0
  166. package/src/navigation/tabs/primitives/tabs_bar.tsx +25 -0
  167. package/src/navigation/tabs/primitives/tabs_list.tsx +41 -0
  168. package/src/navigation/tabs/state/context.tsx +61 -0
  169. package/src/navigation/tabs/state/link/tab_link.tsx +45 -0
  170. package/src/navigation/tabs/state/link/use_tab_link.ts +17 -0
  171. package/src/navigation/tabs/state/nav_bar.tsx +37 -0
  172. package/src/navigation/tabs/state/tab.tsx +12 -0
  173. package/src/overlay/carrot/base_carrot.tsx +24 -0
  174. package/src/overlay/carrot/carrot.stories.tsx +54 -0
  175. package/src/overlay/portal/portal_platform.tsx +1 -0
  176. package/src/surfaces/card/card.stories.tsx +14 -14
  177. package/src/surfaces/modal/__stories__/modal.stories.tsx +19 -8
  178. package/src/surfaces/window/window.stories.tsx +16 -10
  179. package/src/themes/stylesheets/reset.css +1 -0
  180. package/src/themes/theme.tsx +13 -4
  181. package/src/themes/theme_provider.module.css +6 -0
  182. package/src/themes/themes/ergo/__stories__/components/material_picker/sb_inverted_materials.module.css +4 -4
  183. package/src/themes/themes/ergo/__stories__/components/tone_picker/sb_tone_picker.module.css +3 -0
  184. package/src/themes/themes/ergo/__stories__/components/tone_picker/sb_tone_picker.tsx +5 -2
  185. package/src/themes/themes/ergo/__stories__/material.stories.tsx +2 -2
  186. package/src/themes/themes/ergo/__stories__/sb_materials.module.css +31 -26
  187. package/src/themes/themes/ergo/ergo_theme.css +484 -235
  188. package/src/themes/themes/ergo/ergo_theme.ts +1 -0
  189. package/src/themes/themes/windows_98/windows_98.css +149 -4
  190. package/src/tokens/index.ts +2 -0
  191. package/src/tokens/key/key.tsx +10 -0
  192. package/src/tokens/value/value.tsx +10 -0
  193. package/src/utils/css_utils.ts +64 -0
  194. package/tsconfig.json +6 -0
  195. package/dist/Color-ASIRERSW-B4GaVKuQ.js +0 -990
  196. package/dist/Color-ASIRERSW-B4GaVKuQ.js.map +0 -1
  197. package/dist/WithTooltip-IO6J4KBT-B1oq93K5.js.map +0 -1
  198. package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js +0 -6
  199. package/dist/formatter-QJ4M4OGQ-DaIl2Wi_.js.map +0 -1
  200. package/dist/layouts/list/section_header.d.ts +0 -6
  201. package/dist/layouts/list/section_header.d.ts.map +0 -1
  202. package/dist/layouts/list/section_header.js +0 -22
  203. package/dist/layouts/list/section_header.js.map +0 -1
  204. package/dist/showcase-WfP6kBEb.js.map +0 -1
  205. package/dist/syntaxhighlighter-IQDEPFLK-BX_eF8__.js.map +0 -1
  206. package/src/layouts/list/section_header.module.css +0 -20
  207. package/src/layouts/list/section_header.tsx +0 -21
@@ -1,3 +1,4 @@
1
+ import "@fontsource/lato";
1
2
  const n = `@layer tcn-reset {
2
3
  * {
3
4
  position: relative;
@@ -8,11 +9,44 @@ const n = `@layer tcn-reset {
8
9
  @layer tcn-theme {
9
10
  /* ===== CSS VARIABLES ===== */
10
11
  :root {
12
+ /* ========== Ergo Brand Palette ========== */
13
+ --ergo-primary: #ce6b2b;
14
+ --ergo-secondary: #669eb4;
15
+ --ergo-secondary-light: #ecf4fb;
16
+ --ergo-secondary-dark: #497485;
17
+ --ergo-tertiary: #dfd7cd;
18
+ --ergo-white: #ffffff;
19
+
20
+ --ergo-accent-blue: #395578;
21
+ --ergo-accent-green: #97bba3;
22
+ --ergo-accent-yellow: #dbc97e;
23
+ --ergo-accent-green: #97bba3;
24
+
25
+ --ergo-grey: #aaaaaa;
26
+ --ergo-grey-light: #d3d3d3;
27
+ --ergo-grey-dark: #808080;
28
+
29
+ --ergo-status-red: #ff6565;
30
+ --ergo-status-red-dark: #c24848;
31
+
32
+ --ergo-status-yellow: #ffd439;
33
+ --ergo-status-yellow-dark: #dbb735;
34
+
35
+ --ergo-status-blue: var(--ergo-secondary);
36
+ --ergo-status-blue-dark: var(--ergo-secondary-dark);
37
+
38
+ --ergo-status-green: #3fbc6a;
39
+ --ergo-status-green-dark: #2d904f;
40
+
41
+ --ergo-ink-primary: var(--ergo-accent-blue);
42
+ --ergo-ink-inverse: var(--ergo-white);
43
+
44
+ /* ========== Blackcat System Tokens ========== */
11
45
  --scalar: 1;
12
- --accent-color: #cd6b2c;
46
+ --accent-color: var(--ergo-primary);
13
47
 
14
48
  /* Typography */
15
- --font-color: #395578;
49
+ --font-color: var(--ergo-ink-primary);
16
50
  --font-family: "Lato", sans-serif;
17
51
  --font-size: 12px;
18
52
 
@@ -26,16 +60,22 @@ const n = `@layer tcn-reset {
26
60
  --padding-large: 16px;
27
61
 
28
62
  /* Status Colors */
29
- --status-color-disabled: #7f7f7f;
30
- --status-color-info: #008cff;
31
- --status-color-warning: #ffff00;
32
- --status-color-positive: #00ff00;
33
- --status-color-error: #ff0000;
34
-
35
- --async-color-initial: #c0c0c0;
36
- --async-color-pending: #008cff;
37
- --async-color-success: #00ff00;
38
- --async-color-failed: #ff0000;
63
+ --status-color-disabled: var(--ergo-grey-light);
64
+ --status-color-info: var(--ergo-status-blue);
65
+ --status-color-warning: var(--ergo-status-yellow);
66
+ --status-color-positive: var(--ergo-status-green);
67
+ --status-color-error: var(--ergo-status-red);
68
+
69
+ --async-color-initial: var(--ergo-grey-main);
70
+ --async-color-pending: var(--ergo-status-blue);
71
+ --async-color-success: var(--ergo-status-green);
72
+ --async-color-failed: var(--ergo-status-red);
73
+
74
+ --action-severity-dangerous: var(--ergo-status-red);
75
+ --action-severity-cautious: var(--ergo-status-yellow);
76
+ --action-severity-neutral: var(--ergo-primary);
77
+ --action-severity-suggested: var(--ergo-status-blue);
78
+ --action-severity-encouraged: var(--ergo-status-green);
39
79
 
40
80
  /* Shape */
41
81
  --shape-radius-small: 2px;
@@ -69,22 +109,26 @@ const n = `@layer tcn-reset {
69
109
  --foreground-color-tertiary: #222222;
70
110
  --foreground-color-quaternary: #222222;
71
111
 
72
- --material-disabled: #d3d3d3;
73
- --material-secondary-dark: 197 29.1% 40.4%;
74
- --material-tan: 33, 22%, 84%;
112
+ --material-disabled: var(--ergo-grey-light);
113
+ --on-material-disabled: var(--ergo-ink-inverse);
114
+ --ink-disabled: var(--ergo-grey-light);
115
+
116
+ --material-line: var(--ergo-grey);
75
117
 
76
118
  /* Default Material */
77
- --action: 23, 65%, 49%;
78
- --on-action: 0, 0%, 100%;
79
- --material: 0, 0%, 100%;
80
- --on-material: 213, 35.6%, 34.7%;
119
+ --action: var(--ergo-primary);
120
+ --on-action: var(--ergo-white);
121
+ --material: var(--ergo-white);
122
+ --on-material: var(--ergo-accent-blue);
123
+ }
81
124
 
82
- --action-dangerous: 0, 90%, 50%;
83
- --action-cautious: 53, 90%, 60%;
84
- --on-action-cautious: 213, 35.6%, 34.7%;
85
- --action-neutral: var(--action);
86
- --action-suggested: 202, 90%, 40%;
87
- --action-encouraged: 120, 90%, 40%;
125
+ .tcn-theme-root {
126
+ font-family: var(--font-family);
127
+ color: var(--font-color);
128
+ --action: var(--ergo-primary);
129
+ --on-action: var(--ergo-white);
130
+ --material: var(--ergo-white);
131
+ --on-material: var(--ergo-accent-blue);
88
132
  }
89
133
 
90
134
  /* ===== Actions ===== */
@@ -97,191 +141,206 @@ const n = `@layer tcn-reset {
97
141
  background 0.1s,
98
142
  color 0.1s;
99
143
 
100
- --act: hsl(var(--tcn-interactive-color, var(--action)));
101
- --on-act: hsl(var(--on-action));
102
- /* Could use hsl here if we made three color variables for each of the hsl values */
103
- --act-down: color-mix(in srgb, var(--act), black 8%);
104
- --act-raised: color-mix(in srgb, var(--act), white 8%);
105
- --act-faint: hsla(var(--action), 0.2);
106
- --on-mat: hsl(var(--on-material));
107
- --on-mat-faint: hsla(var(--on-material), 0.2);
108
- --mat: hsl(var(--material));
109
- --mat-down: color-mix(in srgb, var(--mat), black 8%);
110
- --mat-raised: color-mix(in srgb, var(--mat), white 8%);
111
- }
112
-
113
- .tcn-interactive[data-is-disabled="true"] {
114
- pointer-events: none;
115
- cursor: not-allowed;
116
- }
117
-
118
- .tcn-interactive[data-hierarchy="primary"] {
119
- background: var(--act);
120
- color: var(--on-act);
121
- border: 1px solid var(--act);
122
- }
123
-
124
- .tcn-interactive[data-hierarchy="primary"]:focus-visible {
125
- outline: 2px dashed var(--act);
126
- }
144
+ --ink: var(--on-material);
145
+ --act: var(--action);
146
+ --mat: var(--material);
127
147
 
128
- .tcn-interactive[data-hierarchy="primary"][data-is-disabled="true"] {
129
- background: var(--material-disabled);
130
- color: white;
131
- border: 1px solid var(--material-disabled);
132
- }
148
+ --act-down: color-mix(in srgb, var(--mat), black 12%);
149
+ --act-raised: color-mix(in srgb, var(--mat), var(--act) 12%);
150
+ --act-focus: color-mix(in srgb, var(--mat), var(--act) 16%);
151
+ --act-drag: color-mix(in srgb, var(--mat), var(--act) 24%);
133
152
 
134
- .tcn-interactive[data-hierarchy="primary"]:hover {
135
- background: var(--act-raised);
136
- }
137
-
138
- .tcn-interactive[data-hierarchy="primary"]:active {
139
- background: var(--act-down);
140
- }
153
+ background: var(--mat);
154
+ color: var(--ink);
155
+ transition:
156
+ background 0.1s,
157
+ color 0.1s;
141
158
 
142
- .tcn-interactive[data-hierarchy="secondary"] {
143
- background: transparent;
144
- color: var(--on-mat);
145
- border: 1px solid var(--on-mat);
146
- }
159
+ &:focus-visible,
160
+ &[data-focus-visible] {
161
+ background: var(--act-focus);
162
+ outline: 2px solid var(--ergo-primary);
163
+ outline-offset: 2px;
164
+ }
147
165
 
148
- .tcn-interactive[data-hierarchy="secondary"]:focus-visible {
149
- outline: 2px dashed var(--on-mat);
150
- }
166
+ &:hover,
167
+ &[data-hover] {
168
+ background: var(--act-raised);
169
+ }
151
170
 
152
- .tcn-interactive[data-hierarchy="secondary"][data-is-disabled="true"] {
153
- color: var(--material-disabled);
154
- border: 1px solid var(--material-disabled);
155
- }
171
+ &:active,
172
+ &[data-active] {
173
+ background: var(--act-down);
174
+ }
156
175
 
157
- .tcn-interactive[data-hierarchy="secondary"]:hover {
158
- background: var(--on-mat-faint);
176
+ &[data-is-disabled="true"] {
177
+ pointer-events: none;
178
+ }
159
179
  }
160
180
 
161
- .tcn-interactive[data-hierarchy="secondary"]:active {
162
- background: var(--mat-down);
163
- }
181
+ /* ===== Base Button =====
182
+ * Shared between Button and Toggle.
183
+ * Primarily manages button dimensions and sizing ratios.
184
+ */
185
+ .tcn-base-button {
186
+ /* TODO: btn size should look for "--tcn-action-size" variable before defaulting. */
187
+ --btn-size-base: 26px;
188
+ --btn-pad-base: 12px;
164
189
 
165
- .tcn-interactive[data-hierarchy="tertiary"] {
166
- background: transparent;
167
- color: var(--on-mat);
168
- border: 1px solid transparent;
169
- }
190
+ --btn-pad-delta: 4px;
191
+ --btn-size-delta: 4px;
192
+ --btn-step: 1;
170
193
 
171
- .tcn-interactive[data-hierarchy="tertiary"]:focus-visible {
172
- outline: 2px dashed var(--on-mat);
173
- }
194
+ /* Increase size and pad by 4px for each size "step" from medium */
195
+ --btn-pad: calc(var(--btn-pad-base) + var(--btn-pad-delta) * var(--btn-step));
196
+ --btn-size: calc(var(--btn-size-base) + var(--btn-size-delta) * var(--btn-step));
174
197
 
175
- .tcn-interactive[data-hierarchy="tertiary"][data-is-disabled="true"] {
176
- color: var(--material-disabled);
177
- }
198
+ border-radius: var(--shape-radius-medium);
199
+ min-height: var(--btn-size);
200
+ padding: var(--padding-small) var(--btn-pad);
178
201
 
179
- .tcn-interactive[data-hierarchy="tertiary"]:hover {
180
- text-decoration: underline;
181
- text-decoration-color: var(--on-mat);
182
- text-decoration-thickness: 1px;
183
- text-underline-offset: 4px;
184
- color: var(--on-mat);
185
- background: var(--on-mat-faint);
186
- }
202
+ &[data-size="sm"] {
203
+ --btn-step: -1;
204
+ }
205
+ &[data-size="md"] {
206
+ --btn-step: 0;
207
+ }
208
+ &[data-size="lg"] {
209
+ --btn-step: 1;
210
+ }
187
211
 
188
- .tcn-interactive[data-hierarchy="tertiary"]:active {
189
- background: var(--mat-down);
190
- }
212
+ &[data-is-utility="true"] {
213
+ height: auto;
214
+ width: auto;
215
+ min-width: var(--btn-size);
216
+ padding: 0;
191
217
 
192
- /* Button */
218
+ /* Icon is 75% of the button size but minimum of 2px to account for border and 1px offset */
219
+ --util-ratio: 0.75;
220
+ --btn-size-base: 18px;
193
221
 
194
- .tcn-base-button {
195
- --action: var(var(--button-color), var(--action));
222
+ .tcn-icon {
223
+ min-height: min(2px, calc(var(--btn-size) * var(--util-ratio)));
224
+ min-width: min(2px, calc(var(--btn-size) * var(--util-ratio)));
225
+ }
226
+ }
196
227
  }
197
228
 
198
- .tcn-base-button[data-severity="dangerous"] {
199
- --action: var(--action-dangerous);
200
- --on-material: var(--action-dangerous);
201
- }
229
+ /* ===== Button =====
230
+ * Manages Hierarchy and Severity.
231
+ */
232
+ .tcn-button {
233
+ --btn-primary: var(--action);
234
+ --btn-on-primary: var(--on-action);
235
+ --btn-variant: var(--on-material);
202
236
 
203
- .tcn-base-button[data-severity="cautious"] {
204
- --action: var(--action-cautious);
205
- --on-action: var(--on-action-cautious);
206
- --on-material: var(--action-cautious);
207
- }
237
+ &[data-severity="dangerous"] {
238
+ --btn-primary: var(--action-severity-dangerous);
239
+ --btn-variant: var(--ergo-status-red-dark);
240
+ }
241
+ &[data-severity="cautious"] {
242
+ --btn-primary: var(--action-severity-cautious);
243
+ --btn-on-primary: var(--ergo-accent-blue);
244
+ --btn-variant: var(--ergo-status-yellow-dark);
245
+ }
246
+ &[data-severity="suggested"] {
247
+ --btn-primary: var(--action-severity-suggested);
248
+ --btn-variant: var(--ergo-status-blue-dark);
249
+ }
250
+ &[data-severity="encouraged"] {
251
+ --btn-primary: var(--action-severity-encouraged);
252
+ --btn-variant: var(--ergo-status-green-dark);
253
+ }
208
254
 
209
- /* .tcn-base-button[data-severity="neutral"] {
210
- --action: var(--action-neutral);
211
- } */
255
+ &[data-hierarchy="primary"] {
256
+ --act: var(--ergo-white);
257
+ --ink: var(--tcn-button-text-color, var(--btn-on-primary));
258
+ --mat: var(--tcn-button-color, var(--btn-primary));
259
+ &[data-is-disabled="true"] {
260
+ --ink: var(--ergo-white);
261
+ --mat: var(--ergo-grey-light);
262
+ }
263
+ }
212
264
 
213
- .tcn-base-button[data-severity="suggested"] {
214
- --action: var(--action-suggested);
215
- --on-material: var(--action-suggested);
216
- }
265
+ &[data-hierarchy="secondary"],
266
+ &[data-hierarchy="tertiary"] {
267
+ --act: var(--tcn-button-color, var(--btn-variant));
268
+ --ink: var(--tcn-button-color, var(--btn-variant));
269
+ &[data-is-disabled="true"] {
270
+ --ink: var(--ergo-grey-light);
271
+ }
272
+ }
217
273
 
218
- .tcn-base-button[data-severity="encouraged"] {
219
- --action: var(--action-encouraged);
220
- --on-material: var(--action-encouraged);
221
- }
274
+ /* Decorations */
275
+ &[data-hierarchy="tertiary"]:hover {
276
+ text-decoration: underline;
277
+ text-decoration-color: var(--ink);
278
+ text-decoration-thickness: 1px;
279
+ text-underline-offset: 4px;
280
+ }
222
281
 
223
- .tcn-button {
224
- border-radius: 4px;
225
- }
282
+ &[data-hierarchy="tertiary"] {
283
+ border: 1px solid transparent;
284
+ }
226
285
 
227
- .tcn-button[data-size="sm"] {
228
- padding: 0px 8px;
229
- min-height: 22px;
230
- }
286
+ &[data-hierarchy="secondary"] {
287
+ border: 1px solid var(--ink);
288
+ }
231
289
 
232
- .tcn-button[data-size="md"] {
233
- padding: 0px 12px;
234
- min-height: 26px;
235
- }
290
+ &[data-hierarchy="primary"] {
291
+ border: 1px solid var(--mat);
292
+ }
236
293
 
237
- .tcn-button[data-size="lg"] {
238
- padding: 0px 16px;
239
- min-height: 32px;
240
- }
294
+ transition:
295
+ box-shadow 0.1s,
296
+ transform 0.1s;
241
297
 
242
- .tcn-button:hover {
243
- transform: translateY(-1px);
244
- box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.1);
245
- }
298
+ &:hover,
299
+ &[data-hover] {
300
+ transform: translateY(-1px);
301
+ box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.12);
302
+ }
246
303
 
247
- .tcn-button:active {
248
- transform: translateY(1px);
249
- box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1);
304
+ &:active,
305
+ &[data-active] {
306
+ transform: translateY(1px);
307
+ box-shadow: inset 0 2px 2px 0 rgba(0, 0, 0, 0.12);
308
+ }
250
309
  }
251
310
 
311
+ /* @deprecated - use Button with utility prop instead */
252
312
  .tcn-slim-button {
253
313
  height: auto;
254
314
  width: auto;
255
315
  padding: 0;
256
- }
257
316
 
258
- .tcn-slim-button[data-size="sm"] {
259
- min-height: 12px;
260
- min-width: 12px;
261
- padding: 0;
262
- .tcn-icon {
263
- min-height: 10px;
264
- min-width: 10px;
317
+ &[data-size="sm"] {
318
+ min-height: 12px;
319
+ min-width: 12px;
320
+ padding: 0;
321
+ .tcn-icon {
322
+ min-height: 10px;
323
+ min-width: 10px;
324
+ }
265
325
  }
266
- }
267
-
268
- .tcn-slim-button[data-size="md"] {
269
- min-height: 18px;
270
- min-width: 18px;
271
- padding: 0;
272
- .tcn-icon {
273
- min-height: 14px;
274
- min-width: 14px;
326
+ &[data-size="md"] {
327
+ min-height: 18px;
328
+ min-width: 18px;
329
+ padding: 0;
330
+ .tcn-icon {
331
+ min-height: 14px;
332
+ min-width: 14px;
333
+ }
275
334
  }
276
- }
277
335
 
278
- .tcn-slim-button[data-size="lg"] {
279
- min-height: 24px;
280
- min-width: 24px;
281
- padding: 0;
282
- .tcn-icon {
283
- min-height: 20px;
284
- min-width: 20px;
336
+ &[data-size="lg"] {
337
+ min-height: 24px;
338
+ min-width: 24px;
339
+ padding: 0;
340
+ .tcn-icon {
341
+ min-height: 20px;
342
+ min-width: 20px;
343
+ }
285
344
  }
286
345
  }
287
346
 
@@ -289,6 +348,28 @@ const n = `@layer tcn-reset {
289
348
  padding-inline-end: 26px;
290
349
  }
291
350
 
351
+ /* Toggle */
352
+ .tcn-toggle {
353
+ --tgl-false: var(--ergo-accent-blue);
354
+ --tgl-true: var(--ergo-accent-blue);
355
+ --on-tgl-true: var(--ergo-white);
356
+
357
+ --ink: var(--tcn-button-color, var(--tgl-false));
358
+ --act: var(--tcn-button-color, var(--tgl-false));
359
+ &[data-is-disabled="true"] {
360
+ --ink: var(--ergo-grey-light);
361
+ }
362
+ &[data-is-selected="true"] {
363
+ --mat: var(--tcn-button-color, var(--tgl-true));
364
+ --ink: var(--tcn-button-text-color, var(--ergo-white));
365
+ --act: var(--ergo-white);
366
+ &[data-is-disabled="true"] {
367
+ --ink: var(--ergo-white);
368
+ --mat: var(--ergo-grey-light);
369
+ }
370
+ }
371
+ }
372
+
292
373
  .tcn-button-group {
293
374
  .tcn-button-group-button:hover,
294
375
  .tcn-button-group-button:active {
@@ -324,7 +405,6 @@ const n = `@layer tcn-reset {
324
405
  }
325
406
 
326
407
  .tcn-select-group {
327
- --action: var(--action-neutral);
328
408
  .tcn-select-group-option:hover,
329
409
  .tcn-select-group-option:active {
330
410
  transform: none;
@@ -368,9 +448,107 @@ const n = `@layer tcn-reset {
368
448
  }
369
449
  }
370
450
 
451
+ /* ===== Tabs ===== */
452
+ .tcn-tabs-bar {
453
+ .tcn-tabs-list {
454
+ .tcn-tab-item {
455
+ min-height: 24px;
456
+ padding: 0px var(--padding-medium);
457
+ text-decoration: none;
458
+ text-overflow: ellipsis;
459
+ overflow: hidden;
460
+ white-space: nowrap;
461
+ }
462
+ }
463
+ }
464
+
465
+ /* Default */
466
+ .tcn-tabs-bar[data-variant="default"] {
467
+ .tcn-tabs-list {
468
+ .tcn-tab-item {
469
+ box-sizing: border-box;
470
+ border: none;
471
+ padding: 0px var(--padding-medium);
472
+ border-radius: 0;
473
+ }
474
+ .tcn-tab-item[data-is-selected="true"] {
475
+ --mat: var(--tcn-button-color, var(--material));
476
+ --ink: var(--tcn-button-text-color, var(--ergo-primary));
477
+ --act: var(--ergo-primary);
478
+ }
479
+
480
+ /* Hover Indicator */
481
+ .tcn-tab-item[data-is-selected="false"]:hover::after {
482
+ content: "";
483
+ display: block;
484
+ position: absolute;
485
+ left: 0;
486
+ right: 0;
487
+ bottom: 0px;
488
+ height: 1px;
489
+ background: var(--ergo-accent-blue);
490
+ pointer-events: none;
491
+ width: 100%;
492
+ z-index: 3;
493
+ }
494
+
495
+ /* Indicator */
496
+ &::after {
497
+ content: "";
498
+ position: absolute;
499
+ bottom: -1px;
500
+ left: 0;
501
+ min-height: 2px;
502
+ transform: translateX(var(--tabs-active-rectangle-position-x, 0));
503
+ width: var(--tabs-active-rectangle-width, 0);
504
+ background: var(--ergo-primary);
505
+ pointer-events: none;
506
+ border-bottom-left-radius: 2px;
507
+ border-bottom-right-radius: 2px;
508
+ transition:
509
+ transform 300ms ease-in-out,
510
+ width 300ms ease-in-out;
511
+ will-change: transform, width;
512
+ z-index: 2;
513
+ }
514
+ }
515
+
516
+ /* Rail */
517
+ &::before {
518
+ content: "";
519
+ position: absolute;
520
+ bottom: 0px;
521
+ left: 0;
522
+ width: 100%;
523
+ height: 1px;
524
+ background: var(--material-line);
525
+ pointer-events: none;
526
+ z-index: 1;
527
+ }
528
+ }
529
+
530
+ /* Inline */
531
+ .tcn-tabs-bar[data-variant="inline"] {
532
+ min-width: min-content;
533
+ width: auto;
534
+ flex-grow: 0;
535
+ border-radius: var(--shape-radius-medium);
536
+ border: 1px solid var(--on-material);
537
+
538
+ .tcn-tabs-list {
539
+ gap: var(--gap-small);
540
+ padding: var(--padding-small);
541
+ .tcn-tab-item {
542
+ border-radius: var(--shape-radius-medium);
543
+ }
544
+ }
545
+ }
546
+
547
+ /* ===== MATERIAL ===== */
548
+
371
549
  .material {
372
- background-color: hsl(var(--material));
373
- color: hsl(var(--on-material));
550
+ background-color: var(--material);
551
+ color: var(--on-material);
374
552
  }
375
553
 
376
554
  /* ===== SURFACES ===== */
@@ -462,26 +640,17 @@ const n = `@layer tcn-reset {
462
640
  border: 1px solid var(--foreground-color-primary);
463
641
  }
464
642
 
465
- :where(.tcn-typography) {
466
- color: inherit;
467
- }
468
-
469
643
  :where(.tcn-header) {
470
- --material: var(--material-secondary-dark);
471
- --on-material: 0, 0%, 100%;
472
- --action: var(--material-tan);
473
- --on-action: 0, 0%, 100%;
474
- background-color: hsl(var(--material));
475
- color: hsl(var(--on-material));
476
- }
644
+ --material: var(--ergo-secondary-dark);
645
+ --on-material: var(--ergo-white);
646
+ --action: var(--ergo-tertiary);
647
+ --on-action: var(--ergo-secondary-dark);
477
648
 
478
- :where(.tcn-utility-bar) {
479
- --material: var(--material-secondary-dark);
480
- --on-material: 0, 0%, 100%;
481
- --action: var(--material-tan);
482
- --on-action: 0, 0%, 100%;
483
- background-color: hsl(var(--material));
484
- color: hsl(var(--on-material));
649
+ background-color: var(--material);
650
+ color: var(--on-material);
651
+ :where(.tcn-typography) {
652
+ color: inherit;
653
+ }
485
654
  }
486
655
  }
487
656
 
@@ -497,26 +666,17 @@ const n = `@layer tcn-reset {
497
666
  border: 2px solid white;
498
667
  }
499
668
 
500
- :where(.tcn-typography) {
501
- color: inherit;
502
- }
503
-
504
669
  :where(.tcn-header) {
505
- --material: var(--material-secondary-dark);
506
- --on-material: 0, 0%, 100%;
507
- --action: var(--material-tan);
508
- --on-action: 0, 0%, 100%;
509
- background-color: hsl(var(--material));
510
- color: hsl(var(--on-material));
511
- }
670
+ --material: var(--ergo-secondary-dark);
671
+ --on-material: var(--ergo-white);
672
+ --action: var(--ergo-tertiary);
673
+ --on-action: var(--ergo-secondary-dark);
512
674
 
513
- :where(.tcn-utility-bar) {
514
- --material: var(--material-secondary-dark);
515
- --on-material: 0, 0%, 100%;
516
- --action: var(--material-tan);
517
- --on-action: 0, 0%, 100%;
518
- background-color: hsl(var(--material));
519
- color: hsl(var(--on-material));
675
+ background-color: var(--material);
676
+ color: var(--on-material);
677
+ :where(.tcn-typography) {
678
+ color: inherit;
679
+ }
520
680
  }
521
681
  }
522
682
 
@@ -531,27 +691,19 @@ const n = `@layer tcn-reset {
531
691
  overflow: hidden;
532
692
  }
533
693
 
534
- :where(.tcn-typography) {
535
- color: inherit;
536
- }
537
-
538
694
  :where(.tcn-header) {
539
695
  min-height: 32px;
540
- --material: var(--material-secondary-dark);
541
- --on-material: 0, 0%, 100%;
542
- --action: var(--material-tan);
543
- --on-action: 0, 0%, 100%;
544
- background-color: hsl(var(--material));
545
- color: hsl(var(--on-material));
546
- }
547
696
 
548
- :where(.tcn-utility-bar) {
549
- --material: var(--material-secondary-dark);
550
- --on-material: 0, 0%, 100%;
551
- --action: var(--material-tan);
552
- --on-action: 0, 0%, 100%;
553
- background-color: hsl(var(--material));
554
- color: hsl(var(--on-material));
697
+ --material: var(--ergo-secondary-dark);
698
+ --on-material: var(--ergo-white);
699
+ --action: var(--ergo-tertiary);
700
+ --on-action: var(--ergo-secondary-dark);
701
+
702
+ background-color: var(--material);
703
+ color: var(--on-material);
704
+ :where(.tcn-typography) {
705
+ color: inherit;
706
+ }
555
707
  }
556
708
  }
557
709
 
@@ -575,19 +727,117 @@ const n = `@layer tcn-reset {
575
727
  overflow: hidden;
576
728
 
577
729
  :where(.tcn-header) {
578
- /* TODO: This should be a variable */
579
- background-color: #ecf4fb;
730
+ min-height: 32px;
731
+
732
+ --material: var(--ergo-secondary-light);
733
+ --on-material: var(--ergo-accent-blue);
734
+ --action: var(--ergo-secondary);
735
+ --on-action: var(--ergo-white);
736
+
737
+ background-color: var(--material);
738
+ color: var(--on-material);
739
+ :where(.tcn-typography) {
740
+ color: inherit;
741
+ }
580
742
  }
743
+ }
581
744
 
582
- :where(.tcn-utility-bar) {
583
- /* TODO: This should be a variable */
584
- background-color: #ecf4fb;
745
+ /* SECTION */
746
+ .tcn-heading {
747
+ background-color: #f1f1f1;
748
+ padding-inline-start: 8px;
749
+ height: 30px;
750
+ z-index: 5;
751
+ }
752
+
753
+ .tcn-section > .tcn-heading {
754
+ background-color: #f2f4f6;
755
+ padding-inline-start: 8px;
756
+ color: rgb(51, 51, 51);
757
+ z-index: 4;
758
+ }
759
+
760
+ .tcn-section > .tcn-section > .tcn-heading {
761
+ background-color: #fff7f0;
762
+ padding-inline-start: 12px;
763
+ color: #395578;
764
+ z-index: 3;
765
+ }
766
+
767
+ .tcn-section > .tcn-section > .tcn-section > .tcn-heading {
768
+ background-color: #eef8ef;
769
+ padding-inline-start: 16px;
770
+ color: #395578;
771
+ z-index: 2;
772
+ }
773
+
774
+ .tcn-section > .tcn-section > .tcn-section > .tcn-section .tcn-heading {
775
+ background-color: #ecf4fb;
776
+ padding-inline-start: 20px;
777
+ color: #395578;
778
+ z-index: 1;
779
+ }
780
+
781
+ .tcn-section > :not(.tcn-heading, .tcn-section) {
782
+ padding-inline-start: 8px;
783
+ }
784
+
785
+ .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {
786
+ padding-inline-start: 12px;
787
+ }
788
+
789
+ .tcn-section > .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {
790
+ padding-inline-start: 16px;
791
+ }
792
+
793
+ .tcn-section
794
+ > .tcn-section
795
+ > .tcn-section
796
+ > .tcn-section
797
+ > :not(.tcn-heading, .tcn-section) {
798
+ padding-inline-start: 20px;
799
+ }
800
+
801
+ .tcn-base-carrot {
802
+ --carrot-size: 12px;
803
+ --carrot-triangle-height: calc(var(--carrot-size) / 2);
804
+ --carrot-triangle-width: var(--carrot-size);
805
+ --carrot-triangle-base: var(--carrot-triangle-height) solid transparent;
806
+ --carrot-triangle-peak: var(--carrot-triangle-width) solid var(--material);
807
+
808
+ width: 0;
809
+ height: 0;
810
+ flex-grow: 0;
811
+ display: inline-block;
812
+
813
+ &[data-direction="top"] {
814
+ border-bottom: var(--carrot-triangle-peak);
815
+ border-left: var(--carrot-triangle-base);
816
+ border-right: var(--carrot-triangle-base);
817
+ }
818
+
819
+ &[data-direction="bottom"] {
820
+ border-top: var(--carrot-triangle-peak);
821
+ border-left: var(--carrot-triangle-base);
822
+ border-right: var(--carrot-triangle-base);
823
+ }
824
+
825
+ &[data-direction="start"] {
826
+ border-right: var(--carrot-triangle-peak);
827
+ border-top: var(--carrot-triangle-base);
828
+ border-bottom: var(--carrot-triangle-base);
829
+ }
830
+
831
+ &[data-direction="end"] {
832
+ border-left: var(--carrot-triangle-peak);
833
+ border-top: var(--carrot-triangle-base);
834
+ border-bottom: var(--carrot-triangle-base);
585
835
  }
586
836
  }
587
837
  }
588
- `, a = new CSSStyleSheet();
589
- a.replaceSync(n);
838
+ `, r = new CSSStyleSheet();
839
+ r.replaceSync(n);
590
840
  export {
591
- a as ergoStyleSheet
841
+ r as ergoStyleSheet
592
842
  };
593
843
  //# sourceMappingURL=ergo_theme.js.map