@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.cjs +133 -106
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +110 -84
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
634
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
610
635
|
function Logo({ size = 48, ...props }) {
|
|
611
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
719
|
-
/* @__PURE__ */
|
|
720
|
-
] }) : /* @__PURE__ */
|
|
721
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
782
|
-
/* @__PURE__ */
|
|
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__ */
|
|
823
|
+
return /* @__PURE__ */ jsx14(Modal, { isOpen, onClose, title, footer, children });
|
|
799
824
|
}
|
|
800
825
|
function CloseButton({ onClick }) {
|
|
801
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
1027
|
-
options.map((option) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1124
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1285
|
+
children: /* @__PURE__ */ jsx22("span", { className: "whitespace-nowrap", children: tab.label })
|
|
1261
1286
|
},
|
|
1262
1287
|
tab.id
|
|
1263
1288
|
)),
|
|
1264
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1310
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
1441
|
+
children: /* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" })
|
|
1417
1442
|
}
|
|
1418
1443
|
),
|
|
1419
|
-
error: /* @__PURE__ */
|
|
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__ */
|
|
1453
|
+
children: /* @__PURE__ */ jsx24("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
|
|
1429
1454
|
}
|
|
1430
1455
|
),
|
|
1431
|
-
warning: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1495
|
-
/* @__PURE__ */
|
|
1496
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|