@moderneinc/neo-styled-components 2.5.0-next.45d7db → 2.5.0-next.80ce67
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/ActivityHeader/ActivityHeader.d.ts +1 -0
- package/dist/ButtonGroup/ButtonGroup.d.ts +0 -1
- package/dist/CodeSnippet/CodeSnippet.d.ts +3 -3
- package/dist/FilterChip/FilterChip.d.ts +42 -0
- package/dist/IconWrapper/IconWrapper.d.ts +23 -0
- package/dist/ListItemButton/ListItemButton.d.ts +5 -4
- package/dist/MenuItem/MenuItem.d.ts +4 -2
- package/dist/NavigationItem/NavigationItem.d.ts +36 -0
- package/dist/StatusBanner/StatusBanner.d.ts +4 -3
- package/dist/Tag/Tag.d.ts +4 -3
- package/dist/index.d.ts +65 -18
- package/dist/index.esm.js +377 -155
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +379 -154
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -149,7 +149,7 @@ const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }) => {
|
|
|
149
149
|
};
|
|
150
150
|
NeoAvatar.displayName = 'NeoAvatar';
|
|
151
151
|
|
|
152
|
-
const StyledChip$
|
|
152
|
+
const StyledChip$2 = styles.styled(Chip)(({ theme }) => ({
|
|
153
153
|
height: 24,
|
|
154
154
|
paddingTop: neoDesign.spacing.spacing_1_4,
|
|
155
155
|
paddingBottom: neoDesign.spacing.spacing_1_4,
|
|
@@ -236,7 +236,7 @@ const StyledChip$1 = styles.styled(Chip)(({ theme }) => ({
|
|
|
236
236
|
* - Label → label prop
|
|
237
237
|
*/
|
|
238
238
|
const NeoBadge = (props) => {
|
|
239
|
-
return jsxRuntime.jsx(StyledChip$
|
|
239
|
+
return jsxRuntime.jsx(StyledChip$2, { ...props });
|
|
240
240
|
};
|
|
241
241
|
NeoBadge.displayName = 'NeoBadge';
|
|
242
242
|
|
|
@@ -386,6 +386,7 @@ const ActivityDot = styles.styled('div')(({ color }) => ({
|
|
|
386
386
|
*
|
|
387
387
|
* **Figma Props Mapping:**
|
|
388
388
|
* - `Size` (Figma) → `size` (React): Height variant matching DataGrid sizes
|
|
389
|
+
* - `Type` (Figma) → `color` (React): Activity type (Commit Job → commitJob, Recipe Run → recipeRun, Visualization → visualization)
|
|
389
390
|
*
|
|
390
391
|
* **Design Tokens:**
|
|
391
392
|
* - `semanticColors.activity.commitJob` - Blue dot for commit job events (#2F42FF)
|
|
@@ -501,7 +502,7 @@ const NeoActivityIndicatorCell = ({ event = 'commit-job', secondaryEvent, scene
|
|
|
501
502
|
NeoActivityIndicatorCell.displayName = 'NeoActivityIndicatorCell';
|
|
502
503
|
|
|
503
504
|
/**
|
|
504
|
-
* @license lucide-react v0.
|
|
505
|
+
* @license lucide-react v0.575.0 - ISC
|
|
505
506
|
*
|
|
506
507
|
* This source code is licensed under the ISC license.
|
|
507
508
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -512,7 +513,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
512
513
|
}).join(" ").trim();
|
|
513
514
|
|
|
514
515
|
/**
|
|
515
|
-
* @license lucide-react v0.
|
|
516
|
+
* @license lucide-react v0.575.0 - ISC
|
|
516
517
|
*
|
|
517
518
|
* This source code is licensed under the ISC license.
|
|
518
519
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -521,7 +522,7 @@ const mergeClasses = (...classes) => classes.filter((className, index, array) =>
|
|
|
521
522
|
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
522
523
|
|
|
523
524
|
/**
|
|
524
|
-
* @license lucide-react v0.
|
|
525
|
+
* @license lucide-react v0.575.0 - ISC
|
|
525
526
|
*
|
|
526
527
|
* This source code is licensed under the ISC license.
|
|
527
528
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -533,7 +534,7 @@ const toCamelCase = (string) => string.replace(
|
|
|
533
534
|
);
|
|
534
535
|
|
|
535
536
|
/**
|
|
536
|
-
* @license lucide-react v0.
|
|
537
|
+
* @license lucide-react v0.575.0 - ISC
|
|
537
538
|
*
|
|
538
539
|
* This source code is licensed under the ISC license.
|
|
539
540
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -546,7 +547,7 @@ const toPascalCase = (string) => {
|
|
|
546
547
|
};
|
|
547
548
|
|
|
548
549
|
/**
|
|
549
|
-
* @license lucide-react v0.
|
|
550
|
+
* @license lucide-react v0.575.0 - ISC
|
|
550
551
|
*
|
|
551
552
|
* This source code is licensed under the ISC license.
|
|
552
553
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -565,7 +566,7 @@ var defaultAttributes = {
|
|
|
565
566
|
};
|
|
566
567
|
|
|
567
568
|
/**
|
|
568
|
-
* @license lucide-react v0.
|
|
569
|
+
* @license lucide-react v0.575.0 - ISC
|
|
569
570
|
*
|
|
570
571
|
* This source code is licensed under the ISC license.
|
|
571
572
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -581,7 +582,7 @@ const hasA11yProp = (props) => {
|
|
|
581
582
|
};
|
|
582
583
|
|
|
583
584
|
/**
|
|
584
|
-
* @license lucide-react v0.
|
|
585
|
+
* @license lucide-react v0.575.0 - ISC
|
|
585
586
|
*
|
|
586
587
|
* This source code is licensed under the ISC license.
|
|
587
588
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -619,7 +620,7 @@ const Icon = react.forwardRef(
|
|
|
619
620
|
);
|
|
620
621
|
|
|
621
622
|
/**
|
|
622
|
-
* @license lucide-react v0.
|
|
623
|
+
* @license lucide-react v0.575.0 - ISC
|
|
623
624
|
*
|
|
624
625
|
* This source code is licensed under the ISC license.
|
|
625
626
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -644,42 +645,42 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
644
645
|
};
|
|
645
646
|
|
|
646
647
|
/**
|
|
647
|
-
* @license lucide-react v0.
|
|
648
|
+
* @license lucide-react v0.575.0 - ISC
|
|
648
649
|
*
|
|
649
650
|
* This source code is licensed under the ISC license.
|
|
650
651
|
* See the LICENSE file in the root directory of this source tree.
|
|
651
652
|
*/
|
|
652
653
|
|
|
653
654
|
|
|
654
|
-
const __iconNode$
|
|
655
|
+
const __iconNode$i = [
|
|
655
656
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
656
657
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
657
658
|
];
|
|
658
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
659
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$i);
|
|
659
660
|
|
|
660
661
|
/**
|
|
661
|
-
* @license lucide-react v0.
|
|
662
|
+
* @license lucide-react v0.575.0 - ISC
|
|
662
663
|
*
|
|
663
664
|
* This source code is licensed under the ISC license.
|
|
664
665
|
* See the LICENSE file in the root directory of this source tree.
|
|
665
666
|
*/
|
|
666
667
|
|
|
667
668
|
|
|
668
|
-
const __iconNode$
|
|
669
|
+
const __iconNode$h = [
|
|
669
670
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
670
671
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
671
672
|
];
|
|
672
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
673
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$h);
|
|
673
674
|
|
|
674
675
|
/**
|
|
675
|
-
* @license lucide-react v0.
|
|
676
|
+
* @license lucide-react v0.575.0 - ISC
|
|
676
677
|
*
|
|
677
678
|
* This source code is licensed under the ISC license.
|
|
678
679
|
* See the LICENSE file in the root directory of this source tree.
|
|
679
680
|
*/
|
|
680
681
|
|
|
681
682
|
|
|
682
|
-
const __iconNode$
|
|
683
|
+
const __iconNode$g = [
|
|
683
684
|
["path", { d: "M8 2v4", key: "1cmpym" }],
|
|
684
685
|
["path", { d: "M16 2v4", key: "4m81vk" }],
|
|
685
686
|
["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
|
|
@@ -691,127 +692,142 @@ const __iconNode$f = [
|
|
|
691
692
|
["path", { d: "M12 18h.01", key: "mhygvu" }],
|
|
692
693
|
["path", { d: "M16 18h.01", key: "kzsmim" }]
|
|
693
694
|
];
|
|
694
|
-
const CalendarDays = createLucideIcon("calendar-days", __iconNode$
|
|
695
|
+
const CalendarDays = createLucideIcon("calendar-days", __iconNode$g);
|
|
695
696
|
|
|
696
697
|
/**
|
|
697
|
-
* @license lucide-react v0.
|
|
698
|
+
* @license lucide-react v0.575.0 - ISC
|
|
698
699
|
*
|
|
699
700
|
* This source code is licensed under the ISC license.
|
|
700
701
|
* See the LICENSE file in the root directory of this source tree.
|
|
701
702
|
*/
|
|
702
703
|
|
|
703
704
|
|
|
704
|
-
const __iconNode$
|
|
705
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
705
|
+
const __iconNode$f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
706
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
|
|
706
707
|
|
|
707
708
|
/**
|
|
708
|
-
* @license lucide-react v0.
|
|
709
|
+
* @license lucide-react v0.575.0 - ISC
|
|
709
710
|
*
|
|
710
711
|
* This source code is licensed under the ISC license.
|
|
711
712
|
* See the LICENSE file in the root directory of this source tree.
|
|
712
713
|
*/
|
|
713
714
|
|
|
714
715
|
|
|
715
|
-
const __iconNode$
|
|
716
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
716
|
+
const __iconNode$e = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
717
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$e);
|
|
717
718
|
|
|
718
719
|
/**
|
|
719
|
-
* @license lucide-react v0.
|
|
720
|
+
* @license lucide-react v0.575.0 - ISC
|
|
720
721
|
*
|
|
721
722
|
* This source code is licensed under the ISC license.
|
|
722
723
|
* See the LICENSE file in the root directory of this source tree.
|
|
723
724
|
*/
|
|
724
725
|
|
|
725
726
|
|
|
726
|
-
const __iconNode$
|
|
727
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
727
|
+
const __iconNode$d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
728
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
|
|
728
729
|
|
|
729
730
|
/**
|
|
730
|
-
* @license lucide-react v0.
|
|
731
|
+
* @license lucide-react v0.575.0 - ISC
|
|
731
732
|
*
|
|
732
733
|
* This source code is licensed under the ISC license.
|
|
733
734
|
* See the LICENSE file in the root directory of this source tree.
|
|
734
735
|
*/
|
|
735
736
|
|
|
736
737
|
|
|
737
|
-
const __iconNode$
|
|
738
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
738
|
+
const __iconNode$c = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
739
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$c);
|
|
739
740
|
|
|
740
741
|
/**
|
|
741
|
-
* @license lucide-react v0.
|
|
742
|
+
* @license lucide-react v0.575.0 - ISC
|
|
742
743
|
*
|
|
743
744
|
* This source code is licensed under the ISC license.
|
|
744
745
|
* See the LICENSE file in the root directory of this source tree.
|
|
745
746
|
*/
|
|
746
747
|
|
|
747
748
|
|
|
748
|
-
const __iconNode$
|
|
749
|
+
const __iconNode$b = [
|
|
749
750
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
750
751
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
751
752
|
];
|
|
752
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
753
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$b);
|
|
753
754
|
|
|
754
755
|
/**
|
|
755
|
-
* @license lucide-react v0.
|
|
756
|
+
* @license lucide-react v0.575.0 - ISC
|
|
756
757
|
*
|
|
757
758
|
* This source code is licensed under the ISC license.
|
|
758
759
|
* See the LICENSE file in the root directory of this source tree.
|
|
759
760
|
*/
|
|
760
761
|
|
|
761
762
|
|
|
762
|
-
const __iconNode$
|
|
763
|
+
const __iconNode$a = [
|
|
763
764
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
764
765
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
765
766
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
766
767
|
];
|
|
767
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
768
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$a);
|
|
768
769
|
|
|
769
770
|
/**
|
|
770
|
-
* @license lucide-react v0.
|
|
771
|
+
* @license lucide-react v0.575.0 - ISC
|
|
771
772
|
*
|
|
772
773
|
* This source code is licensed under the ISC license.
|
|
773
774
|
* See the LICENSE file in the root directory of this source tree.
|
|
774
775
|
*/
|
|
775
776
|
|
|
776
777
|
|
|
777
|
-
const __iconNode$
|
|
778
|
+
const __iconNode$9 = [
|
|
778
779
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
779
780
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
780
781
|
];
|
|
781
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
782
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$9);
|
|
782
783
|
|
|
783
784
|
/**
|
|
784
|
-
* @license lucide-react v0.
|
|
785
|
+
* @license lucide-react v0.575.0 - ISC
|
|
785
786
|
*
|
|
786
787
|
* This source code is licensed under the ISC license.
|
|
787
788
|
* See the LICENSE file in the root directory of this source tree.
|
|
788
789
|
*/
|
|
789
790
|
|
|
790
791
|
|
|
791
|
-
const __iconNode$
|
|
792
|
+
const __iconNode$8 = [
|
|
792
793
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
793
794
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
794
795
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
795
796
|
];
|
|
796
|
-
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$
|
|
797
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$8);
|
|
797
798
|
|
|
798
799
|
/**
|
|
799
|
-
* @license lucide-react v0.
|
|
800
|
+
* @license lucide-react v0.575.0 - ISC
|
|
800
801
|
*
|
|
801
802
|
* This source code is licensed under the ISC license.
|
|
802
803
|
* See the LICENSE file in the root directory of this source tree.
|
|
803
804
|
*/
|
|
804
805
|
|
|
805
806
|
|
|
806
|
-
const __iconNode$
|
|
807
|
+
const __iconNode$7 = [
|
|
807
808
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
808
809
|
["path", { d: "M9 3v18", key: "fh3hqa" }],
|
|
809
810
|
["path", { d: "M15 3v18", key: "14nvp0" }]
|
|
810
811
|
];
|
|
811
|
-
const Columns3 = createLucideIcon("columns-3", __iconNode$
|
|
812
|
+
const Columns3 = createLucideIcon("columns-3", __iconNode$7);
|
|
812
813
|
|
|
813
814
|
/**
|
|
814
|
-
* @license lucide-react v0.
|
|
815
|
+
* @license lucide-react v0.575.0 - ISC
|
|
816
|
+
*
|
|
817
|
+
* This source code is licensed under the ISC license.
|
|
818
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
819
|
+
*/
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
const __iconNode$6 = [
|
|
823
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
824
|
+
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
825
|
+
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
826
|
+
];
|
|
827
|
+
const Info = createLucideIcon("info", __iconNode$6);
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* @license lucide-react v0.575.0 - ISC
|
|
815
831
|
*
|
|
816
832
|
* This source code is licensed under the ISC license.
|
|
817
833
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -826,7 +842,7 @@ const __iconNode$5 = [
|
|
|
826
842
|
const ListFilter = createLucideIcon("list-filter", __iconNode$5);
|
|
827
843
|
|
|
828
844
|
/**
|
|
829
|
-
* @license lucide-react v0.
|
|
845
|
+
* @license lucide-react v0.575.0 - ISC
|
|
830
846
|
*
|
|
831
847
|
* This source code is licensed under the ISC license.
|
|
832
848
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -840,7 +856,7 @@ const __iconNode$4 = [
|
|
|
840
856
|
const Plus = createLucideIcon("plus", __iconNode$4);
|
|
841
857
|
|
|
842
858
|
/**
|
|
843
|
-
* @license lucide-react v0.
|
|
859
|
+
* @license lucide-react v0.575.0 - ISC
|
|
844
860
|
*
|
|
845
861
|
* This source code is licensed under the ISC license.
|
|
846
862
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -854,7 +870,7 @@ const __iconNode$3 = [
|
|
|
854
870
|
const Search = createLucideIcon("search", __iconNode$3);
|
|
855
871
|
|
|
856
872
|
/**
|
|
857
|
-
* @license lucide-react v0.
|
|
873
|
+
* @license lucide-react v0.575.0 - ISC
|
|
858
874
|
*
|
|
859
875
|
* This source code is licensed under the ISC license.
|
|
860
876
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -871,7 +887,7 @@ const __iconNode$2 = [
|
|
|
871
887
|
const Trash2 = createLucideIcon("trash-2", __iconNode$2);
|
|
872
888
|
|
|
873
889
|
/**
|
|
874
|
-
* @license lucide-react v0.
|
|
890
|
+
* @license lucide-react v0.575.0 - ISC
|
|
875
891
|
*
|
|
876
892
|
* This source code is licensed under the ISC license.
|
|
877
893
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -890,7 +906,7 @@ const __iconNode$1 = [
|
|
|
890
906
|
const WifiOff = createLucideIcon("wifi-off", __iconNode$1);
|
|
891
907
|
|
|
892
908
|
/**
|
|
893
|
-
* @license lucide-react v0.
|
|
909
|
+
* @license lucide-react v0.575.0 - ISC
|
|
894
910
|
*
|
|
895
911
|
* This source code is licensed under the ISC license.
|
|
896
912
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -1379,7 +1395,6 @@ const StyledButtonGroup = styles.styled(MuiButtonGroup)(({ theme, size = 'medium
|
|
|
1379
1395
|
*
|
|
1380
1396
|
* Figma Props Mapping:
|
|
1381
1397
|
* - Size (Sm|Md) → size prop (small|medium)
|
|
1382
|
-
* - Icon=False → Icon support not included in this implementation
|
|
1383
1398
|
* - Active button state → Controlled externally via button props or classes
|
|
1384
1399
|
*
|
|
1385
1400
|
* Usage:
|
|
@@ -1424,7 +1439,7 @@ const LabelContainer$4 = styles.styled('div')(({ size = 'medium' }) => ({
|
|
|
1424
1439
|
flexDirection: 'column',
|
|
1425
1440
|
gap: size === 'medium' ? 2 : 0,
|
|
1426
1441
|
}));
|
|
1427
|
-
const Label$
|
|
1442
|
+
const Label$4 = styles.styled('span')(({ theme, size = 'medium' }) => ({
|
|
1428
1443
|
fontSize: theme.typography.pxToRem(size === 'xs'
|
|
1429
1444
|
? neoDesign.typography.fontSize.xs
|
|
1430
1445
|
: size === 'small'
|
|
@@ -1573,7 +1588,7 @@ const NeoCheckbox = ({ size = 'medium', label, helperText, disabled, icon, check
|
|
|
1573
1588
|
return (jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }));
|
|
1574
1589
|
}
|
|
1575
1590
|
// With label, wrap in container for proper layout
|
|
1576
|
-
return (jsxRuntime.jsxs(CheckboxContainer, { disabled: disabled, children: [jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxRuntime.jsxs(LabelContainer$4, { size: size, children: [label && jsxRuntime.jsx(Label$
|
|
1591
|
+
return (jsxRuntime.jsxs(CheckboxContainer, { disabled: disabled, children: [jsxRuntime.jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }), jsxRuntime.jsxs(LabelContainer$4, { size: size, children: [label && jsxRuntime.jsx(Label$4, { size: size, children: label }), helperText && jsxRuntime.jsx(HelperText$2, { size: size, children: helperText })] })] }));
|
|
1577
1592
|
};
|
|
1578
1593
|
NeoCheckbox.displayName = 'NeoCheckbox';
|
|
1579
1594
|
|
|
@@ -1600,6 +1615,11 @@ const StyledButtonBase = styles.styled(ButtonBase, {
|
|
|
1600
1615
|
paddingMultiline: theme.spacing(3), // 24px all sides
|
|
1601
1616
|
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm), // 14px
|
|
1602
1617
|
},
|
|
1618
|
+
inline: {
|
|
1619
|
+
height: 'auto',
|
|
1620
|
+
paddingSingleLine: `0 ${theme.spacing(0.5)}`, // 4px horizontal
|
|
1621
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
1622
|
+
},
|
|
1603
1623
|
};
|
|
1604
1624
|
const sizeStyles = sizeConfig[size];
|
|
1605
1625
|
// Base styles shared by all variants
|
|
@@ -1614,12 +1634,12 @@ const StyledButtonBase = styles.styled(ButtonBase, {
|
|
|
1614
1634
|
width: isMultiline ? '100%' : 'fit-content',
|
|
1615
1635
|
maxWidth: isMultiline ? '100%' : 'none',
|
|
1616
1636
|
overflowX: isMultiline ? 'auto' : 'visible',
|
|
1617
|
-
padding: isMultiline ? sizeStyles.paddingMultiline : sizeStyles.paddingSingleLine,
|
|
1637
|
+
padding: isMultiline && 'paddingMultiline' in sizeStyles ? sizeStyles.paddingMultiline : sizeStyles.paddingSingleLine,
|
|
1618
1638
|
paddingRight: isMultiline ? theme.spacing(7) : undefined, // Extra space for copy button in multiline only
|
|
1619
1639
|
fontSize: sizeStyles.fontSize,
|
|
1620
1640
|
fontFamily: neoDesign.typography.fontFamily.code,
|
|
1621
1641
|
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
1622
|
-
lineHeight: isMultiline ? 1.5 : size === 'xs' ? 1.2 : 'normal',
|
|
1642
|
+
lineHeight: isMultiline ? 1.5 : size === 'xs' || size === 'inline' ? 1.2 : 'normal',
|
|
1623
1643
|
borderRadius: neoDesign.borderRadius.xS,
|
|
1624
1644
|
textAlign: 'left',
|
|
1625
1645
|
textTransform: 'none',
|
|
@@ -1670,12 +1690,13 @@ const IconWrapper$2 = styles.styled('span')(({ theme, isMultiline }) => ({
|
|
|
1670
1690
|
*
|
|
1671
1691
|
* Figma Props Mapping:
|
|
1672
1692
|
* - Color (Light|Dark) → variant (outlined|filled)
|
|
1673
|
-
* - size (Single line|multiline) → auto-detected
|
|
1693
|
+
* - size (Single line|multiline|inline) → size prop + auto-detected multiline
|
|
1674
1694
|
* - Copy button → endIcon (ReactNode)
|
|
1675
1695
|
* - Text content → children prop
|
|
1676
1696
|
*/
|
|
1677
1697
|
const NeoCodeSnippet = ({ variant = 'outlined', size = 'small', endIcon, children, ...props }) => {
|
|
1678
|
-
|
|
1698
|
+
// Inline snippets are never multiline — they sit within a line of text
|
|
1699
|
+
const isMultiline = size !== 'inline' && String(children).includes('\n');
|
|
1679
1700
|
return (jsxRuntime.jsxs(StyledButtonBase, { variant: variant, size: size, isMultiline: isMultiline, ...props, children: [isMultiline ? children : jsxRuntime.jsx("span", { children: children }), endIcon && jsxRuntime.jsx(IconWrapper$2, { isMultiline: isMultiline, children: endIcon })] }));
|
|
1680
1701
|
};
|
|
1681
1702
|
NeoCodeSnippet.displayName = 'NeoCodeSnippet';
|
|
@@ -1887,7 +1908,7 @@ const LabelContainer$3 = styles.styled('div')({
|
|
|
1887
1908
|
gap: neoDesign.spacing.spacing_1,
|
|
1888
1909
|
minWidth: 0,
|
|
1889
1910
|
});
|
|
1890
|
-
const Label$
|
|
1911
|
+
const Label$3 = styles.styled('span')({
|
|
1891
1912
|
color: neoDesign.semanticColors.icons.default,
|
|
1892
1913
|
flexShrink: 0,
|
|
1893
1914
|
});
|
|
@@ -1913,9 +1934,11 @@ const Shortcut = styles.styled('span')(({ theme }) => ({
|
|
|
1913
1934
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649
|
|
1914
1935
|
*
|
|
1915
1936
|
* Figma Props Mapping:
|
|
1937
|
+
* - Figma "Dropdown - Menu" component uses Type (Avatar|Button|Icon) and Open (True|False)
|
|
1938
|
+
* to control the menu trigger. NeoMenuItem is the individual item inside the menu.
|
|
1916
1939
|
* - Text label → children prop (mapped via figma.children)
|
|
1917
|
-
* -
|
|
1918
|
-
* -
|
|
1940
|
+
* - selected → selected prop (React-controlled)
|
|
1941
|
+
* - disabled → disabled prop (React-controlled)
|
|
1919
1942
|
* - Hover state → CSS :hover (not mapped)
|
|
1920
1943
|
* - Icon slot → icon prop (not mappable - ReactNode)
|
|
1921
1944
|
* - Secondary text → secondaryText prop (not mappable - ReactNode/string)
|
|
@@ -1937,7 +1960,7 @@ const Shortcut = styles.styled('span')(({ theme }) => ({
|
|
|
1937
1960
|
* ```
|
|
1938
1961
|
*/
|
|
1939
1962
|
const NeoMenuItem = ({ icon, shortcut, secondaryText, children, ...props }) => {
|
|
1940
|
-
return (jsxRuntime.jsx(StyledMenuItem, { ...props, children: jsxRuntime.jsxs(MenuItemContent, { children: [icon && jsxRuntime.jsx(IconWrapper$1, { children: icon }), jsxRuntime.jsxs(LabelContainer$3, { children: [jsxRuntime.jsx(Label$
|
|
1963
|
+
return (jsxRuntime.jsx(StyledMenuItem, { ...props, children: jsxRuntime.jsxs(MenuItemContent, { children: [icon && jsxRuntime.jsx(IconWrapper$1, { children: icon }), jsxRuntime.jsxs(LabelContainer$3, { children: [jsxRuntime.jsx(Label$3, { children: children }), secondaryText && jsxRuntime.jsx(SecondaryLabel, { children: secondaryText })] }), shortcut && jsxRuntime.jsx(Shortcut, { children: shortcut })] }) }));
|
|
1941
1964
|
};
|
|
1942
1965
|
NeoMenuItem.displayName = 'NeoMenuItem';
|
|
1943
1966
|
|
|
@@ -2453,111 +2476,85 @@ function NeoDataGridColumnsButton() {
|
|
|
2453
2476
|
}
|
|
2454
2477
|
NeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton';
|
|
2455
2478
|
|
|
2456
|
-
const
|
|
2457
|
-
|
|
2458
|
-
borderRadius: neoDesign.borderRadius.full,
|
|
2459
|
-
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
2460
|
-
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
2461
|
-
// Size variants
|
|
2462
|
-
...(size === 'small' && {
|
|
2479
|
+
const sizeStyles = {
|
|
2480
|
+
small: {
|
|
2463
2481
|
height: 16,
|
|
2464
2482
|
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
2465
2483
|
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
2466
|
-
}
|
|
2467
|
-
|
|
2484
|
+
},
|
|
2485
|
+
medium: {
|
|
2468
2486
|
height: 18,
|
|
2469
2487
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2470
2488
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2471
|
-
}
|
|
2472
|
-
|
|
2489
|
+
},
|
|
2490
|
+
large: {
|
|
2473
2491
|
height: 20,
|
|
2474
2492
|
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
2475
2493
|
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
2476
|
-
}),
|
|
2477
|
-
[`& .${Chip.chipClasses.label}`]: {
|
|
2478
|
-
padding: 0,
|
|
2479
2494
|
},
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2495
|
+
};
|
|
2496
|
+
const outlinedColorStyles = {
|
|
2497
|
+
default: {
|
|
2483
2498
|
backgroundColor: neoDesign.semanticColors.status.neutral.light,
|
|
2484
2499
|
color: neoDesign.semanticColors.status.neutral.dark,
|
|
2485
|
-
borderColor: neoDesign.colors.grey[200],
|
|
2486
|
-
}
|
|
2487
|
-
|
|
2488
|
-
...(variant === 'outlined' &&
|
|
2489
|
-
color === 'error' && {
|
|
2500
|
+
borderColor: neoDesign.colors.grey[200],
|
|
2501
|
+
},
|
|
2502
|
+
error: {
|
|
2490
2503
|
backgroundColor: neoDesign.semanticColors.status.error.light,
|
|
2491
2504
|
color: neoDesign.semanticColors.status.error.dark,
|
|
2492
|
-
borderColor: neoDesign.colors.red[100],
|
|
2493
|
-
}
|
|
2494
|
-
|
|
2495
|
-
...(variant === 'outlined' &&
|
|
2496
|
-
color === 'warning' && {
|
|
2505
|
+
borderColor: neoDesign.colors.red[100],
|
|
2506
|
+
},
|
|
2507
|
+
warning: {
|
|
2497
2508
|
backgroundColor: neoDesign.semanticColors.status.warning.light,
|
|
2498
2509
|
color: neoDesign.semanticColors.status.warning.dark,
|
|
2499
|
-
borderColor: neoDesign.colors.orange[100],
|
|
2500
|
-
}
|
|
2501
|
-
|
|
2502
|
-
...(variant === 'outlined' &&
|
|
2503
|
-
color === 'success' && {
|
|
2510
|
+
borderColor: neoDesign.colors.orange[100],
|
|
2511
|
+
},
|
|
2512
|
+
success: {
|
|
2504
2513
|
backgroundColor: neoDesign.semanticColors.status.success.light,
|
|
2505
2514
|
color: neoDesign.semanticColors.status.success.dark,
|
|
2506
|
-
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2507
|
-
}
|
|
2508
|
-
|
|
2509
|
-
...(variant === 'outlined' &&
|
|
2510
|
-
color === 'info' && {
|
|
2515
|
+
borderColor: 'rgba(94, 196, 111, 0.24)',
|
|
2516
|
+
},
|
|
2517
|
+
info: {
|
|
2511
2518
|
backgroundColor: neoDesign.semanticColors.status.info.light,
|
|
2512
2519
|
color: neoDesign.semanticColors.status.info.dark,
|
|
2513
|
-
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2514
|
-
}
|
|
2515
|
-
|
|
2516
|
-
...(variant === 'outlined' &&
|
|
2517
|
-
color === 'violet' && {
|
|
2520
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2521
|
+
},
|
|
2522
|
+
violet: {
|
|
2518
2523
|
backgroundColor: `${neoDesign.colors.violet[100]}66`, // rgba(235,213,241,0.4)
|
|
2519
2524
|
color: neoDesign.colors.violet[600],
|
|
2520
|
-
borderColor: neoDesign.colors.violet[100],
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
color
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
color
|
|
2548
|
-
|
|
2549
|
-
}),
|
|
2550
|
-
// Filled variant - Info
|
|
2551
|
-
...(variant === 'filled' &&
|
|
2552
|
-
color === 'info' && {
|
|
2553
|
-
backgroundColor: neoDesign.semanticColors.status.info.medium,
|
|
2554
|
-
color: theme.palette.common.white,
|
|
2555
|
-
border: 'none',
|
|
2556
|
-
}),
|
|
2557
|
-
// Filled variant - Violet
|
|
2525
|
+
borderColor: neoDesign.colors.violet[100],
|
|
2526
|
+
},
|
|
2527
|
+
beta: {
|
|
2528
|
+
backgroundColor: neoDesign.colors.digitalBlue[100],
|
|
2529
|
+
color: neoDesign.colors.digitalBlue[400],
|
|
2530
|
+
borderColor: neoDesign.colors.digitalBlue[100],
|
|
2531
|
+
},
|
|
2532
|
+
};
|
|
2533
|
+
const filledColorStyles = {
|
|
2534
|
+
default: neoDesign.semanticColors.status.neutral.medium,
|
|
2535
|
+
error: neoDesign.semanticColors.status.error.medium,
|
|
2536
|
+
warning: neoDesign.semanticColors.status.warning.medium,
|
|
2537
|
+
success: neoDesign.semanticColors.status.success.medium,
|
|
2538
|
+
info: neoDesign.semanticColors.status.info.medium,
|
|
2539
|
+
violet: neoDesign.colors.violet[500],
|
|
2540
|
+
beta: neoDesign.colors.digitalBlue[300],
|
|
2541
|
+
};
|
|
2542
|
+
const StyledChip$1 = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
2543
|
+
padding: 0,
|
|
2544
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
2545
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
2546
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
2547
|
+
...(size && sizeStyles[size]),
|
|
2548
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
2549
|
+
padding: 0,
|
|
2550
|
+
},
|
|
2551
|
+
...(variant === 'outlined' &&
|
|
2552
|
+
color &&
|
|
2553
|
+
outlinedColorStyles[color]),
|
|
2558
2554
|
...(variant === 'filled' &&
|
|
2559
|
-
color
|
|
2560
|
-
|
|
2555
|
+
color &&
|
|
2556
|
+
color in filledColorStyles && {
|
|
2557
|
+
backgroundColor: filledColorStyles[color],
|
|
2561
2558
|
color: theme.palette.common.white,
|
|
2562
2559
|
border: 'none',
|
|
2563
2560
|
}),
|
|
@@ -2570,11 +2567,11 @@ const StyledChip = styles.styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2570
2567
|
* Figma Props Mapping:
|
|
2571
2568
|
* - m (sm|md|lg) → size (small|medium|large)
|
|
2572
2569
|
* - type (light|dark) → variant (outlined|filled)
|
|
2573
|
-
* - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)
|
|
2570
|
+
* - state (Neutral|Error|Warning|Success|Info|Violet|Beta) → color (default|error|warning|success|info|violet|beta)
|
|
2574
2571
|
* - Label text → label prop
|
|
2575
2572
|
*/
|
|
2576
2573
|
const NeoTag = ({ size = 'small', variant = 'outlined', ...props }) => {
|
|
2577
|
-
return jsxRuntime.jsx(StyledChip, { size: size, variant: variant, ...props });
|
|
2574
|
+
return jsxRuntime.jsx(StyledChip$1, { size: size, variant: variant, ...props });
|
|
2578
2575
|
};
|
|
2579
2576
|
NeoTag.displayName = 'NeoTag';
|
|
2580
2577
|
|
|
@@ -3535,6 +3532,102 @@ const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...prop
|
|
|
3535
3532
|
};
|
|
3536
3533
|
NeoDot.displayName = 'NeoDot';
|
|
3537
3534
|
|
|
3535
|
+
const focusRing = `${neoDesign.shadows.focusWhite1.x}px ${neoDesign.shadows.focusWhite1.y}px ${neoDesign.shadows.focusWhite1.blur}px ${neoDesign.shadows.focusWhite1.spread}px ${neoDesign.shadows.focusWhite1.shadow}, ${neoDesign.shadows.focusBlue2.x}px ${neoDesign.shadows.focusBlue2.y}px ${neoDesign.shadows.focusBlue2.blur}px ${neoDesign.shadows.focusBlue2.spread}px ${neoDesign.shadows.focusBlue2.shadow}`;
|
|
3536
|
+
const filterChipOnlyProps = ['selected', 'expanded', 'selectedLabel', 'count', 'onClear'];
|
|
3537
|
+
const StyledChip = styles.styled(Chip, {
|
|
3538
|
+
shouldForwardProp: prop => !filterChipOnlyProps.includes(prop),
|
|
3539
|
+
})(({ theme, selected }) => ({
|
|
3540
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
3541
|
+
border: `1px solid ${neoDesign.semanticColors.buttons.secondary.defaultBorder}`,
|
|
3542
|
+
backgroundColor: selected
|
|
3543
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3544
|
+
: neoDesign.semanticColors.surfaces.white,
|
|
3545
|
+
minHeight: 40,
|
|
3546
|
+
padding: `${neoDesign.spacing.spacing_3_4}px ${neoDesign.spacing.spacing_1_1_2}px`,
|
|
3547
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3548
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3549
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3550
|
+
lineHeight: 1,
|
|
3551
|
+
color: neoDesign.semanticColors.typography.body,
|
|
3552
|
+
[`& .${Chip.chipClasses.label}`]: {
|
|
3553
|
+
padding: 0,
|
|
3554
|
+
overflow: 'visible',
|
|
3555
|
+
display: 'flex',
|
|
3556
|
+
alignItems: 'center',
|
|
3557
|
+
},
|
|
3558
|
+
[`& .${Chip.chipClasses.deleteIcon}`]: {
|
|
3559
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3560
|
+
width: 24,
|
|
3561
|
+
height: 24,
|
|
3562
|
+
margin: 0,
|
|
3563
|
+
flexShrink: 0,
|
|
3564
|
+
'&:hover': {
|
|
3565
|
+
color: neoDesign.semanticColors.icons.default,
|
|
3566
|
+
},
|
|
3567
|
+
},
|
|
3568
|
+
'&:hover': {
|
|
3569
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground,
|
|
3570
|
+
},
|
|
3571
|
+
[`&.${Chip.chipClasses.focusVisible}`]: {
|
|
3572
|
+
boxShadow: focusRing,
|
|
3573
|
+
backgroundColor: selected
|
|
3574
|
+
? neoDesign.semanticColors.buttons.secondary.pressedBackground
|
|
3575
|
+
: neoDesign.semanticColors.surfaces.white,
|
|
3576
|
+
},
|
|
3577
|
+
}));
|
|
3578
|
+
const LabelContent = styles.styled('span')({
|
|
3579
|
+
display: 'inline-flex',
|
|
3580
|
+
alignItems: 'center',
|
|
3581
|
+
gap: neoDesign.spacing.spacing_1,
|
|
3582
|
+
});
|
|
3583
|
+
const TextStack = styles.styled('span')({
|
|
3584
|
+
display: 'flex',
|
|
3585
|
+
flexDirection: 'column',
|
|
3586
|
+
alignItems: 'flex-start',
|
|
3587
|
+
justifyContent: 'center',
|
|
3588
|
+
gap: neoDesign.spacing.spacing_1_4,
|
|
3589
|
+
});
|
|
3590
|
+
const HeaderLabel = styles.styled('span')(({ theme }) => ({
|
|
3591
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xxs),
|
|
3592
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
3593
|
+
lineHeight: '120%',
|
|
3594
|
+
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
3595
|
+
}));
|
|
3596
|
+
const SelectedLabel = styles.styled('span')(({ theme }) => ({
|
|
3597
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.sm),
|
|
3598
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3599
|
+
lineHeight: 1,
|
|
3600
|
+
color: neoDesign.semanticColors.buttons.secondary.default,
|
|
3601
|
+
}));
|
|
3602
|
+
const CountBadge = styles.styled('span')(({ theme }) => ({
|
|
3603
|
+
display: 'inline-flex',
|
|
3604
|
+
alignItems: 'center',
|
|
3605
|
+
justifyContent: 'center',
|
|
3606
|
+
minWidth: 16,
|
|
3607
|
+
height: 16,
|
|
3608
|
+
padding: `0 ${neoDesign.spacing.spacing_1_2}px`,
|
|
3609
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
3610
|
+
backgroundColor: neoDesign.semanticColors.brand,
|
|
3611
|
+
color: neoDesign.semanticColors.surfaces.white,
|
|
3612
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs),
|
|
3613
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
3614
|
+
lineHeight: 1,
|
|
3615
|
+
boxSizing: 'border-box',
|
|
3616
|
+
}));
|
|
3617
|
+
/**
|
|
3618
|
+
* NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
|
|
3619
|
+
*
|
|
3620
|
+
* @example
|
|
3621
|
+
* <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
|
|
3622
|
+
*
|
|
3623
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
|
|
3624
|
+
*/
|
|
3625
|
+
const NeoFilterChip = ({ label, selected = false, expanded, selectedLabel, count = 0, onClear, onClick, ...props }) => {
|
|
3626
|
+
const chipLabel = selected ? (jsxRuntime.jsxs(LabelContent, { children: [jsxRuntime.jsxs(TextStack, { children: [jsxRuntime.jsx(HeaderLabel, { children: label }), jsxRuntime.jsx(SelectedLabel, { children: selectedLabel ?? label })] }), count > 0 && jsxRuntime.jsx(CountBadge, { children: count })] })) : (label);
|
|
3627
|
+
return (jsxRuntime.jsx(StyledChip, { label: chipLabel, selected: selected, clickable: true, onClick: onClick, onDelete: selected && onClear ? onClear : undefined, deleteIcon: jsxRuntime.jsx(X, { size: 24 }), "aria-expanded": expanded, ...props }));
|
|
3628
|
+
};
|
|
3629
|
+
NeoFilterChip.displayName = 'NeoFilterChip';
|
|
3630
|
+
|
|
3538
3631
|
const SpinnerWrapper = styles.styled('div')({
|
|
3539
3632
|
width: 24,
|
|
3540
3633
|
height: 24,
|
|
@@ -3775,6 +3868,31 @@ const NeoFooter = ({ variant = 'pagination', showShadow = false, loading = false
|
|
|
3775
3868
|
};
|
|
3776
3869
|
NeoFooter.displayName = 'NeoFooter';
|
|
3777
3870
|
|
|
3871
|
+
const customProps$1 = ['iconSize'];
|
|
3872
|
+
const StyledIconWrapper = styles.styled('div', {
|
|
3873
|
+
shouldForwardProp: prop => !customProps$1.includes(prop),
|
|
3874
|
+
})(({ iconSize }) => ({
|
|
3875
|
+
display: 'inline-flex',
|
|
3876
|
+
alignItems: 'center',
|
|
3877
|
+
justifyContent: 'center',
|
|
3878
|
+
width: iconSize,
|
|
3879
|
+
height: iconSize,
|
|
3880
|
+
flexShrink: 0,
|
|
3881
|
+
'& svg': {
|
|
3882
|
+
width: iconSize,
|
|
3883
|
+
height: iconSize,
|
|
3884
|
+
},
|
|
3885
|
+
}));
|
|
3886
|
+
/**
|
|
3887
|
+
* NeoIconWrapper - Flex-centered container that sizes icons
|
|
3888
|
+
*
|
|
3889
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4061-9955
|
|
3890
|
+
*/
|
|
3891
|
+
const NeoIconWrapper = ({ size = 20, children, ...props }) => {
|
|
3892
|
+
return (jsxRuntime.jsx(StyledIconWrapper, { iconSize: size, ...props, children: children }));
|
|
3893
|
+
};
|
|
3894
|
+
NeoIconWrapper.displayName = 'NeoIconWrapper';
|
|
3895
|
+
|
|
3778
3896
|
/**
|
|
3779
3897
|
* NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality
|
|
3780
3898
|
*
|
|
@@ -4326,6 +4444,22 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4326
4444
|
color: neoDesign.semanticColors.typography.button.disabled,
|
|
4327
4445
|
},
|
|
4328
4446
|
},
|
|
4447
|
+
// Focus state
|
|
4448
|
+
[`&.${ListItemButton.listItemButtonClasses.focusVisible}`]: {
|
|
4449
|
+
outline: `2px solid ${neoDesign.semanticColors.border.tabActive}`,
|
|
4450
|
+
outlineOffset: 2,
|
|
4451
|
+
border: `2px solid ${neoDesign.semanticColors.border.tabActive}`,
|
|
4452
|
+
backgroundColor: theme.palette.common.white,
|
|
4453
|
+
[`& .${ListItemIcon.listItemIconClasses.root}`]: {
|
|
4454
|
+
color: neoDesign.semanticColors.icons.default,
|
|
4455
|
+
},
|
|
4456
|
+
[`& .${ListItemText.listItemTextClasses.primary}`]: {
|
|
4457
|
+
color: neoDesign.colors.grey[800],
|
|
4458
|
+
},
|
|
4459
|
+
[`& .${ListItemText.listItemTextClasses.secondary}`]: {
|
|
4460
|
+
color: neoDesign.semanticColors.typography.bodySecondary,
|
|
4461
|
+
},
|
|
4462
|
+
},
|
|
4329
4463
|
// Disabled state
|
|
4330
4464
|
[`&.${ListItemButton.listItemButtonClasses.disabled}`]: {
|
|
4331
4465
|
backgroundColor: neoDesign.colors.grey[50],
|
|
@@ -4345,7 +4479,7 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4345
4479
|
* NeoListItemButton - Selectable list item with icon and text
|
|
4346
4480
|
*
|
|
4347
4481
|
* A selectable list item component that displays an optional icon with primary
|
|
4348
|
-
* and secondary text. Supports active (selected), deselected, and disabled states.
|
|
4482
|
+
* and secondary text. Supports active (selected), deselected, focus, and disabled states.
|
|
4349
4483
|
*
|
|
4350
4484
|
* Uses MUI's ListItemButton as base for proper accessibility and interaction.
|
|
4351
4485
|
* Compose with ListItemIcon and ListItemText for proper structure.
|
|
@@ -4366,9 +4500,10 @@ const StyledListItemButton = styles.styled(ListItemButton)(({ theme }) => ({
|
|
|
4366
4500
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4925-3764
|
|
4367
4501
|
*
|
|
4368
4502
|
* Figma Props Mapping:
|
|
4369
|
-
* -
|
|
4370
|
-
* -
|
|
4371
|
-
* -
|
|
4503
|
+
* - state="active" → selected={true}
|
|
4504
|
+
* - state="deselected" → selected={false}
|
|
4505
|
+
* - state="focus" → focus-visible CSS state
|
|
4506
|
+
* - state="disabled" → disabled={true}
|
|
4372
4507
|
* - showIcon → Conditional rendering of ListItemIcon child
|
|
4373
4508
|
*
|
|
4374
4509
|
* Design Tokens Used:
|
|
@@ -4783,6 +4918,87 @@ const NeoModalFooter = ({ leadingContent, children }) => {
|
|
|
4783
4918
|
};
|
|
4784
4919
|
NeoModalFooter.displayName = 'NeoModalFooter';
|
|
4785
4920
|
|
|
4921
|
+
const customProps = ['selected'];
|
|
4922
|
+
const StyledRoot = styles.styled(ButtonBase, {
|
|
4923
|
+
shouldForwardProp: prop => !customProps.includes(prop),
|
|
4924
|
+
})(({ selected }) => ({
|
|
4925
|
+
display: 'flex',
|
|
4926
|
+
flexDirection: 'column',
|
|
4927
|
+
gap: neoDesign.spacing.spacing_1_4, // 2px
|
|
4928
|
+
alignItems: 'center',
|
|
4929
|
+
justifyContent: 'center',
|
|
4930
|
+
paddingTop: neoDesign.spacing.spacing_1, // 8px
|
|
4931
|
+
paddingBottom: neoDesign.spacing.spacing_1, // 8px
|
|
4932
|
+
paddingLeft: neoDesign.spacing.spacing_1_2, // 4px
|
|
4933
|
+
paddingRight: neoDesign.spacing.spacing_1_2, // 4px
|
|
4934
|
+
borderRadius: neoDesign.borderRadius.xS, // 4px
|
|
4935
|
+
width: 95,
|
|
4936
|
+
cursor: 'pointer',
|
|
4937
|
+
textDecoration: 'none',
|
|
4938
|
+
'&:hover .neo-nav-icon-padding': {
|
|
4939
|
+
backgroundColor: neoDesign.semanticColors.buttons.secondary.hoverBackground, // #F2F3FF
|
|
4940
|
+
},
|
|
4941
|
+
'&:hover .neo-nav-label': {
|
|
4942
|
+
color: neoDesign.semanticColors.buttons.primary.hover, // #1E2EC2
|
|
4943
|
+
},
|
|
4944
|
+
...(selected && {
|
|
4945
|
+
'& .neo-nav-icon-padding': {
|
|
4946
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`, // rgba(220,224,255,0.75)
|
|
4947
|
+
},
|
|
4948
|
+
'& .neo-nav-label': {
|
|
4949
|
+
color: neoDesign.semanticColors.buttons.primary.pressed, // #131E7A
|
|
4950
|
+
fontWeight: neoDesign.typography.fontWeight.semiBold,
|
|
4951
|
+
},
|
|
4952
|
+
'&:hover .neo-nav-icon-padding': {
|
|
4953
|
+
backgroundColor: `${neoDesign.colors.digitalBlue[100]}BF`,
|
|
4954
|
+
},
|
|
4955
|
+
'&:hover .neo-nav-label': {
|
|
4956
|
+
color: neoDesign.semanticColors.buttons.primary.pressed,
|
|
4957
|
+
},
|
|
4958
|
+
}),
|
|
4959
|
+
}));
|
|
4960
|
+
const IconPadding = styles.styled('span')({
|
|
4961
|
+
display: 'flex',
|
|
4962
|
+
alignItems: 'center',
|
|
4963
|
+
padding: neoDesign.spacing.spacing_1, // 8px
|
|
4964
|
+
borderRadius: neoDesign.spacing.spacing_1, // 8px
|
|
4965
|
+
transition: 'background-color 150ms',
|
|
4966
|
+
});
|
|
4967
|
+
const Label$2 = styles.styled('span')(({ theme }) => ({
|
|
4968
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
4969
|
+
fontWeight: neoDesign.typography.fontWeight.regular,
|
|
4970
|
+
fontSize: theme.typography.pxToRem(10),
|
|
4971
|
+
lineHeight: 1.2,
|
|
4972
|
+
textAlign: 'center',
|
|
4973
|
+
color: neoDesign.semanticColors.typography.navigation.default, // #1F2937
|
|
4974
|
+
width: '100%',
|
|
4975
|
+
transition: 'color 150ms',
|
|
4976
|
+
}));
|
|
4977
|
+
const TagPill = styles.styled('span')(({ theme }) => ({
|
|
4978
|
+
display: 'inline-flex',
|
|
4979
|
+
alignItems: 'center',
|
|
4980
|
+
justifyContent: 'center',
|
|
4981
|
+
height: 18,
|
|
4982
|
+
paddingLeft: neoDesign.spacing.spacing_3_4, // 6px
|
|
4983
|
+
paddingRight: neoDesign.spacing.spacing_3_4, // 6px
|
|
4984
|
+
borderRadius: neoDesign.borderRadius.full,
|
|
4985
|
+
backgroundColor: neoDesign.colors.digitalBlue[300], // #8D99FF
|
|
4986
|
+
color: neoDesign.semanticColors.typography.tooltip, // white
|
|
4987
|
+
fontFamily: neoDesign.typography.fontFamily.body,
|
|
4988
|
+
fontWeight: neoDesign.typography.fontWeight.medium,
|
|
4989
|
+
fontSize: theme.typography.pxToRem(neoDesign.typography.fontSize.xs), // 12px
|
|
4990
|
+
lineHeight: 1,
|
|
4991
|
+
}));
|
|
4992
|
+
/**
|
|
4993
|
+
* NeoNavigationItem - Vertical navigation item with icon, label, and optional tag
|
|
4994
|
+
*
|
|
4995
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
|
|
4996
|
+
*/
|
|
4997
|
+
const NeoNavigationItem = ({ icon, label, selected = false, tag, children, ...props }) => {
|
|
4998
|
+
return (jsxRuntime.jsxs(StyledRoot, { selected: selected, disableRipple: true, ...props, children: [jsxRuntime.jsx(IconPadding, { className: "neo-nav-icon-padding", children: icon }), label && jsxRuntime.jsx(Label$2, { className: "neo-nav-label", children: label }), tag && jsxRuntime.jsx(TagPill, { children: tag }), children] }));
|
|
4999
|
+
};
|
|
5000
|
+
NeoNavigationItem.displayName = 'NeoNavigationItem';
|
|
5001
|
+
|
|
4786
5002
|
/**
|
|
4787
5003
|
* Sticky header wrapper - sticks to top when scrolling
|
|
4788
5004
|
*/
|
|
@@ -5365,7 +5581,7 @@ NeoSkeleton.displayName = 'NeoSkeleton';
|
|
|
5365
5581
|
|
|
5366
5582
|
/**
|
|
5367
5583
|
* Styled Alert component with custom severity and variant styling
|
|
5368
|
-
* Uses Custom Variants Pattern to add 'neutral'
|
|
5584
|
+
* Uses Custom Variants Pattern to add 'neutral' and 'info' severities
|
|
5369
5585
|
*/
|
|
5370
5586
|
const StyledAlert$1 = styles.styled(Alert, {
|
|
5371
5587
|
shouldForwardProp: prop => prop !== 'severity' && prop !== 'variant',
|
|
@@ -5384,6 +5600,10 @@ const StyledAlert$1 = styles.styled(Alert, {
|
|
|
5384
5600
|
light: neoDesign.semanticColors.status.neutral.light,
|
|
5385
5601
|
medium: neoDesign.semanticColors.status.neutral.medium,
|
|
5386
5602
|
},
|
|
5603
|
+
info: {
|
|
5604
|
+
light: neoDesign.semanticColors.status.info.light,
|
|
5605
|
+
medium: neoDesign.semanticColors.status.info.medium,
|
|
5606
|
+
},
|
|
5387
5607
|
};
|
|
5388
5608
|
const severityColors = colorMap[severity];
|
|
5389
5609
|
// Variant-specific styles based on Phase 1.1 analysis
|
|
@@ -5443,19 +5663,20 @@ const StyledAlert$1 = styles.styled(Alert, {
|
|
|
5443
5663
|
/**
|
|
5444
5664
|
* NeoStatusBanner - Status banner component for displaying system status messages
|
|
5445
5665
|
*
|
|
5446
|
-
* Displays status information with different severity levels (success, error, neutral) and
|
|
5666
|
+
* Displays status information with different severity levels (success, error, info, neutral) and
|
|
5447
5667
|
* visual modes (outlined for light backgrounds, filled for emphasis).
|
|
5448
5668
|
*
|
|
5449
5669
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427
|
|
5450
5670
|
*
|
|
5451
5671
|
* Figma Props Mapping:
|
|
5452
|
-
* - Status (Success|Error|Offline) → severity ('success'|'error'|'neutral')
|
|
5672
|
+
* - Status (Success|Error|Info|Offline) → severity ('success'|'error'|'info'|'neutral')
|
|
5453
5673
|
* - Mode (Light|Dark) → variant ('outlined'|'filled')
|
|
5454
5674
|
*
|
|
5455
5675
|
* Design Tokens Used:
|
|
5456
5676
|
* - status.success.light, status.success.medium
|
|
5457
5677
|
* - status.error.light, status.error.medium
|
|
5458
5678
|
* - status.neutral.light, status.neutral.medium
|
|
5679
|
+
* - status.info.light, status.info.medium
|
|
5459
5680
|
* - typography.tooltip, typography.bodySecondary
|
|
5460
5681
|
* - grey[800]
|
|
5461
5682
|
* - fontSize.default, fontSize.sm
|
|
@@ -5469,6 +5690,7 @@ const NeoStatusBanner = ({ severity = 'success', variant = 'outlined', icon, chi
|
|
|
5469
5690
|
success: jsxRuntime.jsx(CircleCheck, { size: 24 }),
|
|
5470
5691
|
error: jsxRuntime.jsx(CircleAlert, { size: 24 }),
|
|
5471
5692
|
neutral: jsxRuntime.jsx(WifiOff, { size: 24 }),
|
|
5693
|
+
info: jsxRuntime.jsx(Info, { size: 24 }),
|
|
5472
5694
|
};
|
|
5473
5695
|
const defaultIcon = iconMap[severity];
|
|
5474
5696
|
// Type assertion needed: severity and variant are custom props filtered by shouldForwardProp
|
|
@@ -6168,8 +6390,10 @@ exports.NeoDataGridSelect = NeoSelect;
|
|
|
6168
6390
|
exports.NeoDatePicker = NeoDatePicker;
|
|
6169
6391
|
exports.NeoDivider = NeoDivider;
|
|
6170
6392
|
exports.NeoDot = NeoDot;
|
|
6393
|
+
exports.NeoFilterChip = NeoFilterChip;
|
|
6171
6394
|
exports.NeoFooter = NeoFooter;
|
|
6172
6395
|
exports.NeoIconButton = NeoIconButton;
|
|
6396
|
+
exports.NeoIconWrapper = NeoIconWrapper;
|
|
6173
6397
|
exports.NeoInfiniteScrollGrid = NeoInfiniteScrollGrid;
|
|
6174
6398
|
exports.NeoInputField = NeoInputField;
|
|
6175
6399
|
exports.NeoListItem = NeoListItem;
|
|
@@ -6183,6 +6407,7 @@ exports.NeoModalContent = NeoModalContent;
|
|
|
6183
6407
|
exports.NeoModalFooter = NeoModalFooter;
|
|
6184
6408
|
exports.NeoModalHeader = NeoModalHeader;
|
|
6185
6409
|
exports.NeoMultiBadgesCell = NeoMultiBadgesCell;
|
|
6410
|
+
exports.NeoNavigationItem = NeoNavigationItem;
|
|
6186
6411
|
exports.NeoPageContent = NeoPageContent;
|
|
6187
6412
|
exports.NeoPaginatedGrid = NeoPaginatedGrid;
|
|
6188
6413
|
exports.NeoProgressbar = NeoProgressbar;
|