@moderneinc/neo-styled-components 2.5.0-next.fd6db5 → 2.5.0-next.fefc86
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/Avatar/Avatar.d.ts +2 -1
- package/dist/FilterChip/FilterChip.d.ts +42 -0
- package/dist/IconWrapper/IconWrapper.d.ts +23 -0
- package/dist/MarketplaceLargeCard/MarketplaceLargeCard.d.ts +91 -0
- package/dist/NavigationItem/NavigationItem.d.ts +36 -0
- package/dist/Tag/Tag.d.ts +4 -3
- package/dist/index.d.ts +28 -19
- package/dist/index.esm.js +395 -148
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +397 -147
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/FilterChips/FilterChips.d.ts +0 -34
- package/dist/LargeCard/LargeCard.d.ts +0 -26
package/dist/index.js
CHANGED
|
@@ -62,21 +62,39 @@ var Switch = require('@mui/material/Switch');
|
|
|
62
62
|
var ToggleButton = require('@mui/material/ToggleButton');
|
|
63
63
|
var ToggleButtonGroup = require('@mui/material/ToggleButtonGroup');
|
|
64
64
|
|
|
65
|
+
const focusRingShadow$2 = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
65
66
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Avatar variant type without global augmentation
|
|
66
67
|
const StyledAvatar = styles.styled(Avatar, {
|
|
67
68
|
shouldForwardProp: prop => prop !== 'size' && prop !== 'variant',
|
|
68
69
|
})(({ theme, size = 'medium', variant = 'circular' }) => ({
|
|
70
|
+
boxSizing: 'border-box',
|
|
69
71
|
borderRadius: neoDesign.borderRadius.full,
|
|
70
72
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
71
73
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
72
74
|
lineHeight: 1.5,
|
|
73
|
-
// Size variants
|
|
74
|
-
...(size === 'small' &&
|
|
75
|
+
// Size variants — dimensions match Figma bounding boxes (border-box)
|
|
76
|
+
...(size === 'small' &&
|
|
77
|
+
variant === 'circular' && {
|
|
78
|
+
width: neoDesign.spacing.spacing_4,
|
|
79
|
+
height: neoDesign.spacing.spacing_4,
|
|
80
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
81
|
+
}),
|
|
82
|
+
...(size === 'small' &&
|
|
83
|
+
variant === 'initials' && {
|
|
75
84
|
width: neoDesign.spacing.spacing_2_1_2,
|
|
76
85
|
height: neoDesign.spacing.spacing_2_1_2,
|
|
77
86
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
78
87
|
}),
|
|
79
|
-
|
|
88
|
+
// Medium circular fills its AvatarContainer (container owns the 44px dimension)
|
|
89
|
+
...(size === 'medium' &&
|
|
90
|
+
variant === 'circular' && {
|
|
91
|
+
width: '100%',
|
|
92
|
+
height: '100%',
|
|
93
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
94
|
+
}),
|
|
95
|
+
// Medium initials has no container, so it owns its 44px dimension
|
|
96
|
+
...(size === 'medium' &&
|
|
97
|
+
variant === 'initials' && {
|
|
80
98
|
width: neoDesign.spacing.spacing_5_1_2,
|
|
81
99
|
height: neoDesign.spacing.spacing_5_1_2,
|
|
82
100
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
@@ -92,20 +110,29 @@ const StyledAvatar = styles.styled(Avatar, {
|
|
|
92
110
|
backgroundColor: 'transparent',
|
|
93
111
|
border: `2px solid ${neoDesign.semanticColors.surfaces.white}`,
|
|
94
112
|
}),
|
|
113
|
+
'&:focus-visible': {
|
|
114
|
+
outline: 'none',
|
|
115
|
+
boxShadow: focusRingShadow$2,
|
|
116
|
+
},
|
|
95
117
|
}));
|
|
96
118
|
const AvatarContainer = styles.styled(Box)(({ size = 'medium' }) => ({
|
|
119
|
+
boxSizing: 'border-box',
|
|
97
120
|
...(size === 'medium' && {
|
|
98
121
|
width: neoDesign.spacing.spacing_5_1_2,
|
|
99
122
|
height: neoDesign.spacing.spacing_5_1_2,
|
|
100
123
|
backgroundColor: neoDesign.semanticColors.surfaces.white,
|
|
101
124
|
borderRadius: neoDesign.borderRadius.full,
|
|
102
|
-
padding: neoDesign.spacing.
|
|
125
|
+
padding: neoDesign.spacing.spacing_1_4,
|
|
103
126
|
display: 'flex',
|
|
104
127
|
alignItems: 'center',
|
|
105
128
|
justifyContent: 'center',
|
|
106
129
|
overflow: 'hidden',
|
|
107
130
|
boxShadow: `${neoDesign.shadows.neutralSmall.x}px ${neoDesign.shadows.neutralSmall.y}px ${neoDesign.shadows.neutralSmall.blur}px ${neoDesign.shadows.neutralSmall.spread}px ${neoDesign.shadows.neutralSmall.shadow}`,
|
|
108
131
|
}),
|
|
132
|
+
'&:focus-within': {
|
|
133
|
+
outline: 'none',
|
|
134
|
+
boxShadow: focusRingShadow$2,
|
|
135
|
+
},
|
|
109
136
|
}));
|
|
110
137
|
/**
|
|
111
138
|
* NeoAvatar - User avatar component based on MUI Avatar
|
|
@@ -114,8 +141,9 @@ const AvatarContainer = styles.styled(Box)(({ size = 'medium' }) => ({
|
|
|
114
141
|
*
|
|
115
142
|
* Figma Props Mapping:
|
|
116
143
|
* - Figma Type "Initials" → variant="initials", size="small" (20px)
|
|
117
|
-
* - Figma Type "Small" → variant="circular", size="small" (
|
|
144
|
+
* - Figma Type "Small" → variant="circular", size="small" (32px with image)
|
|
118
145
|
* - Figma Type "Medium" → variant="circular", size="medium" (44px white container with image)
|
|
146
|
+
* - State: Focus → CSS :focus-visible ring (2px white inner + 4px blue outer)
|
|
119
147
|
* - State: Hover (tooltip) → Wrap component with MUI Tooltip
|
|
120
148
|
*
|
|
121
149
|
* Usage:
|
|
@@ -149,7 +177,7 @@ const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }) => {
|
|
|
149
177
|
};
|
|
150
178
|
NeoAvatar.displayName = 'NeoAvatar';
|
|
151
179
|
|
|
152
|
-
const StyledChip$
|
|
180
|
+
const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
153
181
|
height: 24,
|
|
154
182
|
paddingTop: neoDesign.spacing.spacing_1_4,
|
|
155
183
|
paddingBottom: neoDesign.spacing.spacing_1_4,
|
|
@@ -236,7 +264,7 @@ const StyledChip$1 = styles.styled(Chip)(({ theme }) => ({
|
|
|
236
264
|
* - Label → label prop
|
|
237
265
|
*/
|
|
238
266
|
const NeoBadge = (props) => {
|
|
239
|
-
return jsxRuntime.jsx(StyledChip$
|
|
267
|
+
return jsxRuntime.jsx(StyledChip$2, { ...props });
|
|
240
268
|
};
|
|
241
269
|
NeoBadge.displayName = 'NeoBadge';
|
|
242
270
|
|
|
@@ -1459,6 +1487,8 @@ const HelperText$2 = styles.styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
1459
1487
|
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1460
1488
|
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
1461
1489
|
}));
|
|
1490
|
+
// Figma-exact border radius for xs checkbox — no matching design token
|
|
1491
|
+
const FIGMA_XS_BORDER_RADIUS = 1;
|
|
1462
1492
|
const StyledCheckbox = styles.styled(Checkbox, {
|
|
1463
1493
|
shouldForwardProp: prop => prop !== 'size',
|
|
1464
1494
|
})(({ size = 'medium' }) => {
|
|
@@ -1466,8 +1496,7 @@ const StyledCheckbox = styles.styled(Checkbox, {
|
|
|
1466
1496
|
const sizeConfig = {
|
|
1467
1497
|
xs: {
|
|
1468
1498
|
size: 12,
|
|
1469
|
-
|
|
1470
|
-
borderRadius: 1, // From Figma: 1px for xs
|
|
1499
|
+
borderRadius: FIGMA_XS_BORDER_RADIUS,
|
|
1471
1500
|
},
|
|
1472
1501
|
small: {
|
|
1473
1502
|
size: 16,
|
|
@@ -1634,7 +1663,9 @@ const StyledButtonBase = styles.styled(ButtonBase, {
|
|
|
1634
1663
|
width: isMultiline ? '100%' : 'fit-content',
|
|
1635
1664
|
maxWidth: isMultiline ? '100%' : 'none',
|
|
1636
1665
|
overflowX: isMultiline ? 'auto' : 'visible',
|
|
1637
|
-
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1666
|
+
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1667
|
+
? sizeStyles.paddingMultiline
|
|
1668
|
+
: sizeStyles.paddingSingleLine,
|
|
1638
1669
|
paddingRight: isMultiline ? theme.spacing(7) : undefined, // Extra space for copy button in multiline only
|
|
1639
1670
|
fontSize: sizeStyles.fontSize,
|
|
1640
1671
|
fontFamily: neoDesign.typography.fontFamily.code,
|
|
@@ -1758,13 +1789,14 @@ const ColumnItemContainer = styles.styled(Box)(({ theme }) => ({
|
|
|
1758
1789
|
paddingLeft: theme.spacing(0.75),
|
|
1759
1790
|
paddingRight: theme.spacing(0.75),
|
|
1760
1791
|
}));
|
|
1792
|
+
// Figma-exact border radius for menu items — no matching design token
|
|
1793
|
+
const MENU_ITEM_BORDER_RADIUS = 6;
|
|
1761
1794
|
const MenuItemContent$1 = styles.styled('div')(({ theme }) => ({
|
|
1762
1795
|
display: 'flex',
|
|
1763
1796
|
alignItems: 'center',
|
|
1764
1797
|
gap: theme.spacing(1),
|
|
1765
1798
|
padding: theme.spacing(1),
|
|
1766
|
-
|
|
1767
|
-
borderRadius: 6,
|
|
1799
|
+
borderRadius: MENU_ITEM_BORDER_RADIUS,
|
|
1768
1800
|
width: '100%',
|
|
1769
1801
|
'&:hover': {
|
|
1770
1802
|
backgroundColor: neoDesign.semanticColors.surfaces.listHover,
|
|
@@ -2476,111 +2508,85 @@ function NeoDataGridColumnsButton() {
|
|
|
2476
2508
|
}
|
|
2477
2509
|
NeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton';
|
|
2478
2510
|
|
|
2479
|
-
const
|
|
2480
|
-
|
|
2481
|
-
borderRadius: neoDesign.borderRadius.full,
|
|
2482
|
-
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
2483
|
-
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
2484
|
-
// Size variants
|
|
2485
|
-
...(size === 'small' && {
|
|
2511
|
+
const sizeStyles = {
|
|
2512
|
+
small: {
|
|
2486
2513
|
height: 16,
|
|
2487
2514
|
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
2488
2515
|
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
2489
|
-
}
|
|
2490
|
-
|
|
2516
|
+
},
|
|
2517
|
+
medium: {
|
|
2491
2518
|
height: 18,
|
|
2492
2519
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2493
2520
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2494
|
-
}
|
|
2495
|
-
|
|
2521
|
+
},
|
|
2522
|
+
large: {
|
|
2496
2523
|
height: 20,
|
|
2497
2524
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2498
2525
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2499
|
-
}),
|
|
2500
|
-
[`& .${Chip.chipClasses.label}`]: {
|
|
2501
|
-
padding: 0,
|
|
2502
2526
|
},
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2527
|
+
};
|
|
2528
|
+
const outlinedColorStyles = {
|
|
2529
|
+
default: {
|
|
2506
2530
|
backgroundColor: neoDesign.semanticColors.status.neutral.light,
|
|
2507
2531
|
color: neoDesign.semanticColors.status.neutral.dark,
|
|
2508
|
-
borderColor: neoDesign.colors.grey[200],
|
|
2509
|
-
}
|
|
2510
|
-
|
|
2511
|
-
...(variant === 'outlined' &&
|
|
2512
|
-
color === 'error' && {
|
|
2532
|
+
borderColor: neoDesign.colors.grey[200],
|
|
2533
|
+
},
|
|
2534
|
+
error: {
|
|
2513
2535
|
backgroundColor: neoDesign.semanticColors.status.error.light,
|
|
2514
2536
|
color: neoDesign.semanticColors.status.error.dark,
|
|
2515
|
-
borderColor: neoDesign.colors.red[100],
|
|
2516
|
-
}
|
|
2517
|
-
|
|
2518
|
-
...(variant === 'outlined' &&
|
|
2519
|
-
color === 'warning' && {
|
|
2537
|
+
borderColor: neoDesign.colors.red[100],
|
|
2538
|
+
},
|
|
2539
|
+
warning: {
|
|
2520
2540
|
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
2521
2541
|
color: neoDesign.semanticColors.status.warning.dark,
|
|
2522
|
-
borderColor: neoDesign.colors.orange[100],
|
|
2523
|
-
}
|
|
2524
|
-
|
|
2525
|
-
...(variant === 'outlined' &&
|
|
2526
|
-
color === 'success' && {
|
|
2542
|
+
borderColor: neoDesign.colors.orange[100],
|
|
2543
|
+
},
|
|
2544
|
+
success: {
|
|
2527
2545
|
backgroundColor: neoDesign.semanticColors.status.success.light,
|
|
2528
2546
|
color: neoDesign.semanticColors.status.success.dark,
|
|
2529
|
-
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2530
|
-
}
|
|
2531
|
-
|
|
2532
|
-
...(variant === 'outlined' &&
|
|
2533
|
-
color === 'info' && {
|
|
2547
|
+
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2548
|
+
},
|
|
2549
|
+
info: {
|
|
2534
2550
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
2535
2551
|
color: neoDesign.semanticColors.status.info.dark,
|
|
2536
|
-
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2537
|
-
}
|
|
2538
|
-
|
|
2539
|
-
...(variant === 'outlined' &&
|
|
2540
|
-
color === 'violet' && {
|
|
2552
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2553
|
+
},
|
|
2554
|
+
violet: {
|
|
2541
2555
|
backgroundColor: `${neoDesign.colors.violet[100]}66`, // rgba(235,213,241,0.4)
|
|
2542
2556
|
color: neoDesign.colors.violet[600],
|
|
2543
|
-
borderColor: neoDesign.colors.violet[100],
|
|
2544
|
-
}
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
color
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
color
|
|
2571
|
-
|
|
2572
|
-
}),
|
|
2573
|
-
// Filled variant - Info
|
|
2574
|
-
...(variant === 'filled' &&
|
|
2575
|
-
color === 'info' && {
|
|
2576
|
-
backgroundColor: neoDesign.semanticColors.status.info.medium,
|
|
2577
|
-
color: theme.palette.common.white,
|
|
2578
|
-
border: 'none',
|
|
2579
|
-
}),
|
|
2580
|
-
// Filled variant - Violet
|
|
2557
|
+
borderColor: neoDesign.colors.violet[100],
|
|
2558
|
+
},
|
|
2559
|
+
beta: {
|
|
2560
|
+
backgroundColor: neoDesign.colors.digitalBlue[100],
|
|
2561
|
+
color: neoDesign.colors.digitalBlue[400],
|
|
2562
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2563
|
+
},
|
|
2564
|
+
};
|
|
2565
|
+
const filledColorStyles = {
|
|
2566
|
+
default: neoDesign.semanticColors.status.neutral.medium,
|
|
2567
|
+
error: neoDesign.semanticColors.status.error.medium,
|
|
2568
|
+
warning: neoDesign.semanticColors.status.warning.medium,
|
|
2569
|
+
success: neoDesign.semanticColors.status.success.medium,
|
|
2570
|
+
info: neoDesign.semanticColors.status.info.medium,
|
|
2571
|
+
violet: neoDesign.colors.violet[500],
|
|
2572
|
+
beta: neoDesign.colors.digitalBlue[300],
|
|
2573
|
+
};
|
|
2574
|
+
const StyledChip$1 = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
2575
|
+
padding: 0,
|
|
2576
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
2577
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
2578
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
2579
|
+
...(size && sizeStyles[size]),
|
|
2580
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
2581
|
+
padding: 0,
|
|
2582
|
+
},
|
|
2583
|
+
...(variant === 'outlined' &&
|
|
2584
|
+
color &&
|
|
2585
|
+
outlinedColorStyles[color]),
|
|
2581
2586
|
...(variant === 'filled' &&
|
|
2582
|
-
color
|
|
2583
|
-
|
|
2587
|
+
color &&
|
|
2588
|
+
color in filledColorStyles && {
|
|
2589
|
+
backgroundColor: filledColorStyles[color],
|
|
2584
2590
|
color: theme.palette.common.white,
|
|
2585
2591
|
border: 'none',
|
|
2586
2592
|
}),
|
|
@@ -2593,11 +2599,11 @@ const StyledChip = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2593
2599
|
* Figma Props Mapping:
|
|
2594
2600
|
* - m (sm|md|lg) → size (small|medium|large)
|
|
2595
2601
|
* - type (light|dark) → variant (outlined|filled)
|
|
2596
|
-
* - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)
|
|
2602
|
+
* - state (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2597
2603
|
* - Label text → label prop
|
|
2598
2604
|
*/
|
|
2599
2605
|
const NeoTag = ({ size = 'small', variant = 'outlined', ...props }) => {
|
|
2600
|
-
return jsxRuntime.jsx(StyledChip, { size: size, variant: variant, ...props });
|
|
2606
|
+
return jsxRuntime.jsx(StyledChip$1, { size: size, variant: variant, ...props });
|
|
2601
2607
|
};
|
|
2602
2608
|
NeoTag.displayName = 'NeoTag';
|
|
2603
2609
|
|
|
@@ -3559,49 +3565,70 @@ const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...prop
|
|
|
3559
3565
|
NeoDot.displayName = 'NeoDot';
|
|
3560
3566
|
|
|
3561
3567
|
const focusRing = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
3562
|
-
const
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
alignItems: active ? 'flex-end' : 'center',
|
|
3567
|
-
gap: neoDesign.spacing.spacing_1_2,
|
|
3568
|
-
padding: active ? `${neoDesign.spacing.spacing_3_4}px ${neoDesign.spacing.spacing_1_1_2}px` : `0 ${neoDesign.spacing.spacing_1_1_2}px`,
|
|
3569
|
-
minHeight: 40,
|
|
3570
|
-
border: `1px solid ${neoDesign.semanticColors.buttons.secondary.defaultBorder}`,
|
|
3568
|
+
const filterChipOnlyProps = ['selected', 'expanded', 'selectedLabel', 'count', 'onClear'];
|
|
3569
|
+
const StyledChip = styles.styled(Chip, {
|
|
3570
|
+
shouldForwardProp: prop => !filterChipOnlyProps.includes(prop),
|
|
3571
|
+
})(({ theme, selected }) => ({
|
|
3571
3572
|
borderRadius: neoDesign.borderRadius.full,
|
|
3572
|
-
|
|
3573
|
-
|
|
3573
|
+
border: `1px solid ${neoDesign.semanticColors.buttons.secondary.defaultBorder}`,
|
|
3574
|
+
backgroundColor: selected
|
|
3575
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3574
3576
|
: neoDesign.semanticColors.surfaces.white,
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3577
|
+
minHeight: 40,
|
|
3578
|
+
padding: `${neoDesign.spacing.spacing_3_4}px ${neoDesign.spacing.spacing_1_1_2}px`,
|
|
3579
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3580
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3581
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3582
|
+
lineHeight: 1,
|
|
3583
|
+
color: neoDesign.semanticColors.typography.body,
|
|
3584
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
3585
|
+
padding: 0,
|
|
3586
|
+
overflow: 'visible',
|
|
3587
|
+
display: 'flex',
|
|
3588
|
+
alignItems: 'center',
|
|
3589
|
+
},
|
|
3590
|
+
[`& .${Chip.chipClasses.deleteIcon}`]: {
|
|
3591
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3592
|
+
width: 24,
|
|
3593
|
+
height: 24,
|
|
3594
|
+
margin: 0,
|
|
3595
|
+
flexShrink: 0,
|
|
3596
|
+
'&:hover': {
|
|
3597
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3598
|
+
},
|
|
3599
|
+
},
|
|
3579
3600
|
'&:hover': {
|
|
3580
3601
|
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground,
|
|
3581
3602
|
},
|
|
3582
|
-
|
|
3603
|
+
[`&.${Chip.chipClasses.focusVisible}`]: {
|
|
3583
3604
|
boxShadow: focusRing,
|
|
3605
|
+
backgroundColor: selected
|
|
3606
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3607
|
+
: neoDesign.semanticColors.surfaces.white,
|
|
3584
3608
|
},
|
|
3585
3609
|
}));
|
|
3586
|
-
const
|
|
3587
|
-
|
|
3588
|
-
|
|
3610
|
+
const LabelContent = styles.styled('span')({
|
|
3611
|
+
display: 'inline-flex',
|
|
3612
|
+
alignItems: 'center',
|
|
3613
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3614
|
+
});
|
|
3615
|
+
const TextStack = styles.styled('span')({
|
|
3589
3616
|
display: 'flex',
|
|
3590
3617
|
flexDirection: 'column',
|
|
3591
3618
|
alignItems: 'flex-start',
|
|
3592
3619
|
justifyContent: 'center',
|
|
3593
|
-
gap:
|
|
3594
|
-
})
|
|
3620
|
+
gap: neoDesign.spacing.spacing_1_4,
|
|
3621
|
+
});
|
|
3595
3622
|
const HeaderLabel = styles.styled('span')(({ theme }) => ({
|
|
3596
3623
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xxs),
|
|
3597
3624
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
3598
3625
|
lineHeight: '120%',
|
|
3599
3626
|
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
3600
3627
|
}));
|
|
3601
|
-
const
|
|
3628
|
+
const SelectedLabel = styles.styled('span')(({ theme }) => ({
|
|
3602
3629
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3603
3630
|
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3604
|
-
lineHeight:
|
|
3631
|
+
lineHeight: 1,
|
|
3605
3632
|
color: neoDesign.semanticColors.buttons.secondary.default,
|
|
3606
3633
|
}));
|
|
3607
3634
|
const CountBadge = styles.styled('span')(({ theme }) => ({
|
|
@@ -3612,7 +3639,6 @@ const CountBadge = styles.styled('span')(({ theme }) => ({
|
|
|
3612
3639
|
height: 16,
|
|
3613
3640
|
padding: `0 ${neoDesign.spacing.spacing_1_2}px`,
|
|
3614
3641
|
borderRadius: neoDesign.borderRadius.full,
|
|
3615
|
-
border: `1px solid ${neoDesign.semanticColors.buttons.secondary.defaultBorder}`,
|
|
3616
3642
|
backgroundColor: neoDesign.semanticColors.brand,
|
|
3617
3643
|
color: neoDesign.semanticColors.surfaces.white,
|
|
3618
3644
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
@@ -3620,24 +3646,19 @@ const CountBadge = styles.styled('span')(({ theme }) => ({
|
|
|
3620
3646
|
lineHeight: 1,
|
|
3621
3647
|
boxSizing: 'border-box',
|
|
3622
3648
|
}));
|
|
3623
|
-
const ChevronIcon = styles.styled(ChevronDown)({
|
|
3624
|
-
width: 16,
|
|
3625
|
-
height: 16,
|
|
3626
|
-
color: neoDesign.semanticColors.brand,
|
|
3627
|
-
flexShrink: 0,
|
|
3628
|
-
});
|
|
3629
3649
|
/**
|
|
3630
|
-
*
|
|
3650
|
+
* NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
|
|
3631
3651
|
*
|
|
3632
|
-
* @
|
|
3652
|
+
* @example
|
|
3653
|
+
* <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
|
|
3633
3654
|
*
|
|
3634
|
-
*
|
|
3635
|
-
* - Property 1 (default|hover ope|focused|Active|active focused) → active boolean + CSS states
|
|
3655
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
|
|
3636
3656
|
*/
|
|
3637
|
-
const
|
|
3638
|
-
|
|
3657
|
+
const NeoFilterChip = ({ label, selected = false, expanded, selectedLabel, count = 0, onClear, onClick, ...props }) => {
|
|
3658
|
+
const chipLabel = selected ? (jsxRuntime.jsxs(LabelContent, { children: [jsxRuntime.jsxs(TextStack, { children: [jsxRuntime.jsx(HeaderLabel, { children: label }), jsxRuntime.jsx(SelectedLabel, { children: selectedLabel ?? label })] }), count > 0 && jsxRuntime.jsx(CountBadge, { children: count })] })) : (label);
|
|
3659
|
+
return (jsxRuntime.jsx(StyledChip, { label: chipLabel, selected: selected, clickable: true, onClick: onClick, onDelete: selected && onClear ? onClear : undefined, deleteIcon: jsxRuntime.jsx(X, { size: 24 }), "aria-expanded": expanded, ...props }));
|
|
3639
3660
|
};
|
|
3640
|
-
|
|
3661
|
+
NeoFilterChip.displayName = 'NeoFilterChip';
|
|
3641
3662
|
|
|
3642
3663
|
const SpinnerWrapper = styles.styled('div')({
|
|
3643
3664
|
width: 24,
|
|
@@ -3879,6 +3900,31 @@ const NeoFooter = ({ variant = 'pagination', showShadow = false, loading = false
|
|
|
3879
3900
|
};
|
|
3880
3901
|
NeoFooter.displayName = 'NeoFooter';
|
|
3881
3902
|
|
|
3903
|
+
const customProps$1 = ['iconSize'];
|
|
3904
|
+
const StyledIconWrapper = styles.styled('div', {
|
|
3905
|
+
shouldForwardProp: prop => !customProps$1.includes(prop),
|
|
3906
|
+
})(({ iconSize }) => ({
|
|
3907
|
+
display: 'inline-flex',
|
|
3908
|
+
alignItems: 'center',
|
|
3909
|
+
justifyContent: 'center',
|
|
3910
|
+
width: iconSize,
|
|
3911
|
+
height: iconSize,
|
|
3912
|
+
flexShrink: 0,
|
|
3913
|
+
'& svg': {
|
|
3914
|
+
width: iconSize,
|
|
3915
|
+
height: iconSize,
|
|
3916
|
+
},
|
|
3917
|
+
}));
|
|
3918
|
+
/**
|
|
3919
|
+
* NeoIconWrapper - Flex-centered container that sizes icons
|
|
3920
|
+
*
|
|
3921
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4061-9955
|
|
3922
|
+
*/
|
|
3923
|
+
const NeoIconWrapper = ({ size = 20, children, ...props }) => {
|
|
3924
|
+
return (jsxRuntime.jsx(StyledIconWrapper, { iconSize: size, ...props, children: children }));
|
|
3925
|
+
};
|
|
3926
|
+
NeoIconWrapper.displayName = 'NeoIconWrapper';
|
|
3927
|
+
|
|
3882
3928
|
/**
|
|
3883
3929
|
* NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality
|
|
3884
3930
|
*
|
|
@@ -4513,11 +4559,11 @@ NeoListItemButton.displayName = 'NeoListItemButton';
|
|
|
4513
4559
|
* Focus ring box-shadow using Neo design tokens
|
|
4514
4560
|
* Combines focusWhite1 (inner white ring) and focusBlue2 (outer blue ring)
|
|
4515
4561
|
*/
|
|
4516
|
-
const focusRingShadow = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
4562
|
+
const focusRingShadow$1 = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
4517
4563
|
/**
|
|
4518
4564
|
* Card box-shadow using Neo design tokens for hover and selected states
|
|
4519
4565
|
*/
|
|
4520
|
-
const activeShadow = `${neoDesign.shadows.card.x}px ${neoDesign.shadows.card.y}px ${neoDesign.shadows.card.blur}px ${neoDesign.shadows.card.spread}px ${neoDesign.shadows.card.shadow}`;
|
|
4566
|
+
const activeShadow$1 = `${neoDesign.shadows.card.x}px ${neoDesign.shadows.card.y}px ${neoDesign.shadows.card.blur}px ${neoDesign.shadows.card.spread}px ${neoDesign.shadows.card.shadow}`;
|
|
4521
4567
|
/**
|
|
4522
4568
|
* Styled Card component with Neo design tokens
|
|
4523
4569
|
*/
|
|
@@ -4533,16 +4579,16 @@ const StyledCard = styles.styled(MuiCard, {
|
|
|
4533
4579
|
backgroundColor: neoDesign.semanticColors.surfaces.card,
|
|
4534
4580
|
border: `1px solid ${selected ? neoDesign.semanticColors.border.tabActive : neoDesign.semanticColors.border.card}`,
|
|
4535
4581
|
borderRadius: neoDesign.borderRadius.xS,
|
|
4536
|
-
boxShadow: selected ? activeShadow : 'none',
|
|
4582
|
+
boxShadow: selected ? activeShadow$1 : 'none',
|
|
4537
4583
|
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
4538
4584
|
cursor: 'pointer',
|
|
4539
4585
|
'&:hover': {
|
|
4540
4586
|
borderColor: neoDesign.semanticColors.border.tabActive,
|
|
4541
|
-
boxShadow: activeShadow,
|
|
4587
|
+
boxShadow: activeShadow$1,
|
|
4542
4588
|
},
|
|
4543
4589
|
'&:focus-visible': {
|
|
4544
4590
|
borderColor: neoDesign.semanticColors.border.tabActive,
|
|
4545
|
-
boxShadow: focusRingShadow,
|
|
4591
|
+
boxShadow: focusRingShadow$1,
|
|
4546
4592
|
outline: 'none',
|
|
4547
4593
|
},
|
|
4548
4594
|
...(disabled && {
|
|
@@ -4602,7 +4648,7 @@ const Title = styles.styled('p')(({ theme }) => ({
|
|
|
4602
4648
|
/**
|
|
4603
4649
|
* Description text
|
|
4604
4650
|
*/
|
|
4605
|
-
const Description = styles.styled('p')(({ theme }) => ({
|
|
4651
|
+
const Description$1 = styles.styled('p')(({ theme }) => ({
|
|
4606
4652
|
margin: 0,
|
|
4607
4653
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
4608
4654
|
fontWeight: neoDesign.typography.fontWeight.regular, // 400
|
|
@@ -4657,10 +4703,131 @@ const Description = styles.styled('p')(({ theme }) => ({
|
|
|
4657
4703
|
* - typography.fontWeight.regular (400) - Description
|
|
4658
4704
|
*/
|
|
4659
4705
|
const NeoMarketplaceCard = ({ logo, recipeCount, title, description, selected = false, disabled = false, onClick, ...props }) => {
|
|
4660
|
-
return (jsxRuntime.jsxs(StyledCard, { selected: selected, disabled: disabled, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, role: "button", "aria-disabled": disabled, "aria-pressed": selected, ...props, children: [jsxRuntime.jsxs(CardHeader, { children: [jsxRuntime.jsx(LogoContainer, { children: logo }), jsxRuntime.jsx(RecipeCount, { children: recipeCount })] }), jsxRuntime.jsxs(CardContent, { children: [jsxRuntime.jsx(Title, { children: title }), jsxRuntime.jsx(Description, { children: description })] })] }));
|
|
4706
|
+
return (jsxRuntime.jsxs(StyledCard, { selected: selected, disabled: disabled, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, role: "button", "aria-disabled": disabled, "aria-pressed": selected, ...props, children: [jsxRuntime.jsxs(CardHeader, { children: [jsxRuntime.jsx(LogoContainer, { children: logo }), jsxRuntime.jsx(RecipeCount, { children: recipeCount })] }), jsxRuntime.jsxs(CardContent, { children: [jsxRuntime.jsx(Title, { children: title }), jsxRuntime.jsx(Description$1, { children: description })] })] }));
|
|
4661
4707
|
};
|
|
4662
4708
|
NeoMarketplaceCard.displayName = 'NeoMarketplaceCard';
|
|
4663
4709
|
|
|
4710
|
+
const focusRingShadow = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
4711
|
+
const activeShadow = `${neoDesign.shadows.card.x}px ${neoDesign.shadows.card.y}px ${neoDesign.shadows.card.blur}px ${neoDesign.shadows.card.spread}px ${neoDesign.shadows.card.shadow}`;
|
|
4712
|
+
const StyledLargeCard = styles.styled(MuiCard, {
|
|
4713
|
+
shouldForwardProp: prop => prop !== 'cardState' && prop !== 'cardTheme',
|
|
4714
|
+
})(({ cardState = 'default', cardTheme = 'light' }) => {
|
|
4715
|
+
const isLight = cardTheme === 'light';
|
|
4716
|
+
const isActive = cardState === 'active';
|
|
4717
|
+
const isDisabled = cardState === 'disabled';
|
|
4718
|
+
const isFocused = cardState === 'focused';
|
|
4719
|
+
const activeBorderColor = isLight ? neoDesign.semanticColors.border.tabActive : neoDesign.colors.digitalGreen[300];
|
|
4720
|
+
const defaultBorderColor = isLight
|
|
4721
|
+
? neoDesign.semanticColors.border.card
|
|
4722
|
+
: `${neoDesign.semanticColors.border.card}80`;
|
|
4723
|
+
return {
|
|
4724
|
+
width: 340,
|
|
4725
|
+
height: 162,
|
|
4726
|
+
display: 'flex',
|
|
4727
|
+
flexDirection: 'column',
|
|
4728
|
+
justifyContent: 'space-between',
|
|
4729
|
+
alignItems: 'flex-start',
|
|
4730
|
+
padding: neoDesign.spacing.spacing_2,
|
|
4731
|
+
borderRadius: neoDesign.borderRadius.xS,
|
|
4732
|
+
backgroundColor: isLight ? neoDesign.semanticColors.surfaces.card : neoDesign.colors.grey[800],
|
|
4733
|
+
border: `1px solid ${isActive || isFocused ? activeBorderColor : defaultBorderColor}`,
|
|
4734
|
+
boxShadow: isActive ? activeShadow : isFocused ? focusRingShadow : 'none',
|
|
4735
|
+
overflow: 'hidden',
|
|
4736
|
+
'&:focus-visible': {
|
|
4737
|
+
borderColor: isLight ? neoDesign.semanticColors.border.tabActive : neoDesign.colors.digitalGreen[300],
|
|
4738
|
+
boxShadow: focusRingShadow,
|
|
4739
|
+
outline: 'none',
|
|
4740
|
+
},
|
|
4741
|
+
...(isDisabled && {
|
|
4742
|
+
opacity: 0.5,
|
|
4743
|
+
pointerEvents: 'none',
|
|
4744
|
+
cursor: 'not-allowed',
|
|
4745
|
+
}),
|
|
4746
|
+
};
|
|
4747
|
+
});
|
|
4748
|
+
const TopSection = styles.styled('div')({
|
|
4749
|
+
display: 'flex',
|
|
4750
|
+
flexDirection: 'column',
|
|
4751
|
+
gap: neoDesign.spacing.spacing_2,
|
|
4752
|
+
alignItems: 'flex-start',
|
|
4753
|
+
width: '100%',
|
|
4754
|
+
flexShrink: 0,
|
|
4755
|
+
});
|
|
4756
|
+
const HeaderRow = styles.styled('div')({
|
|
4757
|
+
display: 'flex',
|
|
4758
|
+
gap: neoDesign.spacing.spacing_1,
|
|
4759
|
+
alignItems: 'center',
|
|
4760
|
+
flexShrink: 0,
|
|
4761
|
+
});
|
|
4762
|
+
const HeaderSlot = styles.styled('div')({
|
|
4763
|
+
display: 'flex',
|
|
4764
|
+
flexDirection: 'column',
|
|
4765
|
+
alignItems: 'center',
|
|
4766
|
+
justifyContent: 'center',
|
|
4767
|
+
width: 20,
|
|
4768
|
+
height: 20,
|
|
4769
|
+
flexShrink: 0,
|
|
4770
|
+
});
|
|
4771
|
+
const HeaderTitle = styles.styled('span', {
|
|
4772
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4773
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4774
|
+
fontFamily: `${neoDesign.typography.fontFamily.heading}, sans-serif`,
|
|
4775
|
+
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
4776
|
+
fontSize: neoDesign.typography.fontSize.h6,
|
|
4777
|
+
lineHeight: 1.4,
|
|
4778
|
+
color: cardTheme === 'light' ? neoDesign.colors.grey[800] : neoDesign.semanticColors.surfaces.white,
|
|
4779
|
+
flexShrink: 0,
|
|
4780
|
+
}));
|
|
4781
|
+
const Description = styles.styled('p', {
|
|
4782
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4783
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4784
|
+
fontFamily: `${neoDesign.typography.fontFamily.body}, sans-serif`,
|
|
4785
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
4786
|
+
fontSize: neoDesign.typography.fontSize.xs,
|
|
4787
|
+
lineHeight: 1.5,
|
|
4788
|
+
color: cardTheme === 'light' ? neoDesign.colors.grey[800] : neoDesign.semanticColors.surfaces.white,
|
|
4789
|
+
margin: 0,
|
|
4790
|
+
minWidth: '100%',
|
|
4791
|
+
wordWrap: 'break-word',
|
|
4792
|
+
}));
|
|
4793
|
+
const ButtonsRow = styles.styled('div')({
|
|
4794
|
+
display: 'flex',
|
|
4795
|
+
gap: neoDesign.spacing.spacing_3,
|
|
4796
|
+
alignItems: 'flex-start',
|
|
4797
|
+
flexShrink: 0,
|
|
4798
|
+
});
|
|
4799
|
+
/**
|
|
4800
|
+
* NeoMarketplaceLargeCard - A large marketplace card with state and theme variants
|
|
4801
|
+
*
|
|
4802
|
+
* A 340x162px card with optional icon, gel brand icon, title, description, and action buttons.
|
|
4803
|
+
* Icon, gel, and title display inline in a header row.
|
|
4804
|
+
* Supports 4 states (default, active, disabled, focused) and 2 themes (light, dark).
|
|
4805
|
+
*
|
|
4806
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=5925-11
|
|
4807
|
+
*
|
|
4808
|
+
* Figma Props Mapping:
|
|
4809
|
+
* - Property 1 → state (default/active/disabled/focused)
|
|
4810
|
+
* - Property 2 → cardTheme (light/dark)
|
|
4811
|
+
* - Show Icon → showIcon
|
|
4812
|
+
* - Show gel → showGel
|
|
4813
|
+
* - show buttons → showButtons
|
|
4814
|
+
*
|
|
4815
|
+
* Design Tokens Used:
|
|
4816
|
+
* - semanticColors.surfaces.card (#ffffff) - Light theme background
|
|
4817
|
+
* - colors.grey[800] (#1f2937) - Dark theme background
|
|
4818
|
+
* - semanticColors.border.card (#d1d5db) - Default border (50% opacity on dark)
|
|
4819
|
+
* - semanticColors.border.tabActive (#2f42ff) - Active/focused border (light theme)
|
|
4820
|
+
* - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
|
|
4821
|
+
* - borderRadius.xS (4px) - Corner radius
|
|
4822
|
+
* - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
|
|
4823
|
+
* - shadows.card - Active state shadow
|
|
4824
|
+
*/
|
|
4825
|
+
const NeoMarketplaceLargeCard = ({ state = 'default', cardTheme = 'light', showIcon = true, showGel = true, showButtons = true, icon, gel, title, children, actions, onClick, ...props }) => {
|
|
4826
|
+
const isDisabled = state === 'disabled';
|
|
4827
|
+
return (jsxRuntime.jsxs(StyledLargeCard, { cardState: state, cardTheme: cardTheme, onClick: isDisabled ? undefined : onClick, tabIndex: isDisabled ? -1 : 0, "aria-disabled": isDisabled || undefined, ...props, children: [jsxRuntime.jsxs(TopSection, { children: [jsxRuntime.jsxs(HeaderRow, { children: [showIcon && icon && jsxRuntime.jsx(HeaderSlot, { children: icon }), showGel && gel && jsxRuntime.jsx(HeaderSlot, { children: gel }), title && jsxRuntime.jsx(HeaderTitle, { cardTheme: cardTheme, children: title })] }), children && jsxRuntime.jsx(Description, { cardTheme: cardTheme, children: children })] }), showButtons && actions && jsxRuntime.jsx(ButtonsRow, { children: actions })] }));
|
|
4828
|
+
};
|
|
4829
|
+
NeoMarketplaceLargeCard.displayName = 'NeoMarketplaceLargeCard';
|
|
4830
|
+
|
|
4664
4831
|
const StyledMenu = styles.styled(Menu)(({ theme }) => ({
|
|
4665
4832
|
[`& .${Paper.paperClasses.root}`]: {
|
|
4666
4833
|
backgroundColor: neoDesign.semanticColors.surfaces.white,
|
|
@@ -4904,6 +5071,87 @@ const NeoModalFooter = ({ leadingContent, children }) => {
|
|
|
4904
5071
|
};
|
|
4905
5072
|
NeoModalFooter.displayName = 'NeoModalFooter';
|
|
4906
5073
|
|
|
5074
|
+
const customProps = ['selected'];
|
|
5075
|
+
const StyledRoot = styles.styled(ButtonBase, {
|
|
5076
|
+
shouldForwardProp: prop => !customProps.includes(prop),
|
|
5077
|
+
})(({ selected }) => ({
|
|
5078
|
+
display: 'flex',
|
|
5079
|
+
flexDirection: 'column',
|
|
5080
|
+
gap: neoDesign.spacing.spacing_1_4, // 2px
|
|
5081
|
+
alignItems: 'center',
|
|
5082
|
+
justifyContent: 'center',
|
|
5083
|
+
paddingTop: neoDesign.spacing.spacing_1, // 8px
|
|
5084
|
+
paddingBottom: neoDesign.spacing.spacing_1, // 8px
|
|
5085
|
+
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
5086
|
+
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
5087
|
+
borderRadius: neoDesign.borderRadius.xS, // 4px
|
|
5088
|
+
width: 95,
|
|
5089
|
+
cursor: 'pointer',
|
|
5090
|
+
textDecoration: 'none',
|
|
5091
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5092
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground, // #F2F3FF
|
|
5093
|
+
},
|
|
5094
|
+
'&:hover .neo-nav-label': {
|
|
5095
|
+
color: neoDesign.semanticColors.buttons.primary.hover, // #1E2EC2
|
|
5096
|
+
},
|
|
5097
|
+
...(selected && {
|
|
5098
|
+
'& .neo-nav-icon-padding': {
|
|
5099
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`, // rgba(220,224,255,0.75)
|
|
5100
|
+
},
|
|
5101
|
+
'& .neo-nav-label': {
|
|
5102
|
+
color: neoDesign.semanticColors.buttons.primary.pressed, // #131E7A
|
|
5103
|
+
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
5104
|
+
},
|
|
5105
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5106
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`,
|
|
5107
|
+
},
|
|
5108
|
+
'&:hover .neo-nav-label': {
|
|
5109
|
+
color: neoDesign.semanticColors.buttons.primary.pressed,
|
|
5110
|
+
},
|
|
5111
|
+
}),
|
|
5112
|
+
}));
|
|
5113
|
+
const IconPadding = styles.styled('span')({
|
|
5114
|
+
display: 'flex',
|
|
5115
|
+
alignItems: 'center',
|
|
5116
|
+
padding: neoDesign.spacing.spacing_1, // 8px
|
|
5117
|
+
borderRadius: neoDesign.spacing.spacing_1, // 8px
|
|
5118
|
+
transition: 'background-color 150ms',
|
|
5119
|
+
});
|
|
5120
|
+
const Label$2 = styles.styled('span')(({ theme }) => ({
|
|
5121
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
5122
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
5123
|
+
fontSize: theme.typography.pxToRem(10),
|
|
5124
|
+
lineHeight: 1.2,
|
|
5125
|
+
textAlign: 'center',
|
|
5126
|
+
color: neoDesign.semanticColors.typography.navigation.default, // #1F2937
|
|
5127
|
+
width: '100%',
|
|
5128
|
+
transition: 'color 150ms',
|
|
5129
|
+
}));
|
|
5130
|
+
const TagPill = styles.styled('span')(({ theme }) => ({
|
|
5131
|
+
display: 'inline-flex',
|
|
5132
|
+
alignItems: 'center',
|
|
5133
|
+
justifyContent: 'center',
|
|
5134
|
+
height: 18,
|
|
5135
|
+
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
5136
|
+
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
5137
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
5138
|
+
backgroundColor: neoDesign.colors.digitalBlue[300], // #8D99FF
|
|
5139
|
+
color: neoDesign.semanticColors.typography.tooltip, // white
|
|
5140
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
5141
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
5142
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
5143
|
+
lineHeight: 1,
|
|
5144
|
+
}));
|
|
5145
|
+
/**
|
|
5146
|
+
* NeoNavigationItem - Vertical navigation item with icon, label, and optional tag
|
|
5147
|
+
*
|
|
5148
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
|
|
5149
|
+
*/
|
|
5150
|
+
const NeoNavigationItem = ({ icon, label, selected = false, tag, children, ...props }) => {
|
|
5151
|
+
return (jsxRuntime.jsxs(StyledRoot, { selected: selected, disableRipple: true, ...props, children: [jsxRuntime.jsx(IconPadding, { className: "neo-nav-icon-padding", children: icon }), label && jsxRuntime.jsx(Label$2, { className: "neo-nav-label", children: label }), tag && jsxRuntime.jsx(TagPill, { children: tag }), children] }));
|
|
5152
|
+
};
|
|
5153
|
+
NeoNavigationItem.displayName = 'NeoNavigationItem';
|
|
5154
|
+
|
|
4907
5155
|
/**
|
|
4908
5156
|
* Sticky header wrapper - sticks to top when scrolling
|
|
4909
5157
|
*/
|
|
@@ -6199,6 +6447,8 @@ const NeoTooltip = ({ variant = 'light', title, description, children, arrow = f
|
|
|
6199
6447
|
};
|
|
6200
6448
|
NeoTooltip.displayName = 'NeoTooltip';
|
|
6201
6449
|
|
|
6450
|
+
// Figma-exact border radius for toggle buttons — no matching design token
|
|
6451
|
+
const TOGGLE_BUTTON_BORDER_RADIUS = 14;
|
|
6202
6452
|
const StyledToggleButtonGroup = styles.styled(ToggleButtonGroup)(({ theme }) => ({
|
|
6203
6453
|
backgroundColor: neoDesign.colors.grey[50],
|
|
6204
6454
|
padding: theme.spacing(0.625, 0.875),
|
|
@@ -6206,17 +6456,14 @@ const StyledToggleButtonGroup = styles.styled(ToggleButtonGroup)(({ theme }) =>
|
|
|
6206
6456
|
gap: 0,
|
|
6207
6457
|
[`& .${ToggleButtonGroup.toggleButtonGroupClasses.grouped}`]: {
|
|
6208
6458
|
border: 'none',
|
|
6209
|
-
|
|
6210
|
-
borderRadius: 14,
|
|
6459
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6211
6460
|
margin: 0,
|
|
6212
6461
|
'&:not(:first-of-type)': {
|
|
6213
|
-
|
|
6214
|
-
borderRadius: 14,
|
|
6462
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6215
6463
|
marginLeft: 0,
|
|
6216
6464
|
},
|
|
6217
6465
|
'&:not(:last-of-type)': {
|
|
6218
|
-
|
|
6219
|
-
borderRadius: 14,
|
|
6466
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6220
6467
|
},
|
|
6221
6468
|
},
|
|
6222
6469
|
}));
|
|
@@ -6295,15 +6542,17 @@ exports.NeoDataGridSelect = NeoSelect;
|
|
|
6295
6542
|
exports.NeoDatePicker = NeoDatePicker;
|
|
6296
6543
|
exports.NeoDivider = NeoDivider;
|
|
6297
6544
|
exports.NeoDot = NeoDot;
|
|
6298
|
-
exports.
|
|
6545
|
+
exports.NeoFilterChip = NeoFilterChip;
|
|
6299
6546
|
exports.NeoFooter = NeoFooter;
|
|
6300
6547
|
exports.NeoIconButton = NeoIconButton;
|
|
6548
|
+
exports.NeoIconWrapper = NeoIconWrapper;
|
|
6301
6549
|
exports.NeoInfiniteScrollGrid = NeoInfiniteScrollGrid;
|
|
6302
6550
|
exports.NeoInputField = NeoInputField;
|
|
6303
6551
|
exports.NeoListItem = NeoListItem;
|
|
6304
6552
|
exports.NeoListItemButton = NeoListItemButton;
|
|
6305
6553
|
exports.NeoLoadingSpinner = NeoLoadingSpinner;
|
|
6306
6554
|
exports.NeoMarketplaceCard = NeoMarketplaceCard;
|
|
6555
|
+
exports.NeoMarketplaceLargeCard = NeoMarketplaceLargeCard;
|
|
6307
6556
|
exports.NeoMenu = NeoMenu;
|
|
6308
6557
|
exports.NeoMenuItem = NeoMenuItem;
|
|
6309
6558
|
exports.NeoModal = NeoModal;
|
|
@@ -6311,6 +6560,7 @@ exports.NeoModalContent = NeoModalContent;
|
|
|
6311
6560
|
exports.NeoModalFooter = NeoModalFooter;
|
|
6312
6561
|
exports.NeoModalHeader = NeoModalHeader;
|
|
6313
6562
|
exports.NeoMultiBadgesCell = NeoMultiBadgesCell;
|
|
6563
|
+
exports.NeoNavigationItem = NeoNavigationItem;
|
|
6314
6564
|
exports.NeoPageContent = NeoPageContent;
|
|
6315
6565
|
exports.NeoPaginatedGrid = NeoPaginatedGrid;
|
|
6316
6566
|
exports.NeoProgressbar = NeoProgressbar;
|