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