@titan-design/react-ui 0.11.0 → 0.12.1

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 (152) hide show
  1. package/dist/bodymap.js +173 -343
  2. package/dist/bodymap.js.map +1 -1
  3. package/dist/bodymap.mjs +173 -343
  4. package/dist/bodymap.mjs.map +1 -1
  5. package/dist/index.d.mts +27 -22
  6. package/dist/index.d.ts +27 -22
  7. package/dist/index.js +366 -561
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +360 -553
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/pages.js +242 -407
  12. package/dist/pages.js.map +1 -1
  13. package/dist/pages.mjs +242 -407
  14. package/dist/pages.mjs.map +1 -1
  15. package/dist/theme/index.d.mts +250 -1157
  16. package/dist/theme/index.d.ts +250 -1157
  17. package/dist/theme/index.js +234 -408
  18. package/dist/theme/index.js.map +1 -1
  19. package/dist/theme/index.mjs +227 -399
  20. package/dist/theme/index.mjs.map +1 -1
  21. package/dist/theme/tokens-css.js +141 -140
  22. package/dist/theme/tokens-css.js.map +1 -1
  23. package/dist/theme/tokens-css.mjs +141 -140
  24. package/dist/theme/tokens-css.mjs.map +1 -1
  25. package/dist/theme/tokens.d.mts +904 -0
  26. package/dist/theme/tokens.d.ts +904 -0
  27. package/dist/theme/tokens.js +856 -0
  28. package/dist/theme/tokens.js.map +1 -0
  29. package/dist/theme/tokens.mjs +833 -0
  30. package/dist/theme/tokens.mjs.map +1 -0
  31. package/package.json +7 -1
  32. package/src/arch/Architecture.stories.tsx +9 -9
  33. package/src/components/custom/DateTime/DateTime.stories.tsx +1 -1
  34. package/src/components/custom/Fatigue/DualGhostSpark.stories.tsx +3 -3
  35. package/src/components/custom/Fatigue/FatigueLights.stories.tsx +2 -2
  36. package/src/components/custom/Fatigue/GhostSpark.stories.tsx +3 -3
  37. package/src/components/custom/Fatigue/LiveFatigueCard.tsx +1 -1
  38. package/src/components/custom/Fatigue/LiveFatiguePanel.stories.tsx +2 -2
  39. package/src/components/custom/Fatigue/RomProgressionChart.stories.tsx +2 -2
  40. package/src/components/custom/Fatigue/SilverRedPalette.stories.tsx +4 -4
  41. package/src/components/custom/Fatigue/VelocityHero.stories.tsx +3 -3
  42. package/src/components/custom/Fatigue/VerdictHero.stories.tsx +2 -2
  43. package/src/components/custom/Fatigue/fatigue-tokens.ts +12 -12
  44. package/src/components/custom/Sidebar/Sidebar.tsx +4 -4
  45. package/src/components/custom/Table/Table.tsx +2 -2
  46. package/src/components/custom/Workout/ActiveWorkoutPage.tsx +3 -3
  47. package/src/components/custom/Workout/BaseBadge.test.tsx +6 -1
  48. package/src/components/custom/Workout/BaseBadge.tsx +1 -1
  49. package/src/components/custom/Workout/BodyMap.tsx +2 -2
  50. package/src/components/custom/Workout/BodyMapDetailPanel.tsx +2 -2
  51. package/src/components/custom/Workout/DeviationBar.test.tsx +2 -1
  52. package/src/components/custom/Workout/DeviationBar.tsx +3 -2
  53. package/src/components/custom/Workout/ExerciseCard.test.tsx +3 -3
  54. package/src/components/custom/Workout/ExerciseCard.tsx +2 -2
  55. package/src/components/custom/Workout/ExerciseDetailPage.tsx +4 -4
  56. package/src/components/custom/Workout/InputBar.tsx +2 -2
  57. package/src/components/custom/Workout/LiveAuraFrame.stories.tsx +1 -1
  58. package/src/components/custom/Workout/LiveAuraFrame.test.tsx +1 -1
  59. package/src/components/custom/Workout/LiveAuraFrame.tsx +3 -3
  60. package/src/components/custom/Workout/MesoCard.tsx +3 -1
  61. package/src/components/custom/Workout/MuscleGroupChip.tsx +4 -3
  62. package/src/components/custom/Workout/PrHistoryModal.tsx +2 -2
  63. package/src/components/custom/Workout/ProgramPlanningPage.tsx +1 -1
  64. package/src/components/custom/Workout/README.md +1 -1
  65. package/src/components/custom/Workout/ReadinessCheck.tsx +2 -2
  66. package/src/components/custom/Workout/RestTimer.tsx +2 -2
  67. package/src/components/custom/Workout/S3SetTypes.stories.tsx +3 -3
  68. package/src/components/custom/Workout/SessionHeader.stories.tsx +2 -2
  69. package/src/components/custom/Workout/SessionHeader.tsx +1 -1
  70. package/src/components/custom/Workout/SessionRail.stories.tsx +2 -2
  71. package/src/components/custom/Workout/SessionRail.tsx +13 -5
  72. package/src/components/custom/Workout/SetBar.tsx +3 -3
  73. package/src/components/custom/Workout/SetRow.test.tsx +6 -3
  74. package/src/components/custom/Workout/StatusDot.tsx +5 -4
  75. package/src/components/custom/Workout/StrengthTrendChart.tsx +1 -1
  76. package/src/components/custom/Workout/TrainingStatusPage.tsx +2 -2
  77. package/src/components/custom/Workout/VelocityStrip.test.tsx +5 -2
  78. package/src/components/custom/Workout/VelocityStrip.tsx +4 -4
  79. package/src/components/custom/Workout/VolumeLandmarkBar.tsx +3 -3
  80. package/src/components/custom/Workout/WeightBadge.test.tsx +6 -1
  81. package/src/components/custom/Workout/WeightBadge.tsx +2 -1
  82. package/src/components/custom/Workout/WorkoutCard.tsx +3 -1
  83. package/src/components/custom/Workout/WorkoutPill.tsx +5 -2
  84. package/src/components/custom/Workout/ZoneTrack.tsx +4 -4
  85. package/src/components/custom/Workout/setHeadingKit.tsx +14 -8
  86. package/src/components/custom/Workout/velocity-story-kit.tsx +2 -2
  87. package/src/components/custom/charts/SetBarChart.tsx +3 -3
  88. package/src/components/custom/stepper/Stepper.stories.tsx +1 -1
  89. package/src/components/custom/stepper/Stepper.tsx +3 -3
  90. package/src/components/shell/DeviceMenu.tsx +2 -2
  91. package/src/components/shell/README.md +1 -1
  92. package/src/components/shell/SessionRailSpecimen.stories.tsx +1 -1
  93. package/src/components/shell/SideNav.tsx +1 -1
  94. package/src/components/shell/TopBar.tsx +1 -1
  95. package/src/components/ui/autocomplete/Autocomplete.stories.tsx +1 -1
  96. package/src/components/ui/autocomplete/Autocomplete.tsx +1 -1
  97. package/src/components/ui/avatar/Avatar.tsx +2 -2
  98. package/src/components/ui/badge/Badge.tsx +2 -2
  99. package/src/components/ui/card/Card.tsx +3 -3
  100. package/src/components/ui/checkbox/Checkbox.tsx +1 -1
  101. package/src/components/ui/collapse/Collapse.tsx +1 -1
  102. package/src/components/ui/data-row/DataRow.stories.tsx +1 -1
  103. package/src/components/ui/drawer/Drawer.tsx +3 -3
  104. package/src/components/ui/form-field/FormField.tsx +1 -1
  105. package/src/components/ui/help-tip/HelpTip.tsx +1 -1
  106. package/src/components/ui/menu/Menu.tsx +2 -2
  107. package/src/components/ui/pill/Pill.tsx +2 -2
  108. package/src/components/ui/popover/Popover.stories.tsx +2 -2
  109. package/src/components/ui/popover/Popover.tsx +1 -1
  110. package/src/components/ui/progress/Progress.tsx +3 -3
  111. package/src/components/ui/radio/Radio.stories.tsx +1 -1
  112. package/src/components/ui/radio/Radio.tsx +4 -4
  113. package/src/components/ui/select/Select.tsx +3 -3
  114. package/src/components/ui/surface/Surface.stories.tsx +3 -3
  115. package/src/components/ui/surface/Surface.test.tsx +32 -19
  116. package/src/components/ui/surface/Surface.tsx +3 -3
  117. package/src/components/ui/surface/SurfaceContext.ts +19 -29
  118. package/src/components/ui/surface/surface.contract.test.ts +58 -45
  119. package/src/components/ui/switch/Switch.tsx +1 -1
  120. package/src/components/ui/tabs/Tabs.tsx +2 -2
  121. package/src/components/ui/toolbar-button/ToolbarButton.stories.tsx +5 -5
  122. package/src/components/ui/toolbar-button/ToolbarButton.test.tsx +1 -1
  123. package/src/components/ui/toolbar-button/ToolbarButton.tsx +36 -22
  124. package/src/stories/PresetShowcase.stories.tsx +21 -21
  125. package/src/theme/ColorPalettes.stories.tsx +41 -38
  126. package/src/theme/ColorPrimitives.stories.tsx +89 -41
  127. package/src/theme/Depth.stories.tsx +312 -0
  128. package/src/theme/DepthCalibration.stories.tsx +655 -0
  129. package/src/theme/ThemeProvider.tsx +1 -1
  130. package/src/theme/barrel.ts +7 -14
  131. package/src/theme/color-stories.coverage.test.ts +15 -20
  132. package/src/theme/color-story-kit.tsx +1 -1
  133. package/src/theme/color-utils.ts +197 -0
  134. package/src/theme/config.ts +0 -8
  135. package/src/theme/depth-calibration.test.tsx +97 -0
  136. package/src/theme/elevation.test.ts +62 -1
  137. package/src/theme/elevation.ts +34 -8
  138. package/src/theme/global.css +47 -53
  139. package/src/theme/grey-ramp.test.ts +166 -0
  140. package/src/theme/materials.test.ts +106 -0
  141. package/src/theme/materials.ts +211 -0
  142. package/src/theme/presets/audiobook.ts +4 -4
  143. package/src/theme/presets/types.ts +3 -3
  144. package/src/theme/semantic-contrast.test.ts +83 -0
  145. package/src/theme/token-export-guard.test.ts +104 -0
  146. package/src/theme/tokens/primitives.ts +63 -116
  147. package/src/theme/tokens/semantic.ts +130 -82
  148. package/src/utils/colors.ts +1 -1
  149. package/tailwind.config.js +2 -5
  150. package/src/theme/bar-paper.ts +0 -59
  151. package/src/theme/shadows.stories.tsx +0 -523
  152. package/src/theme/shadows.ts +0 -439
@@ -1,531 +1,7 @@
1
+ import { ThemeMode, getSemanticColors } from './tokens.mjs';
2
+ export { CATEGORICAL_CVD_SAFE_MAX, CategoricalVariant, SURFACE_PLANE_STEPS, bestTextColor, buttonSizes, categoricalPalette, discreteRainbow, divergingScale, getCategoricalColor, getDiscreteRainbowColor, greyRamp, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveRamps, primitiveSpacing, primitiveTypography, primitiveZIndex, semanticColorsDark, semanticColorsLight, semanticTypography, sequentialEffort } from './tokens.mjs';
1
3
  import { ViewStyle, ViewProps } from 'react-native';
2
4
 
3
- /**
4
- * Semantic Design Tokens
5
- *
6
- * Meaningful tokens following DTCG (Design Tokens Community Group) naming conventions.
7
- * Pattern: {category}-{intent}-{variant?}-{state?}
8
- *
9
- * Categories:
10
- * - brand-* : Brand colors (primary, secondary, accent)
11
- * - status-* : Feedback colors (success, error, warning, info)
12
- * - result-* : Outcome indicators (improve, degrade, inconclusive, neutral)
13
- * - data-* : Data visualization colors (chart series)
14
- * - on-* : Text on colored backgrounds
15
- * - surface-* : Elevated containers (NOT "paper")
16
- * - background-* : Page backgrounds
17
- * - text-* : Text colors
18
- * - border-* : Border colors
19
- * - interactive-* : Hover/focus/active/disabled states
20
- */
21
- declare const semanticColorsLight: {
22
- readonly 'brand-primary': "#FF7900";
23
- readonly 'brand-primary-light': "#FFA063";
24
- readonly 'brand-primary-dark': "#DA5F00";
25
- readonly 'brand-primary-subtle': "rgba(255, 121, 0, 0.08)";
26
- readonly 'brand-primary-hover': "#DA5F00";
27
- readonly 'brand-primary-active': "#B94A00";
28
- readonly 'brand-secondary': "#307B9B";
29
- readonly 'brand-secondary-light': "#2697B7";
30
- readonly 'brand-secondary-dark': "#2A617F";
31
- readonly 'brand-secondary-subtle': "rgba(48, 123, 155, 0.08)";
32
- readonly 'brand-secondary-hover': "#2A617F";
33
- readonly 'brand-secondary-active': "#22465F";
34
- readonly 'on-brand-primary': "#FFFFFF";
35
- readonly 'on-brand-secondary': "#FFFFFF";
36
- readonly 'status-success': "#2ED573";
37
- readonly 'status-success-light': "#58F69E";
38
- readonly 'status-success-dark': "#298732";
39
- readonly 'status-success-subtle': "#E3FFEE";
40
- readonly 'status-live': "#2ED573";
41
- readonly 'status-live-muted': "#22A444";
42
- readonly 'status-error': "#D14343";
43
- readonly 'status-error-light': "#E05254";
44
- readonly 'status-error-dark': "#A4221C";
45
- readonly 'status-error-subtle': "#FFF4F4";
46
- readonly 'status-error-vivid': "#FF4757";
47
- readonly 'status-error-vivid-light': "#FF6070";
48
- readonly 'status-error-vivid-dark': "#C42539";
49
- readonly 'status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
50
- readonly 'status-warning': "#F9B415";
51
- readonly 'status-warning-light': "#FFD352";
52
- readonly 'status-warning-dark': "#C27400";
53
- readonly 'status-warning-subtle': "#FFF7DD";
54
- readonly 'status-info': "#2196F3";
55
- readonly 'status-info-light': "#78C2FF";
56
- readonly 'status-info-dark': "#1072CB";
57
- readonly 'status-info-subtle': "#EFF8FF";
58
- readonly 'on-status-success': "#FFFFFF";
59
- readonly 'on-status-error': "#FFFFFF";
60
- readonly 'on-status-warning': "#FFFFFF";
61
- readonly 'on-status-info': "#FFFFFF";
62
- readonly 'result-improve': "#4caf50";
63
- readonly 'result-improve-light': "rgba(76, 175, 80, 0.12)";
64
- readonly 'result-improve-dark': "#248a24";
65
- readonly 'result-degrade': "#ef5350";
66
- readonly 'result-degrade-light': "rgba(239, 83, 80, 0.12)";
67
- readonly 'result-degrade-dark': "#b30000";
68
- readonly 'result-inconclusive': "#9E9A97";
69
- readonly 'result-inconclusive-light': "rgba(158, 154, 151, 0.12)";
70
- readonly 'result-neutral': "#6B7280";
71
- readonly 'on-result-improve': "#FFFFFF";
72
- readonly 'on-result-degrade': "#FFFFFF";
73
- readonly 'on-result-inconclusive': "#FFFFFF";
74
- readonly 'data-1': "#1965B0";
75
- readonly 'data-2': "#4EB265";
76
- readonly 'data-3': "#F7F056";
77
- readonly 'data-4': "#DC050C";
78
- readonly 'data-5': "#882E72";
79
- readonly 'data-6': "#F4A736";
80
- readonly 'data-7': "#7BAFDE";
81
- readonly 'data-8': "#90C987";
82
- readonly 'data-9': "#CAACCB";
83
- readonly 'data-10': "#EE8026";
84
- readonly 'text-primary': "#121828";
85
- readonly 'text-secondary': "#65748B";
86
- readonly 'text-tertiary': "#9CA3AF";
87
- readonly 'text-disabled': "rgba(55, 65, 81, 0.48)";
88
- readonly 'text-inverse': "#FFFFFF";
89
- readonly 'text-link': "#5048E5";
90
- readonly 'text-link-hover': "#3832A0";
91
- readonly 'surface-base': "#FFFFFF";
92
- readonly 'surface-elevated': "#FAFAFA";
93
- readonly 'surface-raised': "#F3F4F6";
94
- readonly 'surface-overlay': "#FFFFFF";
95
- readonly 'surface-input': "#FAFAFA";
96
- readonly 'surface-inset': "#D1D5DB";
97
- readonly 'background-base': "#EBEBEB";
98
- readonly 'background-default': "#FFFFFF";
99
- readonly 'background-subtle': "#FAFAFA";
100
- readonly 'background-frame': "#9CA3AF";
101
- readonly 'border-default': "#E8E9EB";
102
- readonly 'border-subtle': "#F3F4F6";
103
- readonly 'border-strong': "#D1D5DB";
104
- readonly 'border-prominent': "#9CA3AF";
105
- readonly 'border-focus': "#5048E5";
106
- readonly 'border-input': "#D1D5DB";
107
- readonly 'border-input-hover': "#9CA3AF";
108
- readonly 'border-input-focus': "#5048E5";
109
- readonly 'border-input-error': "#D14343";
110
- readonly 'hairline-subtle': "rgba(0, 0, 0, 0.06)";
111
- readonly 'hairline-default': "rgba(0, 0, 0, 0.09)";
112
- readonly 'hairline-strong': "rgba(0, 0, 0, 0.14)";
113
- readonly 'interactive-hover': "rgba(55, 65, 81, 0.04)";
114
- readonly 'interactive-focus': "rgba(55, 65, 81, 0.12)";
115
- readonly 'interactive-active': "rgba(55, 65, 81, 0.16)";
116
- readonly 'interactive-selected': "rgba(55, 65, 81, 0.08)";
117
- readonly 'interactive-disabled': "rgba(55, 65, 81, 0.12)";
118
- readonly 'interactive-disabled-text': "rgba(55, 65, 81, 0.26)";
119
- readonly divider: "#E8E9EB";
120
- readonly 'avatar-background': "#6B7280";
121
- readonly 'avatar-text': "#FFFFFF";
122
- };
123
- declare const semanticColorsDark: {
124
- readonly 'brand-primary': "#FF7900";
125
- readonly 'brand-primary-light': "#FFA063";
126
- readonly 'brand-primary-dark': "#DA5F00";
127
- readonly 'brand-primary-subtle': "rgba(255, 121, 0, 0.12)";
128
- readonly 'brand-primary-hover': "#FFA063";
129
- readonly 'brand-primary-active': "#FFC7A2";
130
- readonly 'brand-secondary': "#307B9B";
131
- readonly 'brand-secondary-light': "#2697B7";
132
- readonly 'brand-secondary-dark': "#2A617F";
133
- readonly 'brand-secondary-subtle': "rgba(48, 123, 155, 0.12)";
134
- readonly 'brand-secondary-hover': "#2697B7";
135
- readonly 'brand-secondary-active': "#01B5D1";
136
- readonly 'on-brand-primary': "#FFFFFF";
137
- readonly 'on-brand-secondary': "#FFFFFF";
138
- readonly 'status-success': "#2ED573";
139
- readonly 'status-success-light': "#58F69E";
140
- readonly 'status-success-dark': "#298732";
141
- readonly 'status-success-subtle': "rgba(46, 213, 115, 0.12)";
142
- readonly 'status-live': "#2ED573";
143
- readonly 'status-live-muted': "#22A444";
144
- readonly 'status-error': "#D14343";
145
- readonly 'status-error-light': "#E05254";
146
- readonly 'status-error-dark': "#A4221C";
147
- readonly 'status-error-subtle': "rgba(209, 67, 67, 0.12)";
148
- readonly 'status-error-vivid': "#FF4757";
149
- readonly 'status-error-vivid-light': "#FF6070";
150
- readonly 'status-error-vivid-dark': "#C42539";
151
- readonly 'status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
152
- readonly 'status-warning': "#F9B415";
153
- readonly 'status-warning-light': "#FFD352";
154
- readonly 'status-warning-dark': "#C27400";
155
- readonly 'status-warning-subtle': "rgba(249, 180, 21, 0.12)";
156
- readonly 'status-info': "#2196F3";
157
- readonly 'status-info-light': "#78C2FF";
158
- readonly 'status-info-dark': "#1072CB";
159
- readonly 'status-info-subtle': "rgba(33, 150, 243, 0.12)";
160
- readonly 'on-status-success': "#FFFFFF";
161
- readonly 'on-status-error': "#FFFFFF";
162
- readonly 'on-status-warning': "#FFFFFF";
163
- readonly 'on-status-info': "#FFFFFF";
164
- readonly 'result-improve': "#4caf50";
165
- readonly 'result-improve-light': "rgba(76, 175, 80, 0.16)";
166
- readonly 'result-improve-dark': "#248a24";
167
- readonly 'result-degrade': "#ef5350";
168
- readonly 'result-degrade-light': "rgba(239, 83, 80, 0.16)";
169
- readonly 'result-degrade-dark': "#b30000";
170
- readonly 'result-inconclusive': "#9E9A97";
171
- readonly 'result-inconclusive-light': "rgba(158, 154, 151, 0.16)";
172
- readonly 'result-neutral': "#9CA3AF";
173
- readonly 'on-result-improve': "#FFFFFF";
174
- readonly 'on-result-degrade': "#FFFFFF";
175
- readonly 'on-result-inconclusive': "#FFFFFF";
176
- readonly 'data-1': "#1965B0";
177
- readonly 'data-2': "#4EB265";
178
- readonly 'data-3': "#F7F056";
179
- readonly 'data-4': "#DC050C";
180
- readonly 'data-5': "#882E72";
181
- readonly 'data-6': "#F4A736";
182
- readonly 'data-7': "#7BAFDE";
183
- readonly 'data-8': "#90C987";
184
- readonly 'data-9': "#CAACCB";
185
- readonly 'data-10': "#EE8026";
186
- readonly 'text-primary': "#F3F4F6";
187
- readonly 'text-secondary': "#9CA3AF";
188
- readonly 'text-tertiary': "#6B7280";
189
- readonly 'text-disabled': "rgba(255, 255, 255, 0.38)";
190
- readonly 'text-inverse': "#111827";
191
- readonly 'text-link': "#828DF8";
192
- readonly 'text-link-hover': "#60A5FA";
193
- readonly 'surface-base': "#252321";
194
- readonly 'surface-elevated': "#2C2A28";
195
- readonly 'surface-raised': "#31302F";
196
- readonly 'surface-overlay': "#373635";
197
- readonly 'surface-input': "#2C2A28";
198
- readonly 'surface-inset': "#13100D";
199
- readonly 'background-base': "#1C1916";
200
- readonly 'background-default': "#252321";
201
- readonly 'background-subtle': "#2C2A28";
202
- readonly 'background-frame': "#100D0A";
203
- readonly 'border-default': "#1F1F1F";
204
- readonly 'border-subtle': "#1C1C1C";
205
- readonly 'border-strong': "#2C2C2C";
206
- readonly 'border-prominent': "#3C3C3C";
207
- readonly 'border-focus': "#828DF8";
208
- readonly 'border-input': "#4B5563";
209
- readonly 'border-input-hover': "#6B7280";
210
- readonly 'border-input-focus': "#828DF8";
211
- readonly 'border-input-error': "#EF4444";
212
- readonly 'hairline-subtle': "rgba(255, 255, 255, 0.06)";
213
- readonly 'hairline-default': "rgba(255, 255, 255, 0.09)";
214
- readonly 'hairline-strong': "rgba(255, 255, 255, 0.14)";
215
- readonly 'interactive-hover': "rgba(255, 255, 255, 0.04)";
216
- readonly 'interactive-focus': "rgba(255, 255, 255, 0.12)";
217
- readonly 'interactive-active': "rgba(255, 255, 255, 0.16)";
218
- readonly 'interactive-selected': "rgba(255, 255, 255, 0.08)";
219
- readonly 'interactive-disabled': "rgba(255, 255, 255, 0.12)";
220
- readonly 'interactive-disabled-text': "rgba(255, 255, 255, 0.26)";
221
- readonly divider: "#1F1F1F";
222
- readonly 'avatar-background': "#4B5563";
223
- readonly 'avatar-text': "#FFFFFF";
224
- };
225
- declare const semanticTypography: {
226
- readonly h1: {
227
- readonly fontFamily: "heading";
228
- readonly fontSize: "3.5rem";
229
- readonly fontWeight: 700;
230
- readonly lineHeight: 1.375;
231
- };
232
- readonly h2: {
233
- readonly fontFamily: "heading";
234
- readonly fontSize: "3rem";
235
- readonly fontWeight: 700;
236
- readonly lineHeight: 1.375;
237
- };
238
- readonly h3: {
239
- readonly fontFamily: "heading";
240
- readonly fontSize: "2.25rem";
241
- readonly fontWeight: 700;
242
- readonly lineHeight: 1.375;
243
- };
244
- readonly h4: {
245
- readonly fontFamily: "heading";
246
- readonly fontSize: "2rem";
247
- readonly fontWeight: 700;
248
- readonly lineHeight: 1.375;
249
- };
250
- readonly h5: {
251
- readonly fontFamily: "heading";
252
- readonly fontSize: "1.5rem";
253
- readonly fontWeight: 600;
254
- readonly lineHeight: 1.375;
255
- };
256
- readonly h6: {
257
- readonly fontFamily: "heading";
258
- readonly fontSize: "1.125rem";
259
- readonly fontWeight: 600;
260
- readonly lineHeight: 1.375;
261
- };
262
- readonly body1: {
263
- readonly fontFamily: "body";
264
- readonly fontSize: "1rem";
265
- readonly fontWeight: 400;
266
- readonly lineHeight: 1.5;
267
- };
268
- readonly body2: {
269
- readonly fontFamily: "body";
270
- readonly fontSize: "0.875rem";
271
- readonly fontWeight: 400;
272
- readonly lineHeight: 1.57;
273
- };
274
- readonly subtitle1: {
275
- readonly fontFamily: "body";
276
- readonly fontSize: "1rem";
277
- readonly fontWeight: 500;
278
- readonly lineHeight: 1.75;
279
- };
280
- readonly subtitle2: {
281
- readonly fontFamily: "body";
282
- readonly fontSize: "0.875rem";
283
- readonly fontWeight: 500;
284
- readonly lineHeight: 1.57;
285
- };
286
- readonly caption: {
287
- readonly fontFamily: "body";
288
- readonly fontSize: "0.75rem";
289
- readonly fontWeight: 400;
290
- readonly lineHeight: 1.66;
291
- };
292
- readonly overline: {
293
- readonly fontFamily: "body";
294
- readonly fontSize: "0.75rem";
295
- readonly fontWeight: 600;
296
- readonly lineHeight: 2.5;
297
- readonly letterSpacing: "0.5px";
298
- readonly textTransform: "uppercase";
299
- };
300
- readonly button: {
301
- readonly fontFamily: "sans";
302
- readonly fontSize: "0.875rem";
303
- readonly fontWeight: 600;
304
- readonly lineHeight: 1.75;
305
- };
306
- };
307
- declare const buttonSizes: {
308
- readonly sm: {
309
- readonly paddingX: "16px";
310
- readonly paddingY: "6px";
311
- readonly fontSize: "0.875rem";
312
- };
313
- readonly md: {
314
- readonly paddingX: "20px";
315
- readonly paddingY: "8px";
316
- readonly fontSize: "0.875rem";
317
- };
318
- readonly lg: {
319
- readonly paddingX: "24px";
320
- readonly paddingY: "11px";
321
- readonly fontSize: "1rem";
322
- };
323
- };
324
- type ThemeMode = 'light' | 'dark';
325
- declare function getSemanticColors(mode: ThemeMode): {
326
- readonly 'brand-primary': "#FF7900";
327
- readonly 'brand-primary-light': "#FFA063";
328
- readonly 'brand-primary-dark': "#DA5F00";
329
- readonly 'brand-primary-subtle': "rgba(255, 121, 0, 0.08)";
330
- readonly 'brand-primary-hover': "#DA5F00";
331
- readonly 'brand-primary-active': "#B94A00";
332
- readonly 'brand-secondary': "#307B9B";
333
- readonly 'brand-secondary-light': "#2697B7";
334
- readonly 'brand-secondary-dark': "#2A617F";
335
- readonly 'brand-secondary-subtle': "rgba(48, 123, 155, 0.08)";
336
- readonly 'brand-secondary-hover': "#2A617F";
337
- readonly 'brand-secondary-active': "#22465F";
338
- readonly 'on-brand-primary': "#FFFFFF";
339
- readonly 'on-brand-secondary': "#FFFFFF";
340
- readonly 'status-success': "#2ED573";
341
- readonly 'status-success-light': "#58F69E";
342
- readonly 'status-success-dark': "#298732";
343
- readonly 'status-success-subtle': "#E3FFEE";
344
- readonly 'status-live': "#2ED573";
345
- readonly 'status-live-muted': "#22A444";
346
- readonly 'status-error': "#D14343";
347
- readonly 'status-error-light': "#E05254";
348
- readonly 'status-error-dark': "#A4221C";
349
- readonly 'status-error-subtle': "#FFF4F4";
350
- readonly 'status-error-vivid': "#FF4757";
351
- readonly 'status-error-vivid-light': "#FF6070";
352
- readonly 'status-error-vivid-dark': "#C42539";
353
- readonly 'status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
354
- readonly 'status-warning': "#F9B415";
355
- readonly 'status-warning-light': "#FFD352";
356
- readonly 'status-warning-dark': "#C27400";
357
- readonly 'status-warning-subtle': "#FFF7DD";
358
- readonly 'status-info': "#2196F3";
359
- readonly 'status-info-light': "#78C2FF";
360
- readonly 'status-info-dark': "#1072CB";
361
- readonly 'status-info-subtle': "#EFF8FF";
362
- readonly 'on-status-success': "#FFFFFF";
363
- readonly 'on-status-error': "#FFFFFF";
364
- readonly 'on-status-warning': "#FFFFFF";
365
- readonly 'on-status-info': "#FFFFFF";
366
- readonly 'result-improve': "#4caf50";
367
- readonly 'result-improve-light': "rgba(76, 175, 80, 0.12)";
368
- readonly 'result-improve-dark': "#248a24";
369
- readonly 'result-degrade': "#ef5350";
370
- readonly 'result-degrade-light': "rgba(239, 83, 80, 0.12)";
371
- readonly 'result-degrade-dark': "#b30000";
372
- readonly 'result-inconclusive': "#9E9A97";
373
- readonly 'result-inconclusive-light': "rgba(158, 154, 151, 0.12)";
374
- readonly 'result-neutral': "#6B7280";
375
- readonly 'on-result-improve': "#FFFFFF";
376
- readonly 'on-result-degrade': "#FFFFFF";
377
- readonly 'on-result-inconclusive': "#FFFFFF";
378
- readonly 'data-1': "#1965B0";
379
- readonly 'data-2': "#4EB265";
380
- readonly 'data-3': "#F7F056";
381
- readonly 'data-4': "#DC050C";
382
- readonly 'data-5': "#882E72";
383
- readonly 'data-6': "#F4A736";
384
- readonly 'data-7': "#7BAFDE";
385
- readonly 'data-8': "#90C987";
386
- readonly 'data-9': "#CAACCB";
387
- readonly 'data-10': "#EE8026";
388
- readonly 'text-primary': "#121828";
389
- readonly 'text-secondary': "#65748B";
390
- readonly 'text-tertiary': "#9CA3AF";
391
- readonly 'text-disabled': "rgba(55, 65, 81, 0.48)";
392
- readonly 'text-inverse': "#FFFFFF";
393
- readonly 'text-link': "#5048E5";
394
- readonly 'text-link-hover': "#3832A0";
395
- readonly 'surface-base': "#FFFFFF";
396
- readonly 'surface-elevated': "#FAFAFA";
397
- readonly 'surface-raised': "#F3F4F6";
398
- readonly 'surface-overlay': "#FFFFFF";
399
- readonly 'surface-input': "#FAFAFA";
400
- readonly 'surface-inset': "#D1D5DB";
401
- readonly 'background-base': "#EBEBEB";
402
- readonly 'background-default': "#FFFFFF";
403
- readonly 'background-subtle': "#FAFAFA";
404
- readonly 'background-frame': "#9CA3AF";
405
- readonly 'border-default': "#E8E9EB";
406
- readonly 'border-subtle': "#F3F4F6";
407
- readonly 'border-strong': "#D1D5DB";
408
- readonly 'border-prominent': "#9CA3AF";
409
- readonly 'border-focus': "#5048E5";
410
- readonly 'border-input': "#D1D5DB";
411
- readonly 'border-input-hover': "#9CA3AF";
412
- readonly 'border-input-focus': "#5048E5";
413
- readonly 'border-input-error': "#D14343";
414
- readonly 'hairline-subtle': "rgba(0, 0, 0, 0.06)";
415
- readonly 'hairline-default': "rgba(0, 0, 0, 0.09)";
416
- readonly 'hairline-strong': "rgba(0, 0, 0, 0.14)";
417
- readonly 'interactive-hover': "rgba(55, 65, 81, 0.04)";
418
- readonly 'interactive-focus': "rgba(55, 65, 81, 0.12)";
419
- readonly 'interactive-active': "rgba(55, 65, 81, 0.16)";
420
- readonly 'interactive-selected': "rgba(55, 65, 81, 0.08)";
421
- readonly 'interactive-disabled': "rgba(55, 65, 81, 0.12)";
422
- readonly 'interactive-disabled-text': "rgba(55, 65, 81, 0.26)";
423
- readonly divider: "#E8E9EB";
424
- readonly 'avatar-background': "#6B7280";
425
- readonly 'avatar-text': "#FFFFFF";
426
- } | {
427
- readonly 'brand-primary': "#FF7900";
428
- readonly 'brand-primary-light': "#FFA063";
429
- readonly 'brand-primary-dark': "#DA5F00";
430
- readonly 'brand-primary-subtle': "rgba(255, 121, 0, 0.12)";
431
- readonly 'brand-primary-hover': "#FFA063";
432
- readonly 'brand-primary-active': "#FFC7A2";
433
- readonly 'brand-secondary': "#307B9B";
434
- readonly 'brand-secondary-light': "#2697B7";
435
- readonly 'brand-secondary-dark': "#2A617F";
436
- readonly 'brand-secondary-subtle': "rgba(48, 123, 155, 0.12)";
437
- readonly 'brand-secondary-hover': "#2697B7";
438
- readonly 'brand-secondary-active': "#01B5D1";
439
- readonly 'on-brand-primary': "#FFFFFF";
440
- readonly 'on-brand-secondary': "#FFFFFF";
441
- readonly 'status-success': "#2ED573";
442
- readonly 'status-success-light': "#58F69E";
443
- readonly 'status-success-dark': "#298732";
444
- readonly 'status-success-subtle': "rgba(46, 213, 115, 0.12)";
445
- readonly 'status-live': "#2ED573";
446
- readonly 'status-live-muted': "#22A444";
447
- readonly 'status-error': "#D14343";
448
- readonly 'status-error-light': "#E05254";
449
- readonly 'status-error-dark': "#A4221C";
450
- readonly 'status-error-subtle': "rgba(209, 67, 67, 0.12)";
451
- readonly 'status-error-vivid': "#FF4757";
452
- readonly 'status-error-vivid-light': "#FF6070";
453
- readonly 'status-error-vivid-dark': "#C42539";
454
- readonly 'status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
455
- readonly 'status-warning': "#F9B415";
456
- readonly 'status-warning-light': "#FFD352";
457
- readonly 'status-warning-dark': "#C27400";
458
- readonly 'status-warning-subtle': "rgba(249, 180, 21, 0.12)";
459
- readonly 'status-info': "#2196F3";
460
- readonly 'status-info-light': "#78C2FF";
461
- readonly 'status-info-dark': "#1072CB";
462
- readonly 'status-info-subtle': "rgba(33, 150, 243, 0.12)";
463
- readonly 'on-status-success': "#FFFFFF";
464
- readonly 'on-status-error': "#FFFFFF";
465
- readonly 'on-status-warning': "#FFFFFF";
466
- readonly 'on-status-info': "#FFFFFF";
467
- readonly 'result-improve': "#4caf50";
468
- readonly 'result-improve-light': "rgba(76, 175, 80, 0.16)";
469
- readonly 'result-improve-dark': "#248a24";
470
- readonly 'result-degrade': "#ef5350";
471
- readonly 'result-degrade-light': "rgba(239, 83, 80, 0.16)";
472
- readonly 'result-degrade-dark': "#b30000";
473
- readonly 'result-inconclusive': "#9E9A97";
474
- readonly 'result-inconclusive-light': "rgba(158, 154, 151, 0.16)";
475
- readonly 'result-neutral': "#9CA3AF";
476
- readonly 'on-result-improve': "#FFFFFF";
477
- readonly 'on-result-degrade': "#FFFFFF";
478
- readonly 'on-result-inconclusive': "#FFFFFF";
479
- readonly 'data-1': "#1965B0";
480
- readonly 'data-2': "#4EB265";
481
- readonly 'data-3': "#F7F056";
482
- readonly 'data-4': "#DC050C";
483
- readonly 'data-5': "#882E72";
484
- readonly 'data-6': "#F4A736";
485
- readonly 'data-7': "#7BAFDE";
486
- readonly 'data-8': "#90C987";
487
- readonly 'data-9': "#CAACCB";
488
- readonly 'data-10': "#EE8026";
489
- readonly 'text-primary': "#F3F4F6";
490
- readonly 'text-secondary': "#9CA3AF";
491
- readonly 'text-tertiary': "#6B7280";
492
- readonly 'text-disabled': "rgba(255, 255, 255, 0.38)";
493
- readonly 'text-inverse': "#111827";
494
- readonly 'text-link': "#828DF8";
495
- readonly 'text-link-hover': "#60A5FA";
496
- readonly 'surface-base': "#252321";
497
- readonly 'surface-elevated': "#2C2A28";
498
- readonly 'surface-raised': "#31302F";
499
- readonly 'surface-overlay': "#373635";
500
- readonly 'surface-input': "#2C2A28";
501
- readonly 'surface-inset': "#13100D";
502
- readonly 'background-base': "#1C1916";
503
- readonly 'background-default': "#252321";
504
- readonly 'background-subtle': "#2C2A28";
505
- readonly 'background-frame': "#100D0A";
506
- readonly 'border-default': "#1F1F1F";
507
- readonly 'border-subtle': "#1C1C1C";
508
- readonly 'border-strong': "#2C2C2C";
509
- readonly 'border-prominent': "#3C3C3C";
510
- readonly 'border-focus': "#828DF8";
511
- readonly 'border-input': "#4B5563";
512
- readonly 'border-input-hover': "#6B7280";
513
- readonly 'border-input-focus': "#828DF8";
514
- readonly 'border-input-error': "#EF4444";
515
- readonly 'hairline-subtle': "rgba(255, 255, 255, 0.06)";
516
- readonly 'hairline-default': "rgba(255, 255, 255, 0.09)";
517
- readonly 'hairline-strong': "rgba(255, 255, 255, 0.14)";
518
- readonly 'interactive-hover': "rgba(255, 255, 255, 0.04)";
519
- readonly 'interactive-focus': "rgba(255, 255, 255, 0.12)";
520
- readonly 'interactive-active': "rgba(255, 255, 255, 0.16)";
521
- readonly 'interactive-selected': "rgba(255, 255, 255, 0.08)";
522
- readonly 'interactive-disabled': "rgba(255, 255, 255, 0.12)";
523
- readonly 'interactive-disabled-text': "rgba(255, 255, 255, 0.26)";
524
- readonly divider: "#1F1F1F";
525
- readonly 'avatar-background': "#4B5563";
526
- readonly 'avatar-text': "#FFFFFF";
527
- };
528
-
529
5
  /**
530
6
  * Elevation System
531
7
  *
@@ -587,6 +63,20 @@ declare function getElevationSurface(baseColor: string, level: ElevationLevel, t
587
63
  * @param isHovered - Whether element is hovered
588
64
  * @returns ViewStyle with shadow properties
589
65
  */
66
+ /**
67
+ * The lowest elevation that still casts an outward shadow.
68
+ *
69
+ * On a near-black surface a drop-shadow is inert: at levels 1-3 the shadow is
70
+ * dark-on-dark and contributes nothing a viewer can see, while still costing a
71
+ * composite layer. Material dropped shadow-as-hierarchy for the same reason.
72
+ * Inline hierarchy is the hairline's job (`hairline-*`), which composites by a
73
+ * constant amount over any plane.
74
+ *
75
+ * At 4+ the element is genuinely FLOATING over a backdrop — menu, popover,
76
+ * toast — where a large soft shadow describes separation from the page rather
77
+ * than a rank in a stack. Those should also carry a hairline ring.
78
+ */
79
+ declare const FLOATING_ELEVATION_MIN: ElevationLevel;
590
80
  declare function getElevationShadow(baseColor: string, level: ElevationLevel, theme: 'light' | 'dark', isHovered?: boolean): ViewStyle;
591
81
  /**
592
82
  * Elevation level backing a `<Surface pressed>` recess: the shallow `inset`
@@ -666,414 +156,6 @@ type GlowIntensity = 'subtle' | 'medium' | 'strong';
666
156
  */
667
157
  declare function getGlowShadow(color: string, intensity?: GlowIntensity): ViewStyle;
668
158
 
669
- /**
670
- * Primitive Design Tokens
671
- *
672
- * Raw values with no semantic meaning. These are the foundation of the design system
673
- * and should rarely be used directly in components. Use semantic tokens instead.
674
- */
675
- declare const primitiveColors: {
676
- readonly blue: {
677
- readonly 50: "#EFF6FF";
678
- readonly 100: "#DBEAFE";
679
- readonly 200: "#BFDBFE";
680
- readonly 300: "#93C5FD";
681
- readonly 400: "#60A5FA";
682
- readonly 500: "#3B82F6";
683
- readonly 600: "#5048E5";
684
- readonly 700: "#3832A0";
685
- readonly 800: "#1E40AF";
686
- readonly 900: "#1E3A8A";
687
- };
688
- readonly red: {
689
- readonly 50: "#FEF2F2";
690
- readonly 100: "#FEE2E2";
691
- readonly 200: "#FECACA";
692
- readonly 300: "#FCA5A5";
693
- readonly 400: "#DA6868";
694
- readonly 500: "#EF4444";
695
- readonly 600: "#D14343";
696
- readonly 700: "#922E2E";
697
- readonly 800: "#991B1B";
698
- readonly 900: "#7F1D1D";
699
- };
700
- readonly redVivid: {
701
- readonly 50: "#FFECEE";
702
- readonly 100: "#FFD6DB";
703
- readonly 200: "#FFB3BC";
704
- readonly 300: "#FF8593";
705
- readonly 400: "#FF6070";
706
- readonly 500: "#FF4757";
707
- readonly 600: "#E63548";
708
- readonly 700: "#C42539";
709
- readonly 800: "#9E1C2C";
710
- readonly 900: "#7A1520";
711
- };
712
- readonly neutral: {
713
- readonly 50: "#FAFAFA";
714
- readonly 100: "#F3F4F6";
715
- readonly 200: "#E5E7EB";
716
- readonly 300: "#D1D5DB";
717
- readonly 400: "#9CA3AF";
718
- readonly 500: "#6B7280";
719
- readonly 600: "#4B5563";
720
- readonly 700: "#374151";
721
- readonly 800: "#1F2937";
722
- readonly 900: "#111827";
723
- readonly 950: "#030712";
724
- };
725
- readonly charcoal: {
726
- readonly 0: "#6E6E6E";
727
- readonly 50: "#5D5D5D";
728
- readonly 100: "#4C4C4C";
729
- readonly 200: "#3C3C3C";
730
- readonly 300: "#2C2C2C";
731
- readonly 400: "#1F1F1F";
732
- readonly 500: "#1C1C1C";
733
- readonly 600: "#191919";
734
- readonly 700: "#161616";
735
- readonly 800: "#131313";
736
- readonly 900: "#101010";
737
- };
738
- readonly white: "#FFFFFF";
739
- readonly black: "#000000";
740
- readonly transparent: "transparent";
741
- };
742
- /**
743
- * Surface ramp — dark mode (TD-surface-tokens, S-1, re-spaced S-3)
744
- *
745
- * Warm-tapered, DERIVED ramp — NOT hand-picked. Shipped verbatim as the output of
746
- * `deriveSurfaceRamp(shellL=9, steps=[4.5,3.5,3,2.5], rbShadow=6, rbHilite=1.5)`
747
- * (see `packages/ui/src/components/ui/surface/surface-lab-shared.tsx` on branch
748
- * `feat/TD-unified-lab`, story `Lab/Surface Exploration -> Surface Ramp System`
749
- * — that lab default is `[4.5,2.5,2,1.5]` as of this writing and should be
750
- * updated to match on that branch, follow-up, not done here).
751
- * Lightness is CIELAB L* off the shell, with DIMINISHING steps (4.5/3.5/3/2.5) —
752
- * the frame->content jump is biggest, each plane above adds less, but the top
753
- * three planes (elevated/raised/overlay) were re-spaced WIDER (S-3) than the
754
- * original 2.5/2/1.5 taper so they read as distinct planes without leaning on
755
- * the hairline alone. `background`/`base`/`inset` are unchanged by the re-space.
756
- * Warmth (R-B) tapers 6 -> 1.5 from frame to hero so bright content planes stay
757
- * near-neutral.
758
- * Kept separate from the `charcoal` scale above (which several existing
759
- * components reference directly for unrelated shadow/track tints) so this
760
- * change is additive and doesn't ripple into those consumers.
761
- * See coordination/design-explorations/surface-system-north-star.md.
762
- */
763
- declare const surfaceRampDark: {
764
- readonly inset: "#13100D";
765
- readonly background: "#1C1916";
766
- readonly base: "#252321";
767
- readonly elevated: "#2C2A28";
768
- readonly raised: "#31302F";
769
- readonly overlay: "#373635";
770
- };
771
- /**
772
- * Frame/bezel primitive — dark mode (TD-surface-tokens, S-3)
773
- *
774
- * The chrome that "exits the content ramp" entirely: the top bar + side nav
775
- * shell. Sits ONE STEP BELOW `surfaceRampDark.background` (L*9), darker even
776
- * than `surfaceRampDark.inset` (L*4.5) — it isn't a plane IN the ramp, it's
777
- * the bezel the ramp sits inside. Literal, not `deriveSurfaceRamp()` output.
778
- */
779
- declare const backgroundFrameDark = "#100D0A";
780
- /**
781
- * Derived tonal ramps (TD-05.09 color foundations)
782
- *
783
- * Seven OKLCH-generated hue ramps, 11 perceptual lightness steps each (50 -> 950).
784
- * Built with hue-torsion + a chroma arc, anchored through existing brand/semantic
785
- * hexes. `pin` marks the step each ramp flows through its anchor.
786
- * This is the single source of truth for chromatic hexes — the categorical palette
787
- * below references these steps rather than duplicating values.
788
- * See coordination/design-explorations/foundations.
789
- */
790
- declare const primitiveRamps: {
791
- readonly red: {
792
- readonly 50: "#FFF4F4";
793
- readonly 100: "#FFE3E5";
794
- readonly 200: "#FFC2C5";
795
- readonly 300: "#FF9A9D";
796
- readonly 400: "#F77175";
797
- readonly 500: "#E05254";
798
- readonly 600: "#D14343";
799
- readonly 700: "#A4221C";
800
- readonly 800: "#7E1002";
801
- readonly 900: "#5A0900";
802
- readonly 950: "#3D0400";
803
- };
804
- readonly orange: {
805
- readonly 50: "#FFF5ED";
806
- readonly 100: "#FFE6D4";
807
- readonly 200: "#FFC7A2";
808
- readonly 300: "#FFA063";
809
- readonly 400: "#FF7900";
810
- readonly 500: "#DA5F00";
811
- readonly 600: "#B94A00";
812
- readonly 700: "#983804";
813
- readonly 800: "#6F290F";
814
- readonly 900: "#4E1C0C";
815
- readonly 950: "#331107";
816
- };
817
- readonly amber: {
818
- readonly 50: "#FFF7DD";
819
- readonly 100: "#FFEAA9";
820
- readonly 200: "#FFD352";
821
- readonly 300: "#F9B415";
822
- readonly 400: "#E08C00";
823
- readonly 500: "#C27400";
824
- readonly 600: "#A45E00";
825
- readonly 700: "#814D14";
826
- readonly 800: "#5B3A1A";
827
- readonly 900: "#442503";
828
- readonly 950: "#301500";
829
- };
830
- readonly green: {
831
- readonly 50: "#E3FFEE";
832
- readonly 100: "#B5FFD2";
833
- readonly 200: "#58F69E";
834
- readonly 300: "#2ED573";
835
- readonly 400: "#21C05D";
836
- readonly 500: "#22A444";
837
- readonly 600: "#298732";
838
- readonly 700: "#2B6B25";
839
- readonly 800: "#264D1C";
840
- readonly 900: "#1B3515";
841
- readonly 950: "#11220D";
842
- };
843
- readonly cyan: {
844
- readonly 50: "#E6FBFF";
845
- readonly 100: "#C2F6FF";
846
- readonly 200: "#62EAFF";
847
- readonly 300: "#22D3EE";
848
- readonly 400: "#01B5D1";
849
- readonly 500: "#2697B7";
850
- readonly 600: "#307B9B";
851
- readonly 700: "#2A617F";
852
- readonly 800: "#22465F";
853
- readonly 900: "#0B3149";
854
- readonly 950: "#001F36";
855
- };
856
- readonly blue: {
857
- readonly 50: "#EFF8FF";
858
- readonly 100: "#D9EFFF";
859
- readonly 200: "#ACDBFF";
860
- readonly 300: "#78C2FF";
861
- readonly 400: "#3CA8FF";
862
- readonly 500: "#2196F3";
863
- readonly 600: "#1072CB";
864
- readonly 700: "#135AA8";
865
- readonly 800: "#14407E";
866
- readonly 900: "#112C5A";
867
- readonly 950: "#091B3C";
868
- };
869
- readonly magenta: {
870
- readonly 50: "#FFF3F9";
871
- readonly 100: "#FFE2F1";
872
- readonly 200: "#FFBDE2";
873
- readonly 300: "#FF8FD5";
874
- readonly 400: "#ED69C3";
875
- readonly 500: "#D548AF";
876
- readonly 600: "#BA2996";
877
- readonly 700: "#9C0D7A";
878
- readonly 800: "#77005A";
879
- readonly 900: "#56003F";
880
- readonly 950: "#3B0029";
881
- };
882
- };
883
- /**
884
- * Categorical (qualitative) palette — an ordered, CVD-safe series expressed as
885
- * references into {@link primitiveRamps} (one source of truth; the palette moves
886
- * with the ramps).
887
- *
888
- * Design: a single canonical hue order (blue, magenta, red, orange, green, cyan,
889
- * amber), with steps chosen vivid-midtone-first and fanned lighter/darker as the
890
- * series grows to preserve separation. The sequence is nested-stable — a chart
891
- * with N series uses the first N colors, and the series index is stable as N
892
- * changes. Colorblind-safe worst-case deuteranopia/protanopia floor 8 holds
893
- * through {@link CATEGORICAL_CVD_SAFE_MAX} colors; the 7th is an extended color
894
- * that should be paired with a legend or other secondary encoding.
895
- *
896
- * Two variants: `default` (vivid, sits on neutral/light surfaces, legible under
897
- * black text) and `dark` (deeper shades legible under white text on a fill). A
898
- * separate "light" variant was dropped — the vivid `default` picks already clear
899
- * black-text contrast, so it doubles as the light-context palette.
900
- */
901
- declare const categoricalPalette: {
902
- readonly default: readonly ["#2196F3", "#D548AF", "#E05254", "#FF7900", "#2ED573", "#22D3EE", "#A45E00"];
903
- readonly dark: readonly ["#1072CB", "#BA2996", "#E05254", "#B94A00", "#264D1C", "#22465F", "#C27400"];
904
- };
905
- /** Largest series count that holds the CVD floor without a legend. */
906
- declare const CATEGORICAL_CVD_SAFE_MAX = 6;
907
- /**
908
- * Categorical palette variant.
909
- * - `default` : vivid; neutral/light surfaces, legible under black text
910
- * - `dark` : deeper shades, legible under white text on a filled swatch
911
- */
912
- type CategoricalVariant = keyof typeof categoricalPalette;
913
- /**
914
- * Get a color from the ordered categorical palette by series index.
915
- * The palette is nested-stable, so the color for a given index does not change
916
- * with the total series count; `index` simply wraps past the end.
917
- *
918
- * @param index - 0-based series index (wraps past the end)
919
- * @param variant - `default` (black-text / light surfaces) or `dark` (white text)
920
- * @returns The hex color string
921
- */
922
- declare function getCategoricalColor(index: number, variant?: CategoricalVariant): string;
923
- /**
924
- * Diverging status scale (BodyMap training-status: under → optimal → over) as
925
- * references into {@link primitiveRamps}. A true diverging shape — `optimal` is
926
- * the lightest center, the extremes go darker — so the signal reads in lightness
927
- * (colorblind-robust; worst-case deut/protanopia min ΔE ~10.9) and the direction
928
- * reads in the blue↔red axis (the CVD-safe hue pair).
929
- *
930
- * Tuned so every stop is dark enough for the fill yet light enough that BLACK
931
- * text clears 4.5:1 on all five — no per-cell white/black flipping. The value
932
- * valley is symmetric: the two mid-arms (maintenance / approaching) sit at equal
933
- * lightness (both ~0.53 relative luminance), the ends darker.
934
- */
935
- declare const divergingScale: readonly ["#2196F3", "#22D3EE", "#58F69E", "#F9B415", "#D14343"];
936
- /**
937
- * Sequential "effort" scale (low → high intensity: green → yellow → orange → red)
938
- * as references into {@link primitiveRamps}. A 6-stop ordinal palette; the
939
- * velocity/RPE strip sub-samples it. Every adjacent pair clears the CVD floor
940
- * (min deut/protan ΔE ≥ 4.5), and within that the hue walk is kept smooth —
941
- * the amber-200 → amber-300 → orange-400 run steps the yellow→orange transition
942
- * gradually rather than lurching. Order encodes magnitude, so it tolerates the
943
- * green↔red CVD pair. Stops 0–3 take black text; the dark reds take white.
944
- */
945
- declare const sequentialEffort: readonly ["#2ED573", "#FFD352", "#F9B415", "#FF7900", "#D14343", "#A4221C"];
946
- /**
947
- * Best-contrast text color (black or white) for a solid fill — for labels sitting
948
- * on categorical/diverging/effort swatches. Uses the WCAG relative-luminance ratio.
949
- */
950
- declare function bestTextColor(hex: string): '#000000' | '#FFFFFF';
951
- /**
952
- * Discrete rainbow palette for data visualization
953
- * Based on Paul Tol's color schemes: https://personal.sron.nl/~pault/#fig:scheme_rainbow_discrete
954
- */
955
- declare const discreteRainbow: readonly ["#E8ECFB", "#D9CCE3", "#D1BBD7", "#CAACCB", "#BA8DB4", "#AE76A3", "#AA6F9E", "#994F88", "#882E72", "#1965B0", "#437DBF", "#5289C7", "#6195CF", "#7BAFDE", "#4EB265", "#90C987", "#CAE0AB", "#F7F056", "#F7CB45", "#F6C141", "#F4A736", "#F1932D", "#EE8026", "#E8601C", "#E65518", "#DC050C", "#A5170E", "#72190E", "#42150A"];
956
- /**
957
- * Get a color from the discrete rainbow palette for a given index and palette size.
958
- * Colors are optimized for visual distinction at each palette size.
959
- *
960
- * @param index - The index of the color in the series (0-based)
961
- * @param size - The total number of colors needed (1-23)
962
- * @returns The hex color string
963
- */
964
- declare function getDiscreteRainbowColor(index: number, size: number): string;
965
- declare const primitiveTypography: {
966
- readonly fontFamilies: {
967
- readonly sans: readonly ["Inter", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Helvetica", "Arial", "sans-serif"];
968
- readonly body: readonly ["Nunito Sans", "sans-serif"];
969
- readonly heading: readonly ["Space Grotesk", "sans-serif"];
970
- readonly mono: readonly ["SF Mono", "Monaco", "Inconsolata", "Fira Mono", "Droid Sans Mono", "Source Code Pro", "monospace"];
971
- };
972
- readonly fontSizes: {
973
- readonly xs: "0.75rem";
974
- readonly sm: "0.875rem";
975
- readonly base: "1rem";
976
- readonly lg: "1.125rem";
977
- readonly xl: "1.5rem";
978
- readonly '2xl': "2rem";
979
- readonly '3xl': "2.25rem";
980
- readonly '4xl': "3rem";
981
- readonly '5xl': "3.5rem";
982
- };
983
- readonly fontWeights: {
984
- readonly normal: 400;
985
- readonly medium: 500;
986
- readonly semibold: 600;
987
- readonly bold: 700;
988
- };
989
- readonly lineHeights: {
990
- readonly none: 1;
991
- readonly tight: 1.375;
992
- readonly snug: 1.5;
993
- readonly normal: 1.57;
994
- readonly relaxed: 1.66;
995
- readonly loose: 1.75;
996
- };
997
- readonly letterSpacing: {
998
- readonly tighter: "-0.05em";
999
- readonly tight: "-0.025em";
1000
- readonly normal: "0em";
1001
- readonly wide: "0.025em";
1002
- readonly wider: "0.05em";
1003
- readonly widest: "0.5px";
1004
- };
1005
- };
1006
- declare const primitiveSpacing: {
1007
- readonly 0: "0";
1008
- readonly px: "1px";
1009
- readonly 0.5: "0.125rem";
1010
- readonly 1: "0.25rem";
1011
- readonly 1.5: "0.375rem";
1012
- readonly 2: "0.5rem";
1013
- readonly 2.5: "0.625rem";
1014
- readonly 3: "0.75rem";
1015
- readonly 3.5: "0.875rem";
1016
- readonly 4: "1rem";
1017
- readonly 5: "1.25rem";
1018
- readonly 6: "1.5rem";
1019
- readonly 7: "1.75rem";
1020
- readonly 8: "2rem";
1021
- readonly 9: "2.25rem";
1022
- readonly 10: "2.5rem";
1023
- readonly 11: "2.75rem";
1024
- readonly 12: "3rem";
1025
- readonly 14: "3.5rem";
1026
- readonly 16: "4rem";
1027
- readonly 20: "5rem";
1028
- readonly 24: "6rem";
1029
- readonly 28: "7rem";
1030
- readonly 32: "8rem";
1031
- };
1032
- declare const primitiveBorderRadius: {
1033
- readonly none: "0";
1034
- readonly sm: "4px";
1035
- readonly DEFAULT: "8px";
1036
- readonly md: "8px";
1037
- readonly lg: "12px";
1038
- readonly xl: "16px";
1039
- readonly '2xl': "24px";
1040
- readonly full: "9999px";
1041
- };
1042
- declare const primitiveShadows: {
1043
- readonly none: "none";
1044
- readonly sm: "0px 1px 2px rgba(100, 116, 139, 0.12)";
1045
- readonly DEFAULT: "0px 1px 3px rgba(100, 116, 139, 0.12), 0px 1px 2px rgba(100, 116, 139, 0.24)";
1046
- readonly md: "0px 4px 6px rgba(100, 116, 139, 0.12)";
1047
- readonly lg: "0px 10px 15px rgba(100, 116, 139, 0.12)";
1048
- readonly xl: "0px 20px 25px rgba(100, 116, 139, 0.12)";
1049
- readonly '2xl': "0px 25px 50px rgba(100, 116, 139, 0.25)";
1050
- readonly inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)";
1051
- };
1052
- declare const primitiveBreakpoints: {
1053
- readonly xs: 0;
1054
- readonly sm: 600;
1055
- readonly md: 1000;
1056
- readonly lg: 1200;
1057
- readonly xl: 1920;
1058
- };
1059
- declare const primitiveZIndex: {
1060
- readonly hide: -1;
1061
- readonly auto: "auto";
1062
- readonly base: 0;
1063
- readonly docked: 10;
1064
- readonly dropdown: 1000;
1065
- readonly sticky: 1100;
1066
- readonly drawer: 1100;
1067
- readonly banner: 1200;
1068
- readonly appBar: 1200;
1069
- readonly overlay: 1300;
1070
- readonly modal: 1400;
1071
- readonly popover: 1500;
1072
- readonly skipLink: 1600;
1073
- readonly toast: 1700;
1074
- readonly tooltip: 1800;
1075
- };
1076
-
1077
159
  /**
1078
160
  * Theme Configuration
1079
161
  *
@@ -1120,29 +202,25 @@ declare const lightThemeCSSVars: {
1120
202
  readonly '--color-status-warning-subtle': "#FFF7DD";
1121
203
  readonly '--color-status-info': "#2196F3";
1122
204
  readonly '--color-status-info-subtle': "#EFF8FF";
1123
- readonly '--color-status-error-vivid': "#FF4757";
1124
- readonly '--color-status-error-vivid-light': "#FF6070";
1125
- readonly '--color-status-error-vivid-dark': "#C42539";
205
+ readonly '--color-status-error-vivid': "#D14343";
206
+ readonly '--color-status-error-vivid-light': "#E05254";
207
+ readonly '--color-status-error-vivid-dark': "#A4221C";
1126
208
  readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
1127
209
  readonly '--color-text-primary': "#121828";
1128
210
  readonly '--color-text-secondary': "#65748B";
1129
- readonly '--color-text-tertiary': "#9CA3AF";
211
+ readonly '--color-text-tertiary': "#A29F9D";
1130
212
  readonly '--color-text-disabled': "rgba(55, 65, 81, 0.48)";
1131
213
  readonly '--color-text-inverse': "#FFFFFF";
1132
- readonly '--color-text-link': "#5048E5";
214
+ readonly '--color-text-link': "#1072CB";
1133
215
  readonly '--color-surface-base': "#FFFFFF";
1134
- readonly '--color-surface-elevated': "#FAFAFA";
1135
- readonly '--color-surface-raised': "#F3F4F6";
1136
- readonly '--color-surface-inset': "#D1D5DB";
216
+ readonly '--color-surface-elevated': "#F9F6F3";
217
+ readonly '--color-surface-raised': "#EDEAE7";
1137
218
  readonly '--color-background-base': "#EBEBEB";
1138
219
  readonly '--color-background-default': "#FFFFFF";
1139
- readonly '--color-background-subtle': "#FAFAFA";
1140
- readonly '--color-background-frame': "#9CA3AF";
1141
- readonly '--color-border-default': "#E8E9EB";
1142
- readonly '--color-border-subtle': "#F3F4F6";
1143
- readonly '--color-border-strong': "#D1D5DB";
1144
- readonly '--color-border-prominent': "#9CA3AF";
1145
- readonly '--color-border-focus': "#5048E5";
220
+ readonly '--color-background-subtle': "#F9F6F3";
221
+ readonly '--color-background-frame': "#A29F9D";
222
+ readonly '--color-border-prominent': "#A29F9D";
223
+ readonly '--color-border-focus': "#1072CB";
1146
224
  readonly '--color-interactive-hover': "rgba(55, 65, 81, 0.04)";
1147
225
  readonly '--color-interactive-focus': "rgba(55, 65, 81, 0.12)";
1148
226
  readonly '--color-interactive-active': "rgba(55, 65, 81, 0.16)";
@@ -1173,7 +251,7 @@ declare const lightThemeCSSVars: {
1173
251
  readonly '--color-result-degrade-dark': "#b30000";
1174
252
  readonly '--color-result-inconclusive': "#9E9A97";
1175
253
  readonly '--color-result-inconclusive-light': "rgba(158, 154, 151, 0.12)";
1176
- readonly '--color-result-neutral': "#6B7280";
254
+ readonly '--color-result-neutral': "#72716F";
1177
255
  readonly '--color-on-result-improve': "#FFFFFF";
1178
256
  readonly '--color-on-result-degrade': "#FFFFFF";
1179
257
  readonly '--color-on-result-inconclusive': "#FFFFFF";
@@ -1187,18 +265,18 @@ declare const lightThemeCSSVars: {
1187
265
  readonly '--color-data-8': "#90C987";
1188
266
  readonly '--color-data-9': "#CAACCB";
1189
267
  readonly '--color-data-10': "#EE8026";
1190
- readonly '--color-text-link-hover': "#3832A0";
268
+ readonly '--color-text-link-hover': "#135AA8";
1191
269
  readonly '--color-surface-overlay': "#FFFFFF";
1192
- readonly '--color-surface-input': "#FAFAFA";
1193
- readonly '--color-border-input': "#D1D5DB";
1194
- readonly '--color-border-input-hover': "#9CA3AF";
1195
- readonly '--color-border-input-focus': "#5048E5";
270
+ readonly '--color-surface-input': "#F9F6F3";
271
+ readonly '--color-border-input': "#D4D1CE";
272
+ readonly '--color-border-input-hover': "#A29F9D";
273
+ readonly '--color-border-input-focus': "#1072CB";
1196
274
  readonly '--color-border-input-error': "#D14343";
1197
275
  readonly '--color-hairline-subtle': "rgba(0, 0, 0, 0.06)";
1198
276
  readonly '--color-hairline-default': "rgba(0, 0, 0, 0.09)";
1199
277
  readonly '--color-hairline-strong': "rgba(0, 0, 0, 0.14)";
1200
278
  readonly '--color-interactive-disabled-text': "rgba(55, 65, 81, 0.26)";
1201
- readonly '--color-avatar-background': "#6B7280";
279
+ readonly '--color-avatar-background': "#72716F";
1202
280
  readonly '--color-avatar-text': "#FFFFFF";
1203
281
  };
1204
282
  declare const darkThemeCSSVars: {
@@ -1240,35 +318,31 @@ declare const darkThemeCSSVars: {
1240
318
  readonly '--color-status-warning-subtle': "rgba(249, 180, 21, 0.12)";
1241
319
  readonly '--color-status-info': "#2196F3";
1242
320
  readonly '--color-status-info-subtle': "rgba(33, 150, 243, 0.12)";
1243
- readonly '--color-status-error-vivid': "#FF4757";
1244
- readonly '--color-status-error-vivid-light': "#FF6070";
1245
- readonly '--color-status-error-vivid-dark': "#C42539";
321
+ readonly '--color-status-error-vivid': "#D14343";
322
+ readonly '--color-status-error-vivid-light': "#E05254";
323
+ readonly '--color-status-error-vivid-dark': "#A4221C";
1246
324
  readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
1247
- readonly '--color-text-primary': "#F3F4F6";
1248
- readonly '--color-text-secondary': "#9CA3AF";
1249
- readonly '--color-text-tertiary': "#6B7280";
325
+ readonly '--color-text-primary': "#F9F6F3";
326
+ readonly '--color-text-secondary': "#A29F9D";
327
+ readonly '--color-text-tertiary': "#888684";
1250
328
  readonly '--color-text-disabled': "rgba(255, 255, 255, 0.38)";
1251
- readonly '--color-text-inverse': "#111827";
329
+ readonly '--color-text-inverse': "#1C1916";
1252
330
  readonly '--color-text-link': "#828DF8";
1253
331
  readonly '--color-surface-base': "#252321";
1254
332
  readonly '--color-surface-elevated': "#2C2A28";
1255
333
  readonly '--color-surface-raised': "#31302F";
1256
- readonly '--color-surface-inset': "#13100D";
1257
334
  readonly '--color-background-base': "#1C1916";
1258
335
  readonly '--color-background-default': "#252321";
1259
336
  readonly '--color-background-subtle': "#2C2A28";
1260
337
  readonly '--color-background-frame': "#100D0A";
1261
- readonly '--color-border-default': "#1F1F1F";
1262
- readonly '--color-border-subtle': "#1C1C1C";
1263
- readonly '--color-border-strong': "#2C2C2C";
1264
- readonly '--color-border-prominent': "#3C3C3C";
338
+ readonly '--color-border-prominent': "#424140";
1265
339
  readonly '--color-border-focus': "#828DF8";
1266
340
  readonly '--color-interactive-hover': "rgba(255, 255, 255, 0.04)";
1267
341
  readonly '--color-interactive-focus': "rgba(255, 255, 255, 0.12)";
1268
342
  readonly '--color-interactive-active': "rgba(255, 255, 255, 0.16)";
1269
343
  readonly '--color-interactive-selected': "rgba(255, 255, 255, 0.08)";
1270
344
  readonly '--color-interactive-disabled': "rgba(255, 255, 255, 0.12)";
1271
- readonly '--color-divider': "#1F1F1F";
345
+ readonly '--color-divider': "rgba(255, 255, 255, 0.09)";
1272
346
  readonly '--color-brand-primary-hover': "#FFA063";
1273
347
  readonly '--color-brand-primary-active': "#FFC7A2";
1274
348
  readonly '--color-brand-secondary-hover': "#2697B7";
@@ -1293,7 +367,7 @@ declare const darkThemeCSSVars: {
1293
367
  readonly '--color-result-degrade-dark': "#b30000";
1294
368
  readonly '--color-result-inconclusive': "#9E9A97";
1295
369
  readonly '--color-result-inconclusive-light': "rgba(158, 154, 151, 0.16)";
1296
- readonly '--color-result-neutral': "#9CA3AF";
370
+ readonly '--color-result-neutral': "#A29F9D";
1297
371
  readonly '--color-on-result-improve': "#FFFFFF";
1298
372
  readonly '--color-on-result-degrade': "#FFFFFF";
1299
373
  readonly '--color-on-result-inconclusive': "#FFFFFF";
@@ -1307,18 +381,18 @@ declare const darkThemeCSSVars: {
1307
381
  readonly '--color-data-8': "#90C987";
1308
382
  readonly '--color-data-9': "#CAACCB";
1309
383
  readonly '--color-data-10': "#EE8026";
1310
- readonly '--color-text-link-hover': "#60A5FA";
384
+ readonly '--color-text-link-hover': "#3CA8FF";
1311
385
  readonly '--color-surface-overlay': "#373635";
1312
386
  readonly '--color-surface-input': "#2C2A28";
1313
- readonly '--color-border-input': "#4B5563";
1314
- readonly '--color-border-input-hover': "#6B7280";
387
+ readonly '--color-border-input': "#5A5958";
388
+ readonly '--color-border-input-hover': "#72716F";
1315
389
  readonly '--color-border-input-focus': "#828DF8";
1316
- readonly '--color-border-input-error': "#EF4444";
1317
- readonly '--color-hairline-subtle': "rgba(255, 255, 255, 0.06)";
1318
- readonly '--color-hairline-default': "rgba(255, 255, 255, 0.09)";
1319
- readonly '--color-hairline-strong': "rgba(255, 255, 255, 0.14)";
390
+ readonly '--color-border-input-error': "#E05254";
391
+ readonly '--color-hairline-subtle': "rgba(255, 255, 255, 0.10)";
392
+ readonly '--color-hairline-default': "rgba(255, 255, 255, 0.15)";
393
+ readonly '--color-hairline-strong': "rgba(255, 255, 255, 0.22)";
1320
394
  readonly '--color-interactive-disabled-text': "rgba(255, 255, 255, 0.26)";
1321
- readonly '--color-avatar-background': "#4B5563";
395
+ readonly '--color-avatar-background': "#5A5958";
1322
396
  readonly '--color-avatar-text': "#FFFFFF";
1323
397
  };
1324
398
  declare function getThemeCSSVars(mode: ThemeMode): {
@@ -1360,29 +434,25 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1360
434
  readonly '--color-status-warning-subtle': "#FFF7DD";
1361
435
  readonly '--color-status-info': "#2196F3";
1362
436
  readonly '--color-status-info-subtle': "#EFF8FF";
1363
- readonly '--color-status-error-vivid': "#FF4757";
1364
- readonly '--color-status-error-vivid-light': "#FF6070";
1365
- readonly '--color-status-error-vivid-dark': "#C42539";
437
+ readonly '--color-status-error-vivid': "#D14343";
438
+ readonly '--color-status-error-vivid-light': "#E05254";
439
+ readonly '--color-status-error-vivid-dark': "#A4221C";
1366
440
  readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
1367
441
  readonly '--color-text-primary': "#121828";
1368
442
  readonly '--color-text-secondary': "#65748B";
1369
- readonly '--color-text-tertiary': "#9CA3AF";
443
+ readonly '--color-text-tertiary': "#A29F9D";
1370
444
  readonly '--color-text-disabled': "rgba(55, 65, 81, 0.48)";
1371
445
  readonly '--color-text-inverse': "#FFFFFF";
1372
- readonly '--color-text-link': "#5048E5";
446
+ readonly '--color-text-link': "#1072CB";
1373
447
  readonly '--color-surface-base': "#FFFFFF";
1374
- readonly '--color-surface-elevated': "#FAFAFA";
1375
- readonly '--color-surface-raised': "#F3F4F6";
1376
- readonly '--color-surface-inset': "#D1D5DB";
448
+ readonly '--color-surface-elevated': "#F9F6F3";
449
+ readonly '--color-surface-raised': "#EDEAE7";
1377
450
  readonly '--color-background-base': "#EBEBEB";
1378
451
  readonly '--color-background-default': "#FFFFFF";
1379
- readonly '--color-background-subtle': "#FAFAFA";
1380
- readonly '--color-background-frame': "#9CA3AF";
1381
- readonly '--color-border-default': "#E8E9EB";
1382
- readonly '--color-border-subtle': "#F3F4F6";
1383
- readonly '--color-border-strong': "#D1D5DB";
1384
- readonly '--color-border-prominent': "#9CA3AF";
1385
- readonly '--color-border-focus': "#5048E5";
452
+ readonly '--color-background-subtle': "#F9F6F3";
453
+ readonly '--color-background-frame': "#A29F9D";
454
+ readonly '--color-border-prominent': "#A29F9D";
455
+ readonly '--color-border-focus': "#1072CB";
1386
456
  readonly '--color-interactive-hover': "rgba(55, 65, 81, 0.04)";
1387
457
  readonly '--color-interactive-focus': "rgba(55, 65, 81, 0.12)";
1388
458
  readonly '--color-interactive-active': "rgba(55, 65, 81, 0.16)";
@@ -1413,7 +483,7 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1413
483
  readonly '--color-result-degrade-dark': "#b30000";
1414
484
  readonly '--color-result-inconclusive': "#9E9A97";
1415
485
  readonly '--color-result-inconclusive-light': "rgba(158, 154, 151, 0.12)";
1416
- readonly '--color-result-neutral': "#6B7280";
486
+ readonly '--color-result-neutral': "#72716F";
1417
487
  readonly '--color-on-result-improve': "#FFFFFF";
1418
488
  readonly '--color-on-result-degrade': "#FFFFFF";
1419
489
  readonly '--color-on-result-inconclusive': "#FFFFFF";
@@ -1427,18 +497,18 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1427
497
  readonly '--color-data-8': "#90C987";
1428
498
  readonly '--color-data-9': "#CAACCB";
1429
499
  readonly '--color-data-10': "#EE8026";
1430
- readonly '--color-text-link-hover': "#3832A0";
500
+ readonly '--color-text-link-hover': "#135AA8";
1431
501
  readonly '--color-surface-overlay': "#FFFFFF";
1432
- readonly '--color-surface-input': "#FAFAFA";
1433
- readonly '--color-border-input': "#D1D5DB";
1434
- readonly '--color-border-input-hover': "#9CA3AF";
1435
- readonly '--color-border-input-focus': "#5048E5";
502
+ readonly '--color-surface-input': "#F9F6F3";
503
+ readonly '--color-border-input': "#D4D1CE";
504
+ readonly '--color-border-input-hover': "#A29F9D";
505
+ readonly '--color-border-input-focus': "#1072CB";
1436
506
  readonly '--color-border-input-error': "#D14343";
1437
507
  readonly '--color-hairline-subtle': "rgba(0, 0, 0, 0.06)";
1438
508
  readonly '--color-hairline-default': "rgba(0, 0, 0, 0.09)";
1439
509
  readonly '--color-hairline-strong': "rgba(0, 0, 0, 0.14)";
1440
510
  readonly '--color-interactive-disabled-text': "rgba(55, 65, 81, 0.26)";
1441
- readonly '--color-avatar-background': "#6B7280";
511
+ readonly '--color-avatar-background': "#72716F";
1442
512
  readonly '--color-avatar-text': "#FFFFFF";
1443
513
  } | {
1444
514
  readonly '--color-brand-primary-rgb': "255, 121, 0";
@@ -1479,35 +549,31 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1479
549
  readonly '--color-status-warning-subtle': "rgba(249, 180, 21, 0.12)";
1480
550
  readonly '--color-status-info': "#2196F3";
1481
551
  readonly '--color-status-info-subtle': "rgba(33, 150, 243, 0.12)";
1482
- readonly '--color-status-error-vivid': "#FF4757";
1483
- readonly '--color-status-error-vivid-light': "#FF6070";
1484
- readonly '--color-status-error-vivid-dark': "#C42539";
552
+ readonly '--color-status-error-vivid': "#D14343";
553
+ readonly '--color-status-error-vivid-light': "#E05254";
554
+ readonly '--color-status-error-vivid-dark': "#A4221C";
1485
555
  readonly '--color-status-error-vivid-subtle': "rgba(255, 71, 87, 0.12)";
1486
- readonly '--color-text-primary': "#F3F4F6";
1487
- readonly '--color-text-secondary': "#9CA3AF";
1488
- readonly '--color-text-tertiary': "#6B7280";
556
+ readonly '--color-text-primary': "#F9F6F3";
557
+ readonly '--color-text-secondary': "#A29F9D";
558
+ readonly '--color-text-tertiary': "#888684";
1489
559
  readonly '--color-text-disabled': "rgba(255, 255, 255, 0.38)";
1490
- readonly '--color-text-inverse': "#111827";
560
+ readonly '--color-text-inverse': "#1C1916";
1491
561
  readonly '--color-text-link': "#828DF8";
1492
562
  readonly '--color-surface-base': "#252321";
1493
563
  readonly '--color-surface-elevated': "#2C2A28";
1494
564
  readonly '--color-surface-raised': "#31302F";
1495
- readonly '--color-surface-inset': "#13100D";
1496
565
  readonly '--color-background-base': "#1C1916";
1497
566
  readonly '--color-background-default': "#252321";
1498
567
  readonly '--color-background-subtle': "#2C2A28";
1499
568
  readonly '--color-background-frame': "#100D0A";
1500
- readonly '--color-border-default': "#1F1F1F";
1501
- readonly '--color-border-subtle': "#1C1C1C";
1502
- readonly '--color-border-strong': "#2C2C2C";
1503
- readonly '--color-border-prominent': "#3C3C3C";
569
+ readonly '--color-border-prominent': "#424140";
1504
570
  readonly '--color-border-focus': "#828DF8";
1505
571
  readonly '--color-interactive-hover': "rgba(255, 255, 255, 0.04)";
1506
572
  readonly '--color-interactive-focus': "rgba(255, 255, 255, 0.12)";
1507
573
  readonly '--color-interactive-active': "rgba(255, 255, 255, 0.16)";
1508
574
  readonly '--color-interactive-selected': "rgba(255, 255, 255, 0.08)";
1509
575
  readonly '--color-interactive-disabled': "rgba(255, 255, 255, 0.12)";
1510
- readonly '--color-divider': "#1F1F1F";
576
+ readonly '--color-divider': "rgba(255, 255, 255, 0.09)";
1511
577
  readonly '--color-brand-primary-hover': "#FFA063";
1512
578
  readonly '--color-brand-primary-active': "#FFC7A2";
1513
579
  readonly '--color-brand-secondary-hover': "#2697B7";
@@ -1532,7 +598,7 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1532
598
  readonly '--color-result-degrade-dark': "#b30000";
1533
599
  readonly '--color-result-inconclusive': "#9E9A97";
1534
600
  readonly '--color-result-inconclusive-light': "rgba(158, 154, 151, 0.16)";
1535
- readonly '--color-result-neutral': "#9CA3AF";
601
+ readonly '--color-result-neutral': "#A29F9D";
1536
602
  readonly '--color-on-result-improve': "#FFFFFF";
1537
603
  readonly '--color-on-result-degrade': "#FFFFFF";
1538
604
  readonly '--color-on-result-inconclusive': "#FFFFFF";
@@ -1546,18 +612,18 @@ declare function getThemeCSSVars(mode: ThemeMode): {
1546
612
  readonly '--color-data-8': "#90C987";
1547
613
  readonly '--color-data-9': "#CAACCB";
1548
614
  readonly '--color-data-10': "#EE8026";
1549
- readonly '--color-text-link-hover': "#60A5FA";
615
+ readonly '--color-text-link-hover': "#3CA8FF";
1550
616
  readonly '--color-surface-overlay': "#373635";
1551
617
  readonly '--color-surface-input': "#2C2A28";
1552
- readonly '--color-border-input': "#4B5563";
1553
- readonly '--color-border-input-hover': "#6B7280";
618
+ readonly '--color-border-input': "#5A5958";
619
+ readonly '--color-border-input-hover': "#72716F";
1554
620
  readonly '--color-border-input-focus': "#828DF8";
1555
- readonly '--color-border-input-error': "#EF4444";
1556
- readonly '--color-hairline-subtle': "rgba(255, 255, 255, 0.06)";
1557
- readonly '--color-hairline-default': "rgba(255, 255, 255, 0.09)";
1558
- readonly '--color-hairline-strong': "rgba(255, 255, 255, 0.14)";
621
+ readonly '--color-border-input-error': "#E05254";
622
+ readonly '--color-hairline-subtle': "rgba(255, 255, 255, 0.10)";
623
+ readonly '--color-hairline-default': "rgba(255, 255, 255, 0.15)";
624
+ readonly '--color-hairline-strong': "rgba(255, 255, 255, 0.22)";
1559
625
  readonly '--color-interactive-disabled-text': "rgba(255, 255, 255, 0.26)";
1560
- readonly '--color-avatar-background': "#4B5563";
626
+ readonly '--color-avatar-background': "#5A5958";
1561
627
  readonly '--color-avatar-text': "#FFFFFF";
1562
628
  };
1563
629
  declare const gluestackConfig: {
@@ -1630,14 +696,165 @@ declare const gluestackConfig: {
1630
696
  type ThemeConfig = typeof gluestackConfig;
1631
697
 
1632
698
  /**
1633
- * Neumorphic Shadow Utilities
699
+ * Surface MATERIALS — the treatments layered on top of the flat grey ramp.
700
+ *
701
+ * The ramp says how deep a plane sits. This says what it is made of. Two
702
+ * materials, deliberately: a matte PAPER sheet for hero surfaces, and a recessed
703
+ * INSET WELL for grouped or awaiting-data regions.
704
+ *
705
+ * SCOPE, and it is a hard rule rather than a preference: paper goes on hero
706
+ * surfaces only — the live card, the LOAD/verdict chip, the rest hero. The
707
+ * "everything is a paper card" look is explicitly NOT the model; it was an
708
+ * over-application built to find the ceiling. There are no LEVELS of paper. One
709
+ * treatment, used sparingly, or the texture stops meaning anything.
710
+ *
711
+ * Second hard rule: paper fills take DEEP/MUTED tones only (a ramp step, or a
712
+ * categorical `dark` variant). Vivid and neon colours are ink ON paper — never
713
+ * the paper itself.
714
+ *
715
+ * PLATFORM: `backgroundImage` and multi-layer `boxShadow` are web/RNW only. On
716
+ * native these are ignored and the surface falls back to its flat fill, which is
717
+ * why every material here keeps `backgroundColor` load-bearing on its own. A
718
+ * material must never be the only thing carrying meaning.
719
+ *
720
+ * ── THE TONAL FILL IS GONE (VW-99, S-6 wall calibration) ───────────────────
721
+ *
722
+ * `paperSheet` used to carry a vertical ΔL* 3 gradient, sized "just under seen
723
+ * as a gradient". On the wall panel at ~3 m it could not be told from a flat
724
+ * sheet of the same tone, and the full material still read as — the operator's
725
+ * words — "a flat digital rectangle". It failed its own stated purpose, which
726
+ * was precisely to stop that.
727
+ *
728
+ * Raising it was not available. The design ceiling is ~ΔL* 4 (past that it reads
729
+ * decorative, which the exploration rejected), and the same run showed why the
730
+ * headroom would not have helped: the 0.025 ELEVATION step — a comparable ΔL*
731
+ * — was called instantly, because it sits at a hard edge between two flat
732
+ * fields. The fill spread the same amount smoothly over ~300 px, where vision is
733
+ * genuinely poor. It is a spatial-frequency problem, not an amplitude one, so
734
+ * the band between "invisible" and "decorative" may simply not exist here.
735
+ *
736
+ * ── AND THE DITHER WENT WITH IT (VW-99 run 2) ──────────────────────────────
737
+ *
738
+ * `ditherTile` was held back one run on the grounds that "probably dead weight"
739
+ * is not a measurement. Run 1 could not measure it: with the fill invisible
740
+ * there was no gradient to band, so the panel returned a guaranteed clean sheet.
741
+ *
742
+ * Run 2 settled it by adding a hand-quantised REFERENCE beside the smooth
743
+ * control — the same tone span drawn as five hard-edged 1-level steps, which is
744
+ * what the artefact looks like when it happens. The reference banded plainly and
745
+ * the smooth gradient did not. So the panel can resolve banding; this render
746
+ * path simply does not produce it. A mitigation for an artefact that does not
747
+ * occur is cost with no benefit, and it is gone.
748
+ *
749
+ * That is a claim about THIS display, which is the one the product ships on and
750
+ * the reason `paperSheet` is hero-surface-only. A phone is a separate question.
751
+ *
752
+ * Kept: grain, rim-light, contact shadow.
753
+ *
754
+ * See sources/design/surface-system-north-star.md §4 and
755
+ * sources/runbooks/VW-99-depth-wall-calibration.md.
756
+ */
757
+
758
+ /**
759
+ * Grain opacity for a tone, scaled by perceived brightness.
760
+ *
761
+ * A fixed opacity reads hot on a dark plane and vanishes on a bright one, so
762
+ * darker tones get a whisper and brighter tones keep full texture. Anchored so a
763
+ * dark chip (lum ≈ 0.13) lands ≈ 0.06 and a bright bar (lum ≈ 0.58) lands ≈ 0.20.
764
+ * Above roughly 0.05α on a mid tone it starts reading as "dirty" rather than
765
+ * matte, which is what the clamp is protecting.
766
+ *
767
+ * This is the ONE curve all grain goes through — a card and a bar carry
768
+ * proportional, not identical, texture. That is what makes them read as the same
769
+ * material.
770
+ */
771
+ declare function grainOpacityForTone(baseColor: string): number;
772
+ /**
773
+ * The matte grain tile as a `backgroundImage` url — one shared `feTurbulence`
774
+ * fractal-noise tile, painted once, NEVER animated. Pair with
775
+ * `backgroundColor: baseColor`.
776
+ */
777
+ declare function grainForTone(baseColor: string): string;
778
+ /**
779
+ * A matte PAPER hero sheet: brightness-scaled grain + a crisp top rim-light +
780
+ * one soft contact shadow.
781
+ *
782
+ * The contact shadow is the ONE place a drop-shadow is still correct on a dark
783
+ * surface: it is large, soft, and describes a sheet lying on a plane rather than
784
+ * trying to encode hierarchy. Inline depth is the hairline's job.
785
+ *
786
+ * Defaults to `surface-raised` so a same-toned card laid inside reads as one
787
+ * continuous sheet rather than a seam.
788
+ *
789
+ * THE RIM-LIGHT IS A HAIRLINE. Run 2 of VW-99 called it "weak at distance" on
790
+ * both the card and the hero sheet, and the reason is visible in the number: it
791
+ * was `rgba(255,255,255,0.10)`, a 1px white line on a dark plane — physically
792
+ * the same cue as `hairline-*`, but set BELOW `hairline-default`, which the same
793
+ * run had just had to raise twice. It is not a subtler species of edge, it was
794
+ * simply mistuned. Raised to `0.20`, between `hairline-default` and
795
+ * `hairline-strong`: this edge defines a hero surface, so it earns more than the
796
+ * default separator, and unlike a separator there is no fallback behind it.
797
+ *
798
+ * Deliberately NOT wired to the token, though the values now agree in spirit: a
799
+ * box-shadow rim and a border hairline are retuned by different evidence, and
800
+ * coupling them means a hairline run silently restyles every hero sheet.
801
+ *
802
+ * HERO SURFACES ONLY, MUTED TONES ONLY — see the module header.
803
+ */
804
+ declare function paperSheet(tone?: string): ViewStyle;
805
+ /**
806
+ * A recessed INSET WELL: a tone pressed BELOW the surrounding plane, cut in by an
807
+ * inner top shadow with a faint light line on the floor.
808
+ *
809
+ * The bottom rim is the load-bearing half. A dark inset alone just reads as a
810
+ * darker rectangle; it is the light catching the floor that says "this is below
811
+ * the surface" — which is why the treatment survives at 16px where a full paper
812
+ * treatment does not.
813
+ *
814
+ * The floor light was `0.04` and is now `0.12`, chosen on the wall in VW-99 run
815
+ * 2 against a `.04`-vs-`.12`-vs-none forced choice. Worth recording that `.04`
816
+ * was NOT invisible — the no-line decoy was correctly rejected and both real
817
+ * values were seen, so this is a preference between two working values, not a
818
+ * rescue. The rim-light next door was a genuine miss; this one was only thin.
819
+ *
820
+ * Note this is a MATERIAL, and independent of the surface LEVEL named `inset`
821
+ * that was retired in TD-07.14. A well is something you apply; a level is
822
+ * somewhere you sit.
823
+ */
824
+ declare function insetWell(tone?: string): ViewStyle;
825
+ /**
826
+ * Paper for a COLORED BAR — the same material as {@link paperSheet}, tuned for a
827
+ * small saturated element: grain + top rim-light + a contact shadow cast past the
828
+ * bar's leading edge, so a filled bar reads as a physical block that has travelled.
829
+ *
830
+ * No tonal fill or dither here: a bar is too narrow for a ΔL* 3 gradient to read,
831
+ * and too narrow to band.
1634
832
  *
1635
- * Neumorphism creates soft, extruded UI using dual opposing shadows.
1636
- * - Light source assumed from top-left
1637
- * - Raised elements: dark shadow bottom-right, light highlight top-left
1638
- * - Pressed elements: inverted with `inset` shadows
833
+ * `flip` = a vertically mirrored (`scaleY(-1)`) plot, i.e. the `down` wing of a
834
+ * diverging chart. The contact shadow's y-offset is pre-inverted so the mirror
835
+ * lands it pointing AWAY from the shared axis rather than up across it, and the
836
+ * top rim-light is DROPPED mirrored it would sit on the axis edge and read
837
+ * wrong, so grain and shadow carry the material alone.
1639
838
  */
839
+ declare function barPaper(color: string, flip?: boolean): ViewStyle;
1640
840
 
841
+ /**
842
+ * Colour math shared by the depth system.
843
+ *
844
+ * This file used to be `shadows.ts` and shipped a neumorphic shadow builder —
845
+ * dual opposing shadows, dark bottom-right and light top-left. That was removed
846
+ * in TD-07.16. Neumorphism needs a mid-tone background (roughly 75-90%
847
+ * lightness) so BOTH shadows have somewhere to fall; our surfaces sit near 10%,
848
+ * which leaves the dark half nothing to fall onto. It collapsed to a one-sided
849
+ * rim light and read as noise on the wall.
850
+ *
851
+ * Inline depth is a hairline now (`hairline-*`, self-normalising alpha), texture
852
+ * is `materials.ts`, and drop-shadow survives only for genuinely FLOATING
853
+ * things — see `elevation.ts`.
854
+ *
855
+ * What is left here is the HSV/hex maths that `elevation.ts` still uses to
856
+ * derive rim and shadow tints from whatever surface colour it is handed.
857
+ */
1641
858
  /**
1642
859
  * Parse a hex color to RGB values (0-255).
1643
860
  * Supports both #RGB and #RRGGBB formats.
@@ -1698,134 +915,10 @@ declare function getHoverColors(bgColor: string, intensity?: 'subtle' | 'medium'
1698
915
  */
1699
916
  declare function isDark(hex: string): boolean;
1700
917
  /**
1701
- * Shadow configuration for different surface colors.
1702
- * Each surface needs calibrated light/dark shadow colors.
1703
- *
1704
- * - dark: soft shadow for depth (bottom-right)
1705
- * - light: sharp rim highlight (top-left) - higher opacity for crisp edge
1706
- * - darker: deeper shadow for pressed/inset states
918
+ * Shadow strength tiers. Retained because `elevation.ts` keys its level table on
919
+ * them; the neumorphic shadow BUILDERS that used to live here are gone.
1707
920
  */
1708
- declare const shadowColors: {
1709
- charcoal: {
1710
- dark: string;
1711
- light: string;
1712
- darker: string;
1713
- };
1714
- neutralDark: {
1715
- dark: string;
1716
- light: string;
1717
- darker: string;
1718
- };
1719
- neutralLight: {
1720
- dark: string;
1721
- light: string;
1722
- darker: string;
1723
- };
1724
- };
1725
921
  type ShadowIntensity = 'subtle' | 'medium' | 'strong';
1726
- type ShadowSurface = keyof typeof shadowColors;
1727
- /**
1728
- * Creates a raised (elevated) neumorphic shadow.
1729
- * Element appears to float above the surface.
1730
- *
1731
- * Uses a soft dark shadow (bottom-right) and a sharp rim light (top-left).
1732
- */
1733
- declare function createRaisedShadow(surface?: ShadowSurface, intensity?: ShadowIntensity): ViewStyle;
1734
- /**
1735
- * Creates a pressed (inset) neumorphic shadow.
1736
- * Element appears pushed into the surface.
1737
- *
1738
- * Uses a soft dark inset shadow (top-left) and a thin sharp rim light (bottom-right).
1739
- */
1740
- declare function createPressedShadow(surface?: ShadowSurface, intensity?: ShadowIntensity): ViewStyle;
1741
- /**
1742
- * Creates a flat (no shadow) style for hover states.
1743
- */
1744
- declare function createFlatShadow(): ViewStyle;
1745
- /**
1746
- * Creates a hover shadow for raised elements.
1747
- * Reduces shadow depth but keeps a subtle rim light to maintain visual boundary.
1748
- */
1749
- declare function createRaisedHoverShadow(surface?: ShadowSurface, intensity?: ShadowIntensity): ViewStyle;
1750
- /**
1751
- * Creates a hover shadow for pressed elements.
1752
- * Reduces shadow depth but keeps a subtle rim light to maintain visual boundary.
1753
- */
1754
- declare function createPressedHoverShadow(surface?: ShadowSurface, intensity?: ShadowIntensity): ViewStyle;
1755
- /**
1756
- * Pre-built shadow presets for common use cases.
1757
- */
1758
- declare const neumorphicShadows: {
1759
- charcoal: {
1760
- raised: {
1761
- subtle: ViewStyle;
1762
- medium: ViewStyle;
1763
- strong: ViewStyle;
1764
- };
1765
- raisedHover: {
1766
- subtle: ViewStyle;
1767
- medium: ViewStyle;
1768
- strong: ViewStyle;
1769
- };
1770
- pressed: {
1771
- subtle: ViewStyle;
1772
- medium: ViewStyle;
1773
- strong: ViewStyle;
1774
- };
1775
- pressedHover: {
1776
- subtle: ViewStyle;
1777
- medium: ViewStyle;
1778
- strong: ViewStyle;
1779
- };
1780
- flat: ViewStyle;
1781
- };
1782
- neutralDark: {
1783
- raised: {
1784
- subtle: ViewStyle;
1785
- medium: ViewStyle;
1786
- strong: ViewStyle;
1787
- };
1788
- raisedHover: {
1789
- subtle: ViewStyle;
1790
- medium: ViewStyle;
1791
- strong: ViewStyle;
1792
- };
1793
- pressed: {
1794
- subtle: ViewStyle;
1795
- medium: ViewStyle;
1796
- strong: ViewStyle;
1797
- };
1798
- pressedHover: {
1799
- subtle: ViewStyle;
1800
- medium: ViewStyle;
1801
- strong: ViewStyle;
1802
- };
1803
- flat: ViewStyle;
1804
- };
1805
- neutralLight: {
1806
- raised: {
1807
- subtle: ViewStyle;
1808
- medium: ViewStyle;
1809
- strong: ViewStyle;
1810
- };
1811
- raisedHover: {
1812
- subtle: ViewStyle;
1813
- medium: ViewStyle;
1814
- strong: ViewStyle;
1815
- };
1816
- pressed: {
1817
- subtle: ViewStyle;
1818
- medium: ViewStyle;
1819
- strong: ViewStyle;
1820
- };
1821
- pressedHover: {
1822
- subtle: ViewStyle;
1823
- medium: ViewStyle;
1824
- strong: ViewStyle;
1825
- };
1826
- flat: ViewStyle;
1827
- };
1828
- };
1829
922
 
1830
923
  /**
1831
924
  * TypeScript mirror of css-property-manifest.schema.json.
@@ -1967,9 +1060,9 @@ interface ThemePresetColors {
1967
1060
  'background-base'?: string;
1968
1061
  'background-default'?: string;
1969
1062
  'background-subtle'?: string;
1970
- 'border-default'?: string;
1971
- 'border-subtle'?: string;
1972
- 'border-strong'?: string;
1063
+ 'hairline-default'?: string;
1064
+ 'hairline-subtle'?: string;
1065
+ 'hairline-strong'?: string;
1973
1066
  'border-focus'?: string;
1974
1067
  'divider'?: string;
1975
1068
  [key: `${string}`]: string | undefined;
@@ -2022,4 +1115,4 @@ declare const defaultPreset: ThemePreset;
2022
1115
  */
2023
1116
  declare const audiobookPreset: ThemePreset;
2024
1117
 
2025
- export { CATEGORICAL_CVD_SAFE_MAX, type CategoricalVariant, type ComponentType, type CssPropertyEntry, type CssPropertyManifest, type ElevationConfig, type ElevationLevel, type GlowIntensity, type GradientStyle, type ManifestValidationResult, PRESSED_ELEVATION_LEVEL, type ShadowIntensity, type ShadowSurface, type ThemeConfig, type ThemeMode, type ThemePreset, type ThemePresetColors, type ThemePresetFonts, type ThemePresetRadii, type ThemePresetShadows, ThemeProvider, type ThemeProviderMode, type ThemeProviderProps, type VariantAxes, type VariantOverride, applyThemePreset, audiobookPreset, backgroundFrameDark, bestTextColor, buttonSizes, categoricalPalette, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darkThemeCSSVars, darken, defaultPreset, discreteRainbow, divergingScale, elevationSystem, getBaseSurfaceColor, getCategoricalColor, getDiscreteRainbowColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getPressedRecessShadow, getSemanticColors, getThemeCSSVars, getValidatedElevation, gluestackConfig, hexToRgb, hsvToRgb, isCssPropertyManifest, isDark, lightThemeCSSVars, lighten, linearGradient, neumorphicShadows, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveRamps, primitiveShadows, primitiveSpacing, primitiveTypography, primitiveZIndex, resolveColor, rgbToHex, rgbToHsv, semanticColorsDark, semanticColorsLight, semanticTypography, sequentialEffort, shadowColors, surfaceGradient, surfaceRampDark, validateCssPropertyManifest };
1118
+ export { type ComponentType, type CssPropertyEntry, type CssPropertyManifest, type ElevationConfig, type ElevationLevel, FLOATING_ELEVATION_MIN, type GlowIntensity, type GradientStyle, type ManifestValidationResult, PRESSED_ELEVATION_LEVEL, type ShadowIntensity, type ThemeConfig, ThemeMode, type ThemePreset, type ThemePresetColors, type ThemePresetFonts, type ThemePresetRadii, type ThemePresetShadows, ThemeProvider, type ThemeProviderMode, type ThemeProviderProps, type VariantAxes, type VariantOverride, applyThemePreset, audiobookPreset, barPaper, componentElevationRanges, darkThemeCSSVars, darken, defaultPreset, elevationSystem, getBaseSurfaceColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getPressedRecessShadow, getSemanticColors, getThemeCSSVars, getValidatedElevation, gluestackConfig, grainForTone, grainOpacityForTone, hexToRgb, hsvToRgb, insetWell, isCssPropertyManifest, isDark, lightThemeCSSVars, lighten, linearGradient, paperSheet, resolveColor, rgbToHex, rgbToHsv, surfaceGradient, validateCssPropertyManifest };