@moderneinc/neo-styled-components 2.5.0-next.ab39d3 → 2.5.0-next.ef98e2
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/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 +48 -5
- package/dist/index.esm.js +436 -136
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +439 -135
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/FilterChips/FilterChips.d.ts +0 -26
- package/dist/LargeCard/LargeCard.d.ts +0 -26
package/dist/index.js
CHANGED
|
@@ -149,7 +149,7 @@ const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }) => {
|
|
|
149
149
|
};
|
|
150
150
|
NeoAvatar.displayName = 'NeoAvatar';
|
|
151
151
|
|
|
152
|
-
const StyledChip$
|
|
152
|
+
const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
153
153
|
height: 24,
|
|
154
154
|
paddingTop: neoDesign.spacing.spacing_1_4,
|
|
155
155
|
paddingBottom: neoDesign.spacing.spacing_1_4,
|
|
@@ -236,7 +236,7 @@ const StyledChip$1 = styles.styled(Chip)(({ theme }) => ({
|
|
|
236
236
|
* - Label → label prop
|
|
237
237
|
*/
|
|
238
238
|
const NeoBadge = (props) => {
|
|
239
|
-
return jsxRuntime.jsx(StyledChip$
|
|
239
|
+
return jsxRuntime.jsx(StyledChip$2, { ...props });
|
|
240
240
|
};
|
|
241
241
|
NeoBadge.displayName = 'NeoBadge';
|
|
242
242
|
|
|
@@ -502,7 +502,7 @@ const NeoActivityIndicatorCell = ({ event = 'commit-job', secondaryEvent, scene
|
|
|
502
502
|
NeoActivityIndicatorCell.displayName = 'NeoActivityIndicatorCell';
|
|
503
503
|
|
|
504
504
|
/**
|
|
505
|
-
* @license lucide-react v0.
|
|
505
|
+
* @license lucide-react v0.575.0 - ISC
|
|
506
506
|
*
|
|
507
507
|
* This source code is licensed under the ISC license.
|
|
508
508
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -513,7 +513,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
513
513
|
}).join(" ").trim();
|
|
514
514
|
|
|
515
515
|
/**
|
|
516
|
-
* @license lucide-react v0.
|
|
516
|
+
* @license lucide-react v0.575.0 - ISC
|
|
517
517
|
*
|
|
518
518
|
* This source code is licensed under the ISC license.
|
|
519
519
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -522,7 +522,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
522
522
|
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
523
523
|
|
|
524
524
|
/**
|
|
525
|
-
* @license lucide-react v0.
|
|
525
|
+
* @license lucide-react v0.575.0 - ISC
|
|
526
526
|
*
|
|
527
527
|
* This source code is licensed under the ISC license.
|
|
528
528
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -534,7 +534,7 @@ const toCamelCase = (string) => string.replace(
|
|
|
534
534
|
);
|
|
535
535
|
|
|
536
536
|
/**
|
|
537
|
-
* @license lucide-react v0.
|
|
537
|
+
* @license lucide-react v0.575.0 - ISC
|
|
538
538
|
*
|
|
539
539
|
* This source code is licensed under the ISC license.
|
|
540
540
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -547,7 +547,7 @@ const toPascalCase = (string) => {
|
|
|
547
547
|
};
|
|
548
548
|
|
|
549
549
|
/**
|
|
550
|
-
* @license lucide-react v0.
|
|
550
|
+
* @license lucide-react v0.575.0 - ISC
|
|
551
551
|
*
|
|
552
552
|
* This source code is licensed under the ISC license.
|
|
553
553
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -566,7 +566,7 @@ var defaultAttributes = {
|
|
|
566
566
|
};
|
|
567
567
|
|
|
568
568
|
/**
|
|
569
|
-
* @license lucide-react v0.
|
|
569
|
+
* @license lucide-react v0.575.0 - ISC
|
|
570
570
|
*
|
|
571
571
|
* This source code is licensed under the ISC license.
|
|
572
572
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -582,7 +582,7 @@ const hasA11yProp = (props) => {
|
|
|
582
582
|
};
|
|
583
583
|
|
|
584
584
|
/**
|
|
585
|
-
* @license lucide-react v0.
|
|
585
|
+
* @license lucide-react v0.575.0 - ISC
|
|
586
586
|
*
|
|
587
587
|
* This source code is licensed under the ISC license.
|
|
588
588
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -620,7 +620,7 @@ const Icon = react.forwardRef(
|
|
|
620
620
|
);
|
|
621
621
|
|
|
622
622
|
/**
|
|
623
|
-
* @license lucide-react v0.
|
|
623
|
+
* @license lucide-react v0.575.0 - ISC
|
|
624
624
|
*
|
|
625
625
|
* This source code is licensed under the ISC license.
|
|
626
626
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -645,7 +645,7 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
645
645
|
};
|
|
646
646
|
|
|
647
647
|
/**
|
|
648
|
-
* @license lucide-react v0.
|
|
648
|
+
* @license lucide-react v0.575.0 - ISC
|
|
649
649
|
*
|
|
650
650
|
* This source code is licensed under the ISC license.
|
|
651
651
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -659,7 +659,7 @@ const __iconNode$i = [
|
|
|
659
659
|
const ArrowDown = createLucideIcon("arrow-down", __iconNode$i);
|
|
660
660
|
|
|
661
661
|
/**
|
|
662
|
-
* @license lucide-react v0.
|
|
662
|
+
* @license lucide-react v0.575.0 - ISC
|
|
663
663
|
*
|
|
664
664
|
* This source code is licensed under the ISC license.
|
|
665
665
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -673,7 +673,7 @@ const __iconNode$h = [
|
|
|
673
673
|
const ArrowUp = createLucideIcon("arrow-up", __iconNode$h);
|
|
674
674
|
|
|
675
675
|
/**
|
|
676
|
-
* @license lucide-react v0.
|
|
676
|
+
* @license lucide-react v0.575.0 - ISC
|
|
677
677
|
*
|
|
678
678
|
* This source code is licensed under the ISC license.
|
|
679
679
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -695,7 +695,7 @@ const __iconNode$g = [
|
|
|
695
695
|
const CalendarDays = createLucideIcon("calendar-days", __iconNode$g);
|
|
696
696
|
|
|
697
697
|
/**
|
|
698
|
-
* @license lucide-react v0.
|
|
698
|
+
* @license lucide-react v0.575.0 - ISC
|
|
699
699
|
*
|
|
700
700
|
* This source code is licensed under the ISC license.
|
|
701
701
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -706,7 +706,7 @@ const __iconNode$f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
|
706
706
|
const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
|
|
707
707
|
|
|
708
708
|
/**
|
|
709
|
-
* @license lucide-react v0.
|
|
709
|
+
* @license lucide-react v0.575.0 - ISC
|
|
710
710
|
*
|
|
711
711
|
* This source code is licensed under the ISC license.
|
|
712
712
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -717,7 +717,7 @@ const __iconNode$e = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
|
717
717
|
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$e);
|
|
718
718
|
|
|
719
719
|
/**
|
|
720
|
-
* @license lucide-react v0.
|
|
720
|
+
* @license lucide-react v0.575.0 - ISC
|
|
721
721
|
*
|
|
722
722
|
* This source code is licensed under the ISC license.
|
|
723
723
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -728,7 +728,7 @@ const __iconNode$d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
|
728
728
|
const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
|
|
729
729
|
|
|
730
730
|
/**
|
|
731
|
-
* @license lucide-react v0.
|
|
731
|
+
* @license lucide-react v0.575.0 - ISC
|
|
732
732
|
*
|
|
733
733
|
* This source code is licensed under the ISC license.
|
|
734
734
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -739,7 +739,7 @@ const __iconNode$c = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
|
739
739
|
const ChevronUp = createLucideIcon("chevron-up", __iconNode$c);
|
|
740
740
|
|
|
741
741
|
/**
|
|
742
|
-
* @license lucide-react v0.
|
|
742
|
+
* @license lucide-react v0.575.0 - ISC
|
|
743
743
|
*
|
|
744
744
|
* This source code is licensed under the ISC license.
|
|
745
745
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -753,7 +753,7 @@ const __iconNode$b = [
|
|
|
753
753
|
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$b);
|
|
754
754
|
|
|
755
755
|
/**
|
|
756
|
-
* @license lucide-react v0.
|
|
756
|
+
* @license lucide-react v0.575.0 - ISC
|
|
757
757
|
*
|
|
758
758
|
* This source code is licensed under the ISC license.
|
|
759
759
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -768,7 +768,7 @@ const __iconNode$a = [
|
|
|
768
768
|
const CircleAlert = createLucideIcon("circle-alert", __iconNode$a);
|
|
769
769
|
|
|
770
770
|
/**
|
|
771
|
-
* @license lucide-react v0.
|
|
771
|
+
* @license lucide-react v0.575.0 - ISC
|
|
772
772
|
*
|
|
773
773
|
* This source code is licensed under the ISC license.
|
|
774
774
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -782,7 +782,7 @@ const __iconNode$9 = [
|
|
|
782
782
|
const CircleCheck = createLucideIcon("circle-check", __iconNode$9);
|
|
783
783
|
|
|
784
784
|
/**
|
|
785
|
-
* @license lucide-react v0.
|
|
785
|
+
* @license lucide-react v0.575.0 - ISC
|
|
786
786
|
*
|
|
787
787
|
* This source code is licensed under the ISC license.
|
|
788
788
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -797,7 +797,7 @@ const __iconNode$8 = [
|
|
|
797
797
|
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$8);
|
|
798
798
|
|
|
799
799
|
/**
|
|
800
|
-
* @license lucide-react v0.
|
|
800
|
+
* @license lucide-react v0.575.0 - ISC
|
|
801
801
|
*
|
|
802
802
|
* This source code is licensed under the ISC license.
|
|
803
803
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -812,7 +812,7 @@ const __iconNode$7 = [
|
|
|
812
812
|
const Columns3 = createLucideIcon("columns-3", __iconNode$7);
|
|
813
813
|
|
|
814
814
|
/**
|
|
815
|
-
* @license lucide-react v0.
|
|
815
|
+
* @license lucide-react v0.575.0 - ISC
|
|
816
816
|
*
|
|
817
817
|
* This source code is licensed under the ISC license.
|
|
818
818
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -827,7 +827,7 @@ const __iconNode$6 = [
|
|
|
827
827
|
const Info = createLucideIcon("info", __iconNode$6);
|
|
828
828
|
|
|
829
829
|
/**
|
|
830
|
-
* @license lucide-react v0.
|
|
830
|
+
* @license lucide-react v0.575.0 - ISC
|
|
831
831
|
*
|
|
832
832
|
* This source code is licensed under the ISC license.
|
|
833
833
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -842,7 +842,7 @@ const __iconNode$5 = [
|
|
|
842
842
|
const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
843
843
|
|
|
844
844
|
/**
|
|
845
|
-
* @license lucide-react v0.
|
|
845
|
+
* @license lucide-react v0.575.0 - ISC
|
|
846
846
|
*
|
|
847
847
|
* This source code is licensed under the ISC license.
|
|
848
848
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -856,7 +856,7 @@ const __iconNode$4 = [
|
|
|
856
856
|
const Plus = createLucideIcon("plus", __iconNode$4);
|
|
857
857
|
|
|
858
858
|
/**
|
|
859
|
-
* @license lucide-react v0.
|
|
859
|
+
* @license lucide-react v0.575.0 - ISC
|
|
860
860
|
*
|
|
861
861
|
* This source code is licensed under the ISC license.
|
|
862
862
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -870,7 +870,7 @@ const __iconNode$3 = [
|
|
|
870
870
|
const Search = createLucideIcon("search", __iconNode$3);
|
|
871
871
|
|
|
872
872
|
/**
|
|
873
|
-
* @license lucide-react v0.
|
|
873
|
+
* @license lucide-react v0.575.0 - ISC
|
|
874
874
|
*
|
|
875
875
|
* This source code is licensed under the ISC license.
|
|
876
876
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -887,7 +887,7 @@ const __iconNode$2 = [
|
|
|
887
887
|
const Trash2 = createLucideIcon("trash-2", __iconNode$2);
|
|
888
888
|
|
|
889
889
|
/**
|
|
890
|
-
* @license lucide-react v0.
|
|
890
|
+
* @license lucide-react v0.575.0 - ISC
|
|
891
891
|
*
|
|
892
892
|
* This source code is licensed under the ISC license.
|
|
893
893
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -906,7 +906,7 @@ const __iconNode$1 = [
|
|
|
906
906
|
const WifiOff = createLucideIcon("wifi-off", __iconNode$1);
|
|
907
907
|
|
|
908
908
|
/**
|
|
909
|
-
* @license lucide-react v0.
|
|
909
|
+
* @license lucide-react v0.575.0 - ISC
|
|
910
910
|
*
|
|
911
911
|
* This source code is licensed under the ISC license.
|
|
912
912
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -1439,7 +1439,7 @@ const LabelContainer$4 = styles.styled('div')(({ size = 'medium' }) => ({
|
|
|
1439
1439
|
flexDirection: 'column',
|
|
1440
1440
|
gap: size === 'medium' ? 2 : 0,
|
|
1441
1441
|
}));
|
|
1442
|
-
const Label$
|
|
1442
|
+
const Label$4 = styles.styled('span')(({ theme, size = 'medium' }) => ({
|
|
1443
1443
|
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
1444
1444
|
? neoDesign.typography.fontSize.xs
|
|
1445
1445
|
: size === 'small'
|
|
@@ -1459,6 +1459,8 @@ const HelperText$2 = styles.styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
1459
1459
|
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1460
1460
|
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
1461
1461
|
}));
|
|
1462
|
+
// Figma-exact border radius for xs checkbox — no matching design token
|
|
1463
|
+
const FIGMA_XS_BORDER_RADIUS = 1;
|
|
1462
1464
|
const StyledCheckbox = styles.styled(Checkbox, {
|
|
1463
1465
|
shouldForwardProp: prop => prop !== 'size',
|
|
1464
1466
|
})(({ size = 'medium' }) => {
|
|
@@ -1466,8 +1468,7 @@ const StyledCheckbox = styles.styled(Checkbox, {
|
|
|
1466
1468
|
const sizeConfig = {
|
|
1467
1469
|
xs: {
|
|
1468
1470
|
size: 12,
|
|
1469
|
-
|
|
1470
|
-
borderRadius: 1, // From Figma: 1px for xs
|
|
1471
|
+
borderRadius: FIGMA_XS_BORDER_RADIUS,
|
|
1471
1472
|
},
|
|
1472
1473
|
small: {
|
|
1473
1474
|
size: 16,
|
|
@@ -1588,7 +1589,7 @@ const NeoCheckbox = ({ size = 'medium', label, helperText, disabled, icon, check
|
|
|
1588
1589
|
return (jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }));
|
|
1589
1590
|
}
|
|
1590
1591
|
// With label, wrap in container for proper layout
|
|
1591
|
-
return (jsxRuntime.jsxs(CheckboxContainer, { disabled: disabled, children: [jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxRuntime.jsxs(LabelContainer$4, { size: size, children: [label && jsxRuntime.jsx(Label$
|
|
1592
|
+
return (jsxRuntime.jsxs(CheckboxContainer, { disabled: disabled, children: [jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxRuntime.jsxs(LabelContainer$4, { size: size, children: [label && jsxRuntime.jsx(Label$4, { size: size, children: label }), helperText && jsxRuntime.jsx(HelperText$2, { size: size, children: helperText })] })] }));
|
|
1592
1593
|
};
|
|
1593
1594
|
NeoCheckbox.displayName = 'NeoCheckbox';
|
|
1594
1595
|
|
|
@@ -1634,7 +1635,9 @@ const StyledButtonBase = styles.styled(ButtonBase, {
|
|
|
1634
1635
|
width: isMultiline ? '100%' : 'fit-content',
|
|
1635
1636
|
maxWidth: isMultiline ? '100%' : 'none',
|
|
1636
1637
|
overflowX: isMultiline ? 'auto' : 'visible',
|
|
1637
|
-
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1638
|
+
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1639
|
+
? sizeStyles.paddingMultiline
|
|
1640
|
+
: sizeStyles.paddingSingleLine,
|
|
1638
1641
|
paddingRight: isMultiline ? theme.spacing(7) : undefined, // Extra space for copy button in multiline only
|
|
1639
1642
|
fontSize: sizeStyles.fontSize,
|
|
1640
1643
|
fontFamily: neoDesign.typography.fontFamily.code,
|
|
@@ -1758,13 +1761,14 @@ const ColumnItemContainer = styles.styled(Box)(({ theme }) => ({
|
|
|
1758
1761
|
paddingLeft: theme.spacing(0.75),
|
|
1759
1762
|
paddingRight: theme.spacing(0.75),
|
|
1760
1763
|
}));
|
|
1764
|
+
// Figma-exact border radius for menu items — no matching design token
|
|
1765
|
+
const MENU_ITEM_BORDER_RADIUS = 6;
|
|
1761
1766
|
const MenuItemContent$1 = styles.styled('div')(({ theme }) => ({
|
|
1762
1767
|
display: 'flex',
|
|
1763
1768
|
alignItems: 'center',
|
|
1764
1769
|
gap: theme.spacing(1),
|
|
1765
1770
|
padding: theme.spacing(1),
|
|
1766
|
-
|
|
1767
|
-
borderRadius: 6,
|
|
1771
|
+
borderRadius: MENU_ITEM_BORDER_RADIUS,
|
|
1768
1772
|
width: '100%',
|
|
1769
1773
|
'&:hover': {
|
|
1770
1774
|
backgroundColor: neoDesign.semanticColors.surfaces.listHover,
|
|
@@ -1908,7 +1912,7 @@ const LabelContainer$3 = styles.styled('div')({
|
|
|
1908
1912
|
gap: neoDesign.spacing.spacing_1,
|
|
1909
1913
|
minWidth: 0,
|
|
1910
1914
|
});
|
|
1911
|
-
const Label$
|
|
1915
|
+
const Label$3 = styles.styled('span')({
|
|
1912
1916
|
color: neoDesign.semanticColors.icons.default,
|
|
1913
1917
|
flexShrink: 0,
|
|
1914
1918
|
});
|
|
@@ -1960,7 +1964,7 @@ const Shortcut = styles.styled('span')(({ theme }) => ({
|
|
|
1960
1964
|
* ```
|
|
1961
1965
|
*/
|
|
1962
1966
|
const NeoMenuItem = ({ icon, shortcut, secondaryText, children, ...props }) => {
|
|
1963
|
-
return (jsxRuntime.jsx(StyledMenuItem, { ...props, children: jsxRuntime.jsxs(MenuItemContent, { children: [icon && jsxRuntime.jsx(IconWrapper$1, { children: icon }), jsxRuntime.jsxs(LabelContainer$3, { children: [jsxRuntime.jsx(Label$
|
|
1967
|
+
return (jsxRuntime.jsx(StyledMenuItem, { ...props, children: jsxRuntime.jsxs(MenuItemContent, { children: [icon && jsxRuntime.jsx(IconWrapper$1, { children: icon }), jsxRuntime.jsxs(LabelContainer$3, { children: [jsxRuntime.jsx(Label$3, { children: children }), secondaryText && jsxRuntime.jsx(SecondaryLabel, { children: secondaryText })] }), shortcut && jsxRuntime.jsx(Shortcut, { children: shortcut })] }) }));
|
|
1964
1968
|
};
|
|
1965
1969
|
NeoMenuItem.displayName = 'NeoMenuItem';
|
|
1966
1970
|
|
|
@@ -2476,111 +2480,85 @@ function NeoDataGridColumnsButton() {
|
|
|
2476
2480
|
}
|
|
2477
2481
|
NeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton';
|
|
2478
2482
|
|
|
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' && {
|
|
2483
|
+
const sizeStyles = {
|
|
2484
|
+
small: {
|
|
2486
2485
|
height: 16,
|
|
2487
2486
|
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
2488
2487
|
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
2489
|
-
}
|
|
2490
|
-
|
|
2488
|
+
},
|
|
2489
|
+
medium: {
|
|
2491
2490
|
height: 18,
|
|
2492
2491
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2493
2492
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2494
|
-
}
|
|
2495
|
-
|
|
2493
|
+
},
|
|
2494
|
+
large: {
|
|
2496
2495
|
height: 20,
|
|
2497
2496
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2498
2497
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2499
|
-
}),
|
|
2500
|
-
[`& .${Chip.chipClasses.label}`]: {
|
|
2501
|
-
padding: 0,
|
|
2502
2498
|
},
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2499
|
+
};
|
|
2500
|
+
const outlinedColorStyles = {
|
|
2501
|
+
default: {
|
|
2506
2502
|
backgroundColor: neoDesign.semanticColors.status.neutral.light,
|
|
2507
2503
|
color: neoDesign.semanticColors.status.neutral.dark,
|
|
2508
|
-
borderColor: neoDesign.colors.grey[200],
|
|
2509
|
-
}
|
|
2510
|
-
|
|
2511
|
-
...(variant === 'outlined' &&
|
|
2512
|
-
color === 'error' && {
|
|
2504
|
+
borderColor: neoDesign.colors.grey[200],
|
|
2505
|
+
},
|
|
2506
|
+
error: {
|
|
2513
2507
|
backgroundColor: neoDesign.semanticColors.status.error.light,
|
|
2514
2508
|
color: neoDesign.semanticColors.status.error.dark,
|
|
2515
|
-
borderColor: neoDesign.colors.red[100],
|
|
2516
|
-
}
|
|
2517
|
-
|
|
2518
|
-
...(variant === 'outlined' &&
|
|
2519
|
-
color === 'warning' && {
|
|
2509
|
+
borderColor: neoDesign.colors.red[100],
|
|
2510
|
+
},
|
|
2511
|
+
warning: {
|
|
2520
2512
|
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
2521
2513
|
color: neoDesign.semanticColors.status.warning.dark,
|
|
2522
|
-
borderColor: neoDesign.colors.orange[100],
|
|
2523
|
-
}
|
|
2524
|
-
|
|
2525
|
-
...(variant === 'outlined' &&
|
|
2526
|
-
color === 'success' && {
|
|
2514
|
+
borderColor: neoDesign.colors.orange[100],
|
|
2515
|
+
},
|
|
2516
|
+
success: {
|
|
2527
2517
|
backgroundColor: neoDesign.semanticColors.status.success.light,
|
|
2528
2518
|
color: neoDesign.semanticColors.status.success.dark,
|
|
2529
|
-
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2530
|
-
}
|
|
2531
|
-
|
|
2532
|
-
...(variant === 'outlined' &&
|
|
2533
|
-
color === 'info' && {
|
|
2519
|
+
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2520
|
+
},
|
|
2521
|
+
info: {
|
|
2534
2522
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
2535
2523
|
color: neoDesign.semanticColors.status.info.dark,
|
|
2536
|
-
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2537
|
-
}
|
|
2538
|
-
|
|
2539
|
-
...(variant === 'outlined' &&
|
|
2540
|
-
color === 'violet' && {
|
|
2524
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2525
|
+
},
|
|
2526
|
+
violet: {
|
|
2541
2527
|
backgroundColor: `${neoDesign.colors.violet[100]}66`, // rgba(235,213,241,0.4)
|
|
2542
2528
|
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
|
|
2529
|
+
borderColor: neoDesign.colors.violet[100],
|
|
2530
|
+
},
|
|
2531
|
+
beta: {
|
|
2532
|
+
backgroundColor: neoDesign.colors.digitalBlue[100],
|
|
2533
|
+
color: neoDesign.colors.digitalBlue[400],
|
|
2534
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2535
|
+
},
|
|
2536
|
+
};
|
|
2537
|
+
const filledColorStyles = {
|
|
2538
|
+
default: neoDesign.semanticColors.status.neutral.medium,
|
|
2539
|
+
error: neoDesign.semanticColors.status.error.medium,
|
|
2540
|
+
warning: neoDesign.semanticColors.status.warning.medium,
|
|
2541
|
+
success: neoDesign.semanticColors.status.success.medium,
|
|
2542
|
+
info: neoDesign.semanticColors.status.info.medium,
|
|
2543
|
+
violet: neoDesign.colors.violet[500],
|
|
2544
|
+
beta: neoDesign.colors.digitalBlue[300],
|
|
2545
|
+
};
|
|
2546
|
+
const StyledChip$1 = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
2547
|
+
padding: 0,
|
|
2548
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
2549
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
2550
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
2551
|
+
...(size && sizeStyles[size]),
|
|
2552
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
2553
|
+
padding: 0,
|
|
2554
|
+
},
|
|
2555
|
+
...(variant === 'outlined' &&
|
|
2556
|
+
color &&
|
|
2557
|
+
outlinedColorStyles[color]),
|
|
2581
2558
|
...(variant === 'filled' &&
|
|
2582
|
-
color
|
|
2583
|
-
|
|
2559
|
+
color &&
|
|
2560
|
+
color in filledColorStyles && {
|
|
2561
|
+
backgroundColor: filledColorStyles[color],
|
|
2584
2562
|
color: theme.palette.common.white,
|
|
2585
2563
|
border: 'none',
|
|
2586
2564
|
}),
|
|
@@ -2593,11 +2571,11 @@ const StyledChip = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2593
2571
|
* Figma Props Mapping:
|
|
2594
2572
|
* - m (sm|md|lg) → size (small|medium|large)
|
|
2595
2573
|
* - type (light|dark) → variant (outlined|filled)
|
|
2596
|
-
* - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)
|
|
2574
|
+
* - state (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2597
2575
|
* - Label text → label prop
|
|
2598
2576
|
*/
|
|
2599
2577
|
const NeoTag = ({ size = 'small', variant = 'outlined', ...props }) => {
|
|
2600
|
-
return jsxRuntime.jsx(StyledChip, { size: size, variant: variant, ...props });
|
|
2578
|
+
return jsxRuntime.jsx(StyledChip$1, { size: size, variant: variant, ...props });
|
|
2601
2579
|
};
|
|
2602
2580
|
NeoTag.displayName = 'NeoTag';
|
|
2603
2581
|
|
|
@@ -3558,6 +3536,102 @@ const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...prop
|
|
|
3558
3536
|
};
|
|
3559
3537
|
NeoDot.displayName = 'NeoDot';
|
|
3560
3538
|
|
|
3539
|
+
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}`;
|
|
3540
|
+
const filterChipOnlyProps = ['selected', 'expanded', 'selectedLabel', 'count', 'onClear'];
|
|
3541
|
+
const StyledChip = styles.styled(Chip, {
|
|
3542
|
+
shouldForwardProp: prop => !filterChipOnlyProps.includes(prop),
|
|
3543
|
+
})(({ theme, selected }) => ({
|
|
3544
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
3545
|
+
border: `1px solid ${neoDesign.semanticColors.buttons.secondary.defaultBorder}`,
|
|
3546
|
+
backgroundColor: selected
|
|
3547
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3548
|
+
: neoDesign.semanticColors.surfaces.white,
|
|
3549
|
+
minHeight: 40,
|
|
3550
|
+
padding: `${neoDesign.spacing.spacing_3_4}px ${neoDesign.spacing.spacing_1_1_2}px`,
|
|
3551
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3552
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3553
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3554
|
+
lineHeight: 1,
|
|
3555
|
+
color: neoDesign.semanticColors.typography.body,
|
|
3556
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
3557
|
+
padding: 0,
|
|
3558
|
+
overflow: 'visible',
|
|
3559
|
+
display: 'flex',
|
|
3560
|
+
alignItems: 'center',
|
|
3561
|
+
},
|
|
3562
|
+
[`& .${Chip.chipClasses.deleteIcon}`]: {
|
|
3563
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3564
|
+
width: 24,
|
|
3565
|
+
height: 24,
|
|
3566
|
+
margin: 0,
|
|
3567
|
+
flexShrink: 0,
|
|
3568
|
+
'&:hover': {
|
|
3569
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3570
|
+
},
|
|
3571
|
+
},
|
|
3572
|
+
'&:hover': {
|
|
3573
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground,
|
|
3574
|
+
},
|
|
3575
|
+
[`&.${Chip.chipClasses.focusVisible}`]: {
|
|
3576
|
+
boxShadow: focusRing,
|
|
3577
|
+
backgroundColor: selected
|
|
3578
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3579
|
+
: neoDesign.semanticColors.surfaces.white,
|
|
3580
|
+
},
|
|
3581
|
+
}));
|
|
3582
|
+
const LabelContent = styles.styled('span')({
|
|
3583
|
+
display: 'inline-flex',
|
|
3584
|
+
alignItems: 'center',
|
|
3585
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3586
|
+
});
|
|
3587
|
+
const TextStack = styles.styled('span')({
|
|
3588
|
+
display: 'flex',
|
|
3589
|
+
flexDirection: 'column',
|
|
3590
|
+
alignItems: 'flex-start',
|
|
3591
|
+
justifyContent: 'center',
|
|
3592
|
+
gap: neoDesign.spacing.spacing_1_4,
|
|
3593
|
+
});
|
|
3594
|
+
const HeaderLabel = styles.styled('span')(({ theme }) => ({
|
|
3595
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xxs),
|
|
3596
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
3597
|
+
lineHeight: '120%',
|
|
3598
|
+
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
3599
|
+
}));
|
|
3600
|
+
const SelectedLabel = styles.styled('span')(({ theme }) => ({
|
|
3601
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3602
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3603
|
+
lineHeight: 1,
|
|
3604
|
+
color: neoDesign.semanticColors.buttons.secondary.default,
|
|
3605
|
+
}));
|
|
3606
|
+
const CountBadge = styles.styled('span')(({ theme }) => ({
|
|
3607
|
+
display: 'inline-flex',
|
|
3608
|
+
alignItems: 'center',
|
|
3609
|
+
justifyContent: 'center',
|
|
3610
|
+
minWidth: 16,
|
|
3611
|
+
height: 16,
|
|
3612
|
+
padding: `0 ${neoDesign.spacing.spacing_1_2}px`,
|
|
3613
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
3614
|
+
backgroundColor: neoDesign.semanticColors.brand,
|
|
3615
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
3616
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
3617
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3618
|
+
lineHeight: 1,
|
|
3619
|
+
boxSizing: 'border-box',
|
|
3620
|
+
}));
|
|
3621
|
+
/**
|
|
3622
|
+
* NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
|
|
3623
|
+
*
|
|
3624
|
+
* @example
|
|
3625
|
+
* <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
|
|
3626
|
+
*
|
|
3627
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
|
|
3628
|
+
*/
|
|
3629
|
+
const NeoFilterChip = ({ label, selected = false, expanded, selectedLabel, count = 0, onClear, onClick, ...props }) => {
|
|
3630
|
+
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);
|
|
3631
|
+
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 }));
|
|
3632
|
+
};
|
|
3633
|
+
NeoFilterChip.displayName = 'NeoFilterChip';
|
|
3634
|
+
|
|
3561
3635
|
const SpinnerWrapper = styles.styled('div')({
|
|
3562
3636
|
width: 24,
|
|
3563
3637
|
height: 24,
|
|
@@ -3798,6 +3872,31 @@ const NeoFooter = ({ variant = 'pagination', showShadow = false, loading = false
|
|
|
3798
3872
|
};
|
|
3799
3873
|
NeoFooter.displayName = 'NeoFooter';
|
|
3800
3874
|
|
|
3875
|
+
const customProps$1 = ['iconSize'];
|
|
3876
|
+
const StyledIconWrapper = styles.styled('div', {
|
|
3877
|
+
shouldForwardProp: prop => !customProps$1.includes(prop),
|
|
3878
|
+
})(({ iconSize }) => ({
|
|
3879
|
+
display: 'inline-flex',
|
|
3880
|
+
alignItems: 'center',
|
|
3881
|
+
justifyContent: 'center',
|
|
3882
|
+
width: iconSize,
|
|
3883
|
+
height: iconSize,
|
|
3884
|
+
flexShrink: 0,
|
|
3885
|
+
'& svg': {
|
|
3886
|
+
width: iconSize,
|
|
3887
|
+
height: iconSize,
|
|
3888
|
+
},
|
|
3889
|
+
}));
|
|
3890
|
+
/**
|
|
3891
|
+
* NeoIconWrapper - Flex-centered container that sizes icons
|
|
3892
|
+
*
|
|
3893
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4061-9955
|
|
3894
|
+
*/
|
|
3895
|
+
const NeoIconWrapper = ({ size = 20, children, ...props }) => {
|
|
3896
|
+
return (jsxRuntime.jsx(StyledIconWrapper, { iconSize: size, ...props, children: children }));
|
|
3897
|
+
};
|
|
3898
|
+
NeoIconWrapper.displayName = 'NeoIconWrapper';
|
|
3899
|
+
|
|
3801
3900
|
/**
|
|
3802
3901
|
* NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality
|
|
3803
3902
|
*
|
|
@@ -4432,11 +4531,11 @@ NeoListItemButton.displayName = 'NeoListItemButton';
|
|
|
4432
4531
|
* Focus ring box-shadow using Neo design tokens
|
|
4433
4532
|
* Combines focusWhite1 (inner white ring) and focusBlue2 (outer blue ring)
|
|
4434
4533
|
*/
|
|
4435
|
-
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}`;
|
|
4534
|
+
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}`;
|
|
4436
4535
|
/**
|
|
4437
4536
|
* Card box-shadow using Neo design tokens for hover and selected states
|
|
4438
4537
|
*/
|
|
4439
|
-
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}`;
|
|
4538
|
+
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}`;
|
|
4440
4539
|
/**
|
|
4441
4540
|
* Styled Card component with Neo design tokens
|
|
4442
4541
|
*/
|
|
@@ -4452,16 +4551,16 @@ const StyledCard = styles.styled(MuiCard, {
|
|
|
4452
4551
|
backgroundColor: neoDesign.semanticColors.surfaces.card,
|
|
4453
4552
|
border: `1px solid ${selected ? neoDesign.semanticColors.border.tabActive : neoDesign.semanticColors.border.card}`,
|
|
4454
4553
|
borderRadius: neoDesign.borderRadius.xS,
|
|
4455
|
-
boxShadow: selected ? activeShadow : 'none',
|
|
4554
|
+
boxShadow: selected ? activeShadow$1 : 'none',
|
|
4456
4555
|
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
4457
4556
|
cursor: 'pointer',
|
|
4458
4557
|
'&:hover': {
|
|
4459
4558
|
borderColor: neoDesign.semanticColors.border.tabActive,
|
|
4460
|
-
boxShadow: activeShadow,
|
|
4559
|
+
boxShadow: activeShadow$1,
|
|
4461
4560
|
},
|
|
4462
4561
|
'&:focus-visible': {
|
|
4463
4562
|
borderColor: neoDesign.semanticColors.border.tabActive,
|
|
4464
|
-
boxShadow: focusRingShadow,
|
|
4563
|
+
boxShadow: focusRingShadow$1,
|
|
4465
4564
|
outline: 'none',
|
|
4466
4565
|
},
|
|
4467
4566
|
...(disabled && {
|
|
@@ -4521,7 +4620,7 @@ const Title = styles.styled('p')(({ theme }) => ({
|
|
|
4521
4620
|
/**
|
|
4522
4621
|
* Description text
|
|
4523
4622
|
*/
|
|
4524
|
-
const Description = styles.styled('p')(({ theme }) => ({
|
|
4623
|
+
const Description$1 = styles.styled('p')(({ theme }) => ({
|
|
4525
4624
|
margin: 0,
|
|
4526
4625
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
4527
4626
|
fontWeight: neoDesign.typography.fontWeight.regular, // 400
|
|
@@ -4576,10 +4675,131 @@ const Description = styles.styled('p')(({ theme }) => ({
|
|
|
4576
4675
|
* - typography.fontWeight.regular (400) - Description
|
|
4577
4676
|
*/
|
|
4578
4677
|
const NeoMarketplaceCard = ({ logo, recipeCount, title, description, selected = false, disabled = false, onClick, ...props }) => {
|
|
4579
|
-
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 })] })] }));
|
|
4678
|
+
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 })] })] }));
|
|
4580
4679
|
};
|
|
4581
4680
|
NeoMarketplaceCard.displayName = 'NeoMarketplaceCard';
|
|
4582
4681
|
|
|
4682
|
+
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}`;
|
|
4683
|
+
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}`;
|
|
4684
|
+
const StyledLargeCard = styles.styled(MuiCard, {
|
|
4685
|
+
shouldForwardProp: prop => prop !== 'cardState' && prop !== 'cardTheme',
|
|
4686
|
+
})(({ cardState = 'default', cardTheme = 'light' }) => {
|
|
4687
|
+
const isLight = cardTheme === 'light';
|
|
4688
|
+
const isActive = cardState === 'active';
|
|
4689
|
+
const isDisabled = cardState === 'disabled';
|
|
4690
|
+
const isFocused = cardState === 'focused';
|
|
4691
|
+
const activeBorderColor = isLight ? neoDesign.semanticColors.border.tabActive : neoDesign.colors.digitalGreen[300];
|
|
4692
|
+
const defaultBorderColor = isLight
|
|
4693
|
+
? neoDesign.semanticColors.border.card
|
|
4694
|
+
: `${neoDesign.semanticColors.border.card}80`;
|
|
4695
|
+
return {
|
|
4696
|
+
width: 340,
|
|
4697
|
+
height: 162,
|
|
4698
|
+
display: 'flex',
|
|
4699
|
+
flexDirection: 'column',
|
|
4700
|
+
justifyContent: 'space-between',
|
|
4701
|
+
alignItems: 'flex-start',
|
|
4702
|
+
padding: neoDesign.spacing.spacing_2,
|
|
4703
|
+
borderRadius: neoDesign.borderRadius.xS,
|
|
4704
|
+
backgroundColor: isLight ? neoDesign.semanticColors.surfaces.card : neoDesign.colors.grey[800],
|
|
4705
|
+
border: `1px solid ${isActive || isFocused ? activeBorderColor : defaultBorderColor}`,
|
|
4706
|
+
boxShadow: isActive ? activeShadow : isFocused ? focusRingShadow : 'none',
|
|
4707
|
+
overflow: 'hidden',
|
|
4708
|
+
'&:focus-visible': {
|
|
4709
|
+
borderColor: isLight ? neoDesign.semanticColors.border.tabActive : neoDesign.colors.digitalGreen[300],
|
|
4710
|
+
boxShadow: focusRingShadow,
|
|
4711
|
+
outline: 'none',
|
|
4712
|
+
},
|
|
4713
|
+
...(isDisabled && {
|
|
4714
|
+
opacity: 0.5,
|
|
4715
|
+
pointerEvents: 'none',
|
|
4716
|
+
cursor: 'not-allowed',
|
|
4717
|
+
}),
|
|
4718
|
+
};
|
|
4719
|
+
});
|
|
4720
|
+
const TopSection = styles.styled('div')({
|
|
4721
|
+
display: 'flex',
|
|
4722
|
+
flexDirection: 'column',
|
|
4723
|
+
gap: neoDesign.spacing.spacing_2,
|
|
4724
|
+
alignItems: 'flex-start',
|
|
4725
|
+
width: '100%',
|
|
4726
|
+
flexShrink: 0,
|
|
4727
|
+
});
|
|
4728
|
+
const HeaderRow = styles.styled('div')({
|
|
4729
|
+
display: 'flex',
|
|
4730
|
+
gap: neoDesign.spacing.spacing_1,
|
|
4731
|
+
alignItems: 'center',
|
|
4732
|
+
flexShrink: 0,
|
|
4733
|
+
});
|
|
4734
|
+
const HeaderSlot = styles.styled('div')({
|
|
4735
|
+
display: 'flex',
|
|
4736
|
+
flexDirection: 'column',
|
|
4737
|
+
alignItems: 'center',
|
|
4738
|
+
justifyContent: 'center',
|
|
4739
|
+
width: 20,
|
|
4740
|
+
height: 20,
|
|
4741
|
+
flexShrink: 0,
|
|
4742
|
+
});
|
|
4743
|
+
const HeaderTitle = styles.styled('span', {
|
|
4744
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4745
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4746
|
+
fontFamily: `${neoDesign.typography.fontFamily.heading}, sans-serif`,
|
|
4747
|
+
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
4748
|
+
fontSize: neoDesign.typography.fontSize.h6,
|
|
4749
|
+
lineHeight: 1.4,
|
|
4750
|
+
color: cardTheme === 'light' ? neoDesign.colors.grey[800] : neoDesign.semanticColors.surfaces.white,
|
|
4751
|
+
flexShrink: 0,
|
|
4752
|
+
}));
|
|
4753
|
+
const Description = styles.styled('p', {
|
|
4754
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4755
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4756
|
+
fontFamily: `${neoDesign.typography.fontFamily.body}, sans-serif`,
|
|
4757
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
4758
|
+
fontSize: neoDesign.typography.fontSize.xs,
|
|
4759
|
+
lineHeight: 1.5,
|
|
4760
|
+
color: cardTheme === 'light' ? neoDesign.colors.grey[800] : neoDesign.semanticColors.surfaces.white,
|
|
4761
|
+
margin: 0,
|
|
4762
|
+
minWidth: '100%',
|
|
4763
|
+
wordWrap: 'break-word',
|
|
4764
|
+
}));
|
|
4765
|
+
const ButtonsRow = styles.styled('div')({
|
|
4766
|
+
display: 'flex',
|
|
4767
|
+
gap: neoDesign.spacing.spacing_3,
|
|
4768
|
+
alignItems: 'flex-start',
|
|
4769
|
+
flexShrink: 0,
|
|
4770
|
+
});
|
|
4771
|
+
/**
|
|
4772
|
+
* NeoMarketplaceLargeCard - A large marketplace card with state and theme variants
|
|
4773
|
+
*
|
|
4774
|
+
* A 340x162px card with optional icon, gel brand icon, title, description, and action buttons.
|
|
4775
|
+
* Icon, gel, and title display inline in a header row.
|
|
4776
|
+
* Supports 4 states (default, active, disabled, focused) and 2 themes (light, dark).
|
|
4777
|
+
*
|
|
4778
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=5925-11
|
|
4779
|
+
*
|
|
4780
|
+
* Figma Props Mapping:
|
|
4781
|
+
* - Property 1 → state (default/active/disabled/focused)
|
|
4782
|
+
* - Property 2 → cardTheme (light/dark)
|
|
4783
|
+
* - Show Icon → showIcon
|
|
4784
|
+
* - Show gel → showGel
|
|
4785
|
+
* - show buttons → showButtons
|
|
4786
|
+
*
|
|
4787
|
+
* Design Tokens Used:
|
|
4788
|
+
* - semanticColors.surfaces.card (#ffffff) - Light theme background
|
|
4789
|
+
* - colors.grey[800] (#1f2937) - Dark theme background
|
|
4790
|
+
* - semanticColors.border.card (#d1d5db) - Default border (50% opacity on dark)
|
|
4791
|
+
* - semanticColors.border.tabActive (#2f42ff) - Active/focused border (light theme)
|
|
4792
|
+
* - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
|
|
4793
|
+
* - borderRadius.xS (4px) - Corner radius
|
|
4794
|
+
* - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
|
|
4795
|
+
* - shadows.card - Active state shadow
|
|
4796
|
+
*/
|
|
4797
|
+
const NeoMarketplaceLargeCard = ({ state = 'default', cardTheme = 'light', showIcon = true, showGel = true, showButtons = true, icon, gel, title, children, actions, onClick, ...props }) => {
|
|
4798
|
+
const isDisabled = state === 'disabled';
|
|
4799
|
+
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 })] }));
|
|
4800
|
+
};
|
|
4801
|
+
NeoMarketplaceLargeCard.displayName = 'NeoMarketplaceLargeCard';
|
|
4802
|
+
|
|
4583
4803
|
const StyledMenu = styles.styled(Menu)(({ theme }) => ({
|
|
4584
4804
|
[`& .${Paper.paperClasses.root}`]: {
|
|
4585
4805
|
backgroundColor: neoDesign.semanticColors.surfaces.white,
|
|
@@ -4823,6 +5043,87 @@ const NeoModalFooter = ({ leadingContent, children }) => {
|
|
|
4823
5043
|
};
|
|
4824
5044
|
NeoModalFooter.displayName = 'NeoModalFooter';
|
|
4825
5045
|
|
|
5046
|
+
const customProps = ['selected'];
|
|
5047
|
+
const StyledRoot = styles.styled(ButtonBase, {
|
|
5048
|
+
shouldForwardProp: prop => !customProps.includes(prop),
|
|
5049
|
+
})(({ selected }) => ({
|
|
5050
|
+
display: 'flex',
|
|
5051
|
+
flexDirection: 'column',
|
|
5052
|
+
gap: neoDesign.spacing.spacing_1_4, // 2px
|
|
5053
|
+
alignItems: 'center',
|
|
5054
|
+
justifyContent: 'center',
|
|
5055
|
+
paddingTop: neoDesign.spacing.spacing_1, // 8px
|
|
5056
|
+
paddingBottom: neoDesign.spacing.spacing_1, // 8px
|
|
5057
|
+
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
5058
|
+
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
5059
|
+
borderRadius: neoDesign.borderRadius.xS, // 4px
|
|
5060
|
+
width: 95,
|
|
5061
|
+
cursor: 'pointer',
|
|
5062
|
+
textDecoration: 'none',
|
|
5063
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5064
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground, // #F2F3FF
|
|
5065
|
+
},
|
|
5066
|
+
'&:hover .neo-nav-label': {
|
|
5067
|
+
color: neoDesign.semanticColors.buttons.primary.hover, // #1E2EC2
|
|
5068
|
+
},
|
|
5069
|
+
...(selected && {
|
|
5070
|
+
'& .neo-nav-icon-padding': {
|
|
5071
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`, // rgba(220,224,255,0.75)
|
|
5072
|
+
},
|
|
5073
|
+
'& .neo-nav-label': {
|
|
5074
|
+
color: neoDesign.semanticColors.buttons.primary.pressed, // #131E7A
|
|
5075
|
+
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
5076
|
+
},
|
|
5077
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5078
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`,
|
|
5079
|
+
},
|
|
5080
|
+
'&:hover .neo-nav-label': {
|
|
5081
|
+
color: neoDesign.semanticColors.buttons.primary.pressed,
|
|
5082
|
+
},
|
|
5083
|
+
}),
|
|
5084
|
+
}));
|
|
5085
|
+
const IconPadding = styles.styled('span')({
|
|
5086
|
+
display: 'flex',
|
|
5087
|
+
alignItems: 'center',
|
|
5088
|
+
padding: neoDesign.spacing.spacing_1, // 8px
|
|
5089
|
+
borderRadius: neoDesign.spacing.spacing_1, // 8px
|
|
5090
|
+
transition: 'background-color 150ms',
|
|
5091
|
+
});
|
|
5092
|
+
const Label$2 = styles.styled('span')(({ theme }) => ({
|
|
5093
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
5094
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
5095
|
+
fontSize: theme.typography.pxToRem(10),
|
|
5096
|
+
lineHeight: 1.2,
|
|
5097
|
+
textAlign: 'center',
|
|
5098
|
+
color: neoDesign.semanticColors.typography.navigation.default, // #1F2937
|
|
5099
|
+
width: '100%',
|
|
5100
|
+
transition: 'color 150ms',
|
|
5101
|
+
}));
|
|
5102
|
+
const TagPill = styles.styled('span')(({ theme }) => ({
|
|
5103
|
+
display: 'inline-flex',
|
|
5104
|
+
alignItems: 'center',
|
|
5105
|
+
justifyContent: 'center',
|
|
5106
|
+
height: 18,
|
|
5107
|
+
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
5108
|
+
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
5109
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
5110
|
+
backgroundColor: neoDesign.colors.digitalBlue[300], // #8D99FF
|
|
5111
|
+
color: neoDesign.semanticColors.typography.tooltip, // white
|
|
5112
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
5113
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
5114
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
5115
|
+
lineHeight: 1,
|
|
5116
|
+
}));
|
|
5117
|
+
/**
|
|
5118
|
+
* NeoNavigationItem - Vertical navigation item with icon, label, and optional tag
|
|
5119
|
+
*
|
|
5120
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
|
|
5121
|
+
*/
|
|
5122
|
+
const NeoNavigationItem = ({ icon, label, selected = false, tag, children, ...props }) => {
|
|
5123
|
+
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] }));
|
|
5124
|
+
};
|
|
5125
|
+
NeoNavigationItem.displayName = 'NeoNavigationItem';
|
|
5126
|
+
|
|
4826
5127
|
/**
|
|
4827
5128
|
* Sticky header wrapper - sticks to top when scrolling
|
|
4828
5129
|
*/
|
|
@@ -6118,6 +6419,8 @@ const NeoTooltip = ({ variant = 'light', title, description, children, arrow = f
|
|
|
6118
6419
|
};
|
|
6119
6420
|
NeoTooltip.displayName = 'NeoTooltip';
|
|
6120
6421
|
|
|
6422
|
+
// Figma-exact border radius for toggle buttons — no matching design token
|
|
6423
|
+
const TOGGLE_BUTTON_BORDER_RADIUS = 14;
|
|
6121
6424
|
const StyledToggleButtonGroup = styles.styled(ToggleButtonGroup)(({ theme }) => ({
|
|
6122
6425
|
backgroundColor: neoDesign.colors.grey[50],
|
|
6123
6426
|
padding: theme.spacing(0.625, 0.875),
|
|
@@ -6125,17 +6428,14 @@ const StyledToggleButtonGroup = styles.styled(ToggleButtonGroup)(({ theme }) =>
|
|
|
6125
6428
|
gap: 0,
|
|
6126
6429
|
[`& .${ToggleButtonGroup.toggleButtonGroupClasses.grouped}`]: {
|
|
6127
6430
|
border: 'none',
|
|
6128
|
-
|
|
6129
|
-
borderRadius: 14,
|
|
6431
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6130
6432
|
margin: 0,
|
|
6131
6433
|
'&:not(:first-of-type)': {
|
|
6132
|
-
|
|
6133
|
-
borderRadius: 14,
|
|
6434
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6134
6435
|
marginLeft: 0,
|
|
6135
6436
|
},
|
|
6136
6437
|
'&:not(:last-of-type)': {
|
|
6137
|
-
|
|
6138
|
-
borderRadius: 14,
|
|
6438
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6139
6439
|
},
|
|
6140
6440
|
},
|
|
6141
6441
|
}));
|
|
@@ -6214,14 +6514,17 @@ exports.NeoDataGridSelect = NeoSelect;
|
|
|
6214
6514
|
exports.NeoDatePicker = NeoDatePicker;
|
|
6215
6515
|
exports.NeoDivider = NeoDivider;
|
|
6216
6516
|
exports.NeoDot = NeoDot;
|
|
6517
|
+
exports.NeoFilterChip = NeoFilterChip;
|
|
6217
6518
|
exports.NeoFooter = NeoFooter;
|
|
6218
6519
|
exports.NeoIconButton = NeoIconButton;
|
|
6520
|
+
exports.NeoIconWrapper = NeoIconWrapper;
|
|
6219
6521
|
exports.NeoInfiniteScrollGrid = NeoInfiniteScrollGrid;
|
|
6220
6522
|
exports.NeoInputField = NeoInputField;
|
|
6221
6523
|
exports.NeoListItem = NeoListItem;
|
|
6222
6524
|
exports.NeoListItemButton = NeoListItemButton;
|
|
6223
6525
|
exports.NeoLoadingSpinner = NeoLoadingSpinner;
|
|
6224
6526
|
exports.NeoMarketplaceCard = NeoMarketplaceCard;
|
|
6527
|
+
exports.NeoMarketplaceLargeCard = NeoMarketplaceLargeCard;
|
|
6225
6528
|
exports.NeoMenu = NeoMenu;
|
|
6226
6529
|
exports.NeoMenuItem = NeoMenuItem;
|
|
6227
6530
|
exports.NeoModal = NeoModal;
|
|
@@ -6229,6 +6532,7 @@ exports.NeoModalContent = NeoModalContent;
|
|
|
6229
6532
|
exports.NeoModalFooter = NeoModalFooter;
|
|
6230
6533
|
exports.NeoModalHeader = NeoModalHeader;
|
|
6231
6534
|
exports.NeoMultiBadgesCell = NeoMultiBadgesCell;
|
|
6535
|
+
exports.NeoNavigationItem = NeoNavigationItem;
|
|
6232
6536
|
exports.NeoPageContent = NeoPageContent;
|
|
6233
6537
|
exports.NeoPaginatedGrid = NeoPaginatedGrid;
|
|
6234
6538
|
exports.NeoProgressbar = NeoProgressbar;
|