@moderneinc/neo-styled-components 2.6.0 → 2.7.0-next.e807e4
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/Banner/Banner.d.ts +22 -17
- package/dist/ButtonTab/ButtonTab.d.ts +19 -0
- package/dist/ButtonTabGroup/ButtonTabGroup.d.ts +39 -0
- package/dist/CodeSnippet/CodeSnippet.d.ts +4 -4
- package/dist/GeneralAvatar/GeneralAvatar.d.ts +26 -0
- package/dist/ListItemButton/ListItemButton.d.ts +1 -1
- package/dist/MarketplaceCard/MarketplaceCard.d.ts +2 -2
- package/dist/MarketplaceLargeCard/MarketplaceLargeCard.d.ts +2 -2
- package/dist/NavigationAvatar/NavigationAvatar.d.ts +15 -0
- package/dist/StatusBanner/StatusBanner.d.ts +14 -11
- package/dist/Tabs/Tabs.d.ts +5 -7
- package/dist/Tag/Tag.d.ts +7 -7
- package/dist/Toast/Toast.d.ts +19 -11
- package/dist/Tooltip/Tooltip.d.ts +6 -6
- package/dist/index.d.ts +160 -89
- package/dist/index.esm.js +557 -260
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +560 -260
- package/dist/index.js.map +1 -1
- package/dist/utils/avatarColors.d.ts +7 -0
- package/dist/utils/focusRing.d.ts +3 -3
- package/package.json +1 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts +0 -41
package/dist/index.js
CHANGED
|
@@ -14,7 +14,8 @@ var Breadcrumbs = require('@mui/material/Breadcrumbs');
|
|
|
14
14
|
var Link = require('@mui/material/Link');
|
|
15
15
|
var ButtonBase = require('@mui/material/ButtonBase');
|
|
16
16
|
var CircularProgress = require('@mui/material/CircularProgress');
|
|
17
|
-
var
|
|
17
|
+
var MuiToggleButton = require('@mui/material/ToggleButton');
|
|
18
|
+
var MuiToggleButtonGroup = require('@mui/material/ToggleButtonGroup');
|
|
18
19
|
var Checkbox = require('@mui/material/Checkbox');
|
|
19
20
|
var xDataGridPro = require('@mui/x-data-grid-pro');
|
|
20
21
|
var Button = require('@mui/material/Button');
|
|
@@ -62,22 +63,20 @@ var Switch = require('@mui/material/Switch');
|
|
|
62
63
|
var hooks = require('@mui/x-tree-view/hooks');
|
|
63
64
|
var TreeItem = require('@mui/x-tree-view/TreeItem');
|
|
64
65
|
var RichTreeViewPro = require('@mui/x-tree-view-pro/RichTreeViewPro');
|
|
65
|
-
var ToggleButton = require('@mui/material/ToggleButton');
|
|
66
|
-
var ToggleButtonGroup = require('@mui/material/ToggleButtonGroup');
|
|
67
66
|
|
|
68
67
|
/**
|
|
69
|
-
* Outline-based focus ring styles derived from Neo
|
|
68
|
+
* Outline-based focus ring styles derived from Neo border tokens.
|
|
70
69
|
* Uses CSS outline (not box-shadow) so focus rings are never clipped by overflow:hidden.
|
|
71
70
|
*
|
|
72
|
-
* Produces a double-ring effect: a white inner gap (via outline-offset) and a
|
|
71
|
+
* Produces a double-ring effect: a white inner gap (via outline-offset) and a colored outer ring.
|
|
73
72
|
*/
|
|
74
73
|
const focusRingStyles = {
|
|
75
|
-
outline:
|
|
76
|
-
outlineOffset:
|
|
74
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
75
|
+
outlineOffset: '2px',
|
|
77
76
|
};
|
|
78
77
|
|
|
79
78
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Avatar variant type without global augmentation
|
|
80
|
-
const StyledAvatar = styles.styled(Avatar, {
|
|
79
|
+
const StyledAvatar$1 = styles.styled(Avatar, {
|
|
81
80
|
shouldForwardProp: prop => prop !== 'size' && prop !== 'variant',
|
|
82
81
|
})(({ theme, size = 'medium', variant = 'circular' }) => ({
|
|
83
82
|
boxSizing: 'border-box',
|
|
@@ -179,7 +178,7 @@ const AvatarContainer = styles.styled(Box)(({ size = 'medium' }) => ({
|
|
|
179
178
|
*/
|
|
180
179
|
const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }) => {
|
|
181
180
|
// shouldForwardProp filters out size and variant from being passed to the DOM
|
|
182
|
-
const avatar = jsxRuntime.jsx(StyledAvatar, { size: size, variant: variant, ...props });
|
|
181
|
+
const avatar = jsxRuntime.jsx(StyledAvatar$1, { size: size, variant: variant, ...props });
|
|
183
182
|
// Medium size with circular variant (image) gets wrapped in white container
|
|
184
183
|
if (size === 'medium' && variant === 'circular') {
|
|
185
184
|
return jsxRuntime.jsx(AvatarContainer, { size: size, children: avatar });
|
|
@@ -221,7 +220,7 @@ const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
|
221
220
|
[`&.${Chip.chipClasses.colorDefault}`]: {
|
|
222
221
|
backgroundColor: neoDesign.semanticColors.status.neutral.light,
|
|
223
222
|
color: neoDesign.semanticColors.status.neutral.dark,
|
|
224
|
-
border: `1px solid ${neoDesign.semanticColors.status.neutral.
|
|
223
|
+
border: `1px solid ${neoDesign.semanticColors.status.neutral.default}80`,
|
|
225
224
|
[`& .${Chip.chipClasses.icon}, & .${Chip.chipClasses.deleteIcon}`]: {
|
|
226
225
|
color: neoDesign.semanticColors.status.neutral.dark,
|
|
227
226
|
},
|
|
@@ -230,7 +229,7 @@ const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
|
230
229
|
[`&.${Chip.chipClasses.colorError}`]: {
|
|
231
230
|
backgroundColor: neoDesign.semanticColors.status.error.light,
|
|
232
231
|
color: neoDesign.semanticColors.status.error.dark,
|
|
233
|
-
border: `1px solid ${neoDesign.semanticColors.status.error.
|
|
232
|
+
border: `1px solid ${neoDesign.semanticColors.status.error.default}80`,
|
|
234
233
|
[`& .${Chip.chipClasses.icon}, & .${Chip.chipClasses.deleteIcon}`]: {
|
|
235
234
|
color: neoDesign.semanticColors.status.error.dark,
|
|
236
235
|
},
|
|
@@ -239,7 +238,7 @@ const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
|
239
238
|
[`&.${Chip.chipClasses.colorWarning}`]: {
|
|
240
239
|
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
241
240
|
color: neoDesign.semanticColors.status.warning.dark,
|
|
242
|
-
border: `1px solid ${neoDesign.semanticColors.status.warning.
|
|
241
|
+
border: `1px solid ${neoDesign.semanticColors.status.warning.default}80`,
|
|
243
242
|
[`& .${Chip.chipClasses.icon}, & .${Chip.chipClasses.deleteIcon}`]: {
|
|
244
243
|
color: neoDesign.semanticColors.status.warning.dark,
|
|
245
244
|
},
|
|
@@ -248,7 +247,7 @@ const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
|
248
247
|
[`&.${Chip.chipClasses.colorSuccess}`]: {
|
|
249
248
|
backgroundColor: neoDesign.semanticColors.status.success.light,
|
|
250
249
|
color: neoDesign.semanticColors.status.success.dark,
|
|
251
|
-
border: `1px solid ${neoDesign.semanticColors.status.success.
|
|
250
|
+
border: `1px solid ${neoDesign.semanticColors.status.success.default}80`,
|
|
252
251
|
[`& .${Chip.chipClasses.icon}, & .${Chip.chipClasses.deleteIcon}`]: {
|
|
253
252
|
color: neoDesign.semanticColors.status.success.dark,
|
|
254
253
|
},
|
|
@@ -257,7 +256,7 @@ const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
|
257
256
|
[`&.${Chip.chipClasses.colorInfo}`]: {
|
|
258
257
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
259
258
|
color: neoDesign.semanticColors.status.info.dark,
|
|
260
|
-
border: `1px solid ${neoDesign.semanticColors.status.info.
|
|
259
|
+
border: `1px solid ${neoDesign.semanticColors.status.info.default}80`,
|
|
261
260
|
[`& .${Chip.chipClasses.icon}, & .${Chip.chipClasses.deleteIcon}`]: {
|
|
262
261
|
color: neoDesign.semanticColors.status.info.dark,
|
|
263
262
|
},
|
|
@@ -691,11 +690,11 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
691
690
|
*/
|
|
692
691
|
|
|
693
692
|
|
|
694
|
-
const __iconNode$
|
|
693
|
+
const __iconNode$j = [
|
|
695
694
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
696
695
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
697
696
|
];
|
|
698
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
697
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$j);
|
|
699
698
|
|
|
700
699
|
/**
|
|
701
700
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -705,11 +704,11 @@ const ArrowDown = createLucideIcon("arrow-down", __iconNode$i);
|
|
|
705
704
|
*/
|
|
706
705
|
|
|
707
706
|
|
|
708
|
-
const __iconNode$
|
|
707
|
+
const __iconNode$i = [
|
|
709
708
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
710
709
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
711
710
|
];
|
|
712
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
711
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$i);
|
|
713
712
|
|
|
714
713
|
/**
|
|
715
714
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -719,7 +718,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$h);
|
|
|
719
718
|
*/
|
|
720
719
|
|
|
721
720
|
|
|
722
|
-
const __iconNode$
|
|
721
|
+
const __iconNode$h = [
|
|
723
722
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
724
723
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
725
724
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
@@ -731,7 +730,7 @@ const __iconNode$g = [
|
|
|
731
730
|
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
732
731
|
["path", { d: "M16 18h.01", key: "kzsmim" }]
|
|
733
732
|
];
|
|
734
|
-
const CalendarDays = createLucideIcon("calendar-days", __iconNode$
|
|
733
|
+
const CalendarDays = createLucideIcon("calendar-days", __iconNode$h);
|
|
735
734
|
|
|
736
735
|
/**
|
|
737
736
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -741,8 +740,8 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$g);
|
|
|
741
740
|
*/
|
|
742
741
|
|
|
743
742
|
|
|
744
|
-
const __iconNode$
|
|
745
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
743
|
+
const __iconNode$g = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
744
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$g);
|
|
746
745
|
|
|
747
746
|
/**
|
|
748
747
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -752,8 +751,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
|
|
|
752
751
|
*/
|
|
753
752
|
|
|
754
753
|
|
|
755
|
-
const __iconNode$
|
|
756
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
754
|
+
const __iconNode$f = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
755
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$f);
|
|
757
756
|
|
|
758
757
|
/**
|
|
759
758
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -763,8 +762,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$e);
|
|
|
763
762
|
*/
|
|
764
763
|
|
|
765
764
|
|
|
766
|
-
const __iconNode$
|
|
767
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
765
|
+
const __iconNode$e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
766
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$e);
|
|
768
767
|
|
|
769
768
|
/**
|
|
770
769
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -774,8 +773,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
|
|
|
774
773
|
*/
|
|
775
774
|
|
|
776
775
|
|
|
777
|
-
const __iconNode$
|
|
778
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
776
|
+
const __iconNode$d = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
777
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$d);
|
|
779
778
|
|
|
780
779
|
/**
|
|
781
780
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -785,11 +784,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$c);
|
|
|
785
784
|
*/
|
|
786
785
|
|
|
787
786
|
|
|
788
|
-
const __iconNode$
|
|
787
|
+
const __iconNode$c = [
|
|
789
788
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
790
789
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
791
790
|
];
|
|
792
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
791
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$c);
|
|
793
792
|
|
|
794
793
|
/**
|
|
795
794
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -799,12 +798,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$b);
|
|
|
799
798
|
*/
|
|
800
799
|
|
|
801
800
|
|
|
802
|
-
const __iconNode$
|
|
801
|
+
const __iconNode$b = [
|
|
803
802
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
804
803
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
805
804
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
806
805
|
];
|
|
807
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
806
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$b);
|
|
808
807
|
|
|
809
808
|
/**
|
|
810
809
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -814,11 +813,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$a);
|
|
|
814
813
|
*/
|
|
815
814
|
|
|
816
815
|
|
|
817
|
-
const __iconNode$
|
|
816
|
+
const __iconNode$a = [
|
|
818
817
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
819
818
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
820
819
|
];
|
|
821
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
820
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$a);
|
|
822
821
|
|
|
823
822
|
/**
|
|
824
823
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -828,12 +827,12 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$9);
|
|
|
828
827
|
*/
|
|
829
828
|
|
|
830
829
|
|
|
831
|
-
const __iconNode$
|
|
830
|
+
const __iconNode$9 = [
|
|
832
831
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
833
832
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
834
833
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
835
834
|
];
|
|
836
|
-
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$
|
|
835
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$9);
|
|
837
836
|
|
|
838
837
|
/**
|
|
839
838
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -843,12 +842,12 @@ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$8
|
|
|
843
842
|
*/
|
|
844
843
|
|
|
845
844
|
|
|
846
|
-
const __iconNode$
|
|
845
|
+
const __iconNode$8 = [
|
|
847
846
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
848
847
|
["path", { d: "M9 3v18", key: "fh3hqa" }],
|
|
849
848
|
["path", { d: "M15 3v18", key: "14nvp0" }]
|
|
850
849
|
];
|
|
851
|
-
const Columns3 = createLucideIcon("columns-3", __iconNode$
|
|
850
|
+
const Columns3 = createLucideIcon("columns-3", __iconNode$8);
|
|
852
851
|
|
|
853
852
|
/**
|
|
854
853
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -858,12 +857,12 @@ const Columns3 = createLucideIcon("columns-3", __iconNode$7);
|
|
|
858
857
|
*/
|
|
859
858
|
|
|
860
859
|
|
|
861
|
-
const __iconNode$
|
|
860
|
+
const __iconNode$7 = [
|
|
862
861
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
863
862
|
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
864
863
|
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
865
864
|
];
|
|
866
|
-
const Info = createLucideIcon("info", __iconNode$
|
|
865
|
+
const Info = createLucideIcon("info", __iconNode$7);
|
|
867
866
|
|
|
868
867
|
/**
|
|
869
868
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -873,12 +872,12 @@ const Info = createLucideIcon("info", __iconNode$6);
|
|
|
873
872
|
*/
|
|
874
873
|
|
|
875
874
|
|
|
876
|
-
const __iconNode$
|
|
875
|
+
const __iconNode$6 = [
|
|
877
876
|
["path", { d: "M2 5h20", key: "1fs1ex" }],
|
|
878
877
|
["path", { d: "M6 12h12", key: "8npq4p" }],
|
|
879
878
|
["path", { d: "M9 19h6", key: "456am0" }]
|
|
880
879
|
];
|
|
881
|
-
const ListFilter = createLucideIcon("list-filter", __iconNode$
|
|
880
|
+
const ListFilter = createLucideIcon("list-filter", __iconNode$6);
|
|
882
881
|
|
|
883
882
|
/**
|
|
884
883
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -888,11 +887,11 @@ const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
|
888
887
|
*/
|
|
889
888
|
|
|
890
889
|
|
|
891
|
-
const __iconNode$
|
|
890
|
+
const __iconNode$5 = [
|
|
892
891
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
893
892
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
894
893
|
];
|
|
895
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
894
|
+
const Plus = createLucideIcon("plus", __iconNode$5);
|
|
896
895
|
|
|
897
896
|
/**
|
|
898
897
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -902,11 +901,11 @@ const Plus = createLucideIcon("plus", __iconNode$4);
|
|
|
902
901
|
*/
|
|
903
902
|
|
|
904
903
|
|
|
905
|
-
const __iconNode$
|
|
904
|
+
const __iconNode$4 = [
|
|
906
905
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
907
906
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
908
907
|
];
|
|
909
|
-
const Search = createLucideIcon("search", __iconNode$
|
|
908
|
+
const Search = createLucideIcon("search", __iconNode$4);
|
|
910
909
|
|
|
911
910
|
/**
|
|
912
911
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -916,14 +915,35 @@ const Search = createLucideIcon("search", __iconNode$3);
|
|
|
916
915
|
*/
|
|
917
916
|
|
|
918
917
|
|
|
919
|
-
const __iconNode$
|
|
918
|
+
const __iconNode$3 = [
|
|
920
919
|
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
921
920
|
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
922
921
|
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
923
922
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
924
923
|
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
925
924
|
];
|
|
926
|
-
const Trash2 = createLucideIcon("trash-2", __iconNode$
|
|
925
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode$3);
|
|
926
|
+
|
|
927
|
+
/**
|
|
928
|
+
* @license lucide-react v0.577.0 - ISC
|
|
929
|
+
*
|
|
930
|
+
* This source code is licensed under the ISC license.
|
|
931
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
932
|
+
*/
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
const __iconNode$2 = [
|
|
936
|
+
[
|
|
937
|
+
"path",
|
|
938
|
+
{
|
|
939
|
+
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",
|
|
940
|
+
key: "wmoenq"
|
|
941
|
+
}
|
|
942
|
+
],
|
|
943
|
+
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
944
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
945
|
+
];
|
|
946
|
+
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$2);
|
|
927
947
|
|
|
928
948
|
/**
|
|
929
949
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -960,15 +980,11 @@ const X = createLucideIcon("x", __iconNode);
|
|
|
960
980
|
|
|
961
981
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
962
982
|
const StyledAlert$2 = styles.styled(Alert, {
|
|
963
|
-
shouldForwardProp: prop => prop !== 'messagePosition' && prop !== 'variant',
|
|
964
|
-
})(({ variant = '
|
|
965
|
-
//
|
|
966
|
-
const
|
|
967
|
-
|
|
968
|
-
backgroundColor: neoDesign.semanticColors.surfaces.snackbarBrand,
|
|
969
|
-
color: neoDesign.semanticColors.surfaces.white,
|
|
970
|
-
},
|
|
971
|
-
light: {
|
|
983
|
+
shouldForwardProp: prop => prop !== 'messagePosition' && prop !== 'variant' && prop !== 'bannerType',
|
|
984
|
+
})(({ variant = 'info', bannerType = 'outlined', messagePosition = 'left' }) => {
|
|
985
|
+
// Outlined styles (light bg + colored border)
|
|
986
|
+
const outlinedStyles = {
|
|
987
|
+
info: {
|
|
972
988
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
973
989
|
color: neoDesign.colors.grey['800'],
|
|
974
990
|
},
|
|
@@ -984,6 +1000,50 @@ const StyledAlert$2 = styles.styled(Alert, {
|
|
|
984
1000
|
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
985
1001
|
color: neoDesign.colors.grey['800'],
|
|
986
1002
|
},
|
|
1003
|
+
neutral: {
|
|
1004
|
+
backgroundColor: neoDesign.semanticColors.status.neutral.light,
|
|
1005
|
+
color: neoDesign.colors.grey['800'],
|
|
1006
|
+
},
|
|
1007
|
+
};
|
|
1008
|
+
// Filled styles (solid bg)
|
|
1009
|
+
const filledStyles = {
|
|
1010
|
+
info: {
|
|
1011
|
+
backgroundColor: neoDesign.semanticColors.status.info.dark,
|
|
1012
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
1013
|
+
},
|
|
1014
|
+
success: {
|
|
1015
|
+
backgroundColor: neoDesign.semanticColors.status.success.dark,
|
|
1016
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
1017
|
+
},
|
|
1018
|
+
error: {
|
|
1019
|
+
backgroundColor: neoDesign.semanticColors.status.error.dark,
|
|
1020
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
1021
|
+
},
|
|
1022
|
+
warning: {
|
|
1023
|
+
backgroundColor: neoDesign.semanticColors.status.warning.default,
|
|
1024
|
+
color: neoDesign.semanticColors.typography.warning,
|
|
1025
|
+
},
|
|
1026
|
+
neutral: {
|
|
1027
|
+
backgroundColor: neoDesign.semanticColors.surfaces.snackbarLightMode,
|
|
1028
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
1029
|
+
},
|
|
1030
|
+
};
|
|
1031
|
+
// Legacy variants (ignore bannerType)
|
|
1032
|
+
const legacyStyles = {
|
|
1033
|
+
dark: {
|
|
1034
|
+
backgroundColor: neoDesign.semanticColors.surfaces.snackbarBrand,
|
|
1035
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
1036
|
+
},
|
|
1037
|
+
light: {
|
|
1038
|
+
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
1039
|
+
color: neoDesign.colors.grey['800'],
|
|
1040
|
+
},
|
|
1041
|
+
};
|
|
1042
|
+
const getVariantStyles = () => {
|
|
1043
|
+
if (legacyStyles[variant])
|
|
1044
|
+
return legacyStyles[variant];
|
|
1045
|
+
const styleMap = bannerType === 'filled' ? filledStyles : outlinedStyles;
|
|
1046
|
+
return styleMap[variant] ?? outlinedStyles.info;
|
|
987
1047
|
};
|
|
988
1048
|
return {
|
|
989
1049
|
width: '100%',
|
|
@@ -1000,7 +1060,7 @@ const StyledAlert$2 = styles.styled(Alert, {
|
|
|
1000
1060
|
fontSize: neoDesign.typography.fontSize.default,
|
|
1001
1061
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
1002
1062
|
lineHeight: 1.5,
|
|
1003
|
-
...
|
|
1063
|
+
...getVariantStyles(),
|
|
1004
1064
|
[`& .${Alert.alertClasses.icon}`]: {
|
|
1005
1065
|
padding: 0,
|
|
1006
1066
|
opacity: 1,
|
|
@@ -1023,15 +1083,16 @@ const StyledAlert$2 = styles.styled(Alert, {
|
|
|
1023
1083
|
},
|
|
1024
1084
|
};
|
|
1025
1085
|
});
|
|
1026
|
-
const LinkText = styles.styled('span')(({ variant = '
|
|
1086
|
+
const LinkText = styles.styled('span')(({ variant = 'info', bannerType = 'outlined' }) => {
|
|
1087
|
+
const isLegacy = variant === 'dark' || variant === 'light';
|
|
1088
|
+
const isFilled = !isLegacy && bannerType === 'filled';
|
|
1027
1089
|
const getLinkColor = () => {
|
|
1028
|
-
if (variant === 'dark') {
|
|
1029
|
-
return neoDesign.semanticColors.typography.link.default;
|
|
1090
|
+
if (variant === 'dark' || isFilled) {
|
|
1091
|
+
return neoDesign.semanticColors.typography.link.default;
|
|
1030
1092
|
}
|
|
1031
|
-
if (variant === 'light') {
|
|
1032
|
-
return neoDesign.semanticColors.typography.link.primary;
|
|
1093
|
+
if (variant === 'light' || variant === 'info') {
|
|
1094
|
+
return neoDesign.semanticColors.typography.link.primary;
|
|
1033
1095
|
}
|
|
1034
|
-
// For success, error, warning - use dark body color #1f2937
|
|
1035
1096
|
return neoDesign.colors.grey['800'];
|
|
1036
1097
|
};
|
|
1037
1098
|
return {
|
|
@@ -1056,29 +1117,34 @@ const StyledIconButton$1 = styles.styled(IconButton)(({ closeIconColor }) => ({
|
|
|
1056
1117
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158
|
|
1057
1118
|
*
|
|
1058
1119
|
* Figma Props Mapping:
|
|
1059
|
-
* -
|
|
1060
|
-
* -
|
|
1061
|
-
* -
|
|
1062
|
-
* -
|
|
1063
|
-
* -
|
|
1064
|
-
*/
|
|
1065
|
-
const NeoBanner = ({ variant = '
|
|
1120
|
+
* - Intention (Info|Success|Error|Warning|Neutral) → variant (info|success|error|warning|neutral)
|
|
1121
|
+
* - Type (Outlined|Filled) → type ('outlined'|'filled')
|
|
1122
|
+
* - Message Position (Left|Center) → messagePosition ('left'|'center')
|
|
1123
|
+
* - Dismissible (boolean) → showClose (boolean)
|
|
1124
|
+
* - Show Link (boolean) → linkText presence (string when shown)
|
|
1125
|
+
*/
|
|
1126
|
+
const NeoBanner = ({ variant = 'info', type = 'outlined', message, messagePosition = 'left', linkText, showClose = true, icon, onClose, onLinkClick, ...props }) => {
|
|
1127
|
+
const isLegacy = variant === 'dark' || variant === 'light';
|
|
1128
|
+
const isFilled = !isLegacy && type === 'filled';
|
|
1066
1129
|
const getCloseIconColor = () => {
|
|
1067
|
-
if (variant === '
|
|
1130
|
+
if (isFilled && variant === 'warning') {
|
|
1131
|
+
return neoDesign.semanticColors.typography.warning;
|
|
1132
|
+
}
|
|
1133
|
+
if (variant === 'dark' || isFilled) {
|
|
1068
1134
|
return neoDesign.semanticColors.surfaces.white;
|
|
1069
1135
|
}
|
|
1070
1136
|
if (variant === 'success') {
|
|
1071
|
-
return neoDesign.semanticColors.status.success.
|
|
1137
|
+
return neoDesign.semanticColors.status.success.default;
|
|
1072
1138
|
}
|
|
1073
1139
|
if (variant === 'error') {
|
|
1074
|
-
return neoDesign.semanticColors.status.error.
|
|
1140
|
+
return neoDesign.semanticColors.status.error.default;
|
|
1075
1141
|
}
|
|
1076
1142
|
if (variant === 'warning') {
|
|
1077
|
-
return neoDesign.semanticColors.status.warning.
|
|
1143
|
+
return neoDesign.semanticColors.status.warning.default;
|
|
1078
1144
|
}
|
|
1079
1145
|
return neoDesign.colors.grey['800'];
|
|
1080
1146
|
};
|
|
1081
|
-
return (jsxRuntime.jsx(StyledAlert$2, { ...props, variant: variant, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsxRuntime.jsx(StyledIconButton$1, { size: "small", onClick: onClose, closeIconColor: getCloseIconColor(), children: jsxRuntime.jsx(X, { size: 24 }) })) : undefined, children: messagePosition === 'center' ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [icon, jsxRuntime.jsx("span", { children: message }), linkText && (jsxRuntime.jsx(LinkText, { variant: variant, onClick: onLinkClick, children: linkText }))] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { children: message }), linkText && (jsxRuntime.jsx(LinkText, { variant: variant, onClick: onLinkClick, children: linkText }))] })) }));
|
|
1147
|
+
return (jsxRuntime.jsx(StyledAlert$2, { ...props, variant: variant, bannerType: type, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsxRuntime.jsx(StyledIconButton$1, { size: "small", onClick: onClose, closeIconColor: getCloseIconColor(), children: jsxRuntime.jsx(X, { size: 24 }) })) : undefined, children: messagePosition === 'center' ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [icon, jsxRuntime.jsx("span", { children: message }), linkText && (jsxRuntime.jsx(LinkText, { variant: variant, bannerType: type, onClick: onLinkClick, children: linkText }))] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { children: message }), linkText && (jsxRuntime.jsx(LinkText, { variant: variant, bannerType: type, onClick: onLinkClick, children: linkText }))] })) }));
|
|
1082
1148
|
};
|
|
1083
1149
|
NeoBanner.displayName = 'NeoBanner';
|
|
1084
1150
|
|
|
@@ -1106,7 +1172,7 @@ const StyledBreadcrumbLink = styles.styled(Link, {
|
|
|
1106
1172
|
color: current ? neoDesign.semanticColors.buttons.tertiary.hover : neoDesign.semanticColors.icons.hover,
|
|
1107
1173
|
},
|
|
1108
1174
|
'&:focus-visible': {
|
|
1109
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
1175
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1110
1176
|
outlineOffset: 2,
|
|
1111
1177
|
},
|
|
1112
1178
|
}));
|
|
@@ -1196,7 +1262,7 @@ const StyledButtonBase$1 = styles.styled(ButtonBase, {
|
|
|
1196
1262
|
},
|
|
1197
1263
|
// Focus visible for keyboard navigation
|
|
1198
1264
|
[`&.${ButtonBase.buttonBaseClasses.focusVisible}`]: {
|
|
1199
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
1265
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1200
1266
|
outlineOffset: 2,
|
|
1201
1267
|
},
|
|
1202
1268
|
};
|
|
@@ -1236,7 +1302,7 @@ const StyledButtonBase$1 = styles.styled(ButtonBase, {
|
|
|
1236
1302
|
: {
|
|
1237
1303
|
[`&.${ButtonBase.buttonBaseClasses.disabled}`]: {
|
|
1238
1304
|
backgroundColor: neoDesign.semanticColors.buttons.secondary.disabledBackground,
|
|
1239
|
-
borderColor: neoDesign.semanticColors.
|
|
1305
|
+
borderColor: neoDesign.semanticColors.border.secondary,
|
|
1240
1306
|
color: neoDesign.semanticColors.typography.button.disabled,
|
|
1241
1307
|
},
|
|
1242
1308
|
}),
|
|
@@ -1364,40 +1430,102 @@ function NeoButton({ variant = 'primary', size = 'medium', loading = false, chil
|
|
|
1364
1430
|
}
|
|
1365
1431
|
NeoButton.displayName = 'NeoButton';
|
|
1366
1432
|
|
|
1433
|
+
const StyledButtonTab = styles.styled(MuiToggleButton)(({ theme }) => ({
|
|
1434
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
1435
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
1436
|
+
lineHeight: 1,
|
|
1437
|
+
color: neoDesign.semanticColors.typography.tab.inactive,
|
|
1438
|
+
backgroundColor: 'transparent',
|
|
1439
|
+
border: 'none',
|
|
1440
|
+
padding: theme.spacing(1, 1.5),
|
|
1441
|
+
cursor: 'pointer',
|
|
1442
|
+
textTransform: 'none',
|
|
1443
|
+
transition: theme.transitions.create(['color'], {
|
|
1444
|
+
duration: theme.transitions.duration.short,
|
|
1445
|
+
}),
|
|
1446
|
+
'&:hover': {
|
|
1447
|
+
color: neoDesign.semanticColors.typography.tab.active,
|
|
1448
|
+
},
|
|
1449
|
+
'&.Mui-focusVisible': {
|
|
1450
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1451
|
+
outlineOffset: -2,
|
|
1452
|
+
borderRadius: neoDesign.borderRadius.xXS,
|
|
1453
|
+
},
|
|
1454
|
+
'&.Mui-disabled': {
|
|
1455
|
+
color: neoDesign.semanticColors.typography.button.disabled,
|
|
1456
|
+
cursor: 'default',
|
|
1457
|
+
pointerEvents: 'none',
|
|
1458
|
+
},
|
|
1459
|
+
}));
|
|
1460
|
+
/**
|
|
1461
|
+
* Syncs aria-selected with MUI's Mui-selected class via MutationObserver.
|
|
1462
|
+
* MUI ToggleButton computes selection internally from context and applies
|
|
1463
|
+
* the Mui-selected class — we mirror that to aria-selected for tab semantics.
|
|
1464
|
+
*/
|
|
1465
|
+
function useTabAriaSync() {
|
|
1466
|
+
const observerRef = React.useRef(null);
|
|
1467
|
+
return React.useCallback((node) => {
|
|
1468
|
+
if (observerRef.current) {
|
|
1469
|
+
observerRef.current.disconnect();
|
|
1470
|
+
observerRef.current = null;
|
|
1471
|
+
}
|
|
1472
|
+
if (!node)
|
|
1473
|
+
return;
|
|
1474
|
+
const sync = () => {
|
|
1475
|
+
node.setAttribute('role', 'tab');
|
|
1476
|
+
node.setAttribute('aria-selected', String(node.classList.contains('Mui-selected')));
|
|
1477
|
+
};
|
|
1478
|
+
sync();
|
|
1479
|
+
observerRef.current = new MutationObserver(sync);
|
|
1480
|
+
observerRef.current.observe(node, { attributes: true, attributeFilter: ['class'] });
|
|
1481
|
+
}, []);
|
|
1482
|
+
}
|
|
1483
|
+
/**
|
|
1484
|
+
* NeoButtonTab - A tab-style toggle button for use within NeoButtonGroup
|
|
1485
|
+
*
|
|
1486
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=4106-11048
|
|
1487
|
+
*/
|
|
1488
|
+
const NeoButtonTab = ({ children, ...props }) => {
|
|
1489
|
+
const tabRef = useTabAriaSync();
|
|
1490
|
+
return (jsxRuntime.jsx(StyledButtonTab, { ref: tabRef, ...props, children: children }));
|
|
1491
|
+
};
|
|
1492
|
+
NeoButtonTab.displayName = 'NeoButtonTab';
|
|
1493
|
+
|
|
1367
1494
|
/**
|
|
1368
|
-
* Styled
|
|
1495
|
+
* Styled toggle button group that implements the Figma "Button tab group" design.
|
|
1369
1496
|
*
|
|
1370
|
-
*
|
|
1371
|
-
* -
|
|
1372
|
-
* -
|
|
1373
|
-
* -
|
|
1497
|
+
* Built on MUI ToggleButtonGroup which provides:
|
|
1498
|
+
* - Selection state management (value/onChange/exclusive)
|
|
1499
|
+
* - Size and disabled propagation via context
|
|
1500
|
+
* - Positional classes (firstButton/middleButton/lastButton)
|
|
1374
1501
|
*
|
|
1375
|
-
* Custom styling
|
|
1376
|
-
* -
|
|
1502
|
+
* Custom styling:
|
|
1503
|
+
* - Pill-shaped border (borderRadius.full)
|
|
1377
1504
|
* - Size variants (small=32px, medium=40px)
|
|
1378
1505
|
* - Border colors using semantic tokens
|
|
1379
|
-
* -
|
|
1506
|
+
* - Selected state colors from Neo design tokens
|
|
1380
1507
|
*/
|
|
1381
|
-
const
|
|
1508
|
+
const StyledButtonTabGroup = styles.styled(MuiToggleButtonGroup)(({ theme, size = 'medium' }) => {
|
|
1382
1509
|
const sizeStyles = {
|
|
1383
1510
|
small: {
|
|
1384
|
-
height:
|
|
1511
|
+
height: neoDesign.spacing.spacing_4,
|
|
1385
1512
|
},
|
|
1386
1513
|
medium: {
|
|
1387
1514
|
height: neoDesign.spacing.spacing_5,
|
|
1388
1515
|
},
|
|
1389
1516
|
};
|
|
1390
1517
|
return {
|
|
1391
|
-
// Apply pill-shaped border radius
|
|
1392
1518
|
borderRadius: neoDesign.borderRadius.full,
|
|
1393
1519
|
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
1394
|
-
|
|
1395
|
-
|
|
1520
|
+
overflow: 'hidden',
|
|
1521
|
+
// Style all grouped children
|
|
1522
|
+
[`& .${MuiToggleButtonGroup.toggleButtonGroupClasses.grouped}`]: {
|
|
1523
|
+
flex: 1,
|
|
1396
1524
|
minWidth: 'auto',
|
|
1397
1525
|
height: sizeStyles[size].height,
|
|
1398
1526
|
padding: `${theme.spacing(1)} ${theme.spacing(2)}`,
|
|
1399
1527
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
1400
|
-
fontWeight: neoDesign.typography.fontWeight.
|
|
1528
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
1401
1529
|
lineHeight: 1,
|
|
1402
1530
|
textTransform: 'none',
|
|
1403
1531
|
border: 'none',
|
|
@@ -1408,40 +1536,35 @@ const StyledButtonGroup = styles.styled(MuiButtonGroup)(({ theme, size = 'medium
|
|
|
1408
1536
|
transition: theme.transitions.create(['background-color', 'color', 'border-color'], {
|
|
1409
1537
|
duration: theme.transitions.duration.short,
|
|
1410
1538
|
}),
|
|
1411
|
-
//
|
|
1412
|
-
|
|
1539
|
+
// Selected state — double selector for specificity over MUI ToggleButton defaults
|
|
1540
|
+
[`&.${MuiToggleButton.toggleButtonClasses.selected}.${MuiToggleButton.toggleButtonClasses.selected}`]: {
|
|
1413
1541
|
backgroundColor: neoDesign.semanticColors.surfaces.white,
|
|
1414
1542
|
color: neoDesign.semanticColors.buttons.tertiary.default,
|
|
1415
1543
|
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
1416
1544
|
},
|
|
1417
1545
|
// Hover state
|
|
1418
|
-
|
|
1546
|
+
[`&:hover, &.${MuiToggleButton.toggleButtonClasses.selected}:hover`]: {
|
|
1419
1547
|
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground,
|
|
1420
|
-
borderRight: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
1421
1548
|
},
|
|
1422
1549
|
// Focus visible for keyboard navigation
|
|
1423
|
-
|
|
1424
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
1550
|
+
'&.Mui-focusVisible': {
|
|
1551
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1425
1552
|
outlineOffset: -2,
|
|
1426
1553
|
zIndex: 1,
|
|
1427
1554
|
},
|
|
1428
1555
|
// First button: rounded left edge
|
|
1429
|
-
[`&.${
|
|
1556
|
+
[`&.${MuiToggleButtonGroup.toggleButtonGroupClasses.firstButton}`]: {
|
|
1430
1557
|
borderTopLeftRadius: neoDesign.borderRadius.full,
|
|
1431
1558
|
borderBottomLeftRadius: neoDesign.borderRadius.full,
|
|
1432
1559
|
},
|
|
1433
1560
|
// Last button: rounded right edge, no right border
|
|
1434
|
-
[`&.${
|
|
1561
|
+
[`&.${MuiToggleButtonGroup.toggleButtonGroupClasses.lastButton}`]: {
|
|
1435
1562
|
borderTopRightRadius: neoDesign.borderRadius.full,
|
|
1436
1563
|
borderBottomRightRadius: neoDesign.borderRadius.full,
|
|
1437
1564
|
borderRight: 'none',
|
|
1438
1565
|
},
|
|
1439
|
-
// Middle buttons: no border radius
|
|
1440
|
-
[`&.${MuiButtonGroup.buttonGroupClasses.middleButton}`]: {
|
|
1441
|
-
borderRadius: 0,
|
|
1442
|
-
},
|
|
1443
1566
|
// Disabled state
|
|
1444
|
-
[`&.${
|
|
1567
|
+
[`&.${MuiToggleButton.toggleButtonClasses.disabled}`]: {
|
|
1445
1568
|
backgroundColor: neoDesign.semanticColors.buttons.secondary.disabledBackground,
|
|
1446
1569
|
color: neoDesign.semanticColors.typography.button.disabled,
|
|
1447
1570
|
cursor: 'not-allowed',
|
|
@@ -1451,29 +1574,27 @@ const StyledButtonGroup = styles.styled(MuiButtonGroup)(({ theme, size = 'medium
|
|
|
1451
1574
|
};
|
|
1452
1575
|
});
|
|
1453
1576
|
/**
|
|
1454
|
-
*
|
|
1577
|
+
* NeoButtonTabGroup - Button tab group container
|
|
1455
1578
|
*
|
|
1456
1579
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4106-11129
|
|
1457
1580
|
*
|
|
1458
1581
|
* Figma Props Mapping:
|
|
1459
1582
|
* - Size (Sm|Md) → size prop (small|medium)
|
|
1460
|
-
* - Active button state → Controlled
|
|
1583
|
+
* - Active button state → Controlled via value/onChange props
|
|
1461
1584
|
*
|
|
1462
1585
|
* Usage:
|
|
1463
1586
|
* ```tsx
|
|
1464
|
-
* <
|
|
1465
|
-
* <
|
|
1466
|
-
* <
|
|
1467
|
-
* <
|
|
1468
|
-
* </
|
|
1587
|
+
* <NeoButtonTabGroup value={selected} onChange={(_, val) => setSelected(val)} size="medium">
|
|
1588
|
+
* <NeoButtonTab value="tab1">Tab 1</NeoButtonTab>
|
|
1589
|
+
* <NeoButtonTab value="tab2">Tab 2</NeoButtonTab>
|
|
1590
|
+
* <NeoButtonTab value="tab3">Tab 3</NeoButtonTab>
|
|
1591
|
+
* </NeoButtonTabGroup>
|
|
1469
1592
|
* ```
|
|
1470
|
-
*
|
|
1471
|
-
* Note: To show active state, add 'active' class to the selected button
|
|
1472
1593
|
*/
|
|
1473
|
-
const
|
|
1474
|
-
return jsxRuntime.jsx(
|
|
1594
|
+
const NeoButtonTabGroup = ({ size = 'medium', exclusive = true, ...props }) => {
|
|
1595
|
+
return jsxRuntime.jsx(StyledButtonTabGroup, { role: "tablist", size: size, exclusive: exclusive, ...props });
|
|
1475
1596
|
};
|
|
1476
|
-
|
|
1597
|
+
NeoButtonTabGroup.displayName = 'NeoButtonTabGroup';
|
|
1477
1598
|
|
|
1478
1599
|
// Border radius per size (from Figma)
|
|
1479
1600
|
const borderRadiusConfig = {
|
|
@@ -1547,7 +1668,7 @@ const StyledCheckbox = styles.styled(Checkbox, {
|
|
|
1547
1668
|
height: config.size,
|
|
1548
1669
|
padding: 0,
|
|
1549
1670
|
marginTop: size === 'xs' ? 3 : 2,
|
|
1550
|
-
color: neoDesign.semanticColors.border.
|
|
1671
|
+
color: neoDesign.semanticColors.border.primary,
|
|
1551
1672
|
flexShrink: 0,
|
|
1552
1673
|
// Root element
|
|
1553
1674
|
[`&.${Checkbox.checkboxClasses.root}`]: {
|
|
@@ -1570,20 +1691,20 @@ const StyledCheckbox = styles.styled(Checkbox, {
|
|
|
1570
1691
|
},
|
|
1571
1692
|
// Disabled state
|
|
1572
1693
|
[`&.${Checkbox.checkboxClasses.disabled}`]: {
|
|
1573
|
-
color: neoDesign.semanticColors.border.
|
|
1694
|
+
color: neoDesign.semanticColors.border.primary,
|
|
1574
1695
|
cursor: 'not-allowed',
|
|
1575
1696
|
// When checked and disabled
|
|
1576
1697
|
[`&.${Checkbox.checkboxClasses.checked}`]: {
|
|
1577
|
-
color: neoDesign.semanticColors.border.
|
|
1698
|
+
color: neoDesign.semanticColors.border.primary,
|
|
1578
1699
|
},
|
|
1579
1700
|
// When indeterminate and disabled
|
|
1580
1701
|
[`&.${Checkbox.checkboxClasses.indeterminate}`]: {
|
|
1581
|
-
color: neoDesign.semanticColors.border.
|
|
1702
|
+
color: neoDesign.semanticColors.border.primary,
|
|
1582
1703
|
},
|
|
1583
1704
|
},
|
|
1584
1705
|
// Focus visible for keyboard navigation
|
|
1585
1706
|
'&.Mui-focusVisible': {
|
|
1586
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
1707
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1587
1708
|
outlineOffset: 2,
|
|
1588
1709
|
borderRadius: config.borderRadius,
|
|
1589
1710
|
},
|
|
@@ -1713,7 +1834,7 @@ const StyledButtonBase = styles.styled(ButtonBase, {
|
|
|
1713
1834
|
cursor: 'text',
|
|
1714
1835
|
// Focus visible for keyboard navigation
|
|
1715
1836
|
[`&.${ButtonBase.buttonBaseClasses.focusVisible}`]: {
|
|
1716
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
1837
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
1717
1838
|
outlineOffset: 2,
|
|
1718
1839
|
},
|
|
1719
1840
|
};
|
|
@@ -1754,9 +1875,9 @@ const IconWrapper$2 = styles.styled('span')(({ theme, isMultiline }) => ({
|
|
|
1754
1875
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
|
|
1755
1876
|
*
|
|
1756
1877
|
* Figma Props Mapping:
|
|
1757
|
-
* -
|
|
1758
|
-
* -
|
|
1759
|
-
* -
|
|
1878
|
+
* - Theme (Dark|Light) → variant (outlined|filled)
|
|
1879
|
+
* - Content (Single|Multi|Inline) → size (small|large|inline)
|
|
1880
|
+
* - Show icon (boolean) → endIcon (ReactNode, unmappable)
|
|
1760
1881
|
* - Text content → children prop
|
|
1761
1882
|
*/
|
|
1762
1883
|
const NeoCodeSnippet = ({ variant = 'outlined', size = 'small', endIcon, children, ...props }) => {
|
|
@@ -1784,7 +1905,7 @@ const StyledSearchField = styles.styled(TextField)(({ theme }) => ({
|
|
|
1784
1905
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.default),
|
|
1785
1906
|
borderRadius: neoDesign.borderRadius.input,
|
|
1786
1907
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
1787
|
-
border: `1px solid ${neoDesign.semanticColors.border.
|
|
1908
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
1788
1909
|
paddingTop: neoDesign.spacing.spacing_1,
|
|
1789
1910
|
paddingBottom: neoDesign.spacing.spacing_1,
|
|
1790
1911
|
paddingLeft: neoDesign.spacing.spacing_1_1_2,
|
|
@@ -2041,11 +2162,11 @@ const ChevronDownIcon = (props) => (jsxRuntime.jsx(ChevronDown, { ...props, size
|
|
|
2041
2162
|
const StyledSelect = styles.styled(MuiSelect)({
|
|
2042
2163
|
minHeight: neoDesign.spacing.spacing_5,
|
|
2043
2164
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
2044
|
-
border: `1px solid ${neoDesign.semanticColors.border.
|
|
2165
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
2045
2166
|
borderRadius: `${neoDesign.borderRadius.input}px`,
|
|
2046
2167
|
'&:hover': {
|
|
2047
2168
|
backgroundColor: neoDesign.semanticColors.input.hoverBackground,
|
|
2048
|
-
borderColor: neoDesign.semanticColors.border.
|
|
2169
|
+
borderColor: neoDesign.semanticColors.border.primary,
|
|
2049
2170
|
},
|
|
2050
2171
|
'&.Mui-focused': {
|
|
2051
2172
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
@@ -2161,7 +2282,7 @@ const StyledGridFilterPanel = styles.styled(xDataGrid.GridFilterPanel)({
|
|
|
2161
2282
|
position: 'relative',
|
|
2162
2283
|
minHeight: neoDesign.spacing.spacing_5,
|
|
2163
2284
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
2164
|
-
border: `1px solid ${neoDesign.semanticColors.border.
|
|
2285
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
2165
2286
|
borderRadius: `${neoDesign.borderRadius.input}px`,
|
|
2166
2287
|
fontSize: neoDesign.typography.fontSize.default,
|
|
2167
2288
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
@@ -2169,11 +2290,11 @@ const StyledGridFilterPanel = styles.styled(xDataGrid.GridFilterPanel)({
|
|
|
2169
2290
|
},
|
|
2170
2291
|
[`& .${xDataGrid.gridClasses.filterForm} .${InputBase.inputBaseClasses.root}:hover`]: {
|
|
2171
2292
|
backgroundColor: neoDesign.semanticColors.input.hoverBackground,
|
|
2172
|
-
borderColor: neoDesign.semanticColors.border.
|
|
2293
|
+
borderColor: neoDesign.semanticColors.border.primary,
|
|
2173
2294
|
},
|
|
2174
2295
|
[`& .${xDataGrid.gridClasses.filterForm} .${InputBase.inputBaseClasses.root}.${InputBase.inputBaseClasses.focused}`]: {
|
|
2175
2296
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
2176
|
-
borderColor: neoDesign.semanticColors.border.
|
|
2297
|
+
borderColor: neoDesign.semanticColors.border.primary,
|
|
2177
2298
|
},
|
|
2178
2299
|
[`& .${xDataGrid.gridClasses.filterForm} .${InputBase.inputBaseClasses.root}::before`]: {
|
|
2179
2300
|
display: 'none',
|
|
@@ -2597,11 +2718,11 @@ const outlinedColorStyles = {
|
|
|
2597
2718
|
},
|
|
2598
2719
|
};
|
|
2599
2720
|
const filledColorStyles = {
|
|
2600
|
-
default: neoDesign.semanticColors.status.neutral.
|
|
2601
|
-
error: neoDesign.semanticColors.status.error.
|
|
2602
|
-
warning: neoDesign.semanticColors.status.warning.
|
|
2603
|
-
success: neoDesign.semanticColors.status.success.
|
|
2604
|
-
info: neoDesign.semanticColors.status.info.
|
|
2721
|
+
default: neoDesign.semanticColors.status.neutral.default,
|
|
2722
|
+
error: neoDesign.semanticColors.status.error.default,
|
|
2723
|
+
warning: neoDesign.semanticColors.status.warning.default,
|
|
2724
|
+
success: neoDesign.semanticColors.status.success.default,
|
|
2725
|
+
info: neoDesign.semanticColors.status.info.default,
|
|
2605
2726
|
violet: neoDesign.colors.violet[500],
|
|
2606
2727
|
beta: neoDesign.colors.digitalBlue[300],
|
|
2607
2728
|
};
|
|
@@ -2631,9 +2752,9 @@ const StyledChip$1 = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2631
2752
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4120-34533
|
|
2632
2753
|
*
|
|
2633
2754
|
* Figma Props Mapping:
|
|
2634
|
-
* -
|
|
2635
|
-
* -
|
|
2636
|
-
* -
|
|
2755
|
+
* - Size (Small|Medium|Large) → size (small|medium|large)
|
|
2756
|
+
* - Type (Outline|Filled) → variant (outlined|filled)
|
|
2757
|
+
* - Intent (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2637
2758
|
* - Label text → label prop
|
|
2638
2759
|
*/
|
|
2639
2760
|
const NeoTag = ({ size = 'small', variant = 'outlined', ...props }) => {
|
|
@@ -3209,7 +3330,7 @@ const StyledIconButton = styles.styled(IconButton, {
|
|
|
3209
3330
|
},
|
|
3210
3331
|
// Focus visible for keyboard navigation
|
|
3211
3332
|
'&:focus-visible': {
|
|
3212
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
3333
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
3213
3334
|
outlineOffset: 2,
|
|
3214
3335
|
},
|
|
3215
3336
|
};
|
|
@@ -3549,7 +3670,7 @@ const sizeMap = {
|
|
|
3549
3670
|
};
|
|
3550
3671
|
const StyledBadge = styles.styled(Badge)(({ ownerState }) => {
|
|
3551
3672
|
const size = sizeMap[ownerState.size];
|
|
3552
|
-
const color = neoDesign.semanticColors.status[ownerState.color].
|
|
3673
|
+
const color = neoDesign.semanticColors.status[ownerState.color].default;
|
|
3553
3674
|
return {
|
|
3554
3675
|
[`& .${Badge.badgeClasses.badge}`]: {
|
|
3555
3676
|
width: size,
|
|
@@ -3577,7 +3698,7 @@ const StyledBadge = styles.styled(Badge)(({ ownerState }) => {
|
|
|
3577
3698
|
*/
|
|
3578
3699
|
const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...props }) => {
|
|
3579
3700
|
const dotSize = sizeMap[size];
|
|
3580
|
-
const mediumColor = neoDesign.semanticColors.status[color].
|
|
3701
|
+
const mediumColor = neoDesign.semanticColors.status[color].default;
|
|
3581
3702
|
const lightColor = neoDesign.semanticColors.status[color].light;
|
|
3582
3703
|
// For outline variant, use SVG for precise control
|
|
3583
3704
|
const renderDot = () => {
|
|
@@ -3943,6 +4064,56 @@ const NeoFooter = ({ variant = 'pagination', showShadow = false, loading = false
|
|
|
3943
4064
|
};
|
|
3944
4065
|
NeoFooter.displayName = 'NeoFooter';
|
|
3945
4066
|
|
|
4067
|
+
/**
|
|
4068
|
+
* Shared color palette for avatar components (GeneralAvatar, NavigationAvatar).
|
|
4069
|
+
* Maps color index (1-7) to background color token pairs.
|
|
4070
|
+
*/
|
|
4071
|
+
const avatarColorPalette = {
|
|
4072
|
+
1: { bg: neoDesign.colors.digitalBlue[100] },
|
|
4073
|
+
2: { bg: neoDesign.colors.digitalGreen[100] },
|
|
4074
|
+
3: { bg: neoDesign.colors.gold[100] },
|
|
4075
|
+
4: { bg: neoDesign.colors.red[100] },
|
|
4076
|
+
5: { bg: neoDesign.colors.violet[100] },
|
|
4077
|
+
6: { bg: neoDesign.colors.tealGreen[100] },
|
|
4078
|
+
7: { bg: neoDesign.colors.orange[100] },
|
|
4079
|
+
};
|
|
4080
|
+
|
|
4081
|
+
const sizeConfig$1 = {
|
|
4082
|
+
small: { width: neoDesign.spacing.spacing_4, height: neoDesign.spacing.spacing_4, fontSize: neoDesign.typography.fontSize.xs },
|
|
4083
|
+
medium: { width: neoDesign.spacing.spacing_5, height: neoDesign.spacing.spacing_5, fontSize: neoDesign.typography.fontSize.sm },
|
|
4084
|
+
};
|
|
4085
|
+
const StyledAvatar = styles.styled(Avatar, {
|
|
4086
|
+
shouldForwardProp: prop => prop !== 'avatarSize' && prop !== 'colorIndex',
|
|
4087
|
+
})(({ theme, avatarSize, colorIndex }) => {
|
|
4088
|
+
const size = sizeConfig$1[avatarSize];
|
|
4089
|
+
const palette = avatarColorPalette[colorIndex];
|
|
4090
|
+
return {
|
|
4091
|
+
boxSizing: 'border-box',
|
|
4092
|
+
width: size.width,
|
|
4093
|
+
height: size.height,
|
|
4094
|
+
fontSize: theme.typography.pxToRem(size.fontSize),
|
|
4095
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
4096
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
4097
|
+
lineHeight: 1,
|
|
4098
|
+
color: neoDesign.semanticColors.typography.body,
|
|
4099
|
+
backgroundColor: palette ? palette.bg : undefined,
|
|
4100
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
4101
|
+
'&:focus-visible': {
|
|
4102
|
+
...focusRingStyles,
|
|
4103
|
+
borderColor: neoDesign.semanticColors.border.focus,
|
|
4104
|
+
},
|
|
4105
|
+
};
|
|
4106
|
+
});
|
|
4107
|
+
/**
|
|
4108
|
+
* NeoGeneralAvatar - Avatar with image or colored initials display
|
|
4109
|
+
*
|
|
4110
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=9600-185
|
|
4111
|
+
*/
|
|
4112
|
+
const NeoGeneralAvatar = ({ size = 'medium', colorIndex = 0, children, ...props }) => {
|
|
4113
|
+
return (jsxRuntime.jsx(StyledAvatar, { avatarSize: size, colorIndex: colorIndex, ...props, children: children }));
|
|
4114
|
+
};
|
|
4115
|
+
NeoGeneralAvatar.displayName = 'NeoGeneralAvatar';
|
|
4116
|
+
|
|
3946
4117
|
const customProps$1 = ['iconSize'];
|
|
3947
4118
|
const StyledIconWrapper = styles.styled('div', {
|
|
3948
4119
|
shouldForwardProp: prop => !customProps$1.includes(prop),
|
|
@@ -4124,9 +4295,9 @@ const StyledInputBase = styles.styled(InputBase, {
|
|
|
4124
4295
|
},
|
|
4125
4296
|
medium: {
|
|
4126
4297
|
height: neoDesign.spacing.spacing_5_1_2,
|
|
4127
|
-
padding: `${neoDesign.spacing.
|
|
4298
|
+
padding: `${neoDesign.spacing.spacing_1_1_4}px ${neoDesign.spacing.spacing_2}px ${neoDesign.spacing.spacing_1_1_4}px ${startAdornment ? 0 : neoDesign.spacing.spacing_2}px`,
|
|
4128
4299
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.default),
|
|
4129
|
-
borderRadius: neoDesign.
|
|
4300
|
+
borderRadius: neoDesign.spacing.spacing_8,
|
|
4130
4301
|
},
|
|
4131
4302
|
};
|
|
4132
4303
|
const sizeStyles = sizeConfig[size];
|
|
@@ -4135,7 +4306,7 @@ const StyledInputBase = styles.styled(InputBase, {
|
|
|
4135
4306
|
fontSize: sizeStyles.fontSize,
|
|
4136
4307
|
borderRadius: sizeStyles.borderRadius,
|
|
4137
4308
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
4138
|
-
border: `1px solid ${destructive ? neoDesign.semanticColors.status.error.
|
|
4309
|
+
border: `1px solid ${destructive ? neoDesign.semanticColors.status.error.default : neoDesign.semanticColors.border.primary}`,
|
|
4139
4310
|
transition: theme.transitions.create(['border-color', 'background-color'], {
|
|
4140
4311
|
duration: theme.transitions.duration.short,
|
|
4141
4312
|
}),
|
|
@@ -4149,19 +4320,21 @@ const StyledInputBase = styles.styled(InputBase, {
|
|
|
4149
4320
|
// Hover state
|
|
4150
4321
|
'&:hover': {
|
|
4151
4322
|
backgroundColor: neoDesign.semanticColors.input.hoverBackground,
|
|
4152
|
-
borderColor: destructive
|
|
4323
|
+
borderColor: destructive
|
|
4324
|
+
? neoDesign.semanticColors.status.error.default
|
|
4325
|
+
: neoDesign.semanticColors.border.primary,
|
|
4153
4326
|
},
|
|
4154
4327
|
// Focused state
|
|
4155
4328
|
[`&.${InputBase.inputBaseClasses.focused}`]: {
|
|
4156
4329
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
4157
4330
|
borderColor: destructive
|
|
4158
|
-
? neoDesign.semanticColors.status.error.
|
|
4331
|
+
? neoDesign.semanticColors.status.error.default
|
|
4159
4332
|
: neoDesign.semanticColors.buttons.primary.default,
|
|
4160
4333
|
},
|
|
4161
4334
|
// Disabled state
|
|
4162
4335
|
[`&.${InputBase.inputBaseClasses.disabled}`]: {
|
|
4163
4336
|
backgroundColor: neoDesign.semanticColors.input.disabledBackground,
|
|
4164
|
-
borderColor: neoDesign.semanticColors.border.
|
|
4337
|
+
borderColor: neoDesign.semanticColors.border.primary,
|
|
4165
4338
|
color: neoDesign.semanticColors.icons.disabled,
|
|
4166
4339
|
[`& .${InputBase.inputBaseClasses.input}`]: {
|
|
4167
4340
|
WebkitTextFillColor: neoDesign.semanticColors.icons.disabled,
|
|
@@ -4169,11 +4342,11 @@ const StyledInputBase = styles.styled(InputBase, {
|
|
|
4169
4342
|
},
|
|
4170
4343
|
// Error state
|
|
4171
4344
|
[`&.${InputBase.inputBaseClasses.error}`]: {
|
|
4172
|
-
borderColor: neoDesign.semanticColors.status.error.
|
|
4345
|
+
borderColor: neoDesign.semanticColors.status.error.default,
|
|
4173
4346
|
},
|
|
4174
4347
|
// Adornment styling
|
|
4175
4348
|
[`& .${InputAdornment.inputAdornmentClasses.root}`]: {
|
|
4176
|
-
color: destructive ? neoDesign.semanticColors.status.error.
|
|
4349
|
+
color: destructive ? neoDesign.semanticColors.status.error.default : neoDesign.semanticColors.icons.placeholder,
|
|
4177
4350
|
},
|
|
4178
4351
|
};
|
|
4179
4352
|
});
|
|
@@ -4187,7 +4360,7 @@ const StyledFormHelperText = styles.styled(FormHelperText, {
|
|
|
4187
4360
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
4188
4361
|
color: neoDesign.semanticColors.typography.input.helper,
|
|
4189
4362
|
[`&.${FormHelperText.formHelperTextClasses.error}`]: {
|
|
4190
|
-
color: neoDesign.semanticColors.status.error.
|
|
4363
|
+
color: neoDesign.semanticColors.status.error.default,
|
|
4191
4364
|
},
|
|
4192
4365
|
[`&.${FormHelperText.formHelperTextClasses.disabled}`]: {
|
|
4193
4366
|
color: neoDesign.semanticColors.icons.disabled,
|
|
@@ -4487,7 +4660,7 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4487
4660
|
transition: theme.transitions.create(['border', 'background-color']),
|
|
4488
4661
|
// Active (selected) state
|
|
4489
4662
|
[`&.${ListItemButton.listItemButtonClasses.selected}`]: {
|
|
4490
|
-
border: `2px solid ${neoDesign.semanticColors.
|
|
4663
|
+
border: `2px solid ${neoDesign.semanticColors.buttons.primary.default}`,
|
|
4491
4664
|
backgroundColor: theme.palette.common.white,
|
|
4492
4665
|
'&:hover': {
|
|
4493
4666
|
backgroundColor: theme.palette.common.white,
|
|
@@ -4521,9 +4694,9 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4521
4694
|
},
|
|
4522
4695
|
// Focus state
|
|
4523
4696
|
[`&.${ListItemButton.listItemButtonClasses.focusVisible}`]: {
|
|
4524
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
4697
|
+
outline: `2px solid ${neoDesign.semanticColors.buttons.primary.default}`,
|
|
4525
4698
|
outlineOffset: 2,
|
|
4526
|
-
border: `2px solid ${neoDesign.semanticColors.
|
|
4699
|
+
border: `2px solid ${neoDesign.semanticColors.buttons.primary.default}`,
|
|
4527
4700
|
backgroundColor: theme.palette.common.white,
|
|
4528
4701
|
[`& .${ListItemIcon.listItemIconClasses.root}`]: {
|
|
4529
4702
|
color: neoDesign.semanticColors.icons.default,
|
|
@@ -4582,7 +4755,7 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4582
4755
|
* - showIcon → Conditional rendering of ListItemIcon child
|
|
4583
4756
|
*
|
|
4584
4757
|
* Design Tokens Used:
|
|
4585
|
-
* - semanticColors.
|
|
4758
|
+
* - semanticColors.buttons.primary.default (#2f42ff) - Active border
|
|
4586
4759
|
* - semanticColors.border.primary (#d1d5db) - Default/disabled border
|
|
4587
4760
|
* - semanticColors.icons.default (#1f2937) - Active icon color
|
|
4588
4761
|
* - semanticColors.icons.disabled (#d1d5db) - Deselected/disabled icon color
|
|
@@ -4615,17 +4788,17 @@ const StyledCard = styles.styled(MuiCard, {
|
|
|
4615
4788
|
flexDirection: 'column',
|
|
4616
4789
|
gap: theme.spacing(2), // 16px
|
|
4617
4790
|
backgroundColor: neoDesign.semanticColors.surfaces.card,
|
|
4618
|
-
border: `1px solid ${selected ? neoDesign.semanticColors.
|
|
4791
|
+
border: `1px solid ${selected ? neoDesign.semanticColors.buttons.primary.default : neoDesign.semanticColors.border.primary}`,
|
|
4619
4792
|
borderRadius: neoDesign.borderRadius.xS,
|
|
4620
4793
|
boxShadow: selected ? activeShadow$1 : 'none',
|
|
4621
4794
|
transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),
|
|
4622
4795
|
cursor: 'pointer',
|
|
4623
4796
|
'&:hover': {
|
|
4624
|
-
borderColor: neoDesign.semanticColors.
|
|
4797
|
+
borderColor: neoDesign.semanticColors.buttons.primary.default,
|
|
4625
4798
|
boxShadow: activeShadow$1,
|
|
4626
4799
|
},
|
|
4627
4800
|
'&:focus-visible': {
|
|
4628
|
-
borderColor: neoDesign.semanticColors.
|
|
4801
|
+
borderColor: neoDesign.semanticColors.buttons.primary.default,
|
|
4629
4802
|
...focusRingStyles,
|
|
4630
4803
|
},
|
|
4631
4804
|
...(disabled && {
|
|
@@ -4729,8 +4902,8 @@ const Description$1 = styles.styled('p')(({ theme }) => ({
|
|
|
4729
4902
|
* Design Tokens Used:
|
|
4730
4903
|
* - semanticColors.surfaces.card (#FFFFFF) - Default card background
|
|
4731
4904
|
* - semanticColors.status.info.light (#f2f3ff) - Active/focused card background
|
|
4732
|
-
* - semanticColors.border.
|
|
4733
|
-
* - semanticColors.
|
|
4905
|
+
* - semanticColors.border.primary (#d1d5db) - Default border
|
|
4906
|
+
* - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border
|
|
4734
4907
|
* - shadows.focusWhite1 - Inner white focus ring (2px spread)
|
|
4735
4908
|
* - shadows.focusBlue2 - Outer blue focus ring (4px spread)
|
|
4736
4909
|
* - colors.grey[800] (#1F2937) - Text color
|
|
@@ -4753,10 +4926,12 @@ const StyledLargeCard = styles.styled(MuiCard, {
|
|
|
4753
4926
|
const isActive = cardState === 'active';
|
|
4754
4927
|
const isDisabled = cardState === 'disabled';
|
|
4755
4928
|
const isFocused = cardState === 'focused';
|
|
4756
|
-
const activeBorderColor = isLight
|
|
4929
|
+
const activeBorderColor = isLight
|
|
4930
|
+
? neoDesign.semanticColors.buttons.primary.default
|
|
4931
|
+
: neoDesign.colors.digitalGreen[300];
|
|
4757
4932
|
const defaultBorderColor = isLight
|
|
4758
|
-
? neoDesign.semanticColors.border.
|
|
4759
|
-
: `${neoDesign.semanticColors.border.
|
|
4933
|
+
? neoDesign.semanticColors.border.primary
|
|
4934
|
+
: `${neoDesign.semanticColors.border.primary}80`;
|
|
4760
4935
|
return {
|
|
4761
4936
|
width: 340,
|
|
4762
4937
|
height: 162,
|
|
@@ -4772,7 +4947,7 @@ const StyledLargeCard = styles.styled(MuiCard, {
|
|
|
4772
4947
|
overflow: 'hidden',
|
|
4773
4948
|
...(isFocused && focusRingStyles),
|
|
4774
4949
|
'&:focus-visible': {
|
|
4775
|
-
borderColor: isLight ? neoDesign.semanticColors.
|
|
4950
|
+
borderColor: isLight ? neoDesign.semanticColors.buttons.primary.default : neoDesign.colors.digitalGreen[300],
|
|
4776
4951
|
...focusRingStyles,
|
|
4777
4952
|
},
|
|
4778
4953
|
...(isDisabled && {
|
|
@@ -4852,8 +5027,8 @@ const ButtonsRow = styles.styled('div')({
|
|
|
4852
5027
|
* Design Tokens Used:
|
|
4853
5028
|
* - semanticColors.surfaces.card (#ffffff) - Light theme background
|
|
4854
5029
|
* - colors.grey[800] (#1f2937) - Dark theme background
|
|
4855
|
-
* - semanticColors.border.
|
|
4856
|
-
* - semanticColors.
|
|
5030
|
+
* - semanticColors.border.primary (#d1d5db) - Default border (50% opacity on dark)
|
|
5031
|
+
* - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border (light theme)
|
|
4857
5032
|
* - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
|
|
4858
5033
|
* - borderRadius.xS (4px) - Corner radius
|
|
4859
5034
|
* - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
|
|
@@ -4925,7 +5100,7 @@ NeoMenu.displayName = 'NeoMenu';
|
|
|
4925
5100
|
const StyledDialog = styles.styled(Dialog)({
|
|
4926
5101
|
[`& .${Dialog.dialogClasses.paper}`]: {
|
|
4927
5102
|
borderRadius: neoDesign.borderRadius.card,
|
|
4928
|
-
border: `1px solid ${neoDesign.semanticColors.border.
|
|
5103
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
4929
5104
|
boxShadow: 'none',
|
|
4930
5105
|
},
|
|
4931
5106
|
[`& .${Dialog.dialogClasses.container}`]: {
|
|
@@ -5108,6 +5283,34 @@ const NeoModalFooter = ({ leadingContent, children }) => {
|
|
|
5108
5283
|
};
|
|
5109
5284
|
NeoModalFooter.displayName = 'NeoModalFooter';
|
|
5110
5285
|
|
|
5286
|
+
const NavigationAvatarContainer = styles.styled('div')({
|
|
5287
|
+
display: 'flex',
|
|
5288
|
+
boxSizing: 'border-box',
|
|
5289
|
+
width: neoDesign.spacing.spacing_5_1_2,
|
|
5290
|
+
height: neoDesign.spacing.spacing_5_1_2,
|
|
5291
|
+
padding: neoDesign.spacing.spacing_3_4,
|
|
5292
|
+
justifyContent: 'center',
|
|
5293
|
+
alignItems: 'center',
|
|
5294
|
+
borderRadius: '50%',
|
|
5295
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
5296
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.defaultBackground,
|
|
5297
|
+
'&:focus-within': {
|
|
5298
|
+
borderColor: neoDesign.semanticColors.border.focus,
|
|
5299
|
+
},
|
|
5300
|
+
});
|
|
5301
|
+
/**
|
|
5302
|
+
* NeoNavigationAvatar - Compact avatar for navigation contexts
|
|
5303
|
+
*
|
|
5304
|
+
* Wraps NeoGeneralAvatar (size="small") in a 44px container with 6px padding,
|
|
5305
|
+
* providing a larger interactive area for navigation UI.
|
|
5306
|
+
*
|
|
5307
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=11325-102
|
|
5308
|
+
*/
|
|
5309
|
+
const NeoNavigationAvatar = ({ colorIndex = 0, children, ...props }) => {
|
|
5310
|
+
return (jsxRuntime.jsx(NavigationAvatarContainer, { children: jsxRuntime.jsx(NeoGeneralAvatar, { size: "small", colorIndex: colorIndex, ...props, children: children }) }));
|
|
5311
|
+
};
|
|
5312
|
+
NeoNavigationAvatar.displayName = 'NeoNavigationAvatar';
|
|
5313
|
+
|
|
5111
5314
|
const customProps = ['selected'];
|
|
5112
5315
|
const StyledRoot = styles.styled(ButtonBase, {
|
|
5113
5316
|
shouldForwardProp: prop => !customProps.includes(prop),
|
|
@@ -5447,7 +5650,7 @@ const StyledLinearProgress$1 = styles.styled(LinearProgress, {
|
|
|
5447
5650
|
// Cancelled variant uses warning color
|
|
5448
5651
|
'&[data-variant="cancelled"]': {
|
|
5449
5652
|
[`& .${LinearProgress.linearProgressClasses.bar}`]: {
|
|
5450
|
-
backgroundColor: neoDesign.semanticColors.status.warning.
|
|
5653
|
+
backgroundColor: neoDesign.semanticColors.status.warning.default,
|
|
5451
5654
|
},
|
|
5452
5655
|
},
|
|
5453
5656
|
}));
|
|
@@ -5512,7 +5715,7 @@ const StyledTextField = styles.styled(TextField)(({ theme }) => ({
|
|
|
5512
5715
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.default),
|
|
5513
5716
|
borderRadius: neoDesign.borderRadius.input,
|
|
5514
5717
|
backgroundColor: neoDesign.semanticColors.input.background,
|
|
5515
|
-
border: `1px solid ${neoDesign.semanticColors.border.
|
|
5718
|
+
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
5516
5719
|
paddingTop: neoDesign.spacing.spacing_1,
|
|
5517
5720
|
paddingBottom: neoDesign.spacing.spacing_1,
|
|
5518
5721
|
paddingLeft: neoDesign.spacing.spacing_1_1_2,
|
|
@@ -5607,7 +5810,7 @@ NeoQuickFilter.displayName = 'NeoQuickFilter';
|
|
|
5607
5810
|
const UncheckedIcon = ({ size }) => {
|
|
5608
5811
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5609
5812
|
const radius = size === 'small' ? 8 : 10;
|
|
5610
|
-
return (jsxRuntime.jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsxRuntime.jsx("title", { children: "Unchecked radio button" }), jsxRuntime.jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: neoDesign.semanticColors.border.
|
|
5813
|
+
return (jsxRuntime.jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsxRuntime.jsx("title", { children: "Unchecked radio button" }), jsxRuntime.jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: neoDesign.semanticColors.border.primary, strokeWidth: "1", fill: "transparent" })] }));
|
|
5611
5814
|
};
|
|
5612
5815
|
const CheckedIcon = ({ size }) => {
|
|
5613
5816
|
const dimensions = size === 'small' ? 16 : 20;
|
|
@@ -5854,7 +6057,7 @@ NeoSkeleton.displayName = 'NeoSkeleton';
|
|
|
5854
6057
|
|
|
5855
6058
|
/**
|
|
5856
6059
|
* Styled Alert component with custom severity and variant styling
|
|
5857
|
-
* Uses Custom Variants Pattern to add 'neutral' and '
|
|
6060
|
+
* Uses Custom Variants Pattern to add 'neutral', 'info', and 'warning' severities
|
|
5858
6061
|
*/
|
|
5859
6062
|
const StyledAlert$1 = styles.styled(Alert, {
|
|
5860
6063
|
shouldForwardProp: prop => prop !== 'severity' && prop !== 'variant',
|
|
@@ -5863,41 +6066,49 @@ const StyledAlert$1 = styles.styled(Alert, {
|
|
|
5863
6066
|
const colorMap = {
|
|
5864
6067
|
success: {
|
|
5865
6068
|
light: neoDesign.semanticColors.status.success.light,
|
|
5866
|
-
medium: neoDesign.semanticColors.status.success.
|
|
6069
|
+
medium: neoDesign.semanticColors.status.success.default,
|
|
5867
6070
|
},
|
|
5868
6071
|
error: {
|
|
5869
6072
|
light: neoDesign.semanticColors.status.error.light,
|
|
5870
|
-
medium: neoDesign.semanticColors.status.error.
|
|
6073
|
+
medium: neoDesign.semanticColors.status.error.default,
|
|
5871
6074
|
},
|
|
5872
6075
|
neutral: {
|
|
5873
6076
|
light: neoDesign.semanticColors.status.neutral.light,
|
|
5874
|
-
medium: neoDesign.semanticColors.status.neutral.
|
|
6077
|
+
medium: neoDesign.semanticColors.status.neutral.default,
|
|
5875
6078
|
},
|
|
5876
6079
|
info: {
|
|
5877
6080
|
light: neoDesign.semanticColors.status.info.light,
|
|
5878
|
-
medium: neoDesign.semanticColors.status.info.
|
|
6081
|
+
medium: neoDesign.semanticColors.status.info.default,
|
|
6082
|
+
},
|
|
6083
|
+
warning: {
|
|
6084
|
+
light: neoDesign.semanticColors.status.warning.light,
|
|
6085
|
+
medium: neoDesign.semanticColors.status.warning.default,
|
|
5879
6086
|
},
|
|
5880
6087
|
};
|
|
5881
6088
|
const severityColors = colorMap[severity];
|
|
5882
|
-
|
|
6089
|
+
const isWarningFilled = severity === 'warning' && variant === 'filled';
|
|
6090
|
+
// Variant-specific styles
|
|
5883
6091
|
const variantStyles = (() => {
|
|
5884
6092
|
if (variant === 'filled') {
|
|
5885
|
-
//
|
|
6093
|
+
// Warning filled uses dark text for contrast on yellow bg
|
|
6094
|
+
const textColor = isWarningFilled
|
|
6095
|
+
? neoDesign.semanticColors.typography.warning
|
|
6096
|
+
: neoDesign.semanticColors.typography.tooltip;
|
|
5886
6097
|
return {
|
|
5887
6098
|
backgroundColor: severityColors.medium,
|
|
5888
6099
|
border: 'none',
|
|
5889
|
-
color:
|
|
6100
|
+
color: textColor,
|
|
5890
6101
|
padding: theme.spacing(0.75, 3),
|
|
5891
6102
|
boxShadow: `0px 1px 3px ${neoDesign.semanticColors.surfaces.shadowNeutral}1a`, // 1a = 10% opacity
|
|
5892
6103
|
[`& .${Alert.alertClasses.icon}`]: {
|
|
5893
|
-
color:
|
|
6104
|
+
color: textColor,
|
|
5894
6105
|
},
|
|
5895
6106
|
[`& .${Alert.alertClasses.message}`]: {
|
|
5896
|
-
color:
|
|
6107
|
+
color: textColor,
|
|
5897
6108
|
},
|
|
5898
6109
|
};
|
|
5899
6110
|
}
|
|
5900
|
-
//
|
|
6111
|
+
// Outlined: light background with border
|
|
5901
6112
|
return {
|
|
5902
6113
|
backgroundColor: severityColors.light,
|
|
5903
6114
|
border: `1px solid ${severityColors.medium}`,
|
|
@@ -5926,7 +6137,9 @@ const StyledAlert$1 = styles.styled(Alert, {
|
|
|
5926
6137
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
5927
6138
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
5928
6139
|
color: variant === 'filled'
|
|
5929
|
-
?
|
|
6140
|
+
? isWarningFilled
|
|
6141
|
+
? neoDesign.semanticColors.typography.warning
|
|
6142
|
+
: neoDesign.semanticColors.typography.tooltip
|
|
5930
6143
|
: neoDesign.semanticColors.typography.bodySecondary,
|
|
5931
6144
|
lineHeight: 1.4,
|
|
5932
6145
|
marginTop: theme.spacing(0.25),
|
|
@@ -5936,20 +6149,21 @@ const StyledAlert$1 = styles.styled(Alert, {
|
|
|
5936
6149
|
/**
|
|
5937
6150
|
* NeoStatusBanner - Status banner component for displaying system status messages
|
|
5938
6151
|
*
|
|
5939
|
-
* Displays status information with different severity levels (success, error, info, neutral)
|
|
5940
|
-
* visual modes (outlined for light backgrounds, filled for emphasis).
|
|
6152
|
+
* Displays status information with different severity levels (success, error, info, neutral, warning)
|
|
6153
|
+
* and visual modes (outlined for light backgrounds, filled for emphasis).
|
|
5941
6154
|
*
|
|
5942
6155
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427
|
|
5943
6156
|
*
|
|
5944
6157
|
* Figma Props Mapping:
|
|
5945
|
-
* -
|
|
5946
|
-
* -
|
|
6158
|
+
* - Intent (Success|Error|Info|Offline|Warning) → severity ('success'|'error'|'info'|'neutral'|'warning')
|
|
6159
|
+
* - Type (Outlined|Filled) → variant ('outlined'|'filled')
|
|
5947
6160
|
*
|
|
5948
6161
|
* Design Tokens Used:
|
|
5949
|
-
* - status.success.light, status.success.
|
|
5950
|
-
* - status.error.light, status.error.
|
|
5951
|
-
* - status.neutral.light, status.neutral.
|
|
5952
|
-
* - status.info.light, status.info.
|
|
6162
|
+
* - status.success.light, status.success.default
|
|
6163
|
+
* - status.error.light, status.error.default
|
|
6164
|
+
* - status.neutral.light, status.neutral.default
|
|
6165
|
+
* - status.info.light, status.info.default
|
|
6166
|
+
* - status.warning.light, status.warning.default
|
|
5953
6167
|
* - typography.tooltip, typography.bodySecondary
|
|
5954
6168
|
* - grey[800]
|
|
5955
6169
|
* - fontSize.default, fontSize.sm
|
|
@@ -5964,6 +6178,7 @@ const NeoStatusBanner = ({ severity = 'success', variant = 'outlined', icon, chi
|
|
|
5964
6178
|
error: jsxRuntime.jsx(CircleAlert, { size: 24 }),
|
|
5965
6179
|
neutral: jsxRuntime.jsx(WifiOff, { size: 24 }),
|
|
5966
6180
|
info: jsxRuntime.jsx(Info, { size: 24 }),
|
|
6181
|
+
warning: jsxRuntime.jsx(TriangleAlert, { size: 24 }),
|
|
5967
6182
|
};
|
|
5968
6183
|
const defaultIcon = iconMap[severity];
|
|
5969
6184
|
// Type assertion needed: severity and variant are custom props filtered by shouldForwardProp
|
|
@@ -5986,7 +6201,7 @@ NeoStatusBanner.displayName = 'NeoStatusBanner';
|
|
|
5986
6201
|
const NeoTabs = styles.styled(MuiTabs)(() => ({
|
|
5987
6202
|
minHeight: neoDesign.spacing.spacing_5,
|
|
5988
6203
|
[`& .${MuiTabs.tabsClasses.indicator}`]: {
|
|
5989
|
-
backgroundColor: neoDesign.semanticColors.
|
|
6204
|
+
backgroundColor: neoDesign.semanticColors.buttons.primary.default,
|
|
5990
6205
|
height: 2,
|
|
5991
6206
|
},
|
|
5992
6207
|
[`& .${MuiTabs.tabsClasses.flexContainer}`]: {
|
|
@@ -6008,7 +6223,7 @@ const StyledTab = styles.styled(MuiTab)(({ theme }) => ({
|
|
|
6008
6223
|
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
6009
6224
|
},
|
|
6010
6225
|
[`&.${ButtonBase.buttonBaseClasses.focusVisible}`]: {
|
|
6011
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
6226
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
6012
6227
|
outlineOffset: -2,
|
|
6013
6228
|
},
|
|
6014
6229
|
[`&.${MuiTab.tabClasses.disabled}`]: {
|
|
@@ -6028,11 +6243,9 @@ const TabLabelContainer = styles.styled('span')(({ theme }) => ({
|
|
|
6028
6243
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3368-26152
|
|
6029
6244
|
*
|
|
6030
6245
|
* Figma Props Mapping:
|
|
6031
|
-
* -
|
|
6032
|
-
* - State
|
|
6033
|
-
* -
|
|
6034
|
-
* - State=Focus → CSS :focus-visible
|
|
6035
|
-
* - Tag count → count prop (renders NeoTag)
|
|
6246
|
+
* - Selected (True|False) → Controlled by parent NeoTabs value
|
|
6247
|
+
* - State (Default|Hover|Focus|Disabled) → CSS states + disabled prop
|
|
6248
|
+
* - Show tag (boolean) → count prop (renders NeoTag)
|
|
6036
6249
|
* - Text label → label prop
|
|
6037
6250
|
*/
|
|
6038
6251
|
const NeoTab = ({ label, count, ...props }) => {
|
|
@@ -6043,8 +6256,8 @@ NeoTab.displayName = 'NeoTab';
|
|
|
6043
6256
|
|
|
6044
6257
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
6045
6258
|
const StyledAlert = styles.styled(Alert, {
|
|
6046
|
-
shouldForwardProp: prop => prop !== 'variant' && prop !== 'showProgress',
|
|
6047
|
-
})(({ theme, variant = 'default' }) => {
|
|
6259
|
+
shouldForwardProp: prop => prop !== 'variant' && prop !== 'toastType' && prop !== 'showProgress',
|
|
6260
|
+
})(({ theme, variant = 'default', toastType = 'outlined' }) => {
|
|
6048
6261
|
// Base styles
|
|
6049
6262
|
const baseStyles = {
|
|
6050
6263
|
padding: neoDesign.spacing.spacing_2,
|
|
@@ -6068,37 +6281,73 @@ const StyledAlert = styles.styled(Alert, {
|
|
|
6068
6281
|
marginRight: 0,
|
|
6069
6282
|
},
|
|
6070
6283
|
};
|
|
6071
|
-
//
|
|
6072
|
-
const
|
|
6284
|
+
// Outlined intent styles (light bg + colored border)
|
|
6285
|
+
const outlinedStyles = {
|
|
6073
6286
|
default: {
|
|
6074
6287
|
backgroundColor: neoDesign.semanticColors.surfaces.snackbarDarkMode,
|
|
6075
6288
|
color: neoDesign.colors.grey['800'],
|
|
6076
6289
|
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
6077
6290
|
},
|
|
6078
|
-
dark: {
|
|
6079
|
-
backgroundColor: neoDesign.semanticColors.surfaces.snackbarLightMode,
|
|
6080
|
-
color: neoDesign.semanticColors.surfaces.white,
|
|
6081
|
-
border: `1px solid ${neoDesign.semanticColors.surfaces.snackbarLightMode}`,
|
|
6082
|
-
},
|
|
6083
|
-
brand: {
|
|
6084
|
-
backgroundColor: neoDesign.semanticColors.surfaces.snackbarBrand,
|
|
6085
|
-
color: neoDesign.semanticColors.surfaces.white,
|
|
6086
|
-
border: `1px solid ${neoDesign.semanticColors.surfaces.snackbarBrand}`,
|
|
6087
|
-
},
|
|
6088
6291
|
error: {
|
|
6089
6292
|
backgroundColor: neoDesign.semanticColors.status.error.light,
|
|
6090
6293
|
color: neoDesign.semanticColors.status.error.dark,
|
|
6091
|
-
border: `1px solid ${neoDesign.semanticColors.status.error.
|
|
6294
|
+
border: `1px solid ${neoDesign.semanticColors.status.error.default}`,
|
|
6092
6295
|
},
|
|
6093
6296
|
success: {
|
|
6094
6297
|
backgroundColor: neoDesign.semanticColors.status.success.light,
|
|
6095
6298
|
color: neoDesign.semanticColors.status.success.dark,
|
|
6096
|
-
border: `1px solid ${neoDesign.semanticColors.status.success.
|
|
6299
|
+
border: `1px solid ${neoDesign.semanticColors.status.success.default}`,
|
|
6097
6300
|
},
|
|
6098
6301
|
info: {
|
|
6099
6302
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
6100
6303
|
color: neoDesign.semanticColors.status.info.dark,
|
|
6101
|
-
border: `1px solid ${neoDesign.semanticColors.status.info.
|
|
6304
|
+
border: `1px solid ${neoDesign.semanticColors.status.info.default}`,
|
|
6305
|
+
},
|
|
6306
|
+
warning: {
|
|
6307
|
+
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
6308
|
+
color: neoDesign.semanticColors.status.warning.dark,
|
|
6309
|
+
border: `1px solid ${neoDesign.semanticColors.status.warning.default}`,
|
|
6310
|
+
},
|
|
6311
|
+
};
|
|
6312
|
+
// Filled intent styles (solid bg)
|
|
6313
|
+
const filledStyles = {
|
|
6314
|
+
default: {
|
|
6315
|
+
backgroundColor: neoDesign.semanticColors.surfaces.snackbarLightMode,
|
|
6316
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6317
|
+
border: `1px solid ${neoDesign.semanticColors.surfaces.snackbarLightMode}`,
|
|
6318
|
+
},
|
|
6319
|
+
error: {
|
|
6320
|
+
backgroundColor: neoDesign.semanticColors.status.error.dark,
|
|
6321
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6322
|
+
border: `1px solid ${neoDesign.semanticColors.status.error.dark}`,
|
|
6323
|
+
},
|
|
6324
|
+
success: {
|
|
6325
|
+
backgroundColor: neoDesign.semanticColors.status.success.dark,
|
|
6326
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6327
|
+
border: `1px solid ${neoDesign.semanticColors.status.success.dark}`,
|
|
6328
|
+
},
|
|
6329
|
+
info: {
|
|
6330
|
+
backgroundColor: neoDesign.semanticColors.status.info.dark,
|
|
6331
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6332
|
+
border: `1px solid ${neoDesign.semanticColors.status.info.dark}`,
|
|
6333
|
+
},
|
|
6334
|
+
warning: {
|
|
6335
|
+
backgroundColor: neoDesign.semanticColors.status.warning.default,
|
|
6336
|
+
color: neoDesign.semanticColors.typography.warning,
|
|
6337
|
+
border: `1px solid ${neoDesign.semanticColors.status.warning.default}`,
|
|
6338
|
+
},
|
|
6339
|
+
};
|
|
6340
|
+
// Legacy variants (ignore toastType)
|
|
6341
|
+
const legacyStyles = {
|
|
6342
|
+
dark: {
|
|
6343
|
+
backgroundColor: neoDesign.semanticColors.surfaces.snackbarLightMode,
|
|
6344
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6345
|
+
border: `1px solid ${neoDesign.semanticColors.surfaces.snackbarLightMode}`,
|
|
6346
|
+
},
|
|
6347
|
+
brand: {
|
|
6348
|
+
backgroundColor: neoDesign.semanticColors.surfaces.snackbarBrand,
|
|
6349
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
6350
|
+
border: `1px solid ${neoDesign.semanticColors.surfaces.snackbarBrand}`,
|
|
6102
6351
|
},
|
|
6103
6352
|
download: {
|
|
6104
6353
|
backgroundColor: neoDesign.semanticColors.surfaces.snackbarDarkMode,
|
|
@@ -6106,45 +6355,83 @@ const StyledAlert = styles.styled(Alert, {
|
|
|
6106
6355
|
border: `1px solid ${neoDesign.semanticColors.border.primary}`,
|
|
6107
6356
|
},
|
|
6108
6357
|
};
|
|
6358
|
+
const getVariantStyles = () => {
|
|
6359
|
+
if (legacyStyles[variant])
|
|
6360
|
+
return legacyStyles[variant];
|
|
6361
|
+
const styleMap = toastType === 'filled' ? filledStyles : outlinedStyles;
|
|
6362
|
+
return styleMap[variant] ?? outlinedStyles.default;
|
|
6363
|
+
};
|
|
6109
6364
|
return {
|
|
6110
6365
|
...baseStyles,
|
|
6111
|
-
...
|
|
6366
|
+
...getVariantStyles(),
|
|
6112
6367
|
};
|
|
6113
6368
|
});
|
|
6114
|
-
const ToastTitle = styles.styled('p')(({ theme, variant = 'default' }) => {
|
|
6115
|
-
const
|
|
6369
|
+
const ToastTitle = styles.styled('p')(({ theme, variant = 'default', toastType = 'outlined' }) => {
|
|
6370
|
+
const outlinedColors = {
|
|
6116
6371
|
default: neoDesign.colors.grey['700'],
|
|
6117
|
-
dark: neoDesign.semanticColors.surfaces.white,
|
|
6118
|
-
brand: neoDesign.semanticColors.surfaces.white,
|
|
6119
6372
|
error: neoDesign.semanticColors.status.error.dark,
|
|
6120
6373
|
success: neoDesign.semanticColors.status.success.dark,
|
|
6121
6374
|
info: neoDesign.semanticColors.status.info.dark,
|
|
6375
|
+
warning: neoDesign.semanticColors.status.warning.dark,
|
|
6376
|
+
};
|
|
6377
|
+
const filledColors = {
|
|
6378
|
+
default: neoDesign.semanticColors.surfaces.white,
|
|
6379
|
+
error: neoDesign.semanticColors.surfaces.white,
|
|
6380
|
+
success: neoDesign.semanticColors.surfaces.white,
|
|
6381
|
+
info: neoDesign.semanticColors.surfaces.white,
|
|
6382
|
+
warning: neoDesign.semanticColors.typography.warning,
|
|
6383
|
+
};
|
|
6384
|
+
const legacyColors = {
|
|
6385
|
+
dark: neoDesign.semanticColors.surfaces.white,
|
|
6386
|
+
brand: neoDesign.semanticColors.surfaces.white,
|
|
6122
6387
|
download: neoDesign.colors.grey['700'],
|
|
6123
6388
|
};
|
|
6389
|
+
const getColor = () => {
|
|
6390
|
+
if (legacyColors[variant])
|
|
6391
|
+
return legacyColors[variant];
|
|
6392
|
+
const colorMap = toastType === 'filled' ? filledColors : outlinedColors;
|
|
6393
|
+
return colorMap[variant] ?? outlinedColors.default;
|
|
6394
|
+
};
|
|
6124
6395
|
return {
|
|
6125
6396
|
margin: 0,
|
|
6126
6397
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
6127
6398
|
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
6128
6399
|
lineHeight: 1.4,
|
|
6129
|
-
color:
|
|
6400
|
+
color: getColor(),
|
|
6130
6401
|
};
|
|
6131
6402
|
});
|
|
6132
|
-
const ToastMessage = styles.styled('p')(({ theme, variant = 'default' }) => {
|
|
6133
|
-
const
|
|
6403
|
+
const ToastMessage = styles.styled('p')(({ theme, variant = 'default', toastType = 'outlined' }) => {
|
|
6404
|
+
const outlinedColors = {
|
|
6134
6405
|
default: neoDesign.semanticColors.typography.bodySecondary,
|
|
6135
|
-
dark: neoDesign.colors.grey['200'],
|
|
6136
|
-
brand: neoDesign.colors.grey['200'],
|
|
6137
6406
|
error: neoDesign.semanticColors.status.error.dark,
|
|
6138
6407
|
success: neoDesign.semanticColors.status.success.dark,
|
|
6139
6408
|
info: neoDesign.semanticColors.status.info.dark,
|
|
6409
|
+
warning: neoDesign.semanticColors.status.warning.dark,
|
|
6410
|
+
};
|
|
6411
|
+
const filledColors = {
|
|
6412
|
+
default: neoDesign.colors.grey['200'],
|
|
6413
|
+
error: neoDesign.semanticColors.surfaces.white,
|
|
6414
|
+
success: neoDesign.semanticColors.surfaces.white,
|
|
6415
|
+
info: neoDesign.semanticColors.surfaces.white,
|
|
6416
|
+
warning: neoDesign.semanticColors.typography.warning,
|
|
6417
|
+
};
|
|
6418
|
+
const legacyColors = {
|
|
6419
|
+
dark: neoDesign.colors.grey['200'],
|
|
6420
|
+
brand: neoDesign.colors.grey['200'],
|
|
6140
6421
|
download: neoDesign.colors.grey['800'],
|
|
6141
6422
|
};
|
|
6423
|
+
const getColor = () => {
|
|
6424
|
+
if (legacyColors[variant])
|
|
6425
|
+
return legacyColors[variant];
|
|
6426
|
+
const colorMap = toastType === 'filled' ? filledColors : outlinedColors;
|
|
6427
|
+
return colorMap[variant] ?? outlinedColors.default;
|
|
6428
|
+
};
|
|
6142
6429
|
return {
|
|
6143
6430
|
margin: 0,
|
|
6144
6431
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
6145
6432
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
6146
6433
|
lineHeight: 1.4,
|
|
6147
|
-
color:
|
|
6434
|
+
color: getColor(),
|
|
6148
6435
|
};
|
|
6149
6436
|
});
|
|
6150
6437
|
const ToastActions = styles.styled(Stack)({
|
|
@@ -6153,29 +6440,39 @@ const ToastActions = styles.styled(Stack)({
|
|
|
6153
6440
|
justifyContent: 'flex-start',
|
|
6154
6441
|
});
|
|
6155
6442
|
const ToastButton = styles.styled(Button, {
|
|
6156
|
-
shouldForwardProp: prop => prop !== 'toastVariant' && prop !== 'primary',
|
|
6157
|
-
})(({ toastVariant = 'default', primary }) => {
|
|
6443
|
+
shouldForwardProp: prop => prop !== 'toastVariant' && prop !== 'toastType' && prop !== 'primary',
|
|
6444
|
+
})(({ toastVariant = 'default', toastType = 'outlined', primary }) => {
|
|
6445
|
+
const isLegacy = toastVariant === 'dark' || toastVariant === 'brand' || toastVariant === 'download';
|
|
6446
|
+
const isFilled = !isLegacy && toastType === 'filled';
|
|
6158
6447
|
const getColor = () => {
|
|
6159
6448
|
if (primary) {
|
|
6160
6449
|
if (toastVariant === 'dark' || toastVariant === 'brand') {
|
|
6161
6450
|
return neoDesign.colors.digitalBlue['200'];
|
|
6162
6451
|
}
|
|
6452
|
+
if (isFilled) {
|
|
6453
|
+
return toastVariant === 'warning'
|
|
6454
|
+
? neoDesign.semanticColors.typography.link.primary
|
|
6455
|
+
: neoDesign.semanticColors.surfaces.white;
|
|
6456
|
+
}
|
|
6163
6457
|
return neoDesign.semanticColors.typography.link.primary;
|
|
6164
6458
|
}
|
|
6165
6459
|
// Non-primary button colors
|
|
6166
6460
|
if (toastVariant === 'dark' || toastVariant === 'brand') {
|
|
6167
6461
|
return neoDesign.semanticColors.surfaces.white;
|
|
6168
6462
|
}
|
|
6169
|
-
if (
|
|
6170
|
-
return
|
|
6463
|
+
if (isFilled) {
|
|
6464
|
+
return toastVariant === 'warning'
|
|
6465
|
+
? neoDesign.semanticColors.typography.warning
|
|
6466
|
+
: neoDesign.semanticColors.surfaces.white;
|
|
6171
6467
|
}
|
|
6172
|
-
if (toastVariant === '
|
|
6468
|
+
if (toastVariant === 'error')
|
|
6469
|
+
return neoDesign.semanticColors.status.error.dark;
|
|
6470
|
+
if (toastVariant === 'success')
|
|
6173
6471
|
return neoDesign.semanticColors.status.success.dark;
|
|
6174
|
-
|
|
6175
|
-
if (toastVariant === 'info') {
|
|
6472
|
+
if (toastVariant === 'info')
|
|
6176
6473
|
return neoDesign.semanticColors.status.info.dark;
|
|
6177
|
-
|
|
6178
|
-
|
|
6474
|
+
if (toastVariant === 'warning')
|
|
6475
|
+
return neoDesign.semanticColors.status.warning.dark;
|
|
6179
6476
|
return neoDesign.semanticColors.icons.placeholder;
|
|
6180
6477
|
};
|
|
6181
6478
|
return {
|
|
@@ -6239,27 +6536,27 @@ const DownloadIconButton = styles.styled(IconButton)({
|
|
|
6239
6536
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-37223
|
|
6240
6537
|
*
|
|
6241
6538
|
* Figma Props Mapping:
|
|
6242
|
-
* -
|
|
6243
|
-
* -
|
|
6244
|
-
* -
|
|
6245
|
-
* -
|
|
6246
|
-
* -
|
|
6247
|
-
* -
|
|
6248
|
-
*/
|
|
6249
|
-
const NeoToast = ({ variant = 'default', title, message, showClose = true, actions, progress, fileName, onClose, ...props }) => {
|
|
6539
|
+
* - Intent (Neutral|Error|Success|Info|Warning) → variant (default|error|success|info|warning)
|
|
6540
|
+
* - Type (Outlined|Filled) → type ('outlined'|'filled')
|
|
6541
|
+
* - Show header → title (string)
|
|
6542
|
+
* - Show supporting text → message (string)
|
|
6543
|
+
* - Show close icon → showClose (boolean)
|
|
6544
|
+
* - Show actions → actions (ReactNode)
|
|
6545
|
+
*/
|
|
6546
|
+
const NeoToast = ({ variant = 'default', type = 'outlined', title, message, showClose = true, actions, progress, fileName, onClose, ...props }) => {
|
|
6250
6547
|
const isDownloadVariant = variant === 'download';
|
|
6251
|
-
return (jsxRuntime.jsx(StyledAlert, { ...props, variant: variant, showProgress: isDownloadVariant, action: showClose && !isDownloadVariant ? (jsxRuntime.jsx(IconButton, { size: "small", onClick: onClose, sx: { color: neoDesign.semanticColors.icons.placeholder }, children: jsxRuntime.jsx(X, { size: 16 }) })) : undefined, children: isDownloadVariant ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Stack, { direction: "row", sx: {
|
|
6548
|
+
return (jsxRuntime.jsx(StyledAlert, { ...props, variant: variant, toastType: type, showProgress: isDownloadVariant, action: showClose && !isDownloadVariant ? (jsxRuntime.jsx(IconButton, { size: "small", onClick: onClose, sx: { color: neoDesign.semanticColors.icons.placeholder }, children: jsxRuntime.jsx(X, { size: 16 }) })) : undefined, children: isDownloadVariant ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Stack, { direction: "row", sx: {
|
|
6252
6549
|
alignItems: 'flex-start',
|
|
6253
6550
|
justifyContent: 'space-between',
|
|
6254
6551
|
width: '100%',
|
|
6255
6552
|
gap: `${neoDesign.spacing.spacing_4}px`,
|
|
6256
|
-
}, children: [title && jsxRuntime.jsx(ToastTitle, { variant: variant, children: title }), showClose && (jsxRuntime.jsxs(DownloadActions, { direction: "row", children: [jsxRuntime.jsx(DownloadIconButton, { size: "small", children: jsxRuntime.jsx(Stack, { sx: { width: 16, height: 16 } }) }), jsxRuntime.jsx(DownloadIconButton, { size: "small", onClick: onClose, children: jsxRuntime.jsx(X, { size: 16 }) })] }))] }), jsxRuntime.jsxs(ProgressSection, { children: [jsxRuntime.jsxs(Stack, { direction: "row", sx: { alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }, children: [fileName && jsxRuntime.jsx(FileName, { children: fileName }), progress !== undefined && jsxRuntime.jsxs(ProgressLabel, { children: [progress, "%"] })] }), jsxRuntime.jsx(StyledLinearProgress, { variant: "determinate", value: progress ?? 0 })] })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Stack, { sx: { gap: `${neoDesign.spacing.spacing_1}px`, width: '100%' }, children: [title && jsxRuntime.jsx(ToastTitle, { variant: variant, children: title }), message && jsxRuntime.jsx(ToastMessage, { variant: variant, children: message })] }), actions && jsxRuntime.jsx(ToastActions, { direction: "row", children: actions })] })) }));
|
|
6553
|
+
}, children: [title && (jsxRuntime.jsx(ToastTitle, { variant: variant, toastType: type, children: title })), showClose && (jsxRuntime.jsxs(DownloadActions, { direction: "row", children: [jsxRuntime.jsx(DownloadIconButton, { size: "small", children: jsxRuntime.jsx(Stack, { sx: { width: 16, height: 16 } }) }), jsxRuntime.jsx(DownloadIconButton, { size: "small", onClick: onClose, children: jsxRuntime.jsx(X, { size: 16 }) })] }))] }), jsxRuntime.jsxs(ProgressSection, { children: [jsxRuntime.jsxs(Stack, { direction: "row", sx: { alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }, children: [fileName && jsxRuntime.jsx(FileName, { children: fileName }), progress !== undefined && jsxRuntime.jsxs(ProgressLabel, { children: [progress, "%"] })] }), jsxRuntime.jsx(StyledLinearProgress, { variant: "determinate", value: progress ?? 0 })] })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Stack, { sx: { gap: `${neoDesign.spacing.spacing_1}px`, width: '100%' }, children: [title && (jsxRuntime.jsx(ToastTitle, { variant: variant, toastType: type, children: title })), message && (jsxRuntime.jsx(ToastMessage, { variant: variant, toastType: type, children: message }))] }), actions && jsxRuntime.jsx(ToastActions, { direction: "row", children: actions })] })) }));
|
|
6257
6554
|
};
|
|
6258
6555
|
/**
|
|
6259
6556
|
* Helper component for creating toast action buttons with proper styling
|
|
6260
6557
|
*/
|
|
6261
|
-
const NeoToastButton = ({ primary, variant = 'default', children, ...props }) => {
|
|
6262
|
-
return (jsxRuntime.jsx(ToastButton, { variant: "text", toastVariant: variant, primary: primary, ...props, children: children }));
|
|
6558
|
+
const NeoToastButton = ({ primary, variant = 'default', type = 'outlined', children, ...props }) => {
|
|
6559
|
+
return (jsxRuntime.jsx(ToastButton, { variant: "text", toastVariant: variant, toastType: type, primary: primary, ...props, children: children }));
|
|
6263
6560
|
};
|
|
6264
6561
|
NeoToast.displayName = 'NeoToast';
|
|
6265
6562
|
NeoToastButton.displayName = 'NeoToastButton';
|
|
@@ -6326,7 +6623,7 @@ const StyledSwitch = styles.styled(Switch, {
|
|
|
6326
6623
|
// Focus visible for keyboard navigation
|
|
6327
6624
|
'&.Mui-focusVisible': {
|
|
6328
6625
|
[`& + .${Switch.switchClasses.track}`]: {
|
|
6329
|
-
outline: `2px solid ${neoDesign.semanticColors.
|
|
6626
|
+
outline: `2px solid ${neoDesign.semanticColors.border.focus}`,
|
|
6330
6627
|
outlineOffset: 2,
|
|
6331
6628
|
},
|
|
6332
6629
|
},
|
|
@@ -6546,10 +6843,10 @@ const StyledTooltip = styles.styled(Tooltip, {
|
|
|
6546
6843
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-26557&t=Bo58EpFmg6ILJtmv-11
|
|
6547
6844
|
*
|
|
6548
6845
|
* Figma Props Mapping:
|
|
6549
|
-
* -
|
|
6550
|
-
* -
|
|
6551
|
-
* -
|
|
6552
|
-
* -
|
|
6846
|
+
* - Theme (Light mode|Dark mode|Brand color) → variant ('light'|'dark'|'brand')
|
|
6847
|
+
* - Placement (None|Bottom left|...|Top center) → arrow (boolean) + placement
|
|
6848
|
+
* - Show description (boolean) → description (string|undefined)
|
|
6849
|
+
* - Text → title (string, literal content)
|
|
6553
6850
|
*
|
|
6554
6851
|
* Design Tokens Used:
|
|
6555
6852
|
* - Light: surfaces.tooltip (#4b5563), typography.tooltip (#ffffff)
|
|
@@ -6667,7 +6964,7 @@ const StyledTreeView = styles.styled(RichTreeViewPro.RichTreeViewPro)({
|
|
|
6667
6964
|
backgroundColor: neoDesign.semanticColors.surfaces.listHover,
|
|
6668
6965
|
},
|
|
6669
6966
|
[`& .${TreeItem.treeItemClasses.content}.Mui-focused`]: {
|
|
6670
|
-
boxShadow: `inset 0 0 0 2px ${neoDesign.semanticColors.
|
|
6967
|
+
boxShadow: `inset 0 0 0 2px ${neoDesign.semanticColors.border.focus}`,
|
|
6671
6968
|
backgroundColor: 'transparent',
|
|
6672
6969
|
},
|
|
6673
6970
|
[`& .${TreeItem.treeItemClasses.content}.Mui-selected`]: {
|
|
@@ -6678,7 +6975,7 @@ const StyledTreeView = styles.styled(RichTreeViewPro.RichTreeViewPro)({
|
|
|
6678
6975
|
},
|
|
6679
6976
|
[`& .${TreeItem.treeItemClasses.content}.Mui-selected.Mui-focused`]: {
|
|
6680
6977
|
backgroundColor: neoDesign.semanticColors.surfaces.listHover,
|
|
6681
|
-
boxShadow: `inset 0 0 0 2px ${neoDesign.semanticColors.
|
|
6978
|
+
boxShadow: `inset 0 0 0 2px ${neoDesign.semanticColors.border.focus}`,
|
|
6682
6979
|
},
|
|
6683
6980
|
[`& .${TreeItem.treeItemClasses.label}`]: {
|
|
6684
6981
|
fontSize: neoDesign.typography.fontSize.xs,
|
|
@@ -6703,12 +7000,12 @@ const StyledTreeView = styles.styled(RichTreeViewPro.RichTreeViewPro)({
|
|
|
6703
7000
|
|
|
6704
7001
|
// Figma-exact border radius for toggle buttons — no matching design token
|
|
6705
7002
|
const TOGGLE_BUTTON_BORDER_RADIUS = 14;
|
|
6706
|
-
const StyledToggleButtonGroup = styles.styled(
|
|
7003
|
+
const StyledToggleButtonGroup = styles.styled(MuiToggleButtonGroup)(({ theme }) => ({
|
|
6707
7004
|
backgroundColor: neoDesign.colors.grey[50],
|
|
6708
7005
|
padding: theme.spacing(0.625, 0.875),
|
|
6709
7006
|
borderRadius: neoDesign.borderRadius.full,
|
|
6710
7007
|
gap: 0,
|
|
6711
|
-
[`& .${
|
|
7008
|
+
[`& .${MuiToggleButtonGroup.toggleButtonGroupClasses.grouped}`]: {
|
|
6712
7009
|
border: 'none',
|
|
6713
7010
|
borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,
|
|
6714
7011
|
margin: 0,
|
|
@@ -6721,7 +7018,7 @@ const StyledToggleButtonGroup = styles.styled(ToggleButtonGroup)(({ theme }) =>
|
|
|
6721
7018
|
},
|
|
6722
7019
|
},
|
|
6723
7020
|
}));
|
|
6724
|
-
const StyledToggleButton = styles.styled(
|
|
7021
|
+
const StyledToggleButton = styles.styled(MuiToggleButton)(({ theme }) => ({
|
|
6725
7022
|
padding: theme.spacing(0.625),
|
|
6726
7023
|
minWidth: 'auto',
|
|
6727
7024
|
color: neoDesign.semanticColors.icons.default,
|
|
@@ -6733,7 +7030,7 @@ const StyledToggleButton = styles.styled(ToggleButton)(({ theme }) => ({
|
|
|
6733
7030
|
'&:hover': {
|
|
6734
7031
|
backgroundColor: 'transparent',
|
|
6735
7032
|
},
|
|
6736
|
-
[`&.${
|
|
7033
|
+
[`&.${MuiToggleButton.toggleButtonClasses.selected}`]: {
|
|
6737
7034
|
backgroundColor: neoDesign.semanticColors.buttons.navigation.pressedBackground,
|
|
6738
7035
|
color: neoDesign.semanticColors.icons.active,
|
|
6739
7036
|
'&:hover': {
|
|
@@ -6779,7 +7076,8 @@ exports.NeoBanner = NeoBanner;
|
|
|
6779
7076
|
exports.NeoBreadcrumbLink = NeoBreadcrumbLink;
|
|
6780
7077
|
exports.NeoBreadcrumbs = NeoBreadcrumbs;
|
|
6781
7078
|
exports.NeoButton = NeoButton;
|
|
6782
|
-
exports.
|
|
7079
|
+
exports.NeoButtonTab = NeoButtonTab;
|
|
7080
|
+
exports.NeoButtonTabGroup = NeoButtonTabGroup;
|
|
6783
7081
|
exports.NeoCheckbox = NeoCheckbox;
|
|
6784
7082
|
exports.NeoCodeSnippet = NeoCodeSnippet;
|
|
6785
7083
|
exports.NeoDataGrid = NeoDataGrid;
|
|
@@ -6798,6 +7096,7 @@ exports.NeoDivider = NeoDivider;
|
|
|
6798
7096
|
exports.NeoDot = NeoDot;
|
|
6799
7097
|
exports.NeoFilterChip = NeoFilterChip;
|
|
6800
7098
|
exports.NeoFooter = NeoFooter;
|
|
7099
|
+
exports.NeoGeneralAvatar = NeoGeneralAvatar;
|
|
6801
7100
|
exports.NeoIconButton = NeoIconButton;
|
|
6802
7101
|
exports.NeoIconWrapper = NeoIconWrapper;
|
|
6803
7102
|
exports.NeoInfiniteScrollGrid = NeoInfiniteScrollGrid;
|
|
@@ -6814,6 +7113,7 @@ exports.NeoModalContent = NeoModalContent;
|
|
|
6814
7113
|
exports.NeoModalFooter = NeoModalFooter;
|
|
6815
7114
|
exports.NeoModalHeader = NeoModalHeader;
|
|
6816
7115
|
exports.NeoMultiBadgesCell = NeoMultiBadgesCell;
|
|
7116
|
+
exports.NeoNavigationAvatar = NeoNavigationAvatar;
|
|
6817
7117
|
exports.NeoNavigationItem = NeoNavigationItem;
|
|
6818
7118
|
exports.NeoPageContent = NeoPageContent;
|
|
6819
7119
|
exports.NeoPaginatedGrid = NeoPaginatedGrid;
|