@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/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
- ...(size === 'medium' && {
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.spacing_1_2,
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" (20px with image)
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$1 = styles.styled(Chip)(({ theme }) => ({
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$1, { ...props });
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
- // biome-ignore plugin: Figma-exact 1px for xs — no matching token
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 ? sizeStyles.paddingMultiline : sizeStyles.paddingSingleLine,
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
- // biome-ignore plugin: no exact token for 6px
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 StyledChip = styles.styled(Chip)(({ theme, size, variant, color }) => ({
2480
- padding: 0,
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
- ...(size === 'medium' && {
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
- ...(size === 'large' && {
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
- // Outlined variant (light type in Figma) - Neutral/Default
2504
- ...(variant === 'outlined' &&
2505
- color === 'default' && {
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], // base/grey/200
2509
- }),
2510
- // Outlined variant - Error
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], // base/red/100
2516
- }),
2517
- // Outlined variant - Warning
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], // base/orange/100
2523
- }),
2524
- // Outlined variant - Success
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)', // rgba from Figma
2530
- }),
2531
- // Outlined variant - Info
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], // base/digital-blue/100
2537
- }),
2538
- // Outlined variant - Violet
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], // base/violet/100
2544
- }),
2545
- // Filled variant (dark type in Figma) - Neutral/Default
2546
- ...(variant === 'filled' &&
2547
- color === 'default' && {
2548
- backgroundColor: neoDesign.semanticColors.status.neutral.medium,
2549
- color: theme.palette.common.white,
2550
- border: 'none',
2551
- }),
2552
- // Filled variant - Error
2553
- ...(variant === 'filled' &&
2554
- color === 'error' && {
2555
- backgroundColor: neoDesign.semanticColors.status.error.medium,
2556
- color: theme.palette.common.white,
2557
- border: 'none',
2558
- }),
2559
- // Filled variant - Warning
2560
- ...(variant === 'filled' &&
2561
- color === 'warning' && {
2562
- backgroundColor: neoDesign.semanticColors.status.warning.medium,
2563
- color: theme.palette.common.white,
2564
- border: 'none',
2565
- }),
2566
- // Filled variant - Success
2567
- ...(variant === 'filled' &&
2568
- color === 'success' && {
2569
- backgroundColor: neoDesign.semanticColors.status.success.medium,
2570
- color: theme.palette.common.white,
2571
- border: 'none',
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 === 'violet' && {
2583
- backgroundColor: neoDesign.colors.violet[500],
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 StyledButton = styles.styled('button', {
3563
- shouldForwardProp: prop => prop !== 'active',
3564
- })(({ active }) => ({
3565
- display: 'inline-flex',
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
- backgroundColor: active
3573
- ? neoDesign.semanticColors.buttons.secondary.hoverBackground
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
- cursor: 'pointer',
3576
- fontFamily: 'inherit',
3577
- outline: 'none',
3578
- boxSizing: 'border-box',
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
- '&:focus-visible': {
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 TextContent = styles.styled('span', {
3587
- shouldForwardProp: prop => prop !== 'active',
3588
- })(({ active }) => ({
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: active ? neoDesign.spacing.spacing_1_4 : undefined,
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 Label$2 = styles.styled('span')(({ theme }) => ({
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: `${neoDesign.typography.lineHeight.xs}px`,
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
- * NeoFilterChips - Filter chip button used for filtering data
3650
+ * NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
3631
3651
  *
3632
- * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
3652
+ * @example
3653
+ * <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
3633
3654
  *
3634
- * Figma Props Mapping:
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 NeoFilterChips = ({ label, active = false, count = 0, onClick, ...props }) => {
3638
- return (jsxRuntime.jsxs(StyledButton, { type: "button", active: active, onClick: onClick, ...props, children: [jsxRuntime.jsxs(TextContent, { active: active, children: [active && jsxRuntime.jsx(HeaderLabel, { children: label }), jsxRuntime.jsx(Label$2, { children: label })] }), active && count > 0 && jsxRuntime.jsx(CountBadge, { children: count }), jsxRuntime.jsx(ChevronIcon, {})] }));
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
- NeoFilterChips.displayName = 'NeoFilterChips';
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
- // biome-ignore plugin: no exact token for 14px
6210
- borderRadius: 14,
6459
+ borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
6211
6460
  margin: 0,
6212
6461
  '&:not(:first-of-type)': {
6213
- // biome-ignore plugin: no exact token for 14px
6214
- borderRadius: 14,
6462
+ borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
6215
6463
  marginLeft: 0,
6216
6464
  },
6217
6465
  '&:not(:last-of-type)': {
6218
- // biome-ignore plugin: no exact token for 14px
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.NeoFilterChips = NeoFilterChips;
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;