@titan-design/react-ui 0.2.7 → 0.3.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 (82) hide show
  1. package/dist/bodymap-BhG55xHM.d.mts +318 -0
  2. package/dist/bodymap-BhG55xHM.d.ts +318 -0
  3. package/dist/bodymap.d.mts +3 -0
  4. package/dist/bodymap.d.ts +3 -0
  5. package/dist/bodymap.js +2670 -0
  6. package/dist/bodymap.js.map +1 -0
  7. package/dist/bodymap.mjs +1101 -0
  8. package/dist/bodymap.mjs.map +1 -0
  9. package/dist/{chunk-5SSKGS6E.mjs → chunk-7XPB4NAO.mjs} +124 -4
  10. package/dist/chunk-7XPB4NAO.mjs.map +1 -0
  11. package/dist/{chunk-3VLOBS6O.mjs → chunk-P7TSQUN6.mjs} +3 -3
  12. package/dist/{chunk-3VLOBS6O.mjs.map → chunk-P7TSQUN6.mjs.map} +1 -1
  13. package/dist/chunk-TOD2WQBG.mjs +1048 -0
  14. package/dist/chunk-TOD2WQBG.mjs.map +1 -0
  15. package/dist/index.d.mts +375 -249
  16. package/dist/index.d.ts +375 -249
  17. package/dist/index.js +1259 -918
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +1314 -2107
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/theme/index.d.mts +260 -0
  22. package/dist/theme/index.d.ts +260 -0
  23. package/dist/theme/index.js +122 -2
  24. package/dist/theme/index.js.map +1 -1
  25. package/dist/theme/index.mjs +2 -2
  26. package/dist/theme/tokens-css.d.mts +5 -3
  27. package/dist/theme/tokens-css.d.ts +5 -3
  28. package/dist/theme/tokens-css.js +318 -9
  29. package/dist/theme/tokens-css.js.map +1 -1
  30. package/dist/theme/tokens-css.mjs +1 -1
  31. package/dist/theme/tokens-css.mjs.map +1 -1
  32. package/package.json +10 -1
  33. package/src/bodymap.ts +37 -0
  34. package/src/components/custom/Table/Table.test.tsx +27 -0
  35. package/src/components/custom/Table/Table.tsx +33 -17
  36. package/src/components/custom/Workout/ActiveWorkoutPage.stories.tsx +118 -0
  37. package/src/components/custom/Workout/ActiveWorkoutPage.test.tsx +171 -0
  38. package/src/components/custom/Workout/ActiveWorkoutPage.tsx +447 -0
  39. package/src/components/custom/Workout/BodyMap.tsx +5 -6
  40. package/src/components/custom/Workout/BodyMapDetailPanel.tsx +7 -8
  41. package/src/components/custom/Workout/CapacityBandChart.tsx +1 -1
  42. package/src/components/custom/Workout/ExerciseCard.test.tsx +24 -0
  43. package/src/components/custom/Workout/ExerciseCard.tsx +28 -15
  44. package/src/components/custom/Workout/ExerciseDetailPage.stories.tsx +225 -0
  45. package/src/components/custom/Workout/ExerciseDetailPage.test.tsx +128 -0
  46. package/src/components/custom/Workout/ExerciseDetailPage.tsx +630 -0
  47. package/src/components/custom/Workout/InputBar.tsx +6 -7
  48. package/src/components/custom/Workout/MesoCard.tsx +4 -2
  49. package/src/components/custom/Workout/MesoProgressBar.test.tsx +12 -0
  50. package/src/components/custom/Workout/MesoProgressBar.tsx +5 -1
  51. package/src/components/custom/Workout/MesoStatusCard.tsx +5 -5
  52. package/src/components/custom/Workout/PlaceholderStrip.tsx +2 -3
  53. package/src/components/custom/Workout/PrHistoryModal.tsx +5 -5
  54. package/src/components/custom/Workout/ProgramPlanningPage.stories.tsx +257 -0
  55. package/src/components/custom/Workout/ProgramPlanningPage.test.tsx +142 -0
  56. package/src/components/custom/Workout/ProgramPlanningPage.tsx +422 -0
  57. package/src/components/custom/Workout/ReadinessCheck.tsx +7 -8
  58. package/src/components/custom/Workout/RestTimer.test.tsx +10 -0
  59. package/src/components/custom/Workout/RestTimer.tsx +11 -9
  60. package/src/components/custom/Workout/SetRow.tsx +13 -19
  61. package/src/components/custom/Workout/StatusDot.tsx +1 -0
  62. package/src/components/custom/Workout/StrengthTrendChart.tsx +5 -5
  63. package/src/components/custom/Workout/TempoDisplay.tsx +3 -1
  64. package/src/components/custom/Workout/TrainingStatusPage.stories.tsx +212 -0
  65. package/src/components/custom/Workout/TrainingStatusPage.test.tsx +131 -0
  66. package/src/components/custom/Workout/TrainingStatusPage.tsx +321 -0
  67. package/src/components/custom/Workout/VelocityStrip.test.tsx +10 -0
  68. package/src/components/custom/Workout/VelocityStrip.tsx +16 -15
  69. package/src/components/custom/Workout/WeekRow.tsx +1 -1
  70. package/src/components/custom/Workout/WorkoutCard.tsx +5 -3
  71. package/src/components/custom/Workout/index.ts +71 -32
  72. package/src/theme/config.completeness.test.ts +77 -0
  73. package/src/theme/config.ts +151 -0
  74. package/src/theme/manifest/design-freeze.test.ts +155 -0
  75. package/src/theme/manifest/extract-css-properties.fixture.html +29 -0
  76. package/src/theme/manifest/extract-css-properties.test.ts +112 -0
  77. package/src/theme/tokens-css.ts +5 -3
  78. package/src/theme/workout-tokens.ts +12 -14
  79. package/src/utils/index.ts +10 -0
  80. package/src/utils/workout-format.test.ts +81 -0
  81. package/src/utils/workout-format.ts +83 -0
  82. package/dist/chunk-5SSKGS6E.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- export { applyThemePreset, audiobookPreset, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darken, defaultPreset, elevationSystem, getBaseSurfaceColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getValidatedElevation, hexToRgb, hsvToRgb, isCssPropertyManifest, isDark, lighten, neumorphicShadows, rgbToHex, rgbToHsv, shadowColors, validateCssPropertyManifest } from '../chunk-3VLOBS6O.mjs';
2
- export { buttonSizes, darkThemeCSSVars, discreteRainbow, getDiscreteRainbowColor, getSemanticColors, getThemeCSSVars, gluestackConfig, lightThemeCSSVars, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveShadows, primitiveSpacing, primitiveTypography, primitiveZIndex, semanticColorsDark, semanticColorsLight, semanticTypography } from '../chunk-5SSKGS6E.mjs';
1
+ export { applyThemePreset, audiobookPreset, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darken, defaultPreset, elevationSystem, getBaseSurfaceColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getValidatedElevation, hexToRgb, hsvToRgb, isCssPropertyManifest, isDark, lighten, neumorphicShadows, rgbToHex, rgbToHsv, shadowColors, validateCssPropertyManifest } from '../chunk-P7TSQUN6.mjs';
2
+ export { buttonSizes, darkThemeCSSVars, discreteRainbow, getDiscreteRainbowColor, getSemanticColors, getThemeCSSVars, gluestackConfig, lightThemeCSSVars, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveShadows, primitiveSpacing, primitiveTypography, primitiveZIndex, semanticColorsDark, semanticColorsLight, semanticTypography } from '../chunk-7XPB4NAO.mjs';
3
3
  //# sourceMappingURL=index.mjs.map
4
4
  //# sourceMappingURL=index.mjs.map
@@ -2,9 +2,11 @@
2
2
  * Token CSS Generator
3
3
  *
4
4
  * Emits a static `:root {}` CSS block from the canonical theme token maps
5
- * (`darkThemeCSSVars` / `lightThemeCSSVars`). HTML prototypes import the
6
- * generated stylesheet so they always resolve to the exact same values as
7
- * the design system. Pure codegen: deterministic and diffable against source.
5
+ * (`darkThemeCSSVars` / `lightThemeCSSVars`). Those maps mirror every `:root`
6
+ * custom property in `theme/global.css` completeness and value parity are
7
+ * enforced by `config.completeness.test.ts`, so HTML prototypes that import the
8
+ * generated stylesheet resolve to the exact same values as the design system.
9
+ * Pure codegen: deterministic and diffable against source.
8
10
  *
9
11
  * Dark mode is the default (`:root`); light mode is activated with `.light`,
10
12
  * matching the convention in `theme/global.css`.
@@ -2,9 +2,11 @@
2
2
  * Token CSS Generator
3
3
  *
4
4
  * Emits a static `:root {}` CSS block from the canonical theme token maps
5
- * (`darkThemeCSSVars` / `lightThemeCSSVars`). HTML prototypes import the
6
- * generated stylesheet so they always resolve to the exact same values as
7
- * the design system. Pure codegen: deterministic and diffable against source.
5
+ * (`darkThemeCSSVars` / `lightThemeCSSVars`). Those maps mirror every `:root`
6
+ * custom property in `theme/global.css` completeness and value parity are
7
+ * enforced by `config.completeness.test.ts`, so HTML prototypes that import the
8
+ * generated stylesheet resolve to the exact same values as the design system.
9
+ * Pure codegen: deterministic and diffable against source.
8
10
  *
9
11
  * Dark mode is the default (`:root`); light mode is activated with `.light`,
10
12
  * matching the convention in `theme/global.css`.
@@ -4,26 +4,41 @@
4
4
  var primitiveColors = {
5
5
  // Blue scale (primary brand)
6
6
  blue: {
7
- 600: "#5048E5"},
7
+ 400: "#60A5FA",
8
+ 600: "#5048E5",
9
+ // Primary main
10
+ 700: "#3832A0"},
8
11
  // Teal scale (success)
9
12
  teal: {
10
13
  50: "#F0FDFA",
14
+ 400: "#43C6B7",
11
15
  // Success light
12
- 500: "#14B8A6"},
16
+ 500: "#14B8A6",
17
+ 700: "#0E8074"},
13
18
  // Red scale (error)
14
19
  red: {
15
20
  50: "#FEF2F2",
16
- 600: "#D14343"},
21
+ 400: "#DA6868",
22
+ // Error light
23
+ 500: "#EF4444",
24
+ 600: "#D14343",
25
+ // Error main
26
+ 700: "#922E2E"},
17
27
  // Amber scale (warning)
18
28
  amber: {
19
29
  50: "#FFFBEB",
30
+ 400: "#FFBF4C",
20
31
  // Warning light
21
- 500: "#FFB020"},
32
+ 500: "#FFB020",
33
+ // Warning main
34
+ 600: "#B27B16"},
22
35
  // Sky/Blue scale (info)
23
36
  sky: {
24
37
  50: "#F0F9FF",
38
+ 400: "#64B6F7",
25
39
  // Info light
26
- 500: "#2196F3"},
40
+ 500: "#2196F3",
41
+ 700: "#0B79D0"},
27
42
  // Neutral/Gray scale
28
43
  neutral: {
29
44
  50: "#FAFAFA",
@@ -31,11 +46,15 @@ var primitiveColors = {
31
46
  300: "#D1D5DB",
32
47
  400: "#9CA3AF",
33
48
  500: "#6B7280",
49
+ 600: "#4B5563",
34
50
  900: "#111827"},
35
51
  // Orange scale (accent/brand color)
36
52
  accent: {
37
53
  200: "#FF9630",
54
+ 300: "#FF8500",
38
55
  400: "#FF7900",
56
+ 500: "#F56C00",
57
+ 600: "#E06D10",
39
58
  700: "#D0620C"},
40
59
  // Charcoal scale (dark backgrounds)
41
60
  charcoal: {
@@ -49,10 +68,43 @@ var primitiveColors = {
49
68
  // Steel scale (cool accent)
50
69
  steel: {
51
70
  300: "#678498",
71
+ 400: "#557488",
52
72
  500: "#406D87",
73
+ 600: "#39617A",
53
74
  700: "#32556D"},
54
75
  // Pure colors
55
76
  white: "#FFFFFF"};
77
+ var discreteRainbow = [
78
+ "#E8ECFB",
79
+ "#D9CCE3",
80
+ "#D1BBD7",
81
+ "#CAACCB",
82
+ "#BA8DB4",
83
+ "#AE76A3",
84
+ "#AA6F9E",
85
+ "#994F88",
86
+ "#882E72",
87
+ "#1965B0",
88
+ "#437DBF",
89
+ "#5289C7",
90
+ "#6195CF",
91
+ "#7BAFDE",
92
+ "#4EB265",
93
+ "#90C987",
94
+ "#CAE0AB",
95
+ "#F7F056",
96
+ "#F7CB45",
97
+ "#F6C141",
98
+ "#F4A736",
99
+ "#F1932D",
100
+ "#EE8026",
101
+ "#E8601C",
102
+ "#E65518",
103
+ "#DC050C",
104
+ "#A5170E",
105
+ "#72190E",
106
+ "#42150A"
107
+ ];
56
108
 
57
109
  // src/theme/tokens/semantic.ts
58
110
  var semanticColorsLight = {
@@ -64,6 +116,8 @@ var semanticColorsLight = {
64
116
  "brand-primary-dark": primitiveColors.accent[700],
65
117
  // #D0620C
66
118
  "brand-primary-subtle": "rgba(255, 121, 0, 0.08)",
119
+ "brand-primary-hover": primitiveColors.accent[500],
120
+ "brand-primary-active": primitiveColors.accent[600],
67
121
  "brand-secondary": primitiveColors.steel[500],
68
122
  // #406D87
69
123
  "brand-secondary-light": primitiveColors.steel[300],
@@ -71,22 +125,84 @@ var semanticColorsLight = {
71
125
  "brand-secondary-dark": primitiveColors.steel[700],
72
126
  // #32556D
73
127
  "brand-secondary-subtle": "rgba(64, 109, 135, 0.08)",
128
+ "brand-secondary-hover": primitiveColors.steel[600],
129
+ "brand-secondary-active": primitiveColors.steel[700],
74
130
  // Text on brand backgrounds (on-*)
75
131
  "on-brand-primary": primitiveColors.white,
76
132
  "on-brand-secondary": primitiveColors.white,
77
133
  // Status colors (status-*)
78
134
  "status-success": primitiveColors.teal[500],
135
+ // #14B8A6
136
+ "status-success-light": primitiveColors.teal[400],
137
+ // #43C6B7
138
+ "status-success-dark": primitiveColors.teal[700],
79
139
  // #0E8074
80
140
  "status-success-subtle": primitiveColors.teal[50],
81
141
  "status-error": primitiveColors.red[600],
142
+ // #D14343
143
+ "status-error-light": primitiveColors.red[400],
144
+ // #DA6868
145
+ "status-error-dark": primitiveColors.red[700],
82
146
  // #922E2E
83
147
  "status-error-subtle": primitiveColors.red[50],
84
148
  "status-warning": primitiveColors.amber[500],
149
+ // #FFB020
150
+ "status-warning-light": primitiveColors.amber[400],
151
+ // #FFBF4C
152
+ "status-warning-dark": primitiveColors.amber[600],
85
153
  // #B27B16
86
154
  "status-warning-subtle": primitiveColors.amber[50],
87
155
  "status-info": primitiveColors.sky[500],
156
+ // #2196F3
157
+ "status-info-light": primitiveColors.sky[400],
158
+ // #64B6F7
159
+ "status-info-dark": primitiveColors.sky[700],
88
160
  // #0B79D0
89
161
  "status-info-subtle": primitiveColors.sky[50],
162
+ // Text on status backgrounds (on-status-*)
163
+ "on-status-success": primitiveColors.white,
164
+ "on-status-error": primitiveColors.white,
165
+ "on-status-warning": primitiveColors.white,
166
+ "on-status-info": primitiveColors.white,
167
+ // Result/outcome indicators (result-*)
168
+ "result-improve": "#4caf50",
169
+ // Green - positive outcome
170
+ "result-improve-light": "rgba(76, 175, 80, 0.12)",
171
+ "result-improve-dark": "#248a24",
172
+ "result-degrade": "#ef5350",
173
+ // Red - negative outcome
174
+ "result-degrade-light": "rgba(239, 83, 80, 0.12)",
175
+ "result-degrade-dark": "#b30000",
176
+ "result-inconclusive": "#9E9A97",
177
+ // Gray - no clear result
178
+ "result-inconclusive-light": "rgba(158, 154, 151, 0.12)",
179
+ "result-neutral": primitiveColors.neutral[500],
180
+ // Neutral baseline
181
+ // Text on result backgrounds (on-result-*)
182
+ "on-result-improve": primitiveColors.white,
183
+ "on-result-degrade": primitiveColors.white,
184
+ "on-result-inconclusive": primitiveColors.white,
185
+ // Data visualization colors (data-*)
186
+ // First 10 colors from discrete rainbow optimized for charts
187
+ "data-1": discreteRainbow[9],
188
+ // #1965B0 - Blue
189
+ "data-2": discreteRainbow[14],
190
+ // #4EB265 - Green
191
+ "data-3": discreteRainbow[17],
192
+ // #F7F056 - Yellow
193
+ "data-4": discreteRainbow[25],
194
+ // #DC050C - Red
195
+ "data-5": discreteRainbow[8],
196
+ // #882E72 - Purple
197
+ "data-6": discreteRainbow[20],
198
+ // #F4A736 - Orange
199
+ "data-7": discreteRainbow[13],
200
+ // #7BAFDE - Light Blue
201
+ "data-8": discreteRainbow[15],
202
+ // #90C987 - Light Green
203
+ "data-9": discreteRainbow[3],
204
+ // #CAACCB - Lavender
205
+ "data-10": discreteRainbow[22],
90
206
  // #EE8026 - Dark Orange
91
207
  // Text colors (text-*)
92
208
  "text-primary": "#121828",
@@ -95,11 +211,15 @@ var semanticColorsLight = {
95
211
  "text-disabled": "rgba(55, 65, 81, 0.48)",
96
212
  "text-inverse": primitiveColors.white,
97
213
  "text-link": primitiveColors.blue[600],
214
+ "text-link-hover": primitiveColors.blue[700],
98
215
  // Surface colors (surface-*) - for elevated containers
99
216
  "surface-base": primitiveColors.white,
100
217
  "surface-elevated": primitiveColors.neutral[50],
101
218
  // #FAFAFA - slightly off-white for elevated cards
102
219
  "surface-raised": primitiveColors.neutral[100],
220
+ // #F3F4F6 - light gray for raised cards
221
+ "surface-overlay": primitiveColors.white,
222
+ "surface-input": primitiveColors.neutral[50],
103
223
  // Input field background (filled variant)
104
224
  // Background colors (background-*)
105
225
  "background-base": "#EBEBEB",
@@ -110,6 +230,13 @@ var semanticColorsLight = {
110
230
  "border-subtle": primitiveColors.neutral[100],
111
231
  "border-strong": primitiveColors.neutral[300],
112
232
  "border-focus": primitiveColors.blue[600],
233
+ "border-input": primitiveColors.neutral[300],
234
+ // Input field border
235
+ "border-input-hover": primitiveColors.neutral[400],
236
+ // Input field border on hover
237
+ "border-input-focus": primitiveColors.blue[600],
238
+ // Input field border on focus
239
+ "border-input-error": primitiveColors.red[600],
113
240
  // Input field border on error
114
241
  // Interactive states (interactive-*)
115
242
  "interactive-hover": "rgba(55, 65, 81, 0.04)",
@@ -117,30 +244,77 @@ var semanticColorsLight = {
117
244
  "interactive-active": "rgba(55, 65, 81, 0.16)",
118
245
  "interactive-selected": "rgba(55, 65, 81, 0.08)",
119
246
  "interactive-disabled": "rgba(55, 65, 81, 0.12)",
247
+ "interactive-disabled-text": "rgba(55, 65, 81, 0.26)",
120
248
  // Divider
121
- "divider": "#E8E9EB"};
249
+ "divider": "#E8E9EB",
250
+ // Avatar default
251
+ "avatar-background": primitiveColors.neutral[500],
252
+ "avatar-text": primitiveColors.white
253
+ };
122
254
  var semanticColorsDark = {
123
255
  // Brand colors stay the same in dark mode
124
256
  "brand-primary": primitiveColors.accent[400],
125
257
  "brand-primary-light": primitiveColors.accent[200],
126
258
  "brand-primary-dark": primitiveColors.accent[700],
127
259
  "brand-primary-subtle": "rgba(255, 121, 0, 0.12)",
260
+ "brand-primary-hover": primitiveColors.accent[300],
261
+ "brand-primary-active": primitiveColors.accent[200],
128
262
  "brand-secondary": primitiveColors.steel[500],
129
263
  "brand-secondary-light": primitiveColors.steel[300],
130
264
  "brand-secondary-dark": primitiveColors.steel[700],
131
265
  "brand-secondary-subtle": "rgba(64, 109, 135, 0.12)",
266
+ "brand-secondary-hover": primitiveColors.steel[400],
267
+ "brand-secondary-active": primitiveColors.steel[300],
132
268
  // Text on brand backgrounds
133
269
  "on-brand-primary": primitiveColors.white,
134
270
  "on-brand-secondary": primitiveColors.white,
135
271
  // Status colors
136
272
  "status-success": primitiveColors.teal[500],
273
+ "status-success-light": primitiveColors.teal[400],
274
+ "status-success-dark": primitiveColors.teal[700],
137
275
  "status-success-subtle": "rgba(20, 184, 166, 0.12)",
138
276
  "status-error": primitiveColors.red[600],
277
+ "status-error-light": primitiveColors.red[400],
278
+ "status-error-dark": primitiveColors.red[700],
139
279
  "status-error-subtle": "rgba(209, 67, 67, 0.12)",
140
280
  "status-warning": primitiveColors.amber[500],
281
+ "status-warning-light": primitiveColors.amber[400],
282
+ "status-warning-dark": primitiveColors.amber[600],
141
283
  "status-warning-subtle": "rgba(255, 176, 32, 0.12)",
142
284
  "status-info": primitiveColors.sky[500],
285
+ "status-info-light": primitiveColors.sky[400],
286
+ "status-info-dark": primitiveColors.sky[700],
143
287
  "status-info-subtle": "rgba(33, 150, 243, 0.12)",
288
+ // Text on status backgrounds
289
+ "on-status-success": primitiveColors.white,
290
+ "on-status-error": primitiveColors.white,
291
+ "on-status-warning": primitiveColors.white,
292
+ "on-status-info": primitiveColors.white,
293
+ // Result/outcome indicators (result-*)
294
+ "result-improve": "#4caf50",
295
+ "result-improve-light": "rgba(76, 175, 80, 0.16)",
296
+ "result-improve-dark": "#248a24",
297
+ "result-degrade": "#ef5350",
298
+ "result-degrade-light": "rgba(239, 83, 80, 0.16)",
299
+ "result-degrade-dark": "#b30000",
300
+ "result-inconclusive": "#9E9A97",
301
+ "result-inconclusive-light": "rgba(158, 154, 151, 0.16)",
302
+ "result-neutral": primitiveColors.neutral[400],
303
+ // Text on result backgrounds
304
+ "on-result-improve": primitiveColors.white,
305
+ "on-result-degrade": primitiveColors.white,
306
+ "on-result-inconclusive": primitiveColors.white,
307
+ // Data visualization colors (same in dark mode for consistency)
308
+ "data-1": discreteRainbow[9],
309
+ "data-2": discreteRainbow[14],
310
+ "data-3": discreteRainbow[17],
311
+ "data-4": discreteRainbow[25],
312
+ "data-5": discreteRainbow[8],
313
+ "data-6": discreteRainbow[20],
314
+ "data-7": discreteRainbow[13],
315
+ "data-8": discreteRainbow[15],
316
+ "data-9": discreteRainbow[3],
317
+ "data-10": discreteRainbow[22],
144
318
  // Text colors - inverted for dark mode
145
319
  "text-primary": primitiveColors.neutral[100],
146
320
  "text-secondary": primitiveColors.neutral[400],
@@ -148,12 +322,17 @@ var semanticColorsDark = {
148
322
  "text-disabled": "rgba(255, 255, 255, 0.38)",
149
323
  "text-inverse": primitiveColors.neutral[900],
150
324
  "text-link": "#828DF8",
325
+ "text-link-hover": primitiveColors.blue[400],
151
326
  // Surface colors - dark backgrounds
152
327
  "surface-base": primitiveColors.charcoal[700],
153
328
  // #161616 - main surface
154
329
  "surface-elevated": primitiveColors.charcoal[600],
155
330
  // #191919 - elevated surface
156
331
  "surface-raised": primitiveColors.charcoal[500],
332
+ // #1C1C1C - raised surface
333
+ "surface-overlay": primitiveColors.charcoal[600],
334
+ // #191919 - overlay surface
335
+ "surface-input": primitiveColors.charcoal[600],
157
336
  // #191919 - input surface
158
337
  // Background colors
159
338
  "background-base": primitiveColors.charcoal[900],
@@ -170,16 +349,48 @@ var semanticColorsDark = {
170
349
  "border-strong": primitiveColors.charcoal[300],
171
350
  // #2C2C2C - strong border
172
351
  "border-focus": "#828DF8",
352
+ "border-input": primitiveColors.neutral[600],
353
+ "border-input-hover": primitiveColors.neutral[500],
354
+ "border-input-focus": "#828DF8",
355
+ "border-input-error": primitiveColors.red[500],
173
356
  // Interactive states
174
357
  "interactive-hover": "rgba(255, 255, 255, 0.04)",
175
358
  "interactive-focus": "rgba(255, 255, 255, 0.12)",
176
359
  "interactive-active": "rgba(255, 255, 255, 0.16)",
177
360
  "interactive-selected": "rgba(255, 255, 255, 0.08)",
178
361
  "interactive-disabled": "rgba(255, 255, 255, 0.12)",
362
+ "interactive-disabled-text": "rgba(255, 255, 255, 0.26)",
179
363
  // Divider
180
- "divider": primitiveColors.charcoal[400]};
364
+ "divider": primitiveColors.charcoal[400],
365
+ // #1F1F1F - divider color
366
+ // Avatar default
367
+ "avatar-background": primitiveColors.neutral[600],
368
+ "avatar-text": primitiveColors.white
369
+ };
181
370
 
182
371
  // src/theme/config.ts
372
+ var themeIndependentCSSVars = {
373
+ // RGB decomposed values for glow shadows
374
+ "--color-brand-primary-rgb": "255, 121, 0",
375
+ "--color-brand-secondary-rgb": "64, 109, 135",
376
+ "--color-status-success-rgb": "20, 184, 166",
377
+ "--color-status-error-rgb": "209, 67, 67",
378
+ "--color-status-warning-rgb": "255, 176, 32",
379
+ "--color-status-info-rgb": "33, 150, 243",
380
+ "--color-background-base-rgb": "16, 16, 16",
381
+ // Font families
382
+ "--font-family-sans": "'Inter'",
383
+ "--font-family-body": "'Nunito Sans'",
384
+ "--font-family-heading": "'Space Grotesk'",
385
+ "--font-family-mono": "'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace",
386
+ // Animation tokens
387
+ "--ease-out": "cubic-bezier(0.22, 1, 0.36, 1)",
388
+ "--ease-in-out": "cubic-bezier(0.65, 0, 0.35, 1)",
389
+ "--ease-spring": "cubic-bezier(0.34, 1.56, 0.64, 1)",
390
+ "--duration-fast": "150ms",
391
+ "--duration-normal": "250ms",
392
+ "--duration-slow": "400ms"
393
+ };
183
394
  var lightThemeCSSVars = {
184
395
  "--color-brand-primary": semanticColorsLight["brand-primary"],
185
396
  "--color-brand-primary-light": semanticColorsLight["brand-primary-light"],
@@ -220,7 +431,56 @@ var lightThemeCSSVars = {
220
431
  "--color-interactive-active": semanticColorsLight["interactive-active"],
221
432
  "--color-interactive-selected": semanticColorsLight["interactive-selected"],
222
433
  "--color-interactive-disabled": semanticColorsLight["interactive-disabled"],
223
- "--color-divider": semanticColorsLight["divider"]
434
+ "--color-divider": semanticColorsLight["divider"],
435
+ "--color-brand-primary-hover": semanticColorsLight["brand-primary-hover"],
436
+ "--color-brand-primary-active": semanticColorsLight["brand-primary-active"],
437
+ "--color-brand-secondary-hover": semanticColorsLight["brand-secondary-hover"],
438
+ "--color-brand-secondary-active": semanticColorsLight["brand-secondary-active"],
439
+ "--color-status-success-light": semanticColorsLight["status-success-light"],
440
+ "--color-status-success-dark": semanticColorsLight["status-success-dark"],
441
+ "--color-status-error-light": semanticColorsLight["status-error-light"],
442
+ "--color-status-error-dark": semanticColorsLight["status-error-dark"],
443
+ "--color-status-warning-light": semanticColorsLight["status-warning-light"],
444
+ "--color-status-warning-dark": semanticColorsLight["status-warning-dark"],
445
+ "--color-status-info-light": semanticColorsLight["status-info-light"],
446
+ "--color-status-info-dark": semanticColorsLight["status-info-dark"],
447
+ "--color-on-status-success": semanticColorsLight["on-status-success"],
448
+ "--color-on-status-error": semanticColorsLight["on-status-error"],
449
+ "--color-on-status-warning": semanticColorsLight["on-status-warning"],
450
+ "--color-on-status-info": semanticColorsLight["on-status-info"],
451
+ "--color-result-improve": semanticColorsLight["result-improve"],
452
+ "--color-result-improve-light": semanticColorsLight["result-improve-light"],
453
+ "--color-result-improve-dark": semanticColorsLight["result-improve-dark"],
454
+ "--color-result-degrade": semanticColorsLight["result-degrade"],
455
+ "--color-result-degrade-light": semanticColorsLight["result-degrade-light"],
456
+ "--color-result-degrade-dark": semanticColorsLight["result-degrade-dark"],
457
+ "--color-result-inconclusive": semanticColorsLight["result-inconclusive"],
458
+ "--color-result-inconclusive-light": semanticColorsLight["result-inconclusive-light"],
459
+ "--color-result-neutral": semanticColorsLight["result-neutral"],
460
+ "--color-on-result-improve": semanticColorsLight["on-result-improve"],
461
+ "--color-on-result-degrade": semanticColorsLight["on-result-degrade"],
462
+ "--color-on-result-inconclusive": semanticColorsLight["on-result-inconclusive"],
463
+ "--color-data-1": semanticColorsLight["data-1"],
464
+ "--color-data-2": semanticColorsLight["data-2"],
465
+ "--color-data-3": semanticColorsLight["data-3"],
466
+ "--color-data-4": semanticColorsLight["data-4"],
467
+ "--color-data-5": semanticColorsLight["data-5"],
468
+ "--color-data-6": semanticColorsLight["data-6"],
469
+ "--color-data-7": semanticColorsLight["data-7"],
470
+ "--color-data-8": semanticColorsLight["data-8"],
471
+ "--color-data-9": semanticColorsLight["data-9"],
472
+ "--color-data-10": semanticColorsLight["data-10"],
473
+ "--color-text-link-hover": semanticColorsLight["text-link-hover"],
474
+ "--color-surface-overlay": semanticColorsLight["surface-overlay"],
475
+ "--color-surface-input": semanticColorsLight["surface-input"],
476
+ "--color-border-input": semanticColorsLight["border-input"],
477
+ "--color-border-input-hover": semanticColorsLight["border-input-hover"],
478
+ "--color-border-input-focus": semanticColorsLight["border-input-focus"],
479
+ "--color-border-input-error": semanticColorsLight["border-input-error"],
480
+ "--color-interactive-disabled-text": semanticColorsLight["interactive-disabled-text"],
481
+ "--color-avatar-background": semanticColorsLight["avatar-background"],
482
+ "--color-avatar-text": semanticColorsLight["avatar-text"],
483
+ ...themeIndependentCSSVars
224
484
  };
225
485
  var darkThemeCSSVars = {
226
486
  "--color-brand-primary": semanticColorsDark["brand-primary"],
@@ -262,7 +522,56 @@ var darkThemeCSSVars = {
262
522
  "--color-interactive-active": semanticColorsDark["interactive-active"],
263
523
  "--color-interactive-selected": semanticColorsDark["interactive-selected"],
264
524
  "--color-interactive-disabled": semanticColorsDark["interactive-disabled"],
265
- "--color-divider": semanticColorsDark["divider"]
525
+ "--color-divider": semanticColorsDark["divider"],
526
+ "--color-brand-primary-hover": semanticColorsDark["brand-primary-hover"],
527
+ "--color-brand-primary-active": semanticColorsDark["brand-primary-active"],
528
+ "--color-brand-secondary-hover": semanticColorsDark["brand-secondary-hover"],
529
+ "--color-brand-secondary-active": semanticColorsDark["brand-secondary-active"],
530
+ "--color-status-success-light": semanticColorsDark["status-success-light"],
531
+ "--color-status-success-dark": semanticColorsDark["status-success-dark"],
532
+ "--color-status-error-light": semanticColorsDark["status-error-light"],
533
+ "--color-status-error-dark": semanticColorsDark["status-error-dark"],
534
+ "--color-status-warning-light": semanticColorsDark["status-warning-light"],
535
+ "--color-status-warning-dark": semanticColorsDark["status-warning-dark"],
536
+ "--color-status-info-light": semanticColorsDark["status-info-light"],
537
+ "--color-status-info-dark": semanticColorsDark["status-info-dark"],
538
+ "--color-on-status-success": semanticColorsDark["on-status-success"],
539
+ "--color-on-status-error": semanticColorsDark["on-status-error"],
540
+ "--color-on-status-warning": semanticColorsDark["on-status-warning"],
541
+ "--color-on-status-info": semanticColorsDark["on-status-info"],
542
+ "--color-result-improve": semanticColorsDark["result-improve"],
543
+ "--color-result-improve-light": semanticColorsDark["result-improve-light"],
544
+ "--color-result-improve-dark": semanticColorsDark["result-improve-dark"],
545
+ "--color-result-degrade": semanticColorsDark["result-degrade"],
546
+ "--color-result-degrade-light": semanticColorsDark["result-degrade-light"],
547
+ "--color-result-degrade-dark": semanticColorsDark["result-degrade-dark"],
548
+ "--color-result-inconclusive": semanticColorsDark["result-inconclusive"],
549
+ "--color-result-inconclusive-light": semanticColorsDark["result-inconclusive-light"],
550
+ "--color-result-neutral": semanticColorsDark["result-neutral"],
551
+ "--color-on-result-improve": semanticColorsDark["on-result-improve"],
552
+ "--color-on-result-degrade": semanticColorsDark["on-result-degrade"],
553
+ "--color-on-result-inconclusive": semanticColorsDark["on-result-inconclusive"],
554
+ "--color-data-1": semanticColorsDark["data-1"],
555
+ "--color-data-2": semanticColorsDark["data-2"],
556
+ "--color-data-3": semanticColorsDark["data-3"],
557
+ "--color-data-4": semanticColorsDark["data-4"],
558
+ "--color-data-5": semanticColorsDark["data-5"],
559
+ "--color-data-6": semanticColorsDark["data-6"],
560
+ "--color-data-7": semanticColorsDark["data-7"],
561
+ "--color-data-8": semanticColorsDark["data-8"],
562
+ "--color-data-9": semanticColorsDark["data-9"],
563
+ "--color-data-10": semanticColorsDark["data-10"],
564
+ "--color-text-link-hover": semanticColorsDark["text-link-hover"],
565
+ "--color-surface-overlay": semanticColorsDark["surface-overlay"],
566
+ "--color-surface-input": semanticColorsDark["surface-input"],
567
+ "--color-border-input": semanticColorsDark["border-input"],
568
+ "--color-border-input-hover": semanticColorsDark["border-input-hover"],
569
+ "--color-border-input-focus": semanticColorsDark["border-input-focus"],
570
+ "--color-border-input-error": semanticColorsDark["border-input-error"],
571
+ "--color-interactive-disabled-text": semanticColorsDark["interactive-disabled-text"],
572
+ "--color-avatar-background": semanticColorsDark["avatar-background"],
573
+ "--color-avatar-text": semanticColorsDark["avatar-text"],
574
+ ...themeIndependentCSSVars
266
575
  };
267
576
 
268
577
  // src/theme/tokens-css.ts