@titan-design/react-ui 0.5.0 → 0.6.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.
- package/dist/bodymap.js +232 -185
- package/dist/bodymap.js.map +1 -1
- package/dist/bodymap.mjs +232 -185
- package/dist/bodymap.mjs.map +1 -1
- package/dist/index.d.mts +164 -8
- package/dist/index.d.ts +164 -8
- package/dist/index.js +835 -342
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +816 -343
- package/dist/index.mjs.map +1 -1
- package/dist/pages.js +570 -522
- package/dist/pages.js.map +1 -1
- package/dist/pages.mjs +570 -522
- package/dist/pages.mjs.map +1 -1
- package/dist/theme/index.d.mts +461 -199
- package/dist/theme/index.d.ts +461 -199
- package/dist/theme/index.js +311 -97
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +303 -98
- package/dist/theme/index.mjs.map +1 -1
- package/dist/theme/tokens-css.js +148 -139
- package/dist/theme/tokens-css.js.map +1 -1
- package/dist/theme/tokens-css.mjs +148 -139
- package/dist/theme/tokens-css.mjs.map +1 -1
- package/package.json +3 -1
- package/src/components/custom/DateTime/DateTime.stories.tsx +82 -6
- package/src/components/custom/DateTime/DateTime.test.tsx +29 -3
- package/src/components/custom/DateTime/DateTime.tsx +55 -15
- package/src/components/custom/Gauge/Gauge.test.tsx +2 -2
- package/src/components/custom/Gauge/Gauge.tsx +6 -3
- package/src/components/custom/Scatter/Scatter.tsx +3 -5
- package/src/components/custom/Treemap/Treemap.tsx +3 -5
- package/src/components/custom/Typography/Typography.stories.tsx +45 -27
- package/src/components/custom/Typography/Typography.test.tsx +13 -3
- package/src/components/custom/Typography/Typography.tsx +5 -0
- package/src/components/custom/Workout/ActiveWorkoutPage.tsx +2 -1
- package/src/components/custom/Workout/BodyMap.tsx +6 -3
- package/src/components/custom/Workout/BodyMapDetailPanel.tsx +6 -3
- package/src/components/custom/Workout/CapacityBandChart.test.tsx +2 -2
- package/src/components/custom/Workout/CapacityBandChart.tsx +9 -6
- package/src/components/custom/Workout/DeviationBar.test.tsx +1 -1
- package/src/components/custom/Workout/DeviationBar.tsx +7 -4
- package/src/components/custom/Workout/ExerciseDetailPage.tsx +2 -1
- package/src/components/custom/Workout/InputBar.tsx +2 -1
- package/src/components/custom/Workout/IntensityBar.test.tsx +8 -8
- package/src/components/custom/Workout/IntensityBar.tsx +10 -6
- package/src/components/custom/Workout/MesoCard.tsx +8 -3
- package/src/components/custom/Workout/MesoProgressBar.test.tsx +1 -1
- package/src/components/custom/Workout/MesoProgressBar.tsx +3 -2
- package/src/components/custom/Workout/MesoStatusCard.tsx +20 -13
- package/src/components/custom/Workout/MuscleGroupChip.tsx +7 -4
- package/src/components/custom/Workout/PrBadge.tsx +5 -2
- package/src/components/custom/Workout/PrHistoryModal.tsx +4 -3
- package/src/components/custom/Workout/ProgramPlanningPage.tsx +2 -1
- package/src/components/custom/Workout/ReadinessCheck.tsx +7 -4
- package/src/components/custom/Workout/RestTimer.tsx +2 -1
- package/src/components/custom/Workout/SetRow.tsx +2 -1
- package/src/components/custom/Workout/Sparkline.tsx +2 -1
- package/src/components/custom/Workout/StatusDot.test.tsx +2 -2
- package/src/components/custom/Workout/StatusDot.tsx +12 -9
- package/src/components/custom/Workout/StrengthTrendChart.tsx +9 -6
- package/src/components/custom/Workout/SupersetWrapper.tsx +2 -1
- package/src/components/custom/Workout/TempoDisplay.tsx +6 -3
- package/src/components/custom/Workout/VelocityStrip.test.tsx +3 -3
- package/src/components/custom/Workout/WeekRow.tsx +3 -2
- package/src/components/custom/Workout/WeightBadge.tsx +6 -2
- package/src/components/custom/Workout/WorkoutCard.tsx +5 -2
- package/src/components/custom/Workout/WorkoutPill.tsx +12 -8
- package/src/components/custom/Workout/icons.tsx +6 -67
- package/src/components/icons/SvgIcon.tsx +50 -0
- package/src/components/icons/icons.stories.tsx +57 -0
- package/src/components/icons/icons.test.tsx +43 -0
- package/src/components/icons/icons.tsx +45 -0
- package/src/components/icons/index.ts +4 -0
- package/src/components/index.ts +6 -0
- package/src/components/shell/BrandLockup.stories.tsx +27 -0
- package/src/components/shell/BrandLockup.test.tsx +23 -0
- package/src/components/shell/BrandLockup.tsx +47 -0
- package/src/components/shell/DeviceIndicator.stories.tsx +28 -0
- package/src/components/shell/DeviceIndicator.test.tsx +26 -0
- package/src/components/shell/DeviceIndicator.tsx +52 -0
- package/src/components/shell/DeviceMenu.stories.tsx +47 -0
- package/src/components/shell/DeviceMenu.test.tsx +40 -0
- package/src/components/shell/DeviceMenu.tsx +65 -0
- package/src/components/shell/DeviceRow.stories.tsx +38 -0
- package/src/components/shell/DeviceRow.test.tsx +37 -0
- package/src/components/shell/DeviceRow.tsx +58 -0
- package/src/components/shell/README.md +86 -0
- package/src/components/shell/SessionStatePill.stories.tsx +27 -0
- package/src/components/shell/SessionStatePill.test.tsx +25 -0
- package/src/components/shell/SessionStatePill.tsx +46 -0
- package/src/components/shell/TopBar.stories.tsx +49 -0
- package/src/components/shell/TopBar.test.tsx +36 -0
- package/src/components/shell/TopBar.tsx +89 -0
- package/src/components/shell/index.ts +8 -0
- package/src/components/ui/indicator/Indicator.stories.tsx +37 -1
- package/src/components/ui/indicator/Indicator.test.tsx +19 -1
- package/src/components/ui/indicator/Indicator.tsx +45 -6
- package/src/components/ui/indicator/index.ts +1 -1
- package/src/components/ui/spinner/Spinner.tsx +3 -2
- package/src/components/ui/toolbar-button/ToolbarButton.tsx +2 -1
- package/src/theme/ColorSystem.stories.tsx +323 -0
- package/src/theme/Colors.stories.tsx +69 -1
- package/src/theme/barrel.ts +1 -0
- package/src/theme/config.ts +16 -3
- package/src/theme/extracted-colors-dataviz.ts +21 -0
- package/src/theme/extracted-colors-ui.ts +20 -0
- package/src/theme/global.css +64 -52
- package/src/theme/gradients.test.ts +25 -0
- package/src/theme/gradients.ts +36 -0
- package/src/theme/tokens/primitives.test.ts +232 -0
- package/src/theme/tokens/primitives.ts +247 -0
- package/src/theme/tokens/semantic.ts +93 -81
- package/src/theme/workout-tokens.ts +22 -21
- package/src/utils/avatar-color.ts +3 -3
- package/tailwind.config.js +10 -3
package/dist/bodymap.mjs
CHANGED
|
@@ -18,37 +18,17 @@ var primitiveColors = {
|
|
|
18
18
|
600: "#5048E5",
|
|
19
19
|
// Primary main
|
|
20
20
|
700: "#3832A0"},
|
|
21
|
-
// Teal scale (success)
|
|
22
|
-
teal: {
|
|
23
|
-
50: "#F0FDFA",
|
|
24
|
-
400: "#43C6B7",
|
|
25
|
-
// Success light
|
|
26
|
-
500: "#14B8A6",
|
|
27
|
-
700: "#0E8074"},
|
|
28
21
|
// Red scale (error)
|
|
29
22
|
red: {
|
|
30
|
-
50: "#FEF2F2",
|
|
31
|
-
400: "#DA6868",
|
|
32
23
|
// Error light
|
|
33
24
|
500: "#EF4444",
|
|
34
|
-
600: "#D14343",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Warning light
|
|
42
|
-
500: "#FFB020",
|
|
43
|
-
// Warning main
|
|
44
|
-
600: "#B27B16"},
|
|
45
|
-
// Sky/Blue scale (info)
|
|
46
|
-
sky: {
|
|
47
|
-
50: "#F0F9FF",
|
|
48
|
-
400: "#64B6F7",
|
|
49
|
-
// Info light
|
|
50
|
-
500: "#2196F3",
|
|
51
|
-
700: "#0B79D0"},
|
|
25
|
+
600: "#D14343"},
|
|
26
|
+
// Vivid red scale (alert)
|
|
27
|
+
redVivid: {
|
|
28
|
+
400: "#FF6070",
|
|
29
|
+
// Error vivid light
|
|
30
|
+
500: "#FF4757",
|
|
31
|
+
700: "#C42539"},
|
|
52
32
|
// Neutral/Gray scale
|
|
53
33
|
neutral: {
|
|
54
34
|
50: "#FAFAFA",
|
|
@@ -58,16 +38,9 @@ var primitiveColors = {
|
|
|
58
38
|
500: "#6B7280",
|
|
59
39
|
600: "#4B5563",
|
|
60
40
|
900: "#111827"},
|
|
61
|
-
// Orange scale (accent/brand color)
|
|
62
|
-
accent: {
|
|
63
|
-
200: "#FF9630",
|
|
64
|
-
300: "#FF8500",
|
|
65
|
-
400: "#FF7900",
|
|
66
|
-
500: "#F56C00",
|
|
67
|
-
600: "#E06D10",
|
|
68
|
-
700: "#D0620C"},
|
|
69
41
|
// Charcoal scale (dark backgrounds)
|
|
70
42
|
charcoal: {
|
|
43
|
+
200: "#3C3C3C",
|
|
71
44
|
300: "#2C2C2C",
|
|
72
45
|
400: "#1F1F1F",
|
|
73
46
|
500: "#1C1C1C",
|
|
@@ -75,15 +48,58 @@ var primitiveColors = {
|
|
|
75
48
|
700: "#161616",
|
|
76
49
|
900: "#101010"
|
|
77
50
|
},
|
|
78
|
-
// Steel scale (cool accent)
|
|
79
|
-
steel: {
|
|
80
|
-
300: "#678498",
|
|
81
|
-
400: "#557488",
|
|
82
|
-
500: "#406D87",
|
|
83
|
-
600: "#39617A",
|
|
84
|
-
700: "#32556D"},
|
|
85
51
|
// Pure colors
|
|
86
52
|
white: "#FFFFFF"};
|
|
53
|
+
var primitiveRamps = {
|
|
54
|
+
red: {
|
|
55
|
+
50: "#FFF4F4",
|
|
56
|
+
500: "#E05254",
|
|
57
|
+
600: "#D14343",
|
|
58
|
+
// pin
|
|
59
|
+
700: "#A4221C"},
|
|
60
|
+
orange: {
|
|
61
|
+
200: "#FFC7A2",
|
|
62
|
+
300: "#FFA063",
|
|
63
|
+
400: "#FF7900",
|
|
64
|
+
// pin
|
|
65
|
+
500: "#DA5F00",
|
|
66
|
+
600: "#B94A00"},
|
|
67
|
+
amber: {
|
|
68
|
+
50: "#FFF7DD",
|
|
69
|
+
200: "#FFD352",
|
|
70
|
+
300: "#F9B415",
|
|
71
|
+
500: "#C27400"},
|
|
72
|
+
green: {
|
|
73
|
+
50: "#E3FFEE",
|
|
74
|
+
200: "#58F69E",
|
|
75
|
+
300: "#2ED573",
|
|
76
|
+
600: "#298732"},
|
|
77
|
+
cyan: {
|
|
78
|
+
300: "#22D3EE",
|
|
79
|
+
// pin
|
|
80
|
+
400: "#01B5D1",
|
|
81
|
+
500: "#2697B7",
|
|
82
|
+
600: "#307B9B",
|
|
83
|
+
700: "#2A617F",
|
|
84
|
+
800: "#22465F"},
|
|
85
|
+
blue: {
|
|
86
|
+
50: "#EFF8FF",
|
|
87
|
+
300: "#78C2FF",
|
|
88
|
+
500: "#2196F3",
|
|
89
|
+
// pin
|
|
90
|
+
600: "#1072CB"}};
|
|
91
|
+
var divergingScale = [
|
|
92
|
+
primitiveRamps.blue[500],
|
|
93
|
+
// under
|
|
94
|
+
primitiveRamps.cyan[300],
|
|
95
|
+
// maintenance
|
|
96
|
+
primitiveRamps.green[200],
|
|
97
|
+
// optimal (light center)
|
|
98
|
+
primitiveRamps.amber[300],
|
|
99
|
+
// approaching
|
|
100
|
+
primitiveRamps.red[600]
|
|
101
|
+
// over
|
|
102
|
+
];
|
|
87
103
|
var discreteRainbow = [
|
|
88
104
|
"#E8ECFB",
|
|
89
105
|
"#D9CCE3",
|
|
@@ -119,56 +135,43 @@ var discreteRainbow = [
|
|
|
119
135
|
// src/theme/tokens/semantic.ts
|
|
120
136
|
var semanticColorsLight = {
|
|
121
137
|
// Brand colors (brand-*)
|
|
122
|
-
"brand-primary":
|
|
123
|
-
|
|
124
|
-
"brand-primary-
|
|
125
|
-
// #FF9630
|
|
126
|
-
"brand-primary-dark": primitiveColors.accent[700],
|
|
127
|
-
// #D0620C
|
|
138
|
+
"brand-primary": primitiveRamps.orange[400],
|
|
139
|
+
"brand-primary-light": primitiveRamps.orange[300],
|
|
140
|
+
"brand-primary-dark": primitiveRamps.orange[500],
|
|
128
141
|
"brand-primary-subtle": "rgba(255, 121, 0, 0.08)",
|
|
129
|
-
"brand-primary-hover":
|
|
130
|
-
"brand-primary-active":
|
|
131
|
-
"brand-secondary":
|
|
132
|
-
|
|
133
|
-
"brand-secondary-
|
|
134
|
-
|
|
135
|
-
"brand-secondary-
|
|
136
|
-
|
|
137
|
-
"brand-secondary-subtle": "rgba(64, 109, 135, 0.08)",
|
|
138
|
-
"brand-secondary-hover": primitiveColors.steel[600],
|
|
139
|
-
"brand-secondary-active": primitiveColors.steel[700],
|
|
142
|
+
"brand-primary-hover": primitiveRamps.orange[500],
|
|
143
|
+
"brand-primary-active": primitiveRamps.orange[600],
|
|
144
|
+
"brand-secondary": primitiveRamps.cyan[600],
|
|
145
|
+
"brand-secondary-light": primitiveRamps.cyan[500],
|
|
146
|
+
"brand-secondary-dark": primitiveRamps.cyan[700],
|
|
147
|
+
"brand-secondary-subtle": "rgba(48, 123, 155, 0.08)",
|
|
148
|
+
"brand-secondary-hover": primitiveRamps.cyan[700],
|
|
149
|
+
"brand-secondary-active": primitiveRamps.cyan[800],
|
|
140
150
|
// Text on brand backgrounds (on-*)
|
|
141
151
|
"on-brand-primary": primitiveColors.white,
|
|
142
152
|
"on-brand-secondary": primitiveColors.white,
|
|
143
153
|
// Status colors (status-*)
|
|
144
|
-
"status-success":
|
|
145
|
-
|
|
146
|
-
"status-success-
|
|
147
|
-
|
|
148
|
-
"status-
|
|
149
|
-
|
|
150
|
-
"status-
|
|
151
|
-
"status-error":
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
"status-error-dark": primitiveColors.
|
|
156
|
-
|
|
157
|
-
"status-
|
|
158
|
-
"status-warning":
|
|
159
|
-
|
|
160
|
-
"status-warning-
|
|
161
|
-
|
|
162
|
-
"status-
|
|
163
|
-
|
|
164
|
-
"status-
|
|
165
|
-
"status-info": primitiveColors.sky[500],
|
|
166
|
-
// #2196F3
|
|
167
|
-
"status-info-light": primitiveColors.sky[400],
|
|
168
|
-
// #64B6F7
|
|
169
|
-
"status-info-dark": primitiveColors.sky[700],
|
|
170
|
-
// #0B79D0
|
|
171
|
-
"status-info-subtle": primitiveColors.sky[50],
|
|
154
|
+
"status-success": primitiveRamps.green[300],
|
|
155
|
+
"status-success-light": primitiveRamps.green[200],
|
|
156
|
+
"status-success-dark": primitiveRamps.green[600],
|
|
157
|
+
"status-success-subtle": primitiveRamps.green[50],
|
|
158
|
+
"status-error": primitiveRamps.red[600],
|
|
159
|
+
"status-error-light": primitiveRamps.red[500],
|
|
160
|
+
"status-error-dark": primitiveRamps.red[700],
|
|
161
|
+
"status-error-subtle": primitiveRamps.red[50],
|
|
162
|
+
"status-error-vivid": primitiveColors.redVivid[500],
|
|
163
|
+
// vivid alert red
|
|
164
|
+
"status-error-vivid-light": primitiveColors.redVivid[400],
|
|
165
|
+
"status-error-vivid-dark": primitiveColors.redVivid[700],
|
|
166
|
+
"status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
|
|
167
|
+
"status-warning": primitiveRamps.amber[300],
|
|
168
|
+
"status-warning-light": primitiveRamps.amber[200],
|
|
169
|
+
"status-warning-dark": primitiveRamps.amber[500],
|
|
170
|
+
"status-warning-subtle": primitiveRamps.amber[50],
|
|
171
|
+
"status-info": primitiveRamps.blue[500],
|
|
172
|
+
"status-info-light": primitiveRamps.blue[300],
|
|
173
|
+
"status-info-dark": primitiveRamps.blue[600],
|
|
174
|
+
"status-info-subtle": primitiveRamps.blue[50],
|
|
172
175
|
// Text on status backgrounds (on-status-*)
|
|
173
176
|
"on-status-success": primitiveColors.white,
|
|
174
177
|
"on-status-error": primitiveColors.white,
|
|
@@ -195,25 +198,25 @@ var semanticColorsLight = {
|
|
|
195
198
|
// Data visualization colors (data-*)
|
|
196
199
|
// First 10 colors from discrete rainbow optimized for charts
|
|
197
200
|
"data-1": discreteRainbow[9],
|
|
198
|
-
//
|
|
201
|
+
// Blue
|
|
199
202
|
"data-2": discreteRainbow[14],
|
|
200
|
-
//
|
|
203
|
+
// Green
|
|
201
204
|
"data-3": discreteRainbow[17],
|
|
202
|
-
//
|
|
205
|
+
// Yellow
|
|
203
206
|
"data-4": discreteRainbow[25],
|
|
204
|
-
//
|
|
207
|
+
// Red
|
|
205
208
|
"data-5": discreteRainbow[8],
|
|
206
|
-
//
|
|
209
|
+
// Purple
|
|
207
210
|
"data-6": discreteRainbow[20],
|
|
208
|
-
//
|
|
211
|
+
// Orange
|
|
209
212
|
"data-7": discreteRainbow[13],
|
|
210
|
-
//
|
|
213
|
+
// Light Blue
|
|
211
214
|
"data-8": discreteRainbow[15],
|
|
212
|
-
//
|
|
215
|
+
// Light Green
|
|
213
216
|
"data-9": discreteRainbow[3],
|
|
214
|
-
//
|
|
217
|
+
// Lavender
|
|
215
218
|
"data-10": discreteRainbow[22],
|
|
216
|
-
//
|
|
219
|
+
// Dark Orange
|
|
217
220
|
// Text colors (text-*)
|
|
218
221
|
"text-primary": "#121828",
|
|
219
222
|
"text-secondary": "#65748B",
|
|
@@ -225,9 +228,9 @@ var semanticColorsLight = {
|
|
|
225
228
|
// Surface colors (surface-*) - for elevated containers
|
|
226
229
|
"surface-base": primitiveColors.white,
|
|
227
230
|
"surface-elevated": primitiveColors.neutral[50],
|
|
228
|
-
//
|
|
231
|
+
// slightly off-white for elevated cards
|
|
229
232
|
"surface-raised": primitiveColors.neutral[100],
|
|
230
|
-
//
|
|
233
|
+
// light gray for raised cards
|
|
231
234
|
"surface-overlay": primitiveColors.white,
|
|
232
235
|
"surface-input": primitiveColors.neutral[50],
|
|
233
236
|
// Input field background (filled variant)
|
|
@@ -239,6 +242,8 @@ var semanticColorsLight = {
|
|
|
239
242
|
"border-default": "#E8E9EB",
|
|
240
243
|
"border-subtle": primitiveColors.neutral[100],
|
|
241
244
|
"border-strong": primitiveColors.neutral[300],
|
|
245
|
+
"border-prominent": primitiveColors.neutral[400],
|
|
246
|
+
// high-visibility divider
|
|
242
247
|
"border-focus": primitiveColors.blue[600],
|
|
243
248
|
"border-input": primitiveColors.neutral[300],
|
|
244
249
|
// Input field border
|
|
@@ -263,37 +268,41 @@ var semanticColorsLight = {
|
|
|
263
268
|
};
|
|
264
269
|
var semanticColorsDark = {
|
|
265
270
|
// Brand colors stay the same in dark mode
|
|
266
|
-
"brand-primary":
|
|
267
|
-
"brand-primary-light":
|
|
268
|
-
"brand-primary-dark":
|
|
271
|
+
"brand-primary": primitiveRamps.orange[400],
|
|
272
|
+
"brand-primary-light": primitiveRamps.orange[300],
|
|
273
|
+
"brand-primary-dark": primitiveRamps.orange[500],
|
|
269
274
|
"brand-primary-subtle": "rgba(255, 121, 0, 0.12)",
|
|
270
|
-
"brand-primary-hover":
|
|
271
|
-
"brand-primary-active":
|
|
272
|
-
"brand-secondary":
|
|
273
|
-
"brand-secondary-light":
|
|
274
|
-
"brand-secondary-dark":
|
|
275
|
-
"brand-secondary-subtle": "rgba(
|
|
276
|
-
"brand-secondary-hover":
|
|
277
|
-
"brand-secondary-active":
|
|
275
|
+
"brand-primary-hover": primitiveRamps.orange[300],
|
|
276
|
+
"brand-primary-active": primitiveRamps.orange[200],
|
|
277
|
+
"brand-secondary": primitiveRamps.cyan[600],
|
|
278
|
+
"brand-secondary-light": primitiveRamps.cyan[500],
|
|
279
|
+
"brand-secondary-dark": primitiveRamps.cyan[700],
|
|
280
|
+
"brand-secondary-subtle": "rgba(48, 123, 155, 0.12)",
|
|
281
|
+
"brand-secondary-hover": primitiveRamps.cyan[500],
|
|
282
|
+
"brand-secondary-active": primitiveRamps.cyan[400],
|
|
278
283
|
// Text on brand backgrounds
|
|
279
284
|
"on-brand-primary": primitiveColors.white,
|
|
280
285
|
"on-brand-secondary": primitiveColors.white,
|
|
281
286
|
// Status colors
|
|
282
|
-
"status-success":
|
|
283
|
-
"status-success-light":
|
|
284
|
-
"status-success-dark":
|
|
285
|
-
"status-success-subtle": "rgba(
|
|
286
|
-
"status-error":
|
|
287
|
-
"status-error-light":
|
|
288
|
-
"status-error-dark":
|
|
287
|
+
"status-success": primitiveRamps.green[300],
|
|
288
|
+
"status-success-light": primitiveRamps.green[200],
|
|
289
|
+
"status-success-dark": primitiveRamps.green[600],
|
|
290
|
+
"status-success-subtle": "rgba(46, 213, 115, 0.12)",
|
|
291
|
+
"status-error": primitiveRamps.red[600],
|
|
292
|
+
"status-error-light": primitiveRamps.red[500],
|
|
293
|
+
"status-error-dark": primitiveRamps.red[700],
|
|
289
294
|
"status-error-subtle": "rgba(209, 67, 67, 0.12)",
|
|
290
|
-
"status-
|
|
291
|
-
"status-
|
|
292
|
-
"status-
|
|
293
|
-
"status-
|
|
294
|
-
"status-
|
|
295
|
-
"status-
|
|
296
|
-
"status-
|
|
295
|
+
"status-error-vivid": primitiveColors.redVivid[500],
|
|
296
|
+
"status-error-vivid-light": primitiveColors.redVivid[400],
|
|
297
|
+
"status-error-vivid-dark": primitiveColors.redVivid[700],
|
|
298
|
+
"status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
|
|
299
|
+
"status-warning": primitiveRamps.amber[300],
|
|
300
|
+
"status-warning-light": primitiveRamps.amber[200],
|
|
301
|
+
"status-warning-dark": primitiveRamps.amber[500],
|
|
302
|
+
"status-warning-subtle": "rgba(249, 180, 21, 0.12)",
|
|
303
|
+
"status-info": primitiveRamps.blue[500],
|
|
304
|
+
"status-info-light": primitiveRamps.blue[300],
|
|
305
|
+
"status-info-dark": primitiveRamps.blue[600],
|
|
297
306
|
"status-info-subtle": "rgba(33, 150, 243, 0.12)",
|
|
298
307
|
// Text on status backgrounds
|
|
299
308
|
"on-status-success": primitiveColors.white,
|
|
@@ -335,29 +344,31 @@ var semanticColorsDark = {
|
|
|
335
344
|
"text-link-hover": primitiveColors.blue[400],
|
|
336
345
|
// Surface colors - dark backgrounds
|
|
337
346
|
"surface-base": primitiveColors.charcoal[700],
|
|
338
|
-
//
|
|
347
|
+
// main surface
|
|
339
348
|
"surface-elevated": primitiveColors.charcoal[600],
|
|
340
|
-
//
|
|
349
|
+
// elevated surface
|
|
341
350
|
"surface-raised": primitiveColors.charcoal[500],
|
|
342
|
-
//
|
|
351
|
+
// raised surface
|
|
343
352
|
"surface-overlay": primitiveColors.charcoal[600],
|
|
344
|
-
//
|
|
353
|
+
// overlay surface
|
|
345
354
|
"surface-input": primitiveColors.charcoal[600],
|
|
346
|
-
//
|
|
355
|
+
// input surface
|
|
347
356
|
// Background colors
|
|
348
357
|
"background-base": primitiveColors.charcoal[900],
|
|
349
|
-
//
|
|
358
|
+
// darkest charcoal
|
|
350
359
|
"background-default": primitiveColors.charcoal[700],
|
|
351
|
-
//
|
|
360
|
+
// main background
|
|
352
361
|
"background-subtle": primitiveColors.charcoal[500],
|
|
353
|
-
//
|
|
362
|
+
// subtle background
|
|
354
363
|
// Border colors
|
|
355
364
|
"border-default": primitiveColors.charcoal[400],
|
|
356
|
-
//
|
|
365
|
+
// default border
|
|
357
366
|
"border-subtle": primitiveColors.charcoal[500],
|
|
358
|
-
//
|
|
367
|
+
// subtle border
|
|
359
368
|
"border-strong": primitiveColors.charcoal[300],
|
|
360
|
-
//
|
|
369
|
+
// strong border
|
|
370
|
+
"border-prominent": primitiveColors.charcoal[200],
|
|
371
|
+
// high-visibility divider
|
|
361
372
|
"border-focus": "#828DF8",
|
|
362
373
|
"border-input": primitiveColors.neutral[600],
|
|
363
374
|
"border-input-hover": primitiveColors.neutral[500],
|
|
@@ -372,7 +383,7 @@ var semanticColorsDark = {
|
|
|
372
383
|
"interactive-disabled-text": "rgba(255, 255, 255, 0.26)",
|
|
373
384
|
// Divider
|
|
374
385
|
"divider": primitiveColors.charcoal[400],
|
|
375
|
-
//
|
|
386
|
+
// divider color
|
|
376
387
|
// Avatar default
|
|
377
388
|
"avatar-background": primitiveColors.neutral[600],
|
|
378
389
|
"avatar-text": primitiveColors.white
|
|
@@ -388,21 +399,22 @@ function resolveColor(token, mode = "dark") {
|
|
|
388
399
|
|
|
389
400
|
// src/theme/workout-tokens.ts
|
|
390
401
|
var WORKOUT_TOKENS = {
|
|
391
|
-
// BodyMap volume heatmap
|
|
392
|
-
//
|
|
402
|
+
// BodyMap volume heatmap — the canonical `divergingScale` (under → optimal →
|
|
403
|
+
// over): a true diverging shape with a light green center, cool-blue under-
|
|
404
|
+
// trained end and warm-red over-reaching end (colorblind-robust in lightness).
|
|
393
405
|
heatmap: {
|
|
394
406
|
none: "#E0E0E0",
|
|
395
|
-
//
|
|
396
|
-
under:
|
|
397
|
-
//
|
|
398
|
-
maintenance:
|
|
399
|
-
//
|
|
400
|
-
productive:
|
|
401
|
-
//
|
|
402
|
-
approaching:
|
|
403
|
-
//
|
|
404
|
-
over:
|
|
405
|
-
//
|
|
407
|
+
// no training data
|
|
408
|
+
under: divergingScale[0],
|
|
409
|
+
// below MEV
|
|
410
|
+
maintenance: divergingScale[1],
|
|
411
|
+
// MEV to MAV
|
|
412
|
+
productive: divergingScale[2],
|
|
413
|
+
// optimal center — MAV to MRV
|
|
414
|
+
approaching: divergingScale[3],
|
|
415
|
+
// near MRV
|
|
416
|
+
over: divergingScale[4]
|
|
417
|
+
// over MRV
|
|
406
418
|
}};
|
|
407
419
|
|
|
408
420
|
// src/components/custom/Workout/muscleTaxonomy.ts
|
|
@@ -608,6 +620,7 @@ var jsxs = wrapJsx(jsxs$1);
|
|
|
608
620
|
|
|
609
621
|
// src/components/custom/Workout/BodyMap.tsx
|
|
610
622
|
var Body = BodyHighlighter.default ?? BodyHighlighter;
|
|
623
|
+
var BRAND_PRIMARY = getSemanticColors("dark")["brand-primary"];
|
|
611
624
|
var OUTLINE_FILL = "rgba(255,255,255,0.08)";
|
|
612
625
|
var OUTLINE_BORDER = "rgba(255,255,255,0.12)";
|
|
613
626
|
var BODY_SCALE = 0.8;
|
|
@@ -786,7 +799,7 @@ function ViewToggle({ view, onViewChange }) {
|
|
|
786
799
|
borderRadius: 9999,
|
|
787
800
|
backgroundColor: active ? "rgba(255,121,0,0.16)" : "transparent",
|
|
788
801
|
borderWidth: 1,
|
|
789
|
-
borderColor: active ?
|
|
802
|
+
borderColor: active ? BRAND_PRIMARY : resolveColor("border-strong")
|
|
790
803
|
},
|
|
791
804
|
testID: `body-map-toggle-${side}`,
|
|
792
805
|
children: /* @__PURE__ */ jsx(
|
|
@@ -796,7 +809,7 @@ function ViewToggle({ view, onViewChange }) {
|
|
|
796
809
|
fontSize: 12,
|
|
797
810
|
fontFamily: "Inter, sans-serif",
|
|
798
811
|
fontWeight: active ? "700" : "500",
|
|
799
|
-
color: active ?
|
|
812
|
+
color: active ? BRAND_PRIMARY : resolveColor("text-secondary"),
|
|
800
813
|
textTransform: "capitalize"
|
|
801
814
|
},
|
|
802
815
|
children: side
|
|
@@ -828,7 +841,7 @@ function MuscleButton({ entry, highlighted, onMusclePress }) {
|
|
|
828
841
|
paddingVertical: 3,
|
|
829
842
|
borderRadius: 9999,
|
|
830
843
|
borderWidth: 1,
|
|
831
|
-
borderColor: highlighted ?
|
|
844
|
+
borderColor: highlighted ? BRAND_PRIMARY : resolveColor("border-default")
|
|
832
845
|
},
|
|
833
846
|
testID: `body-map-muscle-${entry.key}`,
|
|
834
847
|
children: [
|
|
@@ -869,7 +882,8 @@ var colorStyles = {
|
|
|
869
882
|
success: "bg-status-success",
|
|
870
883
|
error: "bg-status-error",
|
|
871
884
|
warning: "bg-status-warning",
|
|
872
|
-
info: "bg-status-info"
|
|
885
|
+
info: "bg-status-info",
|
|
886
|
+
"error-vivid": "bg-status-error-vivid"
|
|
873
887
|
};
|
|
874
888
|
function Indicator({
|
|
875
889
|
size = "sm",
|
|
@@ -877,14 +891,40 @@ function Indicator({
|
|
|
877
891
|
customColor,
|
|
878
892
|
glow = false,
|
|
879
893
|
ring = false,
|
|
894
|
+
pulse = false,
|
|
880
895
|
className,
|
|
881
896
|
style,
|
|
882
897
|
...props
|
|
883
898
|
}) {
|
|
899
|
+
const pulseMode = pulse === true ? "opacity" : pulse || false;
|
|
900
|
+
const colorClass = !customColor ? colorStyles[color] : void 0;
|
|
901
|
+
const colorStyle = customColor ? { backgroundColor: customColor } : void 0;
|
|
902
|
+
if (pulseMode === "ping") {
|
|
903
|
+
return /* @__PURE__ */ jsxs(View, { className: cn("relative", sizeStyles[size], className), style, ...props, children: [
|
|
904
|
+
/* @__PURE__ */ jsx(
|
|
905
|
+
View,
|
|
906
|
+
{
|
|
907
|
+
className: cn("absolute inset-0 rounded-full animate-ping", colorClass),
|
|
908
|
+
style: colorStyle
|
|
909
|
+
}
|
|
910
|
+
),
|
|
911
|
+
/* @__PURE__ */ jsx(
|
|
912
|
+
View,
|
|
913
|
+
{
|
|
914
|
+
className: cn(
|
|
915
|
+
"relative rounded-full",
|
|
916
|
+
sizeStyles[size],
|
|
917
|
+
colorClass,
|
|
918
|
+
ring && "border-2 border-background-base"
|
|
919
|
+
),
|
|
920
|
+
style: colorStyle
|
|
921
|
+
}
|
|
922
|
+
)
|
|
923
|
+
] });
|
|
924
|
+
}
|
|
884
925
|
const dynamicStyle = {
|
|
885
926
|
...typeof style === "object" ? style : {},
|
|
886
|
-
...
|
|
887
|
-
...glow && !customColor ? {} : {},
|
|
927
|
+
...colorStyle ?? {},
|
|
888
928
|
...glow && customColor ? { boxShadow: `0 0 6px ${customColor}` } : {}
|
|
889
929
|
};
|
|
890
930
|
return /* @__PURE__ */ jsx(
|
|
@@ -893,12 +933,14 @@ function Indicator({
|
|
|
893
933
|
className: cn(
|
|
894
934
|
"rounded-full shrink-0",
|
|
895
935
|
sizeStyles[size],
|
|
896
|
-
|
|
936
|
+
colorClass,
|
|
937
|
+
pulseMode === "opacity" && "animate-pulse",
|
|
897
938
|
ring && "border-2 border-background-base",
|
|
898
|
-
glow && !customColor && color === "success" && "shadow-[0_0_6px_rgba(
|
|
939
|
+
glow && !customColor && color === "success" && "shadow-[0_0_6px_rgba(46,213,115,0.6)]",
|
|
899
940
|
glow && !customColor && color === "error" && "shadow-[0_0_6px_rgba(239,68,68,0.6)]",
|
|
900
941
|
glow && !customColor && color === "warning" && "shadow-[0_0_6px_rgba(245,158,11,0.6)]",
|
|
901
942
|
glow && !customColor && color === "primary" && "shadow-[0_0_6px_rgba(255,121,0,0.6)]",
|
|
943
|
+
glow && !customColor && color === "error-vivid" && "shadow-[0_0_6px_rgba(255,71,87,0.6)]",
|
|
902
944
|
className
|
|
903
945
|
),
|
|
904
946
|
style: Object.keys(dynamicStyle).length > 0 ? dynamicStyle : style,
|
|
@@ -976,7 +1018,7 @@ function Badge({
|
|
|
976
1018
|
}
|
|
977
1019
|
);
|
|
978
1020
|
}
|
|
979
|
-
var
|
|
1021
|
+
var BRAND_PRIMARY2 = getSemanticColors("dark")["brand-primary"];
|
|
980
1022
|
function normalizeData(data, height) {
|
|
981
1023
|
if (data.length === 0) return [];
|
|
982
1024
|
const min = Math.min(...data);
|
|
@@ -1013,7 +1055,7 @@ function Sparkline({
|
|
|
1013
1055
|
}
|
|
1014
1056
|
);
|
|
1015
1057
|
}
|
|
1016
|
-
const resolvedColor = color ??
|
|
1058
|
+
const resolvedColor = color ?? BRAND_PRIMARY2;
|
|
1017
1059
|
const normalized = normalizeData(data, height);
|
|
1018
1060
|
const stepX = data.length > 1 ? width / (data.length - 1) : 0;
|
|
1019
1061
|
const dotSize = 3;
|
|
@@ -1129,8 +1171,9 @@ function Sparkline({
|
|
|
1129
1171
|
}
|
|
1130
1172
|
|
|
1131
1173
|
// src/components/custom/Workout/BodyMapDetailPanel.tsx
|
|
1132
|
-
var
|
|
1133
|
-
var
|
|
1174
|
+
var t = getSemanticColors("dark");
|
|
1175
|
+
var BRAND_PRIMARY3 = t["brand-primary"];
|
|
1176
|
+
var VOLUME_GRADIENT = `linear-gradient(90deg, ${t["status-info"]} 0%, ${t["status-success"]} 50%, ${t["status-error"]} 100%)`;
|
|
1134
1177
|
var SLIDE_OFFSET = 400;
|
|
1135
1178
|
var BACKDROP_OPACITY = 0.4;
|
|
1136
1179
|
var STATUS_BADGE_COLOR = {
|
|
@@ -1528,7 +1571,7 @@ function BodyMapDetailPanel({
|
|
|
1528
1571
|
borderColor: "rgba(255,121,0,0.3)"
|
|
1529
1572
|
},
|
|
1530
1573
|
testID: "body-map-detail-panel-view-exercises",
|
|
1531
|
-
children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color:
|
|
1574
|
+
children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color: BRAND_PRIMARY3 }, children: "View exercises" })
|
|
1532
1575
|
}
|
|
1533
1576
|
)
|
|
1534
1577
|
]
|
|
@@ -2266,17 +2309,18 @@ function CardContent({ children, className }) {
|
|
|
2266
2309
|
function CardFooter({ children, className }) {
|
|
2267
2310
|
return /* @__PURE__ */ jsx(View, { className: cn("px-6 py-4 flex-row items-center gap-2", className), children });
|
|
2268
2311
|
}
|
|
2312
|
+
var t2 = getSemanticColors("dark");
|
|
2269
2313
|
var solidVariantColors = {
|
|
2270
|
-
success: "
|
|
2271
|
-
warning: "
|
|
2272
|
-
error: "
|
|
2314
|
+
success: t2["status-success"],
|
|
2315
|
+
warning: t2["status-warning"],
|
|
2316
|
+
error: t2["status-error"],
|
|
2273
2317
|
neutral: "#6B7280"
|
|
2274
2318
|
};
|
|
2275
2319
|
var ringVariantStyles = {
|
|
2276
2320
|
"on-track": {
|
|
2277
|
-
backgroundColor: "rgba(
|
|
2321
|
+
backgroundColor: "rgba(46,213,115,0.15)",
|
|
2278
2322
|
borderWidth: 1,
|
|
2279
|
-
borderColor: "rgba(
|
|
2323
|
+
borderColor: "rgba(46,213,115,0.3)"
|
|
2280
2324
|
},
|
|
2281
2325
|
deviation: {
|
|
2282
2326
|
backgroundColor: "rgba(245,158,11,0.15)",
|
|
@@ -2291,11 +2335,11 @@ var ringVariantStyles = {
|
|
|
2291
2335
|
}
|
|
2292
2336
|
};
|
|
2293
2337
|
var glowStyles = {
|
|
2294
|
-
success: { boxShadow: "0 0 4px rgba(
|
|
2338
|
+
success: { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
|
|
2295
2339
|
warning: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
|
|
2296
2340
|
error: { boxShadow: "0 0 4px rgba(239,68,68,0.4)" },
|
|
2297
2341
|
neutral: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" },
|
|
2298
|
-
"on-track": { boxShadow: "0 0 4px rgba(
|
|
2342
|
+
"on-track": { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
|
|
2299
2343
|
deviation: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
|
|
2300
2344
|
future: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" }
|
|
2301
2345
|
};
|
|
@@ -2309,8 +2353,8 @@ var iconColors = {
|
|
|
2309
2353
|
warning: "#6B4000",
|
|
2310
2354
|
error: "#5C1A1A",
|
|
2311
2355
|
neutral: "#D1D5DB",
|
|
2312
|
-
"on-track": "
|
|
2313
|
-
deviation: "
|
|
2356
|
+
"on-track": t2["status-success"],
|
|
2357
|
+
deviation: t2["status-warning"],
|
|
2314
2358
|
future: "#6B7280"
|
|
2315
2359
|
};
|
|
2316
2360
|
var sizeDimensions = {
|
|
@@ -2391,20 +2435,23 @@ function StatusDot({
|
|
|
2391
2435
|
}
|
|
2392
2436
|
return /* @__PURE__ */ jsx(View, { className, ...props, children: dot });
|
|
2393
2437
|
}
|
|
2438
|
+
var MESO_ACCENT_GRADIENT_DARK = primitiveRamps.orange[500];
|
|
2439
|
+
var MESO_ACCENT_GRADIENT_LIGHT = primitiveRamps.orange[300];
|
|
2394
2440
|
|
|
2395
2441
|
// src/components/custom/Workout/MesoStatusCard.tsx
|
|
2396
|
-
var
|
|
2397
|
-
var
|
|
2398
|
-
var
|
|
2399
|
-
var
|
|
2400
|
-
var
|
|
2401
|
-
var
|
|
2402
|
-
var
|
|
2442
|
+
var t3 = getSemanticColors("dark");
|
|
2443
|
+
var BRAND_PRIMARY4 = t3["brand-primary"];
|
|
2444
|
+
var BRAND_PRIMARY_DARK = MESO_ACCENT_GRADIENT_DARK;
|
|
2445
|
+
var BRAND_PRIMARY_LIGHT = MESO_ACCENT_GRADIENT_LIGHT;
|
|
2446
|
+
var SUCCESS = t3["status-success"];
|
|
2447
|
+
var WARNING = t3["status-warning"];
|
|
2448
|
+
var ERROR = t3["status-error"];
|
|
2449
|
+
var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY4, BRAND_PRIMARY_LIGHT];
|
|
2403
2450
|
var CARD_GRADIENT = `linear-gradient(135deg, ${resolveColor("surface-elevated")} 0%, ${resolveColor("surface-raised")} 100%)`;
|
|
2404
|
-
var GAUGE_GRADIENT = "linear-gradient(90deg, rgba(
|
|
2451
|
+
var GAUGE_GRADIENT = "linear-gradient(90deg, rgba(46,213,115,0.25) 0%, rgba(249,180,21,0.25) 50%, rgba(209,67,67,0.25) 100%)";
|
|
2405
2452
|
var STATUS_VARIANTS = {
|
|
2406
|
-
success: { bg: "rgba(
|
|
2407
|
-
warning: { bg: "rgba(
|
|
2453
|
+
success: { bg: "rgba(46,213,115,0.15)", border: "rgba(46,213,115,0.3)", text: SUCCESS },
|
|
2454
|
+
warning: { bg: "rgba(249,180,21,0.15)", border: "rgba(249,180,21,0.3)", text: WARNING },
|
|
2408
2455
|
error: { bg: "rgba(209,67,67,0.15)", border: "rgba(209,67,67,0.25)", text: ERROR }
|
|
2409
2456
|
};
|
|
2410
2457
|
function clamp012(value) {
|
|
@@ -2696,9 +2743,9 @@ function MesoStatusCard({
|
|
|
2696
2743
|
View,
|
|
2697
2744
|
{
|
|
2698
2745
|
style: {
|
|
2699
|
-
backgroundColor: "rgba(
|
|
2746
|
+
backgroundColor: "rgba(249,180,21,0.06)",
|
|
2700
2747
|
borderWidth: 1,
|
|
2701
|
-
borderColor: "rgba(
|
|
2748
|
+
borderColor: "rgba(249,180,21,0.15)",
|
|
2702
2749
|
borderRadius: 8,
|
|
2703
2750
|
paddingVertical: 10,
|
|
2704
2751
|
paddingHorizontal: 12
|
|
@@ -2724,9 +2771,9 @@ function MesoStatusCard({
|
|
|
2724
2771
|
className: "flex-row items-center",
|
|
2725
2772
|
style: {
|
|
2726
2773
|
gap: 8,
|
|
2727
|
-
backgroundColor: "rgba(
|
|
2774
|
+
backgroundColor: "rgba(46,213,115,0.06)",
|
|
2728
2775
|
borderWidth: 1,
|
|
2729
|
-
borderColor: "rgba(
|
|
2776
|
+
borderColor: "rgba(46,213,115,0.2)",
|
|
2730
2777
|
borderRadius: 8,
|
|
2731
2778
|
paddingVertical: 10,
|
|
2732
2779
|
paddingHorizontal: 12
|