@moderneinc/neo-styled-components 5.0.0-next.e7f738 → 5.0.0

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.
@@ -1,11 +1,12 @@
1
1
  import { type CheckboxProps } from '@mui/material/Checkbox';
2
2
  import type { ReactNode } from 'react';
3
3
  /**
4
- * Custom checkbox icons matching Figma design
5
- * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
4
+ * NeoCheckbox uses Lucide icons (square / square-check / square-minus): a rounded
5
+ * outline drawn in `currentColor`, with the check/minus mark sharing that stroke —
6
+ * so a single per-state `color` (set in StyledCheckbox) drives every variant.
6
7
  *
8
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
7
9
  * Checkbox sizes: xs=12x12, small=16x16, medium=20x20
8
- * Check/minus paths scaled from Untitled UI (originally 24x24)
9
10
  */
10
11
  type CheckboxSize = 'xs' | 'small' | 'medium';
11
12
  declare module '@mui/material/Checkbox' {
package/dist/index.d.ts CHANGED
@@ -640,11 +640,12 @@ interface StyledComponent<ComponentProps extends {}, SpecificComponentProps exte
640
640
  }
641
641
 
642
642
  /**
643
- * Custom checkbox icons matching Figma design
644
- * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
643
+ * NeoCheckbox uses Lucide icons (square / square-check / square-minus): a rounded
644
+ * outline drawn in `currentColor`, with the check/minus mark sharing that stroke —
645
+ * so a single per-state `color` (set in StyledCheckbox) drives every variant.
645
646
  *
647
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
646
648
  * Checkbox sizes: xs=12x12, small=16x16, medium=20x20
647
- * Check/minus paths scaled from Untitled UI (originally 24x24)
648
649
  */
649
650
  type CheckboxSize = 'xs' | 'small' | 'medium';
650
651
  declare module '@mui/material/Checkbox' {
package/dist/index.esm.js CHANGED
@@ -4,7 +4,7 @@ import Box from '@mui/material/Box';
4
4
  import { styled, alpha } from '@mui/material/styles';
5
5
  import Chip, { chipClasses } from '@mui/material/Chip';
6
6
  import MuiAvatar from '@mui/material/Avatar';
7
- import SvgIcon, { svgIconClasses } from '@mui/material/SvgIcon';
7
+ import SvgIcon from '@mui/material/SvgIcon';
8
8
  import Alert, { alertClasses } from '@mui/material/Alert';
9
9
  import ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase';
10
10
  import React, { useContext, createContext, forwardRef, createElement, useState, useRef, useCallback, useMemo, useEffect, Children, isValidElement, cloneElement } from 'react';
@@ -600,11 +600,11 @@ const createLucideIcon = (iconName, iconNode) => {
600
600
  */
601
601
 
602
602
 
603
- const __iconNode$m = [
603
+ const __iconNode$p = [
604
604
  ["path", { d: "M12 5v14", key: "s699le" }],
605
605
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
606
606
  ];
607
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$m);
607
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$p);
608
608
 
609
609
  /**
610
610
  * @license lucide-react v1.16.0 - ISC
@@ -614,11 +614,11 @@ const ArrowDown = createLucideIcon("arrow-down", __iconNode$m);
614
614
  */
615
615
 
616
616
 
617
- const __iconNode$l = [
617
+ const __iconNode$o = [
618
618
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
619
619
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
620
620
  ];
621
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$l);
621
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$o);
622
622
 
623
623
  /**
624
624
  * @license lucide-react v1.16.0 - ISC
@@ -628,7 +628,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$l);
628
628
  */
629
629
 
630
630
 
631
- const __iconNode$k = [
631
+ const __iconNode$n = [
632
632
  [
633
633
  "path",
634
634
  {
@@ -639,7 +639,7 @@ const __iconNode$k = [
639
639
  ["line", { x1: "12", x2: "12", y1: "16", y2: "12", key: "1y1yb1" }],
640
640
  ["line", { x1: "12", x2: "12.01", y1: "8", y2: "8", key: "110wyk" }]
641
641
  ];
642
- const BadgeInfo = createLucideIcon("badge-info", __iconNode$k);
642
+ const BadgeInfo = createLucideIcon("badge-info", __iconNode$n);
643
643
 
644
644
  /**
645
645
  * @license lucide-react v1.16.0 - ISC
@@ -649,7 +649,7 @@ const BadgeInfo = createLucideIcon("badge-info", __iconNode$k);
649
649
  */
650
650
 
651
651
 
652
- const __iconNode$j = [
652
+ const __iconNode$m = [
653
653
  ["path", { d: "M8 2v4", key: "1cmpym" }],
654
654
  ["path", { d: "M16 2v4", key: "4m81vk" }],
655
655
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -661,7 +661,7 @@ const __iconNode$j = [
661
661
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
662
662
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
663
663
  ];
664
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$j);
664
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$m);
665
665
 
666
666
  /**
667
667
  * @license lucide-react v1.16.0 - ISC
@@ -671,8 +671,8 @@ const CalendarDays = createLucideIcon("calendar-days", __iconNode$j);
671
671
  */
672
672
 
673
673
 
674
- const __iconNode$i = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
675
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$i);
674
+ const __iconNode$l = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
675
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$l);
676
676
 
677
677
  /**
678
678
  * @license lucide-react v1.16.0 - ISC
@@ -682,8 +682,8 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$i);
682
682
  */
683
683
 
684
684
 
685
- const __iconNode$h = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
686
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$h);
685
+ const __iconNode$k = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
686
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$k);
687
687
 
688
688
  /**
689
689
  * @license lucide-react v1.16.0 - ISC
@@ -693,8 +693,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$h);
693
693
  */
694
694
 
695
695
 
696
- const __iconNode$g = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
697
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$g);
696
+ const __iconNode$j = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
697
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$j);
698
698
 
699
699
  /**
700
700
  * @license lucide-react v1.16.0 - ISC
@@ -704,8 +704,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$g);
704
704
  */
705
705
 
706
706
 
707
- const __iconNode$f = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
708
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$f);
707
+ const __iconNode$i = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
708
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$i);
709
709
 
710
710
  /**
711
711
  * @license lucide-react v1.16.0 - ISC
@@ -715,11 +715,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$f);
715
715
  */
716
716
 
717
717
 
718
- const __iconNode$e = [
718
+ const __iconNode$h = [
719
719
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
720
720
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
721
721
  ];
722
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$e);
722
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$h);
723
723
 
724
724
  /**
725
725
  * @license lucide-react v1.16.0 - ISC
@@ -729,12 +729,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$e);
729
729
  */
730
730
 
731
731
 
732
- const __iconNode$d = [
732
+ const __iconNode$g = [
733
733
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
734
734
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
735
735
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
736
736
  ];
737
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$d);
737
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$g);
738
738
 
739
739
  /**
740
740
  * @license lucide-react v1.16.0 - ISC
@@ -744,11 +744,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$d);
744
744
  */
745
745
 
746
746
 
747
- const __iconNode$c = [
747
+ const __iconNode$f = [
748
748
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
749
749
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
750
750
  ];
751
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$c);
751
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$f);
752
752
 
753
753
  /**
754
754
  * @license lucide-react v1.16.0 - ISC
@@ -758,12 +758,12 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$c);
758
758
  */
759
759
 
760
760
 
761
- const __iconNode$b = [
761
+ const __iconNode$e = [
762
762
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
763
763
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
764
764
  ["path", { d: "M12 17h.01", key: "p32p05" }]
765
765
  ];
766
- const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$b);
766
+ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$e);
767
767
 
768
768
  /**
769
769
  * @license lucide-react v1.16.0 - ISC
@@ -773,12 +773,12 @@ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$b
773
773
  */
774
774
 
775
775
 
776
- const __iconNode$a = [
776
+ const __iconNode$d = [
777
777
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
778
778
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
779
779
  ["path", { d: "M15 3v18", key: "14nvp0" }]
780
780
  ];
781
- const Columns3 = createLucideIcon("columns-3", __iconNode$a);
781
+ const Columns3 = createLucideIcon("columns-3", __iconNode$d);
782
782
 
783
783
  /**
784
784
  * @license lucide-react v1.16.0 - ISC
@@ -788,12 +788,12 @@ const Columns3 = createLucideIcon("columns-3", __iconNode$a);
788
788
  */
789
789
 
790
790
 
791
- const __iconNode$9 = [
791
+ const __iconNode$c = [
792
792
  ["path", { d: "M2 5h20", key: "1fs1ex" }],
793
793
  ["path", { d: "M6 12h12", key: "8npq4p" }],
794
794
  ["path", { d: "M9 19h6", key: "456am0" }]
795
795
  ];
796
- const ListFilter = createLucideIcon("list-filter", __iconNode$9);
796
+ const ListFilter = createLucideIcon("list-filter", __iconNode$c);
797
797
 
798
798
  /**
799
799
  * @license lucide-react v1.16.0 - ISC
@@ -803,8 +803,8 @@ const ListFilter = createLucideIcon("list-filter", __iconNode$9);
803
803
  */
804
804
 
805
805
 
806
- const __iconNode$8 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
807
- const Minus = createLucideIcon("minus", __iconNode$8);
806
+ const __iconNode$b = [["path", { d: "M5 12h14", key: "1ays0h" }]];
807
+ const Minus = createLucideIcon("minus", __iconNode$b);
808
808
 
809
809
  /**
810
810
  * @license lucide-react v1.16.0 - ISC
@@ -814,12 +814,12 @@ const Minus = createLucideIcon("minus", __iconNode$8);
814
814
  */
815
815
 
816
816
 
817
- const __iconNode$7 = [
817
+ const __iconNode$a = [
818
818
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
819
819
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
820
820
  ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
821
821
  ];
822
- const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$7);
822
+ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$a);
823
823
 
824
824
  /**
825
825
  * @license lucide-react v1.16.0 - ISC
@@ -829,12 +829,12 @@ const PanelLeftClose = createLucideIcon("panel-left-close", __iconNode$7);
829
829
  */
830
830
 
831
831
 
832
- const __iconNode$6 = [
832
+ const __iconNode$9 = [
833
833
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
834
834
  ["path", { d: "M9 3v18", key: "fh3hqa" }],
835
835
  ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }]
836
836
  ];
837
- const PanelLeftOpen = createLucideIcon("panel-left-open", __iconNode$6);
837
+ const PanelLeftOpen = createLucideIcon("panel-left-open", __iconNode$9);
838
838
 
839
839
  /**
840
840
  * @license lucide-react v1.16.0 - ISC
@@ -844,11 +844,11 @@ const PanelLeftOpen = createLucideIcon("panel-left-open", __iconNode$6);
844
844
  */
845
845
 
846
846
 
847
- const __iconNode$5 = [
847
+ const __iconNode$8 = [
848
848
  ["path", { d: "M5 12h14", key: "1ays0h" }],
849
849
  ["path", { d: "M12 5v14", key: "s699le" }]
850
850
  ];
851
- const Plus = createLucideIcon("plus", __iconNode$5);
851
+ const Plus = createLucideIcon("plus", __iconNode$8);
852
852
 
853
853
  /**
854
854
  * @license lucide-react v1.16.0 - ISC
@@ -858,11 +858,52 @@ const Plus = createLucideIcon("plus", __iconNode$5);
858
858
  */
859
859
 
860
860
 
861
- const __iconNode$4 = [
861
+ const __iconNode$7 = [
862
862
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
863
863
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
864
864
  ];
865
- const Search = createLucideIcon("search", __iconNode$4);
865
+ const Search = createLucideIcon("search", __iconNode$7);
866
+
867
+ /**
868
+ * @license lucide-react v1.16.0 - ISC
869
+ *
870
+ * This source code is licensed under the ISC license.
871
+ * See the LICENSE file in the root directory of this source tree.
872
+ */
873
+
874
+
875
+ const __iconNode$6 = [
876
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
877
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
878
+ ];
879
+ const SquareCheck = createLucideIcon("square-check", __iconNode$6);
880
+
881
+ /**
882
+ * @license lucide-react v1.16.0 - ISC
883
+ *
884
+ * This source code is licensed under the ISC license.
885
+ * See the LICENSE file in the root directory of this source tree.
886
+ */
887
+
888
+
889
+ const __iconNode$5 = [
890
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
891
+ ["path", { d: "M8 12h8", key: "1wcyev" }]
892
+ ];
893
+ const SquareMinus = createLucideIcon("square-minus", __iconNode$5);
894
+
895
+ /**
896
+ * @license lucide-react v1.16.0 - ISC
897
+ *
898
+ * This source code is licensed under the ISC license.
899
+ * See the LICENSE file in the root directory of this source tree.
900
+ */
901
+
902
+
903
+ const __iconNode$4 = [
904
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
905
+ ];
906
+ const Square = createLucideIcon("square", __iconNode$4);
866
907
 
867
908
  /**
868
909
  * @license lucide-react v1.16.0 - ISC
@@ -1731,20 +1772,6 @@ const NeoCard = (props) => {
1731
1772
  };
1732
1773
  NeoCard.displayName = 'NeoCard';
1733
1774
 
1734
- // Border radius per size (from Figma)
1735
- const borderRadiusConfig = {
1736
- xs: 2,
1737
- small: 3,
1738
- medium: 4,
1739
- };
1740
- // Unchecked: Rounded square outline (20x20 viewBox)
1741
- const UncheckedIcon$1 = ({ size = 'medium' }) => (jsx(SvgIcon, { viewBox: "0 0 20 20", children: jsx("rect", { x: "1", y: "1", width: "18", height: "18", rx: borderRadiusConfig[size], fill: "none", stroke: "currentColor", strokeWidth: "1.5" }) }));
1742
- // Checked: Filled rounded square with white checkmark
1743
- // Path scaled from Untitled UI 24x24 (M20 6L9 17L4 12) to 20x20
1744
- const CheckedIcon$1 = ({ size = 'medium' }) => (jsxs(SvgIcon, { viewBox: "0 0 20 20", children: [jsx("rect", { width: "20", height: "20", rx: borderRadiusConfig[size], fill: "currentColor" }), jsx("path", { d: "M15 6L8.5 13L5 9.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] }));
1745
- // Indeterminate: Filled rounded square with white minus
1746
- // Path scaled from Untitled UI 24x24 (M5 12H19) to 20x20
1747
- const IndeterminateIcon = ({ size = 'medium' }) => (jsxs(SvgIcon, { viewBox: "0 0 20 20", children: [jsx("rect", { width: "20", height: "20", rx: borderRadiusConfig[size], fill: "currentColor" }), jsx("path", { d: "M5 10H15", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", fill: "none" })] }));
1748
1775
  const CheckboxContainer = styled('label')(({ disabled }) => ({
1749
1776
  display: 'inline-flex',
1750
1777
  alignItems: 'flex-start',
@@ -1777,7 +1804,7 @@ const HelperText$2 = styled('span')(({ theme, size = 'medium' }) => ({
1777
1804
  lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,
1778
1805
  color: semanticColors.typography.bodySecondary,
1779
1806
  }));
1780
- // Figma-exact border radius for xs checkbox — no matching design token
1807
+ // xs focus-ring radius — no matching design token (box corner comes from the icon)
1781
1808
  const FIGMA_XS_BORDER_RADIUS = 1;
1782
1809
  const StyledCheckbox = styled(Checkbox, {
1783
1810
  shouldForwardProp: prop => prop !== 'size',
@@ -1790,11 +1817,11 @@ const StyledCheckbox = styled(Checkbox, {
1790
1817
  },
1791
1818
  small: {
1792
1819
  size: 16,
1793
- borderRadius: borderRadius.xXS, // From Figma: 2px for small
1820
+ borderRadius: borderRadius.xXS, // focus-ring radius (small)
1794
1821
  },
1795
1822
  medium: {
1796
1823
  size: 20,
1797
- borderRadius: borderRadius.xS, // From Figma: 4px for medium
1824
+ borderRadius: borderRadius.xS, // focus-ring radius (medium)
1798
1825
  },
1799
1826
  };
1800
1827
  const config = sizeConfig[size];
@@ -1806,37 +1833,30 @@ const StyledCheckbox = styled(Checkbox, {
1806
1833
  color: semanticColors.border.primary,
1807
1834
  borderRadius: config.borderRadius,
1808
1835
  flexShrink: 0,
1809
- // Root element
1810
- [`&.${checkboxClasses.root}`]: {
1811
- '&:hover': {
1812
- backgroundColor: 'transparent',
1813
- },
1836
+ // Suppress MUI's grey hover background
1837
+ '&:hover': {
1838
+ backgroundColor: 'transparent',
1814
1839
  },
1815
- // Checkbox icon (unchecked)
1816
- [`& .${checkboxClasses.root}`]: {
1817
- width: config.size,
1818
- height: config.size,
1840
+ // Hover on the unchecked box — subtle blue outline affordance (enabled only)
1841
+ [`&:hover:not(.${checkboxClasses.checked}):not(.${checkboxClasses.indeterminate}):not(.${checkboxClasses.disabled})`]: {
1842
+ color: colors.digitalBlue[300],
1819
1843
  },
1820
- // Checked state
1844
+ // Checked / Indeterminate — primary blue outline + mark
1821
1845
  [`&.${checkboxClasses.checked}`]: {
1822
- color: semanticColors.buttons.primary.default,
1846
+ color: colors.digitalBlue[600],
1823
1847
  },
1824
- // Indeterminate state
1825
1848
  [`&.${checkboxClasses.indeterminate}`]: {
1826
- color: semanticColors.buttons.primary.default,
1849
+ color: colors.digitalBlue[600],
1827
1850
  },
1828
- // Disabled state
1851
+ // Disabled — enabled colors dimmed to 40%. Checked/indeterminate keep
1852
+ // digitalBlue[600] via the rules above; re-assert the unchecked outline
1853
+ // token so it beats MUI's default `.Mui-disabled` color.
1829
1854
  [`&.${checkboxClasses.disabled}`]: {
1830
- color: semanticColors.border.primary,
1855
+ opacity: 0.4,
1831
1856
  cursor: 'not-allowed',
1832
- // When checked and disabled
1833
- [`&.${checkboxClasses.checked}`]: {
1834
- color: semanticColors.border.primary,
1835
- },
1836
- // When indeterminate and disabled
1837
- [`&.${checkboxClasses.indeterminate}`]: {
1838
- color: semanticColors.border.primary,
1839
- },
1857
+ },
1858
+ [`&.${checkboxClasses.disabled}:not(.${checkboxClasses.checked}):not(.${checkboxClasses.indeterminate})`]: {
1859
+ color: semanticColors.border.primary,
1840
1860
  },
1841
1861
  // Focus visible for keyboard navigation
1842
1862
  '&.Mui-focusVisible': {
@@ -1844,11 +1864,10 @@ const StyledCheckbox = styled(Checkbox, {
1844
1864
  outlineOffset: 2,
1845
1865
  borderRadius: config.borderRadius,
1846
1866
  },
1847
- // Custom SVG icons
1867
+ // Size the Lucide icon (color comes from `color` → currentColor → stroke)
1848
1868
  '& svg': {
1849
1869
  width: config.size,
1850
1870
  height: config.size,
1851
- fill: 'currentColor',
1852
1871
  },
1853
1872
  };
1854
1873
  });
@@ -1899,10 +1918,10 @@ const StyledCheckbox = styled(Checkbox, {
1899
1918
  const NeoCheckbox = ({ size = 'medium', label, helperText, disabled, icon, checkedIcon, indeterminateIcon, className, ...props }) => {
1900
1919
  // Add custom class to identify NeoCheckbox instances
1901
1920
  const combinedClassName = className ? `neo-checkbox ${className}` : 'neo-checkbox';
1902
- // Create size-specific icons
1903
- const defaultIcon = icon || jsx(UncheckedIcon$1, { size: size });
1904
- const defaultCheckedIcon = checkedIcon || jsx(CheckedIcon$1, { size: size });
1905
- const defaultIndeterminateIcon = indeterminateIcon || jsx(IndeterminateIcon, { size: size });
1921
+ // Default icons (sized via CSS on the SVG); overridable per instance
1922
+ const defaultIcon = icon || jsx(Square, {});
1923
+ const defaultCheckedIcon = checkedIcon || jsx(SquareCheck, {});
1924
+ const defaultIndeterminateIcon = indeterminateIcon || jsx(SquareMinus, {});
1906
1925
  // If no label, return just the checkbox
1907
1926
  if (!label && !helperText) {
1908
1927
  return (jsx(StyledCheckbox, { size: size, disabled: disabled, icon: defaultIcon, checkedIcon: defaultCheckedIcon, indeterminateIcon: defaultIndeterminateIcon, className: combinedClassName, ...props }));
@@ -2762,11 +2781,13 @@ function NeoDataGrid({ autoHeight = false, toolbar, slots, sx, density = 'standa
2762
2781
  ...getDataGridHeaderStyles(),
2763
2782
  ...getDataGridRowStyles(),
2764
2783
  border: `1px solid ${semanticColors.border.secondary}`,
2765
- // Style row selection checkboxes to match header (16px, proper spacing)
2784
+ // Style row selection checkboxes to match header (16px, proper spacing).
2785
+ // Target `& svg` (not `.MuiSvgIcon-root`) so the rule also matches the
2786
+ // lucide `<svg>` icons NeoCheckbox renders, mirroring the header rule.
2766
2787
  [`& .${gridClasses.cellCheckbox}`]: {
2767
2788
  [`& .${checkboxClasses.root}`]: {
2768
2789
  padding: `${spacing.spacing_1}px`,
2769
- [`& .${svgIconClasses.root}`]: {
2790
+ '& svg': {
2770
2791
  width: 16,
2771
2792
  height: 16,
2772
2793
  },
@@ -6297,6 +6318,9 @@ const NeoRipplingDot = props => (jsx(Box$1, { "aria-hidden": "true", ...props, s
6297
6318
  borderRadius: '50%',
6298
6319
  border: '1px solid currentColor',
6299
6320
  animation: `${ripple} 5.6s ease-in-out infinite`,
6321
+ '@media (prefers-reduced-motion: reduce)': {
6322
+ display: 'none',
6323
+ },
6300
6324
  },
6301
6325
  ...props.sx,
6302
6326
  } }));
@@ -7409,6 +7433,9 @@ const NeoVibratingDot = props => (jsx(Box$1, { "aria-hidden": "true", ...props,
7409
7433
  verticalAlign: 'middle',
7410
7434
  flexShrink: 0,
7411
7435
  animation: `${vibrate} 5.6s ease-in-out infinite`,
7436
+ '@media (prefers-reduced-motion: reduce)': {
7437
+ animation: 'none',
7438
+ },
7412
7439
  ...props.sx,
7413
7440
  } }));
7414
7441
  NeoVibratingDot.displayName = 'NeoVibratingDot';