@sovereignfs/ui 0.37.0 → 0.41.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.
- package/dist/BalanceChip.module.css +32 -0
- package/dist/FileDropzone.module.css +63 -0
- package/dist/MemberMultiSelect.module.css +27 -0
- package/dist/index.d.ts +151 -3
- package/dist/index.js +630 -370
- package/package.json +1 -1
- package/src/components/BalanceChip/BalanceChip.module.css +32 -0
- package/src/components/BalanceChip/BalanceChip.stories.tsx +45 -0
- package/src/components/BalanceChip/BalanceChip.tsx +33 -0
- package/src/components/CurrencyInput/CurrencyInput.stories.tsx +50 -0
- package/src/components/CurrencyInput/CurrencyInput.tsx +60 -0
- package/src/components/FileDropzone/FileDropzone.module.css +63 -0
- package/src/components/FileDropzone/FileDropzone.tsx +109 -0
- package/src/components/FileDropzone/__tests__/FileDropzone.test.tsx +67 -0
- package/src/components/Icon/icons/external-link.tsx +22 -0
- package/src/components/Icon/icons/file.tsx +21 -0
- package/src/components/Icon/icons/index.ts +12 -0
- package/src/components/Icon/icons/upload.tsx +22 -0
- package/src/components/MemberMultiSelect/MemberMultiSelect.module.css +27 -0
- package/src/components/MemberMultiSelect/MemberMultiSelect.stories.tsx +74 -0
- package/src/components/MemberMultiSelect/MemberMultiSelect.tsx +67 -0
- package/src/components/SplitMethodSelector/SplitMethodSelector.stories.tsx +33 -0
- package/src/components/SplitMethodSelector/SplitMethodSelector.tsx +43 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useCommitOnEnterOrBlur.ts +39 -0
- package/src/index.ts +24 -2
- package/src/stories/DesignSystemOverview.stories.tsx +119 -1
- package/src/stories/FileDropzone.stories.tsx +69 -0
- package/src/stories/InteractionHooks.stories.tsx +55 -1
package/dist/index.js
CHANGED
|
@@ -667,9 +667,9 @@ function EllipsisVerticalIcon(props) {
|
|
|
667
667
|
);
|
|
668
668
|
}
|
|
669
669
|
|
|
670
|
-
// src/components/Icon/icons/
|
|
670
|
+
// src/components/Icon/icons/file.tsx
|
|
671
671
|
import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
672
|
-
function
|
|
672
|
+
function FileIcon(props) {
|
|
673
673
|
return /* @__PURE__ */ jsxs24(
|
|
674
674
|
"svg",
|
|
675
675
|
{
|
|
@@ -682,16 +682,16 @@ function BananaIcon(props) {
|
|
|
682
682
|
strokeLinejoin: "round",
|
|
683
683
|
...props,
|
|
684
684
|
children: [
|
|
685
|
-
/* @__PURE__ */ jsx31("path", { d: "
|
|
686
|
-
/* @__PURE__ */ jsx31("path", { d: "
|
|
685
|
+
/* @__PURE__ */ jsx31("path", { d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" }),
|
|
686
|
+
/* @__PURE__ */ jsx31("path", { d: "M14 2v5a1 1 0 0 0 1 1h5" })
|
|
687
687
|
]
|
|
688
688
|
}
|
|
689
689
|
);
|
|
690
690
|
}
|
|
691
691
|
|
|
692
|
-
// src/components/Icon/icons/
|
|
692
|
+
// src/components/Icon/icons/upload.tsx
|
|
693
693
|
import { jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
694
|
-
function
|
|
694
|
+
function UploadIcon(props) {
|
|
695
695
|
return /* @__PURE__ */ jsxs25(
|
|
696
696
|
"svg",
|
|
697
697
|
{
|
|
@@ -704,16 +704,17 @@ function AppleIcon(props) {
|
|
|
704
704
|
strokeLinejoin: "round",
|
|
705
705
|
...props,
|
|
706
706
|
children: [
|
|
707
|
-
/* @__PURE__ */ jsx32("path", { d: "M12
|
|
708
|
-
/* @__PURE__ */ jsx32("path", { d: "
|
|
707
|
+
/* @__PURE__ */ jsx32("path", { d: "M12 3v12" }),
|
|
708
|
+
/* @__PURE__ */ jsx32("path", { d: "m17 8-5-5-5 5" }),
|
|
709
|
+
/* @__PURE__ */ jsx32("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" })
|
|
709
710
|
]
|
|
710
711
|
}
|
|
711
712
|
);
|
|
712
713
|
}
|
|
713
714
|
|
|
714
|
-
// src/components/Icon/icons/
|
|
715
|
+
// src/components/Icon/icons/external-link.tsx
|
|
715
716
|
import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
716
|
-
function
|
|
717
|
+
function ExternalLinkIcon(props) {
|
|
717
718
|
return /* @__PURE__ */ jsxs26(
|
|
718
719
|
"svg",
|
|
719
720
|
{
|
|
@@ -726,18 +727,85 @@ function CarrotIcon(props) {
|
|
|
726
727
|
strokeLinejoin: "round",
|
|
727
728
|
...props,
|
|
728
729
|
children: [
|
|
729
|
-
/* @__PURE__ */ jsx33("path", { d: "
|
|
730
|
-
/* @__PURE__ */ jsx33("path", { d: "
|
|
731
|
-
/* @__PURE__ */ jsx33("path", { d: "
|
|
730
|
+
/* @__PURE__ */ jsx33("path", { d: "M15 3h6v6" }),
|
|
731
|
+
/* @__PURE__ */ jsx33("path", { d: "M10 14 21 3" }),
|
|
732
|
+
/* @__PURE__ */ jsx33("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
|
|
733
|
+
]
|
|
734
|
+
}
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
// src/components/Icon/icons/banana.tsx
|
|
739
|
+
import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
740
|
+
function BananaIcon(props) {
|
|
741
|
+
return /* @__PURE__ */ jsxs27(
|
|
742
|
+
"svg",
|
|
743
|
+
{
|
|
744
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
745
|
+
viewBox: "0 0 24 24",
|
|
746
|
+
fill: "none",
|
|
747
|
+
stroke: "currentColor",
|
|
748
|
+
strokeWidth: "2",
|
|
749
|
+
strokeLinecap: "round",
|
|
750
|
+
strokeLinejoin: "round",
|
|
751
|
+
...props,
|
|
752
|
+
children: [
|
|
753
|
+
/* @__PURE__ */ jsx34("path", { d: "M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5" }),
|
|
754
|
+
/* @__PURE__ */ jsx34("path", { d: "M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z" })
|
|
755
|
+
]
|
|
756
|
+
}
|
|
757
|
+
);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// src/components/Icon/icons/apple.tsx
|
|
761
|
+
import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
762
|
+
function AppleIcon(props) {
|
|
763
|
+
return /* @__PURE__ */ jsxs28(
|
|
764
|
+
"svg",
|
|
765
|
+
{
|
|
766
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
767
|
+
viewBox: "0 0 24 24",
|
|
768
|
+
fill: "none",
|
|
769
|
+
stroke: "currentColor",
|
|
770
|
+
strokeWidth: "2",
|
|
771
|
+
strokeLinecap: "round",
|
|
772
|
+
strokeLinejoin: "round",
|
|
773
|
+
...props,
|
|
774
|
+
children: [
|
|
775
|
+
/* @__PURE__ */ jsx35("path", { d: "M12 6.528V3a1 1 0 0 1 1-1h0" }),
|
|
776
|
+
/* @__PURE__ */ jsx35("path", { d: "M18.237 21A15 15 0 0 0 22 11a6 6 0 0 0-10-4.472A6 6 0 0 0 2 11a15.1 15.1 0 0 0 3.763 10 3 3 0 0 0 3.648.648 5.5 5.5 0 0 1 5.178 0A3 3 0 0 0 18.237 21" })
|
|
777
|
+
]
|
|
778
|
+
}
|
|
779
|
+
);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// src/components/Icon/icons/carrot.tsx
|
|
783
|
+
import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
784
|
+
function CarrotIcon(props) {
|
|
785
|
+
return /* @__PURE__ */ jsxs29(
|
|
786
|
+
"svg",
|
|
787
|
+
{
|
|
788
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
789
|
+
viewBox: "0 0 24 24",
|
|
790
|
+
fill: "none",
|
|
791
|
+
stroke: "currentColor",
|
|
792
|
+
strokeWidth: "2",
|
|
793
|
+
strokeLinecap: "round",
|
|
794
|
+
strokeLinejoin: "round",
|
|
795
|
+
...props,
|
|
796
|
+
children: [
|
|
797
|
+
/* @__PURE__ */ jsx36("path", { d: "M2.27 21.7s9.87-3.5 12.73-6.36a4.5 4.5 0 0 0-6.36-6.37C5.77 11.84 2.27 21.7 2.27 21.7zM8.64 14l-2.05-2.04M15.34 15l-2.46-2.46" }),
|
|
798
|
+
/* @__PURE__ */ jsx36("path", { d: "M22 9s-1.33-2-3.5-2C16.86 7 15 9 15 9s1.33 2 3.5 2S22 9 22 9z" }),
|
|
799
|
+
/* @__PURE__ */ jsx36("path", { d: "M15 2s-2 1.33-2 3.5S15 9 15 9s2-1.84 2-3.5C17 3.33 15 2 15 2z" })
|
|
732
800
|
]
|
|
733
801
|
}
|
|
734
802
|
);
|
|
735
803
|
}
|
|
736
804
|
|
|
737
805
|
// src/components/Icon/icons/egg.tsx
|
|
738
|
-
import { jsx as
|
|
806
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
739
807
|
function EggIcon(props) {
|
|
740
|
-
return /* @__PURE__ */
|
|
808
|
+
return /* @__PURE__ */ jsx37(
|
|
741
809
|
"svg",
|
|
742
810
|
{
|
|
743
811
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -748,15 +816,15 @@ function EggIcon(props) {
|
|
|
748
816
|
strokeLinecap: "round",
|
|
749
817
|
strokeLinejoin: "round",
|
|
750
818
|
...props,
|
|
751
|
-
children: /* @__PURE__ */
|
|
819
|
+
children: /* @__PURE__ */ jsx37("path", { d: "M12 2C8 2 4 8 4 14a8 8 0 0 0 16 0c0-6-4-12-8-12" })
|
|
752
820
|
}
|
|
753
821
|
);
|
|
754
822
|
}
|
|
755
823
|
|
|
756
824
|
// src/components/Icon/icons/beef.tsx
|
|
757
|
-
import { jsx as
|
|
825
|
+
import { jsx as jsx38, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
758
826
|
function BeefIcon(props) {
|
|
759
|
-
return /* @__PURE__ */
|
|
827
|
+
return /* @__PURE__ */ jsxs30(
|
|
760
828
|
"svg",
|
|
761
829
|
{
|
|
762
830
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -768,18 +836,18 @@ function BeefIcon(props) {
|
|
|
768
836
|
strokeLinejoin: "round",
|
|
769
837
|
...props,
|
|
770
838
|
children: [
|
|
771
|
-
/* @__PURE__ */
|
|
772
|
-
/* @__PURE__ */
|
|
773
|
-
/* @__PURE__ */
|
|
839
|
+
/* @__PURE__ */ jsx38("path", { d: "M16.4 13.7A6.5 6.5 0 1 0 6.28 6.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3" }),
|
|
840
|
+
/* @__PURE__ */ jsx38("path", { d: "m18.5 6 2.19 4.5a6.48 6.48 0 0 1-2.29 7.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5" }),
|
|
841
|
+
/* @__PURE__ */ jsx38("circle", { cx: "12.5", cy: "8.5", r: "2.5" })
|
|
774
842
|
]
|
|
775
843
|
}
|
|
776
844
|
);
|
|
777
845
|
}
|
|
778
846
|
|
|
779
847
|
// src/components/Icon/icons/fish.tsx
|
|
780
|
-
import { jsx as
|
|
848
|
+
import { jsx as jsx39, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
781
849
|
function FishIcon(props) {
|
|
782
|
-
return /* @__PURE__ */
|
|
850
|
+
return /* @__PURE__ */ jsxs31(
|
|
783
851
|
"svg",
|
|
784
852
|
{
|
|
785
853
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -791,21 +859,21 @@ function FishIcon(props) {
|
|
|
791
859
|
strokeLinejoin: "round",
|
|
792
860
|
...props,
|
|
793
861
|
children: [
|
|
794
|
-
/* @__PURE__ */
|
|
795
|
-
/* @__PURE__ */
|
|
796
|
-
/* @__PURE__ */
|
|
797
|
-
/* @__PURE__ */
|
|
798
|
-
/* @__PURE__ */
|
|
799
|
-
/* @__PURE__ */
|
|
862
|
+
/* @__PURE__ */ jsx39("path", { d: "M6.5 12c.94-3.46 4.94-6 8.5-6 3.56 0 6.06 2.54 7 6-.94 3.47-3.44 6-7 6s-7.56-2.53-8.5-6Z" }),
|
|
863
|
+
/* @__PURE__ */ jsx39("path", { d: "M18 12v.5" }),
|
|
864
|
+
/* @__PURE__ */ jsx39("path", { d: "M16 17.93a9.77 9.77 0 0 1 0-11.86" }),
|
|
865
|
+
/* @__PURE__ */ jsx39("path", { d: "M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33" }),
|
|
866
|
+
/* @__PURE__ */ jsx39("path", { d: "M10.46 7.26C10.2 5.88 9.17 4.24 8 3h5.8a2 2 0 0 1 1.98 1.67l.23 1.4" }),
|
|
867
|
+
/* @__PURE__ */ jsx39("path", { d: "m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98" })
|
|
800
868
|
]
|
|
801
869
|
}
|
|
802
870
|
);
|
|
803
871
|
}
|
|
804
872
|
|
|
805
873
|
// src/components/Icon/icons/coffee.tsx
|
|
806
|
-
import { jsx as
|
|
874
|
+
import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
807
875
|
function CoffeeIcon(props) {
|
|
808
|
-
return /* @__PURE__ */
|
|
876
|
+
return /* @__PURE__ */ jsxs32(
|
|
809
877
|
"svg",
|
|
810
878
|
{
|
|
811
879
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -817,19 +885,19 @@ function CoffeeIcon(props) {
|
|
|
817
885
|
strokeLinejoin: "round",
|
|
818
886
|
...props,
|
|
819
887
|
children: [
|
|
820
|
-
/* @__PURE__ */
|
|
821
|
-
/* @__PURE__ */
|
|
822
|
-
/* @__PURE__ */
|
|
823
|
-
/* @__PURE__ */
|
|
888
|
+
/* @__PURE__ */ jsx40("path", { d: "M10 2v2" }),
|
|
889
|
+
/* @__PURE__ */ jsx40("path", { d: "M14 2v2" }),
|
|
890
|
+
/* @__PURE__ */ jsx40("path", { d: "M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1" }),
|
|
891
|
+
/* @__PURE__ */ jsx40("path", { d: "M6 2v2" })
|
|
824
892
|
]
|
|
825
893
|
}
|
|
826
894
|
);
|
|
827
895
|
}
|
|
828
896
|
|
|
829
897
|
// src/components/Icon/icons/wine.tsx
|
|
830
|
-
import { jsx as
|
|
898
|
+
import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
831
899
|
function WineIcon(props) {
|
|
832
|
-
return /* @__PURE__ */
|
|
900
|
+
return /* @__PURE__ */ jsxs33(
|
|
833
901
|
"svg",
|
|
834
902
|
{
|
|
835
903
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -841,19 +909,19 @@ function WineIcon(props) {
|
|
|
841
909
|
strokeLinejoin: "round",
|
|
842
910
|
...props,
|
|
843
911
|
children: [
|
|
844
|
-
/* @__PURE__ */
|
|
845
|
-
/* @__PURE__ */
|
|
846
|
-
/* @__PURE__ */
|
|
847
|
-
/* @__PURE__ */
|
|
912
|
+
/* @__PURE__ */ jsx41("path", { d: "M8 22h8" }),
|
|
913
|
+
/* @__PURE__ */ jsx41("path", { d: "M7 10h10" }),
|
|
914
|
+
/* @__PURE__ */ jsx41("path", { d: "M12 15v7" }),
|
|
915
|
+
/* @__PURE__ */ jsx41("path", { d: "M12 15a5 5 0 0 0 5-5c0-2-.5-4-2-8H9c-1.5 4-2 6-2 8a5 5 0 0 0 5 5Z" })
|
|
848
916
|
]
|
|
849
917
|
}
|
|
850
918
|
);
|
|
851
919
|
}
|
|
852
920
|
|
|
853
921
|
// src/components/Icon/icons/beer.tsx
|
|
854
|
-
import { jsx as
|
|
922
|
+
import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
855
923
|
function BeerIcon(props) {
|
|
856
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ jsxs34(
|
|
857
925
|
"svg",
|
|
858
926
|
{
|
|
859
927
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -865,20 +933,20 @@ function BeerIcon(props) {
|
|
|
865
933
|
strokeLinejoin: "round",
|
|
866
934
|
...props,
|
|
867
935
|
children: [
|
|
868
|
-
/* @__PURE__ */
|
|
869
|
-
/* @__PURE__ */
|
|
870
|
-
/* @__PURE__ */
|
|
871
|
-
/* @__PURE__ */
|
|
872
|
-
/* @__PURE__ */
|
|
936
|
+
/* @__PURE__ */ jsx42("path", { d: "M17 11h1a3 3 0 0 1 0 6h-1" }),
|
|
937
|
+
/* @__PURE__ */ jsx42("path", { d: "M9 12v6" }),
|
|
938
|
+
/* @__PURE__ */ jsx42("path", { d: "M13 12v6" }),
|
|
939
|
+
/* @__PURE__ */ jsx42("path", { d: "M14 7.5c-1 0-1.44.5-3 .5s-2-.5-3-.5-1.72.5-2.5.5a2.5 2.5 0 0 1 0-5c.78 0 1.57.5 2.5.5S9.44 2 11 2s2 1.5 3 1.5 1.72-.5 2.5-.5a2.5 2.5 0 0 1 0 5c-.78 0-1.5-.5-2.5-.5Z" }),
|
|
940
|
+
/* @__PURE__ */ jsx42("path", { d: "M5 8v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8" })
|
|
873
941
|
]
|
|
874
942
|
}
|
|
875
943
|
);
|
|
876
944
|
}
|
|
877
945
|
|
|
878
946
|
// src/components/Icon/icons/cookie.tsx
|
|
879
|
-
import { jsx as
|
|
947
|
+
import { jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
880
948
|
function CookieIcon(props) {
|
|
881
|
-
return /* @__PURE__ */
|
|
949
|
+
return /* @__PURE__ */ jsxs35(
|
|
882
950
|
"svg",
|
|
883
951
|
{
|
|
884
952
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -890,21 +958,21 @@ function CookieIcon(props) {
|
|
|
890
958
|
strokeLinejoin: "round",
|
|
891
959
|
...props,
|
|
892
960
|
children: [
|
|
893
|
-
/* @__PURE__ */
|
|
894
|
-
/* @__PURE__ */
|
|
895
|
-
/* @__PURE__ */
|
|
896
|
-
/* @__PURE__ */
|
|
897
|
-
/* @__PURE__ */
|
|
898
|
-
/* @__PURE__ */
|
|
961
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5" }),
|
|
962
|
+
/* @__PURE__ */ jsx43("path", { d: "M8.5 8.5v.01" }),
|
|
963
|
+
/* @__PURE__ */ jsx43("path", { d: "M16 15.5v.01" }),
|
|
964
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 12v.01" }),
|
|
965
|
+
/* @__PURE__ */ jsx43("path", { d: "M11 17v.01" }),
|
|
966
|
+
/* @__PURE__ */ jsx43("path", { d: "M7 14v.01" })
|
|
899
967
|
]
|
|
900
968
|
}
|
|
901
969
|
);
|
|
902
970
|
}
|
|
903
971
|
|
|
904
972
|
// src/components/Icon/icons/pizza.tsx
|
|
905
|
-
import { jsx as
|
|
973
|
+
import { jsx as jsx44, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
906
974
|
function PizzaIcon(props) {
|
|
907
|
-
return /* @__PURE__ */
|
|
975
|
+
return /* @__PURE__ */ jsxs36(
|
|
908
976
|
"svg",
|
|
909
977
|
{
|
|
910
978
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -916,20 +984,20 @@ function PizzaIcon(props) {
|
|
|
916
984
|
strokeLinejoin: "round",
|
|
917
985
|
...props,
|
|
918
986
|
children: [
|
|
919
|
-
/* @__PURE__ */
|
|
920
|
-
/* @__PURE__ */
|
|
921
|
-
/* @__PURE__ */
|
|
922
|
-
/* @__PURE__ */
|
|
923
|
-
/* @__PURE__ */
|
|
987
|
+
/* @__PURE__ */ jsx44("path", { d: "m12 14-1 1" }),
|
|
988
|
+
/* @__PURE__ */ jsx44("path", { d: "m13.75 18.25-1.25 1.42" }),
|
|
989
|
+
/* @__PURE__ */ jsx44("path", { d: "M17.775 5.654a15.68 15.68 0 0 0-12.121 12.12" }),
|
|
990
|
+
/* @__PURE__ */ jsx44("path", { d: "M18.8 9.3a1 1 0 0 0 2.1 7.7" }),
|
|
991
|
+
/* @__PURE__ */ jsx44("path", { d: "M21.964 20.732a1 1 0 0 1-1.232 1.232l-18-5a1 1 0 0 1-.695-1.232A19.68 19.68 0 0 1 15.732 2.037a1 1 0 0 1 1.232.695z" })
|
|
924
992
|
]
|
|
925
993
|
}
|
|
926
994
|
);
|
|
927
995
|
}
|
|
928
996
|
|
|
929
997
|
// src/components/Icon/icons/candy.tsx
|
|
930
|
-
import { jsx as
|
|
998
|
+
import { jsx as jsx45, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
931
999
|
function CandyIcon(props) {
|
|
932
|
-
return /* @__PURE__ */
|
|
1000
|
+
return /* @__PURE__ */ jsxs37(
|
|
933
1001
|
"svg",
|
|
934
1002
|
{
|
|
935
1003
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -941,20 +1009,20 @@ function CandyIcon(props) {
|
|
|
941
1009
|
strokeLinejoin: "round",
|
|
942
1010
|
...props,
|
|
943
1011
|
children: [
|
|
944
|
-
/* @__PURE__ */
|
|
945
|
-
/* @__PURE__ */
|
|
946
|
-
/* @__PURE__ */
|
|
947
|
-
/* @__PURE__ */
|
|
948
|
-
/* @__PURE__ */
|
|
1012
|
+
/* @__PURE__ */ jsx45("path", { d: "M10 7v10.9" }),
|
|
1013
|
+
/* @__PURE__ */ jsx45("path", { d: "M14 6.1V17" }),
|
|
1014
|
+
/* @__PURE__ */ jsx45("path", { d: "M16 7V3a1 1 0 0 1 1.707-.707 2.5 2.5 0 0 0 2.152.717 1 1 0 0 1 1.131 1.131 2.5 2.5 0 0 0 .717 2.152A1 1 0 0 1 21 8h-4" }),
|
|
1015
|
+
/* @__PURE__ */ jsx45("path", { d: "M16.536 7.465a5 5 0 0 0-7.072 0l-2 2a5 5 0 0 0 0 7.07 5 5 0 0 0 7.072 0l2-2a5 5 0 0 0 0-7.07" }),
|
|
1016
|
+
/* @__PURE__ */ jsx45("path", { d: "M8 17v4a1 1 0 0 1-1.707.707 2.5 2.5 0 0 0-2.152-.717 1 1 0 0 1-1.131-1.131 2.5 2.5 0 0 0-.717-2.152A1 1 0 0 1 3 16h4" })
|
|
949
1017
|
]
|
|
950
1018
|
}
|
|
951
1019
|
);
|
|
952
1020
|
}
|
|
953
1021
|
|
|
954
1022
|
// src/components/Icon/icons/salad.tsx
|
|
955
|
-
import { jsx as
|
|
1023
|
+
import { jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
956
1024
|
function SaladIcon(props) {
|
|
957
|
-
return /* @__PURE__ */
|
|
1025
|
+
return /* @__PURE__ */ jsxs38(
|
|
958
1026
|
"svg",
|
|
959
1027
|
{
|
|
960
1028
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -966,20 +1034,20 @@ function SaladIcon(props) {
|
|
|
966
1034
|
strokeLinejoin: "round",
|
|
967
1035
|
...props,
|
|
968
1036
|
children: [
|
|
969
|
-
/* @__PURE__ */
|
|
970
|
-
/* @__PURE__ */
|
|
971
|
-
/* @__PURE__ */
|
|
972
|
-
/* @__PURE__ */
|
|
973
|
-
/* @__PURE__ */
|
|
1037
|
+
/* @__PURE__ */ jsx46("path", { d: "M7 21h10" }),
|
|
1038
|
+
/* @__PURE__ */ jsx46("path", { d: "M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z" }),
|
|
1039
|
+
/* @__PURE__ */ jsx46("path", { d: "M11.38 12a2.4 2.4 0 0 1-.4-4.77 2.4 2.4 0 0 1 3.2-2.77 2.4 2.4 0 0 1 3.47-.63 2.4 2.4 0 0 1 3.37 3.37 2.4 2.4 0 0 1-1.1 3.7 2.51 2.51 0 0 1 .03 1.1" }),
|
|
1040
|
+
/* @__PURE__ */ jsx46("path", { d: "m13 12 4-4" }),
|
|
1041
|
+
/* @__PURE__ */ jsx46("path", { d: "M10.9 7.25A3.99 3.99 0 0 0 4 10c0 .73.2 1.41.54 2" })
|
|
974
1042
|
]
|
|
975
1043
|
}
|
|
976
1044
|
);
|
|
977
1045
|
}
|
|
978
1046
|
|
|
979
1047
|
// src/components/Icon/icons/milk.tsx
|
|
980
|
-
import { jsx as
|
|
1048
|
+
import { jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
981
1049
|
function MilkIcon(props) {
|
|
982
|
-
return /* @__PURE__ */
|
|
1050
|
+
return /* @__PURE__ */ jsxs39(
|
|
983
1051
|
"svg",
|
|
984
1052
|
{
|
|
985
1053
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -991,18 +1059,18 @@ function MilkIcon(props) {
|
|
|
991
1059
|
strokeLinejoin: "round",
|
|
992
1060
|
...props,
|
|
993
1061
|
children: [
|
|
994
|
-
/* @__PURE__ */
|
|
995
|
-
/* @__PURE__ */
|
|
996
|
-
/* @__PURE__ */
|
|
1062
|
+
/* @__PURE__ */ jsx47("path", { d: "M8 2h8" }),
|
|
1063
|
+
/* @__PURE__ */ jsx47("path", { d: "M9 2v2.789a4 4 0 0 1-.672 2.219l-.656.984A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-9.789a4 4 0 0 0-.672-2.219l-.656-.984A4 4 0 0 1 15 4.788V2" }),
|
|
1064
|
+
/* @__PURE__ */ jsx47("path", { d: "M7 15a6.472 6.472 0 0 1 5 0 6.47 6.47 0 0 0 5 0" })
|
|
997
1065
|
]
|
|
998
1066
|
}
|
|
999
1067
|
);
|
|
1000
1068
|
}
|
|
1001
1069
|
|
|
1002
1070
|
// src/components/Icon/icons/drumstick.tsx
|
|
1003
|
-
import { jsx as
|
|
1071
|
+
import { jsx as jsx48, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
1004
1072
|
function DrumstickIcon(props) {
|
|
1005
|
-
return /* @__PURE__ */
|
|
1073
|
+
return /* @__PURE__ */ jsxs40(
|
|
1006
1074
|
"svg",
|
|
1007
1075
|
{
|
|
1008
1076
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1014,17 +1082,17 @@ function DrumstickIcon(props) {
|
|
|
1014
1082
|
strokeLinejoin: "round",
|
|
1015
1083
|
...props,
|
|
1016
1084
|
children: [
|
|
1017
|
-
/* @__PURE__ */
|
|
1018
|
-
/* @__PURE__ */
|
|
1085
|
+
/* @__PURE__ */ jsx48("path", { d: "M15.4 15.63a7.875 6 135 1 1 6.23-6.23 4.5 3.43 135 0 0-6.23 6.23" }),
|
|
1086
|
+
/* @__PURE__ */ jsx48("path", { d: "m8.29 12.71-2.6 2.6a2.5 2.5 0 1 0-1.65 4.65A2.5 2.5 0 1 0 8.7 18.3l2.59-2.59" })
|
|
1019
1087
|
]
|
|
1020
1088
|
}
|
|
1021
1089
|
);
|
|
1022
1090
|
}
|
|
1023
1091
|
|
|
1024
1092
|
// src/components/Icon/icons/croissant.tsx
|
|
1025
|
-
import { jsx as
|
|
1093
|
+
import { jsx as jsx49, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
1026
1094
|
function CroissantIcon(props) {
|
|
1027
|
-
return /* @__PURE__ */
|
|
1095
|
+
return /* @__PURE__ */ jsxs41(
|
|
1028
1096
|
"svg",
|
|
1029
1097
|
{
|
|
1030
1098
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1036,20 +1104,20 @@ function CroissantIcon(props) {
|
|
|
1036
1104
|
strokeLinejoin: "round",
|
|
1037
1105
|
...props,
|
|
1038
1106
|
children: [
|
|
1039
|
-
/* @__PURE__ */
|
|
1040
|
-
/* @__PURE__ */
|
|
1041
|
-
/* @__PURE__ */
|
|
1042
|
-
/* @__PURE__ */
|
|
1043
|
-
/* @__PURE__ */
|
|
1107
|
+
/* @__PURE__ */ jsx49("path", { d: "M10.2 18H4.774a1.5 1.5 0 0 1-1.352-.97 11 11 0 0 1 .132-6.487" }),
|
|
1108
|
+
/* @__PURE__ */ jsx49("path", { d: "M18 10.2V4.774a1.5 1.5 0 0 0-.97-1.352 11 11 0 0 0-6.486.132" }),
|
|
1109
|
+
/* @__PURE__ */ jsx49("path", { d: "M18 5a4 3 0 0 1 4 3 2 2 0 0 1-2 2 10 10 0 0 0-5.139 1.42" }),
|
|
1110
|
+
/* @__PURE__ */ jsx49("path", { d: "M5 18a3 4 0 0 0 3 4 2 2 0 0 0 2-2 10 10 0 0 1 1.42-5.14" }),
|
|
1111
|
+
/* @__PURE__ */ jsx49("path", { d: "M8.709 2.554a10 10 0 0 0-6.155 6.155 1.5 1.5 0 0 0 .676 1.626l9.807 5.42a2 2 0 0 0 2.718-2.718l-5.42-9.807a1.5 1.5 0 0 0-1.626-.676" })
|
|
1044
1112
|
]
|
|
1045
1113
|
}
|
|
1046
1114
|
);
|
|
1047
1115
|
}
|
|
1048
1116
|
|
|
1049
1117
|
// src/components/Icon/icons/cup-soda.tsx
|
|
1050
|
-
import { jsx as
|
|
1118
|
+
import { jsx as jsx50, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
1051
1119
|
function CupSodaIcon(props) {
|
|
1052
|
-
return /* @__PURE__ */
|
|
1120
|
+
return /* @__PURE__ */ jsxs42(
|
|
1053
1121
|
"svg",
|
|
1054
1122
|
{
|
|
1055
1123
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1061,19 +1129,19 @@ function CupSodaIcon(props) {
|
|
|
1061
1129
|
strokeLinejoin: "round",
|
|
1062
1130
|
...props,
|
|
1063
1131
|
children: [
|
|
1064
|
-
/* @__PURE__ */
|
|
1065
|
-
/* @__PURE__ */
|
|
1066
|
-
/* @__PURE__ */
|
|
1067
|
-
/* @__PURE__ */
|
|
1132
|
+
/* @__PURE__ */ jsx50("path", { d: "m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8" }),
|
|
1133
|
+
/* @__PURE__ */ jsx50("path", { d: "M5 8h14" }),
|
|
1134
|
+
/* @__PURE__ */ jsx50("path", { d: "M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0" }),
|
|
1135
|
+
/* @__PURE__ */ jsx50("path", { d: "m12 8 1-6h2" })
|
|
1068
1136
|
]
|
|
1069
1137
|
}
|
|
1070
1138
|
);
|
|
1071
1139
|
}
|
|
1072
1140
|
|
|
1073
1141
|
// src/components/Icon/icons/spray-can.tsx
|
|
1074
|
-
import { jsx as
|
|
1142
|
+
import { jsx as jsx51, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
1075
1143
|
function SprayCanIcon(props) {
|
|
1076
|
-
return /* @__PURE__ */
|
|
1144
|
+
return /* @__PURE__ */ jsxs43(
|
|
1077
1145
|
"svg",
|
|
1078
1146
|
{
|
|
1079
1147
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1085,25 +1153,25 @@ function SprayCanIcon(props) {
|
|
|
1085
1153
|
strokeLinejoin: "round",
|
|
1086
1154
|
...props,
|
|
1087
1155
|
children: [
|
|
1088
|
-
/* @__PURE__ */
|
|
1089
|
-
/* @__PURE__ */
|
|
1090
|
-
/* @__PURE__ */
|
|
1091
|
-
/* @__PURE__ */
|
|
1092
|
-
/* @__PURE__ */
|
|
1093
|
-
/* @__PURE__ */
|
|
1094
|
-
/* @__PURE__ */
|
|
1095
|
-
/* @__PURE__ */
|
|
1096
|
-
/* @__PURE__ */
|
|
1097
|
-
/* @__PURE__ */
|
|
1156
|
+
/* @__PURE__ */ jsx51("path", { d: "M3 3h.01" }),
|
|
1157
|
+
/* @__PURE__ */ jsx51("path", { d: "M7 5h.01" }),
|
|
1158
|
+
/* @__PURE__ */ jsx51("path", { d: "M11 7h.01" }),
|
|
1159
|
+
/* @__PURE__ */ jsx51("path", { d: "M3 7h.01" }),
|
|
1160
|
+
/* @__PURE__ */ jsx51("path", { d: "M7 9h.01" }),
|
|
1161
|
+
/* @__PURE__ */ jsx51("path", { d: "M3 11h.01" }),
|
|
1162
|
+
/* @__PURE__ */ jsx51("rect", { width: "4", height: "4", x: "15", y: "5" }),
|
|
1163
|
+
/* @__PURE__ */ jsx51("path", { d: "m19 9 2 2v10c0 .6-.4 1-1 1h-6c-.6 0-1-.4-1-1V11l2-2" }),
|
|
1164
|
+
/* @__PURE__ */ jsx51("path", { d: "m13 14 8-2" }),
|
|
1165
|
+
/* @__PURE__ */ jsx51("path", { d: "m13 19 8-2" })
|
|
1098
1166
|
]
|
|
1099
1167
|
}
|
|
1100
1168
|
);
|
|
1101
1169
|
}
|
|
1102
1170
|
|
|
1103
1171
|
// src/components/Icon/icons/snowflake.tsx
|
|
1104
|
-
import { jsx as
|
|
1172
|
+
import { jsx as jsx52, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
1105
1173
|
function SnowflakeIcon(props) {
|
|
1106
|
-
return /* @__PURE__ */
|
|
1174
|
+
return /* @__PURE__ */ jsxs44(
|
|
1107
1175
|
"svg",
|
|
1108
1176
|
{
|
|
1109
1177
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1115,27 +1183,27 @@ function SnowflakeIcon(props) {
|
|
|
1115
1183
|
strokeLinejoin: "round",
|
|
1116
1184
|
...props,
|
|
1117
1185
|
children: [
|
|
1118
|
-
/* @__PURE__ */
|
|
1119
|
-
/* @__PURE__ */
|
|
1120
|
-
/* @__PURE__ */
|
|
1121
|
-
/* @__PURE__ */
|
|
1122
|
-
/* @__PURE__ */
|
|
1123
|
-
/* @__PURE__ */
|
|
1124
|
-
/* @__PURE__ */
|
|
1125
|
-
/* @__PURE__ */
|
|
1126
|
-
/* @__PURE__ */
|
|
1127
|
-
/* @__PURE__ */
|
|
1128
|
-
/* @__PURE__ */
|
|
1129
|
-
/* @__PURE__ */
|
|
1186
|
+
/* @__PURE__ */ jsx52("path", { d: "m10 20-1.25-2.5L6 18" }),
|
|
1187
|
+
/* @__PURE__ */ jsx52("path", { d: "M10 4 8.75 6.5 6 6" }),
|
|
1188
|
+
/* @__PURE__ */ jsx52("path", { d: "m14 20 1.25-2.5L18 18" }),
|
|
1189
|
+
/* @__PURE__ */ jsx52("path", { d: "m14 4 1.25 2.5L18 6" }),
|
|
1190
|
+
/* @__PURE__ */ jsx52("path", { d: "m17 21-3-6h-4" }),
|
|
1191
|
+
/* @__PURE__ */ jsx52("path", { d: "m17 3-3 6 1.5 3" }),
|
|
1192
|
+
/* @__PURE__ */ jsx52("path", { d: "M2 12h6.5L10 9" }),
|
|
1193
|
+
/* @__PURE__ */ jsx52("path", { d: "m20 10-1.5 2 1.5 2" }),
|
|
1194
|
+
/* @__PURE__ */ jsx52("path", { d: "M22 12h-6.5L14 15" }),
|
|
1195
|
+
/* @__PURE__ */ jsx52("path", { d: "m4 10 1.5 2L4 14" }),
|
|
1196
|
+
/* @__PURE__ */ jsx52("path", { d: "m7 21 3-6-1.5-3" }),
|
|
1197
|
+
/* @__PURE__ */ jsx52("path", { d: "m7 3 3 6h4" })
|
|
1130
1198
|
]
|
|
1131
1199
|
}
|
|
1132
1200
|
);
|
|
1133
1201
|
}
|
|
1134
1202
|
|
|
1135
1203
|
// src/components/Icon/icons/shopping-basket.tsx
|
|
1136
|
-
import { jsx as
|
|
1204
|
+
import { jsx as jsx53, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
1137
1205
|
function ShoppingBasketIcon(props) {
|
|
1138
|
-
return /* @__PURE__ */
|
|
1206
|
+
return /* @__PURE__ */ jsxs45(
|
|
1139
1207
|
"svg",
|
|
1140
1208
|
{
|
|
1141
1209
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1147,13 +1215,13 @@ function ShoppingBasketIcon(props) {
|
|
|
1147
1215
|
strokeLinejoin: "round",
|
|
1148
1216
|
...props,
|
|
1149
1217
|
children: [
|
|
1150
|
-
/* @__PURE__ */
|
|
1151
|
-
/* @__PURE__ */
|
|
1152
|
-
/* @__PURE__ */
|
|
1153
|
-
/* @__PURE__ */
|
|
1154
|
-
/* @__PURE__ */
|
|
1155
|
-
/* @__PURE__ */
|
|
1156
|
-
/* @__PURE__ */
|
|
1218
|
+
/* @__PURE__ */ jsx53("path", { d: "m15 11-1 9" }),
|
|
1219
|
+
/* @__PURE__ */ jsx53("path", { d: "m19 11-4-7" }),
|
|
1220
|
+
/* @__PURE__ */ jsx53("path", { d: "M2 11h20" }),
|
|
1221
|
+
/* @__PURE__ */ jsx53("path", { d: "m3.5 11 1.6 7.4a2 2 0 0 0 2 1.6h9.8a2 2 0 0 0 2-1.6l1.7-7.4" }),
|
|
1222
|
+
/* @__PURE__ */ jsx53("path", { d: "M4.5 15.5h15" }),
|
|
1223
|
+
/* @__PURE__ */ jsx53("path", { d: "m5 11 4-7" }),
|
|
1224
|
+
/* @__PURE__ */ jsx53("path", { d: "m9 11 1 9" })
|
|
1157
1225
|
]
|
|
1158
1226
|
}
|
|
1159
1227
|
);
|
|
@@ -1190,6 +1258,9 @@ var ICONS = {
|
|
|
1190
1258
|
calendar: CalendarIcon,
|
|
1191
1259
|
"sliders-horizontal": SlidersHorizontalIcon,
|
|
1192
1260
|
"ellipsis-vertical": EllipsisVerticalIcon,
|
|
1261
|
+
file: FileIcon,
|
|
1262
|
+
upload: UploadIcon,
|
|
1263
|
+
"external-link": ExternalLinkIcon,
|
|
1193
1264
|
banana: BananaIcon,
|
|
1194
1265
|
apple: AppleIcon,
|
|
1195
1266
|
carrot: CarrotIcon,
|
|
@@ -1214,7 +1285,7 @@ var ICONS = {
|
|
|
1214
1285
|
|
|
1215
1286
|
// src/components/Icon/Icon.tsx
|
|
1216
1287
|
import styles2 from "./Icon.module.css";
|
|
1217
|
-
import { jsx as
|
|
1288
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
1218
1289
|
function Icon({
|
|
1219
1290
|
name,
|
|
1220
1291
|
size = "md",
|
|
@@ -1223,14 +1294,14 @@ function Icon({
|
|
|
1223
1294
|
}) {
|
|
1224
1295
|
const Svg = ICONS[name];
|
|
1225
1296
|
const classes = [styles2.root, styles2[size], className].filter(Boolean).join(" ");
|
|
1226
|
-
return /* @__PURE__ */
|
|
1297
|
+
return /* @__PURE__ */ jsx54(Svg, { className: classes, role: aria["aria-label"] ? "img" : void 0, ...aria });
|
|
1227
1298
|
}
|
|
1228
1299
|
|
|
1229
1300
|
// src/components/Toggle/Toggle.tsx
|
|
1230
1301
|
import styles3 from "./Toggle.module.css";
|
|
1231
|
-
import { jsx as
|
|
1302
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
1232
1303
|
function Toggle({ checked, onChange, disabled, className, ...rest }) {
|
|
1233
|
-
return /* @__PURE__ */
|
|
1304
|
+
return /* @__PURE__ */ jsx55(
|
|
1234
1305
|
"button",
|
|
1235
1306
|
{
|
|
1236
1307
|
type: "button",
|
|
@@ -1240,14 +1311,14 @@ function Toggle({ checked, onChange, disabled, className, ...rest }) {
|
|
|
1240
1311
|
className: [styles3.track, checked ? styles3.on : styles3.off, className].filter(Boolean).join(" "),
|
|
1241
1312
|
onClick: () => onChange(!checked),
|
|
1242
1313
|
...rest,
|
|
1243
|
-
children: /* @__PURE__ */
|
|
1314
|
+
children: /* @__PURE__ */ jsx55("span", { className: styles3.thumb })
|
|
1244
1315
|
}
|
|
1245
1316
|
);
|
|
1246
1317
|
}
|
|
1247
1318
|
|
|
1248
1319
|
// src/components/SegmentedControl/SegmentedControl.tsx
|
|
1249
1320
|
import styles4 from "./SegmentedControl.module.css";
|
|
1250
|
-
import { jsx as
|
|
1321
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
1251
1322
|
function SegmentedControl({
|
|
1252
1323
|
value,
|
|
1253
1324
|
onChange,
|
|
@@ -1255,7 +1326,7 @@ function SegmentedControl({
|
|
|
1255
1326
|
size = "md",
|
|
1256
1327
|
"aria-label": ariaLabel
|
|
1257
1328
|
}) {
|
|
1258
|
-
return /* @__PURE__ */
|
|
1329
|
+
return /* @__PURE__ */ jsx56(
|
|
1259
1330
|
"div",
|
|
1260
1331
|
{
|
|
1261
1332
|
role: "radiogroup",
|
|
@@ -1263,7 +1334,7 @@ function SegmentedControl({
|
|
|
1263
1334
|
className: [styles4.track, styles4[size]].join(" "),
|
|
1264
1335
|
children: options.map((opt) => {
|
|
1265
1336
|
const active = opt.value === value;
|
|
1266
|
-
return /* @__PURE__ */
|
|
1337
|
+
return /* @__PURE__ */ jsx56(
|
|
1267
1338
|
"button",
|
|
1268
1339
|
{
|
|
1269
1340
|
type: "button",
|
|
@@ -1282,11 +1353,11 @@ function SegmentedControl({
|
|
|
1282
1353
|
|
|
1283
1354
|
// src/components/Tabs/Tabs.tsx
|
|
1284
1355
|
import styles5 from "./Tabs.module.css";
|
|
1285
|
-
import { jsx as
|
|
1356
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1286
1357
|
function Tabs({ items, value, onChange, "aria-label": ariaLabel }) {
|
|
1287
|
-
return /* @__PURE__ */
|
|
1358
|
+
return /* @__PURE__ */ jsx57("div", { role: "tablist", "aria-label": ariaLabel, className: styles5.tablist, children: items.map((item) => {
|
|
1288
1359
|
const active = item.value === value;
|
|
1289
|
-
return /* @__PURE__ */
|
|
1360
|
+
return /* @__PURE__ */ jsx57(
|
|
1290
1361
|
"button",
|
|
1291
1362
|
{
|
|
1292
1363
|
type: "button",
|
|
@@ -1303,15 +1374,15 @@ function Tabs({ items, value, onChange, "aria-label": ariaLabel }) {
|
|
|
1303
1374
|
|
|
1304
1375
|
// src/components/Select/Select.tsx
|
|
1305
1376
|
import styles6 from "./Select.module.css";
|
|
1306
|
-
import { jsx as
|
|
1377
|
+
import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
1307
1378
|
function Select({ className, size = "md", children, ...rest }) {
|
|
1308
|
-
return /* @__PURE__ */
|
|
1379
|
+
return /* @__PURE__ */ jsxs46(
|
|
1309
1380
|
"div",
|
|
1310
1381
|
{
|
|
1311
1382
|
className: [styles6.wrapper, size === "sm" ? styles6.sm : void 0, className].filter(Boolean).join(" "),
|
|
1312
1383
|
children: [
|
|
1313
|
-
/* @__PURE__ */
|
|
1314
|
-
/* @__PURE__ */
|
|
1384
|
+
/* @__PURE__ */ jsx58("select", { className: styles6.select, ...rest, children }),
|
|
1385
|
+
/* @__PURE__ */ jsx58(
|
|
1315
1386
|
"svg",
|
|
1316
1387
|
{
|
|
1317
1388
|
className: styles6.chevron,
|
|
@@ -1324,7 +1395,7 @@ function Select({ className, size = "md", children, ...rest }) {
|
|
|
1324
1395
|
strokeWidth: "2",
|
|
1325
1396
|
strokeLinecap: "round",
|
|
1326
1397
|
strokeLinejoin: "round",
|
|
1327
|
-
children: /* @__PURE__ */
|
|
1398
|
+
children: /* @__PURE__ */ jsx58("polyline", { points: "6 9 12 15 18 9" })
|
|
1328
1399
|
}
|
|
1329
1400
|
)
|
|
1330
1401
|
]
|
|
@@ -1334,18 +1405,18 @@ function Select({ className, size = "md", children, ...rest }) {
|
|
|
1334
1405
|
|
|
1335
1406
|
// src/components/SystemBanner/SystemBanner.tsx
|
|
1336
1407
|
import styles7 from "./SystemBanner.module.css";
|
|
1337
|
-
import { jsx as
|
|
1408
|
+
import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
1338
1409
|
function SystemBanner({ variant = "info", onDismiss, children }) {
|
|
1339
|
-
return /* @__PURE__ */
|
|
1340
|
-
/* @__PURE__ */
|
|
1341
|
-
onDismiss && /* @__PURE__ */
|
|
1410
|
+
return /* @__PURE__ */ jsxs47("div", { role: "status", "aria-live": "polite", className: [styles7.banner, styles7[variant]].join(" "), children: [
|
|
1411
|
+
/* @__PURE__ */ jsx59("span", { className: styles7.content, children }),
|
|
1412
|
+
onDismiss && /* @__PURE__ */ jsx59(
|
|
1342
1413
|
"button",
|
|
1343
1414
|
{
|
|
1344
1415
|
type: "button",
|
|
1345
1416
|
className: styles7.dismiss,
|
|
1346
1417
|
onClick: onDismiss,
|
|
1347
1418
|
"aria-label": "Dismiss banner",
|
|
1348
|
-
children: /* @__PURE__ */
|
|
1419
|
+
children: /* @__PURE__ */ jsx59(
|
|
1349
1420
|
"svg",
|
|
1350
1421
|
{
|
|
1351
1422
|
width: "14",
|
|
@@ -1354,7 +1425,7 @@ function SystemBanner({ variant = "info", onDismiss, children }) {
|
|
|
1354
1425
|
fill: "none",
|
|
1355
1426
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1356
1427
|
"aria-hidden": true,
|
|
1357
|
-
children: /* @__PURE__ */
|
|
1428
|
+
children: /* @__PURE__ */ jsx59(
|
|
1358
1429
|
"path",
|
|
1359
1430
|
{
|
|
1360
1431
|
d: "M1 1L13 13M13 1L1 13",
|
|
@@ -1378,7 +1449,7 @@ import {
|
|
|
1378
1449
|
useState
|
|
1379
1450
|
} from "react";
|
|
1380
1451
|
import styles8 from "./Popover.module.css";
|
|
1381
|
-
import { jsx as
|
|
1452
|
+
import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
1382
1453
|
var TRIGGER_GAP = 8;
|
|
1383
1454
|
var VIEWPORT_MARGIN = 4;
|
|
1384
1455
|
function Popover({
|
|
@@ -1454,9 +1525,9 @@ function Popover({
|
|
|
1454
1525
|
document.addEventListener("keydown", handleKeyDown);
|
|
1455
1526
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1456
1527
|
}, [open, onClose]);
|
|
1457
|
-
return /* @__PURE__ */
|
|
1528
|
+
return /* @__PURE__ */ jsxs48("div", { ref: containerRef, className: styles8.container, children: [
|
|
1458
1529
|
trigger,
|
|
1459
|
-
open && /* @__PURE__ */
|
|
1530
|
+
open && /* @__PURE__ */ jsx60(
|
|
1460
1531
|
"div",
|
|
1461
1532
|
{
|
|
1462
1533
|
ref: panelRef,
|
|
@@ -1477,7 +1548,7 @@ function Popover({
|
|
|
1477
1548
|
|
|
1478
1549
|
// src/components/Button/Button.tsx
|
|
1479
1550
|
import styles9 from "./Button.module.css";
|
|
1480
|
-
import { jsx as
|
|
1551
|
+
import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
1481
1552
|
function Button({
|
|
1482
1553
|
variant = "primary",
|
|
1483
1554
|
size = "md",
|
|
@@ -1489,7 +1560,7 @@ function Button({
|
|
|
1489
1560
|
...rest
|
|
1490
1561
|
}) {
|
|
1491
1562
|
const classes = [styles9.button, styles9[variant], styles9[size], className].filter(Boolean).join(" ");
|
|
1492
|
-
return /* @__PURE__ */
|
|
1563
|
+
return /* @__PURE__ */ jsxs49(
|
|
1493
1564
|
"button",
|
|
1494
1565
|
{
|
|
1495
1566
|
type,
|
|
@@ -1501,7 +1572,7 @@ function Button({
|
|
|
1501
1572
|
loading && // aria-hidden: the button's own accessible name (its visible children,
|
|
1502
1573
|
// unchanged below) plus aria-busy already communicate the pending
|
|
1503
1574
|
// state — an unhidden Spinner-style status region would double-narrate it.
|
|
1504
|
-
/* @__PURE__ */
|
|
1575
|
+
/* @__PURE__ */ jsx61("span", { className: styles9.spinner, "aria-hidden": "true" }),
|
|
1505
1576
|
children
|
|
1506
1577
|
]
|
|
1507
1578
|
}
|
|
@@ -1510,23 +1581,23 @@ function Button({
|
|
|
1510
1581
|
|
|
1511
1582
|
// src/components/Input/Input.tsx
|
|
1512
1583
|
import styles10 from "./Input.module.css";
|
|
1513
|
-
import { jsx as
|
|
1584
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
1514
1585
|
function Input({ type = "text", className, ...rest }) {
|
|
1515
1586
|
const classes = [styles10.input, className].filter(Boolean).join(" ");
|
|
1516
|
-
return /* @__PURE__ */
|
|
1587
|
+
return /* @__PURE__ */ jsx62("input", { type, className: classes, ...rest });
|
|
1517
1588
|
}
|
|
1518
1589
|
|
|
1519
1590
|
// src/components/Textarea/Textarea.tsx
|
|
1520
1591
|
import styles11 from "./Textarea.module.css";
|
|
1521
|
-
import { jsx as
|
|
1592
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
1522
1593
|
function Textarea({ className, rows = 4, ...rest }) {
|
|
1523
1594
|
const classes = [styles11.textarea, className].filter(Boolean).join(" ");
|
|
1524
|
-
return /* @__PURE__ */
|
|
1595
|
+
return /* @__PURE__ */ jsx63("textarea", { rows, className: classes, ...rest });
|
|
1525
1596
|
}
|
|
1526
1597
|
|
|
1527
1598
|
// src/components/CodeTextarea/CodeTextarea.tsx
|
|
1528
1599
|
import styles12 from "./CodeTextarea.module.css";
|
|
1529
|
-
import { jsx as
|
|
1600
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
1530
1601
|
function CodeTextarea({
|
|
1531
1602
|
className,
|
|
1532
1603
|
rows = 12,
|
|
@@ -1537,7 +1608,7 @@ function CodeTextarea({
|
|
|
1537
1608
|
...rest
|
|
1538
1609
|
}) {
|
|
1539
1610
|
const classes = [styles12.textarea, invalid ? styles12.invalid : void 0, className].filter(Boolean).join(" ");
|
|
1540
|
-
return /* @__PURE__ */
|
|
1611
|
+
return /* @__PURE__ */ jsx64(
|
|
1541
1612
|
"textarea",
|
|
1542
1613
|
{
|
|
1543
1614
|
rows,
|
|
@@ -1552,7 +1623,7 @@ function CodeTextarea({
|
|
|
1552
1623
|
|
|
1553
1624
|
// src/components/StatusBadge/StatusBadge.tsx
|
|
1554
1625
|
import styles13 from "./StatusBadge.module.css";
|
|
1555
|
-
import { jsx as
|
|
1626
|
+
import { jsx as jsx65, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
1556
1627
|
var STATUS_CLASS = {
|
|
1557
1628
|
unmodified: styles13.neutral,
|
|
1558
1629
|
draft: styles13.info,
|
|
@@ -1580,14 +1651,14 @@ function StatusBadge({
|
|
|
1580
1651
|
"aria-label": ariaLabel
|
|
1581
1652
|
}) {
|
|
1582
1653
|
const label = children ?? STATUS_LABEL[status];
|
|
1583
|
-
return /* @__PURE__ */
|
|
1654
|
+
return /* @__PURE__ */ jsxs50(
|
|
1584
1655
|
"span",
|
|
1585
1656
|
{
|
|
1586
1657
|
className: [styles13.badge, STATUS_CLASS[status], className].filter(Boolean).join(" "),
|
|
1587
1658
|
"aria-label": ariaLabel,
|
|
1588
1659
|
children: [
|
|
1589
|
-
/* @__PURE__ */
|
|
1590
|
-
/* @__PURE__ */
|
|
1660
|
+
/* @__PURE__ */ jsx65("span", { className: styles13.dot, "aria-hidden": "true" }),
|
|
1661
|
+
/* @__PURE__ */ jsx65("span", { className: styles13.label, children: label })
|
|
1591
1662
|
]
|
|
1592
1663
|
}
|
|
1593
1664
|
);
|
|
@@ -1596,7 +1667,7 @@ function StatusBadge({
|
|
|
1596
1667
|
// src/components/SplitPane/SplitPane.tsx
|
|
1597
1668
|
import { useCallback, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
|
|
1598
1669
|
import styles14 from "./SplitPane.module.css";
|
|
1599
|
-
import { jsx as
|
|
1670
|
+
import { jsx as jsx66, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
1600
1671
|
var clampSize = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
1601
1672
|
function SplitPane({
|
|
1602
1673
|
primary,
|
|
@@ -1682,15 +1753,15 @@ function SplitPane({
|
|
|
1682
1753
|
const style = {
|
|
1683
1754
|
"--split-pane-primary-size": `${primarySize}%`
|
|
1684
1755
|
};
|
|
1685
|
-
return /* @__PURE__ */
|
|
1756
|
+
return /* @__PURE__ */ jsxs51(
|
|
1686
1757
|
"div",
|
|
1687
1758
|
{
|
|
1688
1759
|
ref: containerRef,
|
|
1689
1760
|
className: [styles14.splitPane, className].filter(Boolean).join(" "),
|
|
1690
1761
|
style,
|
|
1691
1762
|
children: [
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
resizable && /* @__PURE__ */
|
|
1763
|
+
/* @__PURE__ */ jsx66("section", { className: styles14.pane, "aria-label": primaryLabel, children: primary }),
|
|
1764
|
+
resizable && /* @__PURE__ */ jsx66(
|
|
1694
1765
|
"button",
|
|
1695
1766
|
{
|
|
1696
1767
|
type: "button",
|
|
@@ -1700,7 +1771,7 @@ function SplitPane({
|
|
|
1700
1771
|
onKeyDown: resizeWithKeyboard
|
|
1701
1772
|
}
|
|
1702
1773
|
),
|
|
1703
|
-
/* @__PURE__ */
|
|
1774
|
+
/* @__PURE__ */ jsx66("section", { className: styles14.pane, "aria-label": secondaryLabel, children: secondary })
|
|
1704
1775
|
]
|
|
1705
1776
|
}
|
|
1706
1777
|
);
|
|
@@ -1709,7 +1780,7 @@ function SplitPane({
|
|
|
1709
1780
|
// src/components/TagInput/TagInput.tsx
|
|
1710
1781
|
import { useMemo, useState as useState3 } from "react";
|
|
1711
1782
|
import styles15 from "./TagInput.module.css";
|
|
1712
|
-
import { jsx as
|
|
1783
|
+
import { jsx as jsx67, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
1713
1784
|
var DEFAULT_SEPARATORS = /[\n,]+/;
|
|
1714
1785
|
var splitTags = (value, separators) => value.split(separators).map((tag) => tag.trim()).filter(Boolean);
|
|
1715
1786
|
function TagInput({
|
|
@@ -1783,8 +1854,8 @@ function TagInput({
|
|
|
1783
1854
|
event.preventDefault();
|
|
1784
1855
|
addTags(tags);
|
|
1785
1856
|
};
|
|
1786
|
-
return /* @__PURE__ */
|
|
1787
|
-
/* @__PURE__ */
|
|
1857
|
+
return /* @__PURE__ */ jsxs52("div", { className: [styles15.wrapper, className].filter(Boolean).join(" "), children: [
|
|
1858
|
+
/* @__PURE__ */ jsxs52(
|
|
1788
1859
|
"div",
|
|
1789
1860
|
{
|
|
1790
1861
|
className: [
|
|
@@ -1793,9 +1864,9 @@ function TagInput({
|
|
|
1793
1864
|
error || localError || ariaInvalid ? styles15.invalid : void 0
|
|
1794
1865
|
].filter(Boolean).join(" "),
|
|
1795
1866
|
children: [
|
|
1796
|
-
value.map((tag, index) => /* @__PURE__ */
|
|
1797
|
-
/* @__PURE__ */
|
|
1798
|
-
/* @__PURE__ */
|
|
1867
|
+
value.map((tag, index) => /* @__PURE__ */ jsxs52("span", { className: styles15.tag, children: [
|
|
1868
|
+
/* @__PURE__ */ jsx67("span", { className: styles15.tagLabel, children: tag }),
|
|
1869
|
+
/* @__PURE__ */ jsx67(
|
|
1799
1870
|
"button",
|
|
1800
1871
|
{
|
|
1801
1872
|
type: "button",
|
|
@@ -1807,7 +1878,7 @@ function TagInput({
|
|
|
1807
1878
|
}
|
|
1808
1879
|
)
|
|
1809
1880
|
] }, `${tag}-${index}`)),
|
|
1810
|
-
/* @__PURE__ */
|
|
1881
|
+
/* @__PURE__ */ jsx67(
|
|
1811
1882
|
"input",
|
|
1812
1883
|
{
|
|
1813
1884
|
id,
|
|
@@ -1829,7 +1900,7 @@ function TagInput({
|
|
|
1829
1900
|
]
|
|
1830
1901
|
}
|
|
1831
1902
|
),
|
|
1832
|
-
message && /* @__PURE__ */
|
|
1903
|
+
message && /* @__PURE__ */ jsx67(
|
|
1833
1904
|
"p",
|
|
1834
1905
|
{
|
|
1835
1906
|
id: messageId,
|
|
@@ -1888,7 +1959,7 @@ function usePrefersReducedMotion() {
|
|
|
1888
1959
|
|
|
1889
1960
|
// src/components/OverlayHeader/OverlayHeader.tsx
|
|
1890
1961
|
import styles16 from "./OverlayHeader.module.css";
|
|
1891
|
-
import { jsx as
|
|
1962
|
+
import { jsx as jsx68, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
1892
1963
|
function OverlayHeader({
|
|
1893
1964
|
title,
|
|
1894
1965
|
onClose,
|
|
@@ -1897,20 +1968,20 @@ function OverlayHeader({
|
|
|
1897
1968
|
secondRow,
|
|
1898
1969
|
className
|
|
1899
1970
|
}) {
|
|
1900
|
-
return /* @__PURE__ */
|
|
1901
|
-
/* @__PURE__ */
|
|
1902
|
-
onBack && /* @__PURE__ */
|
|
1903
|
-
/* @__PURE__ */
|
|
1904
|
-
action && /* @__PURE__ */
|
|
1905
|
-
/* @__PURE__ */
|
|
1971
|
+
return /* @__PURE__ */ jsxs53("div", { className: [styles16.header, className].filter(Boolean).join(" "), children: [
|
|
1972
|
+
/* @__PURE__ */ jsxs53("div", { className: styles16.row, children: [
|
|
1973
|
+
onBack && /* @__PURE__ */ jsx68("button", { type: "button", className: styles16.backButton, "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ jsx68(Icon, { name: "chevron-left", size: "md", "aria-hidden": true }) }),
|
|
1974
|
+
/* @__PURE__ */ jsx68("span", { className: styles16.title, children: title }),
|
|
1975
|
+
action && /* @__PURE__ */ jsx68("div", { className: styles16.action, children: action }),
|
|
1976
|
+
/* @__PURE__ */ jsx68("button", { type: "button", className: styles16.closeButton, "aria-label": "Close", onClick: onClose, children: /* @__PURE__ */ jsx68(Icon, { name: "x", size: "sm", "aria-hidden": true }) })
|
|
1906
1977
|
] }),
|
|
1907
|
-
secondRow && /* @__PURE__ */
|
|
1978
|
+
secondRow && /* @__PURE__ */ jsx68("div", { className: styles16.secondRow, children: secondRow })
|
|
1908
1979
|
] });
|
|
1909
1980
|
}
|
|
1910
1981
|
|
|
1911
1982
|
// src/components/Dialog/Dialog.tsx
|
|
1912
1983
|
import styles17 from "./Dialog.module.css";
|
|
1913
|
-
import { jsx as
|
|
1984
|
+
import { jsx as jsx69, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
1914
1985
|
var MOTION_DURATION_MS = 250;
|
|
1915
1986
|
var OverlaySecondRowContext = createContext(
|
|
1916
1987
|
void 0
|
|
@@ -1986,7 +2057,7 @@ function Dialog({
|
|
|
1986
2057
|
return (
|
|
1987
2058
|
// role="presentation" removes the scrim from the AT (it is purely visual).
|
|
1988
2059
|
// e.target check lets clicks inside the panel bubble without triggering dismiss.
|
|
1989
|
-
/* @__PURE__ */
|
|
2060
|
+
/* @__PURE__ */ jsx69(
|
|
1990
2061
|
"div",
|
|
1991
2062
|
{
|
|
1992
2063
|
className: [styles17.scrim, isOpenPhase ? styles17.scrimOpen : ""].filter(Boolean).join(" "),
|
|
@@ -1997,7 +2068,7 @@ function Dialog({
|
|
|
1997
2068
|
onKeyDown: (e) => {
|
|
1998
2069
|
if (e.key === "Escape") onClose();
|
|
1999
2070
|
},
|
|
2000
|
-
children: /* @__PURE__ */
|
|
2071
|
+
children: /* @__PURE__ */ jsxs54(
|
|
2001
2072
|
"div",
|
|
2002
2073
|
{
|
|
2003
2074
|
ref: panelRef,
|
|
@@ -2007,7 +2078,7 @@ function Dialog({
|
|
|
2007
2078
|
tabIndex: -1,
|
|
2008
2079
|
className: [styles17.panel, styles17[size], isOpenPhase ? styles17.panelOpen : ""].filter(Boolean).join(" "),
|
|
2009
2080
|
children: [
|
|
2010
|
-
/* @__PURE__ */
|
|
2081
|
+
/* @__PURE__ */ jsx69(
|
|
2011
2082
|
OverlayHeader,
|
|
2012
2083
|
{
|
|
2013
2084
|
title,
|
|
@@ -2016,8 +2087,8 @@ function Dialog({
|
|
|
2016
2087
|
className: styles17.mobileHeader
|
|
2017
2088
|
}
|
|
2018
2089
|
),
|
|
2019
|
-
/* @__PURE__ */
|
|
2020
|
-
/* @__PURE__ */
|
|
2090
|
+
/* @__PURE__ */ jsx69("button", { type: "button", className: styles17.close, "aria-label": "Close", onClick: onClose, children: "\xD7" }),
|
|
2091
|
+
/* @__PURE__ */ jsx69("div", { className: styles17.content, children: /* @__PURE__ */ jsx69(OverlaySecondRowContext.Provider, { value: setSecondRow, children }) })
|
|
2021
2092
|
]
|
|
2022
2093
|
}
|
|
2023
2094
|
)
|
|
@@ -2029,7 +2100,7 @@ function Dialog({
|
|
|
2029
2100
|
// src/components/Drawer/Drawer.tsx
|
|
2030
2101
|
import { useEffect as useEffect5, useRef as useRef4 } from "react";
|
|
2031
2102
|
import styles18 from "./Drawer.module.css";
|
|
2032
|
-
import { jsx as
|
|
2103
|
+
import { jsx as jsx70, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
2033
2104
|
var MOTION_DURATION_MS2 = 250;
|
|
2034
2105
|
var FOCUSABLE2 = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
2035
2106
|
var SWIPE_DISMISS_THRESHOLD_PX = 100;
|
|
@@ -2118,7 +2189,7 @@ function Drawer({
|
|
|
2118
2189
|
return (
|
|
2119
2190
|
// role="presentation" removes the scrim from the AT (it is purely visual).
|
|
2120
2191
|
// e.target check lets clicks inside the panel bubble without triggering dismiss.
|
|
2121
|
-
/* @__PURE__ */
|
|
2192
|
+
/* @__PURE__ */ jsx70(
|
|
2122
2193
|
"div",
|
|
2123
2194
|
{
|
|
2124
2195
|
className: [styles18.scrim, isOpenPhase ? styles18.scrimOpen : ""].filter(Boolean).join(" "),
|
|
@@ -2129,7 +2200,7 @@ function Drawer({
|
|
|
2129
2200
|
onKeyDown: (e) => {
|
|
2130
2201
|
if (e.key === "Escape") onClose();
|
|
2131
2202
|
},
|
|
2132
|
-
children: /* @__PURE__ */
|
|
2203
|
+
children: /* @__PURE__ */ jsxs55(
|
|
2133
2204
|
"div",
|
|
2134
2205
|
{
|
|
2135
2206
|
ref: panelRef,
|
|
@@ -2143,7 +2214,7 @@ function Drawer({
|
|
|
2143
2214
|
isOpenPhase ? styles18.panelOpen : ""
|
|
2144
2215
|
].filter(Boolean).join(" "),
|
|
2145
2216
|
children: [
|
|
2146
|
-
/* @__PURE__ */
|
|
2217
|
+
/* @__PURE__ */ jsx70(
|
|
2147
2218
|
"div",
|
|
2148
2219
|
{
|
|
2149
2220
|
className: styles18.handle,
|
|
@@ -2166,7 +2237,7 @@ function Drawer({
|
|
|
2166
2237
|
// src/components/Sheet/Sheet.tsx
|
|
2167
2238
|
import { useEffect as useEffect6, useRef as useRef5 } from "react";
|
|
2168
2239
|
import styles19 from "./Sheet.module.css";
|
|
2169
|
-
import { jsx as
|
|
2240
|
+
import { jsx as jsx71, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
2170
2241
|
var FOCUSABLE3 = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
2171
2242
|
var MOTION_DURATION_MS3 = 250;
|
|
2172
2243
|
function Sheet({
|
|
@@ -2227,7 +2298,7 @@ function Sheet({
|
|
|
2227
2298
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
2228
2299
|
}, [open, onClose]);
|
|
2229
2300
|
if (!mounted) return null;
|
|
2230
|
-
return /* @__PURE__ */
|
|
2301
|
+
return /* @__PURE__ */ jsxs56(
|
|
2231
2302
|
"div",
|
|
2232
2303
|
{
|
|
2233
2304
|
ref: panelRef,
|
|
@@ -2241,8 +2312,8 @@ function Sheet({
|
|
|
2241
2312
|
phase === "open" ? styles19.panelOpen : ""
|
|
2242
2313
|
].filter(Boolean).join(" "),
|
|
2243
2314
|
children: [
|
|
2244
|
-
title && /* @__PURE__ */
|
|
2245
|
-
/* @__PURE__ */
|
|
2315
|
+
title && /* @__PURE__ */ jsx71(OverlayHeader, { title, onClose, onBack, action: headerAction }),
|
|
2316
|
+
/* @__PURE__ */ jsx71("div", { className: styles19.content, children })
|
|
2246
2317
|
]
|
|
2247
2318
|
}
|
|
2248
2319
|
);
|
|
@@ -2251,7 +2322,7 @@ function Sheet({
|
|
|
2251
2322
|
// src/components/ConfirmDialog/ConfirmDialog.tsx
|
|
2252
2323
|
import { useEffect as useEffect7, useRef as useRef6 } from "react";
|
|
2253
2324
|
import styles20 from "./ConfirmDialog.module.css";
|
|
2254
|
-
import { jsx as
|
|
2325
|
+
import { jsx as jsx72, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
2255
2326
|
function ConfirmDialog({
|
|
2256
2327
|
open,
|
|
2257
2328
|
onClose,
|
|
@@ -2280,7 +2351,7 @@ function ConfirmDialog({
|
|
|
2280
2351
|
}, [onClose]);
|
|
2281
2352
|
return (
|
|
2282
2353
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
|
|
2283
|
-
/* @__PURE__ */
|
|
2354
|
+
/* @__PURE__ */ jsx72(
|
|
2284
2355
|
"dialog",
|
|
2285
2356
|
{
|
|
2286
2357
|
ref: dialogRef,
|
|
@@ -2289,12 +2360,12 @@ function ConfirmDialog({
|
|
|
2289
2360
|
onClick: (e) => {
|
|
2290
2361
|
if (e.target === e.currentTarget) onClose();
|
|
2291
2362
|
},
|
|
2292
|
-
children: /* @__PURE__ */
|
|
2293
|
-
/* @__PURE__ */
|
|
2294
|
-
/* @__PURE__ */
|
|
2295
|
-
error && /* @__PURE__ */
|
|
2296
|
-
/* @__PURE__ */
|
|
2297
|
-
/* @__PURE__ */
|
|
2363
|
+
children: /* @__PURE__ */ jsxs57("div", { className: styles20.body, children: [
|
|
2364
|
+
/* @__PURE__ */ jsx72("h2", { className: styles20.title, children: title }),
|
|
2365
|
+
/* @__PURE__ */ jsx72("div", { className: styles20.message, children: message }),
|
|
2366
|
+
error && /* @__PURE__ */ jsx72("p", { className: styles20.error, children: error }),
|
|
2367
|
+
/* @__PURE__ */ jsxs57("div", { className: styles20.actions, children: [
|
|
2368
|
+
/* @__PURE__ */ jsx72(Button, { type: "button", variant: "secondary", onClick: onClose, disabled: pending, children: cancelLabel }),
|
|
2298
2369
|
destructive ? (
|
|
2299
2370
|
// A solid red fill, not Button's own `destructive` variant (an
|
|
2300
2371
|
// outlined/ghost style meant for lower-emphasis placements) — a
|
|
@@ -2303,7 +2374,7 @@ function ConfirmDialog({
|
|
|
2303
2374
|
// -text-on-error tokens the codebase already introduced for this
|
|
2304
2375
|
// exact "reads as a filled action button, not a tinted status
|
|
2305
2376
|
// surface" case (see semantic.css).
|
|
2306
|
-
/* @__PURE__ */
|
|
2377
|
+
/* @__PURE__ */ jsx72(
|
|
2307
2378
|
"button",
|
|
2308
2379
|
{
|
|
2309
2380
|
type: "button",
|
|
@@ -2313,7 +2384,7 @@ function ConfirmDialog({
|
|
|
2313
2384
|
children: confirmLabel
|
|
2314
2385
|
}
|
|
2315
2386
|
)
|
|
2316
|
-
) : /* @__PURE__ */
|
|
2387
|
+
) : /* @__PURE__ */ jsx72(Button, { type: "button", variant: "primary", onClick: onConfirm, disabled: pending, children: confirmLabel })
|
|
2317
2388
|
] })
|
|
2318
2389
|
] })
|
|
2319
2390
|
}
|
|
@@ -2475,20 +2546,30 @@ function useIsMobile(breakpointPx = MOBILE_BREAKPOINT_PX) {
|
|
|
2475
2546
|
return isMobile;
|
|
2476
2547
|
}
|
|
2477
2548
|
|
|
2549
|
+
// src/hooks/useCommitOnEnterOrBlur.ts
|
|
2550
|
+
function useCommitOnEnterOrBlur(onCommit) {
|
|
2551
|
+
return {
|
|
2552
|
+
onKeyDown: (e) => {
|
|
2553
|
+
if (e.key === "Enter") onCommit();
|
|
2554
|
+
},
|
|
2555
|
+
onBlur: onCommit
|
|
2556
|
+
};
|
|
2557
|
+
}
|
|
2558
|
+
|
|
2478
2559
|
// src/components/Menu/Menu.tsx
|
|
2479
2560
|
import styles21 from "./Menu.module.css";
|
|
2480
|
-
import { Fragment, jsx as
|
|
2561
|
+
import { Fragment, jsx as jsx73, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
2481
2562
|
function Menu({ trigger, open, onClose, items, "aria-label": ariaLabel, align }) {
|
|
2482
2563
|
const isMobile = useIsMobile();
|
|
2483
|
-
const list = /* @__PURE__ */
|
|
2564
|
+
const list = /* @__PURE__ */ jsx73("ul", { className: styles21.list, role: "menu", children: items.map((entry, index) => {
|
|
2484
2565
|
if (entry.type === "separator") {
|
|
2485
|
-
return /* @__PURE__ */
|
|
2566
|
+
return /* @__PURE__ */ jsx73("li", { role: "separator", className: styles21.separator }, index);
|
|
2486
2567
|
}
|
|
2487
2568
|
if (entry.type === "label") {
|
|
2488
|
-
return /* @__PURE__ */
|
|
2569
|
+
return /* @__PURE__ */ jsx73("li", { role: "presentation", className: styles21.label, children: entry.label }, index);
|
|
2489
2570
|
}
|
|
2490
2571
|
const isCheckable = entry.checked !== void 0;
|
|
2491
|
-
return /* @__PURE__ */
|
|
2572
|
+
return /* @__PURE__ */ jsx73("li", { role: "none", children: /* @__PURE__ */ jsxs58(
|
|
2492
2573
|
"button",
|
|
2493
2574
|
{
|
|
2494
2575
|
role: isCheckable ? "menuitemradio" : "menuitem",
|
|
@@ -2501,20 +2582,20 @@ function Menu({ trigger, open, onClose, items, "aria-label": ariaLabel, align })
|
|
|
2501
2582
|
entry.onSelect();
|
|
2502
2583
|
},
|
|
2503
2584
|
children: [
|
|
2504
|
-
isCheckable && /* @__PURE__ */
|
|
2505
|
-
entry.icon && /* @__PURE__ */
|
|
2585
|
+
isCheckable && /* @__PURE__ */ jsx73("span", { className: styles21.check, "aria-hidden": true, children: entry.checked && /* @__PURE__ */ jsx73(Icon, { name: "check", size: "sm", "aria-hidden": true }) }),
|
|
2586
|
+
entry.icon && /* @__PURE__ */ jsx73(Icon, { name: entry.icon, size: "sm", "aria-hidden": true }),
|
|
2506
2587
|
entry.label
|
|
2507
2588
|
]
|
|
2508
2589
|
}
|
|
2509
2590
|
) }, index);
|
|
2510
2591
|
}) });
|
|
2511
2592
|
if (isMobile) {
|
|
2512
|
-
return /* @__PURE__ */
|
|
2593
|
+
return /* @__PURE__ */ jsxs58(Fragment, { children: [
|
|
2513
2594
|
trigger,
|
|
2514
|
-
/* @__PURE__ */
|
|
2595
|
+
/* @__PURE__ */ jsx73(Drawer, { open, onClose, "aria-label": ariaLabel, children: list })
|
|
2515
2596
|
] });
|
|
2516
2597
|
}
|
|
2517
|
-
return /* @__PURE__ */
|
|
2598
|
+
return /* @__PURE__ */ jsx73(Popover, { trigger, open, onClose, "aria-label": ariaLabel, align, children: list });
|
|
2518
2599
|
}
|
|
2519
2600
|
|
|
2520
2601
|
// src/components/Toast/Toast.tsx
|
|
@@ -2529,7 +2610,7 @@ import {
|
|
|
2529
2610
|
useState as useState8
|
|
2530
2611
|
} from "react";
|
|
2531
2612
|
import styles22 from "./Toast.module.css";
|
|
2532
|
-
import { jsx as
|
|
2613
|
+
import { jsx as jsx74, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
2533
2614
|
var ToastContext = createContext2(null);
|
|
2534
2615
|
function useToast() {
|
|
2535
2616
|
const ctx = useContext2(ToastContext);
|
|
@@ -2567,16 +2648,16 @@ function ToastProvider({ children }) {
|
|
|
2567
2648
|
};
|
|
2568
2649
|
}, []);
|
|
2569
2650
|
const value = useMemo2(() => ({ show, dismiss }), [show, dismiss]);
|
|
2570
|
-
return /* @__PURE__ */
|
|
2651
|
+
return /* @__PURE__ */ jsxs59(ToastContext.Provider, { value, children: [
|
|
2571
2652
|
children,
|
|
2572
|
-
/* @__PURE__ */
|
|
2653
|
+
/* @__PURE__ */ jsx74(
|
|
2573
2654
|
"ol",
|
|
2574
2655
|
{
|
|
2575
2656
|
className: styles22.region,
|
|
2576
2657
|
"aria-label": "Notifications",
|
|
2577
2658
|
"aria-live": "polite",
|
|
2578
2659
|
"aria-atomic": "false",
|
|
2579
|
-
children: toasts.map((toast) => /* @__PURE__ */
|
|
2660
|
+
children: toasts.map((toast) => /* @__PURE__ */ jsx74(Toast, { ...toast, onDismiss: dismiss }, toast.id))
|
|
2580
2661
|
}
|
|
2581
2662
|
)
|
|
2582
2663
|
] });
|
|
@@ -2599,18 +2680,18 @@ function Toast({
|
|
|
2599
2680
|
}) {
|
|
2600
2681
|
const categoryClass = styles22[category] ?? styles22.info;
|
|
2601
2682
|
const iconName = CATEGORY_ICON[category] ?? "info";
|
|
2602
|
-
return /* @__PURE__ */
|
|
2683
|
+
return /* @__PURE__ */ jsxs59(
|
|
2603
2684
|
"li",
|
|
2604
2685
|
{
|
|
2605
2686
|
role: "status",
|
|
2606
2687
|
className: `${styles22.toast} ${String(categoryClass)} ${exiting ? styles22.exiting : ""}`,
|
|
2607
2688
|
children: [
|
|
2608
|
-
/* @__PURE__ */
|
|
2609
|
-
/* @__PURE__ */
|
|
2610
|
-
/* @__PURE__ */
|
|
2611
|
-
message && /* @__PURE__ */
|
|
2689
|
+
/* @__PURE__ */ jsx74("span", { className: styles22.icon, "aria-hidden": "true", children: /* @__PURE__ */ jsx74(Icon, { name: iconName, size: "sm", "aria-hidden": true }) }),
|
|
2690
|
+
/* @__PURE__ */ jsxs59("div", { className: styles22.body, children: [
|
|
2691
|
+
/* @__PURE__ */ jsx74("div", { className: styles22.title, children: title }),
|
|
2692
|
+
message && /* @__PURE__ */ jsx74("div", { className: styles22.message, children: message })
|
|
2612
2693
|
] }),
|
|
2613
|
-
/* @__PURE__ */
|
|
2694
|
+
/* @__PURE__ */ jsx74(
|
|
2614
2695
|
"button",
|
|
2615
2696
|
{
|
|
2616
2697
|
type: "button",
|
|
@@ -2627,7 +2708,7 @@ function Toast({
|
|
|
2627
2708
|
|
|
2628
2709
|
// src/components/Card/Card.tsx
|
|
2629
2710
|
import styles23 from "./Card.module.css";
|
|
2630
|
-
import { jsx as
|
|
2711
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
2631
2712
|
var paddingClass = {
|
|
2632
2713
|
sm: styles23.paddingSm,
|
|
2633
2714
|
md: styles23.paddingMd,
|
|
@@ -2642,13 +2723,13 @@ function Card({
|
|
|
2642
2723
|
...rest
|
|
2643
2724
|
}) {
|
|
2644
2725
|
const cls = [styles23.card, paddingClass[padding], interactive && styles23.interactive, className].filter(Boolean).join(" ");
|
|
2645
|
-
return /* @__PURE__ */
|
|
2726
|
+
return /* @__PURE__ */ jsx75(Tag, { className: cls, ...rest, children });
|
|
2646
2727
|
}
|
|
2647
2728
|
|
|
2648
2729
|
// src/components/FormField/FormField.tsx
|
|
2649
2730
|
import { useId as useId2 } from "react";
|
|
2650
2731
|
import styles24 from "./FormField.module.css";
|
|
2651
|
-
import { jsx as
|
|
2732
|
+
import { jsx as jsx76, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
2652
2733
|
function FormField({
|
|
2653
2734
|
label,
|
|
2654
2735
|
hint,
|
|
@@ -2669,52 +2750,52 @@ function FormField({
|
|
|
2669
2750
|
"aria-invalid": error ? true : void 0,
|
|
2670
2751
|
required: required || void 0
|
|
2671
2752
|
};
|
|
2672
|
-
return /* @__PURE__ */
|
|
2673
|
-
/* @__PURE__ */
|
|
2753
|
+
return /* @__PURE__ */ jsxs60("div", { className: [styles24.field, className].filter(Boolean).join(" "), children: [
|
|
2754
|
+
/* @__PURE__ */ jsxs60("label", { className: styles24.label, htmlFor: fieldId, children: [
|
|
2674
2755
|
label,
|
|
2675
|
-
required && /* @__PURE__ */
|
|
2756
|
+
required && /* @__PURE__ */ jsx76("span", { className: styles24.required, "aria-hidden": "true", children: "*" })
|
|
2676
2757
|
] }),
|
|
2677
2758
|
children(field),
|
|
2678
|
-
hint && !error && /* @__PURE__ */
|
|
2679
|
-
error && /* @__PURE__ */
|
|
2759
|
+
hint && !error && /* @__PURE__ */ jsx76("p", { id: hintId, className: styles24.hint, children: hint }),
|
|
2760
|
+
error && /* @__PURE__ */ jsx76("p", { id: errorId, className: styles24.error, role: "alert", children: error })
|
|
2680
2761
|
] });
|
|
2681
2762
|
}
|
|
2682
2763
|
|
|
2683
2764
|
// src/components/PageHeader/PageHeader.tsx
|
|
2684
2765
|
import styles25 from "./PageHeader.module.css";
|
|
2685
|
-
import { jsx as
|
|
2766
|
+
import { jsx as jsx77, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
2686
2767
|
function PageHeader({ title, description, action, className }) {
|
|
2687
|
-
return /* @__PURE__ */
|
|
2688
|
-
/* @__PURE__ */
|
|
2689
|
-
/* @__PURE__ */
|
|
2690
|
-
description && /* @__PURE__ */
|
|
2768
|
+
return /* @__PURE__ */ jsxs61("header", { className: [styles25.header, className].filter(Boolean).join(" "), children: [
|
|
2769
|
+
/* @__PURE__ */ jsxs61("div", { className: styles25.text, children: [
|
|
2770
|
+
/* @__PURE__ */ jsx77("h1", { className: styles25.title, children: title }),
|
|
2771
|
+
description && /* @__PURE__ */ jsx77("p", { className: styles25.description, children: description })
|
|
2691
2772
|
] }),
|
|
2692
|
-
action && /* @__PURE__ */
|
|
2773
|
+
action && /* @__PURE__ */ jsx77("div", { className: styles25.action, children: action })
|
|
2693
2774
|
] });
|
|
2694
2775
|
}
|
|
2695
2776
|
|
|
2696
2777
|
// src/components/EmptyState/EmptyState.tsx
|
|
2697
2778
|
import styles26 from "./EmptyState.module.css";
|
|
2698
|
-
import { jsx as
|
|
2779
|
+
import { jsx as jsx78, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
2699
2780
|
function EmptyState({ icon, heading, description, action, className }) {
|
|
2700
|
-
return /* @__PURE__ */
|
|
2701
|
-
icon && /* @__PURE__ */
|
|
2702
|
-
/* @__PURE__ */
|
|
2703
|
-
description && /* @__PURE__ */
|
|
2781
|
+
return /* @__PURE__ */ jsxs62("div", { className: [styles26.root, className].filter(Boolean).join(" "), children: [
|
|
2782
|
+
icon && /* @__PURE__ */ jsx78("span", { className: styles26.icon, children: /* @__PURE__ */ jsx78(Icon, { name: icon, size: "lg", "aria-hidden": true }) }),
|
|
2783
|
+
/* @__PURE__ */ jsx78("h2", { className: styles26.heading, children: heading }),
|
|
2784
|
+
description && /* @__PURE__ */ jsx78("p", { className: styles26.description, children: description }),
|
|
2704
2785
|
action
|
|
2705
2786
|
] });
|
|
2706
2787
|
}
|
|
2707
2788
|
|
|
2708
2789
|
// src/components/Spinner/Spinner.tsx
|
|
2709
2790
|
import styles27 from "./Spinner.module.css";
|
|
2710
|
-
import { jsx as
|
|
2791
|
+
import { jsx as jsx79 } from "react/jsx-runtime";
|
|
2711
2792
|
var sizeClass = {
|
|
2712
2793
|
sm: styles27.sm,
|
|
2713
2794
|
md: styles27.md,
|
|
2714
2795
|
lg: styles27.lg
|
|
2715
2796
|
};
|
|
2716
2797
|
function Spinner({ size = "md", label = "Loading\u2026", className }) {
|
|
2717
|
-
return /* @__PURE__ */
|
|
2798
|
+
return /* @__PURE__ */ jsx79(
|
|
2718
2799
|
"span",
|
|
2719
2800
|
{
|
|
2720
2801
|
role: "status",
|
|
@@ -2727,7 +2808,7 @@ function Spinner({ size = "md", label = "Loading\u2026", className }) {
|
|
|
2727
2808
|
// src/components/Avatar/Avatar.tsx
|
|
2728
2809
|
import { useState as useState9 } from "react";
|
|
2729
2810
|
import styles28 from "./Avatar.module.css";
|
|
2730
|
-
import { jsx as
|
|
2811
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
2731
2812
|
function initials(name) {
|
|
2732
2813
|
const parts = name.trim().split(/\s+/);
|
|
2733
2814
|
if (parts.length === 1) return (parts[0] ?? "").slice(0, 2).toUpperCase();
|
|
@@ -2742,21 +2823,21 @@ function Avatar({ name, src, size = "md", className }) {
|
|
|
2742
2823
|
const [imgFailed, setImgFailed] = useState9(false);
|
|
2743
2824
|
const cls = [styles28.avatar, sizeClass2[size], className].filter(Boolean).join(" ");
|
|
2744
2825
|
if (src && !imgFailed) {
|
|
2745
|
-
return /* @__PURE__ */
|
|
2826
|
+
return /* @__PURE__ */ jsx80("span", { className: cls, "aria-label": name, children: /* @__PURE__ */ jsx80("img", { src, alt: name, className: styles28.img, onError: () => setImgFailed(true) }) });
|
|
2746
2827
|
}
|
|
2747
|
-
return /* @__PURE__ */
|
|
2828
|
+
return /* @__PURE__ */ jsx80("span", { className: cls, "aria-label": name, children: initials(name) });
|
|
2748
2829
|
}
|
|
2749
2830
|
|
|
2750
2831
|
// src/components/NavTabs/NavTabs.tsx
|
|
2751
2832
|
import styles29 from "./NavTabs.module.css";
|
|
2752
|
-
import { jsx as
|
|
2833
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
2753
2834
|
function NavTabs({ items, className, "aria-label": ariaLabel }) {
|
|
2754
|
-
return /* @__PURE__ */
|
|
2835
|
+
return /* @__PURE__ */ jsx81(
|
|
2755
2836
|
"nav",
|
|
2756
2837
|
{
|
|
2757
2838
|
className: [styles29.nav, className].filter(Boolean).join(" "),
|
|
2758
2839
|
"aria-label": ariaLabel ?? "Page navigation",
|
|
2759
|
-
children: items.map((item) => /* @__PURE__ */
|
|
2840
|
+
children: items.map((item) => /* @__PURE__ */ jsx81(
|
|
2760
2841
|
"a",
|
|
2761
2842
|
{
|
|
2762
2843
|
href: item.href,
|
|
@@ -2773,7 +2854,7 @@ function NavTabs({ items, className, "aria-label": ariaLabel }) {
|
|
|
2773
2854
|
// src/components/Tooltip/Tooltip.tsx
|
|
2774
2855
|
import { useId as useId3 } from "react";
|
|
2775
2856
|
import styles30 from "./Tooltip.module.css";
|
|
2776
|
-
import { jsx as
|
|
2857
|
+
import { jsx as jsx82, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
2777
2858
|
var sideClass = {
|
|
2778
2859
|
top: styles30.top,
|
|
2779
2860
|
bottom: styles30.bottom,
|
|
@@ -2782,15 +2863,15 @@ var sideClass = {
|
|
|
2782
2863
|
};
|
|
2783
2864
|
function Tooltip({ content, children, side = "top" }) {
|
|
2784
2865
|
const tipId = useId3();
|
|
2785
|
-
return /* @__PURE__ */
|
|
2786
|
-
/* @__PURE__ */
|
|
2787
|
-
/* @__PURE__ */
|
|
2866
|
+
return /* @__PURE__ */ jsxs63("span", { className: styles30.wrapper, children: [
|
|
2867
|
+
/* @__PURE__ */ jsx82("span", { "aria-describedby": tipId, children }),
|
|
2868
|
+
/* @__PURE__ */ jsx82("span", { id: tipId, role: "tooltip", className: [styles30.tip, sideClass[side]].join(" "), children: content })
|
|
2788
2869
|
] });
|
|
2789
2870
|
}
|
|
2790
2871
|
|
|
2791
2872
|
// src/components/Checkbox/Checkbox.tsx
|
|
2792
2873
|
import styles31 from "./Checkbox.module.css";
|
|
2793
|
-
import { jsx as
|
|
2874
|
+
import { jsx as jsx83, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
2794
2875
|
function Checkbox({
|
|
2795
2876
|
checked,
|
|
2796
2877
|
onChange,
|
|
@@ -2802,9 +2883,9 @@ function Checkbox({
|
|
|
2802
2883
|
...rest
|
|
2803
2884
|
}) {
|
|
2804
2885
|
const inputId = id ?? `checkbox-${label.toLowerCase().replace(/\s+/g, "-")}`;
|
|
2805
|
-
return /* @__PURE__ */
|
|
2806
|
-
/* @__PURE__ */
|
|
2807
|
-
/* @__PURE__ */
|
|
2886
|
+
return /* @__PURE__ */ jsxs64("span", { className: [styles31.root, className].filter(Boolean).join(" "), children: [
|
|
2887
|
+
/* @__PURE__ */ jsxs64("span", { className: [styles31.box, checked ? styles31.checked : ""].filter(Boolean).join(" "), children: [
|
|
2888
|
+
/* @__PURE__ */ jsx83(
|
|
2808
2889
|
"input",
|
|
2809
2890
|
{
|
|
2810
2891
|
...rest,
|
|
@@ -2816,7 +2897,7 @@ function Checkbox({
|
|
|
2816
2897
|
onChange: (e) => onChange(e.target.checked)
|
|
2817
2898
|
}
|
|
2818
2899
|
),
|
|
2819
|
-
checked && /* @__PURE__ */
|
|
2900
|
+
checked && /* @__PURE__ */ jsx83("svg", { className: styles31.tick, viewBox: "0 0 10 8", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx83(
|
|
2820
2901
|
"path",
|
|
2821
2902
|
{
|
|
2822
2903
|
d: "M1 4l3 3 5-6",
|
|
@@ -2827,7 +2908,7 @@ function Checkbox({
|
|
|
2827
2908
|
}
|
|
2828
2909
|
) })
|
|
2829
2910
|
] }),
|
|
2830
|
-
label && /* @__PURE__ */
|
|
2911
|
+
label && /* @__PURE__ */ jsx83(
|
|
2831
2912
|
"label",
|
|
2832
2913
|
{
|
|
2833
2914
|
htmlFor: inputId,
|
|
@@ -2844,7 +2925,7 @@ function Checkbox({
|
|
|
2844
2925
|
|
|
2845
2926
|
// src/components/DragHandleRow/DragHandleRow.tsx
|
|
2846
2927
|
import styles32 from "./DragHandleRow.module.css";
|
|
2847
|
-
import { jsx as
|
|
2928
|
+
import { jsx as jsx84, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
2848
2929
|
function DragHandleRow({
|
|
2849
2930
|
children,
|
|
2850
2931
|
handleProps,
|
|
@@ -2852,13 +2933,13 @@ function DragHandleRow({
|
|
|
2852
2933
|
className,
|
|
2853
2934
|
...rest
|
|
2854
2935
|
}) {
|
|
2855
|
-
return /* @__PURE__ */
|
|
2936
|
+
return /* @__PURE__ */ jsxs65(
|
|
2856
2937
|
"div",
|
|
2857
2938
|
{
|
|
2858
2939
|
...rest,
|
|
2859
2940
|
className: [styles32.row, isDragging ? styles32.dragging : "", className].filter(Boolean).join(" "),
|
|
2860
2941
|
children: [
|
|
2861
|
-
/* @__PURE__ */
|
|
2942
|
+
/* @__PURE__ */ jsx84(
|
|
2862
2943
|
"button",
|
|
2863
2944
|
{
|
|
2864
2945
|
type: "button",
|
|
@@ -2866,16 +2947,16 @@ function DragHandleRow({
|
|
|
2866
2947
|
className: styles32.handle,
|
|
2867
2948
|
tabIndex: -1,
|
|
2868
2949
|
...handleProps,
|
|
2869
|
-
children: /* @__PURE__ */
|
|
2950
|
+
children: /* @__PURE__ */ jsx84(DragIcon, {})
|
|
2870
2951
|
}
|
|
2871
2952
|
),
|
|
2872
|
-
/* @__PURE__ */
|
|
2953
|
+
/* @__PURE__ */ jsx84("div", { className: styles32.content, children })
|
|
2873
2954
|
]
|
|
2874
2955
|
}
|
|
2875
2956
|
);
|
|
2876
2957
|
}
|
|
2877
2958
|
function DragIcon() {
|
|
2878
|
-
return /* @__PURE__ */
|
|
2959
|
+
return /* @__PURE__ */ jsx84(
|
|
2879
2960
|
"svg",
|
|
2880
2961
|
{
|
|
2881
2962
|
width: "14",
|
|
@@ -2885,14 +2966,83 @@ function DragIcon() {
|
|
|
2885
2966
|
"aria-hidden": "true",
|
|
2886
2967
|
className: styles32.icon,
|
|
2887
2968
|
children: [3, 7, 11].map(
|
|
2888
|
-
(cy) => [4, 10].map((cx) => /* @__PURE__ */
|
|
2969
|
+
(cy) => [4, 10].map((cx) => /* @__PURE__ */ jsx84("circle", { cx, cy, r: 1.2, fill: "currentColor" }, `${cx}-${cy}`))
|
|
2889
2970
|
)
|
|
2890
2971
|
}
|
|
2891
2972
|
);
|
|
2892
2973
|
}
|
|
2893
2974
|
|
|
2894
|
-
// src/components/
|
|
2975
|
+
// src/components/FileDropzone/FileDropzone.tsx
|
|
2895
2976
|
import { useRef as useRef10, useState as useState10 } from "react";
|
|
2977
|
+
import styles33 from "./FileDropzone.module.css";
|
|
2978
|
+
import { jsx as jsx85, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
2979
|
+
function FileDropzone({
|
|
2980
|
+
name,
|
|
2981
|
+
accept,
|
|
2982
|
+
icon,
|
|
2983
|
+
label,
|
|
2984
|
+
hint,
|
|
2985
|
+
onFileSelect,
|
|
2986
|
+
ariaLabel,
|
|
2987
|
+
disabled,
|
|
2988
|
+
className
|
|
2989
|
+
}) {
|
|
2990
|
+
const [dragging, setDragging] = useState10(false);
|
|
2991
|
+
const inputRef = useRef10(null);
|
|
2992
|
+
return /* @__PURE__ */ jsxs66(
|
|
2993
|
+
"label",
|
|
2994
|
+
{
|
|
2995
|
+
className: [
|
|
2996
|
+
styles33.dropzone,
|
|
2997
|
+
dragging ? styles33.dropzoneActive : "",
|
|
2998
|
+
disabled ? styles33.dropzoneDisabled : "",
|
|
2999
|
+
className
|
|
3000
|
+
].filter(Boolean).join(" "),
|
|
3001
|
+
onDragOver: (event) => {
|
|
3002
|
+
if (disabled) return;
|
|
3003
|
+
event.preventDefault();
|
|
3004
|
+
setDragging(true);
|
|
3005
|
+
},
|
|
3006
|
+
onDragLeave: () => setDragging(false),
|
|
3007
|
+
onDrop: (event) => {
|
|
3008
|
+
if (disabled) return;
|
|
3009
|
+
event.preventDefault();
|
|
3010
|
+
setDragging(false);
|
|
3011
|
+
const dropped = event.dataTransfer.files[0];
|
|
3012
|
+
if (!dropped) return;
|
|
3013
|
+
if (inputRef.current && typeof DataTransfer !== "undefined") {
|
|
3014
|
+
const transfer = new DataTransfer();
|
|
3015
|
+
transfer.items.add(dropped);
|
|
3016
|
+
inputRef.current.files = transfer.files;
|
|
3017
|
+
}
|
|
3018
|
+
onFileSelect(dropped);
|
|
3019
|
+
},
|
|
3020
|
+
children: [
|
|
3021
|
+
/* @__PURE__ */ jsx85("span", { className: styles33.icon, "aria-hidden": "true", children: icon ?? /* @__PURE__ */ jsx85(Icon, { name: "file", size: "lg", "aria-hidden": true }) }),
|
|
3022
|
+
/* @__PURE__ */ jsxs66("span", { className: styles33.text, children: [
|
|
3023
|
+
/* @__PURE__ */ jsx85("span", { className: styles33.title, children: label }),
|
|
3024
|
+
hint && /* @__PURE__ */ jsx85("span", { className: styles33.hint, children: hint })
|
|
3025
|
+
] }),
|
|
3026
|
+
/* @__PURE__ */ jsx85(
|
|
3027
|
+
"input",
|
|
3028
|
+
{
|
|
3029
|
+
ref: inputRef,
|
|
3030
|
+
type: "file",
|
|
3031
|
+
name,
|
|
3032
|
+
"aria-label": ariaLabel,
|
|
3033
|
+
accept,
|
|
3034
|
+
disabled,
|
|
3035
|
+
onChange: (event) => onFileSelect(event.target.files?.[0] ?? null),
|
|
3036
|
+
className: styles33.hiddenInput
|
|
3037
|
+
}
|
|
3038
|
+
)
|
|
3039
|
+
]
|
|
3040
|
+
}
|
|
3041
|
+
);
|
|
3042
|
+
}
|
|
3043
|
+
|
|
3044
|
+
// src/components/Calendar/Calendar.tsx
|
|
3045
|
+
import { useRef as useRef11, useState as useState11 } from "react";
|
|
2896
3046
|
|
|
2897
3047
|
// src/components/Calendar/dateUtils.ts
|
|
2898
3048
|
function startOfMonth(date) {
|
|
@@ -2958,8 +3108,8 @@ function formatDateLabel(date) {
|
|
|
2958
3108
|
}
|
|
2959
3109
|
|
|
2960
3110
|
// src/components/Calendar/Calendar.tsx
|
|
2961
|
-
import
|
|
2962
|
-
import { jsx as
|
|
3111
|
+
import styles34 from "./Calendar.module.css";
|
|
3112
|
+
import { jsx as jsx86, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
2963
3113
|
var WEEKDAY_LABEL_WEEK = getMonthGrid(new Date(2026, 0, 1))[0] ?? [];
|
|
2964
3114
|
function Calendar({
|
|
2965
3115
|
value,
|
|
@@ -2968,9 +3118,9 @@ function Calendar({
|
|
|
2968
3118
|
maxDate,
|
|
2969
3119
|
"aria-label": ariaLabel
|
|
2970
3120
|
}) {
|
|
2971
|
-
const [displayedMonth, setDisplayedMonth] =
|
|
2972
|
-
const [focusedDate, setFocusedDate] =
|
|
2973
|
-
const gridRef =
|
|
3121
|
+
const [displayedMonth, setDisplayedMonth] = useState11(() => startOfMonth(value ?? /* @__PURE__ */ new Date()));
|
|
3122
|
+
const [focusedDate, setFocusedDate] = useState11(() => value ?? /* @__PURE__ */ new Date());
|
|
3123
|
+
const gridRef = useRef11(null);
|
|
2974
3124
|
const weeks = getMonthGrid(displayedMonth);
|
|
2975
3125
|
function goToMonth(next) {
|
|
2976
3126
|
setDisplayedMonth(startOfMonth(next));
|
|
@@ -3029,51 +3179,51 @@ function Calendar({
|
|
|
3029
3179
|
default:
|
|
3030
3180
|
}
|
|
3031
3181
|
}
|
|
3032
|
-
return /* @__PURE__ */
|
|
3033
|
-
/* @__PURE__ */
|
|
3034
|
-
/* @__PURE__ */
|
|
3182
|
+
return /* @__PURE__ */ jsxs67("div", { className: styles34.calendar, "aria-label": ariaLabel, children: [
|
|
3183
|
+
/* @__PURE__ */ jsxs67("div", { className: styles34.header, children: [
|
|
3184
|
+
/* @__PURE__ */ jsx86(
|
|
3035
3185
|
"button",
|
|
3036
3186
|
{
|
|
3037
3187
|
type: "button",
|
|
3038
|
-
className:
|
|
3188
|
+
className: styles34.navButton,
|
|
3039
3189
|
"aria-label": "Previous month",
|
|
3040
3190
|
onClick: () => goToMonth(addMonths(displayedMonth, -1)),
|
|
3041
|
-
children: /* @__PURE__ */
|
|
3191
|
+
children: /* @__PURE__ */ jsx86(Icon, { name: "chevron-left", size: "sm", "aria-hidden": true })
|
|
3042
3192
|
}
|
|
3043
3193
|
),
|
|
3044
|
-
/* @__PURE__ */
|
|
3045
|
-
/* @__PURE__ */
|
|
3194
|
+
/* @__PURE__ */ jsx86("span", { className: styles34.monthLabel, children: formatMonthYear(displayedMonth) }),
|
|
3195
|
+
/* @__PURE__ */ jsx86(
|
|
3046
3196
|
"button",
|
|
3047
3197
|
{
|
|
3048
3198
|
type: "button",
|
|
3049
|
-
className:
|
|
3199
|
+
className: styles34.navButton,
|
|
3050
3200
|
"aria-label": "Next month",
|
|
3051
3201
|
onClick: () => goToMonth(addMonths(displayedMonth, 1)),
|
|
3052
|
-
children: /* @__PURE__ */
|
|
3202
|
+
children: /* @__PURE__ */ jsx86(Icon, { name: "chevron-right", size: "sm", "aria-hidden": true })
|
|
3053
3203
|
}
|
|
3054
3204
|
)
|
|
3055
3205
|
] }),
|
|
3056
|
-
/* @__PURE__ */
|
|
3206
|
+
/* @__PURE__ */ jsxs67(
|
|
3057
3207
|
"div",
|
|
3058
3208
|
{
|
|
3059
3209
|
ref: gridRef,
|
|
3060
3210
|
role: "grid",
|
|
3061
3211
|
"aria-label": formatMonthYear(displayedMonth),
|
|
3062
|
-
className:
|
|
3212
|
+
className: styles34.grid,
|
|
3063
3213
|
onKeyDown: handleKeyDown,
|
|
3064
3214
|
tabIndex: -1,
|
|
3065
3215
|
children: [
|
|
3066
|
-
/* @__PURE__ */
|
|
3216
|
+
/* @__PURE__ */ jsx86("div", { role: "row", className: styles34.weekdayRow, children: WEEKDAY_LABEL_WEEK.map((d) => /* @__PURE__ */ jsx86("span", { role: "columnheader", className: styles34.weekday, "aria-hidden": true, children: formatWeekdayShort(d) }, d.getDay())) }),
|
|
3067
3217
|
weeks.map((week) => {
|
|
3068
3218
|
const firstDayOfWeek = week[0];
|
|
3069
3219
|
if (!firstDayOfWeek) return null;
|
|
3070
|
-
return /* @__PURE__ */
|
|
3220
|
+
return /* @__PURE__ */ jsx86("div", { role: "row", className: styles34.week, children: week.map((date) => {
|
|
3071
3221
|
const isCurrentMonth = isSameMonth(date, displayedMonth);
|
|
3072
3222
|
const isSelected = value !== null && isSameDay(date, value);
|
|
3073
3223
|
const isToday = isSameDay(date, /* @__PURE__ */ new Date());
|
|
3074
3224
|
const isFocusTarget = isSameDay(date, focusedDate);
|
|
3075
3225
|
const disabled = !isWithinRange(date, minDate, maxDate);
|
|
3076
|
-
return /* @__PURE__ */
|
|
3226
|
+
return /* @__PURE__ */ jsx86("div", { role: "gridcell", "aria-selected": isSelected, children: /* @__PURE__ */ jsx86(
|
|
3077
3227
|
"button",
|
|
3078
3228
|
{
|
|
3079
3229
|
type: "button",
|
|
@@ -3082,10 +3232,10 @@ function Calendar({
|
|
|
3082
3232
|
"aria-current": isToday ? "date" : void 0,
|
|
3083
3233
|
"aria-label": formatDateLabel(date),
|
|
3084
3234
|
className: [
|
|
3085
|
-
|
|
3086
|
-
!isCurrentMonth ?
|
|
3087
|
-
isSelected ?
|
|
3088
|
-
isToday && !isSelected ?
|
|
3235
|
+
styles34.day,
|
|
3236
|
+
!isCurrentMonth ? styles34.dayOutside : "",
|
|
3237
|
+
isSelected ? styles34.daySelected : "",
|
|
3238
|
+
isToday && !isSelected ? styles34.dayToday : ""
|
|
3089
3239
|
].filter(Boolean).join(" "),
|
|
3090
3240
|
onClick: () => selectDate(date),
|
|
3091
3241
|
onFocus: () => setFocusedDate(date),
|
|
@@ -3101,9 +3251,9 @@ function Calendar({
|
|
|
3101
3251
|
}
|
|
3102
3252
|
|
|
3103
3253
|
// src/components/DatePicker/DatePicker.tsx
|
|
3104
|
-
import { useState as
|
|
3105
|
-
import
|
|
3106
|
-
import { Fragment as Fragment2, jsx as
|
|
3254
|
+
import { useState as useState12 } from "react";
|
|
3255
|
+
import styles35 from "./DatePicker.module.css";
|
|
3256
|
+
import { Fragment as Fragment2, jsx as jsx87, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
3107
3257
|
var POPOVER_WIDTH = 320;
|
|
3108
3258
|
function DatePicker({
|
|
3109
3259
|
value,
|
|
@@ -3114,29 +3264,29 @@ function DatePicker({
|
|
|
3114
3264
|
"aria-label": ariaLabel,
|
|
3115
3265
|
disabled = false
|
|
3116
3266
|
}) {
|
|
3117
|
-
const [open, setOpen] =
|
|
3267
|
+
const [open, setOpen] = useState12(false);
|
|
3118
3268
|
const isMobile = useIsMobile();
|
|
3119
3269
|
function handleSelect(date) {
|
|
3120
3270
|
onChange(date);
|
|
3121
3271
|
setOpen(false);
|
|
3122
3272
|
}
|
|
3123
|
-
const trigger = /* @__PURE__ */
|
|
3273
|
+
const trigger = /* @__PURE__ */ jsxs68(
|
|
3124
3274
|
"button",
|
|
3125
3275
|
{
|
|
3126
3276
|
type: "button",
|
|
3127
|
-
className:
|
|
3277
|
+
className: styles35.trigger,
|
|
3128
3278
|
disabled,
|
|
3129
3279
|
"aria-label": ariaLabel,
|
|
3130
3280
|
"aria-haspopup": "dialog",
|
|
3131
3281
|
"aria-expanded": open,
|
|
3132
3282
|
onClick: () => setOpen((o) => !o),
|
|
3133
3283
|
children: [
|
|
3134
|
-
/* @__PURE__ */
|
|
3135
|
-
/* @__PURE__ */
|
|
3284
|
+
/* @__PURE__ */ jsx87("span", { className: value ? styles35.triggerValue : styles35.triggerPlaceholder, children: value ? formatDateShort(value) : placeholder }),
|
|
3285
|
+
/* @__PURE__ */ jsx87(Icon, { name: "calendar", size: "sm", "aria-hidden": true })
|
|
3136
3286
|
]
|
|
3137
3287
|
}
|
|
3138
3288
|
);
|
|
3139
|
-
const calendar = /* @__PURE__ */
|
|
3289
|
+
const calendar = /* @__PURE__ */ jsx87(
|
|
3140
3290
|
Calendar,
|
|
3141
3291
|
{
|
|
3142
3292
|
value,
|
|
@@ -3147,12 +3297,12 @@ function DatePicker({
|
|
|
3147
3297
|
}
|
|
3148
3298
|
);
|
|
3149
3299
|
if (isMobile) {
|
|
3150
|
-
return /* @__PURE__ */
|
|
3300
|
+
return /* @__PURE__ */ jsxs68(Fragment2, { children: [
|
|
3151
3301
|
trigger,
|
|
3152
|
-
/* @__PURE__ */
|
|
3302
|
+
/* @__PURE__ */ jsx87(Drawer, { open, onClose: () => setOpen(false), "aria-label": ariaLabel, children: /* @__PURE__ */ jsx87("div", { className: styles35.drawerBody, children: calendar }) })
|
|
3153
3303
|
] });
|
|
3154
3304
|
}
|
|
3155
|
-
return /* @__PURE__ */
|
|
3305
|
+
return /* @__PURE__ */ jsx87(
|
|
3156
3306
|
Popover,
|
|
3157
3307
|
{
|
|
3158
3308
|
trigger,
|
|
@@ -3160,15 +3310,15 @@ function DatePicker({
|
|
|
3160
3310
|
onClose: () => setOpen(false),
|
|
3161
3311
|
"aria-label": ariaLabel,
|
|
3162
3312
|
width: POPOVER_WIDTH,
|
|
3163
|
-
children: /* @__PURE__ */
|
|
3313
|
+
children: /* @__PURE__ */ jsx87("div", { className: styles35.popoverBody, children: calendar })
|
|
3164
3314
|
}
|
|
3165
3315
|
);
|
|
3166
3316
|
}
|
|
3167
3317
|
|
|
3168
3318
|
// src/components/SuggestionInput/SuggestionInput.tsx
|
|
3169
|
-
import { useId as useId4, useRef as
|
|
3170
|
-
import
|
|
3171
|
-
import { Fragment as Fragment3, jsx as
|
|
3319
|
+
import { useId as useId4, useRef as useRef12, useState as useState13 } from "react";
|
|
3320
|
+
import styles36 from "./SuggestionInput.module.css";
|
|
3321
|
+
import { Fragment as Fragment3, jsx as jsx88, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
3172
3322
|
function SuggestionInput({
|
|
3173
3323
|
value,
|
|
3174
3324
|
onChange,
|
|
@@ -3186,9 +3336,9 @@ function SuggestionInput({
|
|
|
3186
3336
|
const generatedId = useId4();
|
|
3187
3337
|
const inputId = id ?? generatedId;
|
|
3188
3338
|
const listId = `${inputId}-suggestions`;
|
|
3189
|
-
const inputRef =
|
|
3190
|
-
const [focused, setFocused] =
|
|
3191
|
-
const [activeIndex, setActiveIndex] =
|
|
3339
|
+
const inputRef = useRef12(null);
|
|
3340
|
+
const [focused, setFocused] = useState13(false);
|
|
3341
|
+
const [activeIndex, setActiveIndex] = useState13(-1);
|
|
3192
3342
|
const showCreateRow = Boolean(onCreate && createLabel && value.trim());
|
|
3193
3343
|
const rowCount = options.length + (showCreateRow ? 1 : 0);
|
|
3194
3344
|
const open = focused && (rowCount > 0 || loading);
|
|
@@ -3225,7 +3375,7 @@ function SuggestionInput({
|
|
|
3225
3375
|
close();
|
|
3226
3376
|
}
|
|
3227
3377
|
}
|
|
3228
|
-
const trigger = /* @__PURE__ */
|
|
3378
|
+
const trigger = /* @__PURE__ */ jsx88(
|
|
3229
3379
|
"input",
|
|
3230
3380
|
{
|
|
3231
3381
|
ref: inputRef,
|
|
@@ -3237,7 +3387,7 @@ function SuggestionInput({
|
|
|
3237
3387
|
"aria-autocomplete": "list",
|
|
3238
3388
|
"aria-activedescendant": activeIndex >= 0 ? `${listId}-option-${activeIndex}` : void 0,
|
|
3239
3389
|
"aria-label": ariaLabel,
|
|
3240
|
-
className: [
|
|
3390
|
+
className: [styles36.input, className].filter(Boolean).join(" "),
|
|
3241
3391
|
value,
|
|
3242
3392
|
placeholder,
|
|
3243
3393
|
disabled,
|
|
@@ -3250,7 +3400,7 @@ function SuggestionInput({
|
|
|
3250
3400
|
onKeyDown: handleKeyDown
|
|
3251
3401
|
}
|
|
3252
3402
|
);
|
|
3253
|
-
return /* @__PURE__ */
|
|
3403
|
+
return /* @__PURE__ */ jsx88(
|
|
3254
3404
|
Popover,
|
|
3255
3405
|
{
|
|
3256
3406
|
trigger,
|
|
@@ -3258,29 +3408,29 @@ function SuggestionInput({
|
|
|
3258
3408
|
onClose: close,
|
|
3259
3409
|
width: "trigger",
|
|
3260
3410
|
"aria-label": `${ariaLabel} suggestions`,
|
|
3261
|
-
children: /* @__PURE__ */
|
|
3262
|
-
options.map((option, index) => /* @__PURE__ */
|
|
3411
|
+
children: /* @__PURE__ */ jsx88("ul", { id: listId, role: "listbox", className: styles36.list, children: loading ? /* @__PURE__ */ jsx88("li", { className: styles36.status, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs69(Fragment3, { children: [
|
|
3412
|
+
options.map((option, index) => /* @__PURE__ */ jsx88("li", { role: "none", children: /* @__PURE__ */ jsxs69(
|
|
3263
3413
|
"button",
|
|
3264
3414
|
{
|
|
3265
3415
|
id: `${listId}-option-${index}`,
|
|
3266
3416
|
role: "option",
|
|
3267
3417
|
"aria-selected": index === activeIndex,
|
|
3268
3418
|
type: "button",
|
|
3269
|
-
className: [
|
|
3419
|
+
className: [styles36.option, index === activeIndex ? styles36.optionActive : ""].filter(Boolean).join(" "),
|
|
3270
3420
|
onMouseDown: (e) => {
|
|
3271
3421
|
e.preventDefault();
|
|
3272
3422
|
commitIndex(index);
|
|
3273
3423
|
},
|
|
3274
3424
|
children: [
|
|
3275
|
-
option.icon && /* @__PURE__ */
|
|
3276
|
-
/* @__PURE__ */
|
|
3277
|
-
option.meta && /* @__PURE__ */
|
|
3425
|
+
option.icon && /* @__PURE__ */ jsx88("span", { className: styles36.optionIcon, children: option.icon }),
|
|
3426
|
+
/* @__PURE__ */ jsx88("span", { className: styles36.optionLabel, children: option.label }),
|
|
3427
|
+
option.meta && /* @__PURE__ */ jsx88("span", { className: styles36.optionMeta, children: option.meta })
|
|
3278
3428
|
]
|
|
3279
3429
|
}
|
|
3280
3430
|
) }, option.id)),
|
|
3281
|
-
showCreateRow && createLabel && /* @__PURE__ */
|
|
3282
|
-
options.length > 0 && /* @__PURE__ */
|
|
3283
|
-
/* @__PURE__ */
|
|
3431
|
+
showCreateRow && createLabel && /* @__PURE__ */ jsxs69("li", { role: "none", children: [
|
|
3432
|
+
options.length > 0 && /* @__PURE__ */ jsx88("div", { className: styles36.divider }),
|
|
3433
|
+
/* @__PURE__ */ jsx88(
|
|
3284
3434
|
"button",
|
|
3285
3435
|
{
|
|
3286
3436
|
id: `${listId}-option-${options.length}`,
|
|
@@ -3288,9 +3438,9 @@ function SuggestionInput({
|
|
|
3288
3438
|
"aria-selected": options.length === activeIndex,
|
|
3289
3439
|
type: "button",
|
|
3290
3440
|
className: [
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
options.length === activeIndex ?
|
|
3441
|
+
styles36.option,
|
|
3442
|
+
styles36.optionCreate,
|
|
3443
|
+
options.length === activeIndex ? styles36.optionActive : ""
|
|
3294
3444
|
].filter(Boolean).join(" "),
|
|
3295
3445
|
onMouseDown: (e) => {
|
|
3296
3446
|
e.preventDefault();
|
|
@@ -3306,9 +3456,9 @@ function SuggestionInput({
|
|
|
3306
3456
|
}
|
|
3307
3457
|
|
|
3308
3458
|
// src/components/IconPicker/IconPicker.tsx
|
|
3309
|
-
import { useState as
|
|
3310
|
-
import
|
|
3311
|
-
import { jsx as
|
|
3459
|
+
import { useState as useState14 } from "react";
|
|
3460
|
+
import styles37 from "./IconPicker.module.css";
|
|
3461
|
+
import { jsx as jsx89, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
3312
3462
|
function IconPicker({
|
|
3313
3463
|
value,
|
|
3314
3464
|
onChange,
|
|
@@ -3318,24 +3468,24 @@ function IconPicker({
|
|
|
3318
3468
|
disabled = false,
|
|
3319
3469
|
className
|
|
3320
3470
|
}) {
|
|
3321
|
-
const [open, setOpen] =
|
|
3322
|
-
const trigger = /* @__PURE__ */
|
|
3471
|
+
const [open, setOpen] = useState14(false);
|
|
3472
|
+
const trigger = /* @__PURE__ */ jsxs70(
|
|
3323
3473
|
"button",
|
|
3324
3474
|
{
|
|
3325
3475
|
type: "button",
|
|
3326
|
-
className: [
|
|
3476
|
+
className: [styles37.trigger, className].filter(Boolean).join(" "),
|
|
3327
3477
|
onClick: () => setOpen((o) => !o),
|
|
3328
3478
|
disabled,
|
|
3329
3479
|
"aria-label": ariaLabel,
|
|
3330
3480
|
"aria-haspopup": "true",
|
|
3331
3481
|
"aria-expanded": open,
|
|
3332
3482
|
children: [
|
|
3333
|
-
value ? /* @__PURE__ */
|
|
3334
|
-
triggerLabel && /* @__PURE__ */
|
|
3483
|
+
value ? /* @__PURE__ */ jsx89(Icon, { name: value, size: "md", "aria-hidden": true }) : /* @__PURE__ */ jsx89("span", { className: styles37.placeholder, "aria-hidden": true, children: "?" }),
|
|
3484
|
+
triggerLabel && /* @__PURE__ */ jsx89("span", { className: styles37.triggerLabel, children: triggerLabel })
|
|
3335
3485
|
]
|
|
3336
3486
|
}
|
|
3337
3487
|
);
|
|
3338
|
-
return /* @__PURE__ */
|
|
3488
|
+
return /* @__PURE__ */ jsx89(
|
|
3339
3489
|
Popover,
|
|
3340
3490
|
{
|
|
3341
3491
|
trigger,
|
|
@@ -3343,18 +3493,18 @@ function IconPicker({
|
|
|
3343
3493
|
onClose: () => setOpen(false),
|
|
3344
3494
|
width: 240,
|
|
3345
3495
|
"aria-label": `${ariaLabel} options`,
|
|
3346
|
-
children: /* @__PURE__ */
|
|
3496
|
+
children: /* @__PURE__ */ jsx89("div", { className: styles37.grid, role: "listbox", "aria-label": ariaLabel, children: options.map((name) => /* @__PURE__ */ jsx89(
|
|
3347
3497
|
"button",
|
|
3348
3498
|
{
|
|
3349
3499
|
type: "button",
|
|
3350
3500
|
role: "option",
|
|
3351
3501
|
"aria-selected": name === value,
|
|
3352
|
-
className: [
|
|
3502
|
+
className: [styles37.option, name === value ? styles37.optionSelected : ""].filter(Boolean).join(" "),
|
|
3353
3503
|
onClick: () => {
|
|
3354
3504
|
onChange(name);
|
|
3355
3505
|
setOpen(false);
|
|
3356
3506
|
},
|
|
3357
|
-
children: /* @__PURE__ */
|
|
3507
|
+
children: /* @__PURE__ */ jsx89(Icon, { name, size: "md", "aria-hidden": true })
|
|
3358
3508
|
},
|
|
3359
3509
|
name
|
|
3360
3510
|
)) })
|
|
@@ -3364,8 +3514,8 @@ function IconPicker({
|
|
|
3364
3514
|
|
|
3365
3515
|
// src/components/QuantityStepper/QuantityStepper.tsx
|
|
3366
3516
|
import { useId as useId5 } from "react";
|
|
3367
|
-
import
|
|
3368
|
-
import { jsx as
|
|
3517
|
+
import styles38 from "./QuantityStepper.module.css";
|
|
3518
|
+
import { jsx as jsx90, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
3369
3519
|
function QuantityStepper({
|
|
3370
3520
|
value,
|
|
3371
3521
|
onChange,
|
|
@@ -3392,24 +3542,24 @@ function QuantityStepper({
|
|
|
3392
3542
|
}
|
|
3393
3543
|
const decrementDisabled = disabled || min !== void 0 && value <= min;
|
|
3394
3544
|
const incrementDisabled = disabled || max !== void 0 && value >= max;
|
|
3395
|
-
return /* @__PURE__ */
|
|
3396
|
-
/* @__PURE__ */
|
|
3545
|
+
return /* @__PURE__ */ jsxs71("div", { className: [styles38.root, className].filter(Boolean).join(" "), children: [
|
|
3546
|
+
/* @__PURE__ */ jsx90(
|
|
3397
3547
|
"button",
|
|
3398
3548
|
{
|
|
3399
3549
|
type: "button",
|
|
3400
|
-
className:
|
|
3550
|
+
className: styles38.button,
|
|
3401
3551
|
onClick: () => onChange(clamp(value - step)),
|
|
3402
3552
|
disabled: decrementDisabled,
|
|
3403
3553
|
"aria-label": `Decrease ${ariaLabel}`,
|
|
3404
3554
|
children: "\u2212"
|
|
3405
3555
|
}
|
|
3406
3556
|
),
|
|
3407
|
-
/* @__PURE__ */
|
|
3557
|
+
/* @__PURE__ */ jsx90(
|
|
3408
3558
|
"input",
|
|
3409
3559
|
{
|
|
3410
3560
|
id: inputId,
|
|
3411
3561
|
type: "number",
|
|
3412
|
-
className:
|
|
3562
|
+
className: styles38.input,
|
|
3413
3563
|
value,
|
|
3414
3564
|
onChange: handleInputChange,
|
|
3415
3565
|
min,
|
|
@@ -3419,12 +3569,12 @@ function QuantityStepper({
|
|
|
3419
3569
|
"aria-label": ariaLabel
|
|
3420
3570
|
}
|
|
3421
3571
|
),
|
|
3422
|
-
unit && /* @__PURE__ */
|
|
3423
|
-
/* @__PURE__ */
|
|
3572
|
+
unit && /* @__PURE__ */ jsx90("span", { className: styles38.unit, "aria-hidden": true, children: unit }),
|
|
3573
|
+
/* @__PURE__ */ jsx90(
|
|
3424
3574
|
"button",
|
|
3425
3575
|
{
|
|
3426
3576
|
type: "button",
|
|
3427
|
-
className:
|
|
3577
|
+
className: styles38.button,
|
|
3428
3578
|
onClick: () => onChange(clamp(value + step)),
|
|
3429
3579
|
disabled: incrementDisabled,
|
|
3430
3580
|
"aria-label": `Increase ${ariaLabel}`,
|
|
@@ -3435,8 +3585,8 @@ function QuantityStepper({
|
|
|
3435
3585
|
}
|
|
3436
3586
|
|
|
3437
3587
|
// src/components/CheckableListRow/CheckableListRow.tsx
|
|
3438
|
-
import
|
|
3439
|
-
import { jsx as
|
|
3588
|
+
import styles39 from "./CheckableListRow.module.css";
|
|
3589
|
+
import { jsx as jsx91, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
3440
3590
|
function CheckableListRow({
|
|
3441
3591
|
checked,
|
|
3442
3592
|
onCheckedChange,
|
|
@@ -3455,8 +3605,8 @@ function CheckableListRow({
|
|
|
3455
3605
|
toggle();
|
|
3456
3606
|
}
|
|
3457
3607
|
}
|
|
3458
|
-
return /* @__PURE__ */
|
|
3459
|
-
/* @__PURE__ */
|
|
3608
|
+
return /* @__PURE__ */ jsxs72("div", { className: [styles39.row, className].filter(Boolean).join(" "), children: [
|
|
3609
|
+
/* @__PURE__ */ jsxs72(
|
|
3460
3610
|
"div",
|
|
3461
3611
|
{
|
|
3462
3612
|
role: "checkbox",
|
|
@@ -3464,11 +3614,11 @@ function CheckableListRow({
|
|
|
3464
3614
|
"aria-label": label,
|
|
3465
3615
|
"aria-disabled": disabled || void 0,
|
|
3466
3616
|
tabIndex: disabled ? -1 : 0,
|
|
3467
|
-
className:
|
|
3617
|
+
className: styles39.tapTarget,
|
|
3468
3618
|
onClick: toggle,
|
|
3469
3619
|
onKeyDown: handleKeyDown,
|
|
3470
3620
|
children: [
|
|
3471
|
-
/* @__PURE__ */
|
|
3621
|
+
/* @__PURE__ */ jsx91("span", { className: [styles39.box, checked ? styles39.checked : ""].filter(Boolean).join(" "), children: checked && /* @__PURE__ */ jsx91("svg", { className: styles39.tick, viewBox: "0 0 10 8", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx91(
|
|
3472
3622
|
"path",
|
|
3473
3623
|
{
|
|
3474
3624
|
d: "M1 4l3 3 5-6",
|
|
@@ -3478,17 +3628,122 @@ function CheckableListRow({
|
|
|
3478
3628
|
strokeLinejoin: "round"
|
|
3479
3629
|
}
|
|
3480
3630
|
) }) }),
|
|
3481
|
-
icon && /* @__PURE__ */
|
|
3482
|
-
/* @__PURE__ */
|
|
3631
|
+
icon && /* @__PURE__ */ jsx91("span", { className: styles39.icon, children: icon }),
|
|
3632
|
+
/* @__PURE__ */ jsx91("span", { className: [styles39.label, checked ? styles39.struck : ""].filter(Boolean).join(" "), children: label })
|
|
3483
3633
|
]
|
|
3484
3634
|
}
|
|
3485
3635
|
),
|
|
3486
|
-
trailing && /* @__PURE__ */
|
|
3636
|
+
trailing && /* @__PURE__ */ jsx91("span", { className: styles39.trailing, children: trailing })
|
|
3637
|
+
] });
|
|
3638
|
+
}
|
|
3639
|
+
|
|
3640
|
+
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
3641
|
+
import { useState as useState15 } from "react";
|
|
3642
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
3643
|
+
function centsToText(cents) {
|
|
3644
|
+
return (cents / 100).toFixed(2);
|
|
3645
|
+
}
|
|
3646
|
+
function textToCents(text) {
|
|
3647
|
+
const trimmed = text.trim();
|
|
3648
|
+
if (!trimmed) return null;
|
|
3649
|
+
const parsed = Number(trimmed);
|
|
3650
|
+
if (!Number.isFinite(parsed)) return null;
|
|
3651
|
+
return Math.round(parsed * 100);
|
|
3652
|
+
}
|
|
3653
|
+
function CurrencyInput({ valueCents, onValueChange, ...rest }) {
|
|
3654
|
+
const [text, setText] = useState15(() => valueCents != null ? centsToText(valueCents) : "");
|
|
3655
|
+
if (textToCents(text) !== valueCents) {
|
|
3656
|
+
setText(valueCents != null ? centsToText(valueCents) : "");
|
|
3657
|
+
}
|
|
3658
|
+
return /* @__PURE__ */ jsx92(
|
|
3659
|
+
Input,
|
|
3660
|
+
{
|
|
3661
|
+
...rest,
|
|
3662
|
+
type: "text",
|
|
3663
|
+
inputMode: "decimal",
|
|
3664
|
+
value: text,
|
|
3665
|
+
onChange: (e) => {
|
|
3666
|
+
const next = e.currentTarget.value;
|
|
3667
|
+
setText(next);
|
|
3668
|
+
onValueChange(textToCents(next));
|
|
3669
|
+
}
|
|
3670
|
+
}
|
|
3671
|
+
);
|
|
3672
|
+
}
|
|
3673
|
+
|
|
3674
|
+
// src/components/BalanceChip/BalanceChip.tsx
|
|
3675
|
+
import styles40 from "./BalanceChip.module.css";
|
|
3676
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
3677
|
+
function formatAbsCents(cents) {
|
|
3678
|
+
return (Math.abs(cents) / 100).toFixed(2);
|
|
3679
|
+
}
|
|
3680
|
+
function BalanceChip({ amountCents, currency, className }) {
|
|
3681
|
+
const direction = amountCents > 0 ? "owed" : amountCents < 0 ? "owes" : "settled";
|
|
3682
|
+
const text = direction === "settled" ? "Settled up" : `${direction === "owed" ? "Owed" : "Owes"} ${currency} ${formatAbsCents(amountCents)}`;
|
|
3683
|
+
return /* @__PURE__ */ jsx93("span", { className: [styles40.chip, styles40[direction], className].filter(Boolean).join(" "), children: text });
|
|
3684
|
+
}
|
|
3685
|
+
|
|
3686
|
+
// src/components/SplitMethodSelector/SplitMethodSelector.tsx
|
|
3687
|
+
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
3688
|
+
var OPTIONS = [
|
|
3689
|
+
{ label: "Equal", value: "equal" },
|
|
3690
|
+
{ label: "Amount", value: "amount" },
|
|
3691
|
+
{ label: "Percentage", value: "percentage" },
|
|
3692
|
+
{ label: "Shares", value: "shares" }
|
|
3693
|
+
];
|
|
3694
|
+
function SplitMethodSelector({
|
|
3695
|
+
value,
|
|
3696
|
+
onChange,
|
|
3697
|
+
size = "sm",
|
|
3698
|
+
"aria-label": ariaLabel = "Split method"
|
|
3699
|
+
}) {
|
|
3700
|
+
return /* @__PURE__ */ jsx94(
|
|
3701
|
+
SegmentedControl,
|
|
3702
|
+
{
|
|
3703
|
+
value,
|
|
3704
|
+
onChange,
|
|
3705
|
+
options: OPTIONS,
|
|
3706
|
+
size,
|
|
3707
|
+
"aria-label": ariaLabel
|
|
3708
|
+
}
|
|
3709
|
+
);
|
|
3710
|
+
}
|
|
3711
|
+
|
|
3712
|
+
// src/components/MemberMultiSelect/MemberMultiSelect.tsx
|
|
3713
|
+
import styles41 from "./MemberMultiSelect.module.css";
|
|
3714
|
+
import { jsx as jsx95, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
3715
|
+
function MemberMultiSelect({
|
|
3716
|
+
options,
|
|
3717
|
+
selectedIds,
|
|
3718
|
+
onToggle,
|
|
3719
|
+
renderTrailing,
|
|
3720
|
+
label,
|
|
3721
|
+
hint,
|
|
3722
|
+
className
|
|
3723
|
+
}) {
|
|
3724
|
+
return /* @__PURE__ */ jsxs73("div", { className: [styles41.group, className].filter(Boolean).join(" "), children: [
|
|
3725
|
+
label && /* @__PURE__ */ jsx95("span", { className: styles41.label, children: label }),
|
|
3726
|
+
options.map((option) => {
|
|
3727
|
+
const checked = selectedIds.has(option.id);
|
|
3728
|
+
return /* @__PURE__ */ jsxs73("div", { className: styles41.row, children: [
|
|
3729
|
+
/* @__PURE__ */ jsx95(
|
|
3730
|
+
Checkbox,
|
|
3731
|
+
{
|
|
3732
|
+
checked,
|
|
3733
|
+
onChange: (next) => onToggle(option.id, next),
|
|
3734
|
+
label: option.label
|
|
3735
|
+
}
|
|
3736
|
+
),
|
|
3737
|
+
checked && renderTrailing && /* @__PURE__ */ jsx95("span", { className: styles41.trailing, children: renderTrailing(option.id) })
|
|
3738
|
+
] }, option.id);
|
|
3739
|
+
}),
|
|
3740
|
+
hint && /* @__PURE__ */ jsx95("span", { className: styles41.hint, children: hint })
|
|
3487
3741
|
] });
|
|
3488
3742
|
}
|
|
3489
3743
|
export {
|
|
3490
3744
|
Avatar,
|
|
3491
3745
|
Badge,
|
|
3746
|
+
BalanceChip,
|
|
3492
3747
|
Button,
|
|
3493
3748
|
Calendar,
|
|
3494
3749
|
Card,
|
|
@@ -3496,16 +3751,19 @@ export {
|
|
|
3496
3751
|
Checkbox,
|
|
3497
3752
|
CodeTextarea,
|
|
3498
3753
|
ConfirmDialog,
|
|
3754
|
+
CurrencyInput,
|
|
3499
3755
|
DatePicker,
|
|
3500
3756
|
Dialog,
|
|
3501
3757
|
DragHandleRow,
|
|
3502
3758
|
Drawer,
|
|
3503
3759
|
EmptyState,
|
|
3760
|
+
FileDropzone,
|
|
3504
3761
|
FormField,
|
|
3505
3762
|
Icon,
|
|
3506
3763
|
IconPicker,
|
|
3507
3764
|
Input,
|
|
3508
3765
|
MOBILE_BREAKPOINT_PX,
|
|
3766
|
+
MemberMultiSelect,
|
|
3509
3767
|
Menu,
|
|
3510
3768
|
NavTabs,
|
|
3511
3769
|
OverlayHeader,
|
|
@@ -3516,6 +3774,7 @@ export {
|
|
|
3516
3774
|
Select,
|
|
3517
3775
|
Sheet,
|
|
3518
3776
|
Spinner,
|
|
3777
|
+
SplitMethodSelector,
|
|
3519
3778
|
SplitPane,
|
|
3520
3779
|
StatusBadge,
|
|
3521
3780
|
SuggestionInput,
|
|
@@ -3526,6 +3785,7 @@ export {
|
|
|
3526
3785
|
ToastProvider,
|
|
3527
3786
|
Toggle,
|
|
3528
3787
|
Tooltip,
|
|
3788
|
+
useCommitOnEnterOrBlur,
|
|
3529
3789
|
useDoubleTapHandler,
|
|
3530
3790
|
useIsMobile,
|
|
3531
3791
|
useLongPress,
|