@moto-nrw/design-system 0.5.0 → 0.5.2

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/index.js CHANGED
@@ -605,10 +605,35 @@ function Input({ label, error, id, name, type = "text", className, ...props }) {
605
605
  ] });
606
606
  }
607
607
 
608
+ // src/components/ListItem/ListItem.tsx
609
+ import { jsx as jsx12 } from "react/jsx-runtime";
610
+ function ListItem({
611
+ active = false,
612
+ onClick,
613
+ children,
614
+ className,
615
+ ...props
616
+ }) {
617
+ return /* @__PURE__ */ jsx12(
618
+ "button",
619
+ {
620
+ type: "button",
621
+ onClick,
622
+ className: cn(
623
+ "flex w-full cursor-pointer items-center gap-3 rounded-xl px-3 py-3 text-left transition-all",
624
+ active ? "border border-[var(--semantic-color-border-default)] bg-[var(--semantic-color-bg-subtle)]" : "border border-transparent hover:bg-[var(--semantic-color-bg-subtle)]",
625
+ className
626
+ ),
627
+ ...props,
628
+ children
629
+ }
630
+ );
631
+ }
632
+
608
633
  // src/components/Logo/Logo.tsx
609
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
634
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
610
635
  function Logo({ size = 48, ...props }) {
611
- return /* @__PURE__ */ jsx12(
636
+ return /* @__PURE__ */ jsx13(
612
637
  "svg",
613
638
  {
614
639
  width: size,
@@ -618,28 +643,28 @@ function Logo({ size = 48, ...props }) {
618
643
  "aria-label": "Ganztagshelden Logo",
619
644
  ...props,
620
645
  children: /* @__PURE__ */ jsxs10("g", { transform: "matrix(1.62384,0,0,1.62384,-670.097018,-377.993255)", children: [
621
- /* @__PURE__ */ jsx12(
646
+ /* @__PURE__ */ jsx13(
622
647
  "path",
623
648
  {
624
649
  d: "M659.306,666.563C647.321,692.452 643.608,697.805 636.105,707.186C597.15,755.887 537.182,756.845 535.652,756.159C520.635,749.432 541.639,734.294 543.087,720.432C546.681,686.029 515.354,694.397 490.973,657.204C474.084,631.441 470.729,569.063 491.533,580.44C566.83,621.619 610.108,565.941 697.497,581.514C795.809,599.034 828.378,545.138 873.613,499.611C886.943,486.194 921.218,489.412 905.57,533.525C884.114,594.015 824.679,638.112 824.916,640.467C825.254,643.83 825.708,647.181 826.036,650.545C841.184,805.69 775.341,869.784 748.516,842.485C733.986,827.697 766.215,763.869 753.18,746.69C742.331,732.393 727.791,767.884 690.115,801.076C617.879,864.714 605.932,819.074 607.847,805.541C609.887,791.128 663.09,752.991 674.077,688.423C677.562,667.944 669.794,667.148 667.332,663.505C665.729,661.133 659.929,665.972 659.306,666.563Z",
625
650
  fill: "var(--color-steel-800, #1E293B)"
626
651
  }
627
652
  ),
628
- /* @__PURE__ */ jsx12(
653
+ /* @__PURE__ */ jsx13(
629
654
  "path",
630
655
  {
631
656
  d: "M675.584,684.76C676.835,613.868 598.89,738.438 567.488,699.03C544.801,670.559 676.869,576.383 715.532,582.995C744.492,587.948 775.313,577.886 789.684,572.171C791.809,570.862 793.873,569.676 795.866,568.627C814.646,558.742 857.526,515.802 873.613,499.611C886.943,486.194 921.218,489.412 905.57,533.525C884.114,594.015 824.679,638.112 824.916,640.467C825.254,643.83 825.708,647.181 826.036,650.545C841.184,805.69 775.341,869.784 748.516,842.485C733.986,827.697 766.215,763.869 753.18,746.69C742.331,732.393 727.791,767.884 690.115,801.076C617.879,864.714 605.932,819.074 607.847,805.541C609.887,791.128 663.09,752.991 674.077,688.423C674.245,687.434 674.757,686.206 675.584,684.76Z",
632
657
  fill: "var(--color-steel-500, #64748B)"
633
658
  }
634
659
  ),
635
- /* @__PURE__ */ jsx12(
660
+ /* @__PURE__ */ jsx13(
636
661
  "path",
637
662
  {
638
663
  d: "M460.76,425.665C465.048,418.094 676.602,255.297 689.716,245.799C722.985,221.705 734.948,230.838 791.173,274.938C956.769,404.821 957.228,404.054 971.138,415.929C994.202,435.618 980.079,457.145 973.404,463.396C950.46,484.884 936.954,468.134 867.775,414.13C729.691,306.338 729.459,303.94 718.557,304.907C707.569,305.88 567.819,420.024 512.203,461.094C468.741,493.188 448.741,446.89 460.76,425.665Z",
639
664
  fill: "var(--color-steel-600, #475569)"
640
665
  }
641
666
  ),
642
- /* @__PURE__ */ jsx12(
667
+ /* @__PURE__ */ jsx13(
643
668
  "path",
644
669
  {
645
670
  d: "M706.539,565.374C599.871,517.702 661.839,386.507 747.483,403.592C856.658,425.371 827.324,597.116 706.539,565.374Z",
@@ -654,7 +679,7 @@ function Logo({ size = 48, ...props }) {
654
679
  // src/components/Modal/Modal.tsx
655
680
  import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
656
681
  import { createPortal as createPortal2 } from "react-dom";
657
- import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
682
+ import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
658
683
  function Modal({ isOpen, onClose, title, children, footer }) {
659
684
  const [isAnimating, setIsAnimating] = useState4(false);
660
685
  const [isExiting, setIsExiting] = useState4(false);
@@ -689,7 +714,7 @@ function Modal({ isOpen, onClose, title, children, footer }) {
689
714
  const entering = isAnimating && !isExiting;
690
715
  const idle = !isAnimating && !isExiting;
691
716
  const modalContent = /* @__PURE__ */ jsxs11("div", { className: "fixed inset-0 z-[var(--modal-z-index)] flex items-center justify-center", children: [
692
- /* @__PURE__ */ jsx13(
717
+ /* @__PURE__ */ jsx14(
693
718
  "button",
694
719
  {
695
720
  type: "button",
@@ -715,10 +740,10 @@ function Modal({ isOpen, onClose, title, children, footer }) {
715
740
  "aria-label": title || void 0,
716
741
  children: [
717
742
  title ? /* @__PURE__ */ jsxs11("div", { className: "flex items-center justify-between px-[var(--modal-padding-x)] py-[var(--modal-padding-y)] border-b border-[var(--semantic-color-border-subtle)]", children: [
718
- /* @__PURE__ */ jsx13("h3", { className: "font-sans text-lg font-semibold text-[var(--semantic-color-text-default)] m-0 pr-4", children: title }),
719
- /* @__PURE__ */ jsx13(CloseButton, { onClick: handleClose })
720
- ] }) : /* @__PURE__ */ jsx13("div", { className: "absolute top-4 right-4 z-10", children: /* @__PURE__ */ jsx13(CloseButton, { onClick: handleClose }) }),
721
- /* @__PURE__ */ jsx13(
743
+ /* @__PURE__ */ jsx14("h3", { className: "font-sans text-lg font-semibold text-[var(--semantic-color-text-default)] m-0 pr-4", children: title }),
744
+ /* @__PURE__ */ jsx14(CloseButton, { onClick: handleClose })
745
+ ] }) : /* @__PURE__ */ jsx14("div", { className: "absolute top-4 right-4 z-10", children: /* @__PURE__ */ jsx14(CloseButton, { onClick: handleClose }) }),
746
+ /* @__PURE__ */ jsx14(
722
747
  "div",
723
748
  {
724
749
  className: cn(
@@ -728,7 +753,7 @@ function Modal({ isOpen, onClose, title, children, footer }) {
728
753
  children
729
754
  }
730
755
  ),
731
- footer && /* @__PURE__ */ jsx13("div", { className: "flex justify-end gap-3 px-[var(--modal-padding-x)] py-[var(--modal-padding-y)] border-t border-[var(--semantic-color-border-subtle)] bg-[var(--modal-footer-bg)]", children: footer })
756
+ footer && /* @__PURE__ */ jsx14("div", { className: "flex justify-end gap-3 px-[var(--modal-padding-x)] py-[var(--modal-padding-y)] border-t border-[var(--semantic-color-border-subtle)] bg-[var(--modal-footer-bg)]", children: footer })
732
757
  ]
733
758
  }
734
759
  )
@@ -751,7 +776,7 @@ function ConfirmationModal({
751
776
  variant = "primary"
752
777
  }) {
753
778
  const footer = /* @__PURE__ */ jsxs11(Fragment2, { children: [
754
- /* @__PURE__ */ jsx13(
779
+ /* @__PURE__ */ jsx14(
755
780
  "button",
756
781
  {
757
782
  type: "button",
@@ -760,7 +785,7 @@ function ConfirmationModal({
760
785
  children: cancelText
761
786
  }
762
787
  ),
763
- /* @__PURE__ */ jsx13(
788
+ /* @__PURE__ */ jsx14(
764
789
  "button",
765
790
  {
766
791
  type: "button",
@@ -778,8 +803,8 @@ function ConfirmationModal({
778
803
  fill: "none",
779
804
  viewBox: "0 0 24 24",
780
805
  children: [
781
- /* @__PURE__ */ jsx13("circle", { opacity: 0.25, cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
782
- /* @__PURE__ */ jsx13(
806
+ /* @__PURE__ */ jsx14("circle", { opacity: 0.25, cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
807
+ /* @__PURE__ */ jsx14(
783
808
  "path",
784
809
  {
785
810
  opacity: 0.75,
@@ -795,17 +820,17 @@ function ConfirmationModal({
795
820
  }
796
821
  )
797
822
  ] });
798
- return /* @__PURE__ */ jsx13(Modal, { isOpen, onClose, title, footer, children });
823
+ return /* @__PURE__ */ jsx14(Modal, { isOpen, onClose, title, footer, children });
799
824
  }
800
825
  function CloseButton({ onClick }) {
801
- return /* @__PURE__ */ jsx13(
826
+ return /* @__PURE__ */ jsx14(
802
827
  "button",
803
828
  {
804
829
  type: "button",
805
830
  onClick,
806
831
  className: "group flex items-center justify-center shrink-0 size-[var(--modal-close-size)] p-0 border-none rounded-lg bg-transparent text-[var(--semantic-color-text-muted)] cursor-pointer transition-all duration-[var(--duration-fast)] hover:bg-[var(--semantic-color-bg-muted)] hover:text-[var(--semantic-color-text-default)] hover:scale-105 active:scale-95",
807
832
  "aria-label": "Modal schlie\xDFen",
808
- children: /* @__PURE__ */ jsx13(
833
+ children: /* @__PURE__ */ jsx14(
809
834
  "svg",
810
835
  {
811
836
  className: "transition-transform duration-[var(--duration-fast)] group-hover:rotate-90",
@@ -815,7 +840,7 @@ function CloseButton({ onClick }) {
815
840
  viewBox: "0 0 24 24",
816
841
  stroke: "currentColor",
817
842
  strokeWidth: 2,
818
- children: /* @__PURE__ */ jsx13("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
843
+ children: /* @__PURE__ */ jsx14("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
819
844
  }
820
845
  )
821
846
  }
@@ -823,7 +848,7 @@ function CloseButton({ onClick }) {
823
848
  }
824
849
 
825
850
  // src/components/Pill/Pill.tsx
826
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
851
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
827
852
  var solidStyles = {
828
853
  red: "bg-[var(--semantic-color-feedback-error-strong)] text-[var(--semantic-color-text-inverse)]",
829
854
  green: "bg-[var(--semantic-color-brand-primary)] text-[var(--semantic-color-text-inverse)]",
@@ -870,7 +895,7 @@ function Pill({
870
895
  ),
871
896
  ...props,
872
897
  children: [
873
- dot && /* @__PURE__ */ jsx14("span", { className: cn("rounded-full bg-current opacity-80", dotSizes[size]) }),
898
+ dot && /* @__PURE__ */ jsx15("span", { className: cn("rounded-full bg-current opacity-80", dotSizes[size]) }),
874
899
  label
875
900
  ]
876
901
  }
@@ -878,7 +903,7 @@ function Pill({
878
903
  }
879
904
 
880
905
  // src/components/Radio/Radio.tsx
881
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
906
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
882
907
  function Radio({ label, id, name, className, ...props }) {
883
908
  const inputId = id || `${name}-${label.toLowerCase().replace(/\s+/g, "-")}`;
884
909
  return /* @__PURE__ */ jsxs13(
@@ -890,7 +915,7 @@ function Radio({ label, id, name, className, ...props }) {
890
915
  className
891
916
  ),
892
917
  children: [
893
- /* @__PURE__ */ jsx15(
918
+ /* @__PURE__ */ jsx16(
894
919
  "input",
895
920
  {
896
921
  type: "radio",
@@ -900,14 +925,14 @@ function Radio({ label, id, name, className, ...props }) {
900
925
  ...props
901
926
  }
902
927
  ),
903
- /* @__PURE__ */ jsx15("span", { className: "font-sans text-sm text-[var(--semantic-color-text-default)] select-none", children: label })
928
+ /* @__PURE__ */ jsx16("span", { className: "font-sans text-sm text-[var(--semantic-color-text-default)] select-none", children: label })
904
929
  ]
905
930
  }
906
931
  );
907
932
  }
908
933
 
909
934
  // src/components/SearchBar/SearchBar.tsx
910
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
935
+ import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
911
936
  var sizeStyles5 = {
912
937
  sm: "py-2 pl-9 pr-3 text-sm",
913
938
  md: "py-2.5 pl-9 pr-10 text-sm",
@@ -928,7 +953,7 @@ function SearchBar({
928
953
  ...props
929
954
  }) {
930
955
  return /* @__PURE__ */ jsxs14("div", { className: cn("relative", className), children: [
931
- /* @__PURE__ */ jsx16(
956
+ /* @__PURE__ */ jsx17(
932
957
  "svg",
933
958
  {
934
959
  className: cn(
@@ -938,7 +963,7 @@ function SearchBar({
938
963
  fill: "none",
939
964
  viewBox: "0 0 24 24",
940
965
  stroke: "currentColor",
941
- children: /* @__PURE__ */ jsx16(
966
+ children: /* @__PURE__ */ jsx17(
942
967
  "path",
943
968
  {
944
969
  strokeLinecap: "round",
@@ -949,7 +974,7 @@ function SearchBar({
949
974
  )
950
975
  }
951
976
  ),
952
- /* @__PURE__ */ jsx16(
977
+ /* @__PURE__ */ jsx17(
953
978
  "input",
954
979
  {
955
980
  type: "text",
@@ -965,7 +990,7 @@ function SearchBar({
965
990
  ...props
966
991
  }
967
992
  ),
968
- value && /* @__PURE__ */ jsx16(
993
+ value && /* @__PURE__ */ jsx17(
969
994
  "button",
970
995
  {
971
996
  type: "button",
@@ -974,14 +999,14 @@ function SearchBar({
974
999
  onClear?.();
975
1000
  },
976
1001
  className: "absolute top-1/2 right-2 -translate-y-1/2 flex items-center justify-center p-1 border-none rounded-full bg-transparent cursor-pointer transition-colors duration-[var(--duration-fast)] hover:bg-[var(--semantic-color-bg-muted)]",
977
- children: /* @__PURE__ */ jsx16(
1002
+ children: /* @__PURE__ */ jsx17(
978
1003
  "svg",
979
1004
  {
980
1005
  className: cn("text-[var(--semantic-color-text-muted)]", iconSizes[size]),
981
1006
  fill: "none",
982
1007
  viewBox: "0 0 24 24",
983
1008
  stroke: "currentColor",
984
- children: /* @__PURE__ */ jsx16(
1009
+ children: /* @__PURE__ */ jsx17(
985
1010
  "path",
986
1011
  {
987
1012
  strokeLinecap: "round",
@@ -998,11 +1023,11 @@ function SearchBar({
998
1023
  }
999
1024
 
1000
1025
  // src/components/Select/Select.tsx
1001
- import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
1026
+ import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
1002
1027
  function Select({ label, placeholder, options, id, className, ...props }) {
1003
1028
  const selectId = id || (label ? label.toLowerCase().replace(/\s+/g, "-") : void 0);
1004
1029
  return /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1", children: [
1005
- label && /* @__PURE__ */ jsx17(
1030
+ label && /* @__PURE__ */ jsx18(
1006
1031
  "label",
1007
1032
  {
1008
1033
  htmlFor: selectId,
@@ -1023,17 +1048,17 @@ function Select({ label, placeholder, options, id, className, ...props }) {
1023
1048
  ),
1024
1049
  ...props,
1025
1050
  children: [
1026
- placeholder && /* @__PURE__ */ jsx17("option", { value: "", disabled: props.required, children: placeholder }),
1027
- options.map((option) => /* @__PURE__ */ jsx17("option", { value: option.value, disabled: option.disabled, children: option.label }, option.value))
1051
+ placeholder && /* @__PURE__ */ jsx18("option", { value: "", disabled: props.required, children: placeholder }),
1052
+ options.map((option) => /* @__PURE__ */ jsx18("option", { value: option.value, disabled: option.disabled, children: option.label }, option.value))
1028
1053
  ]
1029
1054
  }
1030
1055
  ),
1031
- /* @__PURE__ */ jsx17(
1056
+ /* @__PURE__ */ jsx18(
1032
1057
  "div",
1033
1058
  {
1034
1059
  className: "absolute top-0 right-0 bottom-0 flex items-center pr-3 text-[var(--semantic-color-text-muted)] pointer-events-none",
1035
1060
  "aria-hidden": "true",
1036
- children: /* @__PURE__ */ jsx17("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ jsx17("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
1061
+ children: /* @__PURE__ */ jsx18("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ jsx18("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
1037
1062
  }
1038
1063
  )
1039
1064
  ] })
@@ -1041,7 +1066,7 @@ function Select({ label, placeholder, options, id, className, ...props }) {
1041
1066
  }
1042
1067
 
1043
1068
  // src/components/Skeleton/Skeleton.tsx
1044
- import { jsx as jsx18 } from "react/jsx-runtime";
1069
+ import { jsx as jsx19 } from "react/jsx-runtime";
1045
1070
  var skeletonClass = "animate-[wave_1.5s_ease-in-out_infinite] bg-[length:200%_100%] bg-[linear-gradient(90deg,var(--semantic-color-bg-muted)_25%,var(--semantic-color-bg-subtle)_50%,var(--semantic-color-bg-muted)_75%)]";
1046
1071
  function Skeleton({
1047
1072
  width,
@@ -1062,7 +1087,7 @@ function Skeleton({
1062
1087
  ...style
1063
1088
  };
1064
1089
  if (count === 1) {
1065
- return /* @__PURE__ */ jsx18(
1090
+ return /* @__PURE__ */ jsx19(
1066
1091
  "div",
1067
1092
  {
1068
1093
  className: cn(skeletonClass, className),
@@ -1072,11 +1097,11 @@ function Skeleton({
1072
1097
  }
1073
1098
  );
1074
1099
  }
1075
- return /* @__PURE__ */ jsx18("div", { className: "flex flex-col", style: { gap }, "aria-hidden": "true", ...props, children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx18("div", { className: cn(skeletonClass, className), style: itemStyle }, `skeleton-${i}`)) });
1100
+ return /* @__PURE__ */ jsx19("div", { className: "flex flex-col", style: { gap }, "aria-hidden": "true", ...props, children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx19("div", { className: cn(skeletonClass, className), style: itemStyle }, `skeleton-${i}`)) });
1076
1101
  }
1077
1102
 
1078
1103
  // src/components/Spinner/Spinner.tsx
1079
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
1104
+ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
1080
1105
  var sizes = { sm: 20, md: 32, lg: 48 };
1081
1106
  var strokes = { sm: 2.5, md: 3, lg: 3.5 };
1082
1107
  function Spinner({ size = "md", label, className, ...props }) {
@@ -1093,7 +1118,7 @@ function Spinner({ size = "md", label, className, ...props }) {
1093
1118
  viewBox: `0 0 ${s} ${s}`,
1094
1119
  className: "animate-[ds-spin_0.8s_cubic-bezier(0.4,0,0.2,1)_infinite]",
1095
1120
  children: [
1096
- /* @__PURE__ */ jsx19(
1121
+ /* @__PURE__ */ jsx20(
1097
1122
  "circle",
1098
1123
  {
1099
1124
  cx: s / 2,
@@ -1104,7 +1129,7 @@ function Spinner({ size = "md", label, className, ...props }) {
1104
1129
  strokeWidth: stroke
1105
1130
  }
1106
1131
  ),
1107
- /* @__PURE__ */ jsx19(
1132
+ /* @__PURE__ */ jsx20(
1108
1133
  "circle",
1109
1134
  {
1110
1135
  cx: s / 2,
@@ -1120,13 +1145,13 @@ function Spinner({ size = "md", label, className, ...props }) {
1120
1145
  ]
1121
1146
  }
1122
1147
  ),
1123
- label && /* @__PURE__ */ jsx19("p", { className: "m-0 font-sans text-sm text-[var(--semantic-color-text-muted)]", children: label }),
1124
- /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Laden..." })
1148
+ label && /* @__PURE__ */ jsx20("p", { className: "m-0 font-sans text-sm text-[var(--semantic-color-text-muted)]", children: label }),
1149
+ /* @__PURE__ */ jsx20("span", { className: "sr-only", children: "Laden..." })
1125
1150
  ] });
1126
1151
  }
1127
1152
 
1128
1153
  // src/components/StatusDot/StatusDot.tsx
1129
- import { jsx as jsx20 } from "react/jsx-runtime";
1154
+ import { jsx as jsx21 } from "react/jsx-runtime";
1130
1155
  var colorStyles = {
1131
1156
  green: "bg-[var(--semantic-color-feedback-success)]",
1132
1157
  yellow: "bg-[var(--semantic-color-feedback-warning)]",
@@ -1146,7 +1171,7 @@ function StatusDot({
1146
1171
  ...props
1147
1172
  }) {
1148
1173
  const shouldPulse = pulse ?? color === "green";
1149
- return /* @__PURE__ */ jsx20(
1174
+ return /* @__PURE__ */ jsx21(
1150
1175
  "div",
1151
1176
  {
1152
1177
  className: cn(
@@ -1164,7 +1189,7 @@ function StatusDot({
1164
1189
 
1165
1190
  // src/components/Tabs/Tabs.tsx
1166
1191
  import { useCallback as useCallback3, useEffect as useEffect3, useMemo, useRef as useRef3, useState as useState5 } from "react";
1167
- import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
1192
+ import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
1168
1193
  function Tabs({ items, activeTab, onTabChange, className }) {
1169
1194
  const tabRefs = useRef3([]);
1170
1195
  const scrollRef = useRef3(null);
@@ -1228,7 +1253,7 @@ function Tabs({ items, activeTab, onTabChange, className }) {
1228
1253
  };
1229
1254
  }, [updateScrollState, updateIndicator]);
1230
1255
  return /* @__PURE__ */ jsxs17("div", { className: cn("relative", className), children: [
1231
- showMobileDropdown && /* @__PURE__ */ jsx21(
1256
+ showMobileDropdown && /* @__PURE__ */ jsx22(
1232
1257
  MobileTabDropdown,
1233
1258
  {
1234
1259
  items,
@@ -1238,14 +1263,14 @@ function Tabs({ items, activeTab, onTabChange, className }) {
1238
1263
  }
1239
1264
  ),
1240
1265
  /* @__PURE__ */ jsxs17("div", { className: cn("relative", showMobileDropdown && "hidden md:block"), children: [
1241
- canScrollLeft && /* @__PURE__ */ jsx21("div", { className: "absolute top-0 bottom-0 left-0 z-10 w-6 bg-gradient-to-r from-[var(--semantic-color-bg-default)] to-transparent pointer-events-none" }),
1266
+ canScrollLeft && /* @__PURE__ */ jsx22("div", { className: "absolute top-0 bottom-0 left-0 z-10 w-6 bg-gradient-to-r from-[var(--semantic-color-bg-default)] to-transparent pointer-events-none" }),
1242
1267
  /* @__PURE__ */ jsxs17(
1243
1268
  "div",
1244
1269
  {
1245
1270
  ref: scrollRef,
1246
1271
  className: "relative flex gap-[var(--tabs-gap)] overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
1247
1272
  children: [
1248
- items.map((tab, index) => /* @__PURE__ */ jsx21(
1273
+ items.map((tab, index) => /* @__PURE__ */ jsx22(
1249
1274
  "button",
1250
1275
  {
1251
1276
  ref: (el) => {
@@ -1257,11 +1282,11 @@ function Tabs({ items, activeTab, onTabChange, className }) {
1257
1282
  "relative pb-3 border-none bg-transparent font-sans text-sm font-medium cursor-pointer transition-colors duration-[var(--duration-fast)] whitespace-nowrap",
1258
1283
  activeTab === tab.id ? "text-[var(--semantic-color-text-default)] font-semibold" : "text-[var(--semantic-color-text-muted)] hover:text-[var(--semantic-color-text-tertiary)]"
1259
1284
  ),
1260
- children: /* @__PURE__ */ jsx21("span", { className: "whitespace-nowrap", children: tab.label })
1285
+ children: /* @__PURE__ */ jsx22("span", { className: "whitespace-nowrap", children: tab.label })
1261
1286
  },
1262
1287
  tab.id
1263
1288
  )),
1264
- /* @__PURE__ */ jsx21(
1289
+ /* @__PURE__ */ jsx22(
1265
1290
  "div",
1266
1291
  {
1267
1292
  className: "absolute bottom-0 h-[var(--tabs-indicator-height)] rounded-full bg-[var(--semantic-color-text-default)] transition-[left,width] duration-[var(--duration-slow)] ease-out",
@@ -1274,7 +1299,7 @@ function Tabs({ items, activeTab, onTabChange, className }) {
1274
1299
  ]
1275
1300
  }
1276
1301
  ),
1277
- canScrollRight && /* @__PURE__ */ jsx21("div", { className: "absolute top-0 right-0 bottom-0 z-10 w-6 bg-gradient-to-l from-[var(--semantic-color-bg-default)] to-transparent pointer-events-none" })
1302
+ canScrollRight && /* @__PURE__ */ jsx22("div", { className: "absolute top-0 right-0 bottom-0 z-10 w-6 bg-gradient-to-l from-[var(--semantic-color-bg-default)] to-transparent pointer-events-none" })
1278
1303
  ] })
1279
1304
  ] });
1280
1305
  }
@@ -1306,8 +1331,8 @@ function MobileTabDropdown({
1306
1331
  isOpen && "bg-[var(--semantic-color-bg-subtle)]"
1307
1332
  ),
1308
1333
  children: [
1309
- /* @__PURE__ */ jsx21("span", { children: activeLabel }),
1310
- /* @__PURE__ */ jsx21(
1334
+ /* @__PURE__ */ jsx22("span", { children: activeLabel }),
1335
+ /* @__PURE__ */ jsx22(
1311
1336
  "svg",
1312
1337
  {
1313
1338
  className: cn(
@@ -1319,13 +1344,13 @@ function MobileTabDropdown({
1319
1344
  fill: "none",
1320
1345
  viewBox: "0 0 24 24",
1321
1346
  stroke: "currentColor",
1322
- children: /* @__PURE__ */ jsx21("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
1347
+ children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
1323
1348
  }
1324
1349
  )
1325
1350
  ]
1326
1351
  }
1327
1352
  ),
1328
- isOpen && /* @__PURE__ */ jsx21("div", { className: "absolute top-full left-0 z-[var(--tabs-mobile-z-index)] mt-1 min-w-48 border border-[var(--semantic-color-border-default)] rounded-lg bg-[var(--semantic-color-bg-default)] py-1 shadow-lg", children: items.map((item) => /* @__PURE__ */ jsx21(
1353
+ isOpen && /* @__PURE__ */ jsx22("div", { className: "absolute top-full left-0 z-[var(--tabs-mobile-z-index)] mt-1 min-w-48 border border-[var(--semantic-color-border-default)] rounded-lg bg-[var(--semantic-color-bg-default)] py-1 shadow-lg", children: items.map((item) => /* @__PURE__ */ jsx22(
1329
1354
  "button",
1330
1355
  {
1331
1356
  type: "button",
@@ -1345,11 +1370,11 @@ function MobileTabDropdown({
1345
1370
  }
1346
1371
 
1347
1372
  // src/components/Textarea/Textarea.tsx
1348
- import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
1373
+ import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
1349
1374
  function Textarea({ label, error, id, name, rows = 4, className, ...props }) {
1350
1375
  const textareaId = id || name;
1351
1376
  return /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-2", children: [
1352
- label && /* @__PURE__ */ jsx22(
1377
+ label && /* @__PURE__ */ jsx23(
1353
1378
  "label",
1354
1379
  {
1355
1380
  htmlFor: textareaId,
@@ -1357,7 +1382,7 @@ function Textarea({ label, error, id, name, rows = 4, className, ...props }) {
1357
1382
  children: label
1358
1383
  }
1359
1384
  ),
1360
- /* @__PURE__ */ jsx22(
1385
+ /* @__PURE__ */ jsx23(
1361
1386
  "textarea",
1362
1387
  {
1363
1388
  id: textareaId,
@@ -1376,7 +1401,7 @@ function Textarea({ label, error, id, name, rows = 4, className, ...props }) {
1376
1401
  ...props
1377
1402
  }
1378
1403
  ),
1379
- error && /* @__PURE__ */ jsx22(
1404
+ error && /* @__PURE__ */ jsx23(
1380
1405
  "p",
1381
1406
  {
1382
1407
  id: `${textareaId}-error`,
@@ -1390,7 +1415,7 @@ function Textarea({ label, error, id, name, rows = 4, className, ...props }) {
1390
1415
  // src/components/Toast/Toast.tsx
1391
1416
  import { useCallback as useCallback4, useEffect as useEffect4, useState as useState6 } from "react";
1392
1417
  import { createPortal as createPortal3 } from "react-dom";
1393
- import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1418
+ import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
1394
1419
  var typeStyles2 = {
1395
1420
  success: "border-l-[length:var(--toast-border-width)] border-l-[var(--semantic-color-feedback-success)]",
1396
1421
  error: "border-l-[length:var(--toast-border-width)] border-l-[var(--semantic-color-feedback-error)]",
@@ -1404,7 +1429,7 @@ var iconColors = {
1404
1429
  info: "text-[var(--semantic-color-feedback-info)]"
1405
1430
  };
1406
1431
  var icons2 = {
1407
- success: /* @__PURE__ */ jsx23(
1432
+ success: /* @__PURE__ */ jsx24(
1408
1433
  "svg",
1409
1434
  {
1410
1435
  width: "18",
@@ -1413,10 +1438,10 @@ var icons2 = {
1413
1438
  viewBox: "0 0 24 24",
1414
1439
  stroke: "currentColor",
1415
1440
  strokeWidth: 2,
1416
- children: /* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" })
1441
+ children: /* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" })
1417
1442
  }
1418
1443
  ),
1419
- error: /* @__PURE__ */ jsx23(
1444
+ error: /* @__PURE__ */ jsx24(
1420
1445
  "svg",
1421
1446
  {
1422
1447
  width: "18",
@@ -1425,10 +1450,10 @@ var icons2 = {
1425
1450
  viewBox: "0 0 24 24",
1426
1451
  stroke: "currentColor",
1427
1452
  strokeWidth: 2,
1428
- children: /* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
1453
+ children: /* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
1429
1454
  }
1430
1455
  ),
1431
- warning: /* @__PURE__ */ jsx23(
1456
+ warning: /* @__PURE__ */ jsx24(
1432
1457
  "svg",
1433
1458
  {
1434
1459
  width: "18",
@@ -1437,7 +1462,7 @@ var icons2 = {
1437
1462
  viewBox: "0 0 24 24",
1438
1463
  stroke: "currentColor",
1439
1464
  strokeWidth: 2,
1440
- children: /* @__PURE__ */ jsx23(
1465
+ children: /* @__PURE__ */ jsx24(
1441
1466
  "path",
1442
1467
  {
1443
1468
  strokeLinecap: "round",
@@ -1447,7 +1472,7 @@ var icons2 = {
1447
1472
  )
1448
1473
  }
1449
1474
  ),
1450
- info: /* @__PURE__ */ jsx23(
1475
+ info: /* @__PURE__ */ jsx24(
1451
1476
  "svg",
1452
1477
  {
1453
1478
  width: "18",
@@ -1456,7 +1481,7 @@ var icons2 = {
1456
1481
  viewBox: "0 0 24 24",
1457
1482
  stroke: "currentColor",
1458
1483
  strokeWidth: 2,
1459
- children: /* @__PURE__ */ jsx23(
1484
+ children: /* @__PURE__ */ jsx24(
1460
1485
  "path",
1461
1486
  {
1462
1487
  strokeLinecap: "round",
@@ -1482,7 +1507,7 @@ function Toast({ type = "info", message, duration = 4e3, onClose }) {
1482
1507
  if (exitTimer) clearTimeout(exitTimer);
1483
1508
  };
1484
1509
  }, [duration, dismiss]);
1485
- const content = /* @__PURE__ */ jsx23("div", { className: "fixed top-[var(--toast-position-top)] right-[var(--toast-position-right)] z-[var(--toast-z-index)] pointer-events-none", children: /* @__PURE__ */ jsxs19(
1510
+ const content = /* @__PURE__ */ jsx24("div", { className: "fixed top-[var(--toast-position-top)] right-[var(--toast-position-right)] z-[var(--toast-z-index)] pointer-events-none", children: /* @__PURE__ */ jsxs19(
1486
1511
  "div",
1487
1512
  {
1488
1513
  className: cn(
@@ -1491,16 +1516,16 @@ function Toast({ type = "info", message, duration = 4e3, onClose }) {
1491
1516
  isVisible && !isExiting ? "animate-[toastSlideIn_200ms_ease-out_both]" : "animate-[toastSlideOut_200ms_ease-in_both]"
1492
1517
  ),
1493
1518
  children: [
1494
- /* @__PURE__ */ jsx23("span", { className: cn("flex shrink-0", iconColors[type]), children: icons2[type] }),
1495
- /* @__PURE__ */ jsx23("span", { className: "flex-1 leading-[1.4]", children: message }),
1496
- /* @__PURE__ */ jsx23(
1519
+ /* @__PURE__ */ jsx24("span", { className: cn("flex shrink-0", iconColors[type]), children: icons2[type] }),
1520
+ /* @__PURE__ */ jsx24("span", { className: "flex-1 leading-[1.4]", children: message }),
1521
+ /* @__PURE__ */ jsx24(
1497
1522
  "button",
1498
1523
  {
1499
1524
  type: "button",
1500
1525
  onClick: dismiss,
1501
1526
  className: "flex shrink-0 p-0.5 border-none rounded-sm bg-transparent text-[var(--semantic-color-text-muted)] cursor-pointer transition-colors duration-[var(--duration-fast)] hover:text-[var(--semantic-color-text-default)]",
1502
1527
  "aria-label": "Schlie\xDFen",
1503
- children: /* @__PURE__ */ jsx23(
1528
+ children: /* @__PURE__ */ jsx24(
1504
1529
  "svg",
1505
1530
  {
1506
1531
  width: "14",
@@ -1509,7 +1534,7 @@ function Toast({ type = "info", message, duration = 4e3, onClose }) {
1509
1534
  viewBox: "0 0 24 24",
1510
1535
  stroke: "currentColor",
1511
1536
  strokeWidth: 2,
1512
- children: /* @__PURE__ */ jsx23("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
1537
+ children: /* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
1513
1538
  }
1514
1539
  )
1515
1540
  }
@@ -1524,7 +1549,7 @@ function Toast({ type = "info", message, duration = 4e3, onClose }) {
1524
1549
  }
1525
1550
 
1526
1551
  // src/components/Toggle/Toggle.tsx
1527
- import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
1552
+ import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
1528
1553
  var trackSizes = {
1529
1554
  sm: "w-[var(--toggle-sm-track-width)] h-[var(--toggle-sm-track-height)]",
1530
1555
  md: "w-[var(--toggle-md-track-width)] h-[var(--toggle-md-track-height)]"
@@ -1545,7 +1570,7 @@ function Toggle({ label, size = "md", id, name, className, ...props }) {
1545
1570
  htmlFor: inputId,
1546
1571
  className: cn("inline-flex items-center gap-2.5 cursor-pointer", className),
1547
1572
  children: [
1548
- /* @__PURE__ */ jsx24(
1573
+ /* @__PURE__ */ jsx25(
1549
1574
  "input",
1550
1575
  {
1551
1576
  type: "checkbox",
@@ -1555,7 +1580,7 @@ function Toggle({ label, size = "md", id, name, className, ...props }) {
1555
1580
  ...props
1556
1581
  }
1557
1582
  ),
1558
- /* @__PURE__ */ jsx24(
1583
+ /* @__PURE__ */ jsx25(
1559
1584
  "div",
1560
1585
  {
1561
1586
  className: cn(
@@ -1563,7 +1588,7 @@ function Toggle({ label, size = "md", id, name, className, ...props }) {
1563
1588
  trackSizes[size],
1564
1589
  thumbTranslate[size]
1565
1590
  ),
1566
- children: /* @__PURE__ */ jsx24(
1591
+ children: /* @__PURE__ */ jsx25(
1567
1592
  "div",
1568
1593
  {
1569
1594
  className: cn(
@@ -1574,7 +1599,7 @@ function Toggle({ label, size = "md", id, name, className, ...props }) {
1574
1599
  )
1575
1600
  }
1576
1601
  ),
1577
- label && /* @__PURE__ */ jsx24("span", { className: "font-sans text-sm text-[var(--semantic-color-text-default)] select-none", children: label })
1602
+ label && /* @__PURE__ */ jsx25("span", { className: "font-sans text-sm text-[var(--semantic-color-text-default)] select-none", children: label })
1578
1603
  ]
1579
1604
  }
1580
1605
  );
@@ -1593,6 +1618,7 @@ export {
1593
1618
  DropdownMenu,
1594
1619
  FilterChips,
1595
1620
  Input,
1621
+ ListItem,
1596
1622
  Logo,
1597
1623
  Modal,
1598
1624
  Pill,