@moderneinc/neo-styled-components 2.8.0 → 3.0.0-next.2d959a
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/Alert/Alert.d.ts +50 -0
- package/dist/Banner/Banner.d.ts +20 -22
- package/dist/Card/Card.d.ts +32 -0
- package/dist/Checkbox/Checkbox.d.ts +2 -2
- package/dist/CodeSnippet/CodeSnippet.d.ts +4 -4
- package/dist/DownloadToast/DownloadToast.d.ts +47 -0
- package/dist/MarketplaceCard/MarketplaceCard.d.ts +10 -72
- package/dist/MarketplaceLargeCard/MarketplaceLargeCard.d.ts +15 -83
- package/dist/NavigationItem/NavigationItem.d.ts +12 -8
- package/dist/Radio/Radio.d.ts +0 -1
- package/dist/Tabs/Tabs.d.ts +1 -4
- package/dist/Tag/Tag.d.ts +12 -7
- package/dist/Toast/Toast.d.ts +3 -12
- package/dist/index.d.ts +135 -158
- package/dist/index.esm.js +622 -639
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +620 -635
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/StatusBanner/StatusBanner.d.ts +0 -55
package/dist/index.esm.js
CHANGED
|
@@ -6,14 +6,15 @@ import Avatar from '@mui/material/Avatar';
|
|
|
6
6
|
import Chip, { chipClasses } from '@mui/material/Chip';
|
|
7
7
|
import SvgIcon, { svgIconClasses } from '@mui/material/SvgIcon';
|
|
8
8
|
import Alert, { alertClasses } from '@mui/material/Alert';
|
|
9
|
+
import ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase';
|
|
10
|
+
import React, { forwardRef, createElement, useState, useRef, useCallback, useMemo, useEffect } from 'react';
|
|
9
11
|
import IconButton, { iconButtonClasses } from '@mui/material/IconButton';
|
|
10
|
-
import React, { forwardRef, createElement, useRef, useCallback, useState, useMemo, useEffect } from 'react';
|
|
11
12
|
import Breadcrumbs, { breadcrumbsClasses } from '@mui/material/Breadcrumbs';
|
|
12
13
|
import Link from '@mui/material/Link';
|
|
13
|
-
import ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase';
|
|
14
14
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
15
15
|
import MuiToggleButton, { toggleButtonClasses } from '@mui/material/ToggleButton';
|
|
16
16
|
import MuiToggleButtonGroup, { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
|
|
17
|
+
import MuiCard from '@mui/material/Card';
|
|
17
18
|
import Checkbox, { checkboxClasses } from '@mui/material/Checkbox';
|
|
18
19
|
import { useGridApiContext, useGridSelector, gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, GridPanelWrapper, useGridApiRef, gridClasses as gridClasses$1, DataGridPro, ColumnsPanelTrigger, ToolbarButton, gridFilterModelSelector, FilterPanelTrigger, Toolbar } from '@mui/x-data-grid-pro';
|
|
19
20
|
import Button, { buttonClasses } from '@mui/material/Button';
|
|
@@ -36,23 +37,22 @@ import { PickersShortcuts } from '@mui/x-date-pickers/PickersShortcuts';
|
|
|
36
37
|
import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';
|
|
37
38
|
import { dateRangePickerDayClasses } from '@mui/x-date-pickers-pro/DateRangePickerDay';
|
|
38
39
|
import Badge, { badgeClasses } from '@mui/material/Badge';
|
|
40
|
+
import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';
|
|
41
|
+
import Paper, { paperClasses } from '@mui/material/Paper';
|
|
42
|
+
import Stack from '@mui/material/Stack';
|
|
39
43
|
import { listClasses } from '@mui/material/List';
|
|
40
44
|
import Menu from '@mui/material/Menu';
|
|
41
|
-
import { paperClasses } from '@mui/material/Paper';
|
|
42
45
|
import FormControl from '@mui/material/FormControl';
|
|
43
46
|
import FormHelperText, { formHelperTextClasses } from '@mui/material/FormHelperText';
|
|
44
47
|
import ListItemButton, { listItemButtonClasses } from '@mui/material/ListItemButton';
|
|
45
48
|
import ListItemIcon, { listItemIconClasses } from '@mui/material/ListItemIcon';
|
|
46
49
|
import ListItemText, { listItemTextClasses } from '@mui/material/ListItemText';
|
|
47
50
|
import Typography from '@mui/material/Typography';
|
|
48
|
-
import MuiCard from '@mui/material/Card';
|
|
49
51
|
import Dialog, { dialogClasses } from '@mui/material/Dialog';
|
|
50
52
|
import DialogActions, { dialogActionsClasses } from '@mui/material/DialogActions';
|
|
51
53
|
import DialogContent, { dialogContentClasses } from '@mui/material/DialogContent';
|
|
52
54
|
import Fab from '@mui/material/Fab';
|
|
53
55
|
import Fade from '@mui/material/Fade';
|
|
54
|
-
import Stack from '@mui/material/Stack';
|
|
55
|
-
import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';
|
|
56
56
|
import Radio, { radioClasses } from '@mui/material/Radio';
|
|
57
57
|
import Skeleton from '@mui/material/Skeleton';
|
|
58
58
|
import MuiTab, { tabClasses } from '@mui/material/Tab';
|
|
@@ -136,7 +136,7 @@ const AvatarContainer = styled(Box)(({ size = 'medium' }) => ({
|
|
|
136
136
|
alignItems: 'center',
|
|
137
137
|
justifyContent: 'center',
|
|
138
138
|
overflow: 'hidden',
|
|
139
|
-
boxShadow: `${shadows.
|
|
139
|
+
boxShadow: `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`,
|
|
140
140
|
}),
|
|
141
141
|
'&:focus-within': {
|
|
142
142
|
...focusRingStyles,
|
|
@@ -688,11 +688,11 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
688
688
|
*/
|
|
689
689
|
|
|
690
690
|
|
|
691
|
-
const __iconNode$
|
|
691
|
+
const __iconNode$k = [
|
|
692
692
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
693
693
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
694
694
|
];
|
|
695
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
695
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$k);
|
|
696
696
|
|
|
697
697
|
/**
|
|
698
698
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -702,11 +702,32 @@ const ArrowDown = createLucideIcon("arrow-down", __iconNode$i);
|
|
|
702
702
|
*/
|
|
703
703
|
|
|
704
704
|
|
|
705
|
-
const __iconNode$
|
|
705
|
+
const __iconNode$j = [
|
|
706
706
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
707
707
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
708
708
|
];
|
|
709
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
709
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$j);
|
|
710
|
+
|
|
711
|
+
/**
|
|
712
|
+
* @license lucide-react v0.577.0 - ISC
|
|
713
|
+
*
|
|
714
|
+
* This source code is licensed under the ISC license.
|
|
715
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
716
|
+
*/
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
const __iconNode$i = [
|
|
720
|
+
[
|
|
721
|
+
"path",
|
|
722
|
+
{
|
|
723
|
+
d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",
|
|
724
|
+
key: "3c2336"
|
|
725
|
+
}
|
|
726
|
+
],
|
|
727
|
+
["line", { x1: "12", x2: "12", y1: "16", y2: "12", key: "1y1yb1" }],
|
|
728
|
+
["line", { x1: "12", x2: "12.01", y1: "8", y2: "8", key: "110wyk" }]
|
|
729
|
+
];
|
|
730
|
+
const BadgeInfo = createLucideIcon("badge-info", __iconNode$i);
|
|
710
731
|
|
|
711
732
|
/**
|
|
712
733
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -716,7 +737,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$h);
|
|
|
716
737
|
*/
|
|
717
738
|
|
|
718
739
|
|
|
719
|
-
const __iconNode$
|
|
740
|
+
const __iconNode$h = [
|
|
720
741
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
721
742
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
722
743
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
@@ -728,7 +749,7 @@ const __iconNode$g = [
|
|
|
728
749
|
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
729
750
|
["path", { d: "M16 18h.01", key: "kzsmim" }]
|
|
730
751
|
];
|
|
731
|
-
const CalendarDays = createLucideIcon("calendar-days", __iconNode$
|
|
752
|
+
const CalendarDays = createLucideIcon("calendar-days", __iconNode$h);
|
|
732
753
|
|
|
733
754
|
/**
|
|
734
755
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -738,8 +759,8 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$g);
|
|
|
738
759
|
*/
|
|
739
760
|
|
|
740
761
|
|
|
741
|
-
const __iconNode$
|
|
742
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
762
|
+
const __iconNode$g = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
763
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$g);
|
|
743
764
|
|
|
744
765
|
/**
|
|
745
766
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -749,8 +770,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
|
|
|
749
770
|
*/
|
|
750
771
|
|
|
751
772
|
|
|
752
|
-
const __iconNode$
|
|
753
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
773
|
+
const __iconNode$f = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
774
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$f);
|
|
754
775
|
|
|
755
776
|
/**
|
|
756
777
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -760,8 +781,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$e);
|
|
|
760
781
|
*/
|
|
761
782
|
|
|
762
783
|
|
|
763
|
-
const __iconNode$
|
|
764
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
784
|
+
const __iconNode$e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
785
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$e);
|
|
765
786
|
|
|
766
787
|
/**
|
|
767
788
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -771,8 +792,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
|
|
|
771
792
|
*/
|
|
772
793
|
|
|
773
794
|
|
|
774
|
-
const __iconNode$
|
|
775
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
795
|
+
const __iconNode$d = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
796
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$d);
|
|
776
797
|
|
|
777
798
|
/**
|
|
778
799
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -782,11 +803,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$c);
|
|
|
782
803
|
*/
|
|
783
804
|
|
|
784
805
|
|
|
785
|
-
const __iconNode$
|
|
806
|
+
const __iconNode$c = [
|
|
786
807
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
787
808
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
788
809
|
];
|
|
789
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
810
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$c);
|
|
790
811
|
|
|
791
812
|
/**
|
|
792
813
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -796,12 +817,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$b);
|
|
|
796
817
|
*/
|
|
797
818
|
|
|
798
819
|
|
|
799
|
-
const __iconNode$
|
|
820
|
+
const __iconNode$b = [
|
|
800
821
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
801
822
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
802
823
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
803
824
|
];
|
|
804
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
825
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$b);
|
|
805
826
|
|
|
806
827
|
/**
|
|
807
828
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -811,11 +832,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$a);
|
|
|
811
832
|
*/
|
|
812
833
|
|
|
813
834
|
|
|
814
|
-
const __iconNode$
|
|
815
|
-
["
|
|
816
|
-
["path", { d: "m9
|
|
835
|
+
const __iconNode$a = [
|
|
836
|
+
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
837
|
+
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
817
838
|
];
|
|
818
|
-
const
|
|
839
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$a);
|
|
819
840
|
|
|
820
841
|
/**
|
|
821
842
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -825,12 +846,12 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$9);
|
|
|
825
846
|
*/
|
|
826
847
|
|
|
827
848
|
|
|
828
|
-
const __iconNode$
|
|
849
|
+
const __iconNode$9 = [
|
|
829
850
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
830
851
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
831
852
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
832
853
|
];
|
|
833
|
-
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$
|
|
854
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$9);
|
|
834
855
|
|
|
835
856
|
/**
|
|
836
857
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -840,12 +861,12 @@ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$8
|
|
|
840
861
|
*/
|
|
841
862
|
|
|
842
863
|
|
|
843
|
-
const __iconNode$
|
|
864
|
+
const __iconNode$8 = [
|
|
844
865
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
845
866
|
["path", { d: "M9 3v18", key: "fh3hqa" }],
|
|
846
867
|
["path", { d: "M15 3v18", key: "14nvp0" }]
|
|
847
868
|
];
|
|
848
|
-
const Columns3 = createLucideIcon("columns-3", __iconNode$
|
|
869
|
+
const Columns3 = createLucideIcon("columns-3", __iconNode$8);
|
|
849
870
|
|
|
850
871
|
/**
|
|
851
872
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -855,12 +876,12 @@ const Columns3 = createLucideIcon("columns-3", __iconNode$7);
|
|
|
855
876
|
*/
|
|
856
877
|
|
|
857
878
|
|
|
858
|
-
const __iconNode$
|
|
859
|
-
["
|
|
860
|
-
["path", { d: "
|
|
861
|
-
["path", { d: "
|
|
879
|
+
const __iconNode$7 = [
|
|
880
|
+
["path", { d: "M2 5h20", key: "1fs1ex" }],
|
|
881
|
+
["path", { d: "M6 12h12", key: "8npq4p" }],
|
|
882
|
+
["path", { d: "M9 19h6", key: "456am0" }]
|
|
862
883
|
];
|
|
863
|
-
const
|
|
884
|
+
const ListFilter = createLucideIcon("list-filter", __iconNode$7);
|
|
864
885
|
|
|
865
886
|
/**
|
|
866
887
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -870,12 +891,8 @@ const Info = createLucideIcon("info", __iconNode$6);
|
|
|
870
891
|
*/
|
|
871
892
|
|
|
872
893
|
|
|
873
|
-
const __iconNode$
|
|
874
|
-
|
|
875
|
-
["path", { d: "M6 12h12", key: "8npq4p" }],
|
|
876
|
-
["path", { d: "M9 19h6", key: "456am0" }]
|
|
877
|
-
];
|
|
878
|
-
const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
894
|
+
const __iconNode$6 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
|
|
895
|
+
const Minus = createLucideIcon("minus", __iconNode$6);
|
|
879
896
|
|
|
880
897
|
/**
|
|
881
898
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -885,11 +902,11 @@ const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
|
885
902
|
*/
|
|
886
903
|
|
|
887
904
|
|
|
888
|
-
const __iconNode$
|
|
905
|
+
const __iconNode$5 = [
|
|
889
906
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
890
907
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
891
908
|
];
|
|
892
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
909
|
+
const Plus = createLucideIcon("plus", __iconNode$5);
|
|
893
910
|
|
|
894
911
|
/**
|
|
895
912
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -899,11 +916,11 @@ const Plus = createLucideIcon("plus", __iconNode$4);
|
|
|
899
916
|
*/
|
|
900
917
|
|
|
901
918
|
|
|
902
|
-
const __iconNode$
|
|
919
|
+
const __iconNode$4 = [
|
|
903
920
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
904
921
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
905
922
|
];
|
|
906
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
923
|
+
const Search = createLucideIcon("search", __iconNode$4);
|
|
907
924
|
|
|
908
925
|
/**
|
|
909
926
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -913,14 +930,35 @@ const Search = createLucideIcon("search", __iconNode$3);
|
|
|
913
930
|
*/
|
|
914
931
|
|
|
915
932
|
|
|
916
|
-
const __iconNode$
|
|
933
|
+
const __iconNode$3 = [
|
|
917
934
|
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
918
935
|
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
919
936
|
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
920
937
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
921
938
|
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
922
939
|
];
|
|
923
|
-
const Trash2 = createLucideIcon("trash-2", __iconNode$
|
|
940
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode$3);
|
|
941
|
+
|
|
942
|
+
/**
|
|
943
|
+
* @license lucide-react v0.577.0 - ISC
|
|
944
|
+
*
|
|
945
|
+
* This source code is licensed under the ISC license.
|
|
946
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
947
|
+
*/
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
const __iconNode$2 = [
|
|
951
|
+
[
|
|
952
|
+
"path",
|
|
953
|
+
{
|
|
954
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
955
|
+
key: "wmoenq"
|
|
956
|
+
}
|
|
957
|
+
],
|
|
958
|
+
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
959
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
960
|
+
];
|
|
961
|
+
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$2);
|
|
924
962
|
|
|
925
963
|
/**
|
|
926
964
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -955,33 +993,113 @@ const __iconNode = [
|
|
|
955
993
|
];
|
|
956
994
|
const X = createLucideIcon("x", __iconNode);
|
|
957
995
|
|
|
996
|
+
const neutralSmallShadow = `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`;
|
|
997
|
+
const intentColors$1 = {
|
|
998
|
+
success: semanticColors.status.success,
|
|
999
|
+
error: semanticColors.status.error,
|
|
1000
|
+
warning: semanticColors.status.warning,
|
|
1001
|
+
offline: semanticColors.status.neutral,
|
|
1002
|
+
info: semanticColors.status.info,
|
|
1003
|
+
};
|
|
958
1004
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
959
1005
|
const StyledAlert$2 = styled(Alert, {
|
|
960
|
-
shouldForwardProp: prop => prop !== '
|
|
961
|
-
})(({
|
|
962
|
-
|
|
963
|
-
const
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
1006
|
+
shouldForwardProp: prop => prop !== 'intent' && prop !== 'alertType',
|
|
1007
|
+
})(({ theme, intent = 'success', alertType = 'outlined' }) => {
|
|
1008
|
+
const palette = intentColors$1[intent];
|
|
1009
|
+
const isFilled = alertType === 'filled';
|
|
1010
|
+
const iconColor = isFilled ? semanticColors.typography.tooltip : palette.default;
|
|
1011
|
+
const messageColor = isFilled ? semanticColors.typography.tooltip : semanticColors.typography.body;
|
|
1012
|
+
return {
|
|
1013
|
+
height: spacing.spacing_8,
|
|
1014
|
+
width: '100%',
|
|
1015
|
+
borderRadius: borderRadius.xS,
|
|
1016
|
+
alignItems: 'center',
|
|
1017
|
+
fontFamily: typography.fontFamily.body,
|
|
1018
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
1019
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
1020
|
+
lineHeight: 1.5,
|
|
1021
|
+
padding: theme.spacing(0, 2),
|
|
1022
|
+
backgroundColor: isFilled ? palette.dark : palette.light,
|
|
1023
|
+
border: isFilled ? 'none' : `1px solid ${palette.transparent}`,
|
|
1024
|
+
color: isFilled ? semanticColors.typography.tooltip : semanticColors.typography.body,
|
|
1025
|
+
boxShadow: isFilled ? neutralSmallShadow : undefined,
|
|
1026
|
+
[`& .${alertClasses.icon}`]: {
|
|
1027
|
+
color: iconColor,
|
|
1028
|
+
padding: 0,
|
|
1029
|
+
opacity: 1,
|
|
1030
|
+
marginRight: spacing.spacing_1_1_2,
|
|
975
1031
|
},
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
1032
|
+
[`& .${alertClasses.message}`]: {
|
|
1033
|
+
color: messageColor,
|
|
1034
|
+
padding: 0,
|
|
1035
|
+
flex: 1,
|
|
1036
|
+
display: 'flex',
|
|
1037
|
+
flexDirection: 'column',
|
|
1038
|
+
justifyContent: 'center',
|
|
1039
|
+
'& span:last-child': {
|
|
1040
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
1041
|
+
fontWeight: typography.fontWeight.medium,
|
|
1042
|
+
color: isFilled
|
|
1043
|
+
? semanticColors.typography.tooltip
|
|
1044
|
+
: semanticColors.typography.bodySecondary,
|
|
1045
|
+
lineHeight: 1.4,
|
|
1046
|
+
},
|
|
979
1047
|
},
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
1048
|
+
[`& .${alertClasses.action}`]: {
|
|
1049
|
+
padding: 0,
|
|
1050
|
+
marginRight: 0,
|
|
1051
|
+
...(isFilled && {
|
|
1052
|
+
color: semanticColors.typography.tooltip,
|
|
1053
|
+
[`& .${buttonBaseClasses.root}`]: { color: 'inherit' },
|
|
1054
|
+
}),
|
|
983
1055
|
},
|
|
984
1056
|
};
|
|
1057
|
+
});
|
|
1058
|
+
const iconMap = {
|
|
1059
|
+
success: jsx(CircleCheckBig, { size: 24 }),
|
|
1060
|
+
error: jsx(CircleAlert, { size: 24 }),
|
|
1061
|
+
warning: jsx(TriangleAlert, { size: 24 }),
|
|
1062
|
+
offline: jsx(WifiOff, { size: 24 }),
|
|
1063
|
+
info: jsx(BadgeInfo, { size: 24 }),
|
|
1064
|
+
};
|
|
1065
|
+
/**
|
|
1066
|
+
* NeoAlert - Alert component for displaying contextual status messages
|
|
1067
|
+
*
|
|
1068
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427
|
|
1069
|
+
*
|
|
1070
|
+
* Figma Props Mapping:
|
|
1071
|
+
* - Intent (Success|Error|Warning|Offline|Info) → intent
|
|
1072
|
+
* - Type (Outlined|Filled) → type
|
|
1073
|
+
* - Show supporting text → description prop presence
|
|
1074
|
+
* - Show Button → action prop presence
|
|
1075
|
+
*/
|
|
1076
|
+
const NeoAlert = ({ intent = 'success', type = 'outlined', title, description, icon, action, ...props }) => {
|
|
1077
|
+
const defaultIcon = iconMap[intent];
|
|
1078
|
+
return (jsxs(StyledAlert$2, { ...props, intent: intent, alertType: type, icon: icon ?? defaultIcon, action: action, children: [jsx("span", { children: title }), description && jsx("span", { children: description })] }));
|
|
1079
|
+
};
|
|
1080
|
+
NeoAlert.displayName = 'NeoAlert';
|
|
1081
|
+
|
|
1082
|
+
const intentColors = {
|
|
1083
|
+
info: semanticColors.status.info,
|
|
1084
|
+
success: semanticColors.status.success,
|
|
1085
|
+
error: semanticColors.status.error,
|
|
1086
|
+
warning: semanticColors.status.warning,
|
|
1087
|
+
neutral: semanticColors.status.neutral,
|
|
1088
|
+
};
|
|
1089
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
1090
|
+
const StyledAlert$1 = styled(Alert, {
|
|
1091
|
+
shouldForwardProp: prop => prop !== 'messagePosition' && prop !== 'intent' && prop !== 'bannerType',
|
|
1092
|
+
})(({ intent = 'info', bannerType = 'outlined', messagePosition = 'left' }) => {
|
|
1093
|
+
const palette = intentColors[intent];
|
|
1094
|
+
const typeStyles = bannerType === 'filled'
|
|
1095
|
+
? {
|
|
1096
|
+
backgroundColor: palette.dark,
|
|
1097
|
+
color: semanticColors.surfaces.white,
|
|
1098
|
+
}
|
|
1099
|
+
: {
|
|
1100
|
+
backgroundColor: palette.light,
|
|
1101
|
+
color: colors.grey['800'],
|
|
1102
|
+
};
|
|
985
1103
|
return {
|
|
986
1104
|
width: '100%',
|
|
987
1105
|
minHeight: 52,
|
|
@@ -993,11 +1111,11 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
993
1111
|
alignItems: 'center',
|
|
994
1112
|
justifyContent: messagePosition === 'center' ? 'center' : 'flex-start',
|
|
995
1113
|
...(messagePosition === 'center' && { position: 'relative' }),
|
|
996
|
-
boxShadow: `${shadows.
|
|
1114
|
+
boxShadow: `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`,
|
|
997
1115
|
fontSize: typography.fontSize.default,
|
|
998
|
-
fontWeight: typography.fontWeight.
|
|
1116
|
+
fontWeight: typography.fontWeight.medium,
|
|
999
1117
|
lineHeight: 1.5,
|
|
1000
|
-
...
|
|
1118
|
+
...typeStyles,
|
|
1001
1119
|
[`& .${alertClasses.icon}`]: {
|
|
1002
1120
|
padding: 0,
|
|
1003
1121
|
opacity: 1,
|
|
@@ -1020,26 +1138,18 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
1020
1138
|
},
|
|
1021
1139
|
};
|
|
1022
1140
|
});
|
|
1023
|
-
const LinkText = styled('span')(({
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
fontWeight: typography.fontWeight.semiBold,
|
|
1036
|
-
color: getLinkColor(),
|
|
1037
|
-
cursor: 'pointer',
|
|
1038
|
-
'&:hover': {
|
|
1039
|
-
textDecoration: 'underline',
|
|
1040
|
-
},
|
|
1041
|
-
};
|
|
1042
|
-
});
|
|
1141
|
+
const LinkText = styled('span')(({ bannerType = 'outlined' }) => ({
|
|
1142
|
+
marginLeft: 'auto',
|
|
1143
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
1144
|
+
color: bannerType === 'filled'
|
|
1145
|
+
? semanticColors.typography.link.white
|
|
1146
|
+
: semanticColors.typography.link.primary,
|
|
1147
|
+
cursor: 'pointer',
|
|
1148
|
+
whiteSpace: 'nowrap',
|
|
1149
|
+
'&:hover': {
|
|
1150
|
+
textDecoration: 'underline',
|
|
1151
|
+
},
|
|
1152
|
+
}));
|
|
1043
1153
|
const StyledIconButton$1 = styled(IconButton)(({ closeIconColor }) => ({
|
|
1044
1154
|
padding: 0,
|
|
1045
1155
|
color: closeIconColor,
|
|
@@ -1047,35 +1157,17 @@ const StyledIconButton$1 = styled(IconButton)(({ closeIconColor }) => ({
|
|
|
1047
1157
|
backgroundColor: 'transparent',
|
|
1048
1158
|
},
|
|
1049
1159
|
}));
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
* Figma Props Mapping:
|
|
1056
|
-
* - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)
|
|
1057
|
-
* - messagePosition (Left|Center) → messagePosition ("left"|"center")
|
|
1058
|
-
* - closeIcon (boolean) → showClose (boolean)
|
|
1059
|
-
* - link (boolean) → linkText (string)
|
|
1060
|
-
* - {Message} → message (string)
|
|
1061
|
-
*/
|
|
1062
|
-
const NeoBanner = ({ variant = 'light', message, messagePosition = 'left', linkText, showClose = true, icon, onClose, onLinkClick, ...props }) => {
|
|
1063
|
-
const getCloseIconColor = () => {
|
|
1064
|
-
if (variant === 'dark') {
|
|
1065
|
-
return semanticColors.surfaces.white;
|
|
1066
|
-
}
|
|
1067
|
-
if (variant === 'success') {
|
|
1068
|
-
return semanticColors.status.success.default;
|
|
1069
|
-
}
|
|
1070
|
-
if (variant === 'error') {
|
|
1071
|
-
return semanticColors.status.error.default;
|
|
1072
|
-
}
|
|
1073
|
-
if (variant === 'warning') {
|
|
1074
|
-
return semanticColors.status.warning.default;
|
|
1075
|
-
}
|
|
1076
|
-
return colors.grey['800'];
|
|
1160
|
+
const NeoBanner = ({ intent = 'info', type = 'outlined', message, messagePosition = 'left', linkText, showClose = false, icon, onClose, onLinkClick, ...props }) => {
|
|
1161
|
+
const [dismissed, setDismissed] = useState(false);
|
|
1162
|
+
const handleClose = () => {
|
|
1163
|
+
setDismissed(true);
|
|
1164
|
+
onClose?.();
|
|
1077
1165
|
};
|
|
1078
|
-
|
|
1166
|
+
if (dismissed) {
|
|
1167
|
+
return null;
|
|
1168
|
+
}
|
|
1169
|
+
const closeIconColor = type === 'filled' ? semanticColors.surfaces.white : intentColors[intent].default;
|
|
1170
|
+
return (jsx(StyledAlert$1, { ...props, intent: intent, bannerType: type, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsx(StyledIconButton$1, { size: "small", onClick: handleClose, closeIconColor: closeIconColor, children: jsx(X, { size: 24 }) })) : undefined, children: messagePosition === 'center' ? (jsxs(Fragment, { children: [icon, jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) : (jsxs(Fragment, { children: [jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) }));
|
|
1079
1171
|
};
|
|
1080
1172
|
NeoBanner.displayName = 'NeoBanner';
|
|
1081
1173
|
|
|
@@ -1527,56 +1619,247 @@ const NeoButtonTabGroup = ({ size = 'medium', exclusive = true, ...props }) => {
|
|
|
1527
1619
|
};
|
|
1528
1620
|
NeoButtonTabGroup.displayName = 'NeoButtonTabGroup';
|
|
1529
1621
|
|
|
1530
|
-
//
|
|
1531
|
-
const
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
}
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1622
|
+
// ─── Shared ──────────────────────────────────────────────────────────────────
|
|
1623
|
+
const activeShadow = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
1624
|
+
// ─── Small card styled components ────────────────────────────────────────────
|
|
1625
|
+
const SmallStyledCard = styled(MuiCard, {
|
|
1626
|
+
shouldForwardProp: prop => prop !== 'selected' && prop !== 'disabled',
|
|
1627
|
+
})(({ theme, selected, disabled }) => ({
|
|
1628
|
+
width: 160,
|
|
1629
|
+
height: 160,
|
|
1630
|
+
padding: theme.spacing(1.5), // 12px
|
|
1631
|
+
display: 'flex',
|
|
1632
|
+
flexDirection: 'column',
|
|
1633
|
+
gap: theme.spacing(2), // 16px
|
|
1634
|
+
backgroundColor: semanticColors.surfaces.card,
|
|
1635
|
+
border: `1px solid ${selected ? semanticColors.buttons.primary.default : semanticColors.border.primary}`,
|
|
1636
|
+
borderRadius: borderRadius.xS,
|
|
1637
|
+
boxShadow: selected ? activeShadow : 'none',
|
|
1638
|
+
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
1639
|
+
cursor: 'pointer',
|
|
1640
|
+
'&:hover': {
|
|
1641
|
+
borderColor: semanticColors.buttons.primary.default,
|
|
1642
|
+
boxShadow: activeShadow,
|
|
1643
|
+
},
|
|
1644
|
+
'&:focus-visible': {
|
|
1645
|
+
borderColor: semanticColors.buttons.primary.default,
|
|
1646
|
+
...focusRingStyles,
|
|
1647
|
+
},
|
|
1648
|
+
...(disabled && {
|
|
1649
|
+
opacity: 0.5,
|
|
1650
|
+
pointerEvents: 'none',
|
|
1651
|
+
cursor: 'not-allowed',
|
|
1652
|
+
}),
|
|
1653
|
+
}));
|
|
1654
|
+
const SmallCardHeader = styled('div')({
|
|
1655
|
+
display: 'flex',
|
|
1546
1656
|
alignItems: 'flex-start',
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1657
|
+
justifyContent: 'space-between',
|
|
1658
|
+
width: '100%',
|
|
1659
|
+
});
|
|
1660
|
+
const SmallLogoContainer = styled('div')({
|
|
1661
|
+
width: spacing.spacing_6,
|
|
1662
|
+
height: spacing.spacing_6,
|
|
1663
|
+
flexShrink: 0,
|
|
1664
|
+
});
|
|
1665
|
+
const SmallRecipeCount = styled('p')(({ theme }) => ({
|
|
1666
|
+
margin: 0,
|
|
1667
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xxs), // 10px
|
|
1668
|
+
fontWeight: typography.fontWeight.semiBold, // 600
|
|
1669
|
+
lineHeight: 1.2,
|
|
1670
|
+
color: colors.grey[800],
|
|
1671
|
+
whiteSpace: 'nowrap',
|
|
1550
1672
|
}));
|
|
1551
|
-
const
|
|
1673
|
+
const SmallCardContent = styled('div')(({ theme }) => ({
|
|
1552
1674
|
display: 'flex',
|
|
1553
1675
|
flexDirection: 'column',
|
|
1554
|
-
gap:
|
|
1676
|
+
gap: theme.spacing(2), // 16px
|
|
1677
|
+
width: '100%',
|
|
1555
1678
|
}));
|
|
1556
|
-
const
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1564
|
-
color: semanticColors.typography.input.default,
|
|
1679
|
+
const SmallTitle = styled('p')(({ theme }) => ({
|
|
1680
|
+
margin: 0,
|
|
1681
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.h6), // 16px
|
|
1682
|
+
fontWeight: typography.fontWeight.semiBold, // 600
|
|
1683
|
+
lineHeight: 1.4,
|
|
1684
|
+
color: colors.grey[800],
|
|
1685
|
+
width: '100%',
|
|
1565
1686
|
}));
|
|
1566
|
-
const
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1687
|
+
const SmallDescription = styled('p')(({ theme }) => ({
|
|
1688
|
+
margin: 0,
|
|
1689
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px
|
|
1690
|
+
fontWeight: typography.fontWeight.regular, // 400
|
|
1691
|
+
lineHeight: 1.5,
|
|
1692
|
+
color: colors.grey[800],
|
|
1693
|
+
width: '100%',
|
|
1694
|
+
display: '-webkit-box',
|
|
1695
|
+
WebkitLineClamp: 2,
|
|
1696
|
+
WebkitBoxOrient: 'vertical',
|
|
1697
|
+
overflow: 'hidden',
|
|
1698
|
+
textOverflow: 'ellipsis',
|
|
1575
1699
|
}));
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1700
|
+
const LargeStyledCard = styled(MuiCard, {
|
|
1701
|
+
shouldForwardProp: prop => prop !== 'disabled' && prop !== 'cardTheme',
|
|
1702
|
+
})(({ disabled = false, cardTheme = 'light' }) => {
|
|
1703
|
+
const isLight = cardTheme === 'light';
|
|
1704
|
+
const activeBorderColor = isLight
|
|
1705
|
+
? semanticColors.buttons.primary.default
|
|
1706
|
+
: colors.digitalGreen[300];
|
|
1707
|
+
const defaultBorderColor = isLight
|
|
1708
|
+
? semanticColors.border.primary
|
|
1709
|
+
: `${semanticColors.border.primary}80`;
|
|
1710
|
+
return {
|
|
1711
|
+
width: 340,
|
|
1712
|
+
height: 162,
|
|
1713
|
+
display: 'flex',
|
|
1714
|
+
flexDirection: 'column',
|
|
1715
|
+
justifyContent: 'space-between',
|
|
1716
|
+
alignItems: 'flex-start',
|
|
1717
|
+
padding: spacing.spacing_2,
|
|
1718
|
+
borderRadius: borderRadius.xS,
|
|
1719
|
+
backgroundColor: isLight ? semanticColors.surfaces.card : colors.grey[800],
|
|
1720
|
+
border: `1px solid ${defaultBorderColor}`,
|
|
1721
|
+
boxShadow: 'none',
|
|
1722
|
+
overflow: 'hidden',
|
|
1723
|
+
cursor: 'pointer',
|
|
1724
|
+
transition: 'border-color 0.2s, box-shadow 0.2s',
|
|
1725
|
+
'&:hover': {
|
|
1726
|
+
borderColor: activeBorderColor,
|
|
1727
|
+
boxShadow: activeShadow,
|
|
1728
|
+
},
|
|
1729
|
+
'&:active': {
|
|
1730
|
+
borderColor: activeBorderColor,
|
|
1731
|
+
boxShadow: activeShadow,
|
|
1732
|
+
},
|
|
1733
|
+
'&:focus-visible': {
|
|
1734
|
+
borderColor: activeBorderColor,
|
|
1735
|
+
...focusRingStyles,
|
|
1736
|
+
},
|
|
1737
|
+
...(disabled && {
|
|
1738
|
+
opacity: 0.5,
|
|
1739
|
+
pointerEvents: 'none',
|
|
1740
|
+
cursor: 'not-allowed',
|
|
1741
|
+
}),
|
|
1742
|
+
};
|
|
1743
|
+
});
|
|
1744
|
+
const LargeTopSection = styled('div')({
|
|
1745
|
+
display: 'flex',
|
|
1746
|
+
flexDirection: 'column',
|
|
1747
|
+
gap: spacing.spacing_2,
|
|
1748
|
+
alignItems: 'flex-start',
|
|
1749
|
+
width: '100%',
|
|
1750
|
+
flexShrink: 0,
|
|
1751
|
+
});
|
|
1752
|
+
const LargeHeaderRow = styled('div')({
|
|
1753
|
+
display: 'flex',
|
|
1754
|
+
gap: spacing.spacing_1,
|
|
1755
|
+
alignItems: 'center',
|
|
1756
|
+
flexShrink: 0,
|
|
1757
|
+
});
|
|
1758
|
+
const LargeHeaderSlot = styled('div')({
|
|
1759
|
+
display: 'flex',
|
|
1760
|
+
flexDirection: 'column',
|
|
1761
|
+
alignItems: 'center',
|
|
1762
|
+
justifyContent: 'center',
|
|
1763
|
+
width: 20,
|
|
1764
|
+
height: 20,
|
|
1765
|
+
flexShrink: 0,
|
|
1766
|
+
});
|
|
1767
|
+
const LargeHeaderTitle = styled('span', {
|
|
1768
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
1769
|
+
})(({ cardTheme = 'light' }) => ({
|
|
1770
|
+
fontFamily: `${typography.fontFamily.heading}, sans-serif`,
|
|
1771
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
1772
|
+
fontSize: typography.fontSize.h6,
|
|
1773
|
+
lineHeight: 1.4,
|
|
1774
|
+
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
1775
|
+
flexShrink: 0,
|
|
1776
|
+
}));
|
|
1777
|
+
const LargeDescription = styled('p', {
|
|
1778
|
+
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
1779
|
+
})(({ cardTheme = 'light' }) => ({
|
|
1780
|
+
fontFamily: `${typography.fontFamily.body}, sans-serif`,
|
|
1781
|
+
fontWeight: typography.fontWeight.regular,
|
|
1782
|
+
fontSize: typography.fontSize.xs,
|
|
1783
|
+
lineHeight: 1.5,
|
|
1784
|
+
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
1785
|
+
margin: 0,
|
|
1786
|
+
minWidth: '100%',
|
|
1787
|
+
wordWrap: 'break-word',
|
|
1788
|
+
}));
|
|
1789
|
+
const LargeButtonsRow = styled('div')({
|
|
1790
|
+
display: 'flex',
|
|
1791
|
+
gap: spacing.spacing_3,
|
|
1792
|
+
alignItems: 'flex-start',
|
|
1793
|
+
flexShrink: 0,
|
|
1794
|
+
});
|
|
1795
|
+
// ─── Internal implementations ────────────────────────────────────────────────
|
|
1796
|
+
const SmallCardImpl = ({ logo, recipeCount, title, description, selected = false, disabled = false, onClick, ...props }) => {
|
|
1797
|
+
return (jsxs(SmallStyledCard, { selected: selected, disabled: disabled, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, role: "button", "aria-disabled": disabled, "aria-pressed": selected, ...props, children: [jsxs(SmallCardHeader, { children: [jsx(SmallLogoContainer, { children: logo }), jsx(SmallRecipeCount, { children: recipeCount })] }), jsxs(SmallCardContent, { children: [jsx(SmallTitle, { children: title }), jsx(SmallDescription, { children: description })] })] }));
|
|
1798
|
+
};
|
|
1799
|
+
const LargeCardImpl = ({ disabled = false, cardTheme = 'light', showIcon = true, showGel = true, showButtons = true, icon, gel, title, children, actions, onClick, ...props }) => {
|
|
1800
|
+
return (jsxs(LargeStyledCard, { disabled: disabled, cardTheme: cardTheme, onClick: disabled ? undefined : onClick, tabIndex: disabled ? -1 : 0, "aria-disabled": disabled || undefined, ...props, children: [jsxs(LargeTopSection, { children: [jsxs(LargeHeaderRow, { children: [showIcon && icon && jsx(LargeHeaderSlot, { children: icon }), showGel && gel && jsx(LargeHeaderSlot, { children: gel }), title && jsx(LargeHeaderTitle, { cardTheme: cardTheme, children: title })] }), children && jsx(LargeDescription, { cardTheme: cardTheme, children: children })] }), showButtons && actions && jsx(LargeButtonsRow, { children: actions })] }));
|
|
1801
|
+
};
|
|
1802
|
+
// ─── Exported component ──────────────────────────────────────────────────────
|
|
1803
|
+
const NeoCard = (props) => {
|
|
1804
|
+
if (props.size === 'small') {
|
|
1805
|
+
const { size: _, ...rest } = props;
|
|
1806
|
+
return jsx(SmallCardImpl, { ...rest });
|
|
1807
|
+
}
|
|
1808
|
+
const { size: _, ...rest } = props;
|
|
1809
|
+
return jsx(LargeCardImpl, { ...rest });
|
|
1810
|
+
};
|
|
1811
|
+
NeoCard.displayName = 'NeoCard';
|
|
1812
|
+
|
|
1813
|
+
// Border radius per size (from Figma)
|
|
1814
|
+
const borderRadiusConfig = {
|
|
1815
|
+
xs: 2,
|
|
1816
|
+
small: 3,
|
|
1817
|
+
medium: 4,
|
|
1818
|
+
};
|
|
1819
|
+
// Unchecked: Rounded square outline (20x20 viewBox)
|
|
1820
|
+
const UncheckedIcon$1 = ({ size = 'medium' }) => (jsx(SvgIcon, { viewBox: "0 0 20 20", children: jsx("rect", { x: "1", y: "1", width: "18", height: "18", rx: borderRadiusConfig[size], fill: "none", stroke: "currentColor", strokeWidth: "1.5" }) }));
|
|
1821
|
+
// Checked: Filled rounded square with white checkmark
|
|
1822
|
+
// Path scaled from Untitled UI 24x24 (M20 6L9 17L4 12) to 20x20
|
|
1823
|
+
const CheckedIcon$1 = ({ size = 'medium' }) => (jsxs(SvgIcon, { viewBox: "0 0 20 20", children: [jsx("rect", { width: "20", height: "20", rx: borderRadiusConfig[size], fill: "currentColor" }), jsx("path", { d: "M15 6L8.5 13L5 9.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] }));
|
|
1824
|
+
// Indeterminate: Filled rounded square with white minus
|
|
1825
|
+
// Path scaled from Untitled UI 24x24 (M5 12H19) to 20x20
|
|
1826
|
+
const IndeterminateIcon = ({ size = 'medium' }) => (jsxs(SvgIcon, { viewBox: "0 0 20 20", children: [jsx("rect", { width: "20", height: "20", rx: borderRadiusConfig[size], fill: "currentColor" }), jsx("path", { d: "M5 10H15", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", fill: "none" })] }));
|
|
1827
|
+
const CheckboxContainer = styled('label')(({ disabled }) => ({
|
|
1828
|
+
display: 'inline-flex',
|
|
1829
|
+
alignItems: 'flex-start',
|
|
1830
|
+
gap: spacing.spacing_1,
|
|
1831
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
1832
|
+
userSelect: 'none',
|
|
1833
|
+
}));
|
|
1834
|
+
const LabelContainer$4 = styled('div')(({ size = 'medium' }) => ({
|
|
1835
|
+
display: 'flex',
|
|
1836
|
+
flexDirection: 'column',
|
|
1837
|
+
gap: size === 'medium' ? 2 : 0,
|
|
1838
|
+
}));
|
|
1839
|
+
const Label$4 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
1840
|
+
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
1841
|
+
? typography.fontSize.xs
|
|
1842
|
+
: size === 'small'
|
|
1843
|
+
? typography.fontSize.sm
|
|
1844
|
+
: typography.fontSize.default),
|
|
1845
|
+
fontWeight: typography.fontWeight.medium,
|
|
1846
|
+
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1847
|
+
color: semanticColors.typography.input.default,
|
|
1848
|
+
}));
|
|
1849
|
+
const HelperText$2 = styled('span')(({ theme, size = 'medium' }) => ({
|
|
1850
|
+
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
1851
|
+
? typography.fontSize.xs
|
|
1852
|
+
: size === 'small'
|
|
1853
|
+
? typography.fontSize.sm
|
|
1854
|
+
: typography.fontSize.default),
|
|
1855
|
+
fontWeight: typography.fontWeight.regular,
|
|
1856
|
+
lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
|
|
1857
|
+
color: semanticColors.typography.bodySecondary,
|
|
1858
|
+
}));
|
|
1859
|
+
// Figma-exact border radius for xs checkbox — no matching design token
|
|
1860
|
+
const FIGMA_XS_BORDER_RADIUS = 1;
|
|
1861
|
+
const StyledCheckbox = styled(Checkbox, {
|
|
1862
|
+
shouldForwardProp: prop => prop !== 'size',
|
|
1580
1863
|
})(({ size = 'medium' }) => {
|
|
1581
1864
|
// Size configurations
|
|
1582
1865
|
const sizeConfig = {
|
|
@@ -1600,6 +1883,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1600
1883
|
padding: 0,
|
|
1601
1884
|
marginTop: size === 'xs' ? 3 : 2,
|
|
1602
1885
|
color: semanticColors.border.primary,
|
|
1886
|
+
borderRadius: config.borderRadius,
|
|
1603
1887
|
flexShrink: 0,
|
|
1604
1888
|
// Root element
|
|
1605
1889
|
[`&.${checkboxClasses.root}`]: {
|
|
@@ -1650,7 +1934,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1650
1934
|
/**
|
|
1651
1935
|
* NeoCheckbox - Checkbox component based on MUI Checkbox
|
|
1652
1936
|
*
|
|
1653
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
1937
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
1654
1938
|
*
|
|
1655
1939
|
* Figma Props Mapping:
|
|
1656
1940
|
* - Checked (True|False) → checked prop
|
|
@@ -1806,9 +2090,9 @@ const IconWrapper$2 = styled('span')(({ theme, isMultiline }) => ({
|
|
|
1806
2090
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
|
|
1807
2091
|
*
|
|
1808
2092
|
* Figma Props Mapping:
|
|
1809
|
-
* -
|
|
1810
|
-
* -
|
|
1811
|
-
* -
|
|
2093
|
+
* - Theme (Dark|Light) → variant (filled|outlined)
|
|
2094
|
+
* - Content (Multi|Inline) → size prop + auto-detected multiline
|
|
2095
|
+
* - Show icon → endIcon (ReactNode, unmappable: boolean vs ReactNode)
|
|
1812
2096
|
* - Text content → children prop
|
|
1813
2097
|
*/
|
|
1814
2098
|
const NeoCodeSnippet = ({ variant = 'outlined', size = 'small', endIcon, children, ...props }) => {
|
|
@@ -2676,9 +2960,9 @@ const StyledChip$1 = styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2676
2960
|
* - state (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2677
2961
|
* - Label text → label prop
|
|
2678
2962
|
*/
|
|
2679
|
-
|
|
2963
|
+
function NeoTag({ size = 'small', variant = 'outlined', ...props }) {
|
|
2680
2964
|
return jsx(StyledChip$1, { size: size, variant: variant, ...props });
|
|
2681
|
-
}
|
|
2965
|
+
}
|
|
2682
2966
|
NeoTag.displayName = 'NeoTag';
|
|
2683
2967
|
|
|
2684
2968
|
/**
|
|
@@ -3638,6 +3922,84 @@ const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...prop
|
|
|
3638
3922
|
};
|
|
3639
3923
|
NeoDot.displayName = 'NeoDot';
|
|
3640
3924
|
|
|
3925
|
+
const StyledRoot$1 = styled(Paper)({
|
|
3926
|
+
padding: spacing.spacing_2,
|
|
3927
|
+
borderRadius: borderRadius.s,
|
|
3928
|
+
backgroundColor: semanticColors.surfaces.snackbarDarkMode,
|
|
3929
|
+
color: colors.grey['800'],
|
|
3930
|
+
border: `1px solid ${semanticColors.border.primary}`,
|
|
3931
|
+
display: 'flex',
|
|
3932
|
+
flexDirection: 'column',
|
|
3933
|
+
gap: spacing.spacing_3,
|
|
3934
|
+
});
|
|
3935
|
+
const Title = styled('p')(({ theme }) => ({
|
|
3936
|
+
margin: 0,
|
|
3937
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
3938
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
3939
|
+
lineHeight: 1.4,
|
|
3940
|
+
color: colors.grey['700'],
|
|
3941
|
+
}));
|
|
3942
|
+
const FileName = styled('p')(({ theme }) => ({
|
|
3943
|
+
margin: 0,
|
|
3944
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
3945
|
+
fontWeight: typography.fontWeight.medium,
|
|
3946
|
+
lineHeight: 1.5,
|
|
3947
|
+
color: colors.grey['800'],
|
|
3948
|
+
overflow: 'hidden',
|
|
3949
|
+
textOverflow: 'ellipsis',
|
|
3950
|
+
whiteSpace: 'nowrap',
|
|
3951
|
+
minWidth: 0,
|
|
3952
|
+
}));
|
|
3953
|
+
const ProgressLabel$1 = styled('p')(({ theme }) => ({
|
|
3954
|
+
margin: 0,
|
|
3955
|
+
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
3956
|
+
fontWeight: typography.fontWeight.medium,
|
|
3957
|
+
lineHeight: 1.5,
|
|
3958
|
+
color: colors.grey['800'],
|
|
3959
|
+
flexShrink: 0,
|
|
3960
|
+
}));
|
|
3961
|
+
const StyledLinearProgress$1 = styled(LinearProgress)({
|
|
3962
|
+
width: '100%',
|
|
3963
|
+
height: spacing.spacing_1,
|
|
3964
|
+
borderRadius: borderRadius.s,
|
|
3965
|
+
backgroundColor: colors.grey['200'],
|
|
3966
|
+
[`& .${linearProgressClasses.bar}`]: {
|
|
3967
|
+
backgroundColor: semanticColors.buttons.primary.default,
|
|
3968
|
+
borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,
|
|
3969
|
+
},
|
|
3970
|
+
});
|
|
3971
|
+
const ActionButton = styled(IconButton)({
|
|
3972
|
+
padding: 0,
|
|
3973
|
+
width: spacing.spacing_2,
|
|
3974
|
+
height: spacing.spacing_2,
|
|
3975
|
+
color: colors.grey['500'],
|
|
3976
|
+
'&:hover': {
|
|
3977
|
+
backgroundColor: 'transparent',
|
|
3978
|
+
},
|
|
3979
|
+
});
|
|
3980
|
+
/**
|
|
3981
|
+
* NeoDownloadToast - Standalone download progress toast notification
|
|
3982
|
+
*
|
|
3983
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3377-26954
|
|
3984
|
+
*/
|
|
3985
|
+
const NeoDownloadToast = ({ title, fileName, progress, showClose = true, showPause = true, onClose, onPause, actions, ...props }) => {
|
|
3986
|
+
const renderActions = () => {
|
|
3987
|
+
if (actions)
|
|
3988
|
+
return actions;
|
|
3989
|
+
const hasActions = showPause || showClose;
|
|
3990
|
+
if (!hasActions)
|
|
3991
|
+
return null;
|
|
3992
|
+
return (jsxs(Stack, { direction: "row", gap: `${spacing.spacing_2}px`, sx: { alignItems: 'center' }, children: [showPause && (jsx(ActionButton, { size: "small", onClick: onPause, "aria-label": "Pause download", children: jsx(Minus, { size: spacing.spacing_2 }) })), showClose && (jsx(ActionButton, { size: "small", onClick: onClose, "aria-label": "Close", children: jsx(X, { size: spacing.spacing_2 }) }))] }));
|
|
3993
|
+
};
|
|
3994
|
+
return (jsxs(StyledRoot$1, { elevation: 0, role: "status", ...props, children: [jsxs(Stack, { direction: "row", sx: {
|
|
3995
|
+
alignItems: 'flex-start',
|
|
3996
|
+
justifyContent: 'space-between',
|
|
3997
|
+
width: '100%',
|
|
3998
|
+
gap: `${spacing.spacing_4}px`,
|
|
3999
|
+
}, children: [title && jsx(Title, { children: title }), renderActions()] }), jsxs(Stack, { gap: `${spacing.spacing_1}px`, sx: { width: '100%' }, children: [jsxs(Stack, { direction: "row", gap: `${spacing.spacing_2}px`, sx: { alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }, children: [fileName && jsx(FileName, { children: fileName }), progress !== undefined && jsxs(ProgressLabel$1, { children: [progress, "%"] })] }), jsx(StyledLinearProgress$1, { variant: "determinate", value: progress ?? 0 })] })] }));
|
|
4000
|
+
};
|
|
4001
|
+
NeoDownloadToast.displayName = 'NeoDownloadToast';
|
|
4002
|
+
|
|
3641
4003
|
const StyledMenu = styled(Menu)(({ theme }) => ({
|
|
3642
4004
|
[`& .${paperClasses.root}`]: {
|
|
3643
4005
|
backgroundColor: semanticColors.surfaces.white,
|
|
@@ -3822,11 +4184,11 @@ const StyledFooter = styled(Box, {
|
|
|
3822
4184
|
'&::before': {
|
|
3823
4185
|
content: showShadow ? '""' : 'none',
|
|
3824
4186
|
position: 'absolute',
|
|
3825
|
-
top: `-${shadows.
|
|
4187
|
+
top: `-${shadows.neutral.regular.blur}px`, // -4px
|
|
3826
4188
|
left: 0,
|
|
3827
4189
|
right: 0,
|
|
3828
|
-
height: `${shadows.
|
|
3829
|
-
background: `linear-gradient(to top, ${shadows.
|
|
4190
|
+
height: `${shadows.neutral.regular.blur}px`, // 4px
|
|
4191
|
+
background: `linear-gradient(to top, ${shadows.neutral.regular.shadow}, transparent)`, // rgba(31, 41, 55, 0.1)
|
|
3830
4192
|
pointerEvents: 'none',
|
|
3831
4193
|
},
|
|
3832
4194
|
[theme.breakpoints.down('sm')]: {
|
|
@@ -4245,7 +4607,7 @@ const InfoIconWrapper = styled('span')({
|
|
|
4245
4607
|
});
|
|
4246
4608
|
const StyledInputBase = styled(InputBase, {
|
|
4247
4609
|
shouldForwardProp: prop => prop !== 'size' && prop !== 'destructive',
|
|
4248
|
-
})(({ theme, size = 'medium', destructive, startAdornment }) => {
|
|
4610
|
+
})(({ theme, size = 'medium', destructive, startAdornment, multiline }) => {
|
|
4249
4611
|
const sizeConfig = {
|
|
4250
4612
|
small: {
|
|
4251
4613
|
height: spacing.spacing_5,
|
|
@@ -4262,7 +4624,7 @@ const StyledInputBase = styled(InputBase, {
|
|
|
4262
4624
|
};
|
|
4263
4625
|
const sizeStyles = sizeConfig[size];
|
|
4264
4626
|
return {
|
|
4265
|
-
height: sizeStyles.height,
|
|
4627
|
+
height: multiline ? 'auto' : sizeStyles.height,
|
|
4266
4628
|
fontSize: sizeStyles.fontSize,
|
|
4267
4629
|
borderRadius: sizeStyles.borderRadius,
|
|
4268
4630
|
backgroundColor: semanticColors.input.background,
|
|
@@ -4732,271 +5094,36 @@ const NeoListItemButton = ({ children, selected = false, disabled = false, ...pr
|
|
|
4732
5094
|
NeoListItemButton.displayName = 'NeoListItemButton';
|
|
4733
5095
|
|
|
4734
5096
|
/**
|
|
4735
|
-
*
|
|
4736
|
-
*/
|
|
4737
|
-
const activeShadow$1 = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
4738
|
-
/**
|
|
4739
|
-
* Styled Card component with Neo design tokens
|
|
4740
|
-
*/
|
|
4741
|
-
const StyledCard = styled(MuiCard, {
|
|
4742
|
-
shouldForwardProp: prop => prop !== 'selected' && prop !== 'disabled',
|
|
4743
|
-
})(({ theme, selected, disabled }) => ({
|
|
4744
|
-
width: 160,
|
|
4745
|
-
height: 160,
|
|
4746
|
-
padding: theme.spacing(1.5), // 12px
|
|
4747
|
-
display: 'flex',
|
|
4748
|
-
flexDirection: 'column',
|
|
4749
|
-
gap: theme.spacing(2), // 16px
|
|
4750
|
-
backgroundColor: semanticColors.surfaces.card,
|
|
4751
|
-
border: `1px solid ${selected ? semanticColors.buttons.primary.default : semanticColors.border.primary}`,
|
|
4752
|
-
borderRadius: borderRadius.xS,
|
|
4753
|
-
boxShadow: selected ? activeShadow$1 : 'none',
|
|
4754
|
-
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
4755
|
-
cursor: 'pointer',
|
|
4756
|
-
'&:hover': {
|
|
4757
|
-
borderColor: semanticColors.buttons.primary.default,
|
|
4758
|
-
boxShadow: activeShadow$1,
|
|
4759
|
-
},
|
|
4760
|
-
'&:focus-visible': {
|
|
4761
|
-
borderColor: semanticColors.buttons.primary.default,
|
|
4762
|
-
...focusRingStyles,
|
|
4763
|
-
},
|
|
4764
|
-
...(disabled && {
|
|
4765
|
-
opacity: 0.5,
|
|
4766
|
-
pointerEvents: 'none',
|
|
4767
|
-
cursor: 'not-allowed',
|
|
4768
|
-
}),
|
|
4769
|
-
}));
|
|
4770
|
-
/**
|
|
4771
|
-
* Header section containing logo and recipe count
|
|
4772
|
-
*/
|
|
4773
|
-
const CardHeader = styled('div')({
|
|
4774
|
-
display: 'flex',
|
|
4775
|
-
alignItems: 'flex-start',
|
|
4776
|
-
justifyContent: 'space-between',
|
|
4777
|
-
width: '100%',
|
|
4778
|
-
});
|
|
4779
|
-
/**
|
|
4780
|
-
* Logo container
|
|
4781
|
-
*/
|
|
4782
|
-
const LogoContainer = styled('div')({
|
|
4783
|
-
width: spacing.spacing_6,
|
|
4784
|
-
height: spacing.spacing_6,
|
|
4785
|
-
flexShrink: 0,
|
|
4786
|
-
});
|
|
4787
|
-
/**
|
|
4788
|
-
* Recipe count badge
|
|
4789
|
-
*/
|
|
4790
|
-
const RecipeCount = styled('p')(({ theme }) => ({
|
|
4791
|
-
margin: 0,
|
|
4792
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.xxs), // 10px
|
|
4793
|
-
fontWeight: typography.fontWeight.semiBold, // 600
|
|
4794
|
-
lineHeight: 1.2,
|
|
4795
|
-
color: colors.grey[800],
|
|
4796
|
-
whiteSpace: 'nowrap',
|
|
4797
|
-
}));
|
|
4798
|
-
/**
|
|
4799
|
-
* Content section containing title and description
|
|
4800
|
-
*/
|
|
4801
|
-
const CardContent = styled('div')(({ theme }) => ({
|
|
4802
|
-
display: 'flex',
|
|
4803
|
-
flexDirection: 'column',
|
|
4804
|
-
gap: theme.spacing(2), // 16px
|
|
4805
|
-
width: '100%',
|
|
4806
|
-
}));
|
|
4807
|
-
/**
|
|
4808
|
-
* Title text
|
|
4809
|
-
*/
|
|
4810
|
-
const Title = styled('p')(({ theme }) => ({
|
|
4811
|
-
margin: 0,
|
|
4812
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.h6), // 16px
|
|
4813
|
-
fontWeight: typography.fontWeight.semiBold, // 600
|
|
4814
|
-
lineHeight: 1.4,
|
|
4815
|
-
color: colors.grey[800],
|
|
4816
|
-
width: '100%',
|
|
4817
|
-
}));
|
|
4818
|
-
/**
|
|
4819
|
-
* Description text
|
|
4820
|
-
*/
|
|
4821
|
-
const Description$1 = styled('p')(({ theme }) => ({
|
|
4822
|
-
margin: 0,
|
|
4823
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px
|
|
4824
|
-
fontWeight: typography.fontWeight.regular, // 400
|
|
4825
|
-
lineHeight: 1.5,
|
|
4826
|
-
color: colors.grey[800],
|
|
4827
|
-
width: '100%',
|
|
4828
|
-
display: '-webkit-box',
|
|
4829
|
-
WebkitLineClamp: 2,
|
|
4830
|
-
WebkitBoxOrient: 'vertical',
|
|
4831
|
-
overflow: 'hidden',
|
|
4832
|
-
textOverflow: 'ellipsis',
|
|
4833
|
-
}));
|
|
4834
|
-
/**
|
|
4835
|
-
* NeoMarketplaceCard - Selectable card component for marketplace items
|
|
4836
|
-
*
|
|
4837
|
-
* A fixed-size card (160x160px) displaying a logo, recipe count, title, and description.
|
|
4838
|
-
* Supports selected (active), disabled, and focused states.
|
|
5097
|
+
* @deprecated Use `NeoCard` with `size="small"` instead.
|
|
4839
5098
|
*
|
|
4840
5099
|
* @example
|
|
4841
5100
|
* ```tsx
|
|
4842
|
-
*
|
|
4843
|
-
*
|
|
4844
|
-
* recipeCount="1,260 recipes"
|
|
4845
|
-
* title="Java"
|
|
4846
|
-
* description="Basic building blocks for transforming Java..."
|
|
4847
|
-
* selected={false}
|
|
4848
|
-
* disabled={false}
|
|
4849
|
-
* onClick={() => console.log('clicked')}
|
|
4850
|
-
* />
|
|
4851
|
-
* ```
|
|
5101
|
+
* // Before
|
|
5102
|
+
* <NeoMarketplaceCard logo={...} title="Java" ... />
|
|
4852
5103
|
*
|
|
4853
|
-
*
|
|
4854
|
-
*
|
|
4855
|
-
*
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
* - State="Hover" → CSS :hover state (not a prop)
|
|
4860
|
-
* - State="Default" → Base state (no props)
|
|
4861
|
-
*
|
|
4862
|
-
* Design Tokens Used:
|
|
4863
|
-
* - semanticColors.surfaces.card (#FFFFFF) - Default card background
|
|
4864
|
-
* - semanticColors.status.info.light (#f2f3ff) - Active/focused card background
|
|
4865
|
-
* - semanticColors.border.primary (#d1d5db) - Default border
|
|
4866
|
-
* - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border
|
|
4867
|
-
* - shadows.focusWhite1 - Inner white focus ring (2px spread)
|
|
4868
|
-
* - shadows.focusBlue2 - Outer blue focus ring (4px spread)
|
|
4869
|
-
* - colors.grey[800] (#1F2937) - Text color
|
|
4870
|
-
* - typography.fontSize.xxs (10px) - Recipe count
|
|
4871
|
-
* - typography.fontSize.xs (12px) - Description
|
|
4872
|
-
* - typography.fontSize.h6 (16px) - Title
|
|
4873
|
-
* - typography.fontWeight.semiBold (600) - Title and recipe count
|
|
4874
|
-
* - typography.fontWeight.regular (400) - Description
|
|
4875
|
-
*/
|
|
4876
|
-
const NeoMarketplaceCard = ({ logo, recipeCount, title, description, selected = false, disabled = false, onClick, ...props }) => {
|
|
4877
|
-
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 })] })] }));
|
|
5104
|
+
* // After
|
|
5105
|
+
* <NeoCard size="small" logo={...} title="Java" ... />
|
|
5106
|
+
* ```
|
|
5107
|
+
*/
|
|
5108
|
+
const NeoMarketplaceCard = (props) => {
|
|
5109
|
+
return jsx(NeoCard, { size: "small", ...props });
|
|
4878
5110
|
};
|
|
4879
5111
|
NeoMarketplaceCard.displayName = 'NeoMarketplaceCard';
|
|
4880
5112
|
|
|
4881
|
-
const activeShadow = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`;
|
|
4882
|
-
const StyledLargeCard = styled(MuiCard, {
|
|
4883
|
-
shouldForwardProp: prop => prop !== 'cardState' && prop !== 'cardTheme',
|
|
4884
|
-
})(({ cardState = 'default', cardTheme = 'light' }) => {
|
|
4885
|
-
const isLight = cardTheme === 'light';
|
|
4886
|
-
const isActive = cardState === 'active';
|
|
4887
|
-
const isDisabled = cardState === 'disabled';
|
|
4888
|
-
const isFocused = cardState === 'focused';
|
|
4889
|
-
const activeBorderColor = isLight
|
|
4890
|
-
? semanticColors.buttons.primary.default
|
|
4891
|
-
: colors.digitalGreen[300];
|
|
4892
|
-
const defaultBorderColor = isLight
|
|
4893
|
-
? semanticColors.border.primary
|
|
4894
|
-
: `${semanticColors.border.primary}80`;
|
|
4895
|
-
return {
|
|
4896
|
-
width: 340,
|
|
4897
|
-
height: 162,
|
|
4898
|
-
display: 'flex',
|
|
4899
|
-
flexDirection: 'column',
|
|
4900
|
-
justifyContent: 'space-between',
|
|
4901
|
-
alignItems: 'flex-start',
|
|
4902
|
-
padding: spacing.spacing_2,
|
|
4903
|
-
borderRadius: borderRadius.xS,
|
|
4904
|
-
backgroundColor: isLight ? semanticColors.surfaces.card : colors.grey[800],
|
|
4905
|
-
border: `1px solid ${isActive || isFocused ? activeBorderColor : defaultBorderColor}`,
|
|
4906
|
-
boxShadow: isActive ? activeShadow : 'none',
|
|
4907
|
-
overflow: 'hidden',
|
|
4908
|
-
...(isFocused && focusRingStyles),
|
|
4909
|
-
'&:focus-visible': {
|
|
4910
|
-
borderColor: isLight ? semanticColors.buttons.primary.default : colors.digitalGreen[300],
|
|
4911
|
-
...focusRingStyles,
|
|
4912
|
-
},
|
|
4913
|
-
...(isDisabled && {
|
|
4914
|
-
opacity: 0.5,
|
|
4915
|
-
pointerEvents: 'none',
|
|
4916
|
-
cursor: 'not-allowed',
|
|
4917
|
-
}),
|
|
4918
|
-
};
|
|
4919
|
-
});
|
|
4920
|
-
const TopSection = styled('div')({
|
|
4921
|
-
display: 'flex',
|
|
4922
|
-
flexDirection: 'column',
|
|
4923
|
-
gap: spacing.spacing_2,
|
|
4924
|
-
alignItems: 'flex-start',
|
|
4925
|
-
width: '100%',
|
|
4926
|
-
flexShrink: 0,
|
|
4927
|
-
});
|
|
4928
|
-
const HeaderRow = styled('div')({
|
|
4929
|
-
display: 'flex',
|
|
4930
|
-
gap: spacing.spacing_1,
|
|
4931
|
-
alignItems: 'center',
|
|
4932
|
-
flexShrink: 0,
|
|
4933
|
-
});
|
|
4934
|
-
const HeaderSlot = styled('div')({
|
|
4935
|
-
display: 'flex',
|
|
4936
|
-
flexDirection: 'column',
|
|
4937
|
-
alignItems: 'center',
|
|
4938
|
-
justifyContent: 'center',
|
|
4939
|
-
width: 20,
|
|
4940
|
-
height: 20,
|
|
4941
|
-
flexShrink: 0,
|
|
4942
|
-
});
|
|
4943
|
-
const HeaderTitle = styled('span', {
|
|
4944
|
-
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4945
|
-
})(({ cardTheme = 'light' }) => ({
|
|
4946
|
-
fontFamily: `${typography.fontFamily.heading}, sans-serif`,
|
|
4947
|
-
fontWeight: typography.fontWeight.semiBold,
|
|
4948
|
-
fontSize: typography.fontSize.h6,
|
|
4949
|
-
lineHeight: 1.4,
|
|
4950
|
-
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
4951
|
-
flexShrink: 0,
|
|
4952
|
-
}));
|
|
4953
|
-
const Description = styled('p', {
|
|
4954
|
-
shouldForwardProp: prop => prop !== 'cardTheme',
|
|
4955
|
-
})(({ cardTheme = 'light' }) => ({
|
|
4956
|
-
fontFamily: `${typography.fontFamily.body}, sans-serif`,
|
|
4957
|
-
fontWeight: typography.fontWeight.regular,
|
|
4958
|
-
fontSize: typography.fontSize.xs,
|
|
4959
|
-
lineHeight: 1.5,
|
|
4960
|
-
color: cardTheme === 'light' ? colors.grey[800] : semanticColors.surfaces.white,
|
|
4961
|
-
margin: 0,
|
|
4962
|
-
minWidth: '100%',
|
|
4963
|
-
wordWrap: 'break-word',
|
|
4964
|
-
}));
|
|
4965
|
-
const ButtonsRow = styled('div')({
|
|
4966
|
-
display: 'flex',
|
|
4967
|
-
gap: spacing.spacing_3,
|
|
4968
|
-
alignItems: 'flex-start',
|
|
4969
|
-
flexShrink: 0,
|
|
4970
|
-
});
|
|
4971
5113
|
/**
|
|
4972
|
-
*
|
|
4973
|
-
*
|
|
4974
|
-
* A 340x162px card with optional icon, gel brand icon, title, description, and action buttons.
|
|
4975
|
-
* Icon, gel, and title display inline in a header row.
|
|
4976
|
-
* Supports 4 states (default, active, disabled, focused) and 2 themes (light, dark).
|
|
5114
|
+
* @deprecated Use `NeoCard` with `size="large"` instead.
|
|
4977
5115
|
*
|
|
4978
|
-
* @
|
|
4979
|
-
*
|
|
4980
|
-
*
|
|
4981
|
-
*
|
|
4982
|
-
* - Theme → cardTheme (Dark/Light)
|
|
4983
|
-
* - Show Icon → showIcon
|
|
4984
|
-
* - Show Gel → showGel
|
|
4985
|
-
* - Show Buttons → showButtons
|
|
5116
|
+
* @example
|
|
5117
|
+
* ```tsx
|
|
5118
|
+
* // Before
|
|
5119
|
+
* <NeoMarketplaceLargeCard cardTheme="light" ... />
|
|
4986
5120
|
*
|
|
4987
|
-
*
|
|
4988
|
-
*
|
|
4989
|
-
*
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
* - borderRadius.xS (4px) - Corner radius
|
|
4994
|
-
* - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
|
|
4995
|
-
* - shadows.card - Active state shadow
|
|
4996
|
-
*/
|
|
4997
|
-
const NeoMarketplaceLargeCard = ({ state = 'default', cardTheme = 'light', showIcon = true, showGel = true, showButtons = true, icon, gel, title, children, actions, onClick, ...props }) => {
|
|
4998
|
-
const isDisabled = state === 'disabled';
|
|
4999
|
-
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 })] }));
|
|
5121
|
+
* // After
|
|
5122
|
+
* <NeoCard size="large" cardTheme="light" ... />
|
|
5123
|
+
* ```
|
|
5124
|
+
*/
|
|
5125
|
+
const NeoMarketplaceLargeCard = (props) => {
|
|
5126
|
+
return jsx(NeoCard, { size: "large", ...props });
|
|
5000
5127
|
};
|
|
5001
5128
|
NeoMarketplaceLargeCard.displayName = 'NeoMarketplaceLargeCard';
|
|
5002
5129
|
|
|
@@ -5223,15 +5350,14 @@ const StyledRoot = styled(ButtonBase, {
|
|
|
5223
5350
|
})(({ selected }) => ({
|
|
5224
5351
|
display: 'flex',
|
|
5225
5352
|
flexDirection: 'column',
|
|
5226
|
-
gap: spacing.
|
|
5353
|
+
gap: spacing.spacing_1_2, // 4px
|
|
5227
5354
|
alignItems: 'center',
|
|
5228
5355
|
justifyContent: 'center',
|
|
5229
5356
|
paddingTop: spacing.spacing_1, // 8px
|
|
5230
5357
|
paddingBottom: spacing.spacing_1, // 8px
|
|
5231
5358
|
paddingLeft: spacing.spacing_1_2, // 4px
|
|
5232
5359
|
paddingRight: spacing.spacing_1_2, // 4px
|
|
5233
|
-
borderRadius: borderRadius.
|
|
5234
|
-
width: 95,
|
|
5360
|
+
borderRadius: borderRadius.s, // 8px
|
|
5235
5361
|
cursor: 'pointer',
|
|
5236
5362
|
textDecoration: 'none',
|
|
5237
5363
|
'&:hover .neo-nav-icon-padding': {
|
|
@@ -5277,7 +5403,7 @@ const IconPadding = styled('span')({
|
|
|
5277
5403
|
display: 'flex',
|
|
5278
5404
|
alignItems: 'center',
|
|
5279
5405
|
padding: spacing.spacing_1, // 8px
|
|
5280
|
-
borderRadius:
|
|
5406
|
+
borderRadius: borderRadius.s, // 8px
|
|
5281
5407
|
border: '1px solid transparent',
|
|
5282
5408
|
transition: 'background-color 150ms, border-color 150ms',
|
|
5283
5409
|
});
|
|
@@ -5311,9 +5437,9 @@ const TagPill = styled('span')(({ theme }) => ({
|
|
|
5311
5437
|
*
|
|
5312
5438
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
|
|
5313
5439
|
*/
|
|
5314
|
-
|
|
5440
|
+
function NeoNavigationItem({ icon, label, selected = false, tag, children, ...props }) {
|
|
5315
5441
|
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] }));
|
|
5316
|
-
}
|
|
5442
|
+
}
|
|
5317
5443
|
NeoNavigationItem.displayName = 'NeoNavigationItem';
|
|
5318
5444
|
|
|
5319
5445
|
/**
|
|
@@ -5537,7 +5663,7 @@ function NeoPaginatedGrid({ slots, pageSizeOptions, slotProps: userSlotProps, ..
|
|
|
5537
5663
|
}
|
|
5538
5664
|
NeoPaginatedGrid.displayName = 'NeoPaginatedGrid';
|
|
5539
5665
|
|
|
5540
|
-
const StyledLinearProgress
|
|
5666
|
+
const StyledLinearProgress = styled(LinearProgress, {
|
|
5541
5667
|
shouldForwardProp: prop => prop !== 'labelPosition',
|
|
5542
5668
|
})(() => ({
|
|
5543
5669
|
height: 8,
|
|
@@ -5582,7 +5708,7 @@ const ProgressWrapper = styled('div')(({ labelPosition }) => ({
|
|
|
5582
5708
|
flexDirection: 'row',
|
|
5583
5709
|
}),
|
|
5584
5710
|
}));
|
|
5585
|
-
const ProgressLabel
|
|
5711
|
+
const ProgressLabel = styled(Typography)(({ theme }) => ({
|
|
5586
5712
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
5587
5713
|
fontWeight: typography.fontWeight.medium,
|
|
5588
5714
|
color: colors.grey[800],
|
|
@@ -5611,7 +5737,7 @@ const ProgressBarContainer = styled('div')(({ labelPosition }) => ({
|
|
|
5611
5737
|
const NeoProgressbar = ({ value = 0, labelPosition = 'none', variant = 'default', labelText, ...props }) => {
|
|
5612
5738
|
const showLabel = labelPosition !== 'none';
|
|
5613
5739
|
const displayLabel = labelText || (variant === 'cancelled' ? 'Canceled' : `${Math.round(value)}%`);
|
|
5614
|
-
return (jsxs(ProgressWrapper, { labelPosition: labelPosition, children: [jsx(ProgressBarContainer, { labelPosition: labelPosition, children: jsx(StyledLinearProgress
|
|
5740
|
+
return (jsxs(ProgressWrapper, { labelPosition: labelPosition, children: [jsx(ProgressBarContainer, { labelPosition: labelPosition, children: jsx(StyledLinearProgress, { variant: "determinate", value: variant === 'cancelled' ? 100 : value, "data-variant": variant, labelPosition: labelPosition, ...props }) }), showLabel && jsx(ProgressLabel, { children: displayLabel })] }));
|
|
5615
5741
|
};
|
|
5616
5742
|
NeoProgressbar.displayName = 'NeoProgressbar';
|
|
5617
5743
|
|
|
@@ -5713,17 +5839,19 @@ const NeoQuickFilter = ({ placeholder = 'Search...', onKeyDown, autoFocus = fals
|
|
|
5713
5839
|
NeoQuickFilter.displayName = 'NeoQuickFilter';
|
|
5714
5840
|
|
|
5715
5841
|
// Custom radio icons to match Figma design
|
|
5716
|
-
const UncheckedIcon = ({ size }) => {
|
|
5842
|
+
const UncheckedIcon = ({ size, disabled }) => {
|
|
5717
5843
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5718
5844
|
const radius = size === 'small' ? 8 : 10;
|
|
5719
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.border.primary, strokeWidth: "1", fill:
|
|
5845
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.border.primary, strokeWidth: "1", fill: disabled ? semanticColors.buttons.primary.disabled : 'transparent' })] }));
|
|
5720
5846
|
};
|
|
5721
|
-
const CheckedIcon = ({ size }) => {
|
|
5847
|
+
const CheckedIcon = ({ size, disabled }) => {
|
|
5722
5848
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5723
5849
|
const radius = size === 'small' ? 8 : 10;
|
|
5724
5850
|
const inset = size === 'small' ? 0.3125 : 0.3; // 31.25% or 30%
|
|
5725
5851
|
const innerRadius = radius * (1 - 2 * inset);
|
|
5726
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill:
|
|
5852
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill: disabled
|
|
5853
|
+
? semanticColors.buttons.primary.disabled
|
|
5854
|
+
: semanticColors.buttons.primary.default, stroke: disabled ? semanticColors.border.primary : semanticColors.buttons.primary.default, strokeWidth: "1" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: innerRadius, fill: disabled ? semanticColors.icons.disabled : semanticColors.surfaces.white })] }));
|
|
5727
5855
|
};
|
|
5728
5856
|
const RadioContainer = styled('label')(({ disabled }) => ({
|
|
5729
5857
|
display: 'inline-flex',
|
|
@@ -5768,6 +5896,10 @@ const StyledRadio = styled(Radio, {
|
|
|
5768
5896
|
height: dimensions,
|
|
5769
5897
|
flexShrink: 0,
|
|
5770
5898
|
borderRadius: radius,
|
|
5899
|
+
color: semanticColors.border.primary,
|
|
5900
|
+
[`&.${radioClasses.checked}`]: {
|
|
5901
|
+
color: semanticColors.buttons.primary.default,
|
|
5902
|
+
},
|
|
5771
5903
|
'&:hover': {
|
|
5772
5904
|
backgroundColor: 'transparent',
|
|
5773
5905
|
},
|
|
@@ -5785,9 +5917,12 @@ const StyledRadio = styled(Radio, {
|
|
|
5785
5917
|
backgroundColor: 'transparent',
|
|
5786
5918
|
},
|
|
5787
5919
|
},
|
|
5788
|
-
// Disabled state
|
|
5920
|
+
// Disabled state — icons handle their own disabled colors
|
|
5789
5921
|
[`&.${radioClasses.disabled}`]: {
|
|
5790
|
-
|
|
5922
|
+
color: semanticColors.border.primary,
|
|
5923
|
+
[`&.${radioClasses.checked}`]: {
|
|
5924
|
+
color: semanticColors.border.primary,
|
|
5925
|
+
},
|
|
5791
5926
|
},
|
|
5792
5927
|
};
|
|
5793
5928
|
});
|
|
@@ -5795,7 +5930,6 @@ const StyledRadio = styled(Radio, {
|
|
|
5795
5930
|
* NeoRadio - Radio button component based on MUI Radio
|
|
5796
5931
|
*
|
|
5797
5932
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039
|
|
5798
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150
|
|
5799
5933
|
*
|
|
5800
5934
|
* Figma Props Mapping:
|
|
5801
5935
|
* - Checked (True|False) → checked prop
|
|
@@ -5835,9 +5969,9 @@ const StyledRadio = styled(Radio, {
|
|
|
5835
5969
|
* </RadioGroup>
|
|
5836
5970
|
*/
|
|
5837
5971
|
const NeoRadio = ({ size = 'medium', label, helperText, disabled, ...props }) => {
|
|
5838
|
-
// Custom icons based on size
|
|
5839
|
-
const uncheckedIcon = jsx(UncheckedIcon, { size: size });
|
|
5840
|
-
const checkedIcon = jsx(CheckedIcon, { size: size });
|
|
5972
|
+
// Custom icons based on size and disabled state
|
|
5973
|
+
const uncheckedIcon = jsx(UncheckedIcon, { size: size, disabled: disabled });
|
|
5974
|
+
const checkedIcon = jsx(CheckedIcon, { size: size, disabled: disabled });
|
|
5841
5975
|
// If no label, return just the radio button
|
|
5842
5976
|
if (!label && !helperText) {
|
|
5843
5977
|
return (jsx(StyledRadio, { size: size, disabled: disabled, icon: uncheckedIcon, checkedIcon: checkedIcon, ...props }));
|
|
@@ -5961,127 +6095,6 @@ const NeoSkeleton = ({ colorTheme = 'light', position = 'start', ...props }) =>
|
|
|
5961
6095
|
};
|
|
5962
6096
|
NeoSkeleton.displayName = 'NeoSkeleton';
|
|
5963
6097
|
|
|
5964
|
-
/**
|
|
5965
|
-
* Styled Alert component with custom severity and variant styling
|
|
5966
|
-
* Uses Custom Variants Pattern to add 'neutral' and 'info' severities
|
|
5967
|
-
*/
|
|
5968
|
-
const StyledAlert$1 = styled(Alert, {
|
|
5969
|
-
shouldForwardProp: prop => prop !== 'severity' && prop !== 'variant',
|
|
5970
|
-
})(({ theme, severity = 'success', variant = 'outlined' }) => {
|
|
5971
|
-
// Color mapping for different severities
|
|
5972
|
-
const colorMap = {
|
|
5973
|
-
success: {
|
|
5974
|
-
light: semanticColors.status.success.light,
|
|
5975
|
-
medium: semanticColors.status.success.default,
|
|
5976
|
-
},
|
|
5977
|
-
error: {
|
|
5978
|
-
light: semanticColors.status.error.light,
|
|
5979
|
-
medium: semanticColors.status.error.default,
|
|
5980
|
-
},
|
|
5981
|
-
neutral: {
|
|
5982
|
-
light: semanticColors.status.neutral.light,
|
|
5983
|
-
medium: semanticColors.status.neutral.default,
|
|
5984
|
-
},
|
|
5985
|
-
info: {
|
|
5986
|
-
light: semanticColors.status.info.light,
|
|
5987
|
-
medium: semanticColors.status.info.default,
|
|
5988
|
-
},
|
|
5989
|
-
};
|
|
5990
|
-
const severityColors = colorMap[severity];
|
|
5991
|
-
// Variant-specific styles based on Phase 1.1 analysis
|
|
5992
|
-
const variantStyles = (() => {
|
|
5993
|
-
if (variant === 'filled') {
|
|
5994
|
-
// Dark mode: solid background with white text
|
|
5995
|
-
return {
|
|
5996
|
-
backgroundColor: severityColors.medium,
|
|
5997
|
-
border: 'none',
|
|
5998
|
-
color: semanticColors.typography.tooltip,
|
|
5999
|
-
padding: theme.spacing(0.75, 3),
|
|
6000
|
-
boxShadow: `0px 1px 3px ${semanticColors.surfaces.shadowNeutral}1a`, // 1a = 10% opacity
|
|
6001
|
-
[`& .${alertClasses.icon}`]: {
|
|
6002
|
-
color: semanticColors.typography.tooltip,
|
|
6003
|
-
},
|
|
6004
|
-
[`& .${alertClasses.message}`]: {
|
|
6005
|
-
color: semanticColors.typography.tooltip,
|
|
6006
|
-
},
|
|
6007
|
-
};
|
|
6008
|
-
}
|
|
6009
|
-
// Light mode: light background with border
|
|
6010
|
-
return {
|
|
6011
|
-
backgroundColor: severityColors.light,
|
|
6012
|
-
border: `1px solid ${severityColors.medium}`,
|
|
6013
|
-
color: colors.grey[800],
|
|
6014
|
-
padding: theme.spacing(0.125, 2),
|
|
6015
|
-
[`& .${alertClasses.icon}`]: {
|
|
6016
|
-
color: severityColors.medium,
|
|
6017
|
-
},
|
|
6018
|
-
[`& .${alertClasses.message}`]: {
|
|
6019
|
-
color: colors.grey[800],
|
|
6020
|
-
},
|
|
6021
|
-
};
|
|
6022
|
-
})();
|
|
6023
|
-
return {
|
|
6024
|
-
height: spacing.spacing_8,
|
|
6025
|
-
width: '100%',
|
|
6026
|
-
borderRadius: borderRadius.xS,
|
|
6027
|
-
alignItems: 'center',
|
|
6028
|
-
fontFamily: typography.fontFamily.body,
|
|
6029
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
6030
|
-
fontWeight: typography.fontWeight.medium,
|
|
6031
|
-
lineHeight: 1.5,
|
|
6032
|
-
...variantStyles,
|
|
6033
|
-
// Supporting text styling
|
|
6034
|
-
[`& .${alertClasses.message} > *:not(:first-child)`]: {
|
|
6035
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
6036
|
-
fontWeight: typography.fontWeight.regular,
|
|
6037
|
-
color: variant === 'filled'
|
|
6038
|
-
? semanticColors.typography.tooltip
|
|
6039
|
-
: semanticColors.typography.bodySecondary,
|
|
6040
|
-
lineHeight: 1.4,
|
|
6041
|
-
marginTop: theme.spacing(0.25),
|
|
6042
|
-
},
|
|
6043
|
-
};
|
|
6044
|
-
});
|
|
6045
|
-
/**
|
|
6046
|
-
* NeoStatusBanner - Status banner component for displaying system status messages
|
|
6047
|
-
*
|
|
6048
|
-
* Displays status information with different severity levels (success, error, info, neutral) and
|
|
6049
|
-
* visual modes (outlined for light backgrounds, filled for emphasis).
|
|
6050
|
-
*
|
|
6051
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427
|
|
6052
|
-
*
|
|
6053
|
-
* Figma Props Mapping:
|
|
6054
|
-
* - Status (Success|Error|Info|Offline) → severity ('success'|'error'|'info'|'neutral')
|
|
6055
|
-
* - Mode (Light|Dark) → variant ('outlined'|'filled')
|
|
6056
|
-
*
|
|
6057
|
-
* Design Tokens Used:
|
|
6058
|
-
* - status.success.light, status.success.default
|
|
6059
|
-
* - status.error.light, status.error.default
|
|
6060
|
-
* - status.neutral.light, status.neutral.default
|
|
6061
|
-
* - status.info.light, status.info.default
|
|
6062
|
-
* - typography.tooltip, typography.bodySecondary
|
|
6063
|
-
* - grey[800]
|
|
6064
|
-
* - fontSize.default, fontSize.sm
|
|
6065
|
-
* - fontWeight.medium, fontWeight.regular
|
|
6066
|
-
* - fontFamily.body
|
|
6067
|
-
* - surfaces.shadowNeutral
|
|
6068
|
-
*/
|
|
6069
|
-
const NeoStatusBanner = ({ severity = 'success', variant = 'outlined', icon, children, ...props }) => {
|
|
6070
|
-
// Icon mapping for different severities
|
|
6071
|
-
const iconMap = {
|
|
6072
|
-
success: jsx(CircleCheck, { size: 24 }),
|
|
6073
|
-
error: jsx(CircleAlert, { size: 24 }),
|
|
6074
|
-
neutral: jsx(WifiOff, { size: 24 }),
|
|
6075
|
-
info: jsx(Info, { size: 24 }),
|
|
6076
|
-
};
|
|
6077
|
-
const defaultIcon = iconMap[severity];
|
|
6078
|
-
// Type assertion needed: severity and variant are custom props filtered by shouldForwardProp
|
|
6079
|
-
// biome-ignore lint/suspicious/noExplicitAny: Custom props pattern requires any cast
|
|
6080
|
-
const StyledAlertAny = StyledAlert$1;
|
|
6081
|
-
return (jsx(StyledAlertAny, { ...props, severity: severity, variant: variant, icon: icon ?? defaultIcon, children: children }));
|
|
6082
|
-
};
|
|
6083
|
-
NeoStatusBanner.displayName = 'NeoStatusBanner';
|
|
6084
|
-
|
|
6085
6098
|
/**
|
|
6086
6099
|
* NeoTabs - Tabs container component based on MUI Tabs
|
|
6087
6100
|
*
|
|
@@ -6116,7 +6129,20 @@ const StyledTab = styled(MuiTab)(({ theme }) => ({
|
|
|
6116
6129
|
color: semanticColors.typography.tab.active,
|
|
6117
6130
|
fontWeight: typography.fontWeight.semiBold,
|
|
6118
6131
|
},
|
|
6132
|
+
'&:hover': {
|
|
6133
|
+
backgroundColor: semanticColors.buttons.secondary.hoverBackground,
|
|
6134
|
+
[`&.${tabClasses.selected}::after`]: {
|
|
6135
|
+
content: '""',
|
|
6136
|
+
position: 'absolute',
|
|
6137
|
+
bottom: 0,
|
|
6138
|
+
left: 0,
|
|
6139
|
+
right: 0,
|
|
6140
|
+
height: 2,
|
|
6141
|
+
backgroundColor: semanticColors.buttons.primary.hover,
|
|
6142
|
+
},
|
|
6143
|
+
},
|
|
6119
6144
|
[`&.${buttonBaseClasses.focusVisible}`]: {
|
|
6145
|
+
color: semanticColors.typography.tab.active,
|
|
6120
6146
|
outline: `2px solid ${semanticColors.border.focus}`,
|
|
6121
6147
|
outlineOffset: -2,
|
|
6122
6148
|
},
|
|
@@ -6124,6 +6150,21 @@ const StyledTab = styled(MuiTab)(({ theme }) => ({
|
|
|
6124
6150
|
color: semanticColors.typography.button.disabled,
|
|
6125
6151
|
cursor: 'not-allowed',
|
|
6126
6152
|
pointerEvents: 'auto',
|
|
6153
|
+
'&:hover': {
|
|
6154
|
+
backgroundColor: 'transparent',
|
|
6155
|
+
},
|
|
6156
|
+
[`&.${tabClasses.selected}`]: {
|
|
6157
|
+
color: semanticColors.typography.button.disabled,
|
|
6158
|
+
'&::after': {
|
|
6159
|
+
content: '""',
|
|
6160
|
+
position: 'absolute',
|
|
6161
|
+
bottom: 0,
|
|
6162
|
+
left: 0,
|
|
6163
|
+
right: 0,
|
|
6164
|
+
height: 2,
|
|
6165
|
+
backgroundColor: semanticColors.buttons.tertiary.disabled,
|
|
6166
|
+
},
|
|
6167
|
+
},
|
|
6127
6168
|
},
|
|
6128
6169
|
}));
|
|
6129
6170
|
const TabLabelContainer = styled('span')(({ theme }) => ({
|
|
@@ -6138,10 +6179,7 @@ const TabLabelContainer = styled('span')(({ theme }) => ({
|
|
|
6138
6179
|
*
|
|
6139
6180
|
* Figma Props Mapping:
|
|
6140
6181
|
* - Current=True/False → Controlled by parent NeoTabs value
|
|
6141
|
-
* -
|
|
6142
|
-
* - State=Hover → CSS :hover
|
|
6143
|
-
* - State=Focus → CSS :focus-visible
|
|
6144
|
-
* - Tag count → count prop (renders NeoTag)
|
|
6182
|
+
* - Show tag → count prop (renders NeoTag)
|
|
6145
6183
|
* - Text label → label prop
|
|
6146
6184
|
*/
|
|
6147
6185
|
const NeoTab = ({ label, count, ...props }) => {
|
|
@@ -6152,7 +6190,7 @@ NeoTab.displayName = 'NeoTab';
|
|
|
6152
6190
|
|
|
6153
6191
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
6154
6192
|
const StyledAlert = styled(Alert, {
|
|
6155
|
-
shouldForwardProp: prop => prop !== 'variant'
|
|
6193
|
+
shouldForwardProp: prop => prop !== 'variant',
|
|
6156
6194
|
})(({ theme, variant = 'default' }) => {
|
|
6157
6195
|
// Base styles
|
|
6158
6196
|
const baseStyles = {
|
|
@@ -6209,11 +6247,6 @@ const StyledAlert = styled(Alert, {
|
|
|
6209
6247
|
color: semanticColors.status.info.dark,
|
|
6210
6248
|
border: `1px solid ${semanticColors.status.info.default}`,
|
|
6211
6249
|
},
|
|
6212
|
-
download: {
|
|
6213
|
-
backgroundColor: semanticColors.surfaces.snackbarDarkMode,
|
|
6214
|
-
color: colors.grey['800'],
|
|
6215
|
-
border: `1px solid ${semanticColors.border.primary}`,
|
|
6216
|
-
},
|
|
6217
6250
|
};
|
|
6218
6251
|
return {
|
|
6219
6252
|
...baseStyles,
|
|
@@ -6228,7 +6261,6 @@ const ToastTitle = styled('p')(({ theme, variant = 'default' }) => {
|
|
|
6228
6261
|
error: semanticColors.status.error.dark,
|
|
6229
6262
|
success: semanticColors.status.success.dark,
|
|
6230
6263
|
info: semanticColors.status.info.dark,
|
|
6231
|
-
download: colors.grey['700'],
|
|
6232
6264
|
};
|
|
6233
6265
|
return {
|
|
6234
6266
|
margin: 0,
|
|
@@ -6246,7 +6278,6 @@ const ToastMessage = styled('p')(({ theme, variant = 'default' }) => {
|
|
|
6246
6278
|
error: semanticColors.status.error.dark,
|
|
6247
6279
|
success: semanticColors.status.success.dark,
|
|
6248
6280
|
info: semanticColors.status.info.dark,
|
|
6249
|
-
download: colors.grey['800'],
|
|
6250
6281
|
};
|
|
6251
6282
|
return {
|
|
6252
6283
|
margin: 0,
|
|
@@ -6284,7 +6315,7 @@ const ToastButton = styled(Button, {
|
|
|
6284
6315
|
if (toastVariant === 'info') {
|
|
6285
6316
|
return semanticColors.status.info.dark;
|
|
6286
6317
|
}
|
|
6287
|
-
// default
|
|
6318
|
+
// default variant uses icon placeholder color
|
|
6288
6319
|
return semanticColors.icons.placeholder;
|
|
6289
6320
|
};
|
|
6290
6321
|
return {
|
|
@@ -6301,68 +6332,20 @@ const ToastButton = styled(Button, {
|
|
|
6301
6332
|
},
|
|
6302
6333
|
};
|
|
6303
6334
|
});
|
|
6304
|
-
const ProgressSection = styled(Stack)({
|
|
6305
|
-
gap: spacing.spacing_1,
|
|
6306
|
-
width: '100%',
|
|
6307
|
-
});
|
|
6308
|
-
const FileName = styled('p')(({ theme }) => ({
|
|
6309
|
-
margin: 0,
|
|
6310
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
6311
|
-
fontWeight: typography.fontWeight.medium,
|
|
6312
|
-
lineHeight: 1.5,
|
|
6313
|
-
color: colors.grey['800'],
|
|
6314
|
-
}));
|
|
6315
|
-
const ProgressLabel = styled('p')(({ theme }) => ({
|
|
6316
|
-
margin: 0,
|
|
6317
|
-
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
6318
|
-
fontWeight: typography.fontWeight.medium,
|
|
6319
|
-
lineHeight: 1.5,
|
|
6320
|
-
color: colors.grey['800'],
|
|
6321
|
-
}));
|
|
6322
|
-
const StyledLinearProgress = styled(LinearProgress)({
|
|
6323
|
-
width: '100%',
|
|
6324
|
-
height: spacing.spacing_2,
|
|
6325
|
-
borderRadius: borderRadius.s,
|
|
6326
|
-
backgroundColor: colors.grey['200'],
|
|
6327
|
-
[`& .${linearProgressClasses.bar}`]: {
|
|
6328
|
-
backgroundColor: semanticColors.buttons.primary.default,
|
|
6329
|
-
borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,
|
|
6330
|
-
},
|
|
6331
|
-
});
|
|
6332
|
-
const DownloadActions = styled(Stack)({
|
|
6333
|
-
gap: `${spacing.spacing_4}px`,
|
|
6334
|
-
alignItems: 'center',
|
|
6335
|
-
});
|
|
6336
|
-
const DownloadIconButton = styled(IconButton)({
|
|
6337
|
-
padding: 0,
|
|
6338
|
-
width: 16,
|
|
6339
|
-
height: 16,
|
|
6340
|
-
color: colors.grey['800'],
|
|
6341
|
-
'&:hover': {
|
|
6342
|
-
backgroundColor: 'transparent',
|
|
6343
|
-
},
|
|
6344
|
-
});
|
|
6345
6335
|
/**
|
|
6346
6336
|
* NeoToast - Notification/Toast component based on MUI Alert
|
|
6347
6337
|
*
|
|
6348
6338
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-37223
|
|
6349
6339
|
*
|
|
6350
6340
|
* Figma Props Mapping:
|
|
6351
|
-
* - type (Light mode|Dark mode|Brand color|Error|Success|Info
|
|
6341
|
+
* - type (Light mode|Dark mode|Brand color|Error|Success|Info) → variant (default|dark|brand|error|success|info)
|
|
6352
6342
|
* - header → title (string)
|
|
6353
6343
|
* - supportingText → message (string)
|
|
6354
6344
|
* - xCloseButton → showClose (boolean)
|
|
6355
6345
|
* - actions → actions (ReactNode)
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
const isDownloadVariant = variant === 'download';
|
|
6360
|
-
return (jsx(StyledAlert, { ...props, variant: variant, showProgress: isDownloadVariant, action: showClose && !isDownloadVariant ? (jsx(IconButton, { size: "small", onClick: onClose, sx: { color: semanticColors.icons.placeholder }, children: jsx(X, { size: 16 }) })) : undefined, children: isDownloadVariant ? (jsxs(Fragment, { children: [jsxs(Stack, { direction: "row", sx: {
|
|
6361
|
-
alignItems: 'flex-start',
|
|
6362
|
-
justifyContent: 'space-between',
|
|
6363
|
-
width: '100%',
|
|
6364
|
-
gap: `${spacing.spacing_4}px`,
|
|
6365
|
-
}, children: [title && jsx(ToastTitle, { variant: variant, children: title }), showClose && (jsxs(DownloadActions, { direction: "row", children: [jsx(DownloadIconButton, { size: "small", children: jsx(Stack, { sx: { width: 16, height: 16 } }) }), jsx(DownloadIconButton, { size: "small", onClick: onClose, children: jsx(X, { size: 16 }) })] }))] }), jsxs(ProgressSection, { children: [jsxs(Stack, { direction: "row", sx: { alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }, children: [fileName && jsx(FileName, { children: fileName }), progress !== undefined && jsxs(ProgressLabel, { children: [progress, "%"] })] }), jsx(StyledLinearProgress, { variant: "determinate", value: progress ?? 0 })] })] })) : (jsxs(Fragment, { children: [jsxs(Stack, { sx: { gap: `${spacing.spacing_1}px`, width: '100%' }, children: [title && jsx(ToastTitle, { variant: variant, children: title }), message && jsx(ToastMessage, { variant: variant, children: message })] }), actions && jsx(ToastActions, { direction: "row", children: actions })] })) }));
|
|
6346
|
+
*/
|
|
6347
|
+
const NeoToast = ({ variant = 'default', title, message, showClose = true, actions, onClose, ...props }) => {
|
|
6348
|
+
return (jsxs(StyledAlert, { ...props, variant: variant, action: showClose ? (jsx(IconButton, { size: "small", onClick: onClose, sx: { color: semanticColors.icons.placeholder }, children: jsx(X, { size: 16 }) })) : undefined, children: [jsxs(Stack, { sx: { gap: `${spacing.spacing_1}px`, width: '100%' }, children: [title && jsx(ToastTitle, { variant: variant, children: title }), message && jsx(ToastMessage, { variant: variant, children: message })] }), actions && jsx(ToastActions, { direction: "row", children: actions })] }));
|
|
6366
6349
|
};
|
|
6367
6350
|
/**
|
|
6368
6351
|
* Helper component for creating toast action buttons with proper styling
|
|
@@ -6469,7 +6452,7 @@ const StyledSwitch = styled(Switch, {
|
|
|
6469
6452
|
[`& .${switchClasses.thumb}`]: {
|
|
6470
6453
|
width: config.thumbSize,
|
|
6471
6454
|
height: config.thumbSize,
|
|
6472
|
-
boxShadow: `${shadows.
|
|
6455
|
+
boxShadow: `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`,
|
|
6473
6456
|
transition: theme.transitions.create(['width'], {
|
|
6474
6457
|
duration: theme.transitions.duration.shortest,
|
|
6475
6458
|
}),
|
|
@@ -6638,7 +6621,7 @@ const StyledTooltip = styled(Tooltip, {
|
|
|
6638
6621
|
justifyContent: 'center',
|
|
6639
6622
|
}),
|
|
6640
6623
|
// Apply shadow
|
|
6641
|
-
boxShadow: `${shadows.
|
|
6624
|
+
boxShadow: `${shadows.neutral.medium.x}px ${shadows.neutral.medium.y}px ${shadows.neutral.medium.blur}px ${shadows.neutral.medium.spread}px ${shadows.neutral.medium.shadow}`,
|
|
6642
6625
|
},
|
|
6643
6626
|
// Style the arrow
|
|
6644
6627
|
[`& .${tooltipClasses.arrow}`]: {
|
|
@@ -6879,5 +6862,5 @@ NeoTypologyControl.displayName = 'NeoTypologyControl';
|
|
|
6879
6862
|
|
|
6880
6863
|
const version = '0.0.0-development';
|
|
6881
6864
|
|
|
6882
|
-
export { ActivityScene, CIRCLE_RADIUS, NeoActivityHeader, NeoActivityIndicatorCell, NeoAvatar, NeoBadge, NeoBanner, NeoBreadcrumbLink, NeoBreadcrumbs, NeoButton, NeoButtonTab, NeoButtonTabGroup, NeoCheckbox, NeoCodeSnippet, NeoDataGrid, NeoDataGridCellContent, NeoDataGridColumnsButton, NeoDataGridColumnsPanel, NeoDataGridFilterPanel, NeoDataGridFilterPanelAddIcon, NeoDataGridFilterPanelDeleteIcon, NeoDataGridFilterPanelRemoveAllIcon, NeoDataGridFiltersButton, NeoDataGridHeaderLabel, NeoDropdown as NeoDataGridSelect, NeoDatePicker, NeoDivider, NeoDot, NeoDropdown, NeoDropdownMenu, NeoDropdownMenuItem, NeoDropdownMenuItem as NeoDropdownOption, NeoFilterChip, NeoFooter, NeoGeneralAvatar, NeoIconButton, NeoIconWrapper, NeoInfiniteScrollGrid, NeoInputField, NeoListItem, NeoListItemButton, NeoLoadingSpinner, NeoMarketplaceCard, NeoMarketplaceLargeCard, NeoDropdownMenu as NeoMenu, NeoDropdownMenuItem as NeoMenuItem, NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader, NeoMultiBadgesCell, NeoNavigationAvatar, NeoNavigationItem, NeoPageContent, NeoPaginatedGrid, NeoProgressbar, NeoQuickFilter, NeoRadio, NeoSearchChip, NeoDropdown as NeoSelect, NeoDropdownMenuItem as NeoSelectOption, NeoSkeleton, NeoStatusBadgeCell,
|
|
6865
|
+
export { ActivityScene, CIRCLE_RADIUS, NeoActivityHeader, NeoActivityIndicatorCell, NeoAlert, NeoAvatar, NeoBadge, NeoBanner, NeoBreadcrumbLink, NeoBreadcrumbs, NeoButton, NeoButtonTab, NeoButtonTabGroup, NeoCard, NeoCheckbox, NeoCodeSnippet, NeoDataGrid, NeoDataGridCellContent, NeoDataGridColumnsButton, NeoDataGridColumnsPanel, NeoDataGridFilterPanel, NeoDataGridFilterPanelAddIcon, NeoDataGridFilterPanelDeleteIcon, NeoDataGridFilterPanelRemoveAllIcon, NeoDataGridFiltersButton, NeoDataGridHeaderLabel, NeoDropdown as NeoDataGridSelect, NeoDatePicker, NeoDivider, NeoDot, NeoDownloadToast, NeoDropdown, NeoDropdownMenu, NeoDropdownMenuItem, NeoDropdownMenuItem as NeoDropdownOption, NeoFilterChip, NeoFooter, NeoGeneralAvatar, NeoIconButton, NeoIconWrapper, NeoInfiniteScrollGrid, NeoInputField, NeoListItem, NeoListItemButton, NeoLoadingSpinner, NeoMarketplaceCard, NeoMarketplaceLargeCard, NeoDropdownMenu as NeoMenu, NeoDropdownMenuItem as NeoMenuItem, NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader, NeoMultiBadgesCell, NeoNavigationAvatar, NeoNavigationItem, NeoPageContent, NeoPaginatedGrid, NeoProgressbar, NeoQuickFilter, NeoRadio, NeoSearchChip, NeoDropdown as NeoSelect, NeoDropdownMenuItem as NeoSelectOption, NeoSkeleton, NeoStatusBadgeCell, NeoTab, NeoTabs, NeoTag, NeoToast, NeoToastButton, NeoToggle, NeoToolbar, NeoTooltip, NeoTreeItem, NeoTreeView, StyledToggleButton as NeoTypologyButton, NeoTypologyControl, NeoUserAvatarCell, SortedAscendingIcon, SortedDescendingIcon, UnsortedIcon, getDataGridHeaderStyles, neoRowHeights, version };
|
|
6883
6866
|
//# sourceMappingURL=index.esm.js.map
|