@moderneinc/design-system-components 6.0.1-next.d0f7d0 → 6.1.0-alpha.034d53
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/DataGrid/DataGrid.styles.d.ts +1 -1
- package/dist/DataGridFilterPanel/DataGridFilterPanel.d.ts +11 -11
- package/dist/index.d.ts +126 -125
- package/dist/index.esm.js +657 -603
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +660 -606
- package/dist/index.js.map +1 -1
- package/dist/utils/focusRing.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { semanticColors, spacing, typography, borderRadius, shadows, colors, semanticColorsDark, semanticTypography } from '@moderneinc/design-system-tokens';
|
|
3
3
|
import Box from '@mui/material/Box';
|
|
4
|
-
import { styled, alpha } from '@mui/material/styles';
|
|
4
|
+
import { styled, useTheme, alpha } from '@mui/material/styles';
|
|
5
5
|
import Chip, { chipClasses } from '@mui/material/Chip';
|
|
6
6
|
import MuiAvatar from '@mui/material/Avatar';
|
|
7
7
|
import SvgIcon from '@mui/material/SvgIcon';
|
|
@@ -9,7 +9,7 @@ import Alert, { alertClasses } from '@mui/material/Alert';
|
|
|
9
9
|
import ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase';
|
|
10
10
|
import { BadgeInfo, WifiOff, TriangleAlert, CircleAlert, CircleCheckBig, X, ChevronRight, Square, SquareCheck, SquareMinus, Search, ChevronDown, Plus, Trash2, ArrowUp, ArrowDown, ChevronsUpDown, Columns3, ListFilter, HelpCircle, CalendarDays, Minus, ChevronLeft, AlertCircle, ChevronUp } from 'lucide-react';
|
|
11
11
|
import IconButton, { iconButtonClasses } from '@mui/material/IconButton';
|
|
12
|
-
import React, { useState, useRef, useCallback, useMemo, useEffect, createContext, useContext, useLayoutEffect, Children, isValidElement, cloneElement
|
|
12
|
+
import React, { useState, useRef, useCallback, useMemo, forwardRef, useEffect, createContext, useContext, useLayoutEffect, Children, isValidElement, cloneElement } from 'react';
|
|
13
13
|
import Breadcrumbs, { breadcrumbsClasses } from '@mui/material/Breadcrumbs';
|
|
14
14
|
import Link from '@mui/material/Link';
|
|
15
15
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
@@ -24,9 +24,11 @@ import Divider from '@mui/material/Divider';
|
|
|
24
24
|
import InputAdornment, { inputAdornmentClasses } from '@mui/material/InputAdornment';
|
|
25
25
|
import InputBase, { inputBaseClasses } from '@mui/material/InputBase';
|
|
26
26
|
import TextField from '@mui/material/TextField';
|
|
27
|
+
import FormControl from '@mui/material/FormControl';
|
|
27
28
|
import { formLabelClasses } from '@mui/material/FormLabel';
|
|
28
|
-
import
|
|
29
|
+
import MuiInputLabel, { inputLabelClasses } from '@mui/material/InputLabel';
|
|
29
30
|
import MuiSelect, { selectClasses } from '@mui/material/Select';
|
|
31
|
+
import { mergeSlotProps, useForkRef } from '@mui/material/utils';
|
|
30
32
|
import MenuItem, { menuItemClasses } from '@mui/material/MenuItem';
|
|
31
33
|
import Tooltip, { tooltipClasses } from '@mui/material/Tooltip';
|
|
32
34
|
import { dayCalendarClasses } from '@mui/x-date-pickers/DateCalendar';
|
|
@@ -41,7 +43,6 @@ import { startOfDay, endOfDay, subDays, startOfMonth, subMonths, endOfMonth, sta
|
|
|
41
43
|
import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';
|
|
42
44
|
import Paper, { paperClasses } from '@mui/material/Paper';
|
|
43
45
|
import Stack from '@mui/material/Stack';
|
|
44
|
-
import FormControl from '@mui/material/FormControl';
|
|
45
46
|
import FormHelperText, { formHelperTextClasses } from '@mui/material/FormHelperText';
|
|
46
47
|
import ListItemButton, { listItemButtonClasses } from '@mui/material/ListItemButton';
|
|
47
48
|
import ListItemIcon, { listItemIconClasses } from '@mui/material/ListItemIcon';
|
|
@@ -80,29 +81,35 @@ import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro';
|
|
|
80
81
|
const MUI_INTERNAL_PROPS = ['ownerState', 'theme', 'sx', 'as'];
|
|
81
82
|
const isMuiInternalProp = (prop) => MUI_INTERNAL_PROPS.includes(prop);
|
|
82
83
|
|
|
84
|
+
// semanticColors.status.<name> feeds `palette` below, read with
|
|
85
|
+
// .light/.dark/.transparent, so the phase-2 token restructure's codemod
|
|
86
|
+
// (driven from literal TOKEN_MAP paths) cannot reach either — fixed by hand,
|
|
87
|
+
// mirroring ModStatusCell/Dot. See
|
|
88
|
+
// docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
89
|
+
// "Dynamic access — the codemod cannot see these".
|
|
83
90
|
const STATUS_COLOR_CLASSES = [
|
|
84
|
-
[chipClasses.colorDefault, semanticColors.status.neutral],
|
|
85
|
-
[chipClasses.colorError, semanticColors.status.error],
|
|
86
|
-
[chipClasses.colorWarning, semanticColors.status.warning],
|
|
87
|
-
[chipClasses.colorSuccess, semanticColors.status.success],
|
|
88
|
-
[chipClasses.colorInfo, semanticColors.status.info],
|
|
91
|
+
[chipClasses.colorDefault, semanticColors.color.status.neutral],
|
|
92
|
+
[chipClasses.colorError, semanticColors.color.status.error],
|
|
93
|
+
[chipClasses.colorWarning, semanticColors.color.status.warning],
|
|
94
|
+
[chipClasses.colorSuccess, semanticColors.color.status.success],
|
|
95
|
+
[chipClasses.colorInfo, semanticColors.color.status.info],
|
|
89
96
|
];
|
|
90
97
|
const outlinedColorOverrides = {
|
|
91
98
|
backgroundColor: 'transparent',
|
|
92
|
-
color: semanticColors.
|
|
93
|
-
border: `1px solid ${semanticColors.border.
|
|
99
|
+
color: semanticColors.color.text.secondary,
|
|
100
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
94
101
|
[`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {
|
|
95
|
-
color: semanticColors.
|
|
102
|
+
color: semanticColors.color.text.secondary,
|
|
96
103
|
},
|
|
97
104
|
};
|
|
98
105
|
const filledColorRules = Object.fromEntries(STATUS_COLOR_CLASSES.map(([className, palette]) => [
|
|
99
106
|
`&.${className}`,
|
|
100
107
|
{
|
|
101
|
-
backgroundColor: palette.
|
|
102
|
-
color: palette.
|
|
103
|
-
border: `1px solid ${palette.
|
|
108
|
+
backgroundColor: palette.bg,
|
|
109
|
+
color: palette.fg,
|
|
110
|
+
border: `1px solid ${palette.tint}`,
|
|
104
111
|
[`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {
|
|
105
|
-
color: palette.
|
|
112
|
+
color: palette.fg,
|
|
106
113
|
},
|
|
107
114
|
},
|
|
108
115
|
]));
|
|
@@ -176,7 +183,7 @@ const avatarIndexFromSeed = (seed) => seed ? ((djb2Hash(seed) % 7) + 1) : undefi
|
|
|
176
183
|
* Produces a double-ring effect: a white inner gap (via outline-offset) and a colored outer ring.
|
|
177
184
|
*/
|
|
178
185
|
const focusRingStyles = {
|
|
179
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
186
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
180
187
|
outlineOffset: '2px',
|
|
181
188
|
};
|
|
182
189
|
|
|
@@ -184,9 +191,14 @@ const sizeConfig$1 = {
|
|
|
184
191
|
small: { size: spacing.spacing_2_1_2, fontSize: typography.fontSize.xs },
|
|
185
192
|
medium: { size: spacing.spacing_4, fontSize: typography.fontSize.xs },
|
|
186
193
|
};
|
|
194
|
+
// semanticColors.avatar.initials[...] is a computed member access, so the
|
|
195
|
+
// phase-2 token restructure's codemod (driven from literal TOKEN_MAP paths)
|
|
196
|
+
// cannot reach it — fixed by hand, mirroring ModStatusCell/Dot. See
|
|
197
|
+
// docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
198
|
+
// "Dynamic access — the codemod cannot see these".
|
|
187
199
|
const indexedColors = (colorIndex) => ({
|
|
188
|
-
color: semanticColors.avatar.initials[`
|
|
189
|
-
backgroundColor: semanticColors.avatar.initials[`
|
|
200
|
+
color: semanticColors.avatar.initials[`fg${colorIndex}`],
|
|
201
|
+
backgroundColor: semanticColors.avatar.initials[`bg${colorIndex}`],
|
|
190
202
|
borderColor: semanticColors.avatar.initials[`border${colorIndex}`],
|
|
191
203
|
});
|
|
192
204
|
const StyledAvatar = styled(MuiAvatar, {
|
|
@@ -201,13 +213,13 @@ const StyledAvatar = styled(MuiAvatar, {
|
|
|
201
213
|
fontFamily: typography.fontFamily.body,
|
|
202
214
|
fontWeight: typography.fontWeight.regular,
|
|
203
215
|
lineHeight: 1,
|
|
204
|
-
color: semanticColors.avatar.
|
|
205
|
-
backgroundColor: semanticColors.avatar.
|
|
206
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
216
|
+
color: semanticColors.avatar.user.fg,
|
|
217
|
+
backgroundColor: semanticColors.avatar.user.bg,
|
|
218
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
207
219
|
...(avatarColorIndex && indexedColors(avatarColorIndex)),
|
|
208
220
|
'&:focus-visible': {
|
|
209
221
|
...focusRingStyles,
|
|
210
|
-
borderColor: semanticColors.border.focus,
|
|
222
|
+
borderColor: semanticColors.color.border.focus,
|
|
211
223
|
},
|
|
212
224
|
};
|
|
213
225
|
});
|
|
@@ -322,7 +334,7 @@ const HeaderContainer = styled(Box)(({ size }) => {
|
|
|
322
334
|
return {
|
|
323
335
|
width: '34px',
|
|
324
336
|
height: `${modRowHeights[size]}px`,
|
|
325
|
-
borderBottom: `1px solid ${semanticColors.border.
|
|
337
|
+
borderBottom: `1px solid ${semanticColors.color.border.primary}`,
|
|
326
338
|
boxSizing: 'border-box',
|
|
327
339
|
display: 'flex',
|
|
328
340
|
alignItems: 'center',
|
|
@@ -430,7 +442,7 @@ const ModActivityIndicatorCell = ({ event = 'commit-job', secondaryEvent, scene
|
|
|
430
442
|
if (scene === ActivityScene.BLANK) {
|
|
431
443
|
return null;
|
|
432
444
|
}
|
|
433
|
-
const color = event !== 'none' ? ACTIVITY_COLORS[event] : semanticColors.border.
|
|
445
|
+
const color = event !== 'none' ? ACTIVITY_COLORS[event] : semanticColors.color.border.primary;
|
|
434
446
|
// Use secondary color for paths if specified, otherwise use primary color
|
|
435
447
|
const pathColor = secondaryEvent && secondaryEvent !== 'none' ? ACTIVITY_COLORS[secondaryEvent] : color;
|
|
436
448
|
switch (scene) {
|
|
@@ -458,12 +470,18 @@ const ModActivityIndicatorCell = ({ event = 'commit-job', secondaryEvent, scene
|
|
|
458
470
|
ModActivityIndicatorCell.displayName = 'ModActivityIndicatorCell';
|
|
459
471
|
|
|
460
472
|
const neutralSmallShadow = `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`;
|
|
473
|
+
// semanticColors.status[intent] is read dynamically below, so the phase-2
|
|
474
|
+
// token restructure's codemod (driven from literal TOKEN_MAP paths) cannot
|
|
475
|
+
// reach these group references or the .default/.dark/.light/.transparent
|
|
476
|
+
// reads on `palette` — fixed by hand, mirroring ModStatusCell/Dot. See
|
|
477
|
+
// docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
478
|
+
// "Dynamic access — the codemod cannot see these".
|
|
461
479
|
const intentColors$1 = {
|
|
462
|
-
success: semanticColors.status.success,
|
|
463
|
-
error: semanticColors.status.error,
|
|
464
|
-
warning: semanticColors.status.warning,
|
|
465
|
-
offline: semanticColors.status.neutral,
|
|
466
|
-
info: semanticColors.status.info,
|
|
480
|
+
success: semanticColors.color.status.success,
|
|
481
|
+
error: semanticColors.color.status.error,
|
|
482
|
+
warning: semanticColors.color.status.warning,
|
|
483
|
+
offline: semanticColors.color.status.neutral,
|
|
484
|
+
info: semanticColors.color.status.info,
|
|
467
485
|
};
|
|
468
486
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
469
487
|
const StyledAlert$2 = styled(Alert, {
|
|
@@ -472,10 +490,10 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
472
490
|
const palette = intentColors$1[intent];
|
|
473
491
|
const isFilled = alertType === 'filled';
|
|
474
492
|
const isCompact = alertSize === 'compact';
|
|
475
|
-
const iconColor = isFilled ? semanticColors.
|
|
493
|
+
const iconColor = isFilled ? semanticColors.color.text.tooltip : palette.solid;
|
|
476
494
|
const messageColor = isFilled
|
|
477
|
-
? semanticColors.
|
|
478
|
-
: semanticColors.
|
|
495
|
+
? semanticColors.color.text.tooltip
|
|
496
|
+
: semanticColors.color.text.primary;
|
|
479
497
|
return {
|
|
480
498
|
...(isCompact
|
|
481
499
|
? { minHeight: spacing.spacing_5 }
|
|
@@ -492,9 +510,9 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
492
510
|
padding: hasChildren
|
|
493
511
|
? `${spacing.spacing_1_1_2}px ${spacing.spacing_2}px`
|
|
494
512
|
: `0 ${spacing.spacing_2}px`,
|
|
495
|
-
backgroundColor: isFilled ? palette.
|
|
496
|
-
border: isFilled ? 'none' : `1px solid ${palette.
|
|
497
|
-
color: isFilled ? semanticColors.
|
|
513
|
+
backgroundColor: isFilled ? palette.fg : palette.bg,
|
|
514
|
+
border: isFilled ? 'none' : `1px solid ${palette.tint}`,
|
|
515
|
+
color: isFilled ? semanticColors.color.text.tooltip : semanticColors.color.text.primary,
|
|
498
516
|
boxShadow: isFilled ? neutralSmallShadow : undefined,
|
|
499
517
|
[`& .${alertClasses.icon}`]: {
|
|
500
518
|
color: iconColor,
|
|
@@ -512,9 +530,7 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
512
530
|
'& span:last-child': {
|
|
513
531
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
514
532
|
fontWeight: typography.fontWeight.medium,
|
|
515
|
-
color: isFilled
|
|
516
|
-
? semanticColors.typography.tooltip.default
|
|
517
|
-
: semanticColors.typography.bodySecondary,
|
|
533
|
+
color: isFilled ? semanticColors.color.text.tooltip : semanticColors.color.text.secondary,
|
|
518
534
|
lineHeight: 1.4,
|
|
519
535
|
},
|
|
520
536
|
},
|
|
@@ -522,7 +538,7 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
522
538
|
padding: 0,
|
|
523
539
|
marginRight: 0,
|
|
524
540
|
...(isFilled && {
|
|
525
|
-
color: semanticColors.
|
|
541
|
+
color: semanticColors.color.text.tooltip,
|
|
526
542
|
[`& .${buttonBaseClasses.root}`]: { color: 'inherit' },
|
|
527
543
|
}),
|
|
528
544
|
},
|
|
@@ -544,12 +560,18 @@ const ModAlert = ({ intent = 'success', type = 'outlined', size = 'default', tit
|
|
|
544
560
|
};
|
|
545
561
|
ModAlert.displayName = 'ModAlert';
|
|
546
562
|
|
|
563
|
+
// semanticColors.status[intent] is read dynamically below, so the phase-2
|
|
564
|
+
// token restructure's codemod (driven from literal TOKEN_MAP paths) cannot
|
|
565
|
+
// reach these group references or the .default/.dark/.light reads on
|
|
566
|
+
// `palette` — fixed by hand, mirroring ModStatusCell/Dot. See
|
|
567
|
+
// docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
568
|
+
// "Dynamic access — the codemod cannot see these".
|
|
547
569
|
const intentColors = {
|
|
548
|
-
info: semanticColors.status.info,
|
|
549
|
-
success: semanticColors.status.success,
|
|
550
|
-
error: semanticColors.status.error,
|
|
551
|
-
warning: semanticColors.status.warning,
|
|
552
|
-
neutral: semanticColors.status.neutral,
|
|
570
|
+
info: semanticColors.color.status.info,
|
|
571
|
+
success: semanticColors.color.status.success,
|
|
572
|
+
error: semanticColors.color.status.error,
|
|
573
|
+
warning: semanticColors.color.status.warning,
|
|
574
|
+
neutral: semanticColors.color.status.neutral,
|
|
553
575
|
};
|
|
554
576
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
555
577
|
const StyledAlert$1 = styled(Alert, {
|
|
@@ -558,12 +580,12 @@ const StyledAlert$1 = styled(Alert, {
|
|
|
558
580
|
const palette = intentColors[intent];
|
|
559
581
|
const typeStyles = bannerType === 'filled'
|
|
560
582
|
? {
|
|
561
|
-
backgroundColor: palette.
|
|
562
|
-
color: semanticColors.
|
|
583
|
+
backgroundColor: palette.fg,
|
|
584
|
+
color: semanticColors.color.surface.raised,
|
|
563
585
|
}
|
|
564
586
|
: {
|
|
565
|
-
backgroundColor: palette.
|
|
566
|
-
color: semanticColors.
|
|
587
|
+
backgroundColor: palette.bg,
|
|
588
|
+
color: semanticColors.color.text.primary,
|
|
567
589
|
};
|
|
568
590
|
return {
|
|
569
591
|
width: '100%',
|
|
@@ -612,8 +634,8 @@ const LinkText = styled('span')(({ bannerType = 'outlined' }) => ({
|
|
|
612
634
|
marginLeft: 'auto',
|
|
613
635
|
fontWeight: typography.fontWeight.semiBold,
|
|
614
636
|
color: bannerType === 'filled'
|
|
615
|
-
? semanticColors.
|
|
616
|
-
: semanticColors.
|
|
637
|
+
? semanticColors.color.text.linkOnBrand
|
|
638
|
+
: semanticColors.color.text.link,
|
|
617
639
|
cursor: 'pointer',
|
|
618
640
|
whiteSpace: 'nowrap',
|
|
619
641
|
'&:hover': {
|
|
@@ -640,7 +662,7 @@ const ModBanner = ({ intent = 'info', type = 'outlined', message, messagePositio
|
|
|
640
662
|
if (dismissed) {
|
|
641
663
|
return null;
|
|
642
664
|
}
|
|
643
|
-
const closeIconColor = type === 'filled' ? semanticColors.
|
|
665
|
+
const closeIconColor = type === 'filled' ? semanticColors.color.surface.raised : intentColors[intent].solid;
|
|
644
666
|
return (jsx(StyledAlert$1, { ...props, intent: intent, bannerType: type, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsx(StyledIconButton, { size: "small", onClick: handleClose, closeIconColor: closeIconColor, children: jsx(X, { size: 16 }) })) : undefined, children: messagePosition === 'center' ? (jsxs(Fragment, { children: [icon, jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) : (jsxs(Fragment, { children: [jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) }));
|
|
645
667
|
};
|
|
646
668
|
ModBanner.displayName = 'ModBanner';
|
|
@@ -648,7 +670,7 @@ ModBanner.displayName = 'ModBanner';
|
|
|
648
670
|
const StyledBreadcrumbs = styled(Breadcrumbs)(() => ({
|
|
649
671
|
[`& .${breadcrumbsClasses.separator}`]: {
|
|
650
672
|
margin: 0,
|
|
651
|
-
color: semanticColors.
|
|
673
|
+
color: semanticColors.color.icon.utility,
|
|
652
674
|
},
|
|
653
675
|
[`& .${breadcrumbsClasses.ol}`]: {
|
|
654
676
|
gap: spacing.spacing_1,
|
|
@@ -661,15 +683,15 @@ const StyledBreadcrumbLink = styled(Link, {
|
|
|
661
683
|
fontWeight: typography.fontWeight.medium,
|
|
662
684
|
lineHeight: 1,
|
|
663
685
|
textDecoration: 'none',
|
|
664
|
-
color: current ? semanticColors.
|
|
686
|
+
color: current ? semanticColors.color.text.secondary : semanticColors.color.text.link,
|
|
665
687
|
cursor: current ? 'default' : 'pointer',
|
|
666
688
|
borderRadius: borderRadius.xS,
|
|
667
689
|
transition: 'color 0.2s ease-in-out',
|
|
668
690
|
'&:hover': {
|
|
669
|
-
color: current ? semanticColors.
|
|
691
|
+
color: current ? semanticColors.color.icon.hover : semanticColors.button.tertiary.fgHover,
|
|
670
692
|
},
|
|
671
693
|
'&:focus-visible': {
|
|
672
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
694
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
673
695
|
outlineOffset: 2,
|
|
674
696
|
},
|
|
675
697
|
}));
|
|
@@ -707,7 +729,7 @@ function ModBreadcrumbLink({ current = false, children, component, ...props }) {
|
|
|
707
729
|
* ```
|
|
708
730
|
*/
|
|
709
731
|
function ModBreadcrumbs({ children, className }) {
|
|
710
|
-
return (jsx(StyledBreadcrumbs, { separator: jsx(ChevronRight, { size: 10.67, color: semanticColors.
|
|
732
|
+
return (jsx(StyledBreadcrumbs, { separator: jsx(ChevronRight, { size: 10.67, color: semanticColors.color.icon.utility }), className: className, "aria-label": "breadcrumb", children: children }));
|
|
711
733
|
}
|
|
712
734
|
|
|
713
735
|
// Props that should not be forwarded to ButtonBase (Button-specific props that ButtonBase doesn't support)
|
|
@@ -759,90 +781,90 @@ const StyledButtonBase$1 = styled(ButtonBase, {
|
|
|
759
781
|
},
|
|
760
782
|
// Focus visible for keyboard navigation
|
|
761
783
|
[`&.${buttonBaseClasses.focusVisible}`]: {
|
|
762
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
784
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
763
785
|
outlineOffset: 2,
|
|
764
786
|
},
|
|
765
787
|
};
|
|
766
788
|
// Variant-specific styles
|
|
767
789
|
const variantStyles = {
|
|
768
790
|
primary: {
|
|
769
|
-
backgroundColor: semanticColors.
|
|
770
|
-
color: semanticColors.
|
|
791
|
+
backgroundColor: semanticColors.button.primary.bg,
|
|
792
|
+
color: semanticColors.color.surface.raised,
|
|
771
793
|
border: 'none',
|
|
772
794
|
'&:hover': {
|
|
773
|
-
backgroundColor: semanticColors.
|
|
795
|
+
backgroundColor: semanticColors.button.primary.bgHover,
|
|
774
796
|
},
|
|
775
797
|
'&:active': {
|
|
776
|
-
backgroundColor: semanticColors.
|
|
798
|
+
backgroundColor: semanticColors.button.primary.bgPressed,
|
|
777
799
|
},
|
|
778
800
|
...(loading
|
|
779
801
|
? {}
|
|
780
802
|
: {
|
|
781
803
|
[`&.${buttonBaseClasses.disabled}`]: {
|
|
782
|
-
backgroundColor: semanticColors.
|
|
783
|
-
color: semanticColors.
|
|
804
|
+
backgroundColor: semanticColors.button.primary.bgDisabled,
|
|
805
|
+
color: semanticColors.button.fgDisabled,
|
|
784
806
|
},
|
|
785
807
|
}),
|
|
786
808
|
},
|
|
787
809
|
secondary: {
|
|
788
|
-
backgroundColor: semanticColors.
|
|
789
|
-
color: semanticColors.
|
|
790
|
-
border: `1px solid ${semanticColors.
|
|
810
|
+
backgroundColor: semanticColors.button.secondary.bg,
|
|
811
|
+
color: semanticColors.button.secondary.fg,
|
|
812
|
+
border: `1px solid ${semanticColors.button.secondary.border}`,
|
|
791
813
|
'&:hover': {
|
|
792
|
-
backgroundColor: semanticColors.
|
|
814
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
793
815
|
},
|
|
794
816
|
'&:active': {
|
|
795
|
-
backgroundColor: semanticColors.
|
|
817
|
+
backgroundColor: semanticColors.button.secondary.bgPressed,
|
|
796
818
|
},
|
|
797
819
|
...(loading
|
|
798
820
|
? {}
|
|
799
821
|
: {
|
|
800
822
|
[`&.${buttonBaseClasses.disabled}`]: {
|
|
801
|
-
backgroundColor: semanticColors.
|
|
802
|
-
borderColor: semanticColors.border.
|
|
803
|
-
color: semanticColors.
|
|
823
|
+
backgroundColor: semanticColors.button.secondary.bgDisabled,
|
|
824
|
+
borderColor: semanticColors.color.border.primary,
|
|
825
|
+
color: semanticColors.button.fgDisabled,
|
|
804
826
|
},
|
|
805
827
|
}),
|
|
806
828
|
},
|
|
807
829
|
destructive: {
|
|
808
|
-
backgroundColor: semanticColors.
|
|
809
|
-
color: semanticColors.
|
|
830
|
+
backgroundColor: semanticColors.button.destructive.bg,
|
|
831
|
+
color: semanticColors.color.surface.raised,
|
|
810
832
|
border: 'none',
|
|
811
833
|
'&:hover': {
|
|
812
|
-
backgroundColor: semanticColors.status.error.
|
|
834
|
+
backgroundColor: semanticColors.color.status.error.fg,
|
|
813
835
|
},
|
|
814
836
|
'&:active': {
|
|
815
|
-
backgroundColor: semanticColors.status.error.
|
|
837
|
+
backgroundColor: semanticColors.color.status.error.fg,
|
|
816
838
|
filter: 'brightness(0.9)',
|
|
817
839
|
},
|
|
818
840
|
...(loading
|
|
819
841
|
? {}
|
|
820
842
|
: {
|
|
821
843
|
[`&.${buttonBaseClasses.disabled}`]: {
|
|
822
|
-
backgroundColor: semanticColors.
|
|
823
|
-
color: semanticColors.
|
|
844
|
+
backgroundColor: semanticColors.button.primary.bgDisabled,
|
|
845
|
+
color: semanticColors.button.fgDisabled,
|
|
824
846
|
},
|
|
825
847
|
}),
|
|
826
848
|
},
|
|
827
849
|
tertiary: {
|
|
828
850
|
backgroundColor: 'transparent',
|
|
829
|
-
color: semanticColors.
|
|
851
|
+
color: semanticColors.color.text.input,
|
|
830
852
|
border: 'none',
|
|
831
853
|
padding: 0,
|
|
832
854
|
lineHeight: 1,
|
|
833
855
|
'&:hover': {
|
|
834
856
|
backgroundColor: 'transparent',
|
|
835
|
-
color: semanticColors.
|
|
857
|
+
color: semanticColors.button.tertiary.fgHover,
|
|
836
858
|
},
|
|
837
859
|
'&:active': {
|
|
838
|
-
color: semanticColors.
|
|
860
|
+
color: semanticColors.button.tertiary.fgPressed,
|
|
839
861
|
},
|
|
840
862
|
...(loading
|
|
841
863
|
? {}
|
|
842
864
|
: {
|
|
843
865
|
[`&.${buttonBaseClasses.disabled}`]: {
|
|
844
866
|
backgroundColor: 'transparent',
|
|
845
|
-
color: semanticColors.
|
|
867
|
+
color: semanticColors.button.tertiary.fgDisabled,
|
|
846
868
|
},
|
|
847
869
|
}),
|
|
848
870
|
},
|
|
@@ -857,10 +879,10 @@ const LoadingSpinner = styled(CircularProgress, {
|
|
|
857
879
|
})(({ $variant }) => {
|
|
858
880
|
// Use appropriate spinner color for each variant to ensure visibility
|
|
859
881
|
const spinnerColors = {
|
|
860
|
-
primary: semanticColors.
|
|
861
|
-
secondary: semanticColors.
|
|
862
|
-
destructive: semanticColors.
|
|
863
|
-
tertiary: semanticColors.
|
|
882
|
+
primary: semanticColors.color.surface.raised,
|
|
883
|
+
secondary: semanticColors.button.primary.bg,
|
|
884
|
+
destructive: semanticColors.color.surface.raised,
|
|
885
|
+
tertiary: semanticColors.button.tertiary.fg,
|
|
864
886
|
};
|
|
865
887
|
return {
|
|
866
888
|
color: spinnerColors[$variant],
|
|
@@ -878,7 +900,7 @@ const StyledButtonTab = styled(MuiToggleButton)(({ theme }) => ({
|
|
|
878
900
|
fontFamily: typography.fontFamily.body,
|
|
879
901
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
880
902
|
lineHeight: 1,
|
|
881
|
-
color: semanticColors.
|
|
903
|
+
color: semanticColors.color.text.tabInactive,
|
|
882
904
|
backgroundColor: 'transparent',
|
|
883
905
|
border: 'none',
|
|
884
906
|
padding: `${spacing.spacing_1}px ${spacing.spacing_1_1_2}px`,
|
|
@@ -888,15 +910,15 @@ const StyledButtonTab = styled(MuiToggleButton)(({ theme }) => ({
|
|
|
888
910
|
duration: theme.transitions.duration.short,
|
|
889
911
|
}),
|
|
890
912
|
'&:hover': {
|
|
891
|
-
color: semanticColors.
|
|
913
|
+
color: semanticColors.color.text.tabActive,
|
|
892
914
|
},
|
|
893
915
|
'&.Mui-focusVisible': {
|
|
894
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
916
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
895
917
|
outlineOffset: -2,
|
|
896
918
|
borderRadius: borderRadius.xXS,
|
|
897
919
|
},
|
|
898
920
|
'&.Mui-disabled': {
|
|
899
|
-
color: semanticColors.
|
|
921
|
+
color: semanticColors.button.fgDisabled,
|
|
900
922
|
cursor: 'default',
|
|
901
923
|
pointerEvents: 'none',
|
|
902
924
|
},
|
|
@@ -958,7 +980,7 @@ const StyledButtonTabGroup = styled(MuiToggleButtonGroup)(({ theme, size = 'medi
|
|
|
958
980
|
};
|
|
959
981
|
return {
|
|
960
982
|
borderRadius: borderRadius.button,
|
|
961
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
983
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
962
984
|
overflow: 'hidden',
|
|
963
985
|
// Style all grouped children
|
|
964
986
|
[`& .${toggleButtonGroupClasses.grouped}`]: {
|
|
@@ -971,26 +993,26 @@ const StyledButtonTabGroup = styled(MuiToggleButtonGroup)(({ theme, size = 'medi
|
|
|
971
993
|
lineHeight: 1,
|
|
972
994
|
textTransform: 'none',
|
|
973
995
|
border: 'none',
|
|
974
|
-
borderRight: `1px solid ${semanticColors.border.primary}`,
|
|
996
|
+
borderRight: `1px solid ${semanticColors.color.border.primary}`,
|
|
975
997
|
borderRadius: 0,
|
|
976
|
-
color: semanticColors.
|
|
977
|
-
backgroundColor: semanticColors.
|
|
998
|
+
color: semanticColors.color.text.tabInactive,
|
|
999
|
+
backgroundColor: semanticColors.button.secondary.bgDisabled,
|
|
978
1000
|
transition: theme.transitions.create(['background-color', 'color', 'border-color'], {
|
|
979
1001
|
duration: theme.transitions.duration.short,
|
|
980
1002
|
}),
|
|
981
1003
|
// Selected state — double selector for specificity over MUI ToggleButton defaults
|
|
982
1004
|
[`&.${toggleButtonClasses.selected}.${toggleButtonClasses.selected}`]: {
|
|
983
|
-
backgroundColor: semanticColors.
|
|
984
|
-
color: semanticColors.
|
|
1005
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
1006
|
+
color: semanticColors.button.tertiary.fg,
|
|
985
1007
|
fontWeight: typography.fontWeight.semiBold,
|
|
986
1008
|
},
|
|
987
1009
|
// Hover state
|
|
988
1010
|
[`&:hover, &.${toggleButtonClasses.selected}:hover`]: {
|
|
989
|
-
backgroundColor: semanticColors.
|
|
1011
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
990
1012
|
},
|
|
991
1013
|
// Focus visible for keyboard navigation
|
|
992
1014
|
'&.Mui-focusVisible': {
|
|
993
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
1015
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
994
1016
|
outlineOffset: -2,
|
|
995
1017
|
zIndex: 1,
|
|
996
1018
|
},
|
|
@@ -1007,8 +1029,8 @@ const StyledButtonTabGroup = styled(MuiToggleButtonGroup)(({ theme, size = 'medi
|
|
|
1007
1029
|
},
|
|
1008
1030
|
// Disabled state
|
|
1009
1031
|
[`&.${toggleButtonClasses.disabled}`]: {
|
|
1010
|
-
backgroundColor: semanticColors.
|
|
1011
|
-
color: semanticColors.
|
|
1032
|
+
backgroundColor: semanticColors.button.secondary.bgDisabled,
|
|
1033
|
+
color: semanticColors.button.fgDisabled,
|
|
1012
1034
|
cursor: 'not-allowed',
|
|
1013
1035
|
pointerEvents: 'auto',
|
|
1014
1036
|
},
|
|
@@ -1053,18 +1075,18 @@ const SmallStyledCard = styled(MuiCard, {
|
|
|
1053
1075
|
display: 'flex',
|
|
1054
1076
|
flexDirection: 'column',
|
|
1055
1077
|
gap: spacing.spacing_2, // 16px
|
|
1056
|
-
backgroundColor: semanticColors.
|
|
1057
|
-
border: `1px solid ${selected ? semanticColors.
|
|
1078
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
1079
|
+
border: `1px solid ${selected ? semanticColors.button.primary.bg : semanticColors.color.border.primary}`,
|
|
1058
1080
|
borderRadius: borderRadius.card,
|
|
1059
1081
|
boxShadow: selected ? activeShadow : 'none',
|
|
1060
1082
|
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
1061
1083
|
cursor: 'pointer',
|
|
1062
1084
|
'&:hover': {
|
|
1063
|
-
borderColor: semanticColors.
|
|
1085
|
+
borderColor: semanticColors.button.primary.bg,
|
|
1064
1086
|
boxShadow: activeShadow,
|
|
1065
1087
|
},
|
|
1066
1088
|
'&:focus-visible': {
|
|
1067
|
-
borderColor: semanticColors.
|
|
1089
|
+
borderColor: semanticColors.button.primary.bg,
|
|
1068
1090
|
...focusRingStyles,
|
|
1069
1091
|
},
|
|
1070
1092
|
...(disabled && {
|
|
@@ -1089,7 +1111,7 @@ const SmallRecipeCount = styled('p')(({ theme }) => ({
|
|
|
1089
1111
|
fontSize: theme.typography.pxToRem(typography.fontSize.xxs), // 10px
|
|
1090
1112
|
fontWeight: typography.fontWeight.semiBold, // 600
|
|
1091
1113
|
lineHeight: 1.2,
|
|
1092
|
-
color: semanticColors.
|
|
1114
|
+
color: semanticColors.color.text.primary,
|
|
1093
1115
|
whiteSpace: 'nowrap',
|
|
1094
1116
|
}));
|
|
1095
1117
|
const SmallCardContent = styled('div')(() => ({
|
|
@@ -1103,7 +1125,7 @@ const SmallTitle = styled('p')(({ theme }) => ({
|
|
|
1103
1125
|
fontSize: theme.typography.pxToRem(typography.fontSize.h6), // 16px
|
|
1104
1126
|
fontWeight: typography.fontWeight.semiBold, // 600
|
|
1105
1127
|
lineHeight: 1.4,
|
|
1106
|
-
color: semanticColors.
|
|
1128
|
+
color: semanticColors.color.text.primary,
|
|
1107
1129
|
width: '100%',
|
|
1108
1130
|
}));
|
|
1109
1131
|
const SmallDescription = styled('p')(({ theme }) => ({
|
|
@@ -1111,7 +1133,7 @@ const SmallDescription = styled('p')(({ theme }) => ({
|
|
|
1111
1133
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px
|
|
1112
1134
|
fontWeight: typography.fontWeight.regular, // 400
|
|
1113
1135
|
lineHeight: 1.5,
|
|
1114
|
-
color: semanticColors.
|
|
1136
|
+
color: semanticColors.color.text.primary,
|
|
1115
1137
|
width: '100%',
|
|
1116
1138
|
display: '-webkit-box',
|
|
1117
1139
|
WebkitLineClamp: 2,
|
|
@@ -1128,12 +1150,10 @@ const LargeStyledCard = styled(MuiCard, {
|
|
|
1128
1150
|
// sourcing one side from `semanticColors` (which flips) and the other from a
|
|
1129
1151
|
// primitive (which doesn't) puts light-mode text on a dark surface in dark
|
|
1130
1152
|
// mode. `semanticColorsDark` is the literal-hex escape hatch for exactly this.
|
|
1131
|
-
const activeBorderColor = isLight
|
|
1132
|
-
? semanticColors.buttons.primary.default
|
|
1133
|
-
: colors.digitalGreen[300];
|
|
1153
|
+
const activeBorderColor = isLight ? semanticColors.button.primary.bg : colors.digitalGreen[300];
|
|
1134
1154
|
const defaultBorderColor = isLight
|
|
1135
|
-
? semanticColors.border.primary
|
|
1136
|
-
: semanticColorsDark.border.primary;
|
|
1155
|
+
? semanticColors.color.border.primary
|
|
1156
|
+
: semanticColorsDark.color.border.primary;
|
|
1137
1157
|
return {
|
|
1138
1158
|
width: 340,
|
|
1139
1159
|
height: 162,
|
|
@@ -1143,7 +1163,9 @@ const LargeStyledCard = styled(MuiCard, {
|
|
|
1143
1163
|
alignItems: 'flex-start',
|
|
1144
1164
|
padding: spacing.spacing_2,
|
|
1145
1165
|
borderRadius: borderRadius.card,
|
|
1146
|
-
backgroundColor: isLight
|
|
1166
|
+
backgroundColor: isLight
|
|
1167
|
+
? semanticColors.color.surface.raised
|
|
1168
|
+
: semanticColorsDark.color.surface.raised,
|
|
1147
1169
|
border: `1px solid ${defaultBorderColor}`,
|
|
1148
1170
|
boxShadow: 'none',
|
|
1149
1171
|
overflow: 'hidden',
|
|
@@ -1198,7 +1220,9 @@ const LargeHeaderTitle = styled('span', {
|
|
|
1198
1220
|
fontWeight: typography.fontWeight.semiBold,
|
|
1199
1221
|
fontSize: typography.fontSize.h6,
|
|
1200
1222
|
lineHeight: 1.4,
|
|
1201
|
-
color: cardTheme === 'light'
|
|
1223
|
+
color: cardTheme === 'light'
|
|
1224
|
+
? semanticColors.color.text.primary
|
|
1225
|
+
: semanticColorsDark.color.text.primary,
|
|
1202
1226
|
flexShrink: 0,
|
|
1203
1227
|
}));
|
|
1204
1228
|
const LargeDescription = styled('p', {
|
|
@@ -1208,7 +1232,9 @@ const LargeDescription = styled('p', {
|
|
|
1208
1232
|
fontWeight: typography.fontWeight.regular,
|
|
1209
1233
|
fontSize: typography.fontSize.xs,
|
|
1210
1234
|
lineHeight: 1.5,
|
|
1211
|
-
color: cardTheme === 'light'
|
|
1235
|
+
color: cardTheme === 'light'
|
|
1236
|
+
? semanticColors.color.text.primary
|
|
1237
|
+
: semanticColorsDark.color.text.primary,
|
|
1212
1238
|
margin: 0,
|
|
1213
1239
|
minWidth: '100%',
|
|
1214
1240
|
wordWrap: 'break-word',
|
|
@@ -1257,7 +1283,7 @@ const Label$4 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
1257
1283
|
: typography.fontSize.default),
|
|
1258
1284
|
fontWeight: typography.fontWeight.medium,
|
|
1259
1285
|
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1260
|
-
color: semanticColors.
|
|
1286
|
+
color: semanticColors.color.text.input,
|
|
1261
1287
|
}));
|
|
1262
1288
|
const HelperText$2 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
1263
1289
|
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
@@ -1267,7 +1293,7 @@ const HelperText$2 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
1267
1293
|
: typography.fontSize.default),
|
|
1268
1294
|
fontWeight: typography.fontWeight.regular,
|
|
1269
1295
|
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1270
|
-
color: semanticColors.
|
|
1296
|
+
color: semanticColors.color.text.secondary,
|
|
1271
1297
|
}));
|
|
1272
1298
|
// xs focus-ring radius — no matching design token (box corner comes from the icon)
|
|
1273
1299
|
const FIGMA_XS_BORDER_RADIUS = 1;
|
|
@@ -1295,7 +1321,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1295
1321
|
height: config.size,
|
|
1296
1322
|
padding: 0,
|
|
1297
1323
|
marginTop: size === 'xs' ? 3 : 2,
|
|
1298
|
-
color: semanticColors.border.strong,
|
|
1324
|
+
color: semanticColors.color.border.strong,
|
|
1299
1325
|
borderRadius: config.borderRadius,
|
|
1300
1326
|
flexShrink: 0,
|
|
1301
1327
|
// Suppress MUI's grey hover background
|
|
@@ -1321,11 +1347,11 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1321
1347
|
cursor: 'not-allowed',
|
|
1322
1348
|
},
|
|
1323
1349
|
[`&.${checkboxClasses.disabled}:not(.${checkboxClasses.checked}):not(.${checkboxClasses.indeterminate})`]: {
|
|
1324
|
-
color: semanticColors.border.primary,
|
|
1350
|
+
color: semanticColors.color.border.primary,
|
|
1325
1351
|
},
|
|
1326
1352
|
// Focus visible for keyboard navigation
|
|
1327
1353
|
'&.Mui-focusVisible': {
|
|
1328
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
1354
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
1329
1355
|
outlineOffset: 2,
|
|
1330
1356
|
borderRadius: config.borderRadius,
|
|
1331
1357
|
},
|
|
@@ -1452,20 +1478,20 @@ const StyledButtonBase = styled(ButtonBase, {
|
|
|
1452
1478
|
cursor: 'text',
|
|
1453
1479
|
// Focus visible for keyboard navigation
|
|
1454
1480
|
[`&.${buttonBaseClasses.focusVisible}`]: {
|
|
1455
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
1481
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
1456
1482
|
outlineOffset: 2,
|
|
1457
1483
|
},
|
|
1458
1484
|
};
|
|
1459
1485
|
// Variant-specific styles
|
|
1460
1486
|
const variantStyles = {
|
|
1461
1487
|
outlined: {
|
|
1462
|
-
backgroundColor: semanticColors.code.
|
|
1463
|
-
color: semanticColors.
|
|
1488
|
+
backgroundColor: semanticColors.code.bg,
|
|
1489
|
+
color: semanticColors.color.text.code,
|
|
1464
1490
|
border: 'none',
|
|
1465
1491
|
},
|
|
1466
1492
|
filled: {
|
|
1467
|
-
backgroundColor: semanticColors.
|
|
1468
|
-
color: semanticColors.
|
|
1493
|
+
backgroundColor: semanticColors.color.surface.tooltip,
|
|
1494
|
+
color: semanticColors.color.text.tooltip,
|
|
1469
1495
|
border: 'none',
|
|
1470
1496
|
},
|
|
1471
1497
|
};
|
|
@@ -1507,15 +1533,15 @@ ModCodeSnippet.displayName = 'ModCodeSnippet';
|
|
|
1507
1533
|
* they carry this surface themselves.
|
|
1508
1534
|
*/
|
|
1509
1535
|
const panelSurfaceStyles = {
|
|
1510
|
-
backgroundColor: semanticColors.
|
|
1536
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
1511
1537
|
};
|
|
1512
1538
|
const getDataGridHeaderStyles = () => {
|
|
1513
1539
|
return {
|
|
1514
1540
|
// Header cell container styles - from Figma: bg, border, padding
|
|
1515
1541
|
// Height is set via density-specific selectors in DataGrid.tsx
|
|
1516
1542
|
[`& .${gridClasses.columnHeader}`]: {
|
|
1517
|
-
backgroundColor: semanticColors.
|
|
1518
|
-
borderBottom: `1px solid ${semanticColors.border.primary}`,
|
|
1543
|
+
backgroundColor: semanticColors.color.surface.dataGrid.header,
|
|
1544
|
+
borderBottom: `1px solid ${semanticColors.color.border.primary}`,
|
|
1519
1545
|
paddingTop: `${spacing.spacing_1_1_2}px`,
|
|
1520
1546
|
paddingBottom: `${spacing.spacing_1_1_2}px`,
|
|
1521
1547
|
paddingLeft: `${spacing.spacing_2}px`,
|
|
@@ -1525,8 +1551,8 @@ const getDataGridHeaderStyles = () => {
|
|
|
1525
1551
|
// Style the filler element to match header
|
|
1526
1552
|
// Height is set via density-specific selectors in DataGrid.tsx
|
|
1527
1553
|
[`& .${gridClasses.filler}`]: {
|
|
1528
|
-
backgroundColor: semanticColors.
|
|
1529
|
-
borderBottom: `1px solid ${semanticColors.border.primary}`,
|
|
1554
|
+
backgroundColor: semanticColors.color.surface.dataGrid.header,
|
|
1555
|
+
borderBottom: `1px solid ${semanticColors.color.border.primary}`,
|
|
1530
1556
|
boxSizing: 'border-box',
|
|
1531
1557
|
},
|
|
1532
1558
|
// Style the default MUI column header title text to match Figma
|
|
@@ -1535,14 +1561,14 @@ const getDataGridHeaderStyles = () => {
|
|
|
1535
1561
|
fontSize: typography.fontSize.sm,
|
|
1536
1562
|
fontWeight: typography.fontWeight.semiBold, // Always semiBold (600)
|
|
1537
1563
|
lineHeight: 'normal',
|
|
1538
|
-
color: semanticColors.
|
|
1564
|
+
color: semanticColors.color.text.secondary, // #6b7280 by default
|
|
1539
1565
|
transition: 'color 0.2s',
|
|
1540
1566
|
textOverflow: 'clip',
|
|
1541
1567
|
whiteSpace: 'break-spaces',
|
|
1542
1568
|
},
|
|
1543
1569
|
// Change text color on hover
|
|
1544
1570
|
[`& .${gridClasses.columnHeader}:hover .${gridClasses.columnHeaderTitle}`]: {
|
|
1545
|
-
color: semanticColors.
|
|
1571
|
+
color: semanticColors.color.icon.default, // #1f2937 on hover
|
|
1546
1572
|
},
|
|
1547
1573
|
// Style the checkbox in header to match design system (16x16 from Figma)
|
|
1548
1574
|
[`& .${gridClasses.columnHeaderCheckbox}`]: {
|
|
@@ -1576,7 +1602,7 @@ const getDataGridHeaderStyles = () => {
|
|
|
1576
1602
|
'& svg': {
|
|
1577
1603
|
width: 16,
|
|
1578
1604
|
height: 16,
|
|
1579
|
-
color: semanticColors.
|
|
1605
|
+
color: semanticColors.color.icon.utility,
|
|
1580
1606
|
},
|
|
1581
1607
|
},
|
|
1582
1608
|
},
|
|
@@ -1584,16 +1610,16 @@ const getDataGridHeaderStyles = () => {
|
|
|
1584
1610
|
};
|
|
1585
1611
|
const getDataGridRowStyles = () => ({
|
|
1586
1612
|
[`& .${gridClasses.row}`]: {
|
|
1587
|
-
backgroundColor: semanticColors.
|
|
1613
|
+
backgroundColor: semanticColors.color.surface.dataGrid.default,
|
|
1588
1614
|
},
|
|
1589
1615
|
[`& .${gridClasses.row}:hover`]: {
|
|
1590
|
-
backgroundColor: semanticColors.
|
|
1616
|
+
backgroundColor: semanticColors.color.surface.dataGrid.hover,
|
|
1591
1617
|
},
|
|
1592
1618
|
[`& .${gridClasses.row}.Mui-selected`]: {
|
|
1593
|
-
backgroundColor: semanticColors.
|
|
1619
|
+
backgroundColor: semanticColors.color.surface.dataGrid.selected,
|
|
1594
1620
|
},
|
|
1595
1621
|
[`& .${gridClasses.row}.Mui-selected:hover`]: {
|
|
1596
|
-
backgroundColor: semanticColors.
|
|
1622
|
+
backgroundColor: semanticColors.color.surface.dataGrid.selectedHover,
|
|
1597
1623
|
},
|
|
1598
1624
|
});
|
|
1599
1625
|
|
|
@@ -1622,8 +1648,8 @@ const StyledSearchField = styled(TextField)(({ theme }) => ({
|
|
|
1622
1648
|
height: spacing.spacing_5,
|
|
1623
1649
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
1624
1650
|
borderRadius: borderRadius.input,
|
|
1625
|
-
backgroundColor: semanticColors.input.
|
|
1626
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
1651
|
+
backgroundColor: semanticColors.input.bg,
|
|
1652
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
1627
1653
|
paddingTop: spacing.spacing_1,
|
|
1628
1654
|
paddingBottom: spacing.spacing_1,
|
|
1629
1655
|
paddingLeft: spacing.spacing_1_1_2,
|
|
@@ -1634,22 +1660,22 @@ const StyledSearchField = styled(TextField)(({ theme }) => ({
|
|
|
1634
1660
|
},
|
|
1635
1661
|
[`& .${inputBaseClasses.input}`]: {
|
|
1636
1662
|
padding: 0,
|
|
1637
|
-
color: semanticColors.
|
|
1663
|
+
color: semanticColors.color.text.input,
|
|
1638
1664
|
'&::placeholder': {
|
|
1639
|
-
color: semanticColors.
|
|
1665
|
+
color: semanticColors.color.text.inputPlaceholder,
|
|
1640
1666
|
opacity: 1,
|
|
1641
1667
|
},
|
|
1642
1668
|
},
|
|
1643
1669
|
'&:hover': {
|
|
1644
|
-
backgroundColor: semanticColors.input.
|
|
1670
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
1645
1671
|
},
|
|
1646
1672
|
[`&.${inputBaseClasses.focused}`]: {
|
|
1647
|
-
backgroundColor: semanticColors.input.
|
|
1648
|
-
borderColor: semanticColors.
|
|
1673
|
+
backgroundColor: semanticColors.input.bg,
|
|
1674
|
+
borderColor: semanticColors.button.primary.bg,
|
|
1649
1675
|
},
|
|
1650
1676
|
},
|
|
1651
1677
|
[`& .${inputAdornmentClasses.root}`]: {
|
|
1652
|
-
color: semanticColors.
|
|
1678
|
+
color: semanticColors.color.icon.placeholder,
|
|
1653
1679
|
'& svg': {
|
|
1654
1680
|
width: 20,
|
|
1655
1681
|
height: 20,
|
|
@@ -1672,14 +1698,14 @@ const MenuItemContent$1 = styled('div')(() => ({
|
|
|
1672
1698
|
borderRadius: MENU_ITEM_BORDER_RADIUS,
|
|
1673
1699
|
width: '100%',
|
|
1674
1700
|
'&:hover': {
|
|
1675
|
-
backgroundColor: semanticColors.
|
|
1701
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
1676
1702
|
},
|
|
1677
1703
|
}));
|
|
1678
1704
|
const MenuItemLabel = styled('span')(({ theme, fontWeight = 500 }) => ({
|
|
1679
1705
|
fontSize: theme.typography.pxToRem(16),
|
|
1680
1706
|
fontWeight,
|
|
1681
1707
|
lineHeight: 1.5,
|
|
1682
|
-
color: semanticColors.
|
|
1708
|
+
color: semanticColors.color.text.primary,
|
|
1683
1709
|
whiteSpace: 'nowrap',
|
|
1684
1710
|
}));
|
|
1685
1711
|
const DividerContainer = styled('div')(() => ({
|
|
@@ -1687,7 +1713,7 @@ const DividerContainer = styled('div')(() => ({
|
|
|
1687
1713
|
paddingBottom: spacing.spacing_1_2,
|
|
1688
1714
|
}));
|
|
1689
1715
|
const StyledDivider$1 = styled(Divider)(() => ({
|
|
1690
|
-
borderColor: semanticColors.border.primary,
|
|
1716
|
+
borderColor: semanticColors.color.border.primary,
|
|
1691
1717
|
}));
|
|
1692
1718
|
const FooterRow = styled(Box)(() => ({
|
|
1693
1719
|
display: 'flex',
|
|
@@ -1699,16 +1725,16 @@ const FooterRow = styled(Box)(() => ({
|
|
|
1699
1725
|
const ResetButton = styled(Button)(({ theme }) => ({
|
|
1700
1726
|
fontSize: theme.typography.pxToRem(16),
|
|
1701
1727
|
fontWeight: typography.fontWeight.regular,
|
|
1702
|
-
color: semanticColors.
|
|
1728
|
+
color: semanticColors.button.primary.bg,
|
|
1703
1729
|
textTransform: 'none',
|
|
1704
1730
|
padding: spacing.spacing_1,
|
|
1705
1731
|
minWidth: 'auto',
|
|
1706
1732
|
'&:hover': {
|
|
1707
1733
|
backgroundColor: 'transparent',
|
|
1708
|
-
color: semanticColors.
|
|
1734
|
+
color: semanticColors.color.text.secondary,
|
|
1709
1735
|
},
|
|
1710
1736
|
'&:disabled': {
|
|
1711
|
-
color: semanticColors.
|
|
1737
|
+
color: semanticColors.button.fgDisabled,
|
|
1712
1738
|
},
|
|
1713
1739
|
}));
|
|
1714
1740
|
const ModDataGridColumnsPanel = ({ showSearch = false,
|
|
@@ -1772,7 +1798,7 @@ const StyledMenuItem = styled(MenuItem)(({ theme }) => ({
|
|
|
1772
1798
|
minHeight: spacing.spacing_5,
|
|
1773
1799
|
gap: spacing.spacing_2,
|
|
1774
1800
|
borderRadius: 0,
|
|
1775
|
-
color: semanticColors.
|
|
1801
|
+
color: semanticColors.color.icon.default,
|
|
1776
1802
|
textDecoration: 'none',
|
|
1777
1803
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
1778
1804
|
fontWeight: typography.fontWeight.regular,
|
|
@@ -1781,19 +1807,19 @@ const StyledMenuItem = styled(MenuItem)(({ theme }) => ({
|
|
|
1781
1807
|
duration: theme.transitions.duration.shortest,
|
|
1782
1808
|
}),
|
|
1783
1809
|
'&:hover': {
|
|
1784
|
-
backgroundColor: semanticColors.
|
|
1810
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
1785
1811
|
},
|
|
1786
1812
|
[`&.${menuItemClasses.selected}`]: {
|
|
1787
|
-
backgroundColor: semanticColors.
|
|
1813
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
1788
1814
|
'&:hover': {
|
|
1789
|
-
backgroundColor: semanticColors.
|
|
1815
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
1790
1816
|
},
|
|
1791
1817
|
},
|
|
1792
1818
|
[`&.${menuItemClasses.disabled}`]: {
|
|
1793
1819
|
opacity: 0.5,
|
|
1794
1820
|
},
|
|
1795
1821
|
[`&.${menuItemClasses.focusVisible}`]: {
|
|
1796
|
-
backgroundColor: semanticColors.
|
|
1822
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
1797
1823
|
},
|
|
1798
1824
|
}));
|
|
1799
1825
|
const MenuItemContent = styled('div')({
|
|
@@ -1808,7 +1834,7 @@ const IconWrapper$1 = styled('span')(({ theme }) => ({
|
|
|
1808
1834
|
justifyContent: 'center',
|
|
1809
1835
|
flexShrink: 0,
|
|
1810
1836
|
fontSize: theme.typography.pxToRem(typography.fontSize.h4),
|
|
1811
|
-
color: semanticColors.
|
|
1837
|
+
color: semanticColors.color.icon.default,
|
|
1812
1838
|
}));
|
|
1813
1839
|
const LabelContainer$3 = styled('div')({
|
|
1814
1840
|
flex: 1,
|
|
@@ -1818,24 +1844,24 @@ const LabelContainer$3 = styled('div')({
|
|
|
1818
1844
|
minWidth: 0,
|
|
1819
1845
|
});
|
|
1820
1846
|
const Label$3 = styled('span')({
|
|
1821
|
-
color: semanticColors.
|
|
1847
|
+
color: semanticColors.color.icon.default,
|
|
1822
1848
|
flexShrink: 0,
|
|
1823
1849
|
});
|
|
1824
1850
|
const SecondaryLabel = styled('span')({
|
|
1825
|
-
color: semanticColors.
|
|
1851
|
+
color: semanticColors.color.text.secondary,
|
|
1826
1852
|
fontWeight: typography.fontWeight.regular,
|
|
1827
1853
|
flexShrink: 0,
|
|
1828
1854
|
});
|
|
1829
1855
|
const Shortcut = styled('span')(({ theme }) => ({
|
|
1830
1856
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
1831
1857
|
fontWeight: typography.fontWeight.medium,
|
|
1832
|
-
color: semanticColors.
|
|
1858
|
+
color: semanticColors.color.text.secondary,
|
|
1833
1859
|
marginLeft: 'auto',
|
|
1834
1860
|
flexShrink: 0,
|
|
1835
|
-
border: `1px solid ${semanticColors.border.
|
|
1861
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
1836
1862
|
borderRadius: borderRadius.xS,
|
|
1837
1863
|
padding: `${spacing.spacing_1_4}px ${spacing.spacing_3_4}px`,
|
|
1838
|
-
backgroundColor: semanticColors.
|
|
1864
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
1839
1865
|
}));
|
|
1840
1866
|
/**
|
|
1841
1867
|
* ModMenuItem - Menu item component based on MUI MenuItem
|
|
@@ -1880,22 +1906,22 @@ ModMenuItem.displayName = 'ModMenuItem';
|
|
|
1880
1906
|
* Custom chevron icon for select
|
|
1881
1907
|
* Must accept props from MUI Select to work correctly
|
|
1882
1908
|
*/
|
|
1883
|
-
const ChevronDownIcon = (props) => (jsx(ChevronDown, { ...props, size: spacing.spacing_2_1_2, color: semanticColors.
|
|
1909
|
+
const ChevronDownIcon = (props) => (jsx(ChevronDown, { ...props, size: spacing.spacing_2_1_2, color: semanticColors.color.text.input, style: { ...props.style } }));
|
|
1884
1910
|
/**
|
|
1885
1911
|
* Styled Select component with design system styling
|
|
1886
1912
|
*/
|
|
1887
1913
|
const StyledSelect = styled(MuiSelect)({
|
|
1888
1914
|
minHeight: spacing.spacing_5,
|
|
1889
|
-
backgroundColor: semanticColors.input.
|
|
1890
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
1915
|
+
backgroundColor: semanticColors.input.bg,
|
|
1916
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
1891
1917
|
borderRadius: `${borderRadius.input}px`,
|
|
1892
1918
|
'&:hover': {
|
|
1893
|
-
backgroundColor: semanticColors.input.
|
|
1894
|
-
borderColor: semanticColors.border.primary,
|
|
1919
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
1920
|
+
borderColor: semanticColors.color.border.primary,
|
|
1895
1921
|
},
|
|
1896
1922
|
'&.Mui-focused': {
|
|
1897
|
-
backgroundColor: semanticColors.input.
|
|
1898
|
-
borderColor: semanticColors.
|
|
1923
|
+
backgroundColor: semanticColors.input.bg,
|
|
1924
|
+
borderColor: semanticColors.button.primary.bg,
|
|
1899
1925
|
},
|
|
1900
1926
|
'&::before': {
|
|
1901
1927
|
display: 'none',
|
|
@@ -1910,7 +1936,7 @@ const StyledSelect = styled(MuiSelect)({
|
|
|
1910
1936
|
paddingRight: spacing.spacing_5,
|
|
1911
1937
|
fontSize: typography.fontSize.sm,
|
|
1912
1938
|
fontWeight: typography.fontWeight.regular,
|
|
1913
|
-
color: semanticColors.
|
|
1939
|
+
color: semanticColors.color.text.input,
|
|
1914
1940
|
},
|
|
1915
1941
|
[`& .${selectClasses.icon}`]: {
|
|
1916
1942
|
right: spacing.spacing_1_1_2,
|
|
@@ -1932,37 +1958,34 @@ const StyledSelect = styled(MuiSelect)({
|
|
|
1932
1958
|
* </ModSelect>
|
|
1933
1959
|
* ```
|
|
1934
1960
|
*/
|
|
1935
|
-
const ModSelect = (props) => {
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
slotProps
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
marginTop: 1,
|
|
1949
|
-
...incomingPaperSx,
|
|
1950
|
-
},
|
|
1961
|
+
const ModSelect = (props) => (jsx(StyledSelect, { ...props, IconComponent: ChevronDownIcon, variant: "standard", MenuProps: {
|
|
1962
|
+
...props.MenuProps,
|
|
1963
|
+
slotProps: {
|
|
1964
|
+
...props.MenuProps?.slotProps,
|
|
1965
|
+
// Caller wins, caller `sx` last — and unlike a spread, handles `sx` arrays and the
|
|
1966
|
+
// callback form of `slotProps.paper`.
|
|
1967
|
+
paper: mergeSlotProps(props.MenuProps?.slotProps?.paper, {
|
|
1968
|
+
sx: {
|
|
1969
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
1970
|
+
borderRadius: `${borderRadius.s}px`,
|
|
1971
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
1972
|
+
boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,
|
|
1973
|
+
marginTop: 1,
|
|
1951
1974
|
},
|
|
1952
|
-
},
|
|
1953
|
-
}
|
|
1954
|
-
};
|
|
1975
|
+
}),
|
|
1976
|
+
},
|
|
1977
|
+
} }));
|
|
1955
1978
|
ModSelect.displayName = 'ModSelect';
|
|
1956
1979
|
|
|
1957
1980
|
/**
|
|
1958
1981
|
* Icon components for DataGrid filter panel slots
|
|
1959
1982
|
* These must be passed to the DataGrid's slots prop
|
|
1960
1983
|
*/
|
|
1961
|
-
const ModDataGridFilterPanelAddIcon = () => (jsx(Plus, { size: spacing.spacing_2, color: semanticColors.
|
|
1984
|
+
const ModDataGridFilterPanelAddIcon = () => (jsx(Plus, { size: spacing.spacing_2, color: semanticColors.button.tertiary.fg }));
|
|
1962
1985
|
ModDataGridFilterPanelAddIcon.displayName = 'ModDataGridFilterPanelAddIcon';
|
|
1963
|
-
const ModDataGridFilterPanelDeleteIcon = () => (jsx(X, { size: spacing.spacing_2_1_2, color: semanticColors.
|
|
1986
|
+
const ModDataGridFilterPanelDeleteIcon = () => (jsx(X, { size: spacing.spacing_2_1_2, color: semanticColors.color.icon.default }));
|
|
1964
1987
|
ModDataGridFilterPanelDeleteIcon.displayName = 'ModDataGridFilterPanelDeleteIcon';
|
|
1965
|
-
const ModDataGridFilterPanelRemoveAllIcon = () => (jsx(Trash2, { size: spacing.spacing_2, color: semanticColors.
|
|
1988
|
+
const ModDataGridFilterPanelRemoveAllIcon = () => (jsx(Trash2, { size: spacing.spacing_2, color: semanticColors.button.tertiary.fg }));
|
|
1966
1989
|
ModDataGridFilterPanelRemoveAllIcon.displayName = 'ModDataGridFilterPanelRemoveAllIcon';
|
|
1967
1990
|
/**
|
|
1968
1991
|
* Base styled GridFilterPanel with design system styling
|
|
@@ -2011,20 +2034,20 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2011
2034
|
[`& .${gridClasses.filterForm} .${inputBaseClasses.root}`]: {
|
|
2012
2035
|
position: 'relative',
|
|
2013
2036
|
minHeight: spacing.spacing_5,
|
|
2014
|
-
backgroundColor: semanticColors.input.
|
|
2015
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
2037
|
+
backgroundColor: semanticColors.input.bg,
|
|
2038
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
2016
2039
|
borderRadius: `${borderRadius.input}px`,
|
|
2017
2040
|
fontSize: typography.fontSize.default,
|
|
2018
2041
|
fontWeight: typography.fontWeight.regular,
|
|
2019
|
-
color: semanticColors.
|
|
2042
|
+
color: semanticColors.color.text.input,
|
|
2020
2043
|
},
|
|
2021
2044
|
[`& .${gridClasses.filterForm} .${inputBaseClasses.root}:hover`]: {
|
|
2022
|
-
backgroundColor: semanticColors.input.
|
|
2023
|
-
borderColor: semanticColors.border.primary,
|
|
2045
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
2046
|
+
borderColor: semanticColors.color.border.primary,
|
|
2024
2047
|
},
|
|
2025
2048
|
[`& .${gridClasses.filterForm} .${inputBaseClasses.root}.${inputBaseClasses.focused}`]: {
|
|
2026
|
-
backgroundColor: semanticColors.input.
|
|
2027
|
-
borderColor: semanticColors.border.primary,
|
|
2049
|
+
backgroundColor: semanticColors.input.bg,
|
|
2050
|
+
borderColor: semanticColors.color.border.primary,
|
|
2028
2051
|
},
|
|
2029
2052
|
[`& .${gridClasses.filterForm} .${inputBaseClasses.root}::before`]: {
|
|
2030
2053
|
display: 'none',
|
|
@@ -2039,9 +2062,9 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2039
2062
|
paddingRight: spacing.spacing_1_1_2,
|
|
2040
2063
|
fontSize: typography.fontSize.default,
|
|
2041
2064
|
fontWeight: typography.fontWeight.regular,
|
|
2042
|
-
color: semanticColors.
|
|
2065
|
+
color: semanticColors.color.text.input,
|
|
2043
2066
|
'&::placeholder': {
|
|
2044
|
-
color: semanticColors.
|
|
2067
|
+
color: semanticColors.color.text.inputPlaceholder,
|
|
2045
2068
|
opacity: 1,
|
|
2046
2069
|
},
|
|
2047
2070
|
},
|
|
@@ -2056,7 +2079,7 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2056
2079
|
[`& .${gridClasses.filterForm} .${formLabelClasses.root}`]: {
|
|
2057
2080
|
fontSize: typography.fontSize.sm,
|
|
2058
2081
|
fontWeight: typography.fontWeight.medium,
|
|
2059
|
-
color: semanticColors.
|
|
2082
|
+
color: semanticColors.color.text.inputLabel,
|
|
2060
2083
|
marginBottom: spacing.spacing_1_2,
|
|
2061
2084
|
position: 'static',
|
|
2062
2085
|
transform: 'none',
|
|
@@ -2064,16 +2087,20 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2064
2087
|
[`& .${gridClasses.filterForm} .${inputLabelClasses.root}`]: {
|
|
2065
2088
|
fontSize: typography.fontSize.sm,
|
|
2066
2089
|
fontWeight: typography.fontWeight.medium,
|
|
2067
|
-
color: semanticColors.
|
|
2090
|
+
color: semanticColors.color.text.inputLabel,
|
|
2068
2091
|
marginBottom: spacing.spacing_1_2,
|
|
2069
2092
|
position: 'static',
|
|
2070
2093
|
transform: 'none',
|
|
2071
2094
|
},
|
|
2072
2095
|
[`& .${gridClasses.filterForm} .${formLabelClasses.root}.${formLabelClasses.focused}`]: {
|
|
2073
|
-
color: semanticColors.
|
|
2096
|
+
color: semanticColors.color.text.inputLabel,
|
|
2074
2097
|
},
|
|
2075
2098
|
[`& .${gridClasses.filterForm} .${inputLabelClasses.root}.${inputLabelClasses.focused}`]: {
|
|
2076
|
-
color: semanticColors.
|
|
2099
|
+
color: semanticColors.color.text.inputLabel,
|
|
2100
|
+
},
|
|
2101
|
+
// Reclaim the 16px MUI's standard Input reserves for a floating label; these sit statically.
|
|
2102
|
+
[`& .${gridClasses.filterForm} label + .${inputBaseClasses.root}`]: {
|
|
2103
|
+
marginTop: 0,
|
|
2077
2104
|
},
|
|
2078
2105
|
// Remove fieldset/legend
|
|
2079
2106
|
'& fieldset': {
|
|
@@ -2097,13 +2124,13 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2097
2124
|
minHeight: 'auto',
|
|
2098
2125
|
height: 'auto',
|
|
2099
2126
|
gap: spacing.spacing_1_2,
|
|
2100
|
-
backgroundColor: semanticColors.
|
|
2101
|
-
color: semanticColors.
|
|
2102
|
-
border: `1px solid ${semanticColors.
|
|
2127
|
+
backgroundColor: semanticColors.button.secondary.bg,
|
|
2128
|
+
color: semanticColors.color.text.input,
|
|
2129
|
+
border: `1px solid ${semanticColors.button.secondary.border}`,
|
|
2103
2130
|
},
|
|
2104
2131
|
[`& .${gridClasses.panelFooter} .${buttonClasses.root}:first-child:hover`]: {
|
|
2105
|
-
backgroundColor: semanticColors.
|
|
2106
|
-
borderColor: semanticColors.
|
|
2132
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
2133
|
+
borderColor: semanticColors.button.secondary.border,
|
|
2107
2134
|
},
|
|
2108
2135
|
// Clear all button (second button) - styled to match ModButton link variant
|
|
2109
2136
|
[`& .${gridClasses.panelFooter} .${buttonClasses.root}:nth-child(2)`]: {
|
|
@@ -2115,39 +2142,58 @@ const StyledGridFilterPanel = styled(GridFilterPanel)({
|
|
|
2115
2142
|
textTransform: 'none',
|
|
2116
2143
|
minHeight: 'auto',
|
|
2117
2144
|
backgroundColor: 'transparent',
|
|
2118
|
-
color: semanticColors.
|
|
2145
|
+
color: semanticColors.button.tertiary.fg,
|
|
2119
2146
|
border: 'none',
|
|
2120
2147
|
[`& .${buttonClasses.startIcon}`]: {
|
|
2121
2148
|
display: 'none', // Hide the trash icon
|
|
2122
2149
|
},
|
|
2123
2150
|
'&:hover': {
|
|
2124
2151
|
backgroundColor: 'transparent',
|
|
2125
|
-
color: semanticColors.
|
|
2152
|
+
color: semanticColors.button.tertiary.fgHover,
|
|
2126
2153
|
},
|
|
2127
2154
|
},
|
|
2128
2155
|
// Icon buttons (delete/trash icon)
|
|
2129
2156
|
[`& .${gridClasses.filterForm} .${iconButtonClasses.root}`]: {
|
|
2130
2157
|
width: spacing.spacing_5_1_2,
|
|
2131
2158
|
height: spacing.spacing_5_1_2,
|
|
2132
|
-
color: semanticColors.
|
|
2159
|
+
color: semanticColors.color.icon.default,
|
|
2133
2160
|
},
|
|
2134
2161
|
[`& .${gridClasses.filterForm} .${iconButtonClasses.root}:hover`]: {
|
|
2135
|
-
backgroundColor: semanticColors.input.
|
|
2162
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
2136
2163
|
},
|
|
2137
2164
|
});
|
|
2138
2165
|
StyledGridFilterPanel.displayName = 'StyledGridFilterPanel';
|
|
2139
2166
|
/**
|
|
2140
|
-
* ModSelect
|
|
2141
|
-
*
|
|
2142
|
-
*
|
|
2143
|
-
*
|
|
2144
|
-
*
|
|
2145
|
-
*
|
|
2146
|
-
*
|
|
2147
|
-
*
|
|
2148
|
-
*
|
|
2167
|
+
* ModDataGridSelect - ModSelect adapted to the DataGrid `baseSelect` slot contract.
|
|
2168
|
+
*
|
|
2169
|
+
* Kept structurally parallel to MUI's own `BaseSelect` (`@mui/x-data-grid/material`) so the two
|
|
2170
|
+
* can be diffed on upgrade.
|
|
2171
|
+
*
|
|
2172
|
+
* @example
|
|
2173
|
+
* ```tsx
|
|
2174
|
+
* <ModDataGrid rows={rows} columns={columns} slots={{ baseSelect: ModDataGridSelect }} />
|
|
2175
|
+
* ```
|
|
2149
2176
|
*/
|
|
2150
|
-
const ModDataGridSelect =
|
|
2177
|
+
const ModDataGridSelect = forwardRef(function ModDataGridSelect({ id, label, labelId, disabled, fullWidth, size, style, slotProps, material, onChange, onClose, onKeyDown, ...rest }, ref) {
|
|
2178
|
+
const theme = useTheme();
|
|
2179
|
+
const hasLabel = label !== undefined;
|
|
2180
|
+
// The grid omits `size` in edit cells, where MUI's adapter falls back to the theme's TextField
|
|
2181
|
+
// default — without this the select renders medium beside small fields.
|
|
2182
|
+
const computedSize = size ?? theme.components?.MuiTextField?.defaultProps?.size;
|
|
2183
|
+
return (jsxs(FormControl
|
|
2184
|
+
// Bridges Ref<HTMLElement> to FormControl's Ref<HTMLDivElement>; neither direct form typechecks.
|
|
2185
|
+
, {
|
|
2186
|
+
// Bridges Ref<HTMLElement> to FormControl's Ref<HTMLDivElement>; neither direct form typechecks.
|
|
2187
|
+
ref: useForkRef(ref), disabled: disabled, fullWidth: fullWidth, size: computedSize, style: style, children: [hasLabel && (jsx(MuiInputLabel, { id: labelId, htmlFor: id, variant: "standard", shrink: true, children: label })), jsx(ModSelect, { ...rest, id: id, label: label, labelId: hasLabel ? labelId : undefined, size: computedSize, displayEmpty: true, inputProps: slotProps?.htmlInput,
|
|
2188
|
+
// The grid types this as a ChangeEventHandler; MUI emits a SelectChangeEvent. MUI's own
|
|
2189
|
+
// adapter forwards it unchanged, so the divergence is only in the type.
|
|
2190
|
+
onChange: onChange, MenuProps: {
|
|
2191
|
+
// Must stay absent when absent: MUI spreads MenuProps over its own `onClose: handleClose`,
|
|
2192
|
+
// so an explicit `undefined` stops Escape and backdrop click closing the menu.
|
|
2193
|
+
...(onClose && { onClose }),
|
|
2194
|
+
slotProps: { paper: { onKeyDown } },
|
|
2195
|
+
}, ...material })] }));
|
|
2196
|
+
});
|
|
2151
2197
|
/**
|
|
2152
2198
|
* ModDataGridFilterPanel - MUI GridFilterPanel with design system styling and Lucide icons
|
|
2153
2199
|
*
|
|
@@ -2189,13 +2235,13 @@ ModDataGridFilterPanel.displayName = 'ModDataGridFilterPanel';
|
|
|
2189
2235
|
* Use these with DataGrid's slots API to replace default sort indicators.
|
|
2190
2236
|
*/
|
|
2191
2237
|
function SortedDescendingIcon() {
|
|
2192
|
-
return jsx(ArrowDown, { size: 16, color: semanticColors.
|
|
2238
|
+
return jsx(ArrowDown, { size: 16, color: semanticColors.color.icon.utility });
|
|
2193
2239
|
}
|
|
2194
2240
|
function SortedAscendingIcon() {
|
|
2195
|
-
return jsx(ArrowUp, { size: 16, color: semanticColors.
|
|
2241
|
+
return jsx(ArrowUp, { size: 16, color: semanticColors.color.icon.utility });
|
|
2196
2242
|
}
|
|
2197
2243
|
function UnsortedIcon() {
|
|
2198
|
-
return jsx(ChevronsUpDown, { size: 16, color: semanticColors.
|
|
2244
|
+
return jsx(ChevronsUpDown, { size: 16, color: semanticColors.color.icon.utility });
|
|
2199
2245
|
}
|
|
2200
2246
|
|
|
2201
2247
|
/**
|
|
@@ -2206,7 +2252,7 @@ function UnsortedIcon() {
|
|
|
2206
2252
|
*/
|
|
2207
2253
|
const ModGridPanel = styled(GridPanel)({
|
|
2208
2254
|
[`& .${gridPanelClasses.paper}`]: {
|
|
2209
|
-
backgroundColor: semanticColors.
|
|
2255
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
2210
2256
|
},
|
|
2211
2257
|
});
|
|
2212
2258
|
/**
|
|
@@ -2282,27 +2328,27 @@ function ModDataGrid({ autoHeight = false, toolbar, slots, sx, density = 'standa
|
|
|
2282
2328
|
// See: https://github.com/mui/mui-x/issues/20107
|
|
2283
2329
|
// This must be set to prevent scroll shadow artifacts
|
|
2284
2330
|
[`& .${gridClasses.main}`]: {
|
|
2285
|
-
backgroundColor: semanticColors.
|
|
2331
|
+
backgroundColor: semanticColors.color.surface.dataGrid.default,
|
|
2286
2332
|
},
|
|
2287
2333
|
// White background for empty/loading overlays
|
|
2288
2334
|
[`& .${gridClasses.overlay}`]: {
|
|
2289
|
-
backgroundColor: semanticColors.
|
|
2335
|
+
backgroundColor: semanticColors.color.surface.dataGrid.default,
|
|
2290
2336
|
},
|
|
2291
2337
|
// The root keeps MUI's background.paper (#fff), which the note above
|
|
2292
2338
|
// requires us to leave alone. Everything outside `main` therefore showed
|
|
2293
2339
|
// white under [data-theme="dark"] — the footer, and the filler strips
|
|
2294
2340
|
// beyond the last column and next to the scrollbar.
|
|
2295
2341
|
[`& .${gridClasses.footerContainer}`]: {
|
|
2296
|
-
backgroundColor: semanticColors.
|
|
2342
|
+
backgroundColor: semanticColors.color.surface.dataGrid.default,
|
|
2297
2343
|
},
|
|
2298
2344
|
// `&&` doubles specificity: MUI paints the filler strips itself, so a
|
|
2299
2345
|
// single-class rule loses to its own.
|
|
2300
2346
|
[`&& .${gridClasses.filler}, && .${gridClasses.scrollbarFiller}`]: {
|
|
2301
|
-
backgroundColor: semanticColors.
|
|
2347
|
+
backgroundColor: semanticColors.color.surface.dataGrid.default,
|
|
2302
2348
|
},
|
|
2303
2349
|
...getDataGridHeaderStyles(),
|
|
2304
2350
|
...getDataGridRowStyles(),
|
|
2305
|
-
border: `1px solid ${semanticColors.border.
|
|
2351
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
2306
2352
|
// Target `& svg` (not `.MuiSvgIcon-root`) to match the lucide icons
|
|
2307
2353
|
// ModCheckbox renders, mirroring the header rule below.
|
|
2308
2354
|
// flexShrink: 0 stops the icon collapsing to 0 width when the checkbox
|
|
@@ -2357,7 +2403,7 @@ ModDataGrid.displayName = 'ModDataGrid';
|
|
|
2357
2403
|
* ```
|
|
2358
2404
|
*/
|
|
2359
2405
|
function ModDataGridColumnsButton() {
|
|
2360
|
-
return (jsx(ColumnsPanelTrigger, { render: jsx(ToolbarButton, { render: jsxs(ModButton, { variant: "secondary", size: "small", children: [jsx(Columns3, { size: 16, color: semanticColors.
|
|
2406
|
+
return (jsx(ColumnsPanelTrigger, { render: jsx(ToolbarButton, { render: jsxs(ModButton, { variant: "secondary", size: "small", children: [jsx(Columns3, { size: 16, color: semanticColors.button.primary.bg }), "Columns"] }) }) }));
|
|
2361
2407
|
}
|
|
2362
2408
|
ModDataGridColumnsButton.displayName = 'ModDataGridColumnsButton';
|
|
2363
2409
|
|
|
@@ -2383,69 +2429,69 @@ const sizeStyles$1 = {
|
|
|
2383
2429
|
};
|
|
2384
2430
|
const outlinedColorStyles = {
|
|
2385
2431
|
default: {
|
|
2386
|
-
backgroundColor: semanticColors.status.neutral.
|
|
2387
|
-
color: semanticColors.status.neutral.
|
|
2388
|
-
borderColor: semanticColors.status.neutral.
|
|
2432
|
+
backgroundColor: semanticColors.color.status.neutral.bg,
|
|
2433
|
+
color: semanticColors.color.status.neutral.fg,
|
|
2434
|
+
borderColor: semanticColors.color.status.neutral.tint,
|
|
2389
2435
|
},
|
|
2390
2436
|
error: {
|
|
2391
|
-
backgroundColor: semanticColors.status.error.
|
|
2392
|
-
color: semanticColors.status.error.
|
|
2393
|
-
borderColor: semanticColors.status.error.
|
|
2437
|
+
backgroundColor: semanticColors.color.status.error.bg,
|
|
2438
|
+
color: semanticColors.color.status.error.fg,
|
|
2439
|
+
borderColor: semanticColors.color.status.error.tint,
|
|
2394
2440
|
},
|
|
2395
2441
|
warning: {
|
|
2396
|
-
backgroundColor: semanticColors.status.warning.
|
|
2397
|
-
color: semanticColors.status.warning.
|
|
2398
|
-
borderColor: semanticColors.status.warning.
|
|
2442
|
+
backgroundColor: semanticColors.color.status.warning.bg,
|
|
2443
|
+
color: semanticColors.color.status.warning.fg,
|
|
2444
|
+
borderColor: semanticColors.color.status.warning.tint,
|
|
2399
2445
|
},
|
|
2400
2446
|
success: {
|
|
2401
|
-
backgroundColor: semanticColors.status.success.
|
|
2402
|
-
color: semanticColors.status.success.
|
|
2403
|
-
borderColor: semanticColors.status.success.
|
|
2447
|
+
backgroundColor: semanticColors.color.status.success.bg,
|
|
2448
|
+
color: semanticColors.color.status.success.fg,
|
|
2449
|
+
borderColor: semanticColors.color.status.success.tint,
|
|
2404
2450
|
},
|
|
2405
2451
|
info: {
|
|
2406
|
-
backgroundColor: semanticColors.status.info.
|
|
2407
|
-
color: semanticColors.status.info.
|
|
2408
|
-
borderColor: semanticColors.status.info.
|
|
2452
|
+
backgroundColor: semanticColors.color.status.info.bg,
|
|
2453
|
+
color: semanticColors.color.status.info.fg,
|
|
2454
|
+
borderColor: semanticColors.color.status.info.tint,
|
|
2409
2455
|
},
|
|
2410
2456
|
violet: {
|
|
2411
|
-
backgroundColor: semanticColors.status.active.
|
|
2412
|
-
color: semanticColors.status.active.
|
|
2413
|
-
borderColor: semanticColors.status.active.
|
|
2457
|
+
backgroundColor: semanticColors.color.status.active.bg,
|
|
2458
|
+
color: semanticColors.color.status.active.fg,
|
|
2459
|
+
borderColor: semanticColors.color.status.active.tint,
|
|
2414
2460
|
},
|
|
2415
2461
|
beta: {
|
|
2416
2462
|
backgroundColor: 'transparent',
|
|
2417
|
-
color: semanticColors.
|
|
2463
|
+
color: semanticColors.color.text.secondary,
|
|
2418
2464
|
borderColor: 'transparent',
|
|
2419
2465
|
},
|
|
2420
2466
|
};
|
|
2421
2467
|
const filledColorStyles = {
|
|
2422
2468
|
default: {
|
|
2423
|
-
backgroundColor: semanticColors.status.neutral.
|
|
2424
|
-
color: semanticColors.status.neutral.
|
|
2469
|
+
backgroundColor: semanticColors.color.status.neutral.fg,
|
|
2470
|
+
color: semanticColors.color.status.neutral.bg,
|
|
2425
2471
|
},
|
|
2426
2472
|
error: {
|
|
2427
|
-
backgroundColor: semanticColors.status.error.
|
|
2428
|
-
color: semanticColors.status.error.
|
|
2473
|
+
backgroundColor: semanticColors.color.status.error.fg,
|
|
2474
|
+
color: semanticColors.color.status.error.bg,
|
|
2429
2475
|
},
|
|
2430
2476
|
warning: {
|
|
2431
|
-
backgroundColor: semanticColors.status.warning.
|
|
2432
|
-
color: semanticColors.status.warning.
|
|
2477
|
+
backgroundColor: semanticColors.color.status.warning.fg,
|
|
2478
|
+
color: semanticColors.color.status.warning.bg,
|
|
2433
2479
|
},
|
|
2434
2480
|
success: {
|
|
2435
|
-
backgroundColor: semanticColors.status.success.
|
|
2436
|
-
color: semanticColors.status.success.
|
|
2481
|
+
backgroundColor: semanticColors.color.status.success.fg,
|
|
2482
|
+
color: semanticColors.color.status.success.bg,
|
|
2437
2483
|
},
|
|
2438
2484
|
info: {
|
|
2439
|
-
backgroundColor: semanticColors.status.info.
|
|
2440
|
-
color: semanticColors.status.info.
|
|
2485
|
+
backgroundColor: semanticColors.color.status.info.fg,
|
|
2486
|
+
color: semanticColors.color.status.info.bg,
|
|
2441
2487
|
},
|
|
2442
2488
|
violet: {
|
|
2443
|
-
backgroundColor: semanticColors.status.active.
|
|
2444
|
-
color: semanticColors.status.active.
|
|
2489
|
+
backgroundColor: semanticColors.color.status.active.fg,
|
|
2490
|
+
color: semanticColors.color.status.active.bg,
|
|
2445
2491
|
},
|
|
2446
2492
|
beta: {
|
|
2447
2493
|
backgroundColor: 'transparent',
|
|
2448
|
-
color: semanticColors.
|
|
2494
|
+
color: semanticColors.color.text.secondary,
|
|
2449
2495
|
},
|
|
2450
2496
|
};
|
|
2451
2497
|
const StyledChip$2 = styled(Chip, {
|
|
@@ -2499,7 +2545,7 @@ function ModDataGridFiltersButton() {
|
|
|
2499
2545
|
const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
|
|
2500
2546
|
const activeFilters = filterModel.items.filter(item => item.value != null && item.value !== '');
|
|
2501
2547
|
const filterCount = activeFilters.length;
|
|
2502
|
-
return (jsx(FilterPanelTrigger, { render: jsx(ToolbarButton, { render: jsxs(ModButton, { variant: "secondary", size: "small", children: [jsx(ListFilter, { size: 16, color: semanticColors.
|
|
2548
|
+
return (jsx(FilterPanelTrigger, { render: jsx(ToolbarButton, { render: jsxs(ModButton, { variant: "secondary", size: "small", children: [jsx(ListFilter, { size: 16, color: semanticColors.button.primary.bg }), "Filters", filterCount > 0 && (jsx(ModTag, { size: "medium", variant: "filled", intent: "info", label: String(filterCount) }))] }) }) }));
|
|
2503
2549
|
}
|
|
2504
2550
|
ModDataGridFiltersButton.displayName = 'ModDataGridFiltersButton';
|
|
2505
2551
|
|
|
@@ -2534,14 +2580,14 @@ const LabelText$1 = styled('p')({
|
|
|
2534
2580
|
fontSize: typography.fontSize.sm,
|
|
2535
2581
|
fontWeight: typography.fontWeight.semiBold, // Always semiBold (600)
|
|
2536
2582
|
lineHeight: 'normal',
|
|
2537
|
-
color: semanticColors.
|
|
2583
|
+
color: semanticColors.color.text.secondary, // #6b7280 by default
|
|
2538
2584
|
whiteSpace: 'nowrap',
|
|
2539
2585
|
margin: 0,
|
|
2540
2586
|
padding: 0,
|
|
2541
2587
|
transition: 'color 0.2s',
|
|
2542
2588
|
// Hover state - changes to primary text color
|
|
2543
2589
|
'&:hover': {
|
|
2544
|
-
color: semanticColors.
|
|
2590
|
+
color: semanticColors.color.icon.default, // #1f2937 on hover
|
|
2545
2591
|
},
|
|
2546
2592
|
});
|
|
2547
2593
|
const IconWrapper = styled('div')({
|
|
@@ -2554,7 +2600,7 @@ const IconWrapper = styled('div')({
|
|
|
2554
2600
|
'& svg': {
|
|
2555
2601
|
width: 16,
|
|
2556
2602
|
height: 16,
|
|
2557
|
-
color: semanticColors.
|
|
2603
|
+
color: semanticColors.color.icon.utility,
|
|
2558
2604
|
},
|
|
2559
2605
|
});
|
|
2560
2606
|
function ModDataGridHeaderLabel({ children, helpTooltip, className, }) {
|
|
@@ -2593,9 +2639,9 @@ const StyledNavButton = styled(IconButton, {
|
|
|
2593
2639
|
};
|
|
2594
2640
|
const sizeStyles = sizeConfig[size];
|
|
2595
2641
|
const activeNavStyles = {
|
|
2596
|
-
backgroundColor: semanticColors.
|
|
2642
|
+
backgroundColor: semanticColors.color.icon.bgPressed,
|
|
2597
2643
|
borderColor: 'transparent',
|
|
2598
|
-
color: semanticColors.
|
|
2644
|
+
color: semanticColors.button.primary.bgPressed,
|
|
2599
2645
|
};
|
|
2600
2646
|
return {
|
|
2601
2647
|
width: sizeStyles.width,
|
|
@@ -2606,25 +2652,25 @@ const StyledNavButton = styled(IconButton, {
|
|
|
2606
2652
|
duration: theme.transitions.duration.short,
|
|
2607
2653
|
}),
|
|
2608
2654
|
'&:focus-visible': {
|
|
2609
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
2655
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
2610
2656
|
outlineOffset: 2,
|
|
2611
2657
|
},
|
|
2612
2658
|
// Nav styles
|
|
2613
|
-
backgroundColor: semanticColors.
|
|
2614
|
-
color: semanticColors.
|
|
2615
|
-
border: `1px solid ${semanticColors.border.
|
|
2659
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
2660
|
+
color: semanticColors.color.icon.default,
|
|
2661
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
2616
2662
|
'&:hover': {
|
|
2617
|
-
backgroundColor: semanticColors.input.
|
|
2618
|
-
borderColor: semanticColors.border.primary,
|
|
2619
|
-
color: semanticColors.
|
|
2663
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
2664
|
+
borderColor: semanticColors.color.border.primary,
|
|
2665
|
+
color: semanticColors.color.icon.default,
|
|
2620
2666
|
},
|
|
2621
2667
|
'&:active': activeNavStyles,
|
|
2622
2668
|
[`&.${iconButtonClasses.disabled}`]: {
|
|
2623
2669
|
cursor: 'not-allowed',
|
|
2624
2670
|
pointerEvents: 'auto',
|
|
2625
|
-
backgroundColor: semanticColors.
|
|
2626
|
-
borderColor: semanticColors.border.
|
|
2627
|
-
color: semanticColors.
|
|
2671
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
2672
|
+
borderColor: semanticColors.color.border.primary,
|
|
2673
|
+
color: semanticColors.color.icon.disabled,
|
|
2628
2674
|
opacity: 0.5,
|
|
2629
2675
|
},
|
|
2630
2676
|
...(active ? activeNavStyles : {}),
|
|
@@ -2701,80 +2747,80 @@ const defaultRangeShortcuts = [
|
|
|
2701
2747
|
// Styled DatePicker with design system tokens
|
|
2702
2748
|
const StyledDatePicker = styled(DatePicker)(({ theme }) => ({
|
|
2703
2749
|
[`& .${pickerPopperClasses.paper}`]: {
|
|
2704
|
-
backgroundColor: semanticColors.
|
|
2750
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
2705
2751
|
boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,
|
|
2706
2752
|
borderRadius: `${borderRadius.s}px`,
|
|
2707
2753
|
},
|
|
2708
2754
|
[`& .${dayCalendarClasses.weekDayLabel}`]: {
|
|
2709
2755
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2710
2756
|
fontWeight: typography.fontWeight.medium,
|
|
2711
|
-
color: semanticColors.
|
|
2757
|
+
color: semanticColors.color.text.secondary,
|
|
2712
2758
|
},
|
|
2713
2759
|
[`& .${pickerDayClasses.root}`]: {
|
|
2714
2760
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2715
|
-
color: semanticColors.
|
|
2761
|
+
color: semanticColors.color.text.secondary,
|
|
2716
2762
|
borderRadius: borderRadius.l,
|
|
2717
2763
|
'&:hover': {
|
|
2718
|
-
backgroundColor: semanticColors.
|
|
2764
|
+
backgroundColor: semanticColors.color.icon.bgHover,
|
|
2719
2765
|
},
|
|
2720
2766
|
'&.Mui-selected': {
|
|
2721
|
-
backgroundColor: semanticColors.
|
|
2722
|
-
color: semanticColors.
|
|
2767
|
+
backgroundColor: semanticColors.color.icon.active,
|
|
2768
|
+
color: semanticColors.color.surface.raised,
|
|
2723
2769
|
'&:hover': {
|
|
2724
|
-
backgroundColor: semanticColors.
|
|
2770
|
+
backgroundColor: semanticColors.color.icon.active,
|
|
2725
2771
|
},
|
|
2726
2772
|
},
|
|
2727
2773
|
[`&.${pickerDayClasses.today}`]: {
|
|
2728
|
-
border: `2px solid ${semanticColors.border.strong}`,
|
|
2774
|
+
border: `2px solid ${semanticColors.color.border.strong}`,
|
|
2729
2775
|
backgroundColor: 'transparent',
|
|
2730
2776
|
},
|
|
2731
2777
|
},
|
|
2732
2778
|
[`& .${pickersCalendarHeaderClasses.label}`]: {
|
|
2733
2779
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2734
2780
|
fontWeight: typography.fontWeight.semiBold,
|
|
2735
|
-
color: semanticColors.
|
|
2781
|
+
color: semanticColors.color.text.primary,
|
|
2736
2782
|
},
|
|
2737
2783
|
}));
|
|
2738
2784
|
// Styled DateRangePicker with design system tokens
|
|
2739
2785
|
const StyledDateRangePicker = styled(DateRangePicker)(({ theme }) => ({
|
|
2740
2786
|
[`& .${pickerPopperClasses.paper}`]: {
|
|
2741
|
-
backgroundColor: semanticColors.
|
|
2787
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
2742
2788
|
boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,
|
|
2743
2789
|
borderRadius: `${borderRadius.s}px`,
|
|
2744
2790
|
},
|
|
2745
2791
|
[`& .${dayCalendarClasses.weekDayLabel}`]: {
|
|
2746
2792
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2747
2793
|
fontWeight: typography.fontWeight.medium,
|
|
2748
|
-
color: semanticColors.
|
|
2794
|
+
color: semanticColors.color.text.secondary,
|
|
2749
2795
|
},
|
|
2750
2796
|
[`& .${dateRangePickerDayClasses.root}`]: {
|
|
2751
2797
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2752
|
-
color: semanticColors.
|
|
2798
|
+
color: semanticColors.color.text.secondary,
|
|
2753
2799
|
borderRadius: borderRadius.l,
|
|
2754
2800
|
'&:hover': {
|
|
2755
|
-
backgroundColor: semanticColors.
|
|
2801
|
+
backgroundColor: semanticColors.color.icon.bgHover,
|
|
2756
2802
|
},
|
|
2757
2803
|
'&.Mui-selected': {
|
|
2758
|
-
backgroundColor: semanticColors.
|
|
2759
|
-
color: semanticColors.
|
|
2804
|
+
backgroundColor: semanticColors.color.icon.active,
|
|
2805
|
+
color: semanticColors.color.surface.raised,
|
|
2760
2806
|
},
|
|
2761
2807
|
},
|
|
2762
2808
|
[`& .${dateRangePickerDayClasses.insideSelection}`]: {
|
|
2763
|
-
backgroundColor: semanticColors.
|
|
2764
|
-
color: semanticColors.
|
|
2809
|
+
backgroundColor: semanticColors.color.icon.bgHover,
|
|
2810
|
+
color: semanticColors.color.text.input,
|
|
2765
2811
|
},
|
|
2766
2812
|
[`& .${dateRangePickerDayClasses.selectionStart}, & .${dateRangePickerDayClasses.selectionEnd}`]: {
|
|
2767
|
-
backgroundColor: semanticColors.
|
|
2813
|
+
backgroundColor: semanticColors.color.icon.active,
|
|
2768
2814
|
},
|
|
2769
2815
|
[`& .${pickersCalendarHeaderClasses.label}`]: {
|
|
2770
2816
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2771
2817
|
fontWeight: typography.fontWeight.semiBold,
|
|
2772
|
-
color: semanticColors.
|
|
2818
|
+
color: semanticColors.color.text.primary,
|
|
2773
2819
|
},
|
|
2774
2820
|
}));
|
|
2775
|
-
const ClearIcon = () => jsx(X, { size: 20, color: semanticColors.
|
|
2821
|
+
const ClearIcon = () => jsx(X, { size: 20, color: semanticColors.color.icon.placeholder });
|
|
2776
2822
|
// Custom calendar icon component
|
|
2777
|
-
const CalendarIcon = () => jsx(CalendarDays, { size: 20, color: semanticColors.
|
|
2823
|
+
const CalendarIcon = () => jsx(CalendarDays, { size: 20, color: semanticColors.color.icon.placeholder });
|
|
2778
2824
|
// Shortcut styles to match Figma list item design (no borders, plain text)
|
|
2779
2825
|
const shortcutChipStyles = {
|
|
2780
2826
|
// Container (MuiList) styles
|
|
@@ -2783,7 +2829,7 @@ const shortcutChipStyles = {
|
|
|
2783
2829
|
[`& .${chipClasses.root}`]: {
|
|
2784
2830
|
fontSize: typography.fontSize.sm,
|
|
2785
2831
|
fontWeight: typography.fontWeight.medium,
|
|
2786
|
-
color: semanticColors.
|
|
2832
|
+
color: semanticColors.color.text.input,
|
|
2787
2833
|
backgroundColor: 'transparent',
|
|
2788
2834
|
borderRadius: `${spacing.spacing_3_4}px`,
|
|
2789
2835
|
border: 'none',
|
|
@@ -2796,7 +2842,7 @@ const shortcutChipStyles = {
|
|
|
2796
2842
|
padding: 0,
|
|
2797
2843
|
},
|
|
2798
2844
|
'&:hover': {
|
|
2799
|
-
backgroundColor: semanticColors.
|
|
2845
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
2800
2846
|
},
|
|
2801
2847
|
},
|
|
2802
2848
|
};
|
|
@@ -2890,7 +2936,7 @@ const ModDatePicker = ({ type = 'single', open, label, value, rangeValue, onChan
|
|
|
2890
2936
|
ModDatePicker.displayName = 'ModDatePicker';
|
|
2891
2937
|
|
|
2892
2938
|
const StyledDivider = styled(Divider)(() => ({
|
|
2893
|
-
borderColor: semanticColors.border.
|
|
2939
|
+
borderColor: semanticColors.color.border.primary,
|
|
2894
2940
|
marginTop: spacing.spacing_1,
|
|
2895
2941
|
marginBottom: spacing.spacing_1,
|
|
2896
2942
|
}));
|
|
@@ -2931,7 +2977,11 @@ const StyledDot = styled('span', {
|
|
|
2931
2977
|
shouldForwardProp: prop => prop !== 'ownerState',
|
|
2932
2978
|
})(({ ownerState }) => {
|
|
2933
2979
|
const size = sizeMap[ownerState.size];
|
|
2934
|
-
|
|
2980
|
+
// Computed member access — the phase-2 restructure's codemod (driven from
|
|
2981
|
+
// literal TOKEN_MAP paths) cannot reach this. Fixed by hand. See
|
|
2982
|
+
// docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
2983
|
+
// "Dynamic access — the codemod cannot see these".
|
|
2984
|
+
const palette = semanticColors.color.status[ownerState.color];
|
|
2935
2985
|
return {
|
|
2936
2986
|
display: 'inline-flex',
|
|
2937
2987
|
alignItems: 'center',
|
|
@@ -2942,10 +2992,10 @@ const StyledDot = styled('span', {
|
|
|
2942
2992
|
borderRadius: '50%',
|
|
2943
2993
|
flexShrink: 0,
|
|
2944
2994
|
boxSizing: 'border-box',
|
|
2945
|
-
backgroundColor: palette.
|
|
2946
|
-
color: semanticColors.
|
|
2995
|
+
backgroundColor: palette.solid,
|
|
2996
|
+
color: semanticColors.color.text.tooltip,
|
|
2947
2997
|
...(ownerState.variant === 'outline' && {
|
|
2948
|
-
border: `3px solid ${palette.
|
|
2998
|
+
border: `3px solid ${palette.bg}`,
|
|
2949
2999
|
}),
|
|
2950
3000
|
'& > svg': {
|
|
2951
3001
|
width: '70%',
|
|
@@ -2964,9 +3014,9 @@ ModDot.displayName = 'ModDot';
|
|
|
2964
3014
|
const StyledRoot$1 = styled(Paper)({
|
|
2965
3015
|
padding: spacing.spacing_2,
|
|
2966
3016
|
borderRadius: borderRadius.s,
|
|
2967
|
-
backgroundColor: semanticColors.
|
|
2968
|
-
color: semanticColors.
|
|
2969
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
3017
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
3018
|
+
color: semanticColors.color.text.primary,
|
|
3019
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
2970
3020
|
boxShadow: `${shadows.neutral.regular.x}px ${shadows.neutral.regular.y}px ${shadows.neutral.regular.blur}px ${shadows.neutral.regular.spread}px ${shadows.neutral.regular.shadow}`,
|
|
2971
3021
|
display: 'flex',
|
|
2972
3022
|
flexDirection: 'column',
|
|
@@ -2977,14 +3027,14 @@ const Title = styled('p')(({ theme }) => ({
|
|
|
2977
3027
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
2978
3028
|
fontWeight: typography.fontWeight.semiBold,
|
|
2979
3029
|
lineHeight: 1.4,
|
|
2980
|
-
color: semanticColors.
|
|
3030
|
+
color: semanticColors.color.text.secondary,
|
|
2981
3031
|
}));
|
|
2982
3032
|
const FileName = styled('p')(({ theme }) => ({
|
|
2983
3033
|
margin: 0,
|
|
2984
3034
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
2985
3035
|
fontWeight: typography.fontWeight.medium,
|
|
2986
3036
|
lineHeight: 1.5,
|
|
2987
|
-
color: semanticColors.
|
|
3037
|
+
color: semanticColors.color.text.primary,
|
|
2988
3038
|
overflow: 'hidden',
|
|
2989
3039
|
textOverflow: 'ellipsis',
|
|
2990
3040
|
whiteSpace: 'nowrap',
|
|
@@ -2995,16 +3045,16 @@ const ProgressLabel$1 = styled('p')(({ theme }) => ({
|
|
|
2995
3045
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
2996
3046
|
fontWeight: typography.fontWeight.medium,
|
|
2997
3047
|
lineHeight: 1.5,
|
|
2998
|
-
color: semanticColors.
|
|
3048
|
+
color: semanticColors.color.text.primary,
|
|
2999
3049
|
flexShrink: 0,
|
|
3000
3050
|
}));
|
|
3001
3051
|
const StyledLinearProgress$1 = styled(LinearProgress)({
|
|
3002
3052
|
width: '100%',
|
|
3003
3053
|
height: spacing.spacing_1,
|
|
3004
3054
|
borderRadius: borderRadius.s,
|
|
3005
|
-
backgroundColor: semanticColors.border.
|
|
3055
|
+
backgroundColor: semanticColors.color.border.primary,
|
|
3006
3056
|
[`& .${linearProgressClasses.bar}`]: {
|
|
3007
|
-
backgroundColor: semanticColors.
|
|
3057
|
+
backgroundColor: semanticColors.button.primary.bg,
|
|
3008
3058
|
borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,
|
|
3009
3059
|
},
|
|
3010
3060
|
});
|
|
@@ -3012,7 +3062,7 @@ const ActionButton = styled(IconButton)({
|
|
|
3012
3062
|
padding: 0,
|
|
3013
3063
|
width: spacing.spacing_2,
|
|
3014
3064
|
height: spacing.spacing_2,
|
|
3015
|
-
color: semanticColors.
|
|
3065
|
+
color: semanticColors.color.icon.utility,
|
|
3016
3066
|
'&:hover': {
|
|
3017
3067
|
backgroundColor: 'transparent',
|
|
3018
3068
|
},
|
|
@@ -3044,50 +3094,50 @@ const ModDownloadToast = ({ title, fileName, progress, showClose = true, showPau
|
|
|
3044
3094
|
ModDownloadToast.displayName = 'ModDownloadToast';
|
|
3045
3095
|
|
|
3046
3096
|
const buildFilledIcon = ({ displayName, fillColor, body, knockout }) => {
|
|
3047
|
-
const Component = (props) => (jsxs(SvgIcon, { viewBox: "0 0 16 16", ...props, children: [jsx("g", { fill: fillColor, children: body }), jsx("g", { stroke: semanticColors.
|
|
3097
|
+
const Component = (props) => (jsxs(SvgIcon, { viewBox: "0 0 16 16", ...props, children: [jsx("g", { fill: fillColor, children: body }), jsx("g", { stroke: semanticColors.color.surface.raised, strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", fill: "none", children: knockout })] }));
|
|
3048
3098
|
Component.displayName = displayName;
|
|
3049
3099
|
return Component;
|
|
3050
3100
|
};
|
|
3051
3101
|
const CIRCLE_BODY = (jsx("path", { d: "M8.00001 14.6666C11.6819 14.6666 14.6667 11.6818 14.6667 7.99992C14.6667 4.31802 11.6819 1.33325 8.00001 1.33325C4.31811 1.33325 1.33334 4.31802 1.33334 7.99992C1.33334 11.6818 4.31811 14.6666 8.00001 14.6666Z" }));
|
|
3052
3102
|
const ModFilledSuccess = buildFilledIcon({
|
|
3053
3103
|
displayName: 'ModFilledSuccess',
|
|
3054
|
-
fillColor: semanticColors.status.success.
|
|
3104
|
+
fillColor: semanticColors.color.status.success.solid,
|
|
3055
3105
|
body: CIRCLE_BODY,
|
|
3056
3106
|
knockout: jsx("path", { d: "M6 8.00008L7.33333 9.33341L10 6.66675" }),
|
|
3057
3107
|
});
|
|
3058
3108
|
const ModFilledQueued = buildFilledIcon({
|
|
3059
3109
|
displayName: 'ModFilledQueued',
|
|
3060
|
-
fillColor: semanticColors.status.active.
|
|
3110
|
+
fillColor: semanticColors.color.status.active.solid,
|
|
3061
3111
|
body: CIRCLE_BODY,
|
|
3062
3112
|
knockout: jsx("path", { d: "M8 4V8L10.6667 9.33333" }),
|
|
3063
3113
|
});
|
|
3064
3114
|
const ModFilledInfo = buildFilledIcon({
|
|
3065
3115
|
displayName: 'ModFilledInfo',
|
|
3066
|
-
fillColor: semanticColors.status.info.
|
|
3116
|
+
fillColor: semanticColors.color.status.info.solid,
|
|
3067
3117
|
body: CIRCLE_BODY,
|
|
3068
3118
|
knockout: (jsxs(Fragment, { children: [jsx("path", { d: "M8 10.6667V8" }), jsx("path", { d: "M8 5.33325H8.00667" })] })),
|
|
3069
3119
|
});
|
|
3070
3120
|
const ModFilledWarning = buildFilledIcon({
|
|
3071
3121
|
displayName: 'ModFilledWarning',
|
|
3072
|
-
fillColor: semanticColors.status.warning.
|
|
3122
|
+
fillColor: semanticColors.color.status.warning.solid,
|
|
3073
3123
|
body: (jsx("path", { d: "M14.4867 12L9.15335 2.66665C9.03706 2.46146 8.86842 2.29078 8.66463 2.17203C8.46084 2.05329 8.22921 1.99072 7.99335 1.99072C7.75749 1.99072 7.52585 2.05329 7.32206 2.17203C7.11828 2.29078 6.94964 2.46146 6.83335 2.66665L1.50001 12C1.38247 12.2036 1.32083 12.4346 1.32135 12.6697C1.32187 12.9047 1.38453 13.1355 1.50298 13.3385C1.62142 13.5416 1.79145 13.7097 1.99581 13.8259C2.20018 13.942 2.43162 14.0021 2.66668 14H13.3333C13.5673 13.9997 13.797 13.938 13.9995 13.8208C14.202 13.7037 14.3702 13.5354 14.487 13.3327C14.6039 13.1301 14.6654 12.9002 14.6653 12.6663C14.6653 12.4324 14.6036 12.2026 14.4867 12Z" })),
|
|
3074
3124
|
knockout: (jsxs(Fragment, { children: [jsx("path", { d: "M8 6V8.66667" }), jsx("path", { d: "M8 11.3333H8.00667" })] })),
|
|
3075
3125
|
});
|
|
3076
3126
|
const ModFilledError = buildFilledIcon({
|
|
3077
3127
|
displayName: 'ModFilledError',
|
|
3078
|
-
fillColor: semanticColors.status.error.
|
|
3128
|
+
fillColor: semanticColors.color.status.error.solid,
|
|
3079
3129
|
body: (jsx("path", { d: "M10.208 1.33325C10.5616 1.33333 10.9007 1.47385 11.1507 1.72392L14.276 4.84925C14.5261 5.09924 14.6666 5.43832 14.6667 5.79192V10.2079C14.6666 10.5615 14.5261 10.9006 14.276 11.1506L11.1507 14.2759C10.9007 14.526 10.5616 14.6665 10.208 14.6666H5.79201C5.43842 14.6665 5.09933 14.526 4.84934 14.2759L1.72401 11.1506C1.47394 10.9006 1.33342 10.5615 1.33334 10.2079V5.79192C1.33342 5.43832 1.47394 5.09924 1.72401 4.84925L4.84934 1.72392C5.09933 1.47385 5.43842 1.33333 5.79201 1.33325H10.208Z" })),
|
|
3080
3130
|
knockout: (jsxs(Fragment, { children: [jsx("path", { d: "M8 5.33325V7.99992" }), jsx("path", { d: "M8 10.6667H8.00667" })] })),
|
|
3081
3131
|
});
|
|
3082
3132
|
const ModFilledNeutral = buildFilledIcon({
|
|
3083
3133
|
displayName: 'ModFilledNeutral',
|
|
3084
|
-
fillColor: semanticColors.status.neutral.
|
|
3134
|
+
fillColor: semanticColors.color.status.neutral.solid,
|
|
3085
3135
|
body: CIRCLE_BODY,
|
|
3086
3136
|
knockout: jsx("path", { d: "M5.33334 8H10.6667" }),
|
|
3087
3137
|
});
|
|
3088
3138
|
const ModFilledCanceled = buildFilledIcon({
|
|
3089
3139
|
displayName: 'ModFilledCanceled',
|
|
3090
|
-
fillColor: semanticColors.status.canceled.
|
|
3140
|
+
fillColor: semanticColors.color.status.canceled.solid,
|
|
3091
3141
|
body: CIRCLE_BODY,
|
|
3092
3142
|
knockout: (jsxs(Fragment, { children: [jsx("path", { d: "M10 6L6 10" }), jsx("path", { d: "M6 6L10 10" })] })),
|
|
3093
3143
|
});
|
|
@@ -3097,17 +3147,17 @@ const StyledChip$1 = styled(Chip, {
|
|
|
3097
3147
|
shouldForwardProp: prop => !filterChipOnlyProps.includes(prop),
|
|
3098
3148
|
})(({ theme, selected }) => ({
|
|
3099
3149
|
borderRadius: borderRadius.full,
|
|
3100
|
-
border: `1px solid ${semanticColors.
|
|
3150
|
+
border: `1px solid ${semanticColors.button.secondary.border}`,
|
|
3101
3151
|
backgroundColor: selected
|
|
3102
|
-
? semanticColors.
|
|
3103
|
-
: semanticColors.
|
|
3152
|
+
? semanticColors.button.secondary.bgPressed
|
|
3153
|
+
: semanticColors.color.surface.raised,
|
|
3104
3154
|
minHeight: 40,
|
|
3105
3155
|
padding: `${spacing.spacing_3_4}px ${spacing.spacing_1_1_2}px`,
|
|
3106
3156
|
gap: spacing.spacing_1,
|
|
3107
3157
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3108
3158
|
fontWeight: typography.fontWeight.medium,
|
|
3109
3159
|
lineHeight: 1,
|
|
3110
|
-
color: semanticColors.
|
|
3160
|
+
color: semanticColors.color.text.primary,
|
|
3111
3161
|
[`& .${chipClasses.label}`]: {
|
|
3112
3162
|
padding: 0,
|
|
3113
3163
|
overflow: 'visible',
|
|
@@ -3115,23 +3165,23 @@ const StyledChip$1 = styled(Chip, {
|
|
|
3115
3165
|
alignItems: 'center',
|
|
3116
3166
|
},
|
|
3117
3167
|
[`& .${chipClasses.deleteIcon}`]: {
|
|
3118
|
-
color: semanticColors.
|
|
3168
|
+
color: semanticColors.color.icon.default,
|
|
3119
3169
|
width: 24,
|
|
3120
3170
|
height: 24,
|
|
3121
3171
|
margin: 0,
|
|
3122
3172
|
flexShrink: 0,
|
|
3123
3173
|
'&:hover': {
|
|
3124
|
-
color: semanticColors.
|
|
3174
|
+
color: semanticColors.color.icon.default,
|
|
3125
3175
|
},
|
|
3126
3176
|
},
|
|
3127
3177
|
'&:hover': {
|
|
3128
|
-
backgroundColor: semanticColors.
|
|
3178
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
3129
3179
|
},
|
|
3130
3180
|
[`&.${chipClasses.focusVisible}`]: {
|
|
3131
3181
|
...focusRingStyles,
|
|
3132
3182
|
backgroundColor: selected
|
|
3133
|
-
? semanticColors.
|
|
3134
|
-
: semanticColors.
|
|
3183
|
+
? semanticColors.button.secondary.bgPressed
|
|
3184
|
+
: semanticColors.color.surface.raised,
|
|
3135
3185
|
},
|
|
3136
3186
|
}));
|
|
3137
3187
|
const LabelContent = styled('span')({
|
|
@@ -3150,13 +3200,13 @@ const HeaderLabel = styled('span')(({ theme }) => ({
|
|
|
3150
3200
|
fontSize: theme.typography.pxToRem(typography.fontSize.xxs),
|
|
3151
3201
|
fontWeight: typography.fontWeight.regular,
|
|
3152
3202
|
lineHeight: '120%',
|
|
3153
|
-
color: semanticColors.
|
|
3203
|
+
color: semanticColors.color.text.secondary,
|
|
3154
3204
|
}));
|
|
3155
3205
|
const SelectedLabel = styled('span')(({ theme }) => ({
|
|
3156
3206
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3157
3207
|
fontWeight: typography.fontWeight.medium,
|
|
3158
3208
|
lineHeight: 1,
|
|
3159
|
-
color: semanticColors.
|
|
3209
|
+
color: semanticColors.button.secondary.fg,
|
|
3160
3210
|
}));
|
|
3161
3211
|
const CountBadge = styled('span')(({ theme }) => ({
|
|
3162
3212
|
display: 'inline-flex',
|
|
@@ -3166,8 +3216,8 @@ const CountBadge = styled('span')(({ theme }) => ({
|
|
|
3166
3216
|
height: 16,
|
|
3167
3217
|
padding: `0 ${spacing.spacing_1_2}px`,
|
|
3168
3218
|
borderRadius: borderRadius.full,
|
|
3169
|
-
backgroundColor: semanticColors.brand,
|
|
3170
|
-
color: semanticColors.
|
|
3219
|
+
backgroundColor: semanticColors.color.action.brand,
|
|
3220
|
+
color: semanticColors.color.surface.raised,
|
|
3171
3221
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
3172
3222
|
fontWeight: typography.fontWeight.medium,
|
|
3173
3223
|
lineHeight: 1,
|
|
@@ -3211,7 +3261,7 @@ const SpinnerWrapper = styled('div')({
|
|
|
3211
3261
|
* @example
|
|
3212
3262
|
* <ModLoadingSpinner size={32} color="#ff0000" />
|
|
3213
3263
|
*/
|
|
3214
|
-
const ModLoadingSpinner = ({ size = 24, color = semanticColors.
|
|
3264
|
+
const ModLoadingSpinner = ({ size = 24, color = semanticColors.button.primary.bg, }) => {
|
|
3215
3265
|
return (jsx(SpinnerWrapper, { style: { width: size, height: size }, children: jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("title", { children: "Loading Spinner" }), jsx("g", { opacity: "0.2", children: jsx("circle", { cx: "12", cy: "12", r: "10", stroke: color, strokeWidth: "2.1" }) }), jsx("path", { d: "M12 2C6.477 2 2 6.477 2 12", stroke: color, strokeWidth: "2.1", strokeLinecap: "round" })] }) }));
|
|
3216
3266
|
};
|
|
3217
3267
|
ModLoadingSpinner.displayName = 'ModLoadingSpinner';
|
|
@@ -3219,8 +3269,8 @@ ModLoadingSpinner.displayName = 'ModLoadingSpinner';
|
|
|
3219
3269
|
const StyledFooter = styled(Box, {
|
|
3220
3270
|
shouldForwardProp: prop => prop !== 'showShadow',
|
|
3221
3271
|
})(({ theme, showShadow = false }) => ({
|
|
3222
|
-
backgroundColor: semanticColors.
|
|
3223
|
-
borderTop: `1px solid ${semanticColors.border.primary}`,
|
|
3272
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
3273
|
+
borderTop: `1px solid ${semanticColors.color.border.primary}`,
|
|
3224
3274
|
display: 'flex',
|
|
3225
3275
|
alignItems: 'center',
|
|
3226
3276
|
justifyContent: 'center',
|
|
@@ -3248,7 +3298,7 @@ const ResultText = styled('p')(({ theme }) => ({
|
|
|
3248
3298
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
3249
3299
|
fontWeight: typography.fontWeight.regular,
|
|
3250
3300
|
lineHeight: 1.5,
|
|
3251
|
-
color: semanticColors.
|
|
3301
|
+
color: semanticColors.color.text.primary, // typography/body: #232342
|
|
3252
3302
|
margin: 0,
|
|
3253
3303
|
whiteSpace: 'pre',
|
|
3254
3304
|
}));
|
|
@@ -3257,7 +3307,7 @@ const LoadMoreButton = styled('button')(({ theme }) => ({
|
|
|
3257
3307
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
3258
3308
|
fontWeight: typography.fontWeight.regular,
|
|
3259
3309
|
lineHeight: 'normal',
|
|
3260
|
-
color: semanticColors.
|
|
3310
|
+
color: semanticColors.color.text.link,
|
|
3261
3311
|
background: 'none',
|
|
3262
3312
|
border: 'none',
|
|
3263
3313
|
padding: 0,
|
|
@@ -3267,7 +3317,7 @@ const LoadMoreButton = styled('button')(({ theme }) => ({
|
|
|
3267
3317
|
textDecoration: 'underline',
|
|
3268
3318
|
},
|
|
3269
3319
|
'&:disabled': {
|
|
3270
|
-
color: semanticColors.
|
|
3320
|
+
color: semanticColors.button.fgDisabled,
|
|
3271
3321
|
cursor: 'not-allowed',
|
|
3272
3322
|
},
|
|
3273
3323
|
}));
|
|
@@ -3276,7 +3326,7 @@ const SelectedText = styled('p')(({ theme }) => ({
|
|
|
3276
3326
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
3277
3327
|
fontWeight: typography.fontWeight.regular,
|
|
3278
3328
|
lineHeight: 1.5,
|
|
3279
|
-
color: semanticColors.
|
|
3329
|
+
color: semanticColors.color.text.primary,
|
|
3280
3330
|
margin: 0,
|
|
3281
3331
|
whiteSpace: 'pre',
|
|
3282
3332
|
}));
|
|
@@ -3290,15 +3340,15 @@ const PaginationButton = styled(IconButton)(({ disabled }) => ({
|
|
|
3290
3340
|
width: spacing.spacing_5_1_2,
|
|
3291
3341
|
height: spacing.spacing_5_1_2,
|
|
3292
3342
|
padding: spacing.spacing_1,
|
|
3293
|
-
backgroundColor: semanticColors.
|
|
3343
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
3294
3344
|
borderRadius: borderRadius.full,
|
|
3295
3345
|
'&:hover': {
|
|
3296
|
-
backgroundColor: semanticColors.
|
|
3346
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
3297
3347
|
},
|
|
3298
3348
|
'& svg': {
|
|
3299
3349
|
width: 24,
|
|
3300
3350
|
height: 24,
|
|
3301
|
-
color: disabled ? semanticColors.
|
|
3351
|
+
color: disabled ? semanticColors.color.icon.disabled : semanticColors.color.icon.default,
|
|
3302
3352
|
},
|
|
3303
3353
|
}));
|
|
3304
3354
|
const PaginationText = styled('p')(({ theme }) => ({
|
|
@@ -3306,7 +3356,7 @@ const PaginationText = styled('p')(({ theme }) => ({
|
|
|
3306
3356
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
3307
3357
|
fontWeight: typography.fontWeight.regular,
|
|
3308
3358
|
lineHeight: 1.5,
|
|
3309
|
-
color: semanticColors.
|
|
3359
|
+
color: semanticColors.color.text.primary, // typography/body: #232342
|
|
3310
3360
|
margin: 0,
|
|
3311
3361
|
whiteSpace: 'pre',
|
|
3312
3362
|
}));
|
|
@@ -3565,31 +3615,31 @@ const StyledFormControl = styled(FormControl, {
|
|
|
3565
3615
|
width: '100%',
|
|
3566
3616
|
};
|
|
3567
3617
|
});
|
|
3568
|
-
const StyledInputLabel = styled(
|
|
3618
|
+
const StyledInputLabel = styled(MuiInputLabel, {
|
|
3569
3619
|
shouldForwardProp: prop => prop !== 'size' && prop !== 'infoIcon',
|
|
3570
3620
|
})(({ theme }) => ({
|
|
3571
3621
|
position: 'static',
|
|
3572
3622
|
transform: 'none',
|
|
3573
3623
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3574
3624
|
fontWeight: typography.fontWeight.medium,
|
|
3575
|
-
color: semanticColors.
|
|
3625
|
+
color: semanticColors.color.text.inputLabel,
|
|
3576
3626
|
display: 'flex',
|
|
3577
3627
|
alignItems: 'center',
|
|
3578
3628
|
gap: spacing.spacing_1_4,
|
|
3579
3629
|
[`&.${inputLabelClasses.focused}`]: {
|
|
3580
|
-
color: semanticColors.
|
|
3630
|
+
color: semanticColors.color.text.inputLabel,
|
|
3581
3631
|
},
|
|
3582
3632
|
[`&.${inputLabelClasses.disabled}`]: {
|
|
3583
|
-
color: semanticColors.
|
|
3633
|
+
color: semanticColors.button.fgDisabled,
|
|
3584
3634
|
},
|
|
3585
3635
|
[`&.${inputLabelClasses.error}`]: {
|
|
3586
|
-
color: semanticColors.
|
|
3636
|
+
color: semanticColors.color.text.inputLabel,
|
|
3587
3637
|
},
|
|
3588
3638
|
}));
|
|
3589
3639
|
const InfoIconWrapper = styled('span')({
|
|
3590
3640
|
display: 'inline-flex',
|
|
3591
3641
|
alignItems: 'center',
|
|
3592
|
-
color: semanticColors.
|
|
3642
|
+
color: semanticColors.color.icon.placeholder,
|
|
3593
3643
|
});
|
|
3594
3644
|
const StyledInputBase = styled(InputBase, {
|
|
3595
3645
|
shouldForwardProp: prop => prop !== 'size' && prop !== 'destructive',
|
|
@@ -3613,50 +3663,52 @@ const StyledInputBase = styled(InputBase, {
|
|
|
3613
3663
|
height: multiline ? 'auto' : sizeStyles.height,
|
|
3614
3664
|
fontSize: sizeStyles.fontSize,
|
|
3615
3665
|
borderRadius: sizeStyles.borderRadius,
|
|
3616
|
-
backgroundColor: semanticColors.input.
|
|
3617
|
-
border: `1px solid ${destructive ? semanticColors.status.error.
|
|
3666
|
+
backgroundColor: semanticColors.input.bg,
|
|
3667
|
+
border: `1px solid ${destructive ? semanticColors.color.status.error.solid : semanticColors.color.border.primary}`,
|
|
3618
3668
|
transition: theme.transitions.create(['border-color', 'background-color'], {
|
|
3619
3669
|
duration: theme.transitions.duration.short,
|
|
3620
3670
|
}),
|
|
3621
3671
|
[`& .${inputBaseClasses.input}`]: {
|
|
3622
3672
|
padding: sizeStyles.padding,
|
|
3623
|
-
color: semanticColors.
|
|
3673
|
+
color: semanticColors.color.text.input,
|
|
3624
3674
|
// Tabular figures, no tracking — see Badge.tsx.
|
|
3625
3675
|
fontVariantNumeric: 'tabular-nums',
|
|
3626
3676
|
'&::placeholder': {
|
|
3627
|
-
color: semanticColors.
|
|
3677
|
+
color: semanticColors.color.text.inputPlaceholder,
|
|
3628
3678
|
},
|
|
3629
3679
|
},
|
|
3630
3680
|
// Hover state
|
|
3631
3681
|
'&:hover': {
|
|
3632
|
-
backgroundColor: semanticColors.input.
|
|
3682
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
3633
3683
|
borderColor: destructive
|
|
3634
|
-
? semanticColors.status.error.
|
|
3635
|
-
: semanticColors.border.primary,
|
|
3684
|
+
? semanticColors.color.status.error.solid
|
|
3685
|
+
: semanticColors.color.border.primary,
|
|
3636
3686
|
},
|
|
3637
3687
|
// Focused state
|
|
3638
3688
|
[`&.${inputBaseClasses.focused}`]: {
|
|
3639
|
-
backgroundColor: semanticColors.input.
|
|
3689
|
+
backgroundColor: semanticColors.input.bg,
|
|
3640
3690
|
borderColor: destructive
|
|
3641
|
-
? semanticColors.status.error.
|
|
3642
|
-
: semanticColors.
|
|
3691
|
+
? semanticColors.color.status.error.solid
|
|
3692
|
+
: semanticColors.button.primary.bg,
|
|
3643
3693
|
},
|
|
3644
3694
|
// Disabled state
|
|
3645
3695
|
[`&.${inputBaseClasses.disabled}`]: {
|
|
3646
|
-
backgroundColor: semanticColors.input.
|
|
3647
|
-
borderColor: semanticColors.border.primary,
|
|
3648
|
-
color: semanticColors.
|
|
3696
|
+
backgroundColor: semanticColors.input.bgDisabled,
|
|
3697
|
+
borderColor: semanticColors.color.border.primary,
|
|
3698
|
+
color: semanticColors.button.fgDisabled,
|
|
3649
3699
|
[`& .${inputBaseClasses.input}`]: {
|
|
3650
|
-
WebkitTextFillColor: semanticColors.
|
|
3700
|
+
WebkitTextFillColor: semanticColors.button.fgDisabled,
|
|
3651
3701
|
},
|
|
3652
3702
|
},
|
|
3653
3703
|
// Error state
|
|
3654
3704
|
[`&.${inputBaseClasses.error}`]: {
|
|
3655
|
-
borderColor: semanticColors.status.error.
|
|
3705
|
+
borderColor: semanticColors.color.status.error.solid,
|
|
3656
3706
|
},
|
|
3657
3707
|
// Adornment styling
|
|
3658
3708
|
[`& .${inputAdornmentClasses.root}`]: {
|
|
3659
|
-
color: destructive
|
|
3709
|
+
color: destructive
|
|
3710
|
+
? semanticColors.color.status.error.solid
|
|
3711
|
+
: semanticColors.color.icon.placeholder,
|
|
3660
3712
|
},
|
|
3661
3713
|
};
|
|
3662
3714
|
});
|
|
@@ -3668,12 +3720,12 @@ const StyledFormHelperText = styled(FormHelperText, {
|
|
|
3668
3720
|
marginRight: 0,
|
|
3669
3721
|
// Figma specifies 14px for helper text
|
|
3670
3722
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3671
|
-
color: semanticColors.
|
|
3723
|
+
color: semanticColors.color.text.inputHelper,
|
|
3672
3724
|
[`&.${formHelperTextClasses.error}`]: {
|
|
3673
|
-
color: semanticColors.status.error.
|
|
3725
|
+
color: semanticColors.color.status.error.solid,
|
|
3674
3726
|
},
|
|
3675
3727
|
[`&.${formHelperTextClasses.disabled}`]: {
|
|
3676
|
-
color: semanticColors.
|
|
3728
|
+
color: semanticColors.button.fgDisabled,
|
|
3677
3729
|
},
|
|
3678
3730
|
};
|
|
3679
3731
|
});
|
|
@@ -3781,7 +3833,7 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3781
3833
|
paddingBottom: config.paddingBottom,
|
|
3782
3834
|
paddingLeft: config.paddingLeft,
|
|
3783
3835
|
borderRadius: spacing.spacing_3_4, // 6px
|
|
3784
|
-
backgroundColor: semanticColors.input.
|
|
3836
|
+
backgroundColor: semanticColors.input.bg,
|
|
3785
3837
|
gap: config.gap,
|
|
3786
3838
|
// Icon is always centered vertically per Figma design
|
|
3787
3839
|
alignItems: 'center',
|
|
@@ -3793,7 +3845,7 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3793
3845
|
minWidth: config.iconSize, // Override MUI's default 56px
|
|
3794
3846
|
width: config.iconSize,
|
|
3795
3847
|
height: config.iconSize,
|
|
3796
|
-
color: semanticColors.
|
|
3848
|
+
color: semanticColors.color.icon.placeholder,
|
|
3797
3849
|
transition: theme.transitions.create(['color'], {
|
|
3798
3850
|
duration: theme.transitions.duration.short,
|
|
3799
3851
|
}),
|
|
@@ -3810,9 +3862,7 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3810
3862
|
: size === 'small' || size === 'medium'
|
|
3811
3863
|
? typography.fontWeight.regular
|
|
3812
3864
|
: typography.fontWeight.medium,
|
|
3813
|
-
color: isLink
|
|
3814
|
-
? semanticColors.typography.link.primary
|
|
3815
|
-
: semanticColors.typography.navigation.default,
|
|
3865
|
+
color: isLink ? semanticColors.color.text.link : semanticColors.color.text.nav,
|
|
3816
3866
|
overflow: 'hidden',
|
|
3817
3867
|
textOverflow: 'ellipsis',
|
|
3818
3868
|
whiteSpace: 'nowrap',
|
|
@@ -3832,14 +3882,14 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3832
3882
|
: 12),
|
|
3833
3883
|
lineHeight: 1.5,
|
|
3834
3884
|
fontWeight: typography.fontWeight.regular,
|
|
3835
|
-
color: semanticColors.
|
|
3885
|
+
color: semanticColors.color.text.secondary,
|
|
3836
3886
|
},
|
|
3837
3887
|
// Secondary text styling - wraps with word break
|
|
3838
3888
|
'& .list-item-secondary': {
|
|
3839
3889
|
fontSize: theme.typography.pxToRem('secondaryFontSize' in config ? config.secondaryFontSize : config.fontSize),
|
|
3840
3890
|
lineHeight: size === 'large' ? 1.5 : 1.4,
|
|
3841
3891
|
fontWeight: typography.fontWeight.regular,
|
|
3842
|
-
color: semanticColors.
|
|
3892
|
+
color: semanticColors.color.text.secondary,
|
|
3843
3893
|
wordBreak: 'break-word',
|
|
3844
3894
|
whiteSpace: 'normal',
|
|
3845
3895
|
...(size === 'large' && {
|
|
@@ -3852,29 +3902,29 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3852
3902
|
alignItems: 'center',
|
|
3853
3903
|
flexShrink: 0,
|
|
3854
3904
|
marginLeft: spacing.spacing_1,
|
|
3855
|
-
color: semanticColors.
|
|
3905
|
+
color: semanticColors.color.icon.default,
|
|
3856
3906
|
},
|
|
3857
3907
|
// Hover state
|
|
3858
3908
|
'&:hover': {
|
|
3859
|
-
backgroundColor: semanticColors.input.
|
|
3909
|
+
backgroundColor: semanticColors.input.bg,
|
|
3860
3910
|
},
|
|
3861
3911
|
// Selected/Active state
|
|
3862
3912
|
// Font weights per Figma:
|
|
3863
3913
|
// - Primary: small/medium/xxlarge use 500, large/xlarge use 600
|
|
3864
3914
|
// - Secondary: large/xlarge use 500, xxlarge uses 400
|
|
3865
3915
|
[`&.${listItemButtonClasses.selected}`]: {
|
|
3866
|
-
backgroundColor: semanticColors.
|
|
3916
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
3867
3917
|
'&:hover': {
|
|
3868
|
-
backgroundColor: semanticColors.
|
|
3918
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
3869
3919
|
},
|
|
3870
3920
|
[`& .${listItemIconClasses.root}`]: {
|
|
3871
|
-
color: semanticColors.
|
|
3921
|
+
color: semanticColors.color.icon.pressed,
|
|
3872
3922
|
},
|
|
3873
3923
|
'& .list-item-primary': {
|
|
3874
3924
|
fontWeight: size === 'large' || size === 'xlarge'
|
|
3875
3925
|
? typography.fontWeight.semiBold
|
|
3876
3926
|
: typography.fontWeight.medium,
|
|
3877
|
-
color: semanticColors.
|
|
3927
|
+
color: semanticColors.color.text.nav,
|
|
3878
3928
|
},
|
|
3879
3929
|
'& .list-item-secondary': {
|
|
3880
3930
|
fontWeight: size === 'large' || size === 'xlarge'
|
|
@@ -3884,22 +3934,22 @@ const StyledListItemButton$1 = styled(ListItemButton, {
|
|
|
3884
3934
|
},
|
|
3885
3935
|
// Disabled state
|
|
3886
3936
|
[`&.${listItemButtonClasses.disabled}`]: {
|
|
3887
|
-
backgroundColor: semanticColors.input.
|
|
3937
|
+
backgroundColor: semanticColors.input.bgDisabled,
|
|
3888
3938
|
opacity: 1,
|
|
3889
3939
|
[`& .${listItemIconClasses.root}`]: {
|
|
3890
|
-
color: semanticColors.
|
|
3940
|
+
color: semanticColors.color.icon.disabled,
|
|
3891
3941
|
},
|
|
3892
3942
|
'& .list-item-primary': {
|
|
3893
|
-
color: semanticColors.
|
|
3943
|
+
color: semanticColors.button.tertiary.fgDisabled,
|
|
3894
3944
|
},
|
|
3895
3945
|
'& .list-item-secondary': {
|
|
3896
|
-
color: semanticColors.
|
|
3946
|
+
color: semanticColors.button.tertiary.fgDisabled,
|
|
3897
3947
|
},
|
|
3898
3948
|
'& .list-item-badge': {
|
|
3899
|
-
color: semanticColors.
|
|
3949
|
+
color: semanticColors.button.tertiary.fgDisabled,
|
|
3900
3950
|
},
|
|
3901
3951
|
'& .list-item-trailing': {
|
|
3902
|
-
color: semanticColors.
|
|
3952
|
+
color: semanticColors.color.icon.disabled,
|
|
3903
3953
|
},
|
|
3904
3954
|
},
|
|
3905
3955
|
};
|
|
@@ -3954,28 +4004,28 @@ function navVariantStyles(theme) {
|
|
|
3954
4004
|
paddingLeft: spacing.spacing_2,
|
|
3955
4005
|
paddingRight: spacing.spacing_2,
|
|
3956
4006
|
border: 'none',
|
|
3957
|
-
color: semanticColors.
|
|
4007
|
+
color: semanticColors.color.text.secondary,
|
|
3958
4008
|
backgroundColor: 'transparent',
|
|
3959
4009
|
transition: theme.transitions.create(['background-color', 'color']),
|
|
3960
4010
|
[`&.${listItemButtonClasses.selected}`]: {
|
|
3961
|
-
backgroundColor: semanticColors.
|
|
3962
|
-
color: semanticColors.
|
|
4011
|
+
backgroundColor: semanticColors.color.surface.highlightActive,
|
|
4012
|
+
color: semanticColors.color.text.primary,
|
|
3963
4013
|
'&:hover': {
|
|
3964
|
-
backgroundColor: semanticColors.
|
|
4014
|
+
backgroundColor: semanticColors.color.surface.highlightActive,
|
|
3965
4015
|
},
|
|
3966
4016
|
},
|
|
3967
4017
|
[`&:not(.${listItemButtonClasses.selected}):not(.${listItemButtonClasses.disabled})`]: {
|
|
3968
4018
|
'&:hover': {
|
|
3969
|
-
backgroundColor: semanticColors.
|
|
3970
|
-
color: semanticColors.
|
|
4019
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
4020
|
+
color: semanticColors.color.text.primary,
|
|
3971
4021
|
},
|
|
3972
4022
|
},
|
|
3973
4023
|
[`&.${listItemButtonClasses.focusVisible}`]: {
|
|
3974
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
4024
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
3975
4025
|
outlineOffset: -2,
|
|
3976
4026
|
},
|
|
3977
4027
|
[`&.${listItemButtonClasses.disabled}`]: {
|
|
3978
|
-
color: semanticColors.
|
|
4028
|
+
color: semanticColors.button.fgDisabled,
|
|
3979
4029
|
opacity: 1,
|
|
3980
4030
|
},
|
|
3981
4031
|
};
|
|
@@ -3990,71 +4040,71 @@ function cardVariantStyles(theme) {
|
|
|
3990
4040
|
paddingBottom: spacing.spacing_1,
|
|
3991
4041
|
paddingLeft: spacing.spacing_3_4,
|
|
3992
4042
|
paddingRight: spacing.spacing_3_4,
|
|
3993
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
3994
|
-
backgroundColor: semanticColors.
|
|
4043
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
4044
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
3995
4045
|
transition: theme.transitions.create(['border', 'background-color']),
|
|
3996
4046
|
// Active (selected) state
|
|
3997
4047
|
[`&.${listItemButtonClasses.selected}`]: {
|
|
3998
|
-
border: `2px solid ${semanticColors.
|
|
3999
|
-
backgroundColor: semanticColors.
|
|
4048
|
+
border: `2px solid ${semanticColors.button.primary.bg}`,
|
|
4049
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4000
4050
|
'&:hover': {
|
|
4001
|
-
backgroundColor: semanticColors.
|
|
4051
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4002
4052
|
},
|
|
4003
4053
|
// Icon color in selected state
|
|
4004
4054
|
[`& .${listItemIconClasses.root}`]: {
|
|
4005
|
-
color: semanticColors.
|
|
4055
|
+
color: semanticColors.color.icon.default,
|
|
4006
4056
|
},
|
|
4007
4057
|
// Text colors in selected state
|
|
4008
4058
|
[`& .${listItemTextClasses.primary}`]: {
|
|
4009
|
-
color: semanticColors.
|
|
4059
|
+
color: semanticColors.color.text.primary,
|
|
4010
4060
|
},
|
|
4011
4061
|
[`& .${listItemTextClasses.secondary}`]: {
|
|
4012
|
-
color: semanticColors.
|
|
4062
|
+
color: semanticColors.color.text.secondary,
|
|
4013
4063
|
},
|
|
4014
4064
|
},
|
|
4015
4065
|
// Deselected (default) state
|
|
4016
4066
|
[`&:not(.${listItemButtonClasses.selected}):not(.${listItemButtonClasses.disabled})`]: {
|
|
4017
4067
|
'&:hover': {
|
|
4018
|
-
backgroundColor: semanticColors.
|
|
4068
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
4019
4069
|
},
|
|
4020
4070
|
[`& .${listItemIconClasses.root}`]: {
|
|
4021
|
-
color: semanticColors.
|
|
4071
|
+
color: semanticColors.color.icon.disabled,
|
|
4022
4072
|
},
|
|
4023
4073
|
[`& .${listItemTextClasses.primary}`]: {
|
|
4024
|
-
color: semanticColors.
|
|
4074
|
+
color: semanticColors.button.tertiary.fgDisabled,
|
|
4025
4075
|
},
|
|
4026
4076
|
[`& .${listItemTextClasses.secondary}`]: {
|
|
4027
|
-
color: semanticColors.
|
|
4077
|
+
color: semanticColors.button.fgDisabled,
|
|
4028
4078
|
},
|
|
4029
4079
|
},
|
|
4030
4080
|
// Focus state
|
|
4031
4081
|
[`&.${listItemButtonClasses.focusVisible}`]: {
|
|
4032
|
-
outline: `2px solid ${semanticColors.
|
|
4082
|
+
outline: `2px solid ${semanticColors.button.primary.bg}`,
|
|
4033
4083
|
outlineOffset: 2,
|
|
4034
|
-
border: `2px solid ${semanticColors.
|
|
4035
|
-
backgroundColor: semanticColors.
|
|
4084
|
+
border: `2px solid ${semanticColors.button.primary.bg}`,
|
|
4085
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4036
4086
|
[`& .${listItemIconClasses.root}`]: {
|
|
4037
|
-
color: semanticColors.
|
|
4087
|
+
color: semanticColors.color.icon.default,
|
|
4038
4088
|
},
|
|
4039
4089
|
[`& .${listItemTextClasses.primary}`]: {
|
|
4040
|
-
color: semanticColors.
|
|
4090
|
+
color: semanticColors.color.text.primary,
|
|
4041
4091
|
},
|
|
4042
4092
|
[`& .${listItemTextClasses.secondary}`]: {
|
|
4043
|
-
color: semanticColors.
|
|
4093
|
+
color: semanticColors.color.text.secondary,
|
|
4044
4094
|
},
|
|
4045
4095
|
},
|
|
4046
4096
|
// Disabled state
|
|
4047
4097
|
[`&.${listItemButtonClasses.disabled}`]: {
|
|
4048
|
-
backgroundColor: semanticColors.surface.sunken,
|
|
4098
|
+
backgroundColor: semanticColors.color.surface.sunken,
|
|
4049
4099
|
opacity: 1, // Override MUI default opacity
|
|
4050
4100
|
[`& .${listItemIconClasses.root}`]: {
|
|
4051
|
-
color: semanticColors.
|
|
4101
|
+
color: semanticColors.color.icon.disabled,
|
|
4052
4102
|
},
|
|
4053
4103
|
[`& .${listItemTextClasses.primary}`]: {
|
|
4054
|
-
color: semanticColors.
|
|
4104
|
+
color: semanticColors.button.fgDisabled,
|
|
4055
4105
|
},
|
|
4056
4106
|
[`& .${listItemTextClasses.secondary}`]: {
|
|
4057
|
-
color: semanticColors.
|
|
4107
|
+
color: semanticColors.button.fgDisabled,
|
|
4058
4108
|
},
|
|
4059
4109
|
},
|
|
4060
4110
|
};
|
|
@@ -4099,9 +4149,9 @@ ModListItemButton.displayName = 'ModListItemButton';
|
|
|
4099
4149
|
|
|
4100
4150
|
const StyledMenu = styled(Menu)(() => ({
|
|
4101
4151
|
[`& .${paperClasses.root}`]: {
|
|
4102
|
-
backgroundColor: semanticColors.
|
|
4152
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4103
4153
|
borderRadius: borderRadius.s,
|
|
4104
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
4154
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
4105
4155
|
boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,
|
|
4106
4156
|
marginTop: spacing.spacing_1,
|
|
4107
4157
|
paddingTop: spacing.spacing_1,
|
|
@@ -4157,8 +4207,8 @@ const StyledCell$1 = styled('div', {
|
|
|
4157
4207
|
paddingTop: spacing.spacing_1_2, // 4px — input-vertical
|
|
4158
4208
|
paddingBottom: spacing.spacing_1_2,
|
|
4159
4209
|
backgroundColor: disabled
|
|
4160
|
-
? semanticColors.
|
|
4161
|
-
: semanticColors.
|
|
4210
|
+
? semanticColors.color.surface.dataGrid.disabled
|
|
4211
|
+
: semanticColors.color.surface.dataGrid.default,
|
|
4162
4212
|
boxSizing: 'border-box',
|
|
4163
4213
|
}));
|
|
4164
4214
|
const LabelText = styled('span', {
|
|
@@ -4171,7 +4221,7 @@ const LabelText = styled('span', {
|
|
|
4171
4221
|
fontSize: typography.fontSize.xs,
|
|
4172
4222
|
fontWeight: typography.fontWeight.regular,
|
|
4173
4223
|
lineHeight: 1.5,
|
|
4174
|
-
color: disabled ? semanticColors.
|
|
4224
|
+
color: disabled ? semanticColors.color.text.secondary : semanticColors.color.text.primary,
|
|
4175
4225
|
}));
|
|
4176
4226
|
/**
|
|
4177
4227
|
* ModAvatarCell — DataGrid cell displaying a user avatar with optional label.
|
|
@@ -4189,9 +4239,9 @@ ModAvatarCell.displayName = 'ModAvatarCell';
|
|
|
4189
4239
|
// ============================================================================
|
|
4190
4240
|
const StyledDialog = styled(Dialog)({
|
|
4191
4241
|
[`& .${dialogClasses.paper}`]: {
|
|
4192
|
-
backgroundColor: semanticColors.
|
|
4242
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4193
4243
|
borderRadius: borderRadius.card,
|
|
4194
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
4244
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
4195
4245
|
boxShadow: 'none',
|
|
4196
4246
|
},
|
|
4197
4247
|
[`& .${dialogClasses.container}`]: {
|
|
@@ -4251,7 +4301,7 @@ const ModalHeaderTitle = styled('h2')(({ theme }) => ({
|
|
|
4251
4301
|
fontWeight: typography.fontWeight.medium,
|
|
4252
4302
|
fontSize: theme.typography.pxToRem(typography.fontSize.h3),
|
|
4253
4303
|
lineHeight: 1.4,
|
|
4254
|
-
color: semanticColors.
|
|
4304
|
+
color: semanticColors.color.text.nav,
|
|
4255
4305
|
}));
|
|
4256
4306
|
const modalHeaderTitleLinkStyles = {
|
|
4257
4307
|
margin: 0,
|
|
@@ -4259,10 +4309,10 @@ const modalHeaderTitleLinkStyles = {
|
|
|
4259
4309
|
fontWeight: typography.fontWeight.medium,
|
|
4260
4310
|
fontSize: typography.fontSize.h3,
|
|
4261
4311
|
lineHeight: 1.4,
|
|
4262
|
-
color: semanticColors.
|
|
4312
|
+
color: semanticColors.color.text.link,
|
|
4263
4313
|
textDecoration: 'none',
|
|
4264
4314
|
'&:hover': {
|
|
4265
|
-
color: semanticColors.
|
|
4315
|
+
color: semanticColors.button.tertiary.fgHover,
|
|
4266
4316
|
textDecoration: 'underline',
|
|
4267
4317
|
},
|
|
4268
4318
|
};
|
|
@@ -4272,10 +4322,10 @@ const ModalHeaderSubtitle = styled('p')(({ theme }) => ({
|
|
|
4272
4322
|
fontWeight: typography.fontWeight.regular,
|
|
4273
4323
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
4274
4324
|
lineHeight: 1.4,
|
|
4275
|
-
color: semanticColors.
|
|
4325
|
+
color: semanticColors.color.text.secondary,
|
|
4276
4326
|
}));
|
|
4277
4327
|
const StyledCloseButton = styled(IconButton)({
|
|
4278
|
-
color: semanticColors.
|
|
4328
|
+
color: semanticColors.color.icon.utility,
|
|
4279
4329
|
paddingTop: 0,
|
|
4280
4330
|
paddingRight: 0,
|
|
4281
4331
|
paddingBottom: 0,
|
|
@@ -4285,7 +4335,7 @@ const StyledCloseButton = styled(IconButton)({
|
|
|
4285
4335
|
flexShrink: 0,
|
|
4286
4336
|
'&:hover': {
|
|
4287
4337
|
backgroundColor: 'transparent',
|
|
4288
|
-
color: semanticColors.
|
|
4338
|
+
color: semanticColors.color.icon.utility,
|
|
4289
4339
|
},
|
|
4290
4340
|
});
|
|
4291
4341
|
/**
|
|
@@ -4319,7 +4369,7 @@ const StyledDialogContent = styled(DialogContent)(({ theme }) => ({
|
|
|
4319
4369
|
fontWeight: typography.fontWeight.regular,
|
|
4320
4370
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
4321
4371
|
lineHeight: 1.5,
|
|
4322
|
-
color: semanticColors.
|
|
4372
|
+
color: semanticColors.color.text.nav,
|
|
4323
4373
|
[`&.${dialogContentClasses.root}`]: {
|
|
4324
4374
|
paddingTop: 0,
|
|
4325
4375
|
paddingRight: spacing.spacing_4,
|
|
@@ -4374,7 +4424,7 @@ const CellRoot = styled('div', {
|
|
|
4374
4424
|
justifyContent: 'center',
|
|
4375
4425
|
width: '100%',
|
|
4376
4426
|
height: '100%',
|
|
4377
|
-
color: disabled ? semanticColors.
|
|
4427
|
+
color: disabled ? semanticColors.color.icon.disabled : semanticColors.color.icon.default,
|
|
4378
4428
|
}));
|
|
4379
4429
|
/**
|
|
4380
4430
|
* ModIconCell — Icon cell for DataGrid. Renders an icon centered in the cell.
|
|
@@ -4397,8 +4447,8 @@ const CellWrapper = styled('div', {
|
|
|
4397
4447
|
paddingLeft: spacing.spacing_1,
|
|
4398
4448
|
paddingRight: spacing.spacing_1,
|
|
4399
4449
|
backgroundColor: disabled
|
|
4400
|
-
? semanticColors.
|
|
4401
|
-
: semanticColors.
|
|
4450
|
+
? semanticColors.color.surface.dataGrid.disabled
|
|
4451
|
+
: semanticColors.color.surface.dataGrid.default,
|
|
4402
4452
|
'& img': {
|
|
4403
4453
|
display: 'block',
|
|
4404
4454
|
maxHeight: 32,
|
|
@@ -4436,13 +4486,13 @@ const StyledLinearProgress = styled(LinearProgress, {
|
|
|
4436
4486
|
[`&.${linearProgressClasses.colorPrimary}`]: {
|
|
4437
4487
|
backgroundColor: semanticColors.progress.track,
|
|
4438
4488
|
[`& .${linearProgressClasses.bar}`]: {
|
|
4439
|
-
backgroundColor: semanticColors.status.active.
|
|
4489
|
+
backgroundColor: semanticColors.color.status.active.solid,
|
|
4440
4490
|
},
|
|
4441
4491
|
},
|
|
4442
4492
|
// Cancelled variant uses warning color
|
|
4443
4493
|
'&[data-variant="cancelled"]': {
|
|
4444
4494
|
[`& .${linearProgressClasses.bar}`]: {
|
|
4445
|
-
backgroundColor: semanticColors.status.warning.
|
|
4495
|
+
backgroundColor: semanticColors.color.status.warning.solid,
|
|
4446
4496
|
},
|
|
4447
4497
|
},
|
|
4448
4498
|
}));
|
|
@@ -4471,7 +4521,7 @@ const ProgressWrapper = styled('div')(({ labelPosition }) => ({
|
|
|
4471
4521
|
const ProgressLabel = styled(Typography)(({ theme }) => ({
|
|
4472
4522
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
4473
4523
|
fontWeight: typography.fontWeight.medium,
|
|
4474
|
-
color: semanticColors.
|
|
4524
|
+
color: semanticColors.color.text.primary,
|
|
4475
4525
|
lineHeight: 1.4,
|
|
4476
4526
|
whiteSpace: 'nowrap',
|
|
4477
4527
|
flexShrink: 0,
|
|
@@ -4505,8 +4555,8 @@ const StyledCell = styled('div', {
|
|
|
4505
4555
|
paddingLeft: spacing.spacing_1_1_2, // 12px input-horizontal
|
|
4506
4556
|
paddingRight: spacing.spacing_1_1_2,
|
|
4507
4557
|
backgroundColor: disabled
|
|
4508
|
-
? semanticColors.
|
|
4509
|
-
: semanticColors.
|
|
4558
|
+
? semanticColors.color.surface.dataGrid.disabled
|
|
4559
|
+
: semanticColors.color.surface.dataGrid.default,
|
|
4510
4560
|
boxSizing: 'border-box',
|
|
4511
4561
|
}));
|
|
4512
4562
|
/**
|
|
@@ -4518,10 +4568,14 @@ const ModProgressCell = ({ value = 0, disabled = false, empty = false, }) => {
|
|
|
4518
4568
|
};
|
|
4519
4569
|
ModProgressCell.displayName = 'ModProgressCell';
|
|
4520
4570
|
|
|
4571
|
+
// semanticColors.status[variant] is a computed member access, so the phase-2
|
|
4572
|
+
// token restructure's codemod (driven from literal TOKEN_MAP paths) cannot
|
|
4573
|
+
// reach it — fixed by hand. See docs/superpowers/plans/2026-08-05-semantic-restructure.md
|
|
4574
|
+
// "Dynamic access — the codemod cannot see these".
|
|
4521
4575
|
const variantColors = (variant) => ({
|
|
4522
|
-
bg: semanticColors.status[variant].
|
|
4523
|
-
fg: semanticColors.status[variant].
|
|
4524
|
-
border: semanticColors.status[variant].
|
|
4576
|
+
bg: semanticColors.color.status[variant].bg,
|
|
4577
|
+
fg: semanticColors.color.status[variant].fg,
|
|
4578
|
+
border: semanticColors.color.status[variant].tint,
|
|
4525
4579
|
});
|
|
4526
4580
|
const StyledChip = styled('div', {
|
|
4527
4581
|
shouldForwardProp: prop => prop !== 'disabled' && prop !== 'variant',
|
|
@@ -4536,9 +4590,9 @@ const StyledChip = styled('div', {
|
|
|
4536
4590
|
paddingLeft: spacing.spacing_1_1_2,
|
|
4537
4591
|
paddingRight: spacing.spacing_1_1_2,
|
|
4538
4592
|
borderRadius: borderRadius.full,
|
|
4539
|
-
border: `1px solid ${disabled ? semanticColors.border.
|
|
4540
|
-
backgroundColor: disabled ? semanticColors.
|
|
4541
|
-
color: disabled ? semanticColors.
|
|
4593
|
+
border: `1px solid ${disabled ? semanticColors.color.border.primary : colors.border}`,
|
|
4594
|
+
backgroundColor: disabled ? semanticColors.color.surface.dataGrid.disabled : colors.bg,
|
|
4595
|
+
color: disabled ? semanticColors.color.icon.disabled : colors.fg,
|
|
4542
4596
|
fontFamily: typography.fontFamily.body,
|
|
4543
4597
|
fontSize: typography.fontSize.xs,
|
|
4544
4598
|
fontWeight: typography.fontWeight.medium,
|
|
@@ -4563,7 +4617,7 @@ const TooltipErrorPre = styled('pre')({
|
|
|
4563
4617
|
fontSize: typography.fontSize.sm,
|
|
4564
4618
|
fontWeight: typography.fontWeight.regular,
|
|
4565
4619
|
lineHeight: 1.5,
|
|
4566
|
-
color: semanticColors.
|
|
4620
|
+
color: semanticColors.color.text.tooltip,
|
|
4567
4621
|
whiteSpace: 'pre-wrap',
|
|
4568
4622
|
wordBreak: 'break-all',
|
|
4569
4623
|
maxHeight: 200,
|
|
@@ -4571,12 +4625,12 @@ const TooltipErrorPre = styled('pre')({
|
|
|
4571
4625
|
});
|
|
4572
4626
|
const StyledTooltip$1 = styled(Tooltip)({
|
|
4573
4627
|
[`& .${tooltipClasses.tooltip}`]: {
|
|
4574
|
-
backgroundColor: semanticColors.
|
|
4628
|
+
backgroundColor: semanticColors.color.surface.tooltip,
|
|
4575
4629
|
maxWidth: 400,
|
|
4576
4630
|
padding: `${spacing.spacing_1}px ${spacing.spacing_1_1_2}px`,
|
|
4577
4631
|
},
|
|
4578
4632
|
[`& .${tooltipClasses.arrow}`]: {
|
|
4579
|
-
color: semanticColors.
|
|
4633
|
+
color: semanticColors.color.surface.tooltip,
|
|
4580
4634
|
},
|
|
4581
4635
|
});
|
|
4582
4636
|
/**
|
|
@@ -4585,7 +4639,7 @@ const StyledTooltip$1 = styled(Tooltip)({
|
|
|
4585
4639
|
const ModStatusCell = ({ icon, label, details, disabled = false, variant = 'success', empty = false, }) => {
|
|
4586
4640
|
if (empty) {
|
|
4587
4641
|
return (jsx(Box, { component: "span", sx: {
|
|
4588
|
-
color: semanticColors.
|
|
4642
|
+
color: semanticColors.color.text.primary,
|
|
4589
4643
|
fontSize: typography.fontSize.sm,
|
|
4590
4644
|
lineHeight: 1,
|
|
4591
4645
|
}, children: '—' }));
|
|
@@ -4606,10 +4660,10 @@ const NavigationAvatarContainer = styled('div')({
|
|
|
4606
4660
|
justifyContent: 'center',
|
|
4607
4661
|
alignItems: 'center',
|
|
4608
4662
|
borderRadius: '50%',
|
|
4609
|
-
border: `1px solid ${semanticColors.border.
|
|
4610
|
-
backgroundColor: semanticColors.
|
|
4663
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
4664
|
+
backgroundColor: semanticColors.button.secondary.bg,
|
|
4611
4665
|
'&:focus-within': {
|
|
4612
|
-
borderColor: semanticColors.border.focus,
|
|
4666
|
+
borderColor: semanticColors.color.border.focus,
|
|
4613
4667
|
},
|
|
4614
4668
|
});
|
|
4615
4669
|
/**
|
|
@@ -4633,19 +4687,19 @@ const useModSideNav = () => useContext(ModSideNavContext);
|
|
|
4633
4687
|
*/
|
|
4634
4688
|
const variantConfig = {
|
|
4635
4689
|
light: {
|
|
4636
|
-
backgroundColor: semanticColors.
|
|
4637
|
-
color: semanticColors.
|
|
4690
|
+
backgroundColor: semanticColors.color.surface.tooltip, // #4b5563 - medium gray
|
|
4691
|
+
color: semanticColors.color.text.tooltip, // #ffffff - white
|
|
4638
4692
|
},
|
|
4639
4693
|
dark: {
|
|
4640
|
-
backgroundColor: semanticColors.
|
|
4641
|
-
color: semanticColors.
|
|
4694
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
4695
|
+
color: semanticColors.color.text.primary,
|
|
4642
4696
|
},
|
|
4643
4697
|
brand: {
|
|
4644
4698
|
// snackbarBrand is one of the few tokens Figma fixes across both modes, so
|
|
4645
4699
|
// its foreground must be fixed too. typography.tooltip.default flips
|
|
4646
4700
|
// (#ffffff -> #232342), which would put dark navy on dark blue in dark mode.
|
|
4647
|
-
backgroundColor: semanticColors.
|
|
4648
|
-
color: semanticColors.
|
|
4701
|
+
backgroundColor: semanticColors.color.surface.snackbarBrand,
|
|
4702
|
+
color: semanticColors.color.text.linkOnDark,
|
|
4649
4703
|
},
|
|
4650
4704
|
};
|
|
4651
4705
|
/**
|
|
@@ -4729,11 +4783,11 @@ const StyledRoot = styled(ButtonBase, {
|
|
|
4729
4783
|
cursor: 'pointer',
|
|
4730
4784
|
textDecoration: 'none',
|
|
4731
4785
|
'&:hover .mod-nav-icon-padding': {
|
|
4732
|
-
backgroundColor: semanticColors.
|
|
4733
|
-
borderColor: semanticColors.
|
|
4786
|
+
backgroundColor: semanticColors.color.action.tint,
|
|
4787
|
+
borderColor: semanticColors.color.action.border,
|
|
4734
4788
|
},
|
|
4735
4789
|
'&:hover .mod-nav-label': {
|
|
4736
|
-
color: semanticColors.text.primary,
|
|
4790
|
+
color: semanticColors.color.text.primary,
|
|
4737
4791
|
fontWeight: typography.fontWeight.semiBold,
|
|
4738
4792
|
},
|
|
4739
4793
|
[`& .${chipClasses.root}`]: {
|
|
@@ -4744,16 +4798,16 @@ const StyledRoot = styled(ButtonBase, {
|
|
|
4744
4798
|
},
|
|
4745
4799
|
...(selected && {
|
|
4746
4800
|
'& .mod-nav-icon-padding': {
|
|
4747
|
-
backgroundColor: semanticColors.
|
|
4748
|
-
borderColor: semanticColors.
|
|
4749
|
-
color: semanticColors.
|
|
4801
|
+
backgroundColor: semanticColors.color.action.tint,
|
|
4802
|
+
borderColor: semanticColors.color.action.border,
|
|
4803
|
+
color: semanticColors.color.action.navy,
|
|
4750
4804
|
},
|
|
4751
4805
|
'& .mod-nav-label': {
|
|
4752
|
-
color: semanticColors.
|
|
4806
|
+
color: semanticColors.color.action.navy,
|
|
4753
4807
|
fontWeight: typography.fontWeight.semiBold,
|
|
4754
4808
|
},
|
|
4755
4809
|
'&:hover .mod-nav-label': {
|
|
4756
|
-
color: semanticColors.
|
|
4810
|
+
color: semanticColors.color.action.navy,
|
|
4757
4811
|
},
|
|
4758
4812
|
}),
|
|
4759
4813
|
}));
|
|
@@ -4763,7 +4817,7 @@ const IconPadding = styled('span')({
|
|
|
4763
4817
|
padding: spacing.spacing_1, // 8px
|
|
4764
4818
|
borderRadius: borderRadius.xS, // 4px
|
|
4765
4819
|
border: '1px solid transparent',
|
|
4766
|
-
color: semanticColors.
|
|
4820
|
+
color: semanticColors.color.icon.default,
|
|
4767
4821
|
transition: 'background-color 150ms, border-color 150ms, color 150ms',
|
|
4768
4822
|
});
|
|
4769
4823
|
const navLabel = semanticTypography.navigationLabel.default;
|
|
@@ -4773,7 +4827,7 @@ const Label$2 = styled('span')(({ theme }) => ({
|
|
|
4773
4827
|
fontSize: theme.typography.pxToRem(navLabel.fontSize),
|
|
4774
4828
|
lineHeight: navLabel.lineHeight,
|
|
4775
4829
|
textAlign: 'center',
|
|
4776
|
-
color: semanticColors.text.primary,
|
|
4830
|
+
color: semanticColors.color.text.primary,
|
|
4777
4831
|
width: '100%',
|
|
4778
4832
|
transition: 'color 150ms',
|
|
4779
4833
|
}));
|
|
@@ -4800,7 +4854,7 @@ const StickyHeader = styled(Box)(({ theme }) => ({
|
|
|
4800
4854
|
position: 'sticky',
|
|
4801
4855
|
top: 0,
|
|
4802
4856
|
zIndex: theme.zIndex.appBar,
|
|
4803
|
-
backgroundColor: semanticColors.surface.
|
|
4857
|
+
backgroundColor: semanticColors.color.surface.canvas,
|
|
4804
4858
|
flexShrink: 0,
|
|
4805
4859
|
}));
|
|
4806
4860
|
/**
|
|
@@ -4809,14 +4863,14 @@ const StickyHeader = styled(Box)(({ theme }) => ({
|
|
|
4809
4863
|
const PageTitle = styled(Typography)(() => ({
|
|
4810
4864
|
...semanticTypography.titles.pageHeader,
|
|
4811
4865
|
lineHeight: 1.4,
|
|
4812
|
-
color: semanticColors.
|
|
4866
|
+
color: semanticColors.color.text.primary,
|
|
4813
4867
|
}));
|
|
4814
4868
|
/**
|
|
4815
4869
|
* Subtitle typography
|
|
4816
4870
|
*/
|
|
4817
4871
|
const Subtitle = styled(Typography)(() => ({
|
|
4818
4872
|
fontSize: typography.fontSize.sm,
|
|
4819
|
-
color: semanticColors.
|
|
4873
|
+
color: semanticColors.color.text.secondary,
|
|
4820
4874
|
}));
|
|
4821
4875
|
/**
|
|
4822
4876
|
* ModPageContent - Page content surface from the Moderne Design System
|
|
@@ -4911,8 +4965,8 @@ function ModPageContent({ pageTitle, subtitle, breadcrumbs, action, sticky = fal
|
|
|
4911
4965
|
minHeight: '50vh',
|
|
4912
4966
|
}, children: jsx(ModLoadingSpinner, {}) })) : (children);
|
|
4913
4967
|
return (jsxs(Fragment, { children: [jsx(Box, { sx: {
|
|
4914
|
-
backgroundColor: semanticColors.surface.
|
|
4915
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
4968
|
+
backgroundColor: semanticColors.color.surface.canvas,
|
|
4969
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
4916
4970
|
borderRadius: `${borderRadius.input}px`,
|
|
4917
4971
|
height: '100%',
|
|
4918
4972
|
display: 'flex',
|
|
@@ -4955,10 +5009,10 @@ function ModPageContent({ pageTitle, subtitle, breadcrumbs, action, sticky = fal
|
|
|
4955
5009
|
right: spacing.spacing_4,
|
|
4956
5010
|
zIndex: 1000,
|
|
4957
5011
|
}, children: jsx(Fab, { sx: {
|
|
4958
|
-
backgroundColor: `color-mix(in srgb, ${semanticColors.
|
|
4959
|
-
color: semanticColors.
|
|
5012
|
+
backgroundColor: `color-mix(in srgb, ${semanticColors.button.primary.bg} 12.5%, transparent)`,
|
|
5013
|
+
color: semanticColors.button.primary.bg,
|
|
4960
5014
|
'&:hover': {
|
|
4961
|
-
backgroundColor: `color-mix(in srgb, ${semanticColors.
|
|
5015
|
+
backgroundColor: `color-mix(in srgb, ${semanticColors.button.primary.bg} 18.8%, transparent)`,
|
|
4962
5016
|
},
|
|
4963
5017
|
}, title: "Back to top", size: "small", onClick: handleScrollToTop, children: jsx(ChevronUp, { size: 20 }) }) }) }))] }));
|
|
4964
5018
|
}
|
|
@@ -5015,8 +5069,8 @@ const StyledTextField = styled(TextField)(({ theme }) => ({
|
|
|
5015
5069
|
height: spacing.spacing_5,
|
|
5016
5070
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
5017
5071
|
borderRadius: borderRadius.input,
|
|
5018
|
-
backgroundColor: semanticColors.input.
|
|
5019
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
5072
|
+
backgroundColor: semanticColors.input.bg,
|
|
5073
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
5020
5074
|
paddingTop: spacing.spacing_1,
|
|
5021
5075
|
paddingBottom: spacing.spacing_1,
|
|
5022
5076
|
paddingLeft: spacing.spacing_1_1_2,
|
|
@@ -5027,26 +5081,26 @@ const StyledTextField = styled(TextField)(({ theme }) => ({
|
|
|
5027
5081
|
},
|
|
5028
5082
|
[`& .${inputBaseClasses.input}`]: {
|
|
5029
5083
|
padding: 0,
|
|
5030
|
-
color: semanticColors.
|
|
5084
|
+
color: semanticColors.color.text.input,
|
|
5031
5085
|
'&::placeholder': {
|
|
5032
|
-
color: semanticColors.
|
|
5086
|
+
color: semanticColors.color.text.inputPlaceholder,
|
|
5033
5087
|
opacity: 1,
|
|
5034
5088
|
},
|
|
5035
5089
|
},
|
|
5036
5090
|
'&:hover': {
|
|
5037
|
-
backgroundColor: semanticColors.input.
|
|
5091
|
+
backgroundColor: semanticColors.input.bgHover,
|
|
5038
5092
|
},
|
|
5039
5093
|
[`&.${inputBaseClasses.focused}`]: {
|
|
5040
|
-
backgroundColor: semanticColors.input.
|
|
5041
|
-
borderColor: semanticColors.
|
|
5094
|
+
backgroundColor: semanticColors.input.bg,
|
|
5095
|
+
borderColor: semanticColors.button.primary.bg,
|
|
5042
5096
|
},
|
|
5043
5097
|
[`&.${inputBaseClasses.disabled}`]: {
|
|
5044
|
-
backgroundColor: semanticColors.input.
|
|
5045
|
-
color: semanticColors.
|
|
5098
|
+
backgroundColor: semanticColors.input.bgDisabled,
|
|
5099
|
+
color: semanticColors.button.fgDisabled,
|
|
5046
5100
|
},
|
|
5047
5101
|
},
|
|
5048
5102
|
[`& .${inputAdornmentClasses.root}`]: {
|
|
5049
|
-
color: semanticColors.
|
|
5103
|
+
color: semanticColors.color.icon.placeholder,
|
|
5050
5104
|
'& svg': {
|
|
5051
5105
|
width: 14,
|
|
5052
5106
|
height: 14,
|
|
@@ -5056,10 +5110,10 @@ const StyledTextField = styled(TextField)(({ theme }) => ({
|
|
|
5056
5110
|
marginRight: 0,
|
|
5057
5111
|
},
|
|
5058
5112
|
[`& .${iconButtonClasses.root}`]: {
|
|
5059
|
-
color: semanticColors.
|
|
5113
|
+
color: semanticColors.color.icon.placeholder,
|
|
5060
5114
|
'&:hover': {
|
|
5061
|
-
backgroundColor: semanticColors.
|
|
5062
|
-
color: semanticColors.
|
|
5115
|
+
backgroundColor: semanticColors.color.icon.bgHover,
|
|
5116
|
+
color: semanticColors.color.icon.utility,
|
|
5063
5117
|
},
|
|
5064
5118
|
'& svg': {
|
|
5065
5119
|
width: 16,
|
|
@@ -5106,14 +5160,14 @@ ModQuickFilter.displayName = 'ModQuickFilter';
|
|
|
5106
5160
|
const UncheckedIcon = ({ size, disabled }) => {
|
|
5107
5161
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5108
5162
|
const radius = size === 'small' ? 8 : 10;
|
|
5109
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.border.strong, strokeWidth: "1", fill: disabled ? semanticColors.
|
|
5163
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.color.border.strong, strokeWidth: "1", fill: disabled ? semanticColors.button.primary.bgDisabled : 'transparent' })] }));
|
|
5110
5164
|
};
|
|
5111
5165
|
const CheckedIcon = ({ size, disabled }) => {
|
|
5112
5166
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5113
5167
|
const radius = size === 'small' ? 8 : 10;
|
|
5114
5168
|
const inset = size === 'small' ? 0.3125 : 0.3; // 31.25% or 30%
|
|
5115
5169
|
const innerRadius = radius * (1 - 2 * inset);
|
|
5116
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill: disabled ? semanticColors.
|
|
5170
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill: disabled ? semanticColors.button.primary.bgDisabled : semanticColors.color.icon.active, stroke: disabled ? semanticColors.color.border.primary : semanticColors.color.icon.active, strokeWidth: "1" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: innerRadius, fill: disabled ? semanticColors.color.icon.disabled : semanticColors.color.surface.raised })] }));
|
|
5117
5171
|
};
|
|
5118
5172
|
const RadioContainer = styled('label')(({ disabled }) => ({
|
|
5119
5173
|
display: 'inline-flex',
|
|
@@ -5139,13 +5193,13 @@ const Label$1 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
5139
5193
|
fontSize: theme.typography.pxToRem(size === 'small' ? typography.fontSize.sm : typography.fontSize.default),
|
|
5140
5194
|
fontWeight: typography.fontWeight.medium,
|
|
5141
5195
|
lineHeight: size === 'small' ? 1.4 : 1.5,
|
|
5142
|
-
color: semanticColors.
|
|
5196
|
+
color: semanticColors.color.text.input,
|
|
5143
5197
|
}));
|
|
5144
5198
|
const HelperText$1 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
5145
5199
|
fontSize: theme.typography.pxToRem(size === 'small' ? typography.fontSize.sm : typography.fontSize.default),
|
|
5146
5200
|
fontWeight: typography.fontWeight.regular,
|
|
5147
5201
|
lineHeight: size === 'small' ? 1.4 : 1.5,
|
|
5148
|
-
color: semanticColors.
|
|
5202
|
+
color: semanticColors.color.text.secondary,
|
|
5149
5203
|
}));
|
|
5150
5204
|
const StyledRadio = styled(Radio, {
|
|
5151
5205
|
shouldForwardProp: prop => prop !== 'size',
|
|
@@ -5158,9 +5212,9 @@ const StyledRadio = styled(Radio, {
|
|
|
5158
5212
|
height: dimensions,
|
|
5159
5213
|
flexShrink: 0,
|
|
5160
5214
|
borderRadius: radius,
|
|
5161
|
-
color: semanticColors.border.strong,
|
|
5215
|
+
color: semanticColors.color.border.strong,
|
|
5162
5216
|
[`&.${radioClasses.checked}`]: {
|
|
5163
|
-
color: semanticColors.
|
|
5217
|
+
color: semanticColors.color.icon.active,
|
|
5164
5218
|
},
|
|
5165
5219
|
'&:hover': {
|
|
5166
5220
|
backgroundColor: 'transparent',
|
|
@@ -5173,7 +5227,7 @@ const StyledRadio = styled(Radio, {
|
|
|
5173
5227
|
// Focus state for keyboard navigation
|
|
5174
5228
|
[`&.${buttonBaseClasses.focusVisible}`]: {
|
|
5175
5229
|
// Unchecked focus state: white background
|
|
5176
|
-
backgroundColor: semanticColors.
|
|
5230
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5177
5231
|
// Checked focus state: keep the blue circle visible
|
|
5178
5232
|
[`&.${radioClasses.checked}`]: {
|
|
5179
5233
|
backgroundColor: 'transparent',
|
|
@@ -5181,9 +5235,9 @@ const StyledRadio = styled(Radio, {
|
|
|
5181
5235
|
},
|
|
5182
5236
|
// Disabled state — icons handle their own disabled colors
|
|
5183
5237
|
[`&.${radioClasses.disabled}`]: {
|
|
5184
|
-
color: semanticColors.border.primary,
|
|
5238
|
+
color: semanticColors.color.border.primary,
|
|
5185
5239
|
[`&.${radioClasses.checked}`]: {
|
|
5186
|
-
color: semanticColors.border.primary,
|
|
5240
|
+
color: semanticColors.color.border.primary,
|
|
5187
5241
|
},
|
|
5188
5242
|
},
|
|
5189
5243
|
};
|
|
@@ -5277,15 +5331,15 @@ ModRipplingDot.displayName = 'ModRipplingDot';
|
|
|
5277
5331
|
|
|
5278
5332
|
const StyledSearchChip = styled(InputBase)(({ theme }) => ({
|
|
5279
5333
|
borderRadius: borderRadius.button,
|
|
5280
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
5281
|
-
backgroundColor: semanticColors.
|
|
5334
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
5335
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5282
5336
|
height: 40,
|
|
5283
5337
|
padding: `0 ${spacing.spacing_1_1_2}px`,
|
|
5284
5338
|
gap: spacing.spacing_1_2,
|
|
5285
5339
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
5286
5340
|
fontWeight: typography.fontWeight.medium,
|
|
5287
5341
|
lineHeight: 1,
|
|
5288
|
-
color: semanticColors.
|
|
5342
|
+
color: semanticColors.color.text.input,
|
|
5289
5343
|
cursor: 'text',
|
|
5290
5344
|
boxSizing: 'border-box',
|
|
5291
5345
|
transition: theme.transitions.create(['border-color', 'background-color'], {
|
|
@@ -5296,7 +5350,7 @@ const StyledSearchChip = styled(InputBase)(({ theme }) => ({
|
|
|
5296
5350
|
height: 'auto',
|
|
5297
5351
|
lineHeight: 1,
|
|
5298
5352
|
'&::placeholder': {
|
|
5299
|
-
color: semanticColors.
|
|
5353
|
+
color: semanticColors.color.text.inputPlaceholder,
|
|
5300
5354
|
opacity: 1,
|
|
5301
5355
|
},
|
|
5302
5356
|
// Hide native browser clear button for type="search" (we provide our own)
|
|
@@ -5305,22 +5359,22 @@ const StyledSearchChip = styled(InputBase)(({ theme }) => ({
|
|
|
5305
5359
|
},
|
|
5306
5360
|
},
|
|
5307
5361
|
'&:hover': {
|
|
5308
|
-
backgroundColor: semanticColors.
|
|
5309
|
-
borderColor: semanticColors.
|
|
5362
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
5363
|
+
borderColor: semanticColors.color.action.border,
|
|
5310
5364
|
},
|
|
5311
5365
|
// After `&:hover` so a disabled chip takes no hover feedback -- MUI leaves pointer-events
|
|
5312
5366
|
// live on the disabled root, so `&:hover` matches it too.
|
|
5313
5367
|
[`&.${inputBaseClasses.disabled}`]: {
|
|
5314
|
-
backgroundColor: semanticColors.
|
|
5315
|
-
borderColor: semanticColors.border.primary,
|
|
5368
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5369
|
+
borderColor: semanticColors.color.border.primary,
|
|
5316
5370
|
},
|
|
5317
5371
|
// A tint hugging the border, not focusRingStyles' detached ring: even :focus-visible matches a
|
|
5318
5372
|
// clicked text input, so this has to stay calm. Keep below `&:hover` -- equal specificity, so
|
|
5319
5373
|
// source order is what keeps a hovered+focused chip white.
|
|
5320
5374
|
[`&.${inputBaseClasses.focused}`]: {
|
|
5321
|
-
backgroundColor: semanticColors.
|
|
5322
|
-
borderColor: semanticColors.border.focus,
|
|
5323
|
-
outline: `3px solid ${semanticColors.
|
|
5375
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5376
|
+
borderColor: semanticColors.color.border.focus,
|
|
5377
|
+
outline: `3px solid ${semanticColors.color.action.tint}`,
|
|
5324
5378
|
},
|
|
5325
5379
|
}));
|
|
5326
5380
|
const ClearButton = styled(ButtonBase)({
|
|
@@ -5333,11 +5387,11 @@ const ClearButton = styled(ButtonBase)({
|
|
|
5333
5387
|
border: 'none',
|
|
5334
5388
|
backgroundColor: 'transparent',
|
|
5335
5389
|
cursor: 'pointer',
|
|
5336
|
-
color: semanticColors.
|
|
5390
|
+
color: semanticColors.color.icon.default,
|
|
5337
5391
|
flexShrink: 0,
|
|
5338
5392
|
borderRadius: borderRadius.button,
|
|
5339
5393
|
'&:hover': {
|
|
5340
|
-
backgroundColor: semanticColors.
|
|
5394
|
+
backgroundColor: semanticColors.button.secondary.bgHover,
|
|
5341
5395
|
},
|
|
5342
5396
|
});
|
|
5343
5397
|
/**
|
|
@@ -5348,7 +5402,7 @@ const ClearButton = styled(ButtonBase)({
|
|
|
5348
5402
|
*/
|
|
5349
5403
|
const ModSearchChip = ({ onClear, value, ...props }) => {
|
|
5350
5404
|
const hasValue = Boolean(value && String(value).length > 0);
|
|
5351
|
-
return (jsx(StyledSearchChip, { type: "search", value: value, startAdornment: jsx(Search, { size: 16, color: semanticColors.
|
|
5405
|
+
return (jsx(StyledSearchChip, { type: "search", value: value, startAdornment: jsx(Search, { size: 16, color: semanticColors.color.icon.placeholder, style: { flexShrink: 0 } }), endAdornment: hasValue && onClear ? (jsx(ClearButton, { type: "button", onClick: onClear, "aria-label": "Clear search", children: jsx(X, { size: 16 }) })) : undefined, ...props }));
|
|
5352
5406
|
};
|
|
5353
5407
|
ModSearchChip.displayName = 'ModSearchChip';
|
|
5354
5408
|
|
|
@@ -5382,7 +5436,7 @@ const useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : us
|
|
|
5382
5436
|
const EXPANDED_WIDTH = 98;
|
|
5383
5437
|
const COLLAPSED_WIDTH = 68;
|
|
5384
5438
|
// The fade overlay must end on the same color as the rail to blend cleanly.
|
|
5385
|
-
const RAIL_BACKGROUND = semanticColors.
|
|
5439
|
+
const RAIL_BACKGROUND = semanticColors.color.surface.page;
|
|
5386
5440
|
// Unclipped positioning context so the edge handle can straddle the rail's
|
|
5387
5441
|
// trailing edge (Root itself clips its overflow during the width transition).
|
|
5388
5442
|
const Frame = styled('div', {
|
|
@@ -5493,12 +5547,12 @@ const Handle = styled(ButtonBase)(({ theme }) => ({
|
|
|
5493
5547
|
height: spacing.spacing_5,
|
|
5494
5548
|
borderRadius: borderRadius.s,
|
|
5495
5549
|
backgroundColor: RAIL_BACKGROUND,
|
|
5496
|
-
border: `1px solid ${semanticColors.border.
|
|
5497
|
-
color: semanticColors.
|
|
5550
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
5551
|
+
color: semanticColors.color.text.secondary,
|
|
5498
5552
|
transition: theme.transitions.create(['color', 'border-color']),
|
|
5499
5553
|
'&:hover': {
|
|
5500
|
-
color: semanticColors.
|
|
5501
|
-
borderColor: semanticColors.border.primary,
|
|
5554
|
+
color: semanticColors.color.text.primary,
|
|
5555
|
+
borderColor: semanticColors.color.border.primary,
|
|
5502
5556
|
},
|
|
5503
5557
|
}));
|
|
5504
5558
|
/**
|
|
@@ -5585,7 +5639,7 @@ const StyledSkeleton = styled(Skeleton, {
|
|
|
5585
5639
|
transform: 'none',
|
|
5586
5640
|
// Light theme colors
|
|
5587
5641
|
...(colorTheme === 'light' && {
|
|
5588
|
-
backgroundColor: semanticColors.skeleton.
|
|
5642
|
+
backgroundColor: semanticColors.skeleton.bg,
|
|
5589
5643
|
'&::after': {
|
|
5590
5644
|
background: `linear-gradient(90deg, transparent, ${semanticColors.skeleton.wave}, transparent)`,
|
|
5591
5645
|
},
|
|
@@ -5632,23 +5686,23 @@ const StyledTable = styled(MuiTable, {
|
|
|
5632
5686
|
borderCollapse: 'separate',
|
|
5633
5687
|
borderSpacing: 0,
|
|
5634
5688
|
[`& .${tableCellClasses.head}`]: {
|
|
5635
|
-
backgroundColor: semanticColors.
|
|
5636
|
-
color: semanticColors.
|
|
5689
|
+
backgroundColor: semanticColors.color.surface.dataGrid.header,
|
|
5690
|
+
color: semanticColors.color.text.primary,
|
|
5637
5691
|
fontFamily: typography.fontFamily.body,
|
|
5638
5692
|
fontSize: theme.typography.pxToRem(sizeFontSize[tableSize]),
|
|
5639
5693
|
fontWeight: typography.fontWeight.semiBold,
|
|
5640
5694
|
lineHeight: 1.4,
|
|
5641
5695
|
padding: sizePadding[tableSize],
|
|
5642
|
-
borderBottom: `1px solid ${semanticColors.border.
|
|
5696
|
+
borderBottom: `1px solid ${semanticColors.color.border.primary}`,
|
|
5643
5697
|
},
|
|
5644
5698
|
[`& .${tableCellClasses.body}`]: {
|
|
5645
|
-
color: semanticColors.
|
|
5699
|
+
color: semanticColors.color.text.primary,
|
|
5646
5700
|
fontFamily: typography.fontFamily.body,
|
|
5647
5701
|
fontSize: theme.typography.pxToRem(sizeFontSize[tableSize]),
|
|
5648
5702
|
fontWeight: typography.fontWeight.regular,
|
|
5649
5703
|
lineHeight: 1.4,
|
|
5650
5704
|
padding: sizePadding[tableSize],
|
|
5651
|
-
borderBottom: `1px solid ${semanticColors.border.
|
|
5705
|
+
borderBottom: `1px solid ${semanticColors.color.border.primary}`,
|
|
5652
5706
|
},
|
|
5653
5707
|
// Drop the trailing row's bottom border so the container border (if
|
|
5654
5708
|
// any) is the visual edge.
|
|
@@ -5660,10 +5714,10 @@ const StyledContainer = styled('div', {
|
|
|
5660
5714
|
shouldForwardProp: prop => prop !== 'tableVariant',
|
|
5661
5715
|
})(({ tableVariant = 'bordered' }) => tableVariant === 'bordered'
|
|
5662
5716
|
? {
|
|
5663
|
-
border: `1px solid ${semanticColors.border.
|
|
5717
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
5664
5718
|
borderRadius: borderRadius.card,
|
|
5665
5719
|
overflow: 'hidden',
|
|
5666
|
-
backgroundColor: semanticColors.
|
|
5720
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5667
5721
|
}
|
|
5668
5722
|
: { backgroundColor: 'transparent' });
|
|
5669
5723
|
/**
|
|
@@ -5691,7 +5745,7 @@ ModTable.displayName = 'ModTable';
|
|
|
5691
5745
|
const StyledTabPanel = styled(Box, {
|
|
5692
5746
|
shouldForwardProp: prop => prop !== 'tabPanelVariant',
|
|
5693
5747
|
})(({ tabPanelVariant = 'default' }) => ({
|
|
5694
|
-
backgroundColor: semanticColors.
|
|
5748
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
5695
5749
|
// default: 16px top padding for content-driven pages.
|
|
5696
5750
|
// flush: zero padding so content sits directly against the tab bar's
|
|
5697
5751
|
// bottom border (sidebars, panels, builders, canvases).
|
|
@@ -5729,7 +5783,7 @@ ModTabPanel.displayName = 'ModTabPanel';
|
|
|
5729
5783
|
const ModTabs = styled(MuiTabs)(() => ({
|
|
5730
5784
|
minHeight: spacing.spacing_5,
|
|
5731
5785
|
[`& .${tabsClasses.indicator}`]: {
|
|
5732
|
-
backgroundColor: semanticColors.
|
|
5786
|
+
backgroundColor: semanticColors.button.nav.borderActive,
|
|
5733
5787
|
height: 2,
|
|
5734
5788
|
},
|
|
5735
5789
|
[`& .${tabsClasses.list}`]: {
|
|
@@ -5744,14 +5798,14 @@ const StyledTab = styled(MuiTab)(({ theme }) => ({
|
|
|
5744
5798
|
fontWeight: typography.fontWeight.regular,
|
|
5745
5799
|
fontSize: theme.typography.pxToRem(14),
|
|
5746
5800
|
lineHeight: '1.5rem',
|
|
5747
|
-
color: semanticColors.
|
|
5801
|
+
color: semanticColors.color.text.tabInactive,
|
|
5748
5802
|
transition: 'none', // Remove animation
|
|
5749
5803
|
[`&.${tabClasses.selected}`]: {
|
|
5750
|
-
color: semanticColors.
|
|
5804
|
+
color: semanticColors.color.text.tabActive,
|
|
5751
5805
|
fontWeight: typography.fontWeight.semiBold,
|
|
5752
5806
|
},
|
|
5753
5807
|
'&:hover': {
|
|
5754
|
-
color: semanticColors.
|
|
5808
|
+
color: semanticColors.color.text.tabActive,
|
|
5755
5809
|
[`&.${tabClasses.selected}::after`]: {
|
|
5756
5810
|
content: '""',
|
|
5757
5811
|
position: 'absolute',
|
|
@@ -5759,23 +5813,23 @@ const StyledTab = styled(MuiTab)(({ theme }) => ({
|
|
|
5759
5813
|
left: 0,
|
|
5760
5814
|
right: 0,
|
|
5761
5815
|
height: 2,
|
|
5762
|
-
backgroundColor: semanticColors.
|
|
5816
|
+
backgroundColor: semanticColors.button.nav.borderActive,
|
|
5763
5817
|
},
|
|
5764
5818
|
},
|
|
5765
5819
|
[`&.${buttonBaseClasses.focusVisible}`]: {
|
|
5766
|
-
color: semanticColors.
|
|
5767
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
5820
|
+
color: semanticColors.color.text.tabActive,
|
|
5821
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
5768
5822
|
outlineOffset: -2,
|
|
5769
5823
|
},
|
|
5770
5824
|
[`&.${tabClasses.disabled}`]: {
|
|
5771
|
-
color: semanticColors.
|
|
5825
|
+
color: semanticColors.button.fgDisabled,
|
|
5772
5826
|
cursor: 'not-allowed',
|
|
5773
5827
|
pointerEvents: 'auto',
|
|
5774
5828
|
'&:hover': {
|
|
5775
5829
|
backgroundColor: 'transparent',
|
|
5776
5830
|
},
|
|
5777
5831
|
[`&.${tabClasses.selected}`]: {
|
|
5778
|
-
color: semanticColors.
|
|
5832
|
+
color: semanticColors.button.fgDisabled,
|
|
5779
5833
|
'&::after': {
|
|
5780
5834
|
content: '""',
|
|
5781
5835
|
position: 'absolute',
|
|
@@ -5783,7 +5837,7 @@ const StyledTab = styled(MuiTab)(({ theme }) => ({
|
|
|
5783
5837
|
left: 0,
|
|
5784
5838
|
right: 0,
|
|
5785
5839
|
height: 2,
|
|
5786
|
-
backgroundColor: semanticColors.
|
|
5840
|
+
backgroundColor: semanticColors.button.tertiary.fgDisabled,
|
|
5787
5841
|
},
|
|
5788
5842
|
},
|
|
5789
5843
|
},
|
|
@@ -5804,34 +5858,34 @@ ModTab.displayName = 'ModTab';
|
|
|
5804
5858
|
|
|
5805
5859
|
const intentStyles = {
|
|
5806
5860
|
neutral: {
|
|
5807
|
-
background: semanticColors.status.neutral.
|
|
5808
|
-
border: semanticColors.border.primary,
|
|
5809
|
-
text: semanticColors.status.neutral.
|
|
5810
|
-
action: semanticColors.
|
|
5861
|
+
background: semanticColors.color.status.neutral.bg,
|
|
5862
|
+
border: semanticColors.color.border.primary,
|
|
5863
|
+
text: semanticColors.color.status.neutral.fg,
|
|
5864
|
+
action: semanticColors.color.text.link,
|
|
5811
5865
|
},
|
|
5812
5866
|
info: {
|
|
5813
|
-
background: semanticColors.toast.
|
|
5814
|
-
border: semanticColors.toast.
|
|
5815
|
-
text: semanticColors.toast.
|
|
5816
|
-
action: semanticColors.toast.
|
|
5867
|
+
background: semanticColors.toast.info.bg,
|
|
5868
|
+
border: semanticColors.toast.info.border,
|
|
5869
|
+
text: semanticColors.toast.info.fg,
|
|
5870
|
+
action: semanticColors.toast.info.fg,
|
|
5817
5871
|
},
|
|
5818
5872
|
success: {
|
|
5819
|
-
background: semanticColors.toast.
|
|
5820
|
-
border: semanticColors.toast.
|
|
5821
|
-
text: semanticColors.toast.
|
|
5822
|
-
action: semanticColors.toast.
|
|
5873
|
+
background: semanticColors.toast.success.bg,
|
|
5874
|
+
border: semanticColors.toast.success.border,
|
|
5875
|
+
text: semanticColors.toast.success.fg,
|
|
5876
|
+
action: semanticColors.toast.success.fg,
|
|
5823
5877
|
},
|
|
5824
5878
|
error: {
|
|
5825
|
-
background: semanticColors.toast.
|
|
5826
|
-
border: semanticColors.toast.
|
|
5827
|
-
text: semanticColors.toast.
|
|
5828
|
-
action: semanticColors.toast.
|
|
5879
|
+
background: semanticColors.toast.error.bg,
|
|
5880
|
+
border: semanticColors.toast.error.border,
|
|
5881
|
+
text: semanticColors.toast.error.fg,
|
|
5882
|
+
action: semanticColors.toast.error.fg,
|
|
5829
5883
|
},
|
|
5830
5884
|
warning: {
|
|
5831
|
-
background: semanticColors.toast.
|
|
5832
|
-
border: semanticColors.toast.
|
|
5833
|
-
text: semanticColors.toast.
|
|
5834
|
-
action: semanticColors.toast.
|
|
5885
|
+
background: semanticColors.toast.warning.bg,
|
|
5886
|
+
border: semanticColors.toast.warning.border,
|
|
5887
|
+
text: semanticColors.toast.warning.fg,
|
|
5888
|
+
action: semanticColors.toast.warning.fg,
|
|
5835
5889
|
},
|
|
5836
5890
|
};
|
|
5837
5891
|
const shadowRegular = shadows.neutral.regular;
|
|
@@ -5906,7 +5960,7 @@ const ToastButton = styled(Button, {
|
|
|
5906
5960
|
* ModToast - Notification/Toast component based on MUI Alert
|
|
5907
5961
|
*/
|
|
5908
5962
|
const ModToast = ({ intent = 'neutral', type: _type, title, message, showClose = false, actions, onClose, ...props }) => {
|
|
5909
|
-
return (jsxs(StyledAlert, { ...props, intent: intent, action: showClose ? (jsx(IconButton, { size: "small", onClick: onClose, sx: { color: semanticColors.
|
|
5963
|
+
return (jsxs(StyledAlert, { ...props, intent: intent, action: showClose ? (jsx(IconButton, { size: "small", onClick: onClose, sx: { color: semanticColors.color.icon.utility }, children: jsx(X, { size: 16 }) })) : undefined, children: [jsxs(Stack, { sx: { gap: `${spacing.spacing_1}px`, width: '100%' }, children: [title && jsx(ToastTitle, { intent: intent, children: title }), message && jsx(ToastMessage, { intent: intent, children: message })] }), actions && jsx(ToastActions, { direction: "row", children: actions })] }));
|
|
5910
5964
|
};
|
|
5911
5965
|
/**
|
|
5912
5966
|
* Helper component for creating toast action buttons with proper styling
|
|
@@ -5933,13 +5987,13 @@ const Label = styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
5933
5987
|
fontSize: theme.typography.pxToRem(size === 'small' ? typography.fontSize.sm : typography.fontSize.default),
|
|
5934
5988
|
fontWeight: typography.fontWeight.medium,
|
|
5935
5989
|
lineHeight: size === 'small' ? 1.4 : 1.5,
|
|
5936
|
-
color: semanticColors.
|
|
5990
|
+
color: semanticColors.color.text.input,
|
|
5937
5991
|
}));
|
|
5938
5992
|
const HelperText = styled('span')(({ theme, size = 'medium' }) => ({
|
|
5939
5993
|
fontSize: theme.typography.pxToRem(size === 'small' ? typography.fontSize.sm : typography.fontSize.default),
|
|
5940
5994
|
fontWeight: typography.fontWeight.regular,
|
|
5941
5995
|
lineHeight: size === 'small' ? 1.4 : 1.5,
|
|
5942
|
-
color: semanticColors.
|
|
5996
|
+
color: semanticColors.color.text.secondary,
|
|
5943
5997
|
}));
|
|
5944
5998
|
const StyledSwitch = styled(Switch, {
|
|
5945
5999
|
shouldForwardProp: prop => prop !== 'size',
|
|
@@ -5972,23 +6026,23 @@ const StyledSwitch = styled(Switch, {
|
|
|
5972
6026
|
// Root element
|
|
5973
6027
|
[`& .${switchClasses.switchBase}`]: {
|
|
5974
6028
|
padding: config.trackPadding,
|
|
5975
|
-
color: semanticColors.
|
|
6029
|
+
color: semanticColors.control.knob,
|
|
5976
6030
|
transition: theme.transitions.create(['transform'], {
|
|
5977
6031
|
duration: theme.transitions.duration.shortest,
|
|
5978
6032
|
}),
|
|
5979
6033
|
// Focus visible for keyboard navigation
|
|
5980
6034
|
'&.Mui-focusVisible': {
|
|
5981
6035
|
[`& + .${switchClasses.track}`]: {
|
|
5982
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
6036
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
5983
6037
|
outlineOffset: 2,
|
|
5984
6038
|
},
|
|
5985
6039
|
},
|
|
5986
6040
|
// Checked state
|
|
5987
6041
|
[`&.${switchClasses.checked}`]: {
|
|
5988
6042
|
transform: `translateX(${thumbTranslate}px)`,
|
|
5989
|
-
color: semanticColors.
|
|
6043
|
+
color: semanticColors.control.knob,
|
|
5990
6044
|
[`& + .${switchClasses.track}`]: {
|
|
5991
|
-
backgroundColor: semanticColors.
|
|
6045
|
+
backgroundColor: semanticColors.button.primary.bg,
|
|
5992
6046
|
opacity: 1,
|
|
5993
6047
|
border: 'none',
|
|
5994
6048
|
},
|
|
@@ -5996,18 +6050,18 @@ const StyledSwitch = styled(Switch, {
|
|
|
5996
6050
|
// Disabled state
|
|
5997
6051
|
[`&.${switchClasses.disabled}`]: {
|
|
5998
6052
|
// Thumb changes to disabled background color for both checked and unchecked
|
|
5999
|
-
color: semanticColors.input.
|
|
6053
|
+
color: semanticColors.input.bgDisabled,
|
|
6000
6054
|
cursor: 'not-allowed',
|
|
6001
6055
|
// Both checked and unchecked use the same grey track when disabled
|
|
6002
6056
|
[`& + .${switchClasses.track}`]: {
|
|
6003
|
-
backgroundColor: semanticColors.border.
|
|
6057
|
+
backgroundColor: semanticColors.color.border.primary,
|
|
6004
6058
|
opacity: 1,
|
|
6005
6059
|
border: 'none',
|
|
6006
6060
|
},
|
|
6007
6061
|
},
|
|
6008
6062
|
// More specific selector for disabled+checked to override checked color
|
|
6009
6063
|
[`&.${switchClasses.disabled}.${switchClasses.checked}`]: {
|
|
6010
|
-
color: semanticColors.input.
|
|
6064
|
+
color: semanticColors.input.bgDisabled,
|
|
6011
6065
|
},
|
|
6012
6066
|
},
|
|
6013
6067
|
// Thumb
|
|
@@ -6024,12 +6078,12 @@ const StyledSwitch = styled(Switch, {
|
|
|
6024
6078
|
width: config.width,
|
|
6025
6079
|
height: config.height,
|
|
6026
6080
|
borderRadius: config.height / 2,
|
|
6027
|
-
backgroundColor: semanticColors.surface.
|
|
6081
|
+
backgroundColor: semanticColors.color.surface.sunkenDeep,
|
|
6028
6082
|
opacity: 1,
|
|
6029
6083
|
// Off track carries a border; box-sizing keeps the 1px inside the
|
|
6030
6084
|
// configured width/height. Checked/disabled states reset it below.
|
|
6031
6085
|
boxSizing: 'border-box',
|
|
6032
|
-
border: `1px solid ${semanticColors.border.strong}`,
|
|
6086
|
+
border: `1px solid ${semanticColors.color.border.strong}`,
|
|
6033
6087
|
transition: theme.transitions.create(['background-color'], {
|
|
6034
6088
|
duration: theme.transitions.duration.short,
|
|
6035
6089
|
}),
|
|
@@ -6090,7 +6144,7 @@ const StyledToggleButton$1 = styled(MuiToggleButton, {
|
|
|
6090
6144
|
fontSize: theme.typography.pxToRem(sizeStyles[toggleSize].fontSize),
|
|
6091
6145
|
fontWeight: typography.fontWeight.regular,
|
|
6092
6146
|
lineHeight: 1,
|
|
6093
|
-
color: segmented ? semanticColors.
|
|
6147
|
+
color: segmented ? semanticColors.color.text.primary : semanticColors.color.text.secondary,
|
|
6094
6148
|
backgroundColor: 'transparent',
|
|
6095
6149
|
border: 'none',
|
|
6096
6150
|
// Segmented buttons are independent rounded pills on the group's track.
|
|
@@ -6100,22 +6154,22 @@ const StyledToggleButton$1 = styled(MuiToggleButton, {
|
|
|
6100
6154
|
duration: theme.transitions.duration.short,
|
|
6101
6155
|
}),
|
|
6102
6156
|
'&:hover': {
|
|
6103
|
-
backgroundColor: segmented ? 'transparent' : semanticColors.
|
|
6104
|
-
color: semanticColors.
|
|
6157
|
+
backgroundColor: segmented ? 'transparent' : semanticColors.color.surface.tabActive,
|
|
6158
|
+
color: semanticColors.color.text.primary,
|
|
6105
6159
|
},
|
|
6106
6160
|
'&.Mui-selected, &.Mui-selected:hover': {
|
|
6107
6161
|
backgroundColor: segmented
|
|
6108
|
-
? semanticColors.
|
|
6109
|
-
: semanticColors.
|
|
6110
|
-
color: segmented ? semanticColors.
|
|
6162
|
+
? semanticColors.color.surface.raised
|
|
6163
|
+
: semanticColors.color.surface.tabActive,
|
|
6164
|
+
color: segmented ? semanticColors.color.action.default : semanticColors.color.text.primary,
|
|
6111
6165
|
fontWeight: typography.fontWeight.semiBold,
|
|
6112
6166
|
},
|
|
6113
6167
|
'&.Mui-focusVisible': {
|
|
6114
|
-
outline: `2px solid ${semanticColors.border.focus}`,
|
|
6168
|
+
outline: `2px solid ${semanticColors.color.border.focus}`,
|
|
6115
6169
|
outlineOffset: -2,
|
|
6116
6170
|
},
|
|
6117
6171
|
'&.Mui-disabled': {
|
|
6118
|
-
color: semanticColors.
|
|
6172
|
+
color: semanticColors.button.fgDisabled,
|
|
6119
6173
|
cursor: 'default',
|
|
6120
6174
|
pointerEvents: 'none',
|
|
6121
6175
|
},
|
|
@@ -6139,7 +6193,7 @@ const StyledToggleButtonGroup$1 = styled(MuiToggleButtonGroup, {
|
|
|
6139
6193
|
...(segmented
|
|
6140
6194
|
? {
|
|
6141
6195
|
// Sunken track holding raised pills (the Morpheus `.seg` control).
|
|
6142
|
-
backgroundColor: semanticColors.surface.
|
|
6196
|
+
backgroundColor: semanticColors.color.surface.sunkenDeep,
|
|
6143
6197
|
borderRadius: borderRadius.input,
|
|
6144
6198
|
border: 'none',
|
|
6145
6199
|
padding: spacing.spacing_1_2,
|
|
@@ -6147,7 +6201,7 @@ const StyledToggleButtonGroup$1 = styled(MuiToggleButtonGroup, {
|
|
|
6147
6201
|
}
|
|
6148
6202
|
: {
|
|
6149
6203
|
borderRadius: borderRadius.button,
|
|
6150
|
-
border: `1px solid ${semanticColors.border.
|
|
6204
|
+
border: `1px solid ${semanticColors.color.border.primary}`,
|
|
6151
6205
|
overflow: 'hidden',
|
|
6152
6206
|
}),
|
|
6153
6207
|
// Default fuses the children (square inner corners, no gap); segmented
|
|
@@ -6181,7 +6235,7 @@ const ModToggleButtonGroup = ({ size = 'medium', variant = 'default', children,
|
|
|
6181
6235
|
ModToggleButtonGroup.displayName = 'ModToggleButtonGroup';
|
|
6182
6236
|
|
|
6183
6237
|
const StyledToolbar = styled(Toolbar)(({ theme }) => ({
|
|
6184
|
-
backgroundColor: semanticColors.
|
|
6238
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
6185
6239
|
minHeight: 'auto',
|
|
6186
6240
|
justifyContent: 'space-between',
|
|
6187
6241
|
// Apply padding directly to match Figma design (16px horizontal, 12px vertical)
|
|
@@ -6274,7 +6328,7 @@ const ItemIcon = styled('span')({
|
|
|
6274
6328
|
width: 16,
|
|
6275
6329
|
height: 16,
|
|
6276
6330
|
flexShrink: 0,
|
|
6277
|
-
color: semanticColors.
|
|
6331
|
+
color: semanticColors.color.icon.default,
|
|
6278
6332
|
'& svg': {
|
|
6279
6333
|
width: 16,
|
|
6280
6334
|
height: 16,
|
|
@@ -6292,13 +6346,13 @@ const ItemSecondaryLabel = styled('span')({
|
|
|
6292
6346
|
fontSize: typography.fontSize.xs,
|
|
6293
6347
|
fontWeight: typography.fontWeight.regular,
|
|
6294
6348
|
fontFamily: typography.fontFamily.body,
|
|
6295
|
-
color: semanticColors.
|
|
6349
|
+
color: semanticColors.color.text.link,
|
|
6296
6350
|
});
|
|
6297
6351
|
const ItemEndAction = styled('span')({
|
|
6298
6352
|
display: 'inline-flex',
|
|
6299
6353
|
alignItems: 'center',
|
|
6300
6354
|
flexShrink: 0,
|
|
6301
|
-
color: semanticColors.
|
|
6355
|
+
color: semanticColors.color.icon.utility,
|
|
6302
6356
|
'& svg': {
|
|
6303
6357
|
width: 16,
|
|
6304
6358
|
height: 16,
|
|
@@ -6334,36 +6388,36 @@ const StyledTreeView = styled(RichTreeViewPro)({
|
|
|
6334
6388
|
borderRadius: 0,
|
|
6335
6389
|
},
|
|
6336
6390
|
[`& .${treeItemClasses.content}:hover`]: {
|
|
6337
|
-
backgroundColor: semanticColors.
|
|
6391
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
6338
6392
|
},
|
|
6339
6393
|
[`& .${treeItemClasses.content}[data-focused]`]: {
|
|
6340
|
-
boxShadow: `inset 0 0 0 2px ${semanticColors.border.focus}`,
|
|
6394
|
+
boxShadow: `inset 0 0 0 2px ${semanticColors.color.border.focus}`,
|
|
6341
6395
|
backgroundColor: 'transparent',
|
|
6342
6396
|
},
|
|
6343
6397
|
[`& .${treeItemClasses.content}[data-selected]`]: {
|
|
6344
|
-
backgroundColor: semanticColors.
|
|
6398
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
6345
6399
|
},
|
|
6346
6400
|
[`& .${treeItemClasses.content}[data-selected][data-focused]`]: {
|
|
6347
|
-
backgroundColor: semanticColors.
|
|
6348
|
-
boxShadow: `inset 0 0 0 2px ${semanticColors.border.focus}`,
|
|
6401
|
+
backgroundColor: semanticColors.color.surface.rowHover,
|
|
6402
|
+
boxShadow: `inset 0 0 0 2px ${semanticColors.color.border.focus}`,
|
|
6349
6403
|
},
|
|
6350
6404
|
[`& .${treeItemClasses.label}`]: {
|
|
6351
6405
|
fontSize: typography.fontSize.xs,
|
|
6352
6406
|
fontWeight: typography.fontWeight.regular,
|
|
6353
6407
|
fontFamily: typography.fontFamily.body,
|
|
6354
|
-
color: semanticColors.
|
|
6408
|
+
color: semanticColors.color.text.primary,
|
|
6355
6409
|
padding: 0,
|
|
6356
6410
|
},
|
|
6357
6411
|
[`& .${treeItemClasses.iconContainer}`]: {
|
|
6358
6412
|
width: 16,
|
|
6359
|
-
color: semanticColors.
|
|
6413
|
+
color: semanticColors.color.icon.default,
|
|
6360
6414
|
'& svg': {
|
|
6361
6415
|
width: 16,
|
|
6362
6416
|
height: 16,
|
|
6363
6417
|
},
|
|
6364
6418
|
},
|
|
6365
6419
|
[`& .${treeItemClasses.groupTransition}`]: {
|
|
6366
|
-
borderLeft: `1px solid ${semanticColors.border.primary}`,
|
|
6420
|
+
borderLeft: `1px solid ${semanticColors.color.border.primary}`,
|
|
6367
6421
|
marginLeft: spacing.spacing_1_1_4,
|
|
6368
6422
|
},
|
|
6369
6423
|
});
|
|
@@ -6371,7 +6425,7 @@ const StyledTreeView = styled(RichTreeViewPro)({
|
|
|
6371
6425
|
// Figma-exact border radius for toggle buttons — no matching design token
|
|
6372
6426
|
const TOGGLE_BUTTON_BORDER_RADIUS = 14;
|
|
6373
6427
|
const StyledToggleButtonGroup = styled(MuiToggleButtonGroup)(({ theme }) => ({
|
|
6374
|
-
backgroundColor: semanticColors.
|
|
6428
|
+
backgroundColor: semanticColors.color.surface.raised,
|
|
6375
6429
|
padding: theme.spacing(0.625, 0.875),
|
|
6376
6430
|
borderRadius: borderRadius.m,
|
|
6377
6431
|
gap: 0,
|
|
@@ -6391,7 +6445,7 @@ const StyledToggleButtonGroup = styled(MuiToggleButtonGroup)(({ theme }) => ({
|
|
|
6391
6445
|
const StyledToggleButton = styled(MuiToggleButton)(({ theme }) => ({
|
|
6392
6446
|
padding: theme.spacing(0.625),
|
|
6393
6447
|
minWidth: 'auto',
|
|
6394
|
-
color: semanticColors.
|
|
6448
|
+
color: semanticColors.color.icon.default,
|
|
6395
6449
|
border: 'none',
|
|
6396
6450
|
'& svg': {
|
|
6397
6451
|
width: 20,
|
|
@@ -6401,10 +6455,10 @@ const StyledToggleButton = styled(MuiToggleButton)(({ theme }) => ({
|
|
|
6401
6455
|
backgroundColor: 'transparent',
|
|
6402
6456
|
},
|
|
6403
6457
|
[`&.${toggleButtonClasses.selected}`]: {
|
|
6404
|
-
backgroundColor: semanticColors.
|
|
6405
|
-
color: semanticColors.
|
|
6458
|
+
backgroundColor: semanticColors.button.nav.bgPressed,
|
|
6459
|
+
color: semanticColors.color.icon.active,
|
|
6406
6460
|
'&:hover': {
|
|
6407
|
-
backgroundColor: semanticColors.
|
|
6461
|
+
backgroundColor: semanticColors.button.nav.bgPressed,
|
|
6408
6462
|
},
|
|
6409
6463
|
},
|
|
6410
6464
|
}));
|