@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.esm.js
CHANGED
|
@@ -147,7 +147,7 @@ const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }) => {
|
|
|
147
147
|
};
|
|
148
148
|
NeoAvatar.displayName = 'NeoAvatar';
|
|
149
149
|
|
|
150
|
-
const StyledChip$
|
|
150
|
+
const StyledChip$2 = styled(Chip)(({ theme }) => ({
|
|
151
151
|
height: 24,
|
|
152
152
|
paddingTop: spacing.spacing_1_4,
|
|
153
153
|
paddingBottom: spacing.spacing_1_4,
|
|
@@ -234,7 +234,7 @@ const StyledChip$1 = styled(Chip)(({ theme }) => ({
|
|
|
234
234
|
* - Label → label prop
|
|
235
235
|
*/
|
|
236
236
|
const NeoBadge = (props) => {
|
|
237
|
-
return jsx(StyledChip$
|
|
237
|
+
return jsx(StyledChip$2, { ...props });
|
|
238
238
|
};
|
|
239
239
|
NeoBadge.displayName = 'NeoBadge';
|
|
240
240
|
|
|
@@ -500,7 +500,7 @@ const NeoActivityIndicatorCell = ({ event = 'commit-job', secondaryEvent, scene
|
|
|
500
500
|
NeoActivityIndicatorCell.displayName = 'NeoActivityIndicatorCell';
|
|
501
501
|
|
|
502
502
|
/**
|
|
503
|
-
* @license lucide-react v0.
|
|
503
|
+
* @license lucide-react v0.575.0 - ISC
|
|
504
504
|
*
|
|
505
505
|
* This source code is licensed under the ISC license.
|
|
506
506
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -511,7 +511,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
511
511
|
}).join(" ").trim();
|
|
512
512
|
|
|
513
513
|
/**
|
|
514
|
-
* @license lucide-react v0.
|
|
514
|
+
* @license lucide-react v0.575.0 - ISC
|
|
515
515
|
*
|
|
516
516
|
* This source code is licensed under the ISC license.
|
|
517
517
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -520,7 +520,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
520
520
|
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
521
521
|
|
|
522
522
|
/**
|
|
523
|
-
* @license lucide-react v0.
|
|
523
|
+
* @license lucide-react v0.575.0 - ISC
|
|
524
524
|
*
|
|
525
525
|
* This source code is licensed under the ISC license.
|
|
526
526
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -532,7 +532,7 @@ const toCamelCase = (string) => string.replace(
|
|
|
532
532
|
);
|
|
533
533
|
|
|
534
534
|
/**
|
|
535
|
-
* @license lucide-react v0.
|
|
535
|
+
* @license lucide-react v0.575.0 - ISC
|
|
536
536
|
*
|
|
537
537
|
* This source code is licensed under the ISC license.
|
|
538
538
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -545,7 +545,7 @@ const toPascalCase = (string) => {
|
|
|
545
545
|
};
|
|
546
546
|
|
|
547
547
|
/**
|
|
548
|
-
* @license lucide-react v0.
|
|
548
|
+
* @license lucide-react v0.575.0 - ISC
|
|
549
549
|
*
|
|
550
550
|
* This source code is licensed under the ISC license.
|
|
551
551
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -564,7 +564,7 @@ var defaultAttributes = {
|
|
|
564
564
|
};
|
|
565
565
|
|
|
566
566
|
/**
|
|
567
|
-
* @license lucide-react v0.
|
|
567
|
+
* @license lucide-react v0.575.0 - ISC
|
|
568
568
|
*
|
|
569
569
|
* This source code is licensed under the ISC license.
|
|
570
570
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -580,7 +580,7 @@ const hasA11yProp = (props) => {
|
|
|
580
580
|
};
|
|
581
581
|
|
|
582
582
|
/**
|
|
583
|
-
* @license lucide-react v0.
|
|
583
|
+
* @license lucide-react v0.575.0 - ISC
|
|
584
584
|
*
|
|
585
585
|
* This source code is licensed under the ISC license.
|
|
586
586
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -618,7 +618,7 @@ const Icon = forwardRef(
|
|
|
618
618
|
);
|
|
619
619
|
|
|
620
620
|
/**
|
|
621
|
-
* @license lucide-react v0.
|
|
621
|
+
* @license lucide-react v0.575.0 - ISC
|
|
622
622
|
*
|
|
623
623
|
* This source code is licensed under the ISC license.
|
|
624
624
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -643,7 +643,7 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
643
643
|
};
|
|
644
644
|
|
|
645
645
|
/**
|
|
646
|
-
* @license lucide-react v0.
|
|
646
|
+
* @license lucide-react v0.575.0 - ISC
|
|
647
647
|
*
|
|
648
648
|
* This source code is licensed under the ISC license.
|
|
649
649
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -657,7 +657,7 @@ const __iconNode$i = [
|
|
|
657
657
|
const ArrowDown = createLucideIcon("arrow-down", __iconNode$i);
|
|
658
658
|
|
|
659
659
|
/**
|
|
660
|
-
* @license lucide-react v0.
|
|
660
|
+
* @license lucide-react v0.575.0 - ISC
|
|
661
661
|
*
|
|
662
662
|
* This source code is licensed under the ISC license.
|
|
663
663
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -671,7 +671,7 @@ const __iconNode$h = [
|
|
|
671
671
|
const ArrowUp = createLucideIcon("arrow-up", __iconNode$h);
|
|
672
672
|
|
|
673
673
|
/**
|
|
674
|
-
* @license lucide-react v0.
|
|
674
|
+
* @license lucide-react v0.575.0 - ISC
|
|
675
675
|
*
|
|
676
676
|
* This source code is licensed under the ISC license.
|
|
677
677
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -693,7 +693,7 @@ const __iconNode$g = [
|
|
|
693
693
|
const CalendarDays = createLucideIcon("calendar-days", __iconNode$g);
|
|
694
694
|
|
|
695
695
|
/**
|
|
696
|
-
* @license lucide-react v0.
|
|
696
|
+
* @license lucide-react v0.575.0 - ISC
|
|
697
697
|
*
|
|
698
698
|
* This source code is licensed under the ISC license.
|
|
699
699
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -704,7 +704,7 @@ const __iconNode$f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
|
704
704
|
const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
|
|
705
705
|
|
|
706
706
|
/**
|
|
707
|
-
* @license lucide-react v0.
|
|
707
|
+
* @license lucide-react v0.575.0 - ISC
|
|
708
708
|
*
|
|
709
709
|
* This source code is licensed under the ISC license.
|
|
710
710
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -715,7 +715,7 @@ const __iconNode$e = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
|
715
715
|
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$e);
|
|
716
716
|
|
|
717
717
|
/**
|
|
718
|
-
* @license lucide-react v0.
|
|
718
|
+
* @license lucide-react v0.575.0 - ISC
|
|
719
719
|
*
|
|
720
720
|
* This source code is licensed under the ISC license.
|
|
721
721
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -726,7 +726,7 @@ const __iconNode$d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
|
726
726
|
const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
|
|
727
727
|
|
|
728
728
|
/**
|
|
729
|
-
* @license lucide-react v0.
|
|
729
|
+
* @license lucide-react v0.575.0 - ISC
|
|
730
730
|
*
|
|
731
731
|
* This source code is licensed under the ISC license.
|
|
732
732
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -737,7 +737,7 @@ const __iconNode$c = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
|
737
737
|
const ChevronUp = createLucideIcon("chevron-up", __iconNode$c);
|
|
738
738
|
|
|
739
739
|
/**
|
|
740
|
-
* @license lucide-react v0.
|
|
740
|
+
* @license lucide-react v0.575.0 - ISC
|
|
741
741
|
*
|
|
742
742
|
* This source code is licensed under the ISC license.
|
|
743
743
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -751,7 +751,7 @@ const __iconNode$b = [
|
|
|
751
751
|
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$b);
|
|
752
752
|
|
|
753
753
|
/**
|
|
754
|
-
* @license lucide-react v0.
|
|
754
|
+
* @license lucide-react v0.575.0 - ISC
|
|
755
755
|
*
|
|
756
756
|
* This source code is licensed under the ISC license.
|
|
757
757
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -766,7 +766,7 @@ const __iconNode$a = [
|
|
|
766
766
|
const CircleAlert = createLucideIcon("circle-alert", __iconNode$a);
|
|
767
767
|
|
|
768
768
|
/**
|
|
769
|
-
* @license lucide-react v0.
|
|
769
|
+
* @license lucide-react v0.575.0 - ISC
|
|
770
770
|
*
|
|
771
771
|
* This source code is licensed under the ISC license.
|
|
772
772
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -780,7 +780,7 @@ const __iconNode$9 = [
|
|
|
780
780
|
const CircleCheck = createLucideIcon("circle-check", __iconNode$9);
|
|
781
781
|
|
|
782
782
|
/**
|
|
783
|
-
* @license lucide-react v0.
|
|
783
|
+
* @license lucide-react v0.575.0 - ISC
|
|
784
784
|
*
|
|
785
785
|
* This source code is licensed under the ISC license.
|
|
786
786
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -795,7 +795,7 @@ const __iconNode$8 = [
|
|
|
795
795
|
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$8);
|
|
796
796
|
|
|
797
797
|
/**
|
|
798
|
-
* @license lucide-react v0.
|
|
798
|
+
* @license lucide-react v0.575.0 - ISC
|
|
799
799
|
*
|
|
800
800
|
* This source code is licensed under the ISC license.
|
|
801
801
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -810,7 +810,7 @@ const __iconNode$7 = [
|
|
|
810
810
|
const Columns3 = createLucideIcon("columns-3", __iconNode$7);
|
|
811
811
|
|
|
812
812
|
/**
|
|
813
|
-
* @license lucide-react v0.
|
|
813
|
+
* @license lucide-react v0.575.0 - ISC
|
|
814
814
|
*
|
|
815
815
|
* This source code is licensed under the ISC license.
|
|
816
816
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -825,7 +825,7 @@ const __iconNode$6 = [
|
|
|
825
825
|
const Info = createLucideIcon("info", __iconNode$6);
|
|
826
826
|
|
|
827
827
|
/**
|
|
828
|
-
* @license lucide-react v0.
|
|
828
|
+
* @license lucide-react v0.575.0 - ISC
|
|
829
829
|
*
|
|
830
830
|
* This source code is licensed under the ISC license.
|
|
831
831
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -840,7 +840,7 @@ const __iconNode$5 = [
|
|
|
840
840
|
const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
841
841
|
|
|
842
842
|
/**
|
|
843
|
-
* @license lucide-react v0.
|
|
843
|
+
* @license lucide-react v0.575.0 - ISC
|
|
844
844
|
*
|
|
845
845
|
* This source code is licensed under the ISC license.
|
|
846
846
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -854,7 +854,7 @@ const __iconNode$4 = [
|
|
|
854
854
|
const Plus = createLucideIcon("plus", __iconNode$4);
|
|
855
855
|
|
|
856
856
|
/**
|
|
857
|
-
* @license lucide-react v0.
|
|
857
|
+
* @license lucide-react v0.575.0 - ISC
|
|
858
858
|
*
|
|
859
859
|
* This source code is licensed under the ISC license.
|
|
860
860
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -868,7 +868,7 @@ const __iconNode$3 = [
|
|
|
868
868
|
const Search = createLucideIcon("search", __iconNode$3);
|
|
869
869
|
|
|
870
870
|
/**
|
|
871
|
-
* @license lucide-react v0.
|
|
871
|
+
* @license lucide-react v0.575.0 - ISC
|
|
872
872
|
*
|
|
873
873
|
* This source code is licensed under the ISC license.
|
|
874
874
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -885,7 +885,7 @@ const __iconNode$2 = [
|
|
|
885
885
|
const Trash2 = createLucideIcon("trash-2", __iconNode$2);
|
|
886
886
|
|
|
887
887
|
/**
|
|
888
|
-
* @license lucide-react v0.
|
|
888
|
+
* @license lucide-react v0.575.0 - ISC
|
|
889
889
|
*
|
|
890
890
|
* This source code is licensed under the ISC license.
|
|
891
891
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -904,7 +904,7 @@ const __iconNode$1 = [
|
|
|
904
904
|
const WifiOff = createLucideIcon("wifi-off", __iconNode$1);
|
|
905
905
|
|
|
906
906
|
/**
|
|
907
|
-
* @license lucide-react v0.
|
|
907
|
+
* @license lucide-react v0.575.0 - ISC
|
|
908
908
|
*
|
|
909
909
|
* This source code is licensed under the ISC license.
|
|
910
910
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -1437,7 +1437,7 @@ const LabelContainer$4 = styled('div')(({ size = 'medium' }) => ({
|
|
|
1437
1437
|
flexDirection: 'column',
|
|
1438
1438
|
gap: size === 'medium' ? 2 : 0,
|
|
1439
1439
|
}));
|
|
1440
|
-
const Label$
|
|
1440
|
+
const Label$4 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
1441
1441
|
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
1442
1442
|
? typography.fontSize.xs
|
|
1443
1443
|
: size === 'small'
|
|
@@ -1457,6 +1457,8 @@ const HelperText$2 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
|
1457
1457
|
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1458
1458
|
color: semanticColors.typography.bodySecondary,
|
|
1459
1459
|
}));
|
|
1460
|
+
// Figma-exact border radius for xs checkbox — no matching design token
|
|
1461
|
+
const FIGMA_XS_BORDER_RADIUS = 1;
|
|
1460
1462
|
const StyledCheckbox = styled(Checkbox, {
|
|
1461
1463
|
shouldForwardProp: prop => prop !== 'size',
|
|
1462
1464
|
})(({ size = 'medium' }) => {
|
|
@@ -1464,8 +1466,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1464
1466
|
const sizeConfig = {
|
|
1465
1467
|
xs: {
|
|
1466
1468
|
size: 12,
|
|
1467
|
-
|
|
1468
|
-
borderRadius: 1, // From Figma: 1px for xs
|
|
1469
|
+
borderRadius: FIGMA_XS_BORDER_RADIUS,
|
|
1469
1470
|
},
|
|
1470
1471
|
small: {
|
|
1471
1472
|
size: 16,
|
|
@@ -1586,7 +1587,7 @@ const NeoCheckbox = ({ size = 'medium', label, helperText, disabled, icon, check
|
|
|
1586
1587
|
return (jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }));
|
|
1587
1588
|
}
|
|
1588
1589
|
// With label, wrap in container for proper layout
|
|
1589
|
-
return (jsxs(CheckboxContainer, { disabled: disabled, children: [jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxs(LabelContainer$4, { size: size, children: [label && jsx(Label$
|
|
1590
|
+
return (jsxs(CheckboxContainer, { disabled: disabled, children: [jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxs(LabelContainer$4, { size: size, children: [label && jsx(Label$4, { size: size, children: label }), helperText && jsx(HelperText$2, { size: size, children: helperText })] })] }));
|
|
1590
1591
|
};
|
|
1591
1592
|
NeoCheckbox.displayName = 'NeoCheckbox';
|
|
1592
1593
|
|
|
@@ -1632,7 +1633,9 @@ const StyledButtonBase = styled(ButtonBase, {
|
|
|
1632
1633
|
width: isMultiline ? '100%' : 'fit-content',
|
|
1633
1634
|
maxWidth: isMultiline ? '100%' : 'none',
|
|
1634
1635
|
overflowX: isMultiline ? 'auto' : 'visible',
|
|
1635
|
-
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1636
|
+
padding: isMultiline && 'paddingMultiline' in sizeStyles
|
|
1637
|
+
? sizeStyles.paddingMultiline
|
|
1638
|
+
: sizeStyles.paddingSingleLine,
|
|
1636
1639
|
paddingRight: isMultiline ? theme.spacing(7) : undefined, // Extra space for copy button in multiline only
|
|
1637
1640
|
fontSize: sizeStyles.fontSize,
|
|
1638
1641
|
fontFamily: typography.fontFamily.code,
|
|
@@ -1756,13 +1759,14 @@ const ColumnItemContainer = styled(Box)(({ theme }) => ({
|
|
|
1756
1759
|
paddingLeft: theme.spacing(0.75),
|
|
1757
1760
|
paddingRight: theme.spacing(0.75),
|
|
1758
1761
|
}));
|
|
1762
|
+
// Figma-exact border radius for menu items — no matching design token
|
|
1763
|
+
const MENU_ITEM_BORDER_RADIUS = 6;
|
|
1759
1764
|
const MenuItemContent$1 = styled('div')(({ theme }) => ({
|
|
1760
1765
|
display: 'flex',
|
|
1761
1766
|
alignItems: 'center',
|
|
1762
1767
|
gap: theme.spacing(1),
|
|
1763
1768
|
padding: theme.spacing(1),
|
|
1764
|
-
|
|
1765
|
-
borderRadius: 6,
|
|
1769
|
+
borderRadius: MENU_ITEM_BORDER_RADIUS,
|
|
1766
1770
|
width: '100%',
|
|
1767
1771
|
'&:hover': {
|
|
1768
1772
|
backgroundColor: semanticColors.surfaces.listHover,
|
|
@@ -1906,7 +1910,7 @@ const LabelContainer$3 = styled('div')({
|
|
|
1906
1910
|
gap: spacing.spacing_1,
|
|
1907
1911
|
minWidth: 0,
|
|
1908
1912
|
});
|
|
1909
|
-
const Label$
|
|
1913
|
+
const Label$3 = styled('span')({
|
|
1910
1914
|
color: semanticColors.icons.default,
|
|
1911
1915
|
flexShrink: 0,
|
|
1912
1916
|
});
|
|
@@ -1958,7 +1962,7 @@ const Shortcut = styled('span')(({ theme }) => ({
|
|
|
1958
1962
|
* ```
|
|
1959
1963
|
*/
|
|
1960
1964
|
const NeoMenuItem = ({ icon, shortcut, secondaryText, children, ...props }) => {
|
|
1961
|
-
return (jsx(StyledMenuItem, { ...props, children: jsxs(MenuItemContent, { children: [icon && jsx(IconWrapper$1, { children: icon }), jsxs(LabelContainer$3, { children: [jsx(Label$
|
|
1965
|
+
return (jsx(StyledMenuItem, { ...props, children: jsxs(MenuItemContent, { children: [icon && jsx(IconWrapper$1, { children: icon }), jsxs(LabelContainer$3, { children: [jsx(Label$3, { children: children }), secondaryText && jsx(SecondaryLabel, { children: secondaryText })] }), shortcut && jsx(Shortcut, { children: shortcut })] }) }));
|
|
1962
1966
|
};
|
|
1963
1967
|
NeoMenuItem.displayName = 'NeoMenuItem';
|
|
1964
1968
|
|
|
@@ -2474,111 +2478,85 @@ function NeoDataGridColumnsButton() {
|
|
|
2474
2478
|
}
|
|
2475
2479
|
NeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton';
|
|
2476
2480
|
|
|
2477
|
-
const
|
|
2478
|
-
|
|
2479
|
-
borderRadius: borderRadius.full,
|
|
2480
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
2481
|
-
fontWeight: typography.fontWeight.medium,
|
|
2482
|
-
// Size variants
|
|
2483
|
-
...(size === 'small' && {
|
|
2481
|
+
const sizeStyles = {
|
|
2482
|
+
small: {
|
|
2484
2483
|
height: 16,
|
|
2485
2484
|
paddingLeft: spacing.spacing_1_2, // 4px
|
|
2486
2485
|
paddingRight: spacing.spacing_1_2, // 4px
|
|
2487
|
-
}
|
|
2488
|
-
|
|
2486
|
+
},
|
|
2487
|
+
medium: {
|
|
2489
2488
|
height: 18,
|
|
2490
2489
|
paddingLeft: spacing.spacing_3_4, // 6px
|
|
2491
2490
|
paddingRight: spacing.spacing_3_4, // 6px
|
|
2492
|
-
}
|
|
2493
|
-
|
|
2491
|
+
},
|
|
2492
|
+
large: {
|
|
2494
2493
|
height: 20,
|
|
2495
2494
|
paddingLeft: spacing.spacing_3_4, // 6px
|
|
2496
2495
|
paddingRight: spacing.spacing_3_4, // 6px
|
|
2497
|
-
}),
|
|
2498
|
-
[`& .${chipClasses.label}`]: {
|
|
2499
|
-
padding: 0,
|
|
2500
2496
|
},
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2497
|
+
};
|
|
2498
|
+
const outlinedColorStyles = {
|
|
2499
|
+
default: {
|
|
2504
2500
|
backgroundColor: semanticColors.status.neutral.light,
|
|
2505
2501
|
color: semanticColors.status.neutral.dark,
|
|
2506
|
-
borderColor: colors.grey[200],
|
|
2507
|
-
}
|
|
2508
|
-
|
|
2509
|
-
...(variant === 'outlined' &&
|
|
2510
|
-
color === 'error' && {
|
|
2502
|
+
borderColor: colors.grey[200],
|
|
2503
|
+
},
|
|
2504
|
+
error: {
|
|
2511
2505
|
backgroundColor: semanticColors.status.error.light,
|
|
2512
2506
|
color: semanticColors.status.error.dark,
|
|
2513
|
-
borderColor: colors.red[100],
|
|
2514
|
-
}
|
|
2515
|
-
|
|
2516
|
-
...(variant === 'outlined' &&
|
|
2517
|
-
color === 'warning' && {
|
|
2507
|
+
borderColor: colors.red[100],
|
|
2508
|
+
},
|
|
2509
|
+
warning: {
|
|
2518
2510
|
backgroundColor: semanticColors.status.warning.light,
|
|
2519
2511
|
color: semanticColors.status.warning.dark,
|
|
2520
|
-
borderColor: colors.orange[100],
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
...(variant === 'outlined' &&
|
|
2524
|
-
color === 'success' && {
|
|
2512
|
+
borderColor: colors.orange[100],
|
|
2513
|
+
},
|
|
2514
|
+
success: {
|
|
2525
2515
|
backgroundColor: semanticColors.status.success.light,
|
|
2526
2516
|
color: semanticColors.status.success.dark,
|
|
2527
|
-
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2528
|
-
}
|
|
2529
|
-
|
|
2530
|
-
...(variant === 'outlined' &&
|
|
2531
|
-
color === 'info' && {
|
|
2517
|
+
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2518
|
+
},
|
|
2519
|
+
info: {
|
|
2532
2520
|
backgroundColor: semanticColors.status.info.light,
|
|
2533
2521
|
color: semanticColors.status.info.dark,
|
|
2534
|
-
borderColor: colors.digitalBlue[100],
|
|
2535
|
-
}
|
|
2536
|
-
|
|
2537
|
-
...(variant === 'outlined' &&
|
|
2538
|
-
color === 'violet' && {
|
|
2522
|
+
borderColor: colors.digitalBlue[100],
|
|
2523
|
+
},
|
|
2524
|
+
violet: {
|
|
2539
2525
|
backgroundColor: `${colors.violet[100]}66`, // rgba(235,213,241,0.4)
|
|
2540
2526
|
color: colors.violet[600],
|
|
2541
|
-
borderColor: colors.violet[100],
|
|
2542
|
-
}
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
color
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
color
|
|
2569
|
-
|
|
2570
|
-
}),
|
|
2571
|
-
// Filled variant - Info
|
|
2572
|
-
...(variant === 'filled' &&
|
|
2573
|
-
color === 'info' && {
|
|
2574
|
-
backgroundColor: semanticColors.status.info.medium,
|
|
2575
|
-
color: theme.palette.common.white,
|
|
2576
|
-
border: 'none',
|
|
2577
|
-
}),
|
|
2578
|
-
// Filled variant - Violet
|
|
2527
|
+
borderColor: colors.violet[100],
|
|
2528
|
+
},
|
|
2529
|
+
beta: {
|
|
2530
|
+
backgroundColor: colors.digitalBlue[100],
|
|
2531
|
+
color: colors.digitalBlue[400],
|
|
2532
|
+
borderColor: colors.digitalBlue[100],
|
|
2533
|
+
},
|
|
2534
|
+
};
|
|
2535
|
+
const filledColorStyles = {
|
|
2536
|
+
default: semanticColors.status.neutral.medium,
|
|
2537
|
+
error: semanticColors.status.error.medium,
|
|
2538
|
+
warning: semanticColors.status.warning.medium,
|
|
2539
|
+
success: semanticColors.status.success.medium,
|
|
2540
|
+
info: semanticColors.status.info.medium,
|
|
2541
|
+
violet: colors.violet[500],
|
|
2542
|
+
beta: colors.digitalBlue[300],
|
|
2543
|
+
};
|
|
2544
|
+
const StyledChip$1 = styled(Chip)(({ theme, size, variant, color }) => ({
|
|
2545
|
+
padding: 0,
|
|
2546
|
+
borderRadius: borderRadius.full,
|
|
2547
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
2548
|
+
fontWeight: typography.fontWeight.medium,
|
|
2549
|
+
...(size && sizeStyles[size]),
|
|
2550
|
+
[`& .${chipClasses.label}`]: {
|
|
2551
|
+
padding: 0,
|
|
2552
|
+
},
|
|
2553
|
+
...(variant === 'outlined' &&
|
|
2554
|
+
color &&
|
|
2555
|
+
outlinedColorStyles[color]),
|
|
2579
2556
|
...(variant === 'filled' &&
|
|
2580
|
-
color
|
|
2581
|
-
|
|
2557
|
+
color &&
|
|
2558
|
+
color in filledColorStyles && {
|
|
2559
|
+
backgroundColor: filledColorStyles[color],
|
|
2582
2560
|
color: theme.palette.common.white,
|
|
2583
2561
|
border: 'none',
|
|
2584
2562
|
}),
|
|
@@ -2591,11 +2569,11 @@ const StyledChip = styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2591
2569
|
* Figma Props Mapping:
|
|
2592
2570
|
* - m (sm|md|lg) → size (small|medium|large)
|
|
2593
2571
|
* - type (light|dark) → variant (outlined|filled)
|
|
2594
|
-
* - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)
|
|
2572
|
+
* - state (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2595
2573
|
* - Label text → label prop
|
|
2596
2574
|
*/
|
|
2597
2575
|
const NeoTag = ({ size = 'small', variant = 'outlined', ...props }) => {
|
|
2598
|
-
return jsx(StyledChip, { size: size, variant: variant, ...props });
|
|
2576
|
+
return jsx(StyledChip$1, { size: size, variant: variant, ...props });
|
|
2599
2577
|
};
|
|
2600
2578
|
NeoTag.displayName = 'NeoTag';
|
|
2601
2579
|
|
|
@@ -3556,6 +3534,102 @@ const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...prop
|
|
|
3556
3534
|
};
|
|
3557
3535
|
NeoDot.displayName = 'NeoDot';
|
|
3558
3536
|
|
|
3537
|
+
const focusRing = `${shadows.focusWhite1.x}px ${shadows.focusWhite1.y}px ${shadows.focusWhite1.blur}px ${shadows.focusWhite1.spread}px ${shadows.focusWhite1.shadow}, ${shadows.focusBlue2.x}px ${shadows.focusBlue2.y}px ${shadows.focusBlue2.blur}px ${shadows.focusBlue2.spread}px ${shadows.focusBlue2.shadow}`;
|
|
3538
|
+
const filterChipOnlyProps = ['selected', 'expanded', 'selectedLabel', 'count', 'onClear'];
|
|
3539
|
+
const StyledChip = styled(Chip, {
|
|
3540
|
+
shouldForwardProp: prop => !filterChipOnlyProps.includes(prop),
|
|
3541
|
+
})(({ theme, selected }) => ({
|
|
3542
|
+
borderRadius: borderRadius.full,
|
|
3543
|
+
border: `1px solid ${semanticColors.buttons.secondary.defaultBorder}`,
|
|
3544
|
+
backgroundColor: selected
|
|
3545
|
+
? semanticColors.buttons.secondary.pressedBackground
|
|
3546
|
+
: semanticColors.surfaces.white,
|
|
3547
|
+
minHeight: 40,
|
|
3548
|
+
padding: `${spacing.spacing_3_4}px ${spacing.spacing_1_1_2}px`,
|
|
3549
|
+
gap: spacing.spacing_1,
|
|
3550
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3551
|
+
fontWeight: typography.fontWeight.medium,
|
|
3552
|
+
lineHeight: 1,
|
|
3553
|
+
color: semanticColors.typography.body,
|
|
3554
|
+
[`& .${chipClasses.label}`]: {
|
|
3555
|
+
padding: 0,
|
|
3556
|
+
overflow: 'visible',
|
|
3557
|
+
display: 'flex',
|
|
3558
|
+
alignItems: 'center',
|
|
3559
|
+
},
|
|
3560
|
+
[`& .${chipClasses.deleteIcon}`]: {
|
|
3561
|
+
color: semanticColors.icons.default,
|
|
3562
|
+
width: 24,
|
|
3563
|
+
height: 24,
|
|
3564
|
+
margin: 0,
|
|
3565
|
+
flexShrink: 0,
|
|
3566
|
+
'&:hover': {
|
|
3567
|
+
color: semanticColors.icons.default,
|
|
3568
|
+
},
|
|
3569
|
+
},
|
|
3570
|
+
'&:hover': {
|
|
3571
|
+
backgroundColor: semanticColors.buttons.secondary.hoverBackground,
|
|
3572
|
+
},
|
|
3573
|
+
[`&.${chipClasses.focusVisible}`]: {
|
|
3574
|
+
boxShadow: focusRing,
|
|
3575
|
+
backgroundColor: selected
|
|
3576
|
+
? semanticColors.buttons.secondary.pressedBackground
|
|
3577
|
+
: semanticColors.surfaces.white,
|
|
3578
|
+
},
|
|
3579
|
+
}));
|
|
3580
|
+
const LabelContent = styled('span')({
|
|
3581
|
+
display: 'inline-flex',
|
|
3582
|
+
alignItems: 'center',
|
|
3583
|
+
gap: spacing.spacing_1,
|
|
3584
|
+
});
|
|
3585
|
+
const TextStack = styled('span')({
|
|
3586
|
+
display: 'flex',
|
|
3587
|
+
flexDirection: 'column',
|
|
3588
|
+
alignItems: 'flex-start',
|
|
3589
|
+
justifyContent: 'center',
|
|
3590
|
+
gap: spacing.spacing_1_4,
|
|
3591
|
+
});
|
|
3592
|
+
const HeaderLabel = styled('span')(({ theme }) => ({
|
|
3593
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xxs),
|
|
3594
|
+
fontWeight: typography.fontWeight.regular,
|
|
3595
|
+
lineHeight: '120%',
|
|
3596
|
+
color: semanticColors.typography.bodySecondary,
|
|
3597
|
+
}));
|
|
3598
|
+
const SelectedLabel = styled('span')(({ theme }) => ({
|
|
3599
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3600
|
+
fontWeight: typography.fontWeight.medium,
|
|
3601
|
+
lineHeight: 1,
|
|
3602
|
+
color: semanticColors.buttons.secondary.default,
|
|
3603
|
+
}));
|
|
3604
|
+
const CountBadge = styled('span')(({ theme }) => ({
|
|
3605
|
+
display: 'inline-flex',
|
|
3606
|
+
alignItems: 'center',
|
|
3607
|
+
justifyContent: 'center',
|
|
3608
|
+
minWidth: 16,
|
|
3609
|
+
height: 16,
|
|
3610
|
+
padding: `0 ${spacing.spacing_1_2}px`,
|
|
3611
|
+
borderRadius: borderRadius.full,
|
|
3612
|
+
backgroundColor: semanticColors.brand,
|
|
3613
|
+
color: semanticColors.surfaces.white,
|
|
3614
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
3615
|
+
fontWeight: typography.fontWeight.medium,
|
|
3616
|
+
lineHeight: 1,
|
|
3617
|
+
boxSizing: 'border-box',
|
|
3618
|
+
}));
|
|
3619
|
+
/**
|
|
3620
|
+
* NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
|
|
3621
|
+
*
|
|
3622
|
+
* @example
|
|
3623
|
+
* <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
|
|
3624
|
+
*
|
|
3625
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
|
|
3626
|
+
*/
|
|
3627
|
+
const NeoFilterChip = ({ label, selected = false, expanded, selectedLabel, count = 0, onClear, onClick, ...props }) => {
|
|
3628
|
+
const chipLabel = selected ? (jsxs(LabelContent, { children: [jsxs(TextStack, { children: [jsx(HeaderLabel, { children: label }), jsx(SelectedLabel, { children: selectedLabel ?? label })] }), count > 0 && jsx(CountBadge, { children: count })] })) : (label);
|
|
3629
|
+
return (jsx(StyledChip, { label: chipLabel, selected: selected, clickable: true, onClick: onClick, onDelete: selected && onClear ? onClear : undefined, deleteIcon: jsx(X, { size: 24 }), "aria-expanded": expanded, ...props }));
|
|
3630
|
+
};
|
|
3631
|
+
NeoFilterChip.displayName = 'NeoFilterChip';
|
|
3632
|
+
|
|
3559
3633
|
const SpinnerWrapper = styled('div')({
|
|
3560
3634
|
width: 24,
|
|
3561
3635
|
height: 24,
|
|
@@ -3796,6 +3870,31 @@ const NeoFooter = ({ variant = 'pagination', showShadow = false, loading = false
|
|
|
3796
3870
|
};
|
|
3797
3871
|
NeoFooter.displayName = 'NeoFooter';
|
|
3798
3872
|
|
|
3873
|
+
const customProps$1 = ['iconSize'];
|
|
3874
|
+
const StyledIconWrapper = styled('div', {
|
|
3875
|
+
shouldForwardProp: prop => !customProps$1.includes(prop),
|
|
3876
|
+
})(({ iconSize }) => ({
|
|
3877
|
+
display: 'inline-flex',
|
|
3878
|
+
alignItems: 'center',
|
|
3879
|
+
justifyContent: 'center',
|
|
3880
|
+
width: iconSize,
|
|
3881
|
+
height: iconSize,
|
|
3882
|
+
flexShrink: 0,
|
|
3883
|
+
'& svg': {
|
|
3884
|
+
width: iconSize,
|
|
3885
|
+
height: iconSize,
|
|
3886
|
+
},
|
|
3887
|
+
}));
|
|
3888
|
+
/**
|
|
3889
|
+
* NeoIconWrapper - Flex-centered container that sizes icons
|
|
3890
|
+
*
|
|
3891
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4061-9955
|
|
3892
|
+
*/
|
|
3893
|
+
const NeoIconWrapper = ({ size = 20, children, ...props }) => {
|
|
3894
|
+
return (jsx(StyledIconWrapper, { iconSize: size, ...props, children: children }));
|
|
3895
|
+
};
|
|
3896
|
+
NeoIconWrapper.displayName = 'NeoIconWrapper';
|
|
3897
|
+
|
|
3799
3898
|
/**
|
|
3800
3899
|
* NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality
|
|
3801
3900
|
*
|
|
@@ -4430,11 +4529,11 @@ NeoListItemButton.displayName = 'NeoListItemButton';
|
|
|
4430
4529
|
* Focus ring box-shadow using Neo design tokens
|
|
4431
4530
|
* Combines focusWhite1 (inner white ring) and focusBlue2 (outer blue ring)
|
|
4432
4531
|
*/
|
|
4433
|
-
const focusRingShadow = `${shadows.focusWhite1.x}px ${shadows.focusWhite1.y}px ${shadows.focusWhite1.blur}px ${shadows.focusWhite1.spread}px ${shadows.focusWhite1.shadow}, ${shadows.focusBlue2.x}px ${shadows.focusBlue2.y}px ${shadows.focusBlue2.blur}px ${shadows.focusBlue2.spread}px ${shadows.focusBlue2.shadow}`;
|
|
4532
|
+
const focusRingShadow$1 = `${shadows.focusWhite1.x}px ${shadows.focusWhite1.y}px ${shadows.focusWhite1.blur}px ${shadows.focusWhite1.spread}px ${shadows.focusWhite1.shadow}, ${shadows.focusBlue2.x}px ${shadows.focusBlue2.y}px ${shadows.focusBlue2.blur}px ${shadows.focusBlue2.spread}px ${shadows.focusBlue2.shadow}`;
|
|
4434
4533
|
/**
|
|
4435
4534
|
* Card box-shadow using Neo design tokens for hover and selected states
|
|
4436
4535
|
*/
|
|
4437
|
-
const activeShadow = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
4536
|
+
const activeShadow$1 = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
4438
4537
|
/**
|
|
4439
4538
|
* Styled Card component with Neo design tokens
|
|
4440
4539
|
*/
|
|
@@ -4450,16 +4549,16 @@ const StyledCard = styled(MuiCard, {
|
|
|
4450
4549
|
backgroundColor: semanticColors.surfaces.card,
|
|
4451
4550
|
border: `1px solid ${selected ? semanticColors.border.tabActive : semanticColors.border.card}`,
|
|
4452
4551
|
borderRadius: borderRadius.xS,
|
|
4453
|
-
boxShadow: selected ? activeShadow : 'none',
|
|
4552
|
+
boxShadow: selected ? activeShadow$1 : 'none',
|
|
4454
4553
|
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
4455
4554
|
cursor: 'pointer',
|
|
4456
4555
|
'&:hover': {
|
|
4457
4556
|
borderColor: semanticColors.border.tabActive,
|
|
4458
|
-
boxShadow: activeShadow,
|
|
4557
|
+
boxShadow: activeShadow$1,
|
|
4459
4558
|
},
|
|
4460
4559
|
'&:focus-visible': {
|
|
4461
4560
|
borderColor: semanticColors.border.tabActive,
|
|
4462
|
-
boxShadow: focusRingShadow,
|
|
4561
|
+
boxShadow: focusRingShadow$1,
|
|
4463
4562
|
outline: 'none',
|
|
4464
4563
|
},
|
|
4465
4564
|
...(disabled && {
|
|
@@ -4519,7 +4618,7 @@ const Title = styled('p')(({ theme }) => ({
|
|
|
4519
4618
|
/**
|
|
4520
4619
|
* Description text
|
|
4521
4620
|
*/
|
|
4522
|
-
const Description = styled('p')(({ theme }) => ({
|
|
4621
|
+
const Description$1 = styled('p')(({ theme }) => ({
|
|
4523
4622
|
margin: 0,
|
|
4524
4623
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px
|
|
4525
4624
|
fontWeight: typography.fontWeight.regular, // 400
|
|
@@ -4574,10 +4673,131 @@ const Description = styled('p')(({ theme }) => ({
|
|
|
4574
4673
|
* - typography.fontWeight.regular (400) - Description
|
|
4575
4674
|
*/
|
|
4576
4675
|
const NeoMarketplaceCard = ({ logo, recipeCount, title, description, selected = false, disabled = false, onClick, ...props }) => {
|
|
4577
|
-
return (jsxs(StyledCard, { selected: selected, disabled: disabled, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, role: "button", "aria-disabled": disabled, "aria-pressed": selected, ...props, children: [jsxs(CardHeader, { children: [jsx(LogoContainer, { children: logo }), jsx(RecipeCount, { children: recipeCount })] }), jsxs(CardContent, { children: [jsx(Title, { children: title }), jsx(Description, { children: description })] })] }));
|
|
4676
|
+
return (jsxs(StyledCard, { selected: selected, disabled: disabled, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, role: "button", "aria-disabled": disabled, "aria-pressed": selected, ...props, children: [jsxs(CardHeader, { children: [jsx(LogoContainer, { children: logo }), jsx(RecipeCount, { children: recipeCount })] }), jsxs(CardContent, { children: [jsx(Title, { children: title }), jsx(Description$1, { children: description })] })] }));
|
|
4578
4677
|
};
|
|
4579
4678
|
NeoMarketplaceCard.displayName = 'NeoMarketplaceCard';
|
|
4580
4679
|
|
|
4680
|
+
const focusRingShadow = `${shadows.focusWhite1.x}px ${shadows.focusWhite1.y}px ${shadows.focusWhite1.blur}px ${shadows.focusWhite1.spread}px ${shadows.focusWhite1.shadow}, ${shadows.focusBlue2.x}px ${shadows.focusBlue2.y}px ${shadows.focusBlue2.blur}px ${shadows.focusBlue2.spread}px ${shadows.focusBlue2.shadow}`;
|
|
4681
|
+
const activeShadow = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
4682
|
+
const StyledLargeCard = styled(MuiCard, {
|
|
4683
|
+
shouldForwardProp: prop => prop !== 'cardState' && prop !== 'cardTheme',
|
|
4684
|
+
})(({ cardState = 'default', cardTheme = 'light' }) => {
|
|
4685
|
+
const isLight = cardTheme === 'light';
|
|
4686
|
+
const isActive = cardState === 'active';
|
|
4687
|
+
const isDisabled = cardState === 'disabled';
|
|
4688
|
+
const isFocused = cardState === 'focused';
|
|
4689
|
+
const activeBorderColor = isLight ? semanticColors.border.tabActive : colors.digitalGreen[300];
|
|
4690
|
+
const defaultBorderColor = isLight
|
|
4691
|
+
? semanticColors.border.card
|
|
4692
|
+
: `${semanticColors.border.card}80`;
|
|
4693
|
+
return {
|
|
4694
|
+
width: 340,
|
|
4695
|
+
height: 162,
|
|
4696
|
+
display: 'flex',
|
|
4697
|
+
flexDirection: 'column',
|
|
4698
|
+
justifyContent: 'space-between',
|
|
4699
|
+
alignItems: 'flex-start',
|
|
4700
|
+
padding: spacing.spacing_2,
|
|
4701
|
+
borderRadius: borderRadius.xS,
|
|
4702
|
+
backgroundColor: isLight ? semanticColors.surfaces.card : colors.grey[800],
|
|
4703
|
+
border: `1px solid ${isActive || isFocused ? activeBorderColor : defaultBorderColor}`,
|
|
4704
|
+
boxShadow: isActive ? activeShadow : isFocused ? focusRingShadow : 'none',
|
|
4705
|
+
overflow: 'hidden',
|
|
4706
|
+
'&:focus-visible': {
|
|
4707
|
+
borderColor: isLight ? semanticColors.border.tabActive : colors.digitalGreen[300],
|
|
4708
|
+
boxShadow: focusRingShadow,
|
|
4709
|
+
outline: 'none',
|
|
4710
|
+
},
|
|
4711
|
+
...(isDisabled && {
|
|
4712
|
+
opacity: 0.5,
|
|
4713
|
+
pointerEvents: 'none',
|
|
4714
|
+
cursor: 'not-allowed',
|
|
4715
|
+
}),
|
|
4716
|
+
};
|
|
4717
|
+
});
|
|
4718
|
+
const TopSection = styled('div')({
|
|
4719
|
+
display: 'flex',
|
|
4720
|
+
flexDirection: 'column',
|
|
4721
|
+
gap: spacing.spacing_2,
|
|
4722
|
+
alignItems: 'flex-start',
|
|
4723
|
+
width: '100%',
|
|
4724
|
+
flexShrink: 0,
|
|
4725
|
+
});
|
|
4726
|
+
const HeaderRow = styled('div')({
|
|
4727
|
+
display: 'flex',
|
|
4728
|
+
gap: spacing.spacing_1,
|
|
4729
|
+
alignItems: 'center',
|
|
4730
|
+
flexShrink: 0,
|
|
4731
|
+
});
|
|
4732
|
+
const HeaderSlot = styled('div')({
|
|
4733
|
+
display: 'flex',
|
|
4734
|
+
flexDirection: 'column',
|
|
4735
|
+
alignItems: 'center',
|
|
4736
|
+
justifyContent: 'center',
|
|
4737
|
+
width: 20,
|
|
4738
|
+
height: 20,
|
|
4739
|
+
flexShrink: 0,
|
|
4740
|
+
});
|
|
4741
|
+
const HeaderTitle = styled('span', {
|
|
4742
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4743
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4744
|
+
fontFamily: `${typography.fontFamily.heading}, sans-serif`,
|
|
4745
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
4746
|
+
fontSize: typography.fontSize.h6,
|
|
4747
|
+
lineHeight: 1.4,
|
|
4748
|
+
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
4749
|
+
flexShrink: 0,
|
|
4750
|
+
}));
|
|
4751
|
+
const Description = styled('p', {
|
|
4752
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4753
|
+
})(({ cardTheme = 'light' }) => ({
|
|
4754
|
+
fontFamily: `${typography.fontFamily.body}, sans-serif`,
|
|
4755
|
+
fontWeight: typography.fontWeight.regular,
|
|
4756
|
+
fontSize: typography.fontSize.xs,
|
|
4757
|
+
lineHeight: 1.5,
|
|
4758
|
+
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
4759
|
+
margin: 0,
|
|
4760
|
+
minWidth: '100%',
|
|
4761
|
+
wordWrap: 'break-word',
|
|
4762
|
+
}));
|
|
4763
|
+
const ButtonsRow = styled('div')({
|
|
4764
|
+
display: 'flex',
|
|
4765
|
+
gap: spacing.spacing_3,
|
|
4766
|
+
alignItems: 'flex-start',
|
|
4767
|
+
flexShrink: 0,
|
|
4768
|
+
});
|
|
4769
|
+
/**
|
|
4770
|
+
* NeoMarketplaceLargeCard - A large marketplace card with state and theme variants
|
|
4771
|
+
*
|
|
4772
|
+
* A 340x162px card with optional icon, gel brand icon, title, description, and action buttons.
|
|
4773
|
+
* Icon, gel, and title display inline in a header row.
|
|
4774
|
+
* Supports 4 states (default, active, disabled, focused) and 2 themes (light, dark).
|
|
4775
|
+
*
|
|
4776
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=5925-11
|
|
4777
|
+
*
|
|
4778
|
+
* Figma Props Mapping:
|
|
4779
|
+
* - Property 1 → state (default/active/disabled/focused)
|
|
4780
|
+
* - Property 2 → cardTheme (light/dark)
|
|
4781
|
+
* - Show Icon → showIcon
|
|
4782
|
+
* - Show gel → showGel
|
|
4783
|
+
* - show buttons → showButtons
|
|
4784
|
+
*
|
|
4785
|
+
* Design Tokens Used:
|
|
4786
|
+
* - semanticColors.surfaces.card (#ffffff) - Light theme background
|
|
4787
|
+
* - colors.grey[800] (#1f2937) - Dark theme background
|
|
4788
|
+
* - semanticColors.border.card (#d1d5db) - Default border (50% opacity on dark)
|
|
4789
|
+
* - semanticColors.border.tabActive (#2f42ff) - Active/focused border (light theme)
|
|
4790
|
+
* - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
|
|
4791
|
+
* - borderRadius.xS (4px) - Corner radius
|
|
4792
|
+
* - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
|
|
4793
|
+
* - shadows.card - Active state shadow
|
|
4794
|
+
*/
|
|
4795
|
+
const NeoMarketplaceLargeCard = ({ state = 'default', cardTheme = 'light', showIcon = true, showGel = true, showButtons = true, icon, gel, title, children, actions, onClick, ...props }) => {
|
|
4796
|
+
const isDisabled = state === 'disabled';
|
|
4797
|
+
return (jsxs(StyledLargeCard, { cardState: state, cardTheme: cardTheme, onClick: isDisabled ? undefined : onClick, tabIndex: isDisabled ? -1 : 0, "aria-disabled": isDisabled || undefined, ...props, children: [jsxs(TopSection, { children: [jsxs(HeaderRow, { children: [showIcon && icon && jsx(HeaderSlot, { children: icon }), showGel && gel && jsx(HeaderSlot, { children: gel }), title && jsx(HeaderTitle, { cardTheme: cardTheme, children: title })] }), children && jsx(Description, { cardTheme: cardTheme, children: children })] }), showButtons && actions && jsx(ButtonsRow, { children: actions })] }));
|
|
4798
|
+
};
|
|
4799
|
+
NeoMarketplaceLargeCard.displayName = 'NeoMarketplaceLargeCard';
|
|
4800
|
+
|
|
4581
4801
|
const StyledMenu = styled(Menu)(({ theme }) => ({
|
|
4582
4802
|
[`& .${paperClasses.root}`]: {
|
|
4583
4803
|
backgroundColor: semanticColors.surfaces.white,
|
|
@@ -4821,6 +5041,87 @@ const NeoModalFooter = ({ leadingContent, children }) => {
|
|
|
4821
5041
|
};
|
|
4822
5042
|
NeoModalFooter.displayName = 'NeoModalFooter';
|
|
4823
5043
|
|
|
5044
|
+
const customProps = ['selected'];
|
|
5045
|
+
const StyledRoot = styled(ButtonBase, {
|
|
5046
|
+
shouldForwardProp: prop => !customProps.includes(prop),
|
|
5047
|
+
})(({ selected }) => ({
|
|
5048
|
+
display: 'flex',
|
|
5049
|
+
flexDirection: 'column',
|
|
5050
|
+
gap: spacing.spacing_1_4, // 2px
|
|
5051
|
+
alignItems: 'center',
|
|
5052
|
+
justifyContent: 'center',
|
|
5053
|
+
paddingTop: spacing.spacing_1, // 8px
|
|
5054
|
+
paddingBottom: spacing.spacing_1, // 8px
|
|
5055
|
+
paddingLeft: spacing.spacing_1_2, // 4px
|
|
5056
|
+
paddingRight: spacing.spacing_1_2, // 4px
|
|
5057
|
+
borderRadius: borderRadius.xS, // 4px
|
|
5058
|
+
width: 95,
|
|
5059
|
+
cursor: 'pointer',
|
|
5060
|
+
textDecoration: 'none',
|
|
5061
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5062
|
+
backgroundColor: semanticColors.buttons.secondary.hoverBackground, // #F2F3FF
|
|
5063
|
+
},
|
|
5064
|
+
'&:hover .neo-nav-label': {
|
|
5065
|
+
color: semanticColors.buttons.primary.hover, // #1E2EC2
|
|
5066
|
+
},
|
|
5067
|
+
...(selected && {
|
|
5068
|
+
'& .neo-nav-icon-padding': {
|
|
5069
|
+
backgroundColor: `${colors.digitalBlue[100]}BF`, // rgba(220,224,255,0.75)
|
|
5070
|
+
},
|
|
5071
|
+
'& .neo-nav-label': {
|
|
5072
|
+
color: semanticColors.buttons.primary.pressed, // #131E7A
|
|
5073
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
5074
|
+
},
|
|
5075
|
+
'&:hover .neo-nav-icon-padding': {
|
|
5076
|
+
backgroundColor: `${colors.digitalBlue[100]}BF`,
|
|
5077
|
+
},
|
|
5078
|
+
'&:hover .neo-nav-label': {
|
|
5079
|
+
color: semanticColors.buttons.primary.pressed,
|
|
5080
|
+
},
|
|
5081
|
+
}),
|
|
5082
|
+
}));
|
|
5083
|
+
const IconPadding = styled('span')({
|
|
5084
|
+
display: 'flex',
|
|
5085
|
+
alignItems: 'center',
|
|
5086
|
+
padding: spacing.spacing_1, // 8px
|
|
5087
|
+
borderRadius: spacing.spacing_1, // 8px
|
|
5088
|
+
transition: 'background-color 150ms',
|
|
5089
|
+
});
|
|
5090
|
+
const Label$2 = styled('span')(({ theme }) => ({
|
|
5091
|
+
fontFamily: typography.fontFamily.body,
|
|
5092
|
+
fontWeight: typography.fontWeight.regular,
|
|
5093
|
+
fontSize: theme.typography.pxToRem(10),
|
|
5094
|
+
lineHeight: 1.2,
|
|
5095
|
+
textAlign: 'center',
|
|
5096
|
+
color: semanticColors.typography.navigation.default, // #1F2937
|
|
5097
|
+
width: '100%',
|
|
5098
|
+
transition: 'color 150ms',
|
|
5099
|
+
}));
|
|
5100
|
+
const TagPill = styled('span')(({ theme }) => ({
|
|
5101
|
+
display: 'inline-flex',
|
|
5102
|
+
alignItems: 'center',
|
|
5103
|
+
justifyContent: 'center',
|
|
5104
|
+
height: 18,
|
|
5105
|
+
paddingLeft: spacing.spacing_3_4, // 6px
|
|
5106
|
+
paddingRight: spacing.spacing_3_4, // 6px
|
|
5107
|
+
borderRadius: borderRadius.full,
|
|
5108
|
+
backgroundColor: colors.digitalBlue[300], // #8D99FF
|
|
5109
|
+
color: semanticColors.typography.tooltip, // white
|
|
5110
|
+
fontFamily: typography.fontFamily.body,
|
|
5111
|
+
fontWeight: typography.fontWeight.medium,
|
|
5112
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px
|
|
5113
|
+
lineHeight: 1,
|
|
5114
|
+
}));
|
|
5115
|
+
/**
|
|
5116
|
+
* NeoNavigationItem - Vertical navigation item with icon, label, and optional tag
|
|
5117
|
+
*
|
|
5118
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
|
|
5119
|
+
*/
|
|
5120
|
+
const NeoNavigationItem = ({ icon, label, selected = false, tag, children, ...props }) => {
|
|
5121
|
+
return (jsxs(StyledRoot, { selected: selected, disableRipple: true, ...props, children: [jsx(IconPadding, { className: "neo-nav-icon-padding", children: icon }), label && jsx(Label$2, { className: "neo-nav-label", children: label }), tag && jsx(TagPill, { children: tag }), children] }));
|
|
5122
|
+
};
|
|
5123
|
+
NeoNavigationItem.displayName = 'NeoNavigationItem';
|
|
5124
|
+
|
|
4824
5125
|
/**
|
|
4825
5126
|
* Sticky header wrapper - sticks to top when scrolling
|
|
4826
5127
|
*/
|
|
@@ -6116,6 +6417,8 @@ const NeoTooltip = ({ variant = 'light', title, description, children, arrow = f
|
|
|
6116
6417
|
};
|
|
6117
6418
|
NeoTooltip.displayName = 'NeoTooltip';
|
|
6118
6419
|
|
|
6420
|
+
// Figma-exact border radius for toggle buttons — no matching design token
|
|
6421
|
+
const TOGGLE_BUTTON_BORDER_RADIUS = 14;
|
|
6119
6422
|
const StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({
|
|
6120
6423
|
backgroundColor: colors.grey[50],
|
|
6121
6424
|
padding: theme.spacing(0.625, 0.875),
|
|
@@ -6123,17 +6426,14 @@ const StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({
|
|
|
6123
6426
|
gap: 0,
|
|
6124
6427
|
[`& .${toggleButtonGroupClasses.grouped}`]: {
|
|
6125
6428
|
border: 'none',
|
|
6126
|
-
|
|
6127
|
-
borderRadius: 14,
|
|
6429
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6128
6430
|
margin: 0,
|
|
6129
6431
|
'&:not(:first-of-type)': {
|
|
6130
|
-
|
|
6131
|
-
borderRadius: 14,
|
|
6432
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6132
6433
|
marginLeft: 0,
|
|
6133
6434
|
},
|
|
6134
6435
|
'&:not(:last-of-type)': {
|
|
6135
|
-
|
|
6136
|
-
borderRadius: 14,
|
|
6436
|
+
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6137
6437
|
},
|
|
6138
6438
|
},
|
|
6139
6439
|
}));
|
|
@@ -6186,5 +6486,5 @@ NeoTypologyControl.displayName = 'NeoTypologyControl';
|
|
|
6186
6486
|
|
|
6187
6487
|
const version = '0.0.0-development';
|
|
6188
6488
|
|
|
6189
|
-
export { ActivityScene, CIRCLE_RADIUS, NeoActivityHeader, NeoActivityIndicatorCell, NeoAvatar, NeoBadge, NeoBanner, NeoBreadcrumbLink, NeoBreadcrumbs, NeoButton, NeoButtonGroup, NeoCheckbox, NeoCodeSnippet, NeoDataGrid, NeoDataGridCellContent, NeoDataGridColumnsButton, NeoDataGridColumnsPanel, NeoDataGridFilterPanel, NeoDataGridFilterPanelAddIcon, NeoDataGridFilterPanelDeleteIcon, NeoDataGridFilterPanelRemoveAllIcon, NeoDataGridFiltersButton, NeoDataGridHeaderLabel, NeoSelect as NeoDataGridSelect, NeoDatePicker, NeoDivider, NeoDot, NeoFooter, NeoIconButton, NeoInfiniteScrollGrid, NeoInputField, NeoListItem, NeoListItemButton, NeoLoadingSpinner, NeoMarketplaceCard, NeoMenu, NeoMenuItem, NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader, NeoMultiBadgesCell, NeoPageContent, NeoPaginatedGrid, NeoProgressbar, NeoQuickFilter, NeoRadio, NeoSelect, NeoMenuItem as NeoSelectOption, NeoSkeleton, NeoStatusBadgeCell, NeoStatusBanner, NeoTab, NeoTabs, NeoTag, NeoToast, NeoToastButton, NeoToggle, NeoToolbar, NeoTooltip, StyledToggleButton as NeoTypologyButton, NeoTypologyControl, NeoUserAvatarCell, SortedAscendingIcon, SortedDescendingIcon, UnsortedIcon, getDataGridHeaderStyles, neoRowHeights, version };
|
|
6489
|
+
export { ActivityScene, CIRCLE_RADIUS, NeoActivityHeader, NeoActivityIndicatorCell, NeoAvatar, NeoBadge, NeoBanner, NeoBreadcrumbLink, NeoBreadcrumbs, NeoButton, NeoButtonGroup, NeoCheckbox, NeoCodeSnippet, NeoDataGrid, NeoDataGridCellContent, NeoDataGridColumnsButton, NeoDataGridColumnsPanel, NeoDataGridFilterPanel, NeoDataGridFilterPanelAddIcon, NeoDataGridFilterPanelDeleteIcon, NeoDataGridFilterPanelRemoveAllIcon, NeoDataGridFiltersButton, NeoDataGridHeaderLabel, NeoSelect as NeoDataGridSelect, NeoDatePicker, NeoDivider, NeoDot, NeoFilterChip, NeoFooter, NeoIconButton, NeoIconWrapper, NeoInfiniteScrollGrid, NeoInputField, NeoListItem, NeoListItemButton, NeoLoadingSpinner, NeoMarketplaceCard, NeoMarketplaceLargeCard, NeoMenu, NeoMenuItem, NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader, NeoMultiBadgesCell, NeoNavigationItem, NeoPageContent, NeoPaginatedGrid, NeoProgressbar, NeoQuickFilter, NeoRadio, NeoSelect, NeoMenuItem as NeoSelectOption, NeoSkeleton, NeoStatusBadgeCell, NeoStatusBanner, NeoTab, NeoTabs, NeoTag, NeoToast, NeoToastButton, NeoToggle, NeoToolbar, NeoTooltip, StyledToggleButton as NeoTypologyButton, NeoTypologyControl, NeoUserAvatarCell, SortedAscendingIcon, SortedDescendingIcon, UnsortedIcon, getDataGridHeaderStyles, neoRowHeights, version };
|
|
6190
6490
|
//# sourceMappingURL=index.esm.js.map
|