@trinitydesign/design-system 1.2.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/theme.js ADDED
@@ -0,0 +1,1289 @@
1
+ import { createTheme as M, useTheme as C } from "@mui/material/styles";
2
+ import { Z as u, t as o, _ as m, c as R, s as f, a as h } from "./ai.js";
3
+ import { p as X, v as Z, o as q, m as _, a0 as J, q as K, a1 as Q, $ as U, u as Y, r as k, n as S } from "./ai.js";
4
+ import { useMemo as w } from "react";
5
+ function O(...r) {
6
+ return `--trinity-${r.join("-").replace(/([A-Z])/g, "-$1").toLowerCase()}`;
7
+ }
8
+ function i(r, a = []) {
9
+ const s = [];
10
+ for (const [e, d] of Object.entries(r)) {
11
+ const n = [...a, e];
12
+ if (d != null)
13
+ if (typeof d == "object" && !Array.isArray(d))
14
+ s.push(...i(d, n));
15
+ else {
16
+ const t = typeof d == "number" && !e.includes("opacity") && !e.includes("weight") && !e.includes("Height") ? `${d}px` : String(d);
17
+ s.push({ name: O(...n), value: t });
18
+ }
19
+ }
20
+ return s;
21
+ }
22
+ function z(r = u) {
23
+ const a = [];
24
+ return a.push(...i(r.base.colors, ["color"])), a.push(...i(r.base.spacing, ["spacing"])), a.push(...i(r.base.fontSize, ["font-size"])), a.push(...i(r.base.fontWeight, ["font-weight"])), a.push(...i(r.base.lineHeight, ["line-height"])), a.push(...i(r.base.letterSpacing, ["letter-spacing"])), a.push(...i(r.base.borderRadius, ["radius"])), a.push(...i(r.base.borderWidth, ["border-width"])), a.push(...i(r.base.shadows, ["shadow"])), a.push(...i(r.base.zIndex, ["z-index"])), a.push(...i(r.base.duration, ["duration"])), a.push(...i(r.base.easing, ["easing"])), a.push(...i(r.base.opacity, ["opacity"])), a.push(...i(r.base.breakpoints, ["breakpoint"])), a.push(...i(r.semantic.colors, ["semantic"])), a.push(...i(r.semantic.spacing, ["semantic-spacing"])), a.push(...i(r.semantic.borders, ["semantic-border"])), a.push(...i(r.semantic.shadows, ["semantic-shadow"])), a.push(...i(r.semantic.motion, ["motion"])), a.push(...i(r.component, ["component"])), a.map((s) => ` ${s.name}: ${s.value};`).join(`
25
+ `);
26
+ }
27
+ function $(r = u) {
28
+ const a = [];
29
+ return a.push(...i(r.darkMode.colors.text, ["semantic", "text"])), a.push(...i(r.darkMode.colors.background, ["semantic", "background"])), a.push(...i(r.darkMode.colors.border, ["semantic", "border"])), r.darkMode.colors.interactive && a.push(...i(r.darkMode.colors.interactive, ["semantic", "interactive"])), r.darkMode.colors.status && a.push(...i(r.darkMode.colors.status, ["semantic", "status"])), a.map((s) => ` ${s.name}: ${s.value};`).join(`
30
+ `);
31
+ }
32
+ function P(r = u) {
33
+ if (typeof window > "u") return;
34
+ const a = z(r), s = document.createElement("style");
35
+ s.id = "trinity-css-variables", s.textContent = `:root {
36
+ ${a}
37
+ }`;
38
+ const e = document.getElementById("trinity-css-variables");
39
+ e && e.remove(), document.head.appendChild(s);
40
+ }
41
+ function F(r = u) {
42
+ if (typeof window > "u") return;
43
+ const a = $(r), s = document.createElement("style");
44
+ s.id = "trinity-dark-mode-variables", s.textContent = `
45
+ [data-theme="dark"],
46
+ .dark-mode,
47
+ :root.dark {
48
+ ${a}
49
+ }
50
+
51
+ @media (prefers-color-scheme: dark) {
52
+ :root:not([data-theme="light"]) {
53
+ ${a}
54
+ }
55
+ }`;
56
+ const e = document.getElementById("trinity-dark-mode-variables");
57
+ e && e.remove(), document.head.appendChild(s);
58
+ }
59
+ function W(r, a) {
60
+ function s(t) {
61
+ let g = t.replace("#", "");
62
+ g.length === 3 && (g = g.split("").map((l) => l + l).join(""));
63
+ const p = parseInt(g, 16);
64
+ return [p >> 16 & 255, p >> 8 & 255, p & 255];
65
+ }
66
+ function e([t, g, p]) {
67
+ const l = [t, g, p].map((b) => (b /= 255, b <= 0.03928 ? b / 12.92 : Math.pow((b + 0.055) / 1.055, 2.4)));
68
+ return 0.2126 * l[0] + 0.7152 * l[1] + 0.0722 * l[2];
69
+ }
70
+ const d = e(s(r)), n = e(s(a));
71
+ return (Math.max(d, n) + 0.05) / (Math.min(d, n) + 0.05);
72
+ }
73
+ function L(r, a, s = 4.5) {
74
+ const e = W(r, a);
75
+ return e < s && typeof window < "u" && console.warn(`[Trinity] Low contrast ratio ${e.toFixed(2)} for ${r} on ${a}`), e >= s;
76
+ }
77
+ function H(r = u, a = "light") {
78
+ const s = a === "dark" ? "rgba(255, 255, 255, 0.12)" : r.base.colors.gray[200], e = a === "dark" ? "rgba(255, 255, 255, 0.2)" : r.base.colors.gray[300];
79
+ return {
80
+ MuiCssBaseline: {
81
+ styleOverrides: {
82
+ body: {
83
+ backgroundColor: a === "dark" ? r.base.colors.gray[800] : r.base.colors.gray[50],
84
+ color: a === "dark" ? r.base.colors.gray[50] : r.base.colors.gray[900]
85
+ }
86
+ }
87
+ },
88
+ MuiTypography: {
89
+ styleOverrides: {
90
+ root: {
91
+ color: "inherit"
92
+ }
93
+ }
94
+ },
95
+ MuiButton: {
96
+ defaultProps: {
97
+ disableElevation: !0
98
+ },
99
+ styleOverrides: {
100
+ root: {
101
+ padding: `${r.base.spacing[2]}px ${r.base.spacing[5]}px`,
102
+ borderRadius: r.base.borderRadius.full,
103
+ fontWeight: r.base.fontWeight.semibold
104
+ },
105
+ // Text buttons (default variant)
106
+ text: {
107
+ color: a === "dark" ? r.base.colors.gray[100] : r.base.colors.navy[900],
108
+ "&:hover": {
109
+ backgroundColor: a === "dark" ? r.semantic.effects.onDark.subtle : r.semantic.effects.overlay.hover
110
+ // 8% black - using semantic token
111
+ }
112
+ },
113
+ textPrimary: {
114
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
115
+ "&:hover": {
116
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.12)" : r.semantic.effects.overlay.hover
117
+ // 8%
118
+ }
119
+ },
120
+ textSecondary: {
121
+ color: a === "dark" ? r.base.colors.purple[400] : r.base.colors.coral[800],
122
+ "&:hover": {
123
+ backgroundColor: a === "dark" ? "rgba(120, 65, 201, 0.12)" : r.semantic.effects.overlay.hover
124
+ // 8%
125
+ }
126
+ },
127
+ // Contained buttons
128
+ contained: {
129
+ color: r.base.colors.gray[0]
130
+ },
131
+ containedPrimary: {
132
+ backgroundColor: r.base.colors.navy[900],
133
+ color: r.base.colors.gray[0],
134
+ "&:hover": {
135
+ backgroundColor: r.base.colors.coral[800]
136
+ }
137
+ },
138
+ containedSecondary: {
139
+ backgroundColor: r.base.colors.indigo[900],
140
+ color: r.base.colors.gray[0],
141
+ "&:hover": {
142
+ backgroundColor: r.base.colors.coral[800],
143
+ color: r.base.colors.gray[0]
144
+ }
145
+ },
146
+ // Outlined buttons
147
+ outlined: {
148
+ borderColor: r.base.colors.navy[900],
149
+ color: r.base.colors.navy[900],
150
+ borderWidth: 2,
151
+ "&:hover": {
152
+ backgroundColor: r.base.colors.coral[800],
153
+ borderColor: r.base.colors.coral[800],
154
+ color: r.base.colors.gray[0],
155
+ borderWidth: 2
156
+ }
157
+ },
158
+ outlinedPrimary: {
159
+ borderColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
160
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
161
+ },
162
+ // Size variants
163
+ sizeSmall: {
164
+ padding: `${r.base.spacing[1]}px ${r.base.spacing[3]}px`,
165
+ fontSize: r.base.fontSize.sm
166
+ },
167
+ sizeLarge: {
168
+ padding: `${r.base.spacing[3]}px ${r.base.spacing[6]}px`,
169
+ fontSize: r.base.fontSize.lg
170
+ }
171
+ }
172
+ },
173
+ MuiCard: {
174
+ defaultProps: {
175
+ elevation: 0
176
+ },
177
+ styleOverrides: {
178
+ root: {
179
+ borderRadius: r.base.borderRadius.md,
180
+ border: `1px solid ${s}`,
181
+ boxShadow: a === "dark" ? "0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.3)" : "0 1px 3px 0 rgb(0 0 0 / 0.08), 0 1px 2px -1px rgb(0 0 0 / 0.08)",
182
+ transition: "box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out",
183
+ "&:hover": {
184
+ boxShadow: a === "dark" ? "0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4)" : "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
185
+ }
186
+ }
187
+ }
188
+ },
189
+ MuiPaper: {
190
+ defaultProps: {
191
+ elevation: 0
192
+ },
193
+ styleOverrides: {
194
+ root: {
195
+ borderRadius: r.base.borderRadius.md,
196
+ border: `1px solid ${s}`,
197
+ boxShadow: a === "dark" ? "0 1px 2px 0 rgb(0 0 0 / 0.2)" : "0 1px 2px 0 rgb(0 0 0 / 0.05)"
198
+ },
199
+ rounded: {
200
+ borderRadius: r.base.borderRadius.md
201
+ },
202
+ elevation0: {
203
+ border: `1px solid ${s}`,
204
+ boxShadow: a === "dark" ? "0 1px 2px 0 rgb(0 0 0 / 0.2)" : "0 1px 2px 0 rgb(0 0 0 / 0.05)"
205
+ },
206
+ elevation1: {
207
+ border: `1px solid ${s}`,
208
+ boxShadow: a === "dark" ? "0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.3)" : "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)"
209
+ },
210
+ elevation2: {
211
+ border: `1px solid ${s}`,
212
+ boxShadow: a === "dark" ? "0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4)" : "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
213
+ },
214
+ elevation3: {
215
+ border: `1px solid ${s}`,
216
+ boxShadow: a === "dark" ? "0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5)" : "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"
217
+ },
218
+ outlined: {
219
+ border: `1px solid ${e}`,
220
+ boxShadow: "none"
221
+ }
222
+ }
223
+ },
224
+ MuiIconButton: {
225
+ styleOverrides: {
226
+ root: {
227
+ color: a === "dark" ? r.base.colors.gray[300] : r.base.colors.gray[600],
228
+ "&:hover": {
229
+ backgroundColor: a === "dark" ? r.semantic.effects.onDark.subtle : r.semantic.effects.overlay.hoverSubtle
230
+ // 4% black
231
+ }
232
+ },
233
+ colorPrimary: {
234
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
235
+ },
236
+ colorSecondary: {
237
+ color: a === "dark" ? r.base.colors.purple[400] : r.base.colors.coral[800]
238
+ }
239
+ }
240
+ },
241
+ MuiCardActions: {
242
+ styleOverrides: {
243
+ root: {
244
+ padding: r.base.spacing[4],
245
+ paddingTop: r.base.spacing[2],
246
+ gap: r.base.spacing[2]
247
+ }
248
+ }
249
+ },
250
+ MuiDialog: {
251
+ styleOverrides: {
252
+ paper: {
253
+ borderRadius: r.base.borderRadius.xl,
254
+ // 16px for dialogs - allows nested cards with lg:12px
255
+ border: `1px solid ${s}`
256
+ }
257
+ }
258
+ },
259
+ MuiAlert: {
260
+ styleOverrides: {
261
+ root: {
262
+ borderRadius: r.base.borderRadius.sm
263
+ // 6px for alert feedback elements
264
+ }
265
+ }
266
+ },
267
+ MuiLink: {
268
+ styleOverrides: {
269
+ root: {
270
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
271
+ textDecorationColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
272
+ "&:hover": {
273
+ color: a === "dark" ? r.base.colors.coral[300] : r.base.colors.coral[800],
274
+ textDecorationColor: a === "dark" ? r.base.colors.coral[300] : r.base.colors.coral[800]
275
+ }
276
+ }
277
+ }
278
+ },
279
+ MuiChip: {
280
+ styleOverrides: {
281
+ root: {
282
+ borderRadius: r.base.borderRadius.sm
283
+ // 6px for chip elements
284
+ }
285
+ }
286
+ },
287
+ MuiInputLabel: {
288
+ styleOverrides: {
289
+ root: {
290
+ color: a === "dark" ? r.base.colors.gray[400] : r.base.colors.gray[600],
291
+ "&.Mui-focused": {
292
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
293
+ }
294
+ }
295
+ }
296
+ },
297
+ MuiTextField: {
298
+ styleOverrides: {
299
+ root: {
300
+ "& .MuiInputBase-root": {
301
+ borderRadius: r.base.borderRadius.sm
302
+ // 6px for all inputs
303
+ },
304
+ "& .MuiInputBase-sizeSmall": {
305
+ borderRadius: r.base.borderRadius.sm
306
+ // 6px for small inputs
307
+ },
308
+ "& .MuiInputBase-input": {
309
+ color: a === "dark" ? r.base.colors.gray[50] : r.base.colors.gray[900]
310
+ },
311
+ "& .MuiInputBase-input::placeholder": {
312
+ color: a === "dark" ? r.base.colors.gray[500] : r.base.colors.gray[400],
313
+ opacity: 1
314
+ }
315
+ }
316
+ }
317
+ },
318
+ MuiOutlinedInput: {
319
+ styleOverrides: {
320
+ root: {
321
+ borderRadius: r.base.borderRadius.sm,
322
+ // 6px for all inputs
323
+ "&.MuiInputBase-sizeSmall": {
324
+ borderRadius: r.base.borderRadius.sm
325
+ // 6px for small inputs
326
+ },
327
+ "& .MuiOutlinedInput-notchedOutline": {
328
+ borderColor: a === "dark" ? "rgba(255, 255, 255, 0.23)" : r.base.colors.gray[300]
329
+ // @intentional-color: MUI standard border
330
+ },
331
+ "&:hover .MuiOutlinedInput-notchedOutline": {
332
+ borderColor: a === "dark" ? r.semantic.effects.onDark.tertiary : r.base.colors.gray[400]
333
+ // 50% white
334
+ },
335
+ "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
336
+ borderColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
337
+ }
338
+ },
339
+ input: {
340
+ color: a === "dark" ? r.base.colors.gray[50] : r.base.colors.gray[900]
341
+ }
342
+ }
343
+ },
344
+ MuiFilledInput: {
345
+ styleOverrides: {
346
+ root: {
347
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.09)" : r.semantic.effects.overlay.hover,
348
+ // 8%
349
+ "&:hover": {
350
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.13)" : r.semantic.effects.overlay.pressed
351
+ // 12%
352
+ },
353
+ "&.Mui-focused": {
354
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.09)" : r.semantic.effects.overlay.hover
355
+ // 8%
356
+ }
357
+ },
358
+ input: {
359
+ color: a === "dark" ? r.base.colors.gray[50] : r.base.colors.gray[900]
360
+ }
361
+ }
362
+ },
363
+ MuiFormHelperText: {
364
+ styleOverrides: {
365
+ root: {
366
+ color: a === "dark" ? r.base.colors.gray[400] : r.base.colors.gray[600]
367
+ }
368
+ }
369
+ },
370
+ MuiAutocomplete: {
371
+ styleOverrides: {
372
+ root: {
373
+ "& .MuiInputBase-root": {
374
+ borderRadius: r.base.borderRadius.sm
375
+ // 6px for all inputs
376
+ },
377
+ "& .MuiInputBase-sizeSmall": {
378
+ borderRadius: r.base.borderRadius.sm
379
+ // 6px for small inputs
380
+ }
381
+ }
382
+ }
383
+ },
384
+ MuiSelect: {
385
+ styleOverrides: {
386
+ root: {
387
+ borderRadius: r.base.borderRadius.sm,
388
+ // 6px for all selects
389
+ "&.MuiInputBase-sizeSmall": {
390
+ borderRadius: r.base.borderRadius.sm
391
+ // 6px for small inputs
392
+ }
393
+ }
394
+ }
395
+ },
396
+ // ============================================
397
+ // MUI X DATE/TIME PICKERS
398
+ // ============================================
399
+ MuiPickersInputBase: {
400
+ styleOverrides: {
401
+ root: {
402
+ borderRadius: r.base.borderRadius.sm
403
+ // 6px for picker inputs
404
+ }
405
+ }
406
+ },
407
+ MuiPickersOutlinedInput: {
408
+ styleOverrides: {
409
+ root: {
410
+ borderRadius: r.base.borderRadius.sm
411
+ // 6px for picker inputs
412
+ }
413
+ }
414
+ },
415
+ MuiPickersLayout: {
416
+ styleOverrides: {
417
+ root: {
418
+ borderRadius: r.base.borderRadius.lg
419
+ // 12px for picker popup
420
+ }
421
+ }
422
+ },
423
+ MuiDateCalendar: {
424
+ styleOverrides: {
425
+ root: {
426
+ borderRadius: r.base.borderRadius.lg
427
+ // 12px for calendar
428
+ }
429
+ }
430
+ },
431
+ MuiPickersDay: {
432
+ styleOverrides: {
433
+ root: {
434
+ borderRadius: r.semantic.borders.radius.badge,
435
+ // 12px for day cells
436
+ "&.Mui-selected": {
437
+ backgroundColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
438
+ }
439
+ }
440
+ }
441
+ },
442
+ MuiPickersCalendarHeader: {
443
+ styleOverrides: {
444
+ root: {
445
+ paddingLeft: r.base.spacing[4],
446
+ // 16px
447
+ paddingRight: r.base.spacing[4]
448
+ }
449
+ }
450
+ },
451
+ MuiMultiSectionDigitalClock: {
452
+ styleOverrides: {
453
+ root: {
454
+ borderRadius: r.base.borderRadius.lg
455
+ // 12px for time picker
456
+ }
457
+ }
458
+ },
459
+ MuiTimeClock: {
460
+ styleOverrides: {
461
+ root: {
462
+ borderRadius: r.base.borderRadius.lg
463
+ // 12px for analog clock
464
+ }
465
+ }
466
+ },
467
+ MuiPickersPopper: {
468
+ styleOverrides: {
469
+ paper: {
470
+ borderRadius: r.base.borderRadius.lg,
471
+ // 12px for popup
472
+ boxShadow: r.base.shadows.lg
473
+ }
474
+ }
475
+ },
476
+ MuiSlider: {
477
+ styleOverrides: {
478
+ root: {
479
+ "&.MuiSlider-sizeSmall": {
480
+ "& .MuiSlider-thumb": {
481
+ borderRadius: r.base.borderRadius.full
482
+ // Circular thumbs
483
+ }
484
+ }
485
+ }
486
+ }
487
+ },
488
+ // ============================================
489
+ // M3-STYLE SWITCH
490
+ // ============================================
491
+ MuiSwitch: {
492
+ styleOverrides: {
493
+ // Medium size (default) - 52x32 track
494
+ root: {
495
+ width: 52,
496
+ height: 32,
497
+ padding: 0,
498
+ "& .MuiSwitch-switchBase": {
499
+ padding: 0,
500
+ margin: 4,
501
+ transitionDuration: "300ms",
502
+ "&.Mui-checked": {
503
+ transform: "translateX(20px)",
504
+ color: "#fff",
505
+ "& + .MuiSwitch-track": {
506
+ backgroundColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
507
+ opacity: 1,
508
+ border: 0
509
+ },
510
+ "& .MuiSwitch-thumb": {
511
+ width: 24,
512
+ height: 24,
513
+ margin: 0
514
+ },
515
+ "&.Mui-disabled + .MuiSwitch-track": {
516
+ opacity: 0.5
517
+ }
518
+ },
519
+ "&.Mui-focusVisible .MuiSwitch-thumb": {
520
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
521
+ border: "6px solid #fff"
522
+ },
523
+ "&.Mui-disabled .MuiSwitch-thumb": {
524
+ color: a === "dark" ? r.base.colors.gray[600] : r.base.colors.gray[300]
525
+ },
526
+ "&.Mui-disabled + .MuiSwitch-track": {
527
+ opacity: a === "dark" ? 0.3 : 0.5
528
+ }
529
+ },
530
+ "& .MuiSwitch-thumb": {
531
+ boxSizing: "border-box",
532
+ width: 16,
533
+ height: 16,
534
+ margin: 4,
535
+ boxShadow: r.base.shadows.sm,
536
+ transition: "all 200ms ease-in-out"
537
+ },
538
+ "& .MuiSwitch-track": {
539
+ borderRadius: 32 / 2,
540
+ backgroundColor: a === "dark" ? r.base.colors.gray[700] : r.base.colors.gray[300],
541
+ border: `2px solid ${a === "dark" ? r.base.colors.gray[500] : r.base.colors.gray[400]}`,
542
+ opacity: 1,
543
+ transition: "background-color 300ms, border-color 300ms",
544
+ boxSizing: "border-box"
545
+ }
546
+ },
547
+ // Small size - 40x24 track (proportionally smaller)
548
+ sizeSmall: {
549
+ width: 40,
550
+ height: 24,
551
+ "& .MuiSwitch-switchBase": {
552
+ margin: 3,
553
+ "&.Mui-checked": {
554
+ transform: "translateX(16px)",
555
+ "& .MuiSwitch-thumb": {
556
+ width: 18,
557
+ height: 18,
558
+ margin: 0
559
+ }
560
+ }
561
+ },
562
+ "& .MuiSwitch-thumb": {
563
+ width: 12,
564
+ height: 12,
565
+ margin: 3
566
+ },
567
+ "& .MuiSwitch-track": {
568
+ borderRadius: 24 / 2
569
+ }
570
+ }
571
+ }
572
+ },
573
+ MuiFormControlLabel: {
574
+ styleOverrides: {
575
+ root: {
576
+ marginLeft: 0,
577
+ gap: r.base.spacing[2]
578
+ // 8px gap between control and label
579
+ }
580
+ }
581
+ },
582
+ MuiAccordion: {
583
+ styleOverrides: {
584
+ root: {
585
+ borderRadius: 0,
586
+ boxShadow: "none",
587
+ backgroundColor: "transparent",
588
+ "&:first-of-type": {
589
+ borderTopLeftRadius: r.base.borderRadius.lg,
590
+ // 12px for accordion container
591
+ borderTopRightRadius: r.base.borderRadius.lg
592
+ },
593
+ "&:last-of-type": {
594
+ borderBottomLeftRadius: r.base.borderRadius.lg,
595
+ borderBottomRightRadius: r.base.borderRadius.lg
596
+ },
597
+ "&:before": {
598
+ display: "none"
599
+ },
600
+ "&.Mui-expanded": {
601
+ margin: 0
602
+ }
603
+ }
604
+ }
605
+ },
606
+ MuiAccordionSummary: {
607
+ styleOverrides: {
608
+ root: {
609
+ minHeight: 48,
610
+ borderBottom: `1px solid ${r.base.colors.gray[100]}`,
611
+ "&.Mui-expanded": {
612
+ minHeight: 48
613
+ }
614
+ },
615
+ content: {
616
+ margin: "12px 0",
617
+ "&.Mui-expanded": {
618
+ margin: "12px 0"
619
+ }
620
+ }
621
+ }
622
+ },
623
+ // ============================================
624
+ // TABLE COMPONENTS
625
+ // ============================================
626
+ MuiTable: {
627
+ styleOverrides: {
628
+ root: {
629
+ borderCollapse: "separate",
630
+ borderSpacing: 0
631
+ }
632
+ }
633
+ },
634
+ MuiTableHead: {
635
+ styleOverrides: {
636
+ root: {
637
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.05)" : r.base.colors.gray[50]
638
+ }
639
+ }
640
+ },
641
+ MuiTableRow: {
642
+ styleOverrides: {
643
+ root: {
644
+ "&:last-child td": {
645
+ borderBottom: 0
646
+ },
647
+ "&.Mui-selected": {
648
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.08)" : r.semantic.effects.overlay.hoverSubtle
649
+ // 4%
650
+ },
651
+ "&.Mui-selected:hover": {
652
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.12)" : r.semantic.effects.overlay.hover
653
+ // 8%
654
+ }
655
+ },
656
+ hover: {
657
+ "&:hover": {
658
+ backgroundColor: a === "dark" ? r.semantic.effects.overlay.hoverSubtle : "rgba(0, 0, 0, 0.02)"
659
+ // @intentional-color: subtle table row hover
660
+ }
661
+ }
662
+ }
663
+ },
664
+ MuiTableCell: {
665
+ styleOverrides: {
666
+ root: {
667
+ borderBottom: `1px solid ${s}`,
668
+ padding: `${r.base.spacing[3]}px ${r.base.spacing[4]}px`
669
+ },
670
+ head: {
671
+ fontWeight: r.base.fontWeight.semibold,
672
+ color: a === "dark" ? r.base.colors.gray[300] : r.base.colors.gray[700],
673
+ fontSize: r.base.fontSize.sm,
674
+ textTransform: "uppercase",
675
+ letterSpacing: "0.05em"
676
+ },
677
+ body: {
678
+ color: a === "dark" ? r.base.colors.gray[100] : r.base.colors.gray[900]
679
+ },
680
+ sizeSmall: {
681
+ padding: `${r.base.spacing[2]}px ${r.base.spacing[3]}px`
682
+ }
683
+ }
684
+ },
685
+ MuiTableSortLabel: {
686
+ styleOverrides: {
687
+ root: {
688
+ color: a === "dark" ? r.base.colors.gray[300] : r.base.colors.gray[700],
689
+ "&:hover": {
690
+ color: a === "dark" ? r.base.colors.gray[100] : r.base.colors.gray[900]
691
+ },
692
+ "&.Mui-active": {
693
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
694
+ }
695
+ },
696
+ icon: {
697
+ color: "inherit !important"
698
+ }
699
+ }
700
+ },
701
+ // ============================================
702
+ // MENU / DROPDOWN COMPONENTS
703
+ // ============================================
704
+ MuiMenu: {
705
+ styleOverrides: {
706
+ paper: {
707
+ borderRadius: r.base.borderRadius.md,
708
+ boxShadow: a === "dark" ? "0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5)" : "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
709
+ border: `1px solid ${s}`,
710
+ marginTop: r.base.spacing[1]
711
+ },
712
+ list: {
713
+ padding: r.base.spacing[1]
714
+ }
715
+ }
716
+ },
717
+ MuiMenuItem: {
718
+ styleOverrides: {
719
+ root: {
720
+ borderRadius: r.base.borderRadius.sm,
721
+ margin: `0 ${r.base.spacing[1]}px`,
722
+ padding: `${r.base.spacing[2]}px ${r.base.spacing[3]}px`,
723
+ fontSize: r.base.fontSize.sm,
724
+ "&:hover": {
725
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.08)" : "rgba(0, 0, 0, 0.04)"
726
+ },
727
+ "&.Mui-selected": {
728
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.12)" : "rgba(5, 7, 66, 0.08)",
729
+ "&:hover": {
730
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.16)" : "rgba(5, 7, 66, 0.12)"
731
+ }
732
+ }
733
+ }
734
+ }
735
+ },
736
+ MuiPopover: {
737
+ styleOverrides: {
738
+ paper: {
739
+ borderRadius: r.base.borderRadius.md,
740
+ boxShadow: a === "dark" ? "0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5)" : "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
741
+ border: `1px solid ${s}`
742
+ }
743
+ }
744
+ },
745
+ // ============================================
746
+ // LIST COMPONENTS
747
+ // ============================================
748
+ MuiList: {
749
+ styleOverrides: {
750
+ root: {
751
+ padding: r.base.spacing[1]
752
+ }
753
+ }
754
+ },
755
+ MuiListItem: {
756
+ styleOverrides: {
757
+ root: {
758
+ borderRadius: r.base.borderRadius.sm,
759
+ marginBottom: r.base.spacing[1],
760
+ "&:last-child": {
761
+ marginBottom: 0
762
+ }
763
+ }
764
+ }
765
+ },
766
+ MuiListItemButton: {
767
+ styleOverrides: {
768
+ root: {
769
+ borderRadius: r.base.borderRadius.sm,
770
+ "&:hover": {
771
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.08)" : "rgba(0, 0, 0, 0.04)"
772
+ },
773
+ "&.Mui-selected": {
774
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.12)" : "rgba(5, 7, 66, 0.08)",
775
+ "&:hover": {
776
+ backgroundColor: a === "dark" ? "rgba(255, 97, 80, 0.16)" : "rgba(5, 7, 66, 0.12)"
777
+ }
778
+ }
779
+ }
780
+ }
781
+ },
782
+ MuiListItemIcon: {
783
+ styleOverrides: {
784
+ root: {
785
+ color: a === "dark" ? r.base.colors.gray[400] : r.base.colors.gray[600],
786
+ minWidth: 40
787
+ }
788
+ }
789
+ },
790
+ // ============================================
791
+ // DRAWER / SIDEBAR
792
+ // ============================================
793
+ MuiDrawer: {
794
+ styleOverrides: {
795
+ paper: {
796
+ backgroundColor: a === "dark" ? r.base.colors.gray[800] : r.base.colors.gray[0],
797
+ borderRight: `1px solid ${s}`
798
+ }
799
+ }
800
+ },
801
+ // ============================================
802
+ // TABS COMPONENTS
803
+ // ============================================
804
+ MuiTabs: {
805
+ styleOverrides: {
806
+ root: {
807
+ minHeight: 40
808
+ },
809
+ indicator: {
810
+ backgroundColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
811
+ height: 3,
812
+ borderRadius: r.base.borderRadius.full
813
+ }
814
+ }
815
+ },
816
+ MuiTab: {
817
+ styleOverrides: {
818
+ root: {
819
+ textTransform: "none",
820
+ fontWeight: r.base.fontWeight.medium,
821
+ fontSize: r.base.fontSize.sm,
822
+ minHeight: 40,
823
+ padding: `${r.base.spacing[2]}px ${r.base.spacing[4]}px`,
824
+ color: a === "dark" ? r.base.colors.gray[400] : r.base.colors.gray[600],
825
+ "&:hover": {
826
+ color: a === "dark" ? r.base.colors.gray[200] : r.base.colors.gray[900],
827
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.04)" : "rgba(0, 0, 0, 0.02)"
828
+ },
829
+ "&.Mui-selected": {
830
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900],
831
+ fontWeight: r.base.fontWeight.semibold
832
+ }
833
+ }
834
+ }
835
+ },
836
+ // ============================================
837
+ // BADGE
838
+ // ============================================
839
+ MuiBadge: {
840
+ styleOverrides: {
841
+ badge: {
842
+ fontWeight: r.base.fontWeight.semibold,
843
+ fontSize: "0.65rem",
844
+ minWidth: 18,
845
+ height: 18,
846
+ padding: "0 4px"
847
+ },
848
+ colorPrimary: {
849
+ backgroundColor: a === "dark" ? r.base.colors.coral[500] : r.base.colors.navy[900]
850
+ },
851
+ colorSecondary: {
852
+ backgroundColor: r.base.colors.coral[500]
853
+ },
854
+ colorError: {
855
+ backgroundColor: r.base.colors.coral[600]
856
+ },
857
+ colorSuccess: {
858
+ backgroundColor: "#1DC286"
859
+ }
860
+ }
861
+ },
862
+ // ============================================
863
+ // AVATAR
864
+ // ============================================
865
+ MuiAvatar: {
866
+ styleOverrides: {
867
+ root: {
868
+ fontWeight: r.base.fontWeight.semibold,
869
+ fontSize: r.base.fontSize.sm
870
+ },
871
+ colorDefault: {
872
+ // Use navy background in light mode, gray in dark mode
873
+ // Always ensure accessible text contrast
874
+ backgroundColor: a === "dark" ? r.base.colors.gray[600] : r.base.colors.navy[900],
875
+ color: a === "dark" ? r.base.colors.gray[100] : r.base.colors.gray[0]
876
+ // White text on navy for accessibility
877
+ }
878
+ }
879
+ },
880
+ MuiAvatarGroup: {
881
+ styleOverrides: {
882
+ root: {
883
+ "& .MuiAvatar-root": {
884
+ borderColor: a === "dark" ? r.base.colors.gray[800] : r.base.colors.gray[0],
885
+ borderWidth: 2
886
+ }
887
+ }
888
+ }
889
+ },
890
+ // ============================================
891
+ // STEPPER
892
+ // ============================================
893
+ MuiStepper: {
894
+ styleOverrides: {
895
+ root: {
896
+ padding: r.base.spacing[3]
897
+ }
898
+ }
899
+ },
900
+ MuiStepLabel: {
901
+ styleOverrides: {
902
+ label: {
903
+ fontWeight: r.base.fontWeight.medium,
904
+ "&.Mui-active": {
905
+ fontWeight: r.base.fontWeight.semibold
906
+ },
907
+ "&.Mui-completed": {
908
+ fontWeight: r.base.fontWeight.medium
909
+ }
910
+ }
911
+ }
912
+ },
913
+ MuiStepIcon: {
914
+ styleOverrides: {
915
+ root: {
916
+ color: a === "dark" ? r.base.colors.gray[600] : r.base.colors.gray[300],
917
+ "&.Mui-active": {
918
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
919
+ },
920
+ "&.Mui-completed": {
921
+ color: "#1DC286"
922
+ }
923
+ }
924
+ }
925
+ },
926
+ // ============================================
927
+ // PAGINATION
928
+ // ============================================
929
+ MuiPagination: {
930
+ styleOverrides: {
931
+ root: {
932
+ "& .MuiPaginationItem-root": {
933
+ borderRadius: r.base.borderRadius.sm
934
+ }
935
+ }
936
+ }
937
+ },
938
+ MuiPaginationItem: {
939
+ styleOverrides: {
940
+ root: {
941
+ fontWeight: r.base.fontWeight.medium,
942
+ "&.Mui-selected": {
943
+ backgroundColor: a === "dark" ? r.base.colors.coral[500] : r.base.colors.navy[900],
944
+ color: r.base.colors.gray[0],
945
+ "&:hover": {
946
+ backgroundColor: a === "dark" ? r.base.colors.coral[400] : r.base.colors.coral[800]
947
+ }
948
+ }
949
+ }
950
+ }
951
+ },
952
+ // ============================================
953
+ // RATING
954
+ // ============================================
955
+ MuiRating: {
956
+ styleOverrides: {
957
+ root: {
958
+ color: "#FFB400"
959
+ },
960
+ iconEmpty: {
961
+ color: a === "dark" ? r.base.colors.gray[600] : r.base.colors.gray[300]
962
+ }
963
+ }
964
+ },
965
+ // ============================================
966
+ // SKELETON
967
+ // ============================================
968
+ MuiSkeleton: {
969
+ styleOverrides: {
970
+ root: {
971
+ backgroundColor: a === "dark" ? "rgba(255, 255, 255, 0.11)" : "rgba(0, 0, 0, 0.08)"
972
+ },
973
+ rounded: {
974
+ borderRadius: r.base.borderRadius.md
975
+ }
976
+ }
977
+ },
978
+ // ============================================
979
+ // SNACKBAR / TOAST
980
+ // ============================================
981
+ MuiSnackbar: {
982
+ styleOverrides: {
983
+ root: {
984
+ "& .MuiSnackbarContent-root": {
985
+ borderRadius: r.base.borderRadius.md
986
+ }
987
+ }
988
+ }
989
+ },
990
+ MuiSnackbarContent: {
991
+ styleOverrides: {
992
+ root: {
993
+ backgroundColor: a === "dark" ? r.base.colors.gray[700] : r.base.colors.gray[900],
994
+ color: r.base.colors.gray[0],
995
+ borderRadius: r.base.borderRadius.md,
996
+ boxShadow: "0 10px 15px -3px rgb(0 0 0 / 0.2), 0 4px 6px -4px rgb(0 0 0 / 0.2)"
997
+ }
998
+ }
999
+ },
1000
+ // ============================================
1001
+ // BREADCRUMBS
1002
+ // ============================================
1003
+ MuiBreadcrumbs: {
1004
+ styleOverrides: {
1005
+ separator: {
1006
+ color: a === "dark" ? r.base.colors.gray[500] : r.base.colors.gray[400]
1007
+ },
1008
+ li: {
1009
+ "& .MuiLink-root": {
1010
+ color: a === "dark" ? r.base.colors.gray[400] : r.base.colors.gray[600],
1011
+ "&:hover": {
1012
+ color: a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]
1013
+ }
1014
+ },
1015
+ "& .MuiTypography-root": {
1016
+ color: a === "dark" ? r.base.colors.gray[200] : r.base.colors.gray[900]
1017
+ }
1018
+ }
1019
+ }
1020
+ },
1021
+ // ============================================
1022
+ // TOOLTIP
1023
+ // ============================================
1024
+ MuiTooltip: {
1025
+ styleOverrides: {
1026
+ tooltip: {
1027
+ backgroundColor: a === "dark" ? r.base.colors.gray[700] : r.base.colors.gray[900],
1028
+ color: r.base.colors.gray[0],
1029
+ fontSize: r.base.fontSize.xs,
1030
+ fontWeight: r.base.fontWeight.medium,
1031
+ padding: `${r.base.spacing[1]}px ${r.base.spacing[2]}px`,
1032
+ borderRadius: r.base.borderRadius.sm
1033
+ },
1034
+ arrow: {
1035
+ color: a === "dark" ? r.base.colors.gray[700] : r.base.colors.gray[900]
1036
+ }
1037
+ }
1038
+ },
1039
+ // ============================================
1040
+ // GLOBAL FOCUS STYLES (Accessibility)
1041
+ // ============================================
1042
+ MuiButtonBase: {
1043
+ styleOverrides: {
1044
+ root: {
1045
+ "&:focus-visible": {
1046
+ outline: `2px solid ${a === "dark" ? r.base.colors.coral[400] : r.base.colors.navy[900]}`,
1047
+ outlineOffset: 2
1048
+ }
1049
+ }
1050
+ }
1051
+ }
1052
+ };
1053
+ }
1054
+ function v(r, a) {
1055
+ const s = { ...u, ...a }, e = r === "dark" ? {
1056
+ mode: "dark",
1057
+ primary: { main: s.base.colors.coral[600], ...s.base.colors.coral },
1058
+ secondary: { main: s.base.colors.purple[500], ...s.base.colors.purple },
1059
+ background: {
1060
+ default: s.base.colors.gray[800],
1061
+ paper: s.base.colors.gray[700]
1062
+ },
1063
+ text: {
1064
+ primary: s.base.colors.gray[50],
1065
+ secondary: s.base.colors.gray[400],
1066
+ disabled: s.base.colors.gray[500]
1067
+ },
1068
+ divider: "rgba(255, 255, 255, 0.12)",
1069
+ action: {
1070
+ active: s.base.colors.gray[100],
1071
+ hover: "rgba(255, 255, 255, 0.08)",
1072
+ selected: "rgba(255, 255, 255, 0.16)",
1073
+ disabled: s.base.colors.gray[600],
1074
+ disabledBackground: "rgba(255, 255, 255, 0.12)"
1075
+ }
1076
+ } : {
1077
+ mode: "light",
1078
+ primary: { main: s.base.colors.navy[900], ...s.base.colors.navy },
1079
+ secondary: { main: s.base.colors.coral[800], ...s.base.colors.coral },
1080
+ background: {
1081
+ default: s.base.colors.gray[50],
1082
+ paper: s.base.colors.gray[0]
1083
+ },
1084
+ text: {
1085
+ primary: s.base.colors.gray[900],
1086
+ secondary: s.base.colors.gray[600],
1087
+ disabled: s.base.colors.gray[400]
1088
+ },
1089
+ divider: s.base.colors.gray[200],
1090
+ action: {
1091
+ active: s.base.colors.gray[700],
1092
+ hover: "rgba(0, 0, 0, 0.04)",
1093
+ selected: "rgba(0, 0, 0, 0.08)",
1094
+ disabled: s.base.colors.gray[400],
1095
+ disabledBackground: s.base.colors.gray[200]
1096
+ }
1097
+ }, d = {
1098
+ fontFamily: '"Montserrat", sans-serif',
1099
+ // Button text style
1100
+ button: {
1101
+ textTransform: "none",
1102
+ fontWeight: s.base.fontWeight.semibold
1103
+ },
1104
+ // Hierarchy-based typography variants
1105
+ // Display variants (Level 1 - Hero/Marketing)
1106
+ h1: {
1107
+ fontSize: o.heading.scale.h1.size,
1108
+ fontWeight: o.heading.scale.h1.weight,
1109
+ lineHeight: o.heading.scale.h1.lineHeight,
1110
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.primary
1111
+ },
1112
+ h2: {
1113
+ fontSize: o.heading.scale.h2.size,
1114
+ fontWeight: o.heading.scale.h2.weight,
1115
+ lineHeight: o.heading.scale.h2.lineHeight,
1116
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.primary
1117
+ },
1118
+ h3: {
1119
+ fontSize: o.heading.scale.h3.size,
1120
+ fontWeight: o.heading.scale.h3.weight,
1121
+ lineHeight: o.heading.scale.h3.lineHeight,
1122
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.primary
1123
+ },
1124
+ h4: {
1125
+ fontSize: o.heading.scale.h4.size,
1126
+ fontWeight: o.heading.scale.h4.weight,
1127
+ lineHeight: o.heading.scale.h4.lineHeight,
1128
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.secondary
1129
+ },
1130
+ h5: {
1131
+ fontSize: o.heading.scale.h5.size,
1132
+ fontWeight: o.heading.scale.h5.weight,
1133
+ lineHeight: o.heading.scale.h5.lineHeight,
1134
+ color: r === "dark" ? s.darkMode.colors.text.secondary : s.semantic.colors.text.secondary
1135
+ },
1136
+ h6: {
1137
+ fontSize: o.heading.scale.h6.size,
1138
+ fontWeight: o.heading.scale.h6.weight,
1139
+ lineHeight: o.heading.scale.h6.lineHeight,
1140
+ color: r === "dark" ? s.darkMode.colors.text.secondary : s.semantic.colors.text.secondary
1141
+ },
1142
+ // Body variants (Level 3 - Content)
1143
+ body1: {
1144
+ fontSize: o.body.scale.medium.size,
1145
+ fontWeight: o.body.scale.medium.weight,
1146
+ lineHeight: o.body.scale.medium.lineHeight,
1147
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.primary
1148
+ },
1149
+ body2: {
1150
+ fontSize: o.body.scale.small.size,
1151
+ fontWeight: o.body.scale.small.weight,
1152
+ lineHeight: o.body.scale.small.lineHeight,
1153
+ color: r === "dark" ? s.darkMode.colors.text.secondary : s.semantic.colors.text.secondary
1154
+ },
1155
+ // Supporting text variants
1156
+ subtitle1: {
1157
+ fontSize: o.label.scale.large.size,
1158
+ fontWeight: o.label.scale.large.weight,
1159
+ lineHeight: o.label.scale.large.lineHeight,
1160
+ color: r === "dark" ? s.darkMode.colors.text.primary : s.semantic.colors.text.primary
1161
+ },
1162
+ subtitle2: {
1163
+ fontSize: o.label.scale.medium.size,
1164
+ fontWeight: o.label.scale.medium.weight,
1165
+ lineHeight: o.label.scale.medium.lineHeight,
1166
+ color: r === "dark" ? s.darkMode.colors.text.secondary : s.semantic.colors.text.secondary
1167
+ },
1168
+ caption: {
1169
+ fontSize: o.caption.scale.default.size,
1170
+ fontWeight: o.caption.scale.default.weight,
1171
+ lineHeight: o.caption.scale.default.lineHeight,
1172
+ color: r === "dark" ? s.darkMode.colors.text.tertiary : s.semantic.colors.text.tertiary
1173
+ },
1174
+ overline: {
1175
+ fontSize: o.overline.scale.default.size,
1176
+ fontWeight: o.overline.scale.default.weight,
1177
+ lineHeight: o.overline.scale.default.lineHeight,
1178
+ letterSpacing: o.overline.scale.default.tracking,
1179
+ textTransform: "uppercase",
1180
+ color: r === "dark" ? s.darkMode.colors.text.tertiary : s.semantic.colors.text.tertiary
1181
+ }
1182
+ };
1183
+ return M({
1184
+ palette: e,
1185
+ typography: d,
1186
+ shape: {
1187
+ borderRadius: s.base.borderRadius.md
1188
+ // 8px base - components override as needed
1189
+ },
1190
+ components: H(s, r)
1191
+ });
1192
+ }
1193
+ const c = {
1194
+ primary: {
1195
+ main: "#050742",
1196
+ // Deep Navy
1197
+ light: "#7841C9",
1198
+ // Light Violet/Purple
1199
+ dark: "#3816A0"
1200
+ // Deep Indigo
1201
+ },
1202
+ secondary: {
1203
+ main: "#FF6150",
1204
+ // Coral
1205
+ light: "#27AAE1",
1206
+ // Azure
1207
+ dark: "#6B12ED"
1208
+ // Electric Indigo
1209
+ },
1210
+ neutral: {
1211
+ white: "#FFFFFF",
1212
+ lightGray: "#FAFAFA",
1213
+ gray100: "#E5E7EB",
1214
+ gray400: "#9CA3AF",
1215
+ gray500: "#6B7280",
1216
+ gray600: "#374151",
1217
+ darkBg: "#18181B",
1218
+ darkPaper: "#27272A"
1219
+ }
1220
+ }, D = {
1221
+ // White text on colored backgrounds
1222
+ whiteOnNavy: { text: c.neutral.white, bg: c.primary.main },
1223
+ whiteOnPurple: { text: c.neutral.white, bg: c.primary.light },
1224
+ // Navy text on light backgrounds
1225
+ navyOnWhite: { text: c.primary.main, bg: c.neutral.white },
1226
+ navyOnCoral: { text: c.primary.main, bg: c.secondary.main },
1227
+ navyOnAzure: { text: c.primary.main, bg: c.secondary.light },
1228
+ // Purple text on white background
1229
+ purpleOnWhite: { text: c.primary.light, bg: c.neutral.white },
1230
+ // Accent colors on navy background
1231
+ coralOnNavy: { text: c.secondary.main, bg: c.primary.main },
1232
+ azureOnNavy: { text: c.secondary.light, bg: c.primary.main }
1233
+ }, E = v("light"), V = v("dark");
1234
+ function j() {
1235
+ const a = C().palette.mode, s = a === "dark";
1236
+ return w(() => ({
1237
+ tokens: u,
1238
+ base: h,
1239
+ semantic: f,
1240
+ component: R,
1241
+ darkMode: m,
1242
+ mode: a,
1243
+ isDarkMode: s,
1244
+ getColor: (l, b) => s && b ? b : l,
1245
+ getSemanticColor: (l, b) => {
1246
+ const y = f.colors[l]?.[b];
1247
+ if (s) {
1248
+ const x = m.colors[l]?.[b];
1249
+ if (x) return x;
1250
+ }
1251
+ return typeof y == "string" ? y : "";
1252
+ },
1253
+ spacing: (l) => h.spacing[l],
1254
+ spacingCss: (l) => `${h.spacing[l]}px`,
1255
+ radius: (l) => h.borderRadius[l],
1256
+ shadow: (l) => h.shadows[l]
1257
+ }), [s, a]);
1258
+ }
1259
+ export {
1260
+ D as accessibleCombinations,
1261
+ X as attentionHierarchy,
1262
+ h as baseTokens,
1263
+ c as brandColors,
1264
+ R as componentTokens,
1265
+ Z as contrastHierarchy,
1266
+ v as createTrinityTheme,
1267
+ m as darkModeTokens,
1268
+ V as darkTheme,
1269
+ q as elevationHierarchy,
1270
+ z as generateCssVariables,
1271
+ $ as generateDarkModeCssVariables,
1272
+ _ as getAttentionColor,
1273
+ W as getContrastRatio,
1274
+ J as getElevation,
1275
+ K as getHierarchySpacing,
1276
+ Q as getTypography,
1277
+ U as hierarchy,
1278
+ F as injectDarkModeCssVariables,
1279
+ P as injectTrinityCssVariables,
1280
+ Y as interactiveHierarchy,
1281
+ E as lightTheme,
1282
+ k as scaleHierarchy,
1283
+ f as semanticTokens,
1284
+ S as spacingHierarchy,
1285
+ u as tokens,
1286
+ o as typographicHierarchy,
1287
+ j as useTrinityTokens,
1288
+ L as validateAccessibility
1289
+ };