@ship-it-ui/ui 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +954 -765
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -1
- package/dist/index.d.ts +50 -1
- package/dist/index.js +962 -767
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -93,6 +93,7 @@ __export(index_exports, {
|
|
|
93
93
|
HoverCardRoot: () => HoverCardRoot,
|
|
94
94
|
HoverCardTrigger: () => HoverCardTrigger,
|
|
95
95
|
IconButton: () => IconButton,
|
|
96
|
+
InlineEdit: () => InlineEdit,
|
|
96
97
|
Input: () => Input,
|
|
97
98
|
Kbd: () => Kbd,
|
|
98
99
|
LargeTitle: () => LargeTitle,
|
|
@@ -717,11 +718,198 @@ function Field({ label, hint, error, required, className, children, ...props })
|
|
|
717
718
|
] });
|
|
718
719
|
}
|
|
719
720
|
|
|
720
|
-
// src/components/
|
|
721
|
+
// src/components/InlineEdit/InlineEdit.tsx
|
|
721
722
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
722
723
|
var import_react15 = require("react");
|
|
723
724
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
724
|
-
var
|
|
725
|
+
var displayStyles = (0, import_class_variance_authority3.cva)(
|
|
726
|
+
[
|
|
727
|
+
"inline-block cursor-text rounded-[3px] px-[2px] -mx-[2px]",
|
|
728
|
+
"outline-none transition-[background,box-shadow] duration-(--duration-micro)",
|
|
729
|
+
"hover:bg-panel-2",
|
|
730
|
+
"focus-visible:ring-[2px] focus-visible:ring-accent-dim"
|
|
731
|
+
],
|
|
732
|
+
{
|
|
733
|
+
variants: {
|
|
734
|
+
size: {
|
|
735
|
+
sm: "text-[12px]",
|
|
736
|
+
md: "text-[13px]",
|
|
737
|
+
lg: "text-[14px]"
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
defaultVariants: { size: "md" }
|
|
741
|
+
}
|
|
742
|
+
);
|
|
743
|
+
var inputStyles = (0, import_class_variance_authority3.cva)(
|
|
744
|
+
[
|
|
745
|
+
"border bg-panel text-text font-sans outline-none",
|
|
746
|
+
"transition-[border-color,box-shadow] duration-(--duration-micro)",
|
|
747
|
+
"focus:ring-[3px] focus:ring-accent-dim focus:border-accent",
|
|
748
|
+
"placeholder:text-text-dim"
|
|
749
|
+
],
|
|
750
|
+
{
|
|
751
|
+
variants: {
|
|
752
|
+
size: {
|
|
753
|
+
sm: "h-6 px-2 text-[12px] rounded-md",
|
|
754
|
+
md: "h-[28px] px-[8px] text-[13px] rounded-md",
|
|
755
|
+
lg: "h-8 px-[10px] text-[14px] rounded-md"
|
|
756
|
+
},
|
|
757
|
+
tone: {
|
|
758
|
+
default: "border-border",
|
|
759
|
+
err: "border-err focus:border-err focus:ring-err/30"
|
|
760
|
+
}
|
|
761
|
+
},
|
|
762
|
+
defaultVariants: { size: "md", tone: "default" }
|
|
763
|
+
}
|
|
764
|
+
);
|
|
765
|
+
var InlineEdit = (0, import_react15.forwardRef)(function InlineEdit2({
|
|
766
|
+
value,
|
|
767
|
+
onValueChange,
|
|
768
|
+
as = "span",
|
|
769
|
+
activate = "dblclick",
|
|
770
|
+
commitOnBlur = true,
|
|
771
|
+
validate,
|
|
772
|
+
placeholder = "Empty",
|
|
773
|
+
disabled = false,
|
|
774
|
+
editing: editingProp,
|
|
775
|
+
onEditingChange,
|
|
776
|
+
size,
|
|
777
|
+
className,
|
|
778
|
+
inputClassName,
|
|
779
|
+
"aria-label": ariaLabel,
|
|
780
|
+
...rest
|
|
781
|
+
}, forwardedRef) {
|
|
782
|
+
const [editing, setEditing] = useControllableState({
|
|
783
|
+
value: editingProp,
|
|
784
|
+
defaultValue: false,
|
|
785
|
+
onChange: onEditingChange
|
|
786
|
+
});
|
|
787
|
+
const [draft, setDraft] = (0, import_react15.useState)(value);
|
|
788
|
+
const [error, setError] = (0, import_react15.useState)(null);
|
|
789
|
+
const inputRef = (0, import_react15.useRef)(null);
|
|
790
|
+
(0, import_react15.useEffect)(() => {
|
|
791
|
+
if (!editing) {
|
|
792
|
+
setDraft(value);
|
|
793
|
+
setError(null);
|
|
794
|
+
}
|
|
795
|
+
}, [editing, value]);
|
|
796
|
+
(0, import_react15.useEffect)(() => {
|
|
797
|
+
if (!editing) return;
|
|
798
|
+
const el = inputRef.current;
|
|
799
|
+
if (!el) return;
|
|
800
|
+
el.focus();
|
|
801
|
+
el.select();
|
|
802
|
+
}, [editing]);
|
|
803
|
+
const commit = (0, import_react15.useCallback)(() => {
|
|
804
|
+
const next = draft;
|
|
805
|
+
if (validate) {
|
|
806
|
+
const msg = validate(next);
|
|
807
|
+
if (msg !== null) {
|
|
808
|
+
setError(msg);
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
setError(null);
|
|
813
|
+
setEditing(false);
|
|
814
|
+
if (next !== value) onValueChange(next);
|
|
815
|
+
}, [draft, validate, value, onValueChange, setEditing]);
|
|
816
|
+
const cancel = (0, import_react15.useCallback)(() => {
|
|
817
|
+
setDraft(value);
|
|
818
|
+
setError(null);
|
|
819
|
+
setEditing(false);
|
|
820
|
+
}, [value, setEditing]);
|
|
821
|
+
const beginEdit = (0, import_react15.useCallback)(() => {
|
|
822
|
+
if (disabled) return;
|
|
823
|
+
setDraft(value);
|
|
824
|
+
setError(null);
|
|
825
|
+
setEditing(true);
|
|
826
|
+
}, [disabled, value, setEditing]);
|
|
827
|
+
(0, import_react15.useImperativeHandle)(forwardedRef, () => ({ edit: beginEdit, cancel }), [beginEdit, cancel]);
|
|
828
|
+
const onDisplayKeyDown = (e) => {
|
|
829
|
+
if (disabled) return;
|
|
830
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
831
|
+
e.preventDefault();
|
|
832
|
+
beginEdit();
|
|
833
|
+
}
|
|
834
|
+
};
|
|
835
|
+
const onDisplayActivate = (e) => {
|
|
836
|
+
if (disabled) return;
|
|
837
|
+
if (activate === "dblclick" && e.detail >= 2 || activate === "click" && e.detail >= 1) {
|
|
838
|
+
e.preventDefault();
|
|
839
|
+
beginEdit();
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
const onInputKeyDown = (e) => {
|
|
843
|
+
if (e.key === "Enter") {
|
|
844
|
+
e.preventDefault();
|
|
845
|
+
commit();
|
|
846
|
+
} else if (e.key === "Escape") {
|
|
847
|
+
e.preventDefault();
|
|
848
|
+
cancel();
|
|
849
|
+
}
|
|
850
|
+
};
|
|
851
|
+
if (editing) {
|
|
852
|
+
const errorId = `${rest.id ?? "inline-edit"}-error`;
|
|
853
|
+
const inputAriaLabel = ariaLabel ?? value ?? placeholder;
|
|
854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "inline-flex flex-col items-stretch gap-1", children: [
|
|
855
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
856
|
+
"input",
|
|
857
|
+
{
|
|
858
|
+
ref: inputRef,
|
|
859
|
+
type: "text",
|
|
860
|
+
value: draft,
|
|
861
|
+
onChange: (e) => {
|
|
862
|
+
setDraft(e.target.value);
|
|
863
|
+
if (error) setError(null);
|
|
864
|
+
},
|
|
865
|
+
onKeyDown: onInputKeyDown,
|
|
866
|
+
onBlur: () => {
|
|
867
|
+
if (commitOnBlur) commit();
|
|
868
|
+
else cancel();
|
|
869
|
+
},
|
|
870
|
+
placeholder,
|
|
871
|
+
"aria-label": inputAriaLabel,
|
|
872
|
+
"aria-invalid": error ? true : void 0,
|
|
873
|
+
"aria-errormessage": error ? errorId : void 0,
|
|
874
|
+
className: cn(inputStyles({ size, tone: error ? "err" : "default" }), inputClassName)
|
|
875
|
+
}
|
|
876
|
+
),
|
|
877
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { id: errorId, role: "alert", className: "text-err text-[11px]", children: error })
|
|
878
|
+
] });
|
|
879
|
+
}
|
|
880
|
+
const Tag3 = as;
|
|
881
|
+
const isHeading = as === "h1" || as === "h2" || as === "h3";
|
|
882
|
+
const isEmpty = value.length === 0;
|
|
883
|
+
const displayText = isEmpty ? placeholder : value;
|
|
884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
885
|
+
Tag3,
|
|
886
|
+
{
|
|
887
|
+
role: isHeading ? void 0 : "button",
|
|
888
|
+
"aria-roledescription": isHeading ? "editable" : void 0,
|
|
889
|
+
tabIndex: disabled ? -1 : 0,
|
|
890
|
+
"aria-disabled": disabled || void 0,
|
|
891
|
+
"aria-label": ariaLabel ?? `Edit ${value || placeholder}`,
|
|
892
|
+
"data-empty": isEmpty || void 0,
|
|
893
|
+
onClick: onDisplayActivate,
|
|
894
|
+
onKeyDown: onDisplayKeyDown,
|
|
895
|
+
className: cn(
|
|
896
|
+
displayStyles({ size }),
|
|
897
|
+
isEmpty && "text-text-dim italic",
|
|
898
|
+
disabled && "cursor-not-allowed opacity-50 hover:bg-transparent",
|
|
899
|
+
className
|
|
900
|
+
),
|
|
901
|
+
...rest,
|
|
902
|
+
children: displayText
|
|
903
|
+
}
|
|
904
|
+
);
|
|
905
|
+
});
|
|
906
|
+
InlineEdit.displayName = "InlineEdit";
|
|
907
|
+
|
|
908
|
+
// src/components/Input/Input.tsx
|
|
909
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
910
|
+
var import_react16 = require("react");
|
|
911
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
912
|
+
var inputWrapperStyles = (0, import_class_variance_authority4.cva)(
|
|
725
913
|
[
|
|
726
914
|
"flex items-center gap-[6px] font-sans transition-[border-color,box-shadow] duration-(--duration-micro)",
|
|
727
915
|
"border focus-within:ring-[3px]",
|
|
@@ -753,16 +941,16 @@ var inputWrapperStyles = (0, import_class_variance_authority3.cva)(
|
|
|
753
941
|
defaultVariants: { size: "md", tone: "default", density: "comfortable" }
|
|
754
942
|
}
|
|
755
943
|
);
|
|
756
|
-
var Input = (0,
|
|
944
|
+
var Input = (0, import_react16.forwardRef)(function Input2({ size, tone, density, icon, trailing, error, width, className, style, disabled, ...props }, ref) {
|
|
757
945
|
const computedTone = error ? "err" : tone;
|
|
758
|
-
return /* @__PURE__ */ (0,
|
|
946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
759
947
|
"div",
|
|
760
948
|
{
|
|
761
949
|
className: cn(inputWrapperStyles({ size, tone: computedTone, density }), className),
|
|
762
950
|
style: { width, ...style },
|
|
763
951
|
children: [
|
|
764
|
-
icon && /* @__PURE__ */ (0,
|
|
765
|
-
/* @__PURE__ */ (0,
|
|
952
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-text-dim leading-none", children: icon }),
|
|
953
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
766
954
|
"input",
|
|
767
955
|
{
|
|
768
956
|
ref,
|
|
@@ -776,7 +964,7 @@ var Input = (0, import_react15.forwardRef)(function Input2({ size, tone, density
|
|
|
776
964
|
...props
|
|
777
965
|
}
|
|
778
966
|
),
|
|
779
|
-
trailing && /* @__PURE__ */ (0,
|
|
967
|
+
trailing && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-text-dim text-[11px]", children: trailing })
|
|
780
968
|
]
|
|
781
969
|
}
|
|
782
970
|
);
|
|
@@ -784,9 +972,9 @@ var Input = (0, import_react15.forwardRef)(function Input2({ size, tone, density
|
|
|
784
972
|
Input.displayName = "Input";
|
|
785
973
|
|
|
786
974
|
// src/components/Input/SearchInput.tsx
|
|
787
|
-
var
|
|
788
|
-
var
|
|
789
|
-
var SearchInput = (0,
|
|
975
|
+
var import_react17 = require("react");
|
|
976
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
977
|
+
var SearchInput = (0, import_react17.forwardRef)(function SearchInput2({
|
|
790
978
|
shortcut,
|
|
791
979
|
width,
|
|
792
980
|
density = "comfortable",
|
|
@@ -799,7 +987,7 @@ var SearchInput = (0, import_react16.forwardRef)(function SearchInput2({
|
|
|
799
987
|
const isTouch = density === "touch";
|
|
800
988
|
const resolvedWidth = width ?? (isTouch ? "100%" : 360);
|
|
801
989
|
const resolvedShortcut = shortcut ?? (isTouch ? void 0 : "\u2318K");
|
|
802
|
-
return /* @__PURE__ */ (0,
|
|
990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
803
991
|
"div",
|
|
804
992
|
{
|
|
805
993
|
className: cn(
|
|
@@ -812,8 +1000,8 @@ var SearchInput = (0, import_react16.forwardRef)(function SearchInput2({
|
|
|
812
1000
|
),
|
|
813
1001
|
style: { width: resolvedWidth, ...style },
|
|
814
1002
|
children: [
|
|
815
|
-
/* @__PURE__ */ (0,
|
|
816
|
-
/* @__PURE__ */ (0,
|
|
1003
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: cn("text-text-dim leading-none", isTouch && "text-[18px]"), "aria-hidden": true, children: "\u2315" }),
|
|
1004
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
817
1005
|
"input",
|
|
818
1006
|
{
|
|
819
1007
|
ref,
|
|
@@ -827,7 +1015,7 @@ var SearchInput = (0, import_react16.forwardRef)(function SearchInput2({
|
|
|
827
1015
|
...props
|
|
828
1016
|
}
|
|
829
1017
|
),
|
|
830
|
-
resolvedShortcut && /* @__PURE__ */ (0,
|
|
1018
|
+
resolvedShortcut && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("kbd", { className: "text-text-dim border-border rounded-xs border px-[6px] py-[2px] font-mono text-[10px]", children: resolvedShortcut })
|
|
831
1019
|
]
|
|
832
1020
|
}
|
|
833
1021
|
);
|
|
@@ -835,16 +1023,16 @@ var SearchInput = (0, import_react16.forwardRef)(function SearchInput2({
|
|
|
835
1023
|
SearchInput.displayName = "SearchInput";
|
|
836
1024
|
|
|
837
1025
|
// src/components/OTP/OTP.tsx
|
|
838
|
-
var
|
|
839
|
-
var
|
|
840
|
-
var OTP = (0,
|
|
841
|
-
const baseId = (0,
|
|
842
|
-
const refs = (0,
|
|
843
|
-
const [values, setValues] = (0,
|
|
1026
|
+
var import_react18 = require("react");
|
|
1027
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1028
|
+
var OTP = (0, import_react18.forwardRef)(function OTP2({ length = 6, onComplete, onChange, defaultValue = "", ariaLabel = "Code", className, disabled }, ref) {
|
|
1029
|
+
const baseId = (0, import_react18.useId)();
|
|
1030
|
+
const refs = (0, import_react18.useRef)([]);
|
|
1031
|
+
const [values, setValues] = (0, import_react18.useState)(
|
|
844
1032
|
() => Array.from({ length }, (_, i) => defaultValue[i] ?? "")
|
|
845
1033
|
);
|
|
846
|
-
const [completedAnnouncement, setCompletedAnnouncement] = (0,
|
|
847
|
-
(0,
|
|
1034
|
+
const [completedAnnouncement, setCompletedAnnouncement] = (0, import_react18.useState)("");
|
|
1035
|
+
(0, import_react18.useImperativeHandle)(ref, () => ({
|
|
848
1036
|
focus: () => refs.current[0]?.focus(),
|
|
849
1037
|
reset: () => {
|
|
850
1038
|
setValues(Array(length).fill(""));
|
|
@@ -894,8 +1082,8 @@ var OTP = (0, import_react17.forwardRef)(function OTP2({ length = 6, onComplete,
|
|
|
894
1082
|
}
|
|
895
1083
|
refs.current[Math.min(pasted.length, length - 1)]?.focus();
|
|
896
1084
|
};
|
|
897
|
-
return /* @__PURE__ */ (0,
|
|
898
|
-
values.map((c, i) => /* @__PURE__ */ (0,
|
|
1085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex gap-2", className), children: [
|
|
1086
|
+
values.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
899
1087
|
"input",
|
|
900
1088
|
{
|
|
901
1089
|
id: `${baseId}-${i}`,
|
|
@@ -921,23 +1109,23 @@ var OTP = (0, import_react17.forwardRef)(function OTP2({ length = 6, onComplete,
|
|
|
921
1109
|
},
|
|
922
1110
|
i
|
|
923
1111
|
)),
|
|
924
|
-
/* @__PURE__ */ (0,
|
|
1112
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", "aria-live": "polite", "aria-atomic": "true", children: completedAnnouncement })
|
|
925
1113
|
] });
|
|
926
1114
|
});
|
|
927
1115
|
OTP.displayName = "OTP";
|
|
928
1116
|
|
|
929
1117
|
// src/components/Radio/Radio.tsx
|
|
930
1118
|
var RadixRadio = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
931
|
-
var
|
|
932
|
-
var
|
|
933
|
-
var RadioGroup = (0,
|
|
934
|
-
return /* @__PURE__ */ (0,
|
|
1119
|
+
var import_react19 = require("react");
|
|
1120
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1121
|
+
var RadioGroup = (0, import_react19.forwardRef)(function RadioGroup2({ className, ...props }, ref) {
|
|
1122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RadixRadio.Root, { ref, className: cn("flex flex-col gap-2", className), ...props });
|
|
935
1123
|
});
|
|
936
1124
|
RadioGroup.displayName = "RadioGroup";
|
|
937
|
-
var Radio = (0,
|
|
938
|
-
const reactId = (0,
|
|
1125
|
+
var Radio = (0, import_react19.forwardRef)(function Radio2({ label, className, id: idProp, ...props }, ref) {
|
|
1126
|
+
const reactId = (0, import_react19.useId)();
|
|
939
1127
|
const id = idProp ?? `radio-${reactId}`;
|
|
940
|
-
return /* @__PURE__ */ (0,
|
|
1128
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
941
1129
|
"span",
|
|
942
1130
|
{
|
|
943
1131
|
className: cn(
|
|
@@ -946,7 +1134,7 @@ var Radio = (0, import_react18.forwardRef)(function Radio2({ label, className, i
|
|
|
946
1134
|
className
|
|
947
1135
|
),
|
|
948
1136
|
children: [
|
|
949
|
-
/* @__PURE__ */ (0,
|
|
1137
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
950
1138
|
RadixRadio.Item,
|
|
951
1139
|
{
|
|
952
1140
|
ref,
|
|
@@ -959,10 +1147,10 @@ var Radio = (0, import_react18.forwardRef)(function Radio2({ label, className, i
|
|
|
959
1147
|
"focus-visible:ring-accent-dim outline-none focus-visible:ring-[3px]"
|
|
960
1148
|
),
|
|
961
1149
|
...props,
|
|
962
|
-
children: /* @__PURE__ */ (0,
|
|
1150
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RadixRadio.Indicator, { className: "bg-accent block h-[7px] w-[7px] rounded-full" })
|
|
963
1151
|
}
|
|
964
1152
|
),
|
|
965
|
-
label && /* @__PURE__ */ (0,
|
|
1153
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("label", { htmlFor: id, className: "cursor-pointer text-[13px]", children: label })
|
|
966
1154
|
]
|
|
967
1155
|
}
|
|
968
1156
|
);
|
|
@@ -971,8 +1159,8 @@ Radio.displayName = "Radio";
|
|
|
971
1159
|
|
|
972
1160
|
// src/components/Select/Select.tsx
|
|
973
1161
|
var RadixSelect = __toESM(require("@radix-ui/react-select"), 1);
|
|
974
|
-
var
|
|
975
|
-
var
|
|
1162
|
+
var import_react20 = require("react");
|
|
1163
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
976
1164
|
var SelectRoot = RadixSelect.Root;
|
|
977
1165
|
var SelectValue = RadixSelect.Value;
|
|
978
1166
|
var SelectGroup = RadixSelect.Group;
|
|
@@ -982,8 +1170,8 @@ var triggerClasses = {
|
|
|
982
1170
|
md: "h-[34px] px-[10px] text-[13px]",
|
|
983
1171
|
lg: "h-10 px-3 text-[14px]"
|
|
984
1172
|
};
|
|
985
|
-
var SelectTrigger = (0,
|
|
986
|
-
return /* @__PURE__ */ (0,
|
|
1173
|
+
var SelectTrigger = (0, import_react20.forwardRef)(function SelectTrigger2({ size = "md", className, children, ...props }, ref) {
|
|
1174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
987
1175
|
RadixSelect.Trigger,
|
|
988
1176
|
{
|
|
989
1177
|
ref,
|
|
@@ -999,15 +1187,15 @@ var SelectTrigger = (0, import_react19.forwardRef)(function SelectTrigger2({ siz
|
|
|
999
1187
|
...props,
|
|
1000
1188
|
children: [
|
|
1001
1189
|
children,
|
|
1002
|
-
/* @__PURE__ */ (0,
|
|
1190
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixSelect.Icon, { className: "text-text-dim text-[11px] leading-none", children: "\u25BE" })
|
|
1003
1191
|
]
|
|
1004
1192
|
}
|
|
1005
1193
|
);
|
|
1006
1194
|
});
|
|
1007
1195
|
SelectTrigger.displayName = "SelectTrigger";
|
|
1008
|
-
var SelectContent = (0,
|
|
1196
|
+
var SelectContent = (0, import_react20.forwardRef)(
|
|
1009
1197
|
function SelectContent2({ className, children, position = "popper", sideOffset = 6, ...props }, ref) {
|
|
1010
|
-
return /* @__PURE__ */ (0,
|
|
1198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1011
1199
|
RadixSelect.Content,
|
|
1012
1200
|
{
|
|
1013
1201
|
ref,
|
|
@@ -1019,15 +1207,15 @@ var SelectContent = (0, import_react19.forwardRef)(
|
|
|
1019
1207
|
className
|
|
1020
1208
|
),
|
|
1021
1209
|
...props,
|
|
1022
|
-
children: /* @__PURE__ */ (0,
|
|
1210
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixSelect.Viewport, { children })
|
|
1023
1211
|
}
|
|
1024
1212
|
) });
|
|
1025
1213
|
}
|
|
1026
1214
|
);
|
|
1027
1215
|
SelectContent.displayName = "SelectContent";
|
|
1028
|
-
var SelectItem = (0,
|
|
1216
|
+
var SelectItem = (0, import_react20.forwardRef)(
|
|
1029
1217
|
function SelectItem2({ className, children, ...props }, ref) {
|
|
1030
|
-
return /* @__PURE__ */ (0,
|
|
1218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1031
1219
|
RadixSelect.Item,
|
|
1032
1220
|
{
|
|
1033
1221
|
ref,
|
|
@@ -1039,7 +1227,7 @@ var SelectItem = (0, import_react19.forwardRef)(
|
|
|
1039
1227
|
className
|
|
1040
1228
|
),
|
|
1041
1229
|
...props,
|
|
1042
|
-
children: /* @__PURE__ */ (0,
|
|
1230
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixSelect.ItemText, { children })
|
|
1043
1231
|
}
|
|
1044
1232
|
);
|
|
1045
1233
|
}
|
|
@@ -1054,30 +1242,30 @@ function Select({
|
|
|
1054
1242
|
"aria-labelledby": ariaLabelledBy,
|
|
1055
1243
|
...rootProps
|
|
1056
1244
|
}) {
|
|
1057
|
-
return /* @__PURE__ */ (0,
|
|
1058
|
-
/* @__PURE__ */ (0,
|
|
1245
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(RadixSelect.Root, { ...rootProps, children: [
|
|
1246
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1059
1247
|
SelectTrigger,
|
|
1060
1248
|
{
|
|
1061
1249
|
size,
|
|
1062
1250
|
className,
|
|
1063
1251
|
"aria-label": ariaLabel,
|
|
1064
1252
|
"aria-labelledby": ariaLabelledBy,
|
|
1065
|
-
children: /* @__PURE__ */ (0,
|
|
1253
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { placeholder })
|
|
1066
1254
|
}
|
|
1067
1255
|
),
|
|
1068
|
-
/* @__PURE__ */ (0,
|
|
1256
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: options.map((opt) => {
|
|
1069
1257
|
const value = typeof opt === "string" ? opt : opt.value;
|
|
1070
1258
|
const label = typeof opt === "string" ? opt : opt.label;
|
|
1071
|
-
return /* @__PURE__ */ (0,
|
|
1259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value, children: label }, value);
|
|
1072
1260
|
}) })
|
|
1073
1261
|
] });
|
|
1074
1262
|
}
|
|
1075
1263
|
|
|
1076
1264
|
// src/components/Slider/Slider.tsx
|
|
1077
1265
|
var RadixSlider = __toESM(require("@radix-ui/react-slider"), 1);
|
|
1078
|
-
var
|
|
1079
|
-
var
|
|
1080
|
-
var Slider = (0,
|
|
1266
|
+
var import_react21 = require("react");
|
|
1267
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1268
|
+
var Slider = (0, import_react21.forwardRef)(function Slider2({
|
|
1081
1269
|
showValue,
|
|
1082
1270
|
width = 240,
|
|
1083
1271
|
className,
|
|
@@ -1092,10 +1280,10 @@ var Slider = (0, import_react20.forwardRef)(function Slider2({
|
|
|
1092
1280
|
const arrValue = Array.isArray(value) ? value : value !== void 0 ? [value] : void 0;
|
|
1093
1281
|
const arrDefault = Array.isArray(defaultValue) ? defaultValue : defaultValue !== void 0 ? [defaultValue] : void 0;
|
|
1094
1282
|
const isControlled = arrValue !== void 0;
|
|
1095
|
-
const [uncontrolledValue, setUncontrolledValue] = (0,
|
|
1283
|
+
const [uncontrolledValue, setUncontrolledValue] = (0, import_react21.useState)(arrDefault);
|
|
1096
1284
|
const currentValue = isControlled ? arrValue : uncontrolledValue;
|
|
1097
1285
|
const wasScalar = !Array.isArray(value ?? defaultValue) && (value ?? defaultValue) !== void 0;
|
|
1098
|
-
const handleValueChange = (0,
|
|
1286
|
+
const handleValueChange = (0, import_react21.useCallback)(
|
|
1099
1287
|
(next) => {
|
|
1100
1288
|
if (!isControlled) setUncontrolledValue(next);
|
|
1101
1289
|
if (onValueChange) {
|
|
@@ -1106,14 +1294,14 @@ var Slider = (0, import_react20.forwardRef)(function Slider2({
|
|
|
1106
1294
|
);
|
|
1107
1295
|
const display = currentValue?.[0] ?? props.min ?? 0;
|
|
1108
1296
|
const thumbCount = (arrValue ?? arrDefault)?.length ?? 1;
|
|
1109
|
-
return /* @__PURE__ */ (0,
|
|
1297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1110
1298
|
"span",
|
|
1111
1299
|
{
|
|
1112
1300
|
ref,
|
|
1113
1301
|
className: cn("inline-flex items-center gap-[10px]", className),
|
|
1114
1302
|
style: { width },
|
|
1115
1303
|
children: [
|
|
1116
|
-
/* @__PURE__ */ (0,
|
|
1304
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1117
1305
|
RadixSlider.Root,
|
|
1118
1306
|
{
|
|
1119
1307
|
value: arrValue,
|
|
@@ -1122,11 +1310,11 @@ var Slider = (0, import_react20.forwardRef)(function Slider2({
|
|
|
1122
1310
|
className: "relative flex h-4 flex-1 touch-none items-center select-none",
|
|
1123
1311
|
...props,
|
|
1124
1312
|
children: [
|
|
1125
|
-
/* @__PURE__ */ (0,
|
|
1313
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RadixSlider.Track, { className: "bg-panel-2 relative h-1 grow rounded-full", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RadixSlider.Range, { className: "bg-accent absolute h-full rounded-full" }) }),
|
|
1126
1314
|
Array.from({ length: thumbCount }, (_, i) => {
|
|
1127
1315
|
const perThumb = thumbLabels?.[i];
|
|
1128
1316
|
const thumbAriaLabel = perThumb ?? (ariaLabelledBy ? void 0 : ariaLabel ?? "Value");
|
|
1129
|
-
return /* @__PURE__ */ (0,
|
|
1317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1130
1318
|
RadixSlider.Thumb,
|
|
1131
1319
|
{
|
|
1132
1320
|
className: cn(
|
|
@@ -1143,7 +1331,7 @@ var Slider = (0, import_react20.forwardRef)(function Slider2({
|
|
|
1143
1331
|
]
|
|
1144
1332
|
}
|
|
1145
1333
|
),
|
|
1146
|
-
showValue && /* @__PURE__ */ (0,
|
|
1334
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-text-muted min-w-[28px] text-right font-mono text-[11px]", children: display })
|
|
1147
1335
|
]
|
|
1148
1336
|
}
|
|
1149
1337
|
);
|
|
@@ -1152,8 +1340,8 @@ Slider.displayName = "Slider";
|
|
|
1152
1340
|
|
|
1153
1341
|
// src/components/Switch/Switch.tsx
|
|
1154
1342
|
var RadixSwitch = __toESM(require("@radix-ui/react-switch"), 1);
|
|
1155
|
-
var
|
|
1156
|
-
var
|
|
1343
|
+
var import_react22 = require("react");
|
|
1344
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1157
1345
|
var trackClasses = {
|
|
1158
1346
|
comfortable: {
|
|
1159
1347
|
sm: "h-4 w-7",
|
|
@@ -1174,10 +1362,10 @@ var thumbClasses = {
|
|
|
1174
1362
|
md: "h-[26px] w-[26px] data-[state=checked]:translate-x-5"
|
|
1175
1363
|
}
|
|
1176
1364
|
};
|
|
1177
|
-
var Switch = (0,
|
|
1178
|
-
const reactId = (0,
|
|
1365
|
+
var Switch = (0, import_react22.forwardRef)(function Switch2({ label, size = "md", density = "comfortable", className, id: idProp, ...props }, ref) {
|
|
1366
|
+
const reactId = (0, import_react22.useId)();
|
|
1179
1367
|
const id = idProp ?? `sw-${reactId}`;
|
|
1180
|
-
return /* @__PURE__ */ (0,
|
|
1368
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1181
1369
|
"span",
|
|
1182
1370
|
{
|
|
1183
1371
|
className: cn(
|
|
@@ -1186,7 +1374,7 @@ var Switch = (0, import_react21.forwardRef)(function Switch2({ label, size = "md
|
|
|
1186
1374
|
className
|
|
1187
1375
|
),
|
|
1188
1376
|
children: [
|
|
1189
|
-
/* @__PURE__ */ (0,
|
|
1377
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1190
1378
|
RadixSwitch.Root,
|
|
1191
1379
|
{
|
|
1192
1380
|
ref,
|
|
@@ -1199,7 +1387,7 @@ var Switch = (0, import_react21.forwardRef)(function Switch2({ label, size = "md
|
|
|
1199
1387
|
trackClasses[density][size]
|
|
1200
1388
|
),
|
|
1201
1389
|
...props,
|
|
1202
|
-
children: /* @__PURE__ */ (0,
|
|
1390
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1203
1391
|
RadixSwitch.Thumb,
|
|
1204
1392
|
{
|
|
1205
1393
|
className: cn(
|
|
@@ -1211,7 +1399,7 @@ var Switch = (0, import_react21.forwardRef)(function Switch2({ label, size = "md
|
|
|
1211
1399
|
)
|
|
1212
1400
|
}
|
|
1213
1401
|
),
|
|
1214
|
-
label && /* @__PURE__ */ (0,
|
|
1402
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1215
1403
|
"label",
|
|
1216
1404
|
{
|
|
1217
1405
|
htmlFor: id,
|
|
@@ -1226,10 +1414,10 @@ var Switch = (0, import_react21.forwardRef)(function Switch2({ label, size = "md
|
|
|
1226
1414
|
Switch.displayName = "Switch";
|
|
1227
1415
|
|
|
1228
1416
|
// src/components/Textarea/Textarea.tsx
|
|
1229
|
-
var
|
|
1230
|
-
var
|
|
1231
|
-
var
|
|
1232
|
-
var textareaStyles = (0,
|
|
1417
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
1418
|
+
var import_react23 = require("react");
|
|
1419
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1420
|
+
var textareaStyles = (0, import_class_variance_authority5.cva)(
|
|
1233
1421
|
[
|
|
1234
1422
|
"w-full font-sans text-text bg-panel rounded-md p-[10px]",
|
|
1235
1423
|
"border outline-none transition-[border-color,box-shadow] duration-(--duration-micro)",
|
|
@@ -1247,8 +1435,8 @@ var textareaStyles = (0, import_class_variance_authority4.cva)(
|
|
|
1247
1435
|
defaultVariants: { tone: "default" }
|
|
1248
1436
|
}
|
|
1249
1437
|
);
|
|
1250
|
-
var Textarea = (0,
|
|
1251
|
-
return /* @__PURE__ */ (0,
|
|
1438
|
+
var Textarea = (0, import_react23.forwardRef)(function Textarea2({ tone, error, rows = 4, className, ...props }, ref) {
|
|
1439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1252
1440
|
"textarea",
|
|
1253
1441
|
{
|
|
1254
1442
|
ref,
|
|
@@ -1263,11 +1451,11 @@ Textarea.displayName = "Textarea";
|
|
|
1263
1451
|
|
|
1264
1452
|
// src/components/Avatar/Avatar.tsx
|
|
1265
1453
|
var RadixAvatar = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
1266
|
-
var
|
|
1454
|
+
var import_react25 = require("react");
|
|
1267
1455
|
|
|
1268
1456
|
// src/components/StatusDot/StatusDot.tsx
|
|
1269
|
-
var
|
|
1270
|
-
var
|
|
1457
|
+
var import_react24 = require("react");
|
|
1458
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1271
1459
|
var stateColor = {
|
|
1272
1460
|
ok: "bg-ok",
|
|
1273
1461
|
warn: "bg-warn",
|
|
@@ -1292,8 +1480,8 @@ var stateLabel = {
|
|
|
1292
1480
|
sync: "Syncing",
|
|
1293
1481
|
accent: "Active"
|
|
1294
1482
|
};
|
|
1295
|
-
var StatusDot = (0,
|
|
1296
|
-
return /* @__PURE__ */ (0,
|
|
1483
|
+
var StatusDot = (0, import_react24.forwardRef)(function StatusDot2({ state = "ok", label, pulse, size = 8, className, ...props }, ref) {
|
|
1484
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1297
1485
|
"span",
|
|
1298
1486
|
{
|
|
1299
1487
|
ref,
|
|
@@ -1302,7 +1490,7 @@ var StatusDot = (0, import_react23.forwardRef)(function StatusDot2({ state = "ok
|
|
|
1302
1490
|
className: cn("inline-flex items-center gap-[6px]", className),
|
|
1303
1491
|
...props,
|
|
1304
1492
|
children: [
|
|
1305
|
-
/* @__PURE__ */ (0,
|
|
1493
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1306
1494
|
"span",
|
|
1307
1495
|
{
|
|
1308
1496
|
className: cn(
|
|
@@ -1314,7 +1502,7 @@ var StatusDot = (0, import_react23.forwardRef)(function StatusDot2({ state = "ok
|
|
|
1314
1502
|
style: { width: size, height: size }
|
|
1315
1503
|
}
|
|
1316
1504
|
),
|
|
1317
|
-
label && /* @__PURE__ */ (0,
|
|
1505
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-text-muted text-[12px]", children: label })
|
|
1318
1506
|
]
|
|
1319
1507
|
}
|
|
1320
1508
|
);
|
|
@@ -1331,7 +1519,7 @@ var sizePx = {
|
|
|
1331
1519
|
};
|
|
1332
1520
|
|
|
1333
1521
|
// src/components/Avatar/Avatar.tsx
|
|
1334
|
-
var
|
|
1522
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1335
1523
|
var statusBg = {
|
|
1336
1524
|
ok: "bg-ok",
|
|
1337
1525
|
warn: "bg-warn",
|
|
@@ -1346,11 +1534,11 @@ function hashHue(str) {
|
|
|
1346
1534
|
for (let i = 0; i < str.length; i++) h = (h * 31 + str.charCodeAt(i)) % 360;
|
|
1347
1535
|
return h;
|
|
1348
1536
|
}
|
|
1349
|
-
var Avatar = (0,
|
|
1537
|
+
var Avatar = (0, import_react25.forwardRef)(function Avatar2({ name = "?", src, size = "md", status, initials, className, style, ...props }, ref) {
|
|
1350
1538
|
const dim = sizePx[size];
|
|
1351
1539
|
const hue = hashHue(name);
|
|
1352
1540
|
const computedInitials = initials ?? initialsFor(name);
|
|
1353
|
-
return /* @__PURE__ */ (0,
|
|
1541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1354
1542
|
"span",
|
|
1355
1543
|
{
|
|
1356
1544
|
ref,
|
|
@@ -1358,7 +1546,7 @@ var Avatar = (0, import_react24.forwardRef)(function Avatar2({ name = "?", src,
|
|
|
1358
1546
|
style: { width: dim, height: dim, ...style },
|
|
1359
1547
|
...props,
|
|
1360
1548
|
children: [
|
|
1361
|
-
/* @__PURE__ */ (0,
|
|
1549
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1362
1550
|
RadixAvatar.Root,
|
|
1363
1551
|
{
|
|
1364
1552
|
className: "border-border relative inline-flex h-full w-full shrink-0 overflow-hidden rounded-full border",
|
|
@@ -1366,8 +1554,8 @@ var Avatar = (0, import_react24.forwardRef)(function Avatar2({ name = "?", src,
|
|
|
1366
1554
|
background: src ? void 0 : `oklch(var(--color-avatar-fallback-l) var(--color-avatar-fallback-c) ${hue})`
|
|
1367
1555
|
},
|
|
1368
1556
|
children: [
|
|
1369
|
-
src && /* @__PURE__ */ (0,
|
|
1370
|
-
/* @__PURE__ */ (0,
|
|
1557
|
+
src && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RadixAvatar.Image, { src, alt: name, className: "h-full w-full object-cover" }),
|
|
1558
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1371
1559
|
RadixAvatar.Fallback,
|
|
1372
1560
|
{
|
|
1373
1561
|
className: "flex h-full w-full items-center justify-center font-sans font-semibold text-white",
|
|
@@ -1378,7 +1566,7 @@ var Avatar = (0, import_react24.forwardRef)(function Avatar2({ name = "?", src,
|
|
|
1378
1566
|
]
|
|
1379
1567
|
}
|
|
1380
1568
|
),
|
|
1381
|
-
status && /* @__PURE__ */ (0,
|
|
1569
|
+
status && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1382
1570
|
"span",
|
|
1383
1571
|
{
|
|
1384
1572
|
role: "img",
|
|
@@ -1397,16 +1585,16 @@ var Avatar = (0, import_react24.forwardRef)(function Avatar2({ name = "?", src,
|
|
|
1397
1585
|
Avatar.displayName = "Avatar";
|
|
1398
1586
|
|
|
1399
1587
|
// src/components/Avatar/AvatarGroup.tsx
|
|
1400
|
-
var
|
|
1401
|
-
var
|
|
1402
|
-
var AvatarGroup = (0,
|
|
1588
|
+
var import_react26 = require("react");
|
|
1589
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1590
|
+
var AvatarGroup = (0, import_react26.forwardRef)(function AvatarGroup2({ names, max = 3, size = "md", className, ...props }, ref) {
|
|
1403
1591
|
const dim = sizePx[size];
|
|
1404
1592
|
const visible = names.slice(0, max);
|
|
1405
1593
|
const rest = names.length - visible.length;
|
|
1406
1594
|
const overlap = -dim * 0.35;
|
|
1407
|
-
return /* @__PURE__ */ (0,
|
|
1408
|
-
visible.map((n, i) => /* @__PURE__ */ (0,
|
|
1409
|
-
rest > 0 && /* @__PURE__ */ (0,
|
|
1595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref, className: cn("inline-flex", className), ...props, children: [
|
|
1596
|
+
visible.map((n, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: { marginLeft: i === 0 ? 0 : overlap }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Avatar, { name: n, size }) }, `${n}-${i}`)),
|
|
1597
|
+
rest > 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1410
1598
|
"span",
|
|
1411
1599
|
{
|
|
1412
1600
|
"aria-label": `+${rest} more`,
|
|
@@ -1428,10 +1616,10 @@ var AvatarGroup = (0, import_react25.forwardRef)(function AvatarGroup2({ names,
|
|
|
1428
1616
|
AvatarGroup.displayName = "AvatarGroup";
|
|
1429
1617
|
|
|
1430
1618
|
// src/components/Badge/Badge.tsx
|
|
1431
|
-
var
|
|
1432
|
-
var
|
|
1433
|
-
var
|
|
1434
|
-
var badgeStyles = (0,
|
|
1619
|
+
var import_class_variance_authority6 = require("class-variance-authority");
|
|
1620
|
+
var import_react27 = require("react");
|
|
1621
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1622
|
+
var badgeStyles = (0, import_class_variance_authority6.cva)("inline-flex items-center font-sans leading-none whitespace-nowrap", {
|
|
1435
1623
|
variants: {
|
|
1436
1624
|
variant: {
|
|
1437
1625
|
neutral: "bg-panel-2 text-text-muted border border-border",
|
|
@@ -1464,28 +1652,28 @@ var dotColorClass = {
|
|
|
1464
1652
|
solid: "bg-bg"
|
|
1465
1653
|
};
|
|
1466
1654
|
var dotSize = { sm: "h-[5px] w-[5px]", md: "h-[6px] w-[6px]", lg: "h-[7px] w-[7px]" };
|
|
1467
|
-
var Badge = (0,
|
|
1655
|
+
var Badge = (0, import_react27.forwardRef)(function Badge2({ variant = "neutral", size = "md", dot, icon, className, children, ...props }, ref) {
|
|
1468
1656
|
const sz = size ?? "md";
|
|
1469
1657
|
const v = variant ?? "neutral";
|
|
1470
|
-
return /* @__PURE__ */ (0,
|
|
1471
|
-
dot && /* @__PURE__ */ (0,
|
|
1658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { ref, className: cn(badgeStyles({ variant, size }), className), ...props, children: [
|
|
1659
|
+
dot && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1472
1660
|
"span",
|
|
1473
1661
|
{
|
|
1474
1662
|
"aria-hidden": true,
|
|
1475
1663
|
className: cn("inline-block rounded-full", dotSize[sz], dotColorClass[v])
|
|
1476
1664
|
}
|
|
1477
1665
|
),
|
|
1478
|
-
icon && /* @__PURE__ */ (0,
|
|
1666
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "inline-flex leading-none", children: icon }),
|
|
1479
1667
|
children
|
|
1480
1668
|
] });
|
|
1481
1669
|
});
|
|
1482
1670
|
Badge.displayName = "Badge";
|
|
1483
1671
|
|
|
1484
1672
|
// src/components/Card/Card.tsx
|
|
1485
|
-
var
|
|
1486
|
-
var
|
|
1487
|
-
var
|
|
1488
|
-
var cardStyles = (0,
|
|
1673
|
+
var import_class_variance_authority7 = require("class-variance-authority");
|
|
1674
|
+
var import_react28 = require("react");
|
|
1675
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1676
|
+
var cardStyles = (0, import_class_variance_authority7.cva)(
|
|
1489
1677
|
"block bg-panel border border-border transition-[border-color,transform,box-shadow] duration-(--duration-step)",
|
|
1490
1678
|
{
|
|
1491
1679
|
variants: {
|
|
@@ -1506,7 +1694,7 @@ var cardStyles = (0, import_class_variance_authority6.cva)(
|
|
|
1506
1694
|
defaultVariants: { variant: "default", interactive: false, density: "comfortable" }
|
|
1507
1695
|
}
|
|
1508
1696
|
);
|
|
1509
|
-
var Card = (0,
|
|
1697
|
+
var Card = (0, import_react28.forwardRef)(function Card2({
|
|
1510
1698
|
variant,
|
|
1511
1699
|
interactive,
|
|
1512
1700
|
density,
|
|
@@ -1538,7 +1726,7 @@ var Card = (0, import_react27.forwardRef)(function Card2({
|
|
|
1538
1726
|
onClick(e);
|
|
1539
1727
|
}
|
|
1540
1728
|
} : void 0;
|
|
1541
|
-
return /* @__PURE__ */ (0,
|
|
1729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1542
1730
|
"div",
|
|
1543
1731
|
{
|
|
1544
1732
|
ref,
|
|
@@ -1553,20 +1741,20 @@ var Card = (0, import_react27.forwardRef)(function Card2({
|
|
|
1553
1741
|
),
|
|
1554
1742
|
...props,
|
|
1555
1743
|
children: [
|
|
1556
|
-
(title || actions) && /* @__PURE__ */ (0,
|
|
1557
|
-
title && /* @__PURE__ */ (0,
|
|
1558
|
-
actions && /* @__PURE__ */ (0,
|
|
1744
|
+
(title || actions) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: cn("flex items-start gap-3", (description || children) && "mb-[10px]"), children: [
|
|
1745
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex-1 text-[14px] font-medium", children: title }),
|
|
1746
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex gap-1", children: actions })
|
|
1559
1747
|
] }),
|
|
1560
|
-
description && /* @__PURE__ */ (0,
|
|
1748
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("text-text-muted text-[12px] leading-[1.55]", children && "mb-[14px]"), children: description }),
|
|
1561
1749
|
children,
|
|
1562
|
-
footer && /* @__PURE__ */ (0,
|
|
1750
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "border-border text-text-dim mt-[14px] border-t pt-3 text-[11px]", children: footer })
|
|
1563
1751
|
]
|
|
1564
1752
|
}
|
|
1565
1753
|
);
|
|
1566
1754
|
});
|
|
1567
1755
|
Card.displayName = "Card";
|
|
1568
|
-
var CardLink = (0,
|
|
1569
|
-
return /* @__PURE__ */ (0,
|
|
1756
|
+
var CardLink = (0, import_react28.forwardRef)(function CardLink2({ variant, density, title, description, footer, className, children, href, ...props }, ref) {
|
|
1757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1570
1758
|
"a",
|
|
1571
1759
|
{
|
|
1572
1760
|
ref,
|
|
@@ -1579,10 +1767,10 @@ var CardLink = (0, import_react27.forwardRef)(function CardLink2({ variant, dens
|
|
|
1579
1767
|
),
|
|
1580
1768
|
...props,
|
|
1581
1769
|
children: [
|
|
1582
|
-
title && /* @__PURE__ */ (0,
|
|
1583
|
-
description && /* @__PURE__ */ (0,
|
|
1770
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("flex items-start", (description || children) && "mb-[10px]"), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex-1 text-[14px] font-medium", children: title }) }),
|
|
1771
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("text-text-muted text-[12px] leading-[1.55]", children && "mb-[14px]"), children: description }),
|
|
1584
1772
|
children,
|
|
1585
|
-
footer && /* @__PURE__ */ (0,
|
|
1773
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "border-border text-text-dim mt-[14px] border-t pt-3 text-[11px]", children: footer })
|
|
1586
1774
|
]
|
|
1587
1775
|
}
|
|
1588
1776
|
);
|
|
@@ -1590,28 +1778,28 @@ var CardLink = (0, import_react27.forwardRef)(function CardLink2({ variant, dens
|
|
|
1590
1778
|
CardLink.displayName = "CardLink";
|
|
1591
1779
|
|
|
1592
1780
|
// src/components/Card/StatCard.tsx
|
|
1593
|
-
var
|
|
1594
|
-
var
|
|
1781
|
+
var import_react29 = require("react");
|
|
1782
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1595
1783
|
var trendClasses = {
|
|
1596
1784
|
up: "text-ok",
|
|
1597
1785
|
down: "text-err",
|
|
1598
1786
|
flat: "text-text-dim"
|
|
1599
1787
|
};
|
|
1600
1788
|
var trendArrows = { up: "\u2191", down: "\u2193", flat: "\u2192" };
|
|
1601
|
-
var StatCard = (0,
|
|
1602
|
-
return /* @__PURE__ */ (0,
|
|
1789
|
+
var StatCard = (0, import_react29.forwardRef)(function StatCard2({ label, value, delta, trend = "flat", icon, className, ...props }, ref) {
|
|
1790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1603
1791
|
"div",
|
|
1604
1792
|
{
|
|
1605
1793
|
ref,
|
|
1606
1794
|
className: cn("bg-panel border-border rounded-base block border p-[18px]", className),
|
|
1607
1795
|
...props,
|
|
1608
1796
|
children: [
|
|
1609
|
-
/* @__PURE__ */ (0,
|
|
1610
|
-
/* @__PURE__ */ (0,
|
|
1611
|
-
icon && /* @__PURE__ */ (0,
|
|
1797
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "mb-[10px] flex items-center justify-between", children: [
|
|
1798
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "text-text-dim font-mono text-[10px] tracking-wide uppercase", children: label }),
|
|
1799
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "text-text-dim text-[14px]", children: icon })
|
|
1612
1800
|
] }),
|
|
1613
|
-
/* @__PURE__ */ (0,
|
|
1614
|
-
delta !== void 0 && /* @__PURE__ */ (0,
|
|
1801
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "text-text font-mono text-[26px] leading-none font-medium tracking-tight", children: value }),
|
|
1802
|
+
delta !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: cn("mt-[6px] font-mono text-[11px]", trendClasses[trend]), children: [
|
|
1615
1803
|
trendArrows[trend],
|
|
1616
1804
|
" ",
|
|
1617
1805
|
delta
|
|
@@ -1623,11 +1811,11 @@ var StatCard = (0, import_react28.forwardRef)(function StatCard2({ label, value,
|
|
|
1623
1811
|
StatCard.displayName = "StatCard";
|
|
1624
1812
|
|
|
1625
1813
|
// src/components/Chip/Chip.tsx
|
|
1626
|
-
var
|
|
1627
|
-
var
|
|
1628
|
-
var Chip = (0,
|
|
1814
|
+
var import_react30 = require("react");
|
|
1815
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1816
|
+
var Chip = (0, import_react30.forwardRef)(function Chip2({ icon, onRemove, density = "comfortable", className, children, ...props }, ref) {
|
|
1629
1817
|
const isTouch = density === "touch";
|
|
1630
|
-
return /* @__PURE__ */ (0,
|
|
1818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1631
1819
|
"span",
|
|
1632
1820
|
{
|
|
1633
1821
|
ref,
|
|
@@ -1639,9 +1827,9 @@ var Chip = (0, import_react29.forwardRef)(function Chip2({ icon, onRemove, densi
|
|
|
1639
1827
|
),
|
|
1640
1828
|
...props,
|
|
1641
1829
|
children: [
|
|
1642
|
-
icon && /* @__PURE__ */ (0,
|
|
1830
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: cn("text-text-dim inline-flex", isTouch ? "text-[12px]" : "text-[10px]"), children: icon }),
|
|
1643
1831
|
children,
|
|
1644
|
-
onRemove && /* @__PURE__ */ (0,
|
|
1832
|
+
onRemove && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1645
1833
|
"button",
|
|
1646
1834
|
{
|
|
1647
1835
|
type: "button",
|
|
@@ -1661,10 +1849,10 @@ var Chip = (0, import_react29.forwardRef)(function Chip2({ icon, onRemove, densi
|
|
|
1661
1849
|
Chip.displayName = "Chip";
|
|
1662
1850
|
|
|
1663
1851
|
// src/components/Kbd/Kbd.tsx
|
|
1664
|
-
var
|
|
1665
|
-
var
|
|
1666
|
-
var Kbd = (0,
|
|
1667
|
-
return /* @__PURE__ */ (0,
|
|
1852
|
+
var import_react31 = require("react");
|
|
1853
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1854
|
+
var Kbd = (0, import_react31.forwardRef)(function Kbd2({ className, children, ...props }, ref) {
|
|
1855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1668
1856
|
"kbd",
|
|
1669
1857
|
{
|
|
1670
1858
|
ref,
|
|
@@ -1683,11 +1871,11 @@ Kbd.displayName = "Kbd";
|
|
|
1683
1871
|
|
|
1684
1872
|
// src/components/ScrollArea/ScrollArea.tsx
|
|
1685
1873
|
var RadixScrollArea = __toESM(require("@radix-ui/react-scroll-area"), 1);
|
|
1686
|
-
var
|
|
1687
|
-
var
|
|
1874
|
+
var import_react32 = require("react");
|
|
1875
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1688
1876
|
var scrollbarBase = "flex touch-none select-none p-[2px] transition-colors duration-(--duration-micro)";
|
|
1689
1877
|
var thumbBase = 'relative flex-1 rounded-full bg-text-muted/40 hover:bg-text-muted/60 before:absolute before:inset-1/2 before:size-full before:min-h-[44px] before:min-w-[44px] before:-translate-x-1/2 before:-translate-y-1/2 before:content-[""]';
|
|
1690
|
-
var ScrollArea = (0,
|
|
1878
|
+
var ScrollArea = (0, import_react32.forwardRef)(function ScrollArea2({
|
|
1691
1879
|
type = "hover",
|
|
1692
1880
|
orientation = "vertical",
|
|
1693
1881
|
scrollHideDelay = 600,
|
|
@@ -1699,7 +1887,7 @@ var ScrollArea = (0, import_react31.forwardRef)(function ScrollArea2({
|
|
|
1699
1887
|
}, ref) {
|
|
1700
1888
|
const showVertical = orientation === "vertical" || orientation === "both";
|
|
1701
1889
|
const showHorizontal = orientation === "horizontal" || orientation === "both";
|
|
1702
|
-
return /* @__PURE__ */ (0,
|
|
1890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1703
1891
|
RadixScrollArea.Root,
|
|
1704
1892
|
{
|
|
1705
1893
|
ref,
|
|
@@ -1708,7 +1896,7 @@ var ScrollArea = (0, import_react31.forwardRef)(function ScrollArea2({
|
|
|
1708
1896
|
className: cn("relative overflow-hidden", className),
|
|
1709
1897
|
...props,
|
|
1710
1898
|
children: [
|
|
1711
|
-
/* @__PURE__ */ (0,
|
|
1899
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1712
1900
|
RadixScrollArea.Viewport,
|
|
1713
1901
|
{
|
|
1714
1902
|
ref: viewportRef,
|
|
@@ -1716,15 +1904,15 @@ var ScrollArea = (0, import_react31.forwardRef)(function ScrollArea2({
|
|
|
1716
1904
|
children
|
|
1717
1905
|
}
|
|
1718
1906
|
),
|
|
1719
|
-
showVertical && /* @__PURE__ */ (0,
|
|
1907
|
+
showVertical && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1720
1908
|
RadixScrollArea.Scrollbar,
|
|
1721
1909
|
{
|
|
1722
1910
|
orientation: "vertical",
|
|
1723
1911
|
className: cn(scrollbarBase, "bg-panel-2/40 hover:bg-panel-2/80 h-full w-[10px]"),
|
|
1724
|
-
children: /* @__PURE__ */ (0,
|
|
1912
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
|
|
1725
1913
|
}
|
|
1726
1914
|
),
|
|
1727
|
-
showHorizontal && /* @__PURE__ */ (0,
|
|
1915
|
+
showHorizontal && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1728
1916
|
RadixScrollArea.Scrollbar,
|
|
1729
1917
|
{
|
|
1730
1918
|
orientation: "horizontal",
|
|
@@ -1732,10 +1920,10 @@ var ScrollArea = (0, import_react31.forwardRef)(function ScrollArea2({
|
|
|
1732
1920
|
scrollbarBase,
|
|
1733
1921
|
"bg-panel-2/40 hover:bg-panel-2/80 h-[10px] w-full flex-col"
|
|
1734
1922
|
),
|
|
1735
|
-
children: /* @__PURE__ */ (0,
|
|
1923
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
|
|
1736
1924
|
}
|
|
1737
1925
|
),
|
|
1738
|
-
orientation === "both" && /* @__PURE__ */ (0,
|
|
1926
|
+
orientation === "both" && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadixScrollArea.Corner, { className: "bg-panel-2/60" })
|
|
1739
1927
|
]
|
|
1740
1928
|
}
|
|
1741
1929
|
);
|
|
@@ -1743,10 +1931,10 @@ var ScrollArea = (0, import_react31.forwardRef)(function ScrollArea2({
|
|
|
1743
1931
|
ScrollArea.displayName = "ScrollArea";
|
|
1744
1932
|
|
|
1745
1933
|
// src/components/Skeleton/Skeleton.tsx
|
|
1746
|
-
var
|
|
1747
|
-
var
|
|
1748
|
-
var
|
|
1749
|
-
var skeletonStyles = (0,
|
|
1934
|
+
var import_class_variance_authority8 = require("class-variance-authority");
|
|
1935
|
+
var import_react33 = require("react");
|
|
1936
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1937
|
+
var skeletonStyles = (0, import_class_variance_authority8.cva)("block bg-panel-2 animate-[ship-skeleton_1.4s_infinite]", {
|
|
1750
1938
|
variants: {
|
|
1751
1939
|
shape: {
|
|
1752
1940
|
line: "rounded-xs",
|
|
@@ -1757,11 +1945,11 @@ var skeletonStyles = (0, import_class_variance_authority7.cva)("block bg-panel-2
|
|
|
1757
1945
|
defaultVariants: { shape: "line" }
|
|
1758
1946
|
});
|
|
1759
1947
|
var defaultHeight = { line: 14, block: 80, circle: 40 };
|
|
1760
|
-
var Skeleton = (0,
|
|
1948
|
+
var Skeleton = (0, import_react33.forwardRef)(function Skeleton2({ shape = "line", width = "100%", height, standalone = false, className, style, ...props }, ref) {
|
|
1761
1949
|
const h = height ?? defaultHeight[shape];
|
|
1762
1950
|
const w = shape === "circle" ? h : width;
|
|
1763
1951
|
const a11yProps = standalone ? { role: "status", "aria-busy": true, "aria-label": "Loading" } : { "aria-hidden": true };
|
|
1764
|
-
return /* @__PURE__ */ (0,
|
|
1952
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1765
1953
|
"div",
|
|
1766
1954
|
{
|
|
1767
1955
|
ref,
|
|
@@ -1773,11 +1961,11 @@ var Skeleton = (0, import_react32.forwardRef)(function Skeleton2({ shape = "line
|
|
|
1773
1961
|
);
|
|
1774
1962
|
});
|
|
1775
1963
|
Skeleton.displayName = "Skeleton";
|
|
1776
|
-
var SkeletonGroup = (0,
|
|
1964
|
+
var SkeletonGroup = (0, import_react33.forwardRef)(function SkeletonGroup2({ label = "Loading", loading = true, className, children, ...props }, ref) {
|
|
1777
1965
|
if (!loading) {
|
|
1778
|
-
return /* @__PURE__ */ (0,
|
|
1966
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className, ...props, children });
|
|
1779
1967
|
}
|
|
1780
|
-
return /* @__PURE__ */ (0,
|
|
1968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1781
1969
|
"div",
|
|
1782
1970
|
{
|
|
1783
1971
|
ref,
|
|
@@ -1793,10 +1981,10 @@ var SkeletonGroup = (0, import_react32.forwardRef)(function SkeletonGroup2({ lab
|
|
|
1793
1981
|
SkeletonGroup.displayName = "SkeletonGroup";
|
|
1794
1982
|
|
|
1795
1983
|
// src/components/Tag/Tag.tsx
|
|
1796
|
-
var
|
|
1797
|
-
var
|
|
1798
|
-
var Tag = (0,
|
|
1799
|
-
return /* @__PURE__ */ (0,
|
|
1984
|
+
var import_react34 = require("react");
|
|
1985
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1986
|
+
var Tag = (0, import_react34.forwardRef)(function Tag2({ onRemove, icon, size = 22, className, children, ...props }, ref) {
|
|
1987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
1800
1988
|
"span",
|
|
1801
1989
|
{
|
|
1802
1990
|
ref,
|
|
@@ -1808,9 +1996,9 @@ var Tag = (0, import_react33.forwardRef)(function Tag2({ onRemove, icon, size =
|
|
|
1808
1996
|
style: { height: size },
|
|
1809
1997
|
...props,
|
|
1810
1998
|
children: [
|
|
1811
|
-
icon && /* @__PURE__ */ (0,
|
|
1999
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-text-dim inline-flex", children: icon }),
|
|
1812
2000
|
children,
|
|
1813
|
-
onRemove && /* @__PURE__ */ (0,
|
|
2001
|
+
onRemove && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1814
2002
|
"button",
|
|
1815
2003
|
{
|
|
1816
2004
|
type: "button",
|
|
@@ -1828,14 +2016,14 @@ Tag.displayName = "Tag";
|
|
|
1828
2016
|
|
|
1829
2017
|
// src/components/ContextMenu/ContextMenu.tsx
|
|
1830
2018
|
var RadixContext = __toESM(require("@radix-ui/react-context-menu"), 1);
|
|
1831
|
-
var
|
|
1832
|
-
var
|
|
2019
|
+
var import_react35 = require("react");
|
|
2020
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1833
2021
|
var ContextMenuRoot = RadixContext.Root;
|
|
1834
2022
|
var ContextMenuTrigger = RadixContext.Trigger;
|
|
1835
2023
|
var ContextMenuPortal = RadixContext.Portal;
|
|
1836
|
-
var ContextMenuContent = (0,
|
|
2024
|
+
var ContextMenuContent = (0, import_react35.forwardRef)(
|
|
1837
2025
|
function ContextMenuContent2({ className, ...props }, ref) {
|
|
1838
|
-
return /* @__PURE__ */ (0,
|
|
2026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(RadixContext.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1839
2027
|
RadixContext.Content,
|
|
1840
2028
|
{
|
|
1841
2029
|
ref,
|
|
@@ -1855,26 +2043,26 @@ var itemBase = cn(
|
|
|
1855
2043
|
"data-[highlighted]:bg-panel-2",
|
|
1856
2044
|
"data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed"
|
|
1857
2045
|
);
|
|
1858
|
-
var ContextMenuItem = (0,
|
|
2046
|
+
var ContextMenuItem = (0, import_react35.forwardRef)(
|
|
1859
2047
|
function ContextMenuItem2({ icon, trailing, destructive, className, children, ...props }, ref) {
|
|
1860
|
-
return /* @__PURE__ */ (0,
|
|
2048
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
1861
2049
|
RadixContext.Item,
|
|
1862
2050
|
{
|
|
1863
2051
|
ref,
|
|
1864
2052
|
className: cn(itemBase, destructive ? "text-err" : "text-text", className),
|
|
1865
2053
|
...props,
|
|
1866
2054
|
children: [
|
|
1867
|
-
icon && /* @__PURE__ */ (0,
|
|
1868
|
-
/* @__PURE__ */ (0,
|
|
1869
|
-
trailing && /* @__PURE__ */ (0,
|
|
2055
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "w-[14px] text-[12px] opacity-70", children: icon }),
|
|
2056
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "flex-1", children }),
|
|
2057
|
+
trailing && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
|
|
1870
2058
|
]
|
|
1871
2059
|
}
|
|
1872
2060
|
);
|
|
1873
2061
|
}
|
|
1874
2062
|
);
|
|
1875
2063
|
ContextMenuItem.displayName = "ContextMenuItem";
|
|
1876
|
-
var ContextMenuSeparator = (0,
|
|
1877
|
-
return /* @__PURE__ */ (0,
|
|
2064
|
+
var ContextMenuSeparator = (0, import_react35.forwardRef)(function ContextMenuSeparator2({ className, ...props }, ref) {
|
|
2065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1878
2066
|
RadixContext.Separator,
|
|
1879
2067
|
{
|
|
1880
2068
|
ref,
|
|
@@ -1888,15 +2076,15 @@ var ContextMenu = RadixContext.Root;
|
|
|
1888
2076
|
|
|
1889
2077
|
// src/components/Dialog/Dialog.tsx
|
|
1890
2078
|
var RadixDialog = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1891
|
-
var
|
|
1892
|
-
var
|
|
2079
|
+
var import_react36 = require("react");
|
|
2080
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1893
2081
|
var DialogRoot = RadixDialog.Root;
|
|
1894
2082
|
var DialogTrigger = RadixDialog.Trigger;
|
|
1895
2083
|
var DialogClose = RadixDialog.Close;
|
|
1896
2084
|
var DialogPortal = RadixDialog.Portal;
|
|
1897
|
-
var DialogOverlay = (0,
|
|
2085
|
+
var DialogOverlay = (0, import_react36.forwardRef)(
|
|
1898
2086
|
function DialogOverlay2({ className, ...props }, ref) {
|
|
1899
|
-
return /* @__PURE__ */ (0,
|
|
2087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1900
2088
|
RadixDialog.Overlay,
|
|
1901
2089
|
{
|
|
1902
2090
|
ref,
|
|
@@ -1911,10 +2099,10 @@ var DialogOverlay = (0, import_react35.forwardRef)(
|
|
|
1911
2099
|
}
|
|
1912
2100
|
);
|
|
1913
2101
|
DialogOverlay.displayName = "DialogOverlay";
|
|
1914
|
-
var DialogContent = (0,
|
|
1915
|
-
return /* @__PURE__ */ (0,
|
|
1916
|
-
/* @__PURE__ */ (0,
|
|
1917
|
-
/* @__PURE__ */ (0,
|
|
2102
|
+
var DialogContent = (0, import_react36.forwardRef)(function DialogContent2({ className, width = 460, style, children, ...props }, ref) {
|
|
2103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DialogPortal, { children: [
|
|
2104
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogOverlay, {}),
|
|
2105
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1918
2106
|
RadixDialog.Content,
|
|
1919
2107
|
{
|
|
1920
2108
|
ref,
|
|
@@ -1934,32 +2122,32 @@ var DialogContent = (0, import_react35.forwardRef)(function DialogContent2({ cla
|
|
|
1934
2122
|
});
|
|
1935
2123
|
DialogContent.displayName = "DialogContent";
|
|
1936
2124
|
function Dialog({ title, description, footer, width, children, ...rootProps }) {
|
|
1937
|
-
return /* @__PURE__ */ (0,
|
|
1938
|
-
title && /* @__PURE__ */ (0,
|
|
2125
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DialogContent, { width, children: [
|
|
2126
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1939
2127
|
RadixDialog.Title,
|
|
1940
2128
|
{
|
|
1941
2129
|
className: cn("text-[16px] font-medium", description ? "mb-[6px]" : "mb-4"),
|
|
1942
2130
|
children: title
|
|
1943
2131
|
}
|
|
1944
2132
|
),
|
|
1945
|
-
description && /* @__PURE__ */ (0,
|
|
2133
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixDialog.Description, { className: "text-text-muted mb-[18px] text-[13px] leading-[1.55]", children: description }),
|
|
1946
2134
|
children,
|
|
1947
|
-
footer && /* @__PURE__ */ (0,
|
|
2135
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mt-5 flex justify-end gap-2", children: footer })
|
|
1948
2136
|
] }) });
|
|
1949
2137
|
}
|
|
1950
2138
|
|
|
1951
2139
|
// src/components/Dialog/Drawer.tsx
|
|
1952
2140
|
var RadixDialog2 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
1953
|
-
var
|
|
1954
|
-
var
|
|
2141
|
+
var import_react37 = require("react");
|
|
2142
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1955
2143
|
var sideClasses = {
|
|
1956
2144
|
left: "top-0 bottom-0 left-0 border-r border-border-strong data-[state=open]:animate-[ship-slide-in-left_220ms_var(--easing-out)]",
|
|
1957
2145
|
right: "top-0 bottom-0 right-0 border-l border-border-strong data-[state=open]:animate-[ship-slide-in-right_220ms_var(--easing-out)]",
|
|
1958
2146
|
bottom: "bottom-0 left-0 right-0 border-t border-border-strong rounded-t-m-sheet data-[state=open]:animate-[ship-slide-in-bottom_240ms_var(--easing-out)]"
|
|
1959
2147
|
};
|
|
1960
|
-
var DrawerHeader = ({ title, onClose }) => /* @__PURE__ */ (0,
|
|
1961
|
-
/* @__PURE__ */ (0,
|
|
1962
|
-
/* @__PURE__ */ (0,
|
|
2148
|
+
var DrawerHeader = ({ title, onClose }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "border-border flex items-center justify-between border-b p-[16px] px-5", children: [
|
|
2149
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixDialog2.Title, { className: "text-[14px] font-medium", children: title }),
|
|
2150
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1963
2151
|
RadixDialog2.Close,
|
|
1964
2152
|
{
|
|
1965
2153
|
onClick: onClose,
|
|
@@ -1969,15 +2157,15 @@ var DrawerHeader = ({ title, onClose }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
1969
2157
|
}
|
|
1970
2158
|
)
|
|
1971
2159
|
] });
|
|
1972
|
-
var SheetHeader = ({ title }) => /* @__PURE__ */ (0,
|
|
1973
|
-
var DragHandle = () => /* @__PURE__ */ (0,
|
|
1974
|
-
var Drawer = (0,
|
|
2160
|
+
var SheetHeader = ({ title }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "px-5 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixDialog2.Title, { className: "text-m-body-lg font-semibold tracking-tight", children: title }) });
|
|
2161
|
+
var DragHandle = () => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex justify-center pt-3 pb-2", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "bg-border-strong h-1 w-9 rounded-full" }) });
|
|
2162
|
+
var Drawer = (0, import_react37.forwardRef)(function Drawer2({ side = "right", title, width = 420, height = "85vh", handle, children, ...rootProps }, ref) {
|
|
1975
2163
|
const isBottom = side === "bottom";
|
|
1976
2164
|
const showHandle = isBottom && (handle ?? true);
|
|
1977
2165
|
const dimensionStyle = isBottom ? { height } : { width };
|
|
1978
|
-
return /* @__PURE__ */ (0,
|
|
1979
|
-
/* @__PURE__ */ (0,
|
|
1980
|
-
/* @__PURE__ */ (0,
|
|
2166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(DialogPortal, { children: [
|
|
2167
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogOverlay, {}),
|
|
2168
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
1981
2169
|
RadixDialog2.Content,
|
|
1982
2170
|
{
|
|
1983
2171
|
ref,
|
|
@@ -1988,9 +2176,9 @@ var Drawer = (0, import_react36.forwardRef)(function Drawer2({ side = "right", t
|
|
|
1988
2176
|
),
|
|
1989
2177
|
style: dimensionStyle,
|
|
1990
2178
|
children: [
|
|
1991
|
-
showHandle && /* @__PURE__ */ (0,
|
|
1992
|
-
title ? isBottom ? /* @__PURE__ */ (0,
|
|
1993
|
-
/* @__PURE__ */ (0,
|
|
2179
|
+
showHandle && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DragHandle, {}),
|
|
2180
|
+
title ? isBottom ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SheetHeader, { title }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DrawerHeader, { title }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixDialog2.Title, { className: "sr-only", children: isBottom ? "Sheet" : "Drawer" }),
|
|
2181
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: cn("flex-1 overflow-auto", isBottom ? "px-5 pb-6" : "p-5"), children })
|
|
1994
2182
|
]
|
|
1995
2183
|
}
|
|
1996
2184
|
)
|
|
@@ -2000,12 +2188,12 @@ Drawer.displayName = "Drawer";
|
|
|
2000
2188
|
|
|
2001
2189
|
// src/components/Dialog/Sheet.tsx
|
|
2002
2190
|
var RadixDialog3 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
2003
|
-
var
|
|
2004
|
-
var
|
|
2005
|
-
var Sheet = (0,
|
|
2006
|
-
return /* @__PURE__ */ (0,
|
|
2007
|
-
/* @__PURE__ */ (0,
|
|
2008
|
-
/* @__PURE__ */ (0,
|
|
2191
|
+
var import_react38 = require("react");
|
|
2192
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2193
|
+
var Sheet = (0, import_react38.forwardRef)(function Sheet2({ title, width = "min(640px, 90vw)", children, ...rootProps }, ref) {
|
|
2194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(DialogPortal, { children: [
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogOverlay, {}),
|
|
2196
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
2009
2197
|
RadixDialog3.Content,
|
|
2010
2198
|
{
|
|
2011
2199
|
ref,
|
|
@@ -2017,7 +2205,7 @@ var Sheet = (0, import_react37.forwardRef)(function Sheet2({ title, width = "min
|
|
|
2017
2205
|
),
|
|
2018
2206
|
style: { width },
|
|
2019
2207
|
children: [
|
|
2020
|
-
title ? /* @__PURE__ */ (0,
|
|
2208
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(RadixDialog3.Title, { className: "mb-1 text-[15px] font-medium", children: title }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(RadixDialog3.Title, { className: "sr-only", children: "Sheet" }),
|
|
2021
2209
|
children
|
|
2022
2210
|
]
|
|
2023
2211
|
}
|
|
@@ -2028,15 +2216,15 @@ Sheet.displayName = "Sheet";
|
|
|
2028
2216
|
|
|
2029
2217
|
// src/components/Dialog/AlertDialog.tsx
|
|
2030
2218
|
var RadixAlert = __toESM(require("@radix-ui/react-alert-dialog"), 1);
|
|
2031
|
-
var
|
|
2032
|
-
var
|
|
2219
|
+
var import_react39 = require("react");
|
|
2220
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2033
2221
|
var AlertDialogRoot = RadixAlert.Root;
|
|
2034
2222
|
var AlertDialogTrigger = RadixAlert.Trigger;
|
|
2035
2223
|
var AlertDialogAction = RadixAlert.Action;
|
|
2036
2224
|
var AlertDialogCancel = RadixAlert.Cancel;
|
|
2037
|
-
var AlertDialog = (0,
|
|
2038
|
-
return /* @__PURE__ */ (0,
|
|
2039
|
-
/* @__PURE__ */ (0,
|
|
2225
|
+
var AlertDialog = (0, import_react39.forwardRef)(function AlertDialog2({ title, description, footer, width = 460, children, ...rootProps }, ref) {
|
|
2226
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AlertDialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(RadixAlert.Portal, { children: [
|
|
2227
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2040
2228
|
RadixAlert.Overlay,
|
|
2041
2229
|
{
|
|
2042
2230
|
className: cn(
|
|
@@ -2045,7 +2233,7 @@ var AlertDialog = (0, import_react38.forwardRef)(function AlertDialog2({ title,
|
|
|
2045
2233
|
)
|
|
2046
2234
|
}
|
|
2047
2235
|
),
|
|
2048
|
-
/* @__PURE__ */ (0,
|
|
2236
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
2049
2237
|
RadixAlert.Content,
|
|
2050
2238
|
{
|
|
2051
2239
|
ref,
|
|
@@ -2056,16 +2244,16 @@ var AlertDialog = (0, import_react38.forwardRef)(function AlertDialog2({ title,
|
|
|
2056
2244
|
"data-[state=open]:animate-[ship-dialog-in_180ms_var(--easing-out)]"
|
|
2057
2245
|
),
|
|
2058
2246
|
children: [
|
|
2059
|
-
/* @__PURE__ */ (0,
|
|
2247
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2060
2248
|
RadixAlert.Title,
|
|
2061
2249
|
{
|
|
2062
2250
|
className: cn("text-[16px] font-medium", description ? "mb-[6px]" : "mb-4"),
|
|
2063
2251
|
children: title
|
|
2064
2252
|
}
|
|
2065
2253
|
),
|
|
2066
|
-
description && /* @__PURE__ */ (0,
|
|
2254
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixAlert.Description, { className: "text-text-muted mb-[18px] text-[13px] leading-[1.55]", children: description }),
|
|
2067
2255
|
children,
|
|
2068
|
-
footer && /* @__PURE__ */ (0,
|
|
2256
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "mt-5 flex justify-end gap-2", children: footer })
|
|
2069
2257
|
]
|
|
2070
2258
|
}
|
|
2071
2259
|
)
|
|
@@ -2075,17 +2263,17 @@ AlertDialog.displayName = "AlertDialog";
|
|
|
2075
2263
|
|
|
2076
2264
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
2077
2265
|
var RadixMenu = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
|
|
2078
|
-
var
|
|
2079
|
-
var
|
|
2266
|
+
var import_react40 = require("react");
|
|
2267
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2080
2268
|
var DropdownMenuRoot = RadixMenu.Root;
|
|
2081
2269
|
var DropdownMenuTrigger = RadixMenu.Trigger;
|
|
2082
2270
|
var DropdownMenuPortal = RadixMenu.Portal;
|
|
2083
2271
|
var DropdownMenuGroup = RadixMenu.Group;
|
|
2084
2272
|
var DropdownMenuLabel = RadixMenu.Label;
|
|
2085
2273
|
var DropdownMenuRadioGroup = RadixMenu.RadioGroup;
|
|
2086
|
-
var DropdownMenuContent = (0,
|
|
2274
|
+
var DropdownMenuContent = (0, import_react40.forwardRef)(
|
|
2087
2275
|
function DropdownMenuContent2({ className, sideOffset = 6, align = "start", ...props }, ref) {
|
|
2088
|
-
return /* @__PURE__ */ (0,
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2089
2277
|
RadixMenu.Content,
|
|
2090
2278
|
{
|
|
2091
2279
|
ref,
|
|
@@ -2107,32 +2295,32 @@ var itemBase2 = cn(
|
|
|
2107
2295
|
"data-[highlighted]:bg-panel-2",
|
|
2108
2296
|
"data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed"
|
|
2109
2297
|
);
|
|
2110
|
-
var MenuItem = (0,
|
|
2111
|
-
return /* @__PURE__ */ (0,
|
|
2298
|
+
var MenuItem = (0, import_react40.forwardRef)(function MenuItem2({ icon, trailing, destructive, className, children, ...props }, ref) {
|
|
2299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2112
2300
|
RadixMenu.Item,
|
|
2113
2301
|
{
|
|
2114
2302
|
ref,
|
|
2115
2303
|
className: cn(itemBase2, destructive ? "text-err" : "text-text", className),
|
|
2116
2304
|
...props,
|
|
2117
2305
|
children: [
|
|
2118
|
-
icon && /* @__PURE__ */ (0,
|
|
2119
|
-
/* @__PURE__ */ (0,
|
|
2120
|
-
trailing && /* @__PURE__ */ (0,
|
|
2306
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "w-[14px] text-[12px] opacity-70", children: icon }),
|
|
2307
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "flex-1", children }),
|
|
2308
|
+
trailing && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
|
|
2121
2309
|
]
|
|
2122
2310
|
}
|
|
2123
2311
|
);
|
|
2124
2312
|
});
|
|
2125
2313
|
MenuItem.displayName = "MenuItem";
|
|
2126
|
-
var MenuCheckboxItem = (0,
|
|
2314
|
+
var MenuCheckboxItem = (0, import_react40.forwardRef)(
|
|
2127
2315
|
function MenuCheckboxItem2({ className, children, ...props }, ref) {
|
|
2128
|
-
return /* @__PURE__ */ (0,
|
|
2316
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2129
2317
|
RadixMenu.CheckboxItem,
|
|
2130
2318
|
{
|
|
2131
2319
|
ref,
|
|
2132
2320
|
className: cn(itemBase2, "text-text relative pl-[26px]", className),
|
|
2133
2321
|
...props,
|
|
2134
2322
|
children: [
|
|
2135
|
-
/* @__PURE__ */ (0,
|
|
2323
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixMenu.ItemIndicator, { className: "text-accent absolute top-1/2 left-2 -translate-y-1/2 text-[10px]", children: "\u2713" }),
|
|
2136
2324
|
children
|
|
2137
2325
|
]
|
|
2138
2326
|
}
|
|
@@ -2140,9 +2328,9 @@ var MenuCheckboxItem = (0, import_react39.forwardRef)(
|
|
|
2140
2328
|
}
|
|
2141
2329
|
);
|
|
2142
2330
|
MenuCheckboxItem.displayName = "MenuCheckboxItem";
|
|
2143
|
-
var MenuSeparator = (0,
|
|
2331
|
+
var MenuSeparator = (0, import_react40.forwardRef)(
|
|
2144
2332
|
function MenuSeparator2({ className, ...props }, ref) {
|
|
2145
|
-
return /* @__PURE__ */ (0,
|
|
2333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2146
2334
|
RadixMenu.Separator,
|
|
2147
2335
|
{
|
|
2148
2336
|
ref,
|
|
@@ -2157,14 +2345,14 @@ var DropdownMenu = RadixMenu.Root;
|
|
|
2157
2345
|
|
|
2158
2346
|
// src/components/HoverCard/HoverCard.tsx
|
|
2159
2347
|
var RadixHoverCard = __toESM(require("@radix-ui/react-hover-card"), 1);
|
|
2160
|
-
var
|
|
2161
|
-
var
|
|
2348
|
+
var import_react41 = require("react");
|
|
2349
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2162
2350
|
var HoverCardRoot = RadixHoverCard.Root;
|
|
2163
2351
|
var HoverCardTrigger = RadixHoverCard.Trigger;
|
|
2164
2352
|
var HoverCardPortal = RadixHoverCard.Portal;
|
|
2165
|
-
var HoverCardContent = (0,
|
|
2353
|
+
var HoverCardContent = (0, import_react41.forwardRef)(
|
|
2166
2354
|
function HoverCardContent2({ className, sideOffset = 4, ...props }, ref) {
|
|
2167
|
-
return /* @__PURE__ */ (0,
|
|
2355
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixHoverCard.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
2168
2356
|
RadixHoverCard.Content,
|
|
2169
2357
|
{
|
|
2170
2358
|
ref,
|
|
@@ -2181,25 +2369,25 @@ var HoverCardContent = (0, import_react40.forwardRef)(
|
|
|
2181
2369
|
);
|
|
2182
2370
|
HoverCardContent.displayName = "HoverCardContent";
|
|
2183
2371
|
function HoverCard({ trigger, content, ...rootProps }) {
|
|
2184
|
-
return /* @__PURE__ */ (0,
|
|
2185
|
-
/* @__PURE__ */ (0,
|
|
2186
|
-
/* @__PURE__ */ (0,
|
|
2372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(RadixHoverCard.Root, { openDelay: 200, closeDelay: 120, ...rootProps, children: [
|
|
2373
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixHoverCard.Trigger, { asChild: true, children: trigger }),
|
|
2374
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(HoverCardContent, { children: content })
|
|
2187
2375
|
] });
|
|
2188
2376
|
}
|
|
2189
2377
|
|
|
2190
2378
|
// src/components/Popover/Popover.tsx
|
|
2191
2379
|
var RadixPopover = __toESM(require("@radix-ui/react-popover"), 1);
|
|
2192
|
-
var
|
|
2193
|
-
var
|
|
2380
|
+
var import_react42 = require("react");
|
|
2381
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2194
2382
|
var PopoverRoot = RadixPopover.Root;
|
|
2195
2383
|
var PopoverTrigger = RadixPopover.Trigger;
|
|
2196
2384
|
var PopoverAnchor = RadixPopover.Anchor;
|
|
2197
2385
|
var PopoverPortal = RadixPopover.Portal;
|
|
2198
2386
|
var PopoverClose = RadixPopover.Close;
|
|
2199
2387
|
var PopoverArrow = RadixPopover.Arrow;
|
|
2200
|
-
var PopoverContent = (0,
|
|
2388
|
+
var PopoverContent = (0, import_react42.forwardRef)(
|
|
2201
2389
|
function PopoverContent2({ className, align = "start", sideOffset = 6, ...props }, ref) {
|
|
2202
|
-
return /* @__PURE__ */ (0,
|
|
2390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2203
2391
|
RadixPopover.Content,
|
|
2204
2392
|
{
|
|
2205
2393
|
ref,
|
|
@@ -2220,9 +2408,9 @@ var Popover = RadixPopover.Root;
|
|
|
2220
2408
|
|
|
2221
2409
|
// src/components/Toast/Toast.tsx
|
|
2222
2410
|
var RadixToast = __toESM(require("@radix-ui/react-toast"), 1);
|
|
2223
|
-
var
|
|
2224
|
-
var
|
|
2225
|
-
var ToastContext = (0,
|
|
2411
|
+
var import_react43 = require("react");
|
|
2412
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2413
|
+
var ToastContext = (0, import_react43.createContext)(null);
|
|
2226
2414
|
var variantIcon = {
|
|
2227
2415
|
default: "\u25CF",
|
|
2228
2416
|
info: "\u2139",
|
|
@@ -2247,8 +2435,8 @@ var variantBorderLeft = {
|
|
|
2247
2435
|
var toastIdCounter = 0;
|
|
2248
2436
|
var nextToastId = () => `toast-${++toastIdCounter}`;
|
|
2249
2437
|
function ToastProvider({ children }) {
|
|
2250
|
-
const [toasts, setToasts] = (0,
|
|
2251
|
-
const toast = (0,
|
|
2438
|
+
const [toasts, setToasts] = (0, import_react43.useState)([]);
|
|
2439
|
+
const toast = (0, import_react43.useCallback)((t) => {
|
|
2252
2440
|
const explicitId = t.id;
|
|
2253
2441
|
const id = explicitId ?? nextToastId();
|
|
2254
2442
|
const entry = { ...t, id };
|
|
@@ -2260,24 +2448,24 @@ function ToastProvider({ children }) {
|
|
|
2260
2448
|
});
|
|
2261
2449
|
return id;
|
|
2262
2450
|
}, []);
|
|
2263
|
-
const dismiss = (0,
|
|
2451
|
+
const dismiss = (0, import_react43.useCallback)((id) => {
|
|
2264
2452
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
2265
2453
|
}, []);
|
|
2266
|
-
const value = (0,
|
|
2267
|
-
return /* @__PURE__ */ (0,
|
|
2454
|
+
const value = (0, import_react43.useMemo)(() => ({ toast, dismiss }), [toast, dismiss]);
|
|
2455
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ToastContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(RadixToast.Provider, { swipeDirection: "right", children: [
|
|
2268
2456
|
children,
|
|
2269
|
-
toasts.map((t) => /* @__PURE__ */ (0,
|
|
2270
|
-
/* @__PURE__ */ (0,
|
|
2457
|
+
toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ToastCard, { toast: t, onDismiss: () => dismiss(t.id) }, t.id)),
|
|
2458
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadixToast.Viewport, { className: "z-toast fixed right-5 bottom-5 flex w-[380px] max-w-[calc(100vw-40px)] flex-col gap-2 outline-none" })
|
|
2271
2459
|
] }) });
|
|
2272
2460
|
}
|
|
2273
2461
|
function useToast() {
|
|
2274
|
-
const ctx = (0,
|
|
2462
|
+
const ctx = (0, import_react43.useContext)(ToastContext);
|
|
2275
2463
|
if (!ctx) throw new Error("useToast must be inside <ToastProvider>");
|
|
2276
2464
|
return ctx;
|
|
2277
2465
|
}
|
|
2278
|
-
var ToastCard = (0,
|
|
2466
|
+
var ToastCard = (0, import_react43.forwardRef)(function ToastCard2({ toast, onDismiss }, ref) {
|
|
2279
2467
|
const variant = toast.variant ?? "default";
|
|
2280
|
-
return /* @__PURE__ */ (0,
|
|
2468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
2281
2469
|
RadixToast.Root,
|
|
2282
2470
|
{
|
|
2283
2471
|
ref,
|
|
@@ -2292,13 +2480,13 @@ var ToastCard = (0, import_react42.forwardRef)(function ToastCard2({ toast, onDi
|
|
|
2292
2480
|
variantBorderLeft[variant]
|
|
2293
2481
|
),
|
|
2294
2482
|
children: [
|
|
2295
|
-
/* @__PURE__ */ (0,
|
|
2296
|
-
/* @__PURE__ */ (0,
|
|
2297
|
-
/* @__PURE__ */ (0,
|
|
2298
|
-
toast.description && /* @__PURE__ */ (0,
|
|
2299
|
-
toast.action && /* @__PURE__ */ (0,
|
|
2483
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: cn("mt-px text-[14px] leading-none", variantTextColor[variant]), children: variantIcon[variant] }),
|
|
2484
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
2485
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadixToast.Title, { className: "text-text text-[13px] font-medium", children: toast.title }),
|
|
2486
|
+
toast.description && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadixToast.Description, { className: "text-text-muted mt-[2px] text-[12px] leading-[1.5]", children: toast.description }),
|
|
2487
|
+
toast.action && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "mt-2", children: toast.action })
|
|
2300
2488
|
] }),
|
|
2301
|
-
/* @__PURE__ */ (0,
|
|
2489
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2302
2490
|
RadixToast.Close,
|
|
2303
2491
|
{
|
|
2304
2492
|
"aria-label": "Dismiss",
|
|
@@ -2314,16 +2502,16 @@ ToastCard.displayName = "ToastCard";
|
|
|
2314
2502
|
|
|
2315
2503
|
// src/components/Tooltip/Tooltip.tsx
|
|
2316
2504
|
var RadixTooltip = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
2317
|
-
var
|
|
2318
|
-
var
|
|
2505
|
+
var import_react44 = require("react");
|
|
2506
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2319
2507
|
var TooltipProvider = RadixTooltip.Provider;
|
|
2320
2508
|
var Tooltip = RadixTooltip.Root;
|
|
2321
2509
|
var TooltipTrigger = RadixTooltip.Trigger;
|
|
2322
2510
|
var TooltipPortal = RadixTooltip.Portal;
|
|
2323
2511
|
var TooltipArrow = RadixTooltip.Arrow;
|
|
2324
|
-
var TooltipContent = (0,
|
|
2512
|
+
var TooltipContent = (0, import_react44.forwardRef)(
|
|
2325
2513
|
function TooltipContent2({ className, sideOffset = 6, ...props }, ref) {
|
|
2326
|
-
return /* @__PURE__ */ (0,
|
|
2514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2327
2515
|
RadixTooltip.Content,
|
|
2328
2516
|
{
|
|
2329
2517
|
ref,
|
|
@@ -2346,17 +2534,17 @@ function SimpleTooltip({
|
|
|
2346
2534
|
side = "top",
|
|
2347
2535
|
delayDuration = 400
|
|
2348
2536
|
}) {
|
|
2349
|
-
return /* @__PURE__ */ (0,
|
|
2350
|
-
/* @__PURE__ */ (0,
|
|
2351
|
-
/* @__PURE__ */ (0,
|
|
2537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipProvider, { delayDuration, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Tooltip, { children: [
|
|
2538
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipTrigger, { asChild: true, children }),
|
|
2539
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipContent, { side, children: content })
|
|
2352
2540
|
] }) });
|
|
2353
2541
|
}
|
|
2354
2542
|
|
|
2355
2543
|
// src/patterns/Alert/Alert.tsx
|
|
2356
|
-
var
|
|
2357
|
-
var
|
|
2358
|
-
var
|
|
2359
|
-
var alertStyles = (0,
|
|
2544
|
+
var import_class_variance_authority9 = require("class-variance-authority");
|
|
2545
|
+
var import_react45 = require("react");
|
|
2546
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2547
|
+
var alertStyles = (0, import_class_variance_authority9.cva)("flex items-start gap-3 rounded-base border bg-panel p-3 text-[13px]", {
|
|
2360
2548
|
variants: {
|
|
2361
2549
|
tone: {
|
|
2362
2550
|
accent: "border-border border-l-2 border-l-accent",
|
|
@@ -2379,7 +2567,7 @@ var defaultGlyph = {
|
|
|
2379
2567
|
warn: "!",
|
|
2380
2568
|
err: "\xD7"
|
|
2381
2569
|
};
|
|
2382
|
-
var Alert = (0,
|
|
2570
|
+
var Alert = (0, import_react45.forwardRef)(function Alert2({
|
|
2383
2571
|
tone = "accent",
|
|
2384
2572
|
title,
|
|
2385
2573
|
description,
|
|
@@ -2391,7 +2579,7 @@ var Alert = (0, import_react44.forwardRef)(function Alert2({
|
|
|
2391
2579
|
...props
|
|
2392
2580
|
}, ref) {
|
|
2393
2581
|
const t = tone ?? "accent";
|
|
2394
|
-
return /* @__PURE__ */ (0,
|
|
2582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
2395
2583
|
"div",
|
|
2396
2584
|
{
|
|
2397
2585
|
ref,
|
|
@@ -2400,13 +2588,13 @@ var Alert = (0, import_react44.forwardRef)(function Alert2({
|
|
|
2400
2588
|
className: cn(alertStyles({ tone }), className),
|
|
2401
2589
|
...props,
|
|
2402
2590
|
children: [
|
|
2403
|
-
/* @__PURE__ */ (0,
|
|
2404
|
-
/* @__PURE__ */ (0,
|
|
2405
|
-
title && /* @__PURE__ */ (0,
|
|
2406
|
-
description && /* @__PURE__ */ (0,
|
|
2591
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: cn("mt-[1px] text-[14px] leading-none", iconColorClass[t]), children: icon ?? defaultGlyph[t] }),
|
|
2592
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
2593
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "font-medium", children: title }),
|
|
2594
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "text-text-muted mt-[2px] text-[12px]", children: description }),
|
|
2407
2595
|
children
|
|
2408
2596
|
] }),
|
|
2409
|
-
action && /* @__PURE__ */ (0,
|
|
2597
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "ml-1 shrink-0", children: action })
|
|
2410
2598
|
]
|
|
2411
2599
|
}
|
|
2412
2600
|
);
|
|
@@ -2414,10 +2602,10 @@ var Alert = (0, import_react44.forwardRef)(function Alert2({
|
|
|
2414
2602
|
Alert.displayName = "Alert";
|
|
2415
2603
|
|
|
2416
2604
|
// src/patterns/Banner/Banner.tsx
|
|
2417
|
-
var
|
|
2418
|
-
var
|
|
2419
|
-
var
|
|
2420
|
-
var bannerStyles = (0,
|
|
2605
|
+
var import_class_variance_authority10 = require("class-variance-authority");
|
|
2606
|
+
var import_react46 = require("react");
|
|
2607
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2608
|
+
var bannerStyles = (0, import_class_variance_authority10.cva)(
|
|
2421
2609
|
"flex items-center gap-3 border-b border-border px-[14px] py-2 text-[12px]",
|
|
2422
2610
|
{
|
|
2423
2611
|
variants: {
|
|
@@ -2441,9 +2629,9 @@ var defaultGlyph2 = {
|
|
|
2441
2629
|
warn: "!",
|
|
2442
2630
|
err: "\xD7"
|
|
2443
2631
|
};
|
|
2444
|
-
var Banner = (0,
|
|
2632
|
+
var Banner = (0, import_react46.forwardRef)(function Banner2({ tone = "accent", sticky, icon, action, live = "polite", className, children, ...props }, ref) {
|
|
2445
2633
|
const t = tone ?? "accent";
|
|
2446
|
-
return /* @__PURE__ */ (0,
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
2447
2635
|
"div",
|
|
2448
2636
|
{
|
|
2449
2637
|
ref,
|
|
@@ -2452,9 +2640,9 @@ var Banner = (0, import_react45.forwardRef)(function Banner2({ tone = "accent",
|
|
|
2452
2640
|
className: cn(bannerStyles({ tone, sticky }), className),
|
|
2453
2641
|
...props,
|
|
2454
2642
|
children: [
|
|
2455
|
-
/* @__PURE__ */ (0,
|
|
2456
|
-
/* @__PURE__ */ (0,
|
|
2457
|
-
action && /* @__PURE__ */ (0,
|
|
2643
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { "aria-hidden": true, className: "leading-none", children: icon ?? defaultGlyph2[t] }),
|
|
2644
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "min-w-0 flex-1", children }),
|
|
2645
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "ml-auto", children: action })
|
|
2458
2646
|
]
|
|
2459
2647
|
}
|
|
2460
2648
|
);
|
|
@@ -2462,28 +2650,28 @@ var Banner = (0, import_react45.forwardRef)(function Banner2({ tone = "accent",
|
|
|
2462
2650
|
Banner.displayName = "Banner";
|
|
2463
2651
|
|
|
2464
2652
|
// src/patterns/Breadcrumbs/Breadcrumbs.tsx
|
|
2465
|
-
var
|
|
2466
|
-
var
|
|
2467
|
-
var Breadcrumbs = (0,
|
|
2468
|
-
const crumbs =
|
|
2653
|
+
var import_react47 = require("react");
|
|
2654
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2655
|
+
var Breadcrumbs = (0, import_react47.forwardRef)(function Breadcrumbs2({ separator = "/", className, children, ...props }, ref) {
|
|
2656
|
+
const crumbs = import_react47.Children.toArray(children).filter(import_react47.isValidElement);
|
|
2469
2657
|
const last = crumbs.length - 1;
|
|
2470
|
-
return /* @__PURE__ */ (0,
|
|
2658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("nav", { ref, "aria-label": "Breadcrumb", className: cn("text-[13px]", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("ol", { className: "text-text-muted flex flex-wrap items-center gap-[6px]", children: crumbs.map((crumb, i) => {
|
|
2471
2659
|
const isCurrent = i === last;
|
|
2472
|
-
return /* @__PURE__ */ (0,
|
|
2473
|
-
isCurrent ? /* @__PURE__ */ (0,
|
|
2474
|
-
!isCurrent && /* @__PURE__ */ (0,
|
|
2660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("li", { className: "inline-flex items-center gap-[6px]", children: [
|
|
2661
|
+
isCurrent ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Crumb, { ...crumb.props, current: true }) : crumb,
|
|
2662
|
+
!isCurrent && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: separator })
|
|
2475
2663
|
] }, i);
|
|
2476
2664
|
}) }) });
|
|
2477
2665
|
});
|
|
2478
2666
|
Breadcrumbs.displayName = "Breadcrumbs";
|
|
2479
|
-
var Crumb = (0,
|
|
2667
|
+
var Crumb = (0, import_react47.forwardRef)(function Crumb2({ current, className, href, children, ...props }, ref) {
|
|
2480
2668
|
if (current) {
|
|
2481
|
-
return /* @__PURE__ */ (0,
|
|
2669
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-current": "page", className: cn("text-text", className), children });
|
|
2482
2670
|
}
|
|
2483
2671
|
if (href === void 0) {
|
|
2484
|
-
return /* @__PURE__ */ (0,
|
|
2672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cn("text-text-dim", className), children });
|
|
2485
2673
|
}
|
|
2486
|
-
return /* @__PURE__ */ (0,
|
|
2674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2487
2675
|
"a",
|
|
2488
2676
|
{
|
|
2489
2677
|
ref,
|
|
@@ -2497,8 +2685,8 @@ var Crumb = (0, import_react46.forwardRef)(function Crumb2({ current, className,
|
|
|
2497
2685
|
Crumb.displayName = "Crumb";
|
|
2498
2686
|
|
|
2499
2687
|
// src/patterns/Combobox/Combobox.tsx
|
|
2500
|
-
var
|
|
2501
|
-
var
|
|
2688
|
+
var import_react48 = require("react");
|
|
2689
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2502
2690
|
function normalize(option) {
|
|
2503
2691
|
if (typeof option === "string") {
|
|
2504
2692
|
return { value: option, label: option, searchText: option.toLowerCase() };
|
|
@@ -2514,7 +2702,7 @@ function normalize(option) {
|
|
|
2514
2702
|
};
|
|
2515
2703
|
}
|
|
2516
2704
|
var defaultFilter = (option, query) => option.searchText.includes(query.toLowerCase());
|
|
2517
|
-
var Combobox = (0,
|
|
2705
|
+
var Combobox = (0, import_react48.forwardRef)(function Combobox2({
|
|
2518
2706
|
options,
|
|
2519
2707
|
value: valueProp,
|
|
2520
2708
|
defaultValue,
|
|
@@ -2531,16 +2719,16 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2531
2719
|
id,
|
|
2532
2720
|
"aria-label": ariaLabel
|
|
2533
2721
|
}, ref) {
|
|
2534
|
-
const reactId = (0,
|
|
2722
|
+
const reactId = (0, import_react48.useId)();
|
|
2535
2723
|
const listboxId = `${id ?? reactId}-listbox`;
|
|
2536
2724
|
const inputId = id ?? `${reactId}-input`;
|
|
2537
|
-
const normalized = (0,
|
|
2725
|
+
const normalized = (0, import_react48.useMemo)(() => options.map(normalize), [options]);
|
|
2538
2726
|
const [value, setValue] = useControllableState({
|
|
2539
2727
|
value: valueProp,
|
|
2540
2728
|
defaultValue,
|
|
2541
2729
|
onChange: onValueChange
|
|
2542
2730
|
});
|
|
2543
|
-
const initialQuery = (0,
|
|
2731
|
+
const initialQuery = (0, import_react48.useMemo)(() => {
|
|
2544
2732
|
if (defaultQuery !== void 0) return defaultQuery;
|
|
2545
2733
|
if (defaultValue !== void 0) {
|
|
2546
2734
|
const opt = normalized.find((o) => o.value === defaultValue);
|
|
@@ -2553,10 +2741,10 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2553
2741
|
defaultValue: initialQuery,
|
|
2554
2742
|
onChange: onQueryChange
|
|
2555
2743
|
});
|
|
2556
|
-
const [open, setOpen] = (0,
|
|
2557
|
-
const wrapperRef = (0,
|
|
2744
|
+
const [open, setOpen] = (0, import_react48.useState)(false);
|
|
2745
|
+
const wrapperRef = (0, import_react48.useRef)(null);
|
|
2558
2746
|
useOutsideClick(wrapperRef, () => setOpen(false));
|
|
2559
|
-
const filtered = (0,
|
|
2747
|
+
const filtered = (0, import_react48.useMemo)(
|
|
2560
2748
|
() => query ? normalized.filter((o) => filter(o, query)) : normalized,
|
|
2561
2749
|
[normalized, query, filter]
|
|
2562
2750
|
);
|
|
@@ -2568,7 +2756,7 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2568
2756
|
if (item && !item.disabled) commit(item);
|
|
2569
2757
|
}
|
|
2570
2758
|
});
|
|
2571
|
-
(0,
|
|
2759
|
+
(0, import_react48.useEffect)(() => {
|
|
2572
2760
|
setCursor(0);
|
|
2573
2761
|
}, [query, setCursor]);
|
|
2574
2762
|
function commit(option) {
|
|
@@ -2591,8 +2779,8 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2591
2779
|
setOpen(false);
|
|
2592
2780
|
}
|
|
2593
2781
|
};
|
|
2594
|
-
return /* @__PURE__ */ (0,
|
|
2595
|
-
/* @__PURE__ */ (0,
|
|
2782
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { ref: wrapperRef, className: "relative", style: { width }, children: [
|
|
2783
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2596
2784
|
"input",
|
|
2597
2785
|
{
|
|
2598
2786
|
ref,
|
|
@@ -2626,7 +2814,7 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2626
2814
|
)
|
|
2627
2815
|
}
|
|
2628
2816
|
),
|
|
2629
|
-
open && /* @__PURE__ */ (0,
|
|
2817
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2630
2818
|
"ul",
|
|
2631
2819
|
{
|
|
2632
2820
|
id: listboxId,
|
|
@@ -2636,9 +2824,9 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2636
2824
|
"z-dropdown absolute top-full right-0 left-0 mt-1 max-h-[220px] overflow-auto",
|
|
2637
2825
|
"border-border bg-panel rounded-md border p-1 shadow-lg"
|
|
2638
2826
|
),
|
|
2639
|
-
children: filtered.length === 0 ? /* @__PURE__ */ (0,
|
|
2827
|
+
children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("li", { className: "text-text-dim px-2 py-3 text-center text-[12px]", role: "presentation", children: emptyState ?? "No matches" }) : filtered.map((option, i) => {
|
|
2640
2828
|
const isActive = i === cursor;
|
|
2641
|
-
return /* @__PURE__ */ (0,
|
|
2829
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
2642
2830
|
"li",
|
|
2643
2831
|
{
|
|
2644
2832
|
id: `${listboxId}-option-${i}`,
|
|
@@ -2656,8 +2844,8 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2656
2844
|
option.disabled && "pointer-events-none opacity-40"
|
|
2657
2845
|
),
|
|
2658
2846
|
children: [
|
|
2659
|
-
/* @__PURE__ */ (0,
|
|
2660
|
-
option.description && /* @__PURE__ */ (0,
|
|
2847
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { children: option.label }),
|
|
2848
|
+
option.description && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "text-text-dim text-[11px]", children: option.description })
|
|
2661
2849
|
]
|
|
2662
2850
|
},
|
|
2663
2851
|
option.value
|
|
@@ -2665,19 +2853,19 @@ var Combobox = (0, import_react47.forwardRef)(function Combobox2({
|
|
|
2665
2853
|
})
|
|
2666
2854
|
}
|
|
2667
2855
|
),
|
|
2668
|
-
name && /* @__PURE__ */ (0,
|
|
2856
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("input", { type: "hidden", name, value: value ?? "", readOnly: true })
|
|
2669
2857
|
] });
|
|
2670
2858
|
});
|
|
2671
2859
|
Combobox.displayName = "Combobox";
|
|
2672
2860
|
|
|
2673
2861
|
// src/patterns/CommandPalette/CommandPalette.tsx
|
|
2674
2862
|
var RadixDialog4 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
2675
|
-
var
|
|
2676
|
-
var
|
|
2863
|
+
var import_react49 = require("react");
|
|
2864
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2677
2865
|
function flatItems(groups) {
|
|
2678
2866
|
return groups.flatMap((g) => g.items);
|
|
2679
2867
|
}
|
|
2680
|
-
var CommandPalette = (0,
|
|
2868
|
+
var CommandPalette = (0, import_react49.forwardRef)(
|
|
2681
2869
|
function CommandPalette2({
|
|
2682
2870
|
open,
|
|
2683
2871
|
onOpenChange,
|
|
@@ -2690,7 +2878,7 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2690
2878
|
emptyState,
|
|
2691
2879
|
width = 540
|
|
2692
2880
|
}, ref) {
|
|
2693
|
-
const flat = (0,
|
|
2881
|
+
const flat = (0, import_react49.useMemo)(() => flatItems(groups), [groups]);
|
|
2694
2882
|
const { cursor, setCursor, onKeyDown } = useKeyboardList({
|
|
2695
2883
|
count: flat.length,
|
|
2696
2884
|
defaultCursor: 0,
|
|
@@ -2699,15 +2887,15 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2699
2887
|
if (item) onSelect(item.id);
|
|
2700
2888
|
}
|
|
2701
2889
|
});
|
|
2702
|
-
const reactId = (0,
|
|
2890
|
+
const reactId = (0, import_react49.useId)();
|
|
2703
2891
|
const listboxId = `${reactId}-listbox`;
|
|
2704
2892
|
const optionId = (i) => `${listboxId}-option-${i}`;
|
|
2705
2893
|
const hasMatches = flat.length > 0;
|
|
2706
|
-
(0,
|
|
2894
|
+
(0, import_react49.useEffect)(() => {
|
|
2707
2895
|
setCursor(0);
|
|
2708
2896
|
}, [query, groups, setCursor]);
|
|
2709
|
-
return /* @__PURE__ */ (0,
|
|
2710
|
-
/* @__PURE__ */ (0,
|
|
2897
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(RadixDialog4.Root, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(RadixDialog4.Portal, { children: [
|
|
2898
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2711
2899
|
RadixDialog4.Overlay,
|
|
2712
2900
|
{
|
|
2713
2901
|
className: cn(
|
|
@@ -2716,7 +2904,7 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2716
2904
|
)
|
|
2717
2905
|
}
|
|
2718
2906
|
),
|
|
2719
|
-
/* @__PURE__ */ (0,
|
|
2907
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
2720
2908
|
RadixDialog4.Content,
|
|
2721
2909
|
{
|
|
2722
2910
|
ref,
|
|
@@ -2730,10 +2918,10 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2730
2918
|
),
|
|
2731
2919
|
onKeyDown,
|
|
2732
2920
|
children: [
|
|
2733
|
-
/* @__PURE__ */ (0,
|
|
2734
|
-
/* @__PURE__ */ (0,
|
|
2735
|
-
/* @__PURE__ */ (0,
|
|
2736
|
-
/* @__PURE__ */ (0,
|
|
2921
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(RadixDialog4.Title, { className: "sr-only", children: "Command palette" }),
|
|
2922
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "border-border flex items-center gap-[10px] border-b px-4 py-[14px]", children: [
|
|
2923
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: "\u2315" }),
|
|
2924
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2737
2925
|
"input",
|
|
2738
2926
|
{
|
|
2739
2927
|
autoFocus: true,
|
|
@@ -2750,9 +2938,9 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2750
2938
|
className: "text-text placeholder:text-text-dim flex-1 border-0 bg-transparent text-[14px] outline-none"
|
|
2751
2939
|
}
|
|
2752
2940
|
),
|
|
2753
|
-
/* @__PURE__ */ (0,
|
|
2941
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "border-border text-text-dim rounded-xs border px-[6px] py-[2px] font-mono text-[10px]", children: "ESC" })
|
|
2754
2942
|
] }),
|
|
2755
|
-
/* @__PURE__ */ (0,
|
|
2943
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { id: listboxId, className: "min-h-[220px] p-2", role: "listbox", "aria-label": "Results", children: flat.length === 0 ? emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "text-text-dim px-3 py-5 text-center text-[12px]", children: "No matches" }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2756
2944
|
CommandGroups,
|
|
2757
2945
|
{
|
|
2758
2946
|
groups,
|
|
@@ -2762,7 +2950,7 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2762
2950
|
optionId
|
|
2763
2951
|
}
|
|
2764
2952
|
) }),
|
|
2765
|
-
footer && /* @__PURE__ */ (0,
|
|
2953
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "border-border text-text-dim flex gap-4 border-t px-[14px] py-[10px] font-mono text-[10px]", children: footer })
|
|
2766
2954
|
]
|
|
2767
2955
|
}
|
|
2768
2956
|
)
|
|
@@ -2772,10 +2960,10 @@ var CommandPalette = (0, import_react48.forwardRef)(
|
|
|
2772
2960
|
CommandPalette.displayName = "CommandPalette";
|
|
2773
2961
|
function CommandGroups({ groups, cursor, setCursor, onSelect, optionId }) {
|
|
2774
2962
|
let runningIndex = 0;
|
|
2775
|
-
return /* @__PURE__ */ (0,
|
|
2963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: groups.map((group, gIdx) => {
|
|
2776
2964
|
if (group.items.length === 0) return null;
|
|
2777
|
-
return /* @__PURE__ */ (0,
|
|
2778
|
-
group.label && /* @__PURE__ */ (0,
|
|
2965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { children: [
|
|
2966
|
+
group.label && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "text-text-dim px-2 pt-2 pb-1 font-mono text-[9px] tracking-[1.4px] uppercase", children: [
|
|
2779
2967
|
group.label,
|
|
2780
2968
|
" \xB7 ",
|
|
2781
2969
|
group.items.length
|
|
@@ -2783,7 +2971,7 @@ function CommandGroups({ groups, cursor, setCursor, onSelect, optionId }) {
|
|
|
2783
2971
|
group.items.map((item) => {
|
|
2784
2972
|
const myIndex = runningIndex++;
|
|
2785
2973
|
const isActive = cursor === myIndex;
|
|
2786
|
-
return /* @__PURE__ */ (0,
|
|
2974
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
2787
2975
|
"button",
|
|
2788
2976
|
{
|
|
2789
2977
|
id: optionId(myIndex),
|
|
@@ -2797,7 +2985,7 @@ function CommandGroups({ groups, cursor, setCursor, onSelect, optionId }) {
|
|
|
2797
2985
|
isActive ? "bg-accent-dim text-accent" : "text-text hover:bg-panel-2"
|
|
2798
2986
|
),
|
|
2799
2987
|
children: [
|
|
2800
|
-
item.glyph != null && /* @__PURE__ */ (0,
|
|
2988
|
+
item.glyph != null && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2801
2989
|
"span",
|
|
2802
2990
|
{
|
|
2803
2991
|
"aria-hidden": true,
|
|
@@ -2808,11 +2996,11 @@ function CommandGroups({ groups, cursor, setCursor, onSelect, optionId }) {
|
|
|
2808
2996
|
children: item.glyph
|
|
2809
2997
|
}
|
|
2810
2998
|
),
|
|
2811
|
-
/* @__PURE__ */ (0,
|
|
2812
|
-
/* @__PURE__ */ (0,
|
|
2813
|
-
item.description && /* @__PURE__ */ (0,
|
|
2999
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("span", { className: "min-w-0 flex-1", children: [
|
|
3000
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "block truncate text-[13px]", children: item.label }),
|
|
3001
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-text-dim block truncate text-[11px]", children: item.description })
|
|
2814
3002
|
] }),
|
|
2815
|
-
item.trailing && /* @__PURE__ */ (0,
|
|
3003
|
+
item.trailing && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: item.trailing })
|
|
2816
3004
|
]
|
|
2817
3005
|
},
|
|
2818
3006
|
item.id
|
|
@@ -2834,8 +3022,8 @@ function filterCommandItems(query, groups) {
|
|
|
2834
3022
|
}
|
|
2835
3023
|
|
|
2836
3024
|
// src/patterns/DataTable/DataTable.tsx
|
|
2837
|
-
var
|
|
2838
|
-
var
|
|
3025
|
+
var import_react50 = require("react");
|
|
3026
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2839
3027
|
var alignClass = {
|
|
2840
3028
|
left: "text-left",
|
|
2841
3029
|
right: "text-right",
|
|
@@ -2870,12 +3058,12 @@ function DataTable(props) {
|
|
|
2870
3058
|
defaultValue: new Set(defaultSelected ?? []),
|
|
2871
3059
|
onChange: onSelectionChange
|
|
2872
3060
|
});
|
|
2873
|
-
const sortableMap = (0,
|
|
3061
|
+
const sortableMap = (0, import_react50.useMemo)(() => {
|
|
2874
3062
|
const m = /* @__PURE__ */ new Map();
|
|
2875
3063
|
for (const c of columns) if (c.accessor) m.set(c.key, c);
|
|
2876
3064
|
return m;
|
|
2877
3065
|
}, [columns]);
|
|
2878
|
-
const sortedData = (0,
|
|
3066
|
+
const sortedData = (0, import_react50.useMemo)(() => {
|
|
2879
3067
|
if (!sort) return [...data];
|
|
2880
3068
|
const col = sortableMap.get(sort.key);
|
|
2881
3069
|
if (!col || !col.accessor) return [...data];
|
|
@@ -2887,12 +3075,12 @@ function DataTable(props) {
|
|
|
2887
3075
|
return String(av).localeCompare(String(bv)) * factor;
|
|
2888
3076
|
});
|
|
2889
3077
|
}, [data, sort, sortableMap]);
|
|
2890
|
-
const allIds = (0,
|
|
3078
|
+
const allIds = (0, import_react50.useMemo)(() => sortedData.map(rowKey), [sortedData, rowKey]);
|
|
2891
3079
|
const selectedSet = selected ?? EMPTY_SET;
|
|
2892
3080
|
const allSelected = allIds.length > 0 && allIds.every((id) => selectedSet.has(id));
|
|
2893
3081
|
const someSelected = !allSelected && allIds.some((id) => selectedSet.has(id));
|
|
2894
|
-
const headerCheckRef = (0,
|
|
2895
|
-
(0,
|
|
3082
|
+
const headerCheckRef = (0, import_react50.useRef)(null);
|
|
3083
|
+
(0, import_react50.useEffect)(() => {
|
|
2896
3084
|
if (headerCheckRef.current) headerCheckRef.current.indeterminate = someSelected;
|
|
2897
3085
|
}, [someSelected]);
|
|
2898
3086
|
const toggleSort = (key) => {
|
|
@@ -2923,10 +3111,10 @@ function DataTable(props) {
|
|
|
2923
3111
|
return next;
|
|
2924
3112
|
});
|
|
2925
3113
|
};
|
|
2926
|
-
return /* @__PURE__ */ (0,
|
|
2927
|
-
caption && /* @__PURE__ */ (0,
|
|
2928
|
-
/* @__PURE__ */ (0,
|
|
2929
|
-
selectable && /* @__PURE__ */ (0,
|
|
3114
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("table", { ref, className: cn("w-full border-collapse text-[12px]", className), children: [
|
|
3115
|
+
caption && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("caption", { className: "sr-only", children: caption }),
|
|
3116
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("thead", { className: cn("bg-panel-2", stickyHeader && "z-raised sticky top-0"), children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("tr", { children: [
|
|
3117
|
+
selectable && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { scope: "col", className: "border-border w-8 border-b px-3 py-2 text-left", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2930
3118
|
"input",
|
|
2931
3119
|
{
|
|
2932
3120
|
ref: headerCheckRef,
|
|
@@ -2942,8 +3130,8 @@ function DataTable(props) {
|
|
|
2942
3130
|
const isSorted = sort?.key === col.key;
|
|
2943
3131
|
const ariaSort = !sortable ? void 0 : isSorted ? sort?.direction === "asc" ? "ascending" : "descending" : "none";
|
|
2944
3132
|
const align = col.align ?? "left";
|
|
2945
|
-
const indicator = sortable && isSorted && /* @__PURE__ */ (0,
|
|
2946
|
-
return /* @__PURE__ */ (0,
|
|
3133
|
+
const indicator = sortable && isSorted && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { "aria-hidden": true, className: "ml-1", children: sort?.direction === "asc" ? "\u2191" : "\u2193" });
|
|
3134
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2947
3135
|
"th",
|
|
2948
3136
|
{
|
|
2949
3137
|
scope: "col",
|
|
@@ -2955,7 +3143,7 @@ function DataTable(props) {
|
|
|
2955
3143
|
sortable && "cursor-pointer",
|
|
2956
3144
|
isSorted ? "text-accent" : "text-text-dim"
|
|
2957
3145
|
),
|
|
2958
|
-
children: sortable ? /* @__PURE__ */ (0,
|
|
3146
|
+
children: sortable ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
2959
3147
|
"button",
|
|
2960
3148
|
{
|
|
2961
3149
|
type: "button",
|
|
@@ -2972,8 +3160,8 @@ function DataTable(props) {
|
|
|
2972
3160
|
);
|
|
2973
3161
|
})
|
|
2974
3162
|
] }) }),
|
|
2975
|
-
/* @__PURE__ */ (0,
|
|
2976
|
-
sortedData.length === 0 && /* @__PURE__ */ (0,
|
|
3163
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("tbody", { children: [
|
|
3164
|
+
sortedData.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2977
3165
|
"td",
|
|
2978
3166
|
{
|
|
2979
3167
|
colSpan: columns.length + (selectable ? 1 : 0),
|
|
@@ -2984,7 +3172,7 @@ function DataTable(props) {
|
|
|
2984
3172
|
sortedData.map((row) => {
|
|
2985
3173
|
const id = rowKey(row);
|
|
2986
3174
|
const isSelected = selectedSet.has(id);
|
|
2987
|
-
return /* @__PURE__ */ (0,
|
|
3175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
2988
3176
|
"tr",
|
|
2989
3177
|
{
|
|
2990
3178
|
"data-state": isSelected ? "selected" : void 0,
|
|
@@ -2993,7 +3181,7 @@ function DataTable(props) {
|
|
|
2993
3181
|
isSelected ? "bg-accent-dim/50" : "hover:bg-panel-2"
|
|
2994
3182
|
),
|
|
2995
3183
|
children: [
|
|
2996
|
-
selectable && /* @__PURE__ */ (0,
|
|
3184
|
+
selectable && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("td", { className: "px-3 py-[10px]", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2997
3185
|
"input",
|
|
2998
3186
|
{
|
|
2999
3187
|
type: "checkbox",
|
|
@@ -3003,7 +3191,7 @@ function DataTable(props) {
|
|
|
3003
3191
|
className: "cursor-pointer accent-[var(--color-accent)]"
|
|
3004
3192
|
}
|
|
3005
3193
|
) }),
|
|
3006
|
-
columns.map((col) => /* @__PURE__ */ (0,
|
|
3194
|
+
columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("td", { className: cn("px-3 py-[10px]", alignClass[col.align ?? "left"]), children: col.cell ? col.cell(row) : col.accessor ? String(col.accessor(row)) : null }, col.key))
|
|
3007
3195
|
]
|
|
3008
3196
|
},
|
|
3009
3197
|
id
|
|
@@ -3014,8 +3202,8 @@ function DataTable(props) {
|
|
|
3014
3202
|
}
|
|
3015
3203
|
|
|
3016
3204
|
// src/patterns/DatePicker/Calendar.tsx
|
|
3017
|
-
var
|
|
3018
|
-
var
|
|
3205
|
+
var import_react51 = require("react");
|
|
3206
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
3019
3207
|
var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
3020
3208
|
var DAYS = ["S", "M", "T", "W", "T", "F", "S"];
|
|
3021
3209
|
function isSameDay(a, b) {
|
|
@@ -3026,7 +3214,7 @@ function clampDay(year, month, day) {
|
|
|
3026
3214
|
const max = new Date(year, month + 1, 0).getDate();
|
|
3027
3215
|
return Math.min(Math.max(1, day), max);
|
|
3028
3216
|
}
|
|
3029
|
-
var Calendar = (0,
|
|
3217
|
+
var Calendar = (0, import_react51.forwardRef)(function Calendar2({
|
|
3030
3218
|
value,
|
|
3031
3219
|
defaultValue,
|
|
3032
3220
|
onValueChange,
|
|
@@ -3039,9 +3227,9 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3039
3227
|
className,
|
|
3040
3228
|
...props
|
|
3041
3229
|
}, ref) {
|
|
3042
|
-
const [today] = (0,
|
|
3043
|
-
const [hydrated, setHydrated] = (0,
|
|
3044
|
-
(0,
|
|
3230
|
+
const [today] = (0, import_react51.useState)(() => /* @__PURE__ */ new Date());
|
|
3231
|
+
const [hydrated, setHydrated] = (0, import_react51.useState)(false);
|
|
3232
|
+
(0, import_react51.useEffect)(() => setHydrated(true), []);
|
|
3045
3233
|
const [selectedDate, setSelectedDate] = useControllableState({
|
|
3046
3234
|
value,
|
|
3047
3235
|
defaultValue,
|
|
@@ -3049,12 +3237,12 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3049
3237
|
});
|
|
3050
3238
|
const initialMonth = defaultMonth ?? defaultValue?.getMonth() ?? today.getMonth();
|
|
3051
3239
|
const initialYear = defaultYear ?? defaultValue?.getFullYear() ?? today.getFullYear();
|
|
3052
|
-
const [internalMonth, setInternalMonth] = (0,
|
|
3053
|
-
const [internalYear, setInternalYear] = (0,
|
|
3240
|
+
const [internalMonth, setInternalMonth] = (0, import_react51.useState)(initialMonth);
|
|
3241
|
+
const [internalYear, setInternalYear] = (0, import_react51.useState)(initialYear);
|
|
3054
3242
|
const month = monthProp ?? internalMonth;
|
|
3055
3243
|
const year = yearProp ?? internalYear;
|
|
3056
3244
|
const isControlled = monthProp !== void 0 && yearProp !== void 0;
|
|
3057
|
-
const setVisible = (0,
|
|
3245
|
+
const setVisible = (0, import_react51.useCallback)(
|
|
3058
3246
|
(m, y) => {
|
|
3059
3247
|
if (!isControlled) {
|
|
3060
3248
|
setInternalMonth(m);
|
|
@@ -3064,36 +3252,36 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3064
3252
|
},
|
|
3065
3253
|
[isControlled, onVisibleMonthChange]
|
|
3066
3254
|
);
|
|
3067
|
-
const goPrev = (0,
|
|
3255
|
+
const goPrev = (0, import_react51.useCallback)(() => {
|
|
3068
3256
|
const m = month === 0 ? 11 : month - 1;
|
|
3069
3257
|
const y = month === 0 ? year - 1 : year;
|
|
3070
3258
|
setVisible(m, y);
|
|
3071
3259
|
}, [month, year, setVisible]);
|
|
3072
|
-
const goNext = (0,
|
|
3260
|
+
const goNext = (0, import_react51.useCallback)(() => {
|
|
3073
3261
|
const m = month === 11 ? 0 : month + 1;
|
|
3074
3262
|
const y = month === 11 ? year + 1 : year;
|
|
3075
3263
|
setVisible(m, y);
|
|
3076
3264
|
}, [month, year, setVisible]);
|
|
3077
3265
|
const daysInMonth = new Date(year, month + 1, 0).getDate();
|
|
3078
3266
|
const firstDayOfMonth = new Date(year, month, 1).getDay();
|
|
3079
|
-
const [focusedDate, setFocusedDate] = (0,
|
|
3267
|
+
const [focusedDate, setFocusedDate] = (0, import_react51.useState)(() => {
|
|
3080
3268
|
if (selectedDate) return selectedDate;
|
|
3081
3269
|
return new Date(initialYear, initialMonth, 1);
|
|
3082
3270
|
});
|
|
3083
|
-
(0,
|
|
3271
|
+
(0, import_react51.useEffect)(() => {
|
|
3084
3272
|
if (selectedDate) setFocusedDate(selectedDate);
|
|
3085
3273
|
}, [selectedDate]);
|
|
3086
3274
|
const focusedInVisibleMonth = focusedDate.getMonth() === month && focusedDate.getFullYear() === year;
|
|
3087
3275
|
const effectiveFocusDay = focusedInVisibleMonth ? focusedDate.getDate() : clampDay(year, month, focusedDate.getDate());
|
|
3088
|
-
const dayRefs = (0,
|
|
3089
|
-
const shouldFocusRef = (0,
|
|
3090
|
-
(0,
|
|
3276
|
+
const dayRefs = (0, import_react51.useRef)(/* @__PURE__ */ new Map());
|
|
3277
|
+
const shouldFocusRef = (0, import_react51.useRef)(false);
|
|
3278
|
+
(0, import_react51.useEffect)(() => {
|
|
3091
3279
|
if (!shouldFocusRef.current) return;
|
|
3092
3280
|
shouldFocusRef.current = false;
|
|
3093
3281
|
const node = dayRefs.current.get(effectiveFocusDay);
|
|
3094
3282
|
node?.focus();
|
|
3095
3283
|
}, [effectiveFocusDay, month, year]);
|
|
3096
|
-
const moveFocus = (0,
|
|
3284
|
+
const moveFocus = (0, import_react51.useCallback)(
|
|
3097
3285
|
(next) => {
|
|
3098
3286
|
setFocusedDate(next);
|
|
3099
3287
|
shouldFocusRef.current = true;
|
|
@@ -3105,7 +3293,7 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3105
3293
|
},
|
|
3106
3294
|
[month, year, setVisible]
|
|
3107
3295
|
);
|
|
3108
|
-
const onCellKeyDown = (0,
|
|
3296
|
+
const onCellKeyDown = (0, import_react51.useCallback)(
|
|
3109
3297
|
(e, day) => {
|
|
3110
3298
|
const current = new Date(year, month, day);
|
|
3111
3299
|
let next = null;
|
|
@@ -3157,7 +3345,7 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3157
3345
|
},
|
|
3158
3346
|
[month, year, moveFocus]
|
|
3159
3347
|
);
|
|
3160
|
-
return /* @__PURE__ */ (0,
|
|
3348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
3161
3349
|
"div",
|
|
3162
3350
|
{
|
|
3163
3351
|
ref,
|
|
@@ -3169,14 +3357,14 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3169
3357
|
),
|
|
3170
3358
|
...props,
|
|
3171
3359
|
children: [
|
|
3172
|
-
/* @__PURE__ */ (0,
|
|
3173
|
-
/* @__PURE__ */ (0,
|
|
3360
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "mb-3 flex items-center justify-between", children: [
|
|
3361
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "text-[13px] font-medium", "aria-live": "polite", children: [
|
|
3174
3362
|
MONTHS[month],
|
|
3175
3363
|
" ",
|
|
3176
3364
|
year
|
|
3177
3365
|
] }),
|
|
3178
|
-
/* @__PURE__ */ (0,
|
|
3179
|
-
/* @__PURE__ */ (0,
|
|
3366
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex gap-1", children: [
|
|
3367
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3180
3368
|
IconButton,
|
|
3181
3369
|
{
|
|
3182
3370
|
size: "sm",
|
|
@@ -3186,11 +3374,11 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3186
3374
|
onClick: goPrev
|
|
3187
3375
|
}
|
|
3188
3376
|
),
|
|
3189
|
-
/* @__PURE__ */ (0,
|
|
3377
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(IconButton, { size: "sm", variant: "ghost", icon: "\u203A", "aria-label": "Next month", onClick: goNext })
|
|
3190
3378
|
] })
|
|
3191
3379
|
] }),
|
|
3192
|
-
/* @__PURE__ */ (0,
|
|
3193
|
-
/* @__PURE__ */ (0,
|
|
3380
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { role: "grid", "aria-label": `${MONTHS[month]} ${year}`, className: "flex flex-col gap-[2px]", children: [
|
|
3381
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { role: "row", className: "grid grid-cols-7 gap-[2px]", children: DAYS.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3194
3382
|
"div",
|
|
3195
3383
|
{
|
|
3196
3384
|
role: "columnheader",
|
|
@@ -3210,7 +3398,7 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3210
3398
|
const cellIndex = r * 7 + c;
|
|
3211
3399
|
const dayNum = cellIndex - firstDayOfMonth + 1;
|
|
3212
3400
|
if (dayNum < 1 || dayNum > daysInMonth) {
|
|
3213
|
-
cells.push(/* @__PURE__ */ (0,
|
|
3401
|
+
cells.push(/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { role: "gridcell", "aria-hidden": true }, `pad-${r}-${c}`));
|
|
3214
3402
|
continue;
|
|
3215
3403
|
}
|
|
3216
3404
|
const date = new Date(year, month, dayNum);
|
|
@@ -3220,7 +3408,7 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3220
3408
|
const isFocused = dayNum === effectiveFocusDay;
|
|
3221
3409
|
const day = dayNum;
|
|
3222
3410
|
cells.push(
|
|
3223
|
-
/* @__PURE__ */ (0,
|
|
3411
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { role: "gridcell", "aria-selected": isSelected, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3224
3412
|
"button",
|
|
3225
3413
|
{
|
|
3226
3414
|
ref: (node) => {
|
|
@@ -3251,7 +3439,7 @@ var Calendar = (0, import_react50.forwardRef)(function Calendar2({
|
|
|
3251
3439
|
);
|
|
3252
3440
|
}
|
|
3253
3441
|
rows.push(
|
|
3254
|
-
/* @__PURE__ */ (0,
|
|
3442
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { role: "row", className: "grid grid-cols-7 gap-[2px]", children: cells }, `row-${r}`)
|
|
3255
3443
|
);
|
|
3256
3444
|
}
|
|
3257
3445
|
return rows;
|
|
@@ -3265,10 +3453,10 @@ Calendar.displayName = "Calendar";
|
|
|
3265
3453
|
|
|
3266
3454
|
// src/patterns/DatePicker/DatePicker.tsx
|
|
3267
3455
|
var RadixPopover2 = __toESM(require("@radix-ui/react-popover"), 1);
|
|
3268
|
-
var
|
|
3269
|
-
var
|
|
3456
|
+
var import_react52 = require("react");
|
|
3457
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3270
3458
|
var defaultFormat = (d) => d.toLocaleDateString();
|
|
3271
|
-
var DatePicker = (0,
|
|
3459
|
+
var DatePicker = (0, import_react52.forwardRef)(function DatePicker2({
|
|
3272
3460
|
value: valueProp,
|
|
3273
3461
|
defaultValue,
|
|
3274
3462
|
onValueChange,
|
|
@@ -3282,14 +3470,14 @@ var DatePicker = (0, import_react51.forwardRef)(function DatePicker2({
|
|
|
3282
3470
|
id,
|
|
3283
3471
|
name
|
|
3284
3472
|
}, ref) {
|
|
3285
|
-
const [open, setOpen] = (0,
|
|
3473
|
+
const [open, setOpen] = (0, import_react52.useState)(false);
|
|
3286
3474
|
const [value, setValue] = useControllableState({
|
|
3287
3475
|
value: valueProp,
|
|
3288
3476
|
defaultValue,
|
|
3289
3477
|
onChange: onValueChange
|
|
3290
3478
|
});
|
|
3291
|
-
return /* @__PURE__ */ (0,
|
|
3292
|
-
/* @__PURE__ */ (0,
|
|
3479
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(RadixPopover2.Root, { open, onOpenChange: setOpen, children: [
|
|
3480
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(RadixPopover2.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
3293
3481
|
"button",
|
|
3294
3482
|
{
|
|
3295
3483
|
ref,
|
|
@@ -3306,18 +3494,18 @@ var DatePicker = (0, import_react51.forwardRef)(function DatePicker2({
|
|
|
3306
3494
|
),
|
|
3307
3495
|
style: { width },
|
|
3308
3496
|
children: [
|
|
3309
|
-
/* @__PURE__ */ (0,
|
|
3310
|
-
/* @__PURE__ */ (0,
|
|
3497
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: "\u25A2" }),
|
|
3498
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: cn("flex-1 truncate", !value && "text-text-dim"), children: value ? format(value) : emptyLabel ?? placeholder })
|
|
3311
3499
|
]
|
|
3312
3500
|
}
|
|
3313
3501
|
) }),
|
|
3314
|
-
/* @__PURE__ */ (0,
|
|
3502
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(RadixPopover2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3315
3503
|
RadixPopover2.Content,
|
|
3316
3504
|
{
|
|
3317
3505
|
align: "start",
|
|
3318
3506
|
sideOffset: 6,
|
|
3319
3507
|
className: "z-popover outline-none data-[state=open]:animate-[ship-pop-in_140ms_var(--easing-out)]",
|
|
3320
|
-
children: /* @__PURE__ */ (0,
|
|
3508
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3321
3509
|
Calendar,
|
|
3322
3510
|
{
|
|
3323
3511
|
value,
|
|
@@ -3332,17 +3520,17 @@ var DatePicker = (0, import_react51.forwardRef)(function DatePicker2({
|
|
|
3332
3520
|
)
|
|
3333
3521
|
}
|
|
3334
3522
|
) }),
|
|
3335
|
-
name && /* @__PURE__ */ (0,
|
|
3523
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("input", { type: "hidden", name, value: value ? value.toISOString() : "", readOnly: true })
|
|
3336
3524
|
] });
|
|
3337
3525
|
});
|
|
3338
3526
|
DatePicker.displayName = "DatePicker";
|
|
3339
3527
|
|
|
3340
3528
|
// src/patterns/Dots/Dots.tsx
|
|
3341
|
-
var
|
|
3342
|
-
var
|
|
3343
|
-
var Dots = (0,
|
|
3529
|
+
var import_react53 = require("react");
|
|
3530
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3531
|
+
var Dots = (0, import_react53.forwardRef)(function Dots2({ total, current, onChange, className, "aria-label": ariaLabel = "Progress", ...props }, ref) {
|
|
3344
3532
|
const interactive = typeof onChange === "function";
|
|
3345
|
-
return /* @__PURE__ */ (0,
|
|
3533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3346
3534
|
"nav",
|
|
3347
3535
|
{
|
|
3348
3536
|
ref,
|
|
@@ -3356,7 +3544,7 @@ var Dots = (0, import_react52.forwardRef)(function Dots2({ total, current, onCha
|
|
|
3356
3544
|
isActive ? "w-[18px] bg-accent" : "w-[6px] bg-panel-2"
|
|
3357
3545
|
);
|
|
3358
3546
|
if (interactive) {
|
|
3359
|
-
return /* @__PURE__ */ (0,
|
|
3547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3360
3548
|
"button",
|
|
3361
3549
|
{
|
|
3362
3550
|
type: "button",
|
|
@@ -3373,7 +3561,7 @@ var Dots = (0, import_react52.forwardRef)(function Dots2({ total, current, onCha
|
|
|
3373
3561
|
i
|
|
3374
3562
|
);
|
|
3375
3563
|
}
|
|
3376
|
-
return /* @__PURE__ */ (0,
|
|
3564
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { "aria-hidden": true, className: sharedClass }, i);
|
|
3377
3565
|
})
|
|
3378
3566
|
}
|
|
3379
3567
|
);
|
|
@@ -3381,13 +3569,13 @@ var Dots = (0, import_react52.forwardRef)(function Dots2({ total, current, onCha
|
|
|
3381
3569
|
Dots.displayName = "Dots";
|
|
3382
3570
|
|
|
3383
3571
|
// src/patterns/Dropzone/Dropzone.tsx
|
|
3384
|
-
var
|
|
3385
|
-
var
|
|
3572
|
+
var import_react54 = require("react");
|
|
3573
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
3386
3574
|
function listToArray(list) {
|
|
3387
3575
|
if (!list) return [];
|
|
3388
3576
|
return Array.from(list);
|
|
3389
3577
|
}
|
|
3390
|
-
var Dropzone = (0,
|
|
3578
|
+
var Dropzone = (0, import_react54.forwardRef)(function Dropzone2({
|
|
3391
3579
|
onFiles,
|
|
3392
3580
|
accept,
|
|
3393
3581
|
multiple = true,
|
|
@@ -3398,7 +3586,7 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3398
3586
|
className,
|
|
3399
3587
|
...props
|
|
3400
3588
|
}, ref) {
|
|
3401
|
-
const [isDragging, setIsDragging] = (0,
|
|
3589
|
+
const [isDragging, setIsDragging] = (0, import_react54.useState)(false);
|
|
3402
3590
|
const onDragOver = (e) => {
|
|
3403
3591
|
if (disabled) return;
|
|
3404
3592
|
e.preventDefault();
|
|
@@ -3412,7 +3600,7 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3412
3600
|
const files = listToArray(e.dataTransfer.files);
|
|
3413
3601
|
if (files.length) onFiles?.(files);
|
|
3414
3602
|
};
|
|
3415
|
-
return /* @__PURE__ */ (0,
|
|
3603
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
3416
3604
|
"label",
|
|
3417
3605
|
{
|
|
3418
3606
|
ref,
|
|
@@ -3429,7 +3617,7 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3429
3617
|
),
|
|
3430
3618
|
...props,
|
|
3431
3619
|
children: [
|
|
3432
|
-
/* @__PURE__ */ (0,
|
|
3620
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3433
3621
|
"input",
|
|
3434
3622
|
{
|
|
3435
3623
|
type: "file",
|
|
@@ -3445,7 +3633,7 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3445
3633
|
}
|
|
3446
3634
|
}
|
|
3447
3635
|
),
|
|
3448
|
-
/* @__PURE__ */ (0,
|
|
3636
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3449
3637
|
"div",
|
|
3450
3638
|
{
|
|
3451
3639
|
"aria-hidden": true,
|
|
@@ -3453,8 +3641,8 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3453
3641
|
children: icon
|
|
3454
3642
|
}
|
|
3455
3643
|
),
|
|
3456
|
-
/* @__PURE__ */ (0,
|
|
3457
|
-
description && /* @__PURE__ */ (0,
|
|
3644
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "mb-1 text-[13px] font-medium", children: title }),
|
|
3645
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "text-text-dim text-[11px]", children: description })
|
|
3458
3646
|
]
|
|
3459
3647
|
}
|
|
3460
3648
|
);
|
|
@@ -3462,10 +3650,10 @@ var Dropzone = (0, import_react53.forwardRef)(function Dropzone2({
|
|
|
3462
3650
|
Dropzone.displayName = "Dropzone";
|
|
3463
3651
|
|
|
3464
3652
|
// src/patterns/EmptyState/EmptyState.tsx
|
|
3465
|
-
var
|
|
3466
|
-
var
|
|
3467
|
-
var
|
|
3468
|
-
var plateStyles = (0,
|
|
3653
|
+
var import_class_variance_authority11 = require("class-variance-authority");
|
|
3654
|
+
var import_react55 = require("react");
|
|
3655
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
3656
|
+
var plateStyles = (0, import_class_variance_authority11.cva)("grid h-12 w-12 place-items-center rounded-base text-[22px]", {
|
|
3469
3657
|
variants: {
|
|
3470
3658
|
tone: {
|
|
3471
3659
|
neutral: "bg-panel-2 text-text-muted",
|
|
@@ -3477,8 +3665,8 @@ var plateStyles = (0, import_class_variance_authority10.cva)("grid h-12 w-12 pla
|
|
|
3477
3665
|
},
|
|
3478
3666
|
defaultVariants: { tone: "neutral" }
|
|
3479
3667
|
});
|
|
3480
|
-
var EmptyState = (0,
|
|
3481
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
var EmptyState = (0, import_react55.forwardRef)(function EmptyState2({ icon, title, description, action, chips, tone, className, ...props }, ref) {
|
|
3669
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
3482
3670
|
"div",
|
|
3483
3671
|
{
|
|
3484
3672
|
ref,
|
|
@@ -3488,10 +3676,10 @@ var EmptyState = (0, import_react54.forwardRef)(function EmptyState2({ icon, tit
|
|
|
3488
3676
|
),
|
|
3489
3677
|
...props,
|
|
3490
3678
|
children: [
|
|
3491
|
-
icon != null && /* @__PURE__ */ (0,
|
|
3492
|
-
/* @__PURE__ */ (0,
|
|
3493
|
-
description && /* @__PURE__ */ (0,
|
|
3494
|
-
chips && chips.length > 0 && /* @__PURE__ */ (0,
|
|
3679
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { "aria-hidden": true, className: plateStyles({ tone: tone ?? "neutral" }), children: icon }),
|
|
3680
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "text-[14px] font-medium", children: title }),
|
|
3681
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "text-text-muted max-w-[260px] text-[12px] leading-[1.5]", children: description }),
|
|
3682
|
+
chips && chips.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "flex w-full flex-col gap-1", children: chips.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
3495
3683
|
"button",
|
|
3496
3684
|
{
|
|
3497
3685
|
type: "button",
|
|
@@ -3513,18 +3701,18 @@ var EmptyState = (0, import_react54.forwardRef)(function EmptyState2({ icon, tit
|
|
|
3513
3701
|
EmptyState.displayName = "EmptyState";
|
|
3514
3702
|
|
|
3515
3703
|
// src/patterns/FileChip/FileChip.tsx
|
|
3516
|
-
var
|
|
3517
|
-
var
|
|
3704
|
+
var import_react56 = require("react");
|
|
3705
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
3518
3706
|
function deriveExt(name) {
|
|
3519
3707
|
const dot = name.lastIndexOf(".");
|
|
3520
3708
|
if (dot < 0) return "FILE";
|
|
3521
3709
|
return name.slice(dot + 1).slice(0, 4).toUpperCase();
|
|
3522
3710
|
}
|
|
3523
|
-
var FileChip = (0,
|
|
3711
|
+
var FileChip = (0, import_react56.forwardRef)(function FileChip2({ name, size, progress, icon, onRemove, failed, className, ...props }, ref) {
|
|
3524
3712
|
const ext = deriveExt(name);
|
|
3525
3713
|
const showProgress = typeof progress === "number";
|
|
3526
3714
|
const isComplete = showProgress && progress >= 100;
|
|
3527
|
-
return /* @__PURE__ */ (0,
|
|
3715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
3528
3716
|
"div",
|
|
3529
3717
|
{
|
|
3530
3718
|
ref,
|
|
@@ -3534,7 +3722,7 @@ var FileChip = (0, import_react55.forwardRef)(function FileChip2({ name, size, p
|
|
|
3534
3722
|
),
|
|
3535
3723
|
...props,
|
|
3536
3724
|
children: [
|
|
3537
|
-
/* @__PURE__ */ (0,
|
|
3725
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3538
3726
|
"span",
|
|
3539
3727
|
{
|
|
3540
3728
|
"aria-hidden": true,
|
|
@@ -3542,17 +3730,17 @@ var FileChip = (0, import_react55.forwardRef)(function FileChip2({ name, size, p
|
|
|
3542
3730
|
children: icon ?? ext
|
|
3543
3731
|
}
|
|
3544
3732
|
),
|
|
3545
|
-
/* @__PURE__ */ (0,
|
|
3546
|
-
/* @__PURE__ */ (0,
|
|
3547
|
-
/* @__PURE__ */ (0,
|
|
3733
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
3734
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "truncate text-[12px] font-medium", children: name }),
|
|
3735
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("font-mono text-[10px]", failed ? "text-err" : "text-text-dim"), children: [
|
|
3548
3736
|
size,
|
|
3549
|
-
showProgress && !isComplete && /* @__PURE__ */ (0,
|
|
3737
|
+
showProgress && !isComplete && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
|
|
3550
3738
|
" \xB7 ",
|
|
3551
3739
|
Math.round(progress),
|
|
3552
3740
|
"%"
|
|
3553
3741
|
] })
|
|
3554
3742
|
] }),
|
|
3555
|
-
showProgress && !isComplete && /* @__PURE__ */ (0,
|
|
3743
|
+
showProgress && !isComplete && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "bg-panel mt-1 h-[2px] overflow-hidden rounded-full", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3556
3744
|
"div",
|
|
3557
3745
|
{
|
|
3558
3746
|
className: cn(
|
|
@@ -3563,7 +3751,7 @@ var FileChip = (0, import_react55.forwardRef)(function FileChip2({ name, size, p
|
|
|
3563
3751
|
}
|
|
3564
3752
|
) })
|
|
3565
3753
|
] }),
|
|
3566
|
-
onRemove && /* @__PURE__ */ (0,
|
|
3754
|
+
onRemove && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3567
3755
|
"button",
|
|
3568
3756
|
{
|
|
3569
3757
|
type: "button",
|
|
@@ -3583,10 +3771,10 @@ var FileChip = (0, import_react55.forwardRef)(function FileChip2({ name, size, p
|
|
|
3583
3771
|
FileChip.displayName = "FileChip";
|
|
3584
3772
|
|
|
3585
3773
|
// src/patterns/FilterPanel/FilterPanel.tsx
|
|
3586
|
-
var
|
|
3587
|
-
var
|
|
3774
|
+
var import_react57 = require("react");
|
|
3775
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
3588
3776
|
var EMPTY = Object.freeze({});
|
|
3589
|
-
var FilterPanel = (0,
|
|
3777
|
+
var FilterPanel = (0, import_react57.forwardRef)(function FilterPanel2({
|
|
3590
3778
|
facets,
|
|
3591
3779
|
value,
|
|
3592
3780
|
defaultValue,
|
|
@@ -3604,7 +3792,7 @@ var FilterPanel = (0, import_react56.forwardRef)(function FilterPanel2({
|
|
|
3604
3792
|
onChange: onValueChange
|
|
3605
3793
|
});
|
|
3606
3794
|
const total = facets.reduce((sum, facet) => sum + (selection[facet.id]?.length ?? 0), 0);
|
|
3607
|
-
const toggle = (0,
|
|
3795
|
+
const toggle = (0, import_react57.useCallback)(
|
|
3608
3796
|
(facetId, optionValue, next) => {
|
|
3609
3797
|
setSelection((prev) => {
|
|
3610
3798
|
const current = prev?.[facetId] ?? [];
|
|
@@ -3615,11 +3803,11 @@ var FilterPanel = (0, import_react56.forwardRef)(function FilterPanel2({
|
|
|
3615
3803
|
},
|
|
3616
3804
|
[setSelection]
|
|
3617
3805
|
);
|
|
3618
|
-
const handleReset = (0,
|
|
3806
|
+
const handleReset = (0, import_react57.useCallback)(() => {
|
|
3619
3807
|
setSelection(EMPTY);
|
|
3620
3808
|
onReset?.();
|
|
3621
3809
|
}, [setSelection, onReset]);
|
|
3622
|
-
return /* @__PURE__ */ (0,
|
|
3810
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
3623
3811
|
"div",
|
|
3624
3812
|
{
|
|
3625
3813
|
ref,
|
|
@@ -3631,10 +3819,10 @@ var FilterPanel = (0, import_react56.forwardRef)(function FilterPanel2({
|
|
|
3631
3819
|
),
|
|
3632
3820
|
...props,
|
|
3633
3821
|
children: [
|
|
3634
|
-
/* @__PURE__ */ (0,
|
|
3635
|
-
/* @__PURE__ */ (0,
|
|
3636
|
-
total > 0 && /* @__PURE__ */ (0,
|
|
3637
|
-
/* @__PURE__ */ (0,
|
|
3822
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3823
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-text-dim font-mono text-[10px] tracking-[1.4px] uppercase", children: title }),
|
|
3824
|
+
total > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { size: "sm", variant: "accent", children: total }),
|
|
3825
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3638
3826
|
Button,
|
|
3639
3827
|
{
|
|
3640
3828
|
type: "button",
|
|
@@ -3647,7 +3835,7 @@ var FilterPanel = (0, import_react56.forwardRef)(function FilterPanel2({
|
|
|
3647
3835
|
}
|
|
3648
3836
|
)
|
|
3649
3837
|
] }),
|
|
3650
|
-
facets.map((facet) => /* @__PURE__ */ (0,
|
|
3838
|
+
facets.map((facet) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3651
3839
|
FilterFacetGroup,
|
|
3652
3840
|
{
|
|
3653
3841
|
facet,
|
|
@@ -3664,12 +3852,12 @@ var FilterPanel = (0, import_react56.forwardRef)(function FilterPanel2({
|
|
|
3664
3852
|
FilterPanel.displayName = "FilterPanel";
|
|
3665
3853
|
function FilterFacetGroup({ facet, selected, counts, onToggle }) {
|
|
3666
3854
|
const collapsible = facet.collapsible ?? true;
|
|
3667
|
-
const [open, setOpen] = (0,
|
|
3855
|
+
const [open, setOpen] = (0, import_react57.useState)(facet.defaultOpen ?? true);
|
|
3668
3856
|
const isOpen = !collapsible || open;
|
|
3669
3857
|
const selectedCount = selected.length;
|
|
3670
3858
|
const headingClass = "text-text-muted flex items-center gap-[6px] font-mono text-[10px] tracking-[1.4px] uppercase";
|
|
3671
|
-
return /* @__PURE__ */ (0,
|
|
3672
|
-
collapsible ? /* @__PURE__ */ (0,
|
|
3859
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("section", { className: "flex flex-col gap-1", children: [
|
|
3860
|
+
collapsible ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
3673
3861
|
"button",
|
|
3674
3862
|
{
|
|
3675
3863
|
type: "button",
|
|
@@ -3682,20 +3870,20 @@ function FilterFacetGroup({ facet, selected, counts, onToggle }) {
|
|
|
3682
3870
|
"hover:text-text"
|
|
3683
3871
|
),
|
|
3684
3872
|
children: [
|
|
3685
|
-
/* @__PURE__ */ (0,
|
|
3686
|
-
selectedCount > 0 && /* @__PURE__ */ (0,
|
|
3687
|
-
/* @__PURE__ */ (0,
|
|
3873
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "flex-1 text-left", children: facet.label }),
|
|
3874
|
+
selectedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { size: "sm", variant: "neutral", children: selectedCount }),
|
|
3875
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-70", children: isOpen ? "\u25BE" : "\u25B8" })
|
|
3688
3876
|
]
|
|
3689
3877
|
}
|
|
3690
|
-
) : /* @__PURE__ */ (0,
|
|
3691
|
-
/* @__PURE__ */ (0,
|
|
3692
|
-
selectedCount > 0 && /* @__PURE__ */ (0,
|
|
3878
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: cn(headingClass, "px-1 py-[2px]"), children: [
|
|
3879
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "flex-1", children: facet.label }),
|
|
3880
|
+
selectedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { size: "sm", variant: "neutral", children: selectedCount })
|
|
3693
3881
|
] }),
|
|
3694
|
-
isOpen && /* @__PURE__ */ (0,
|
|
3882
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ul", { className: "m-0 flex list-none flex-col gap-[2px] p-0", children: facet.options.map((option) => {
|
|
3695
3883
|
const isSelected = selected.includes(option.value);
|
|
3696
3884
|
const count = counts?.[option.value];
|
|
3697
|
-
return /* @__PURE__ */ (0,
|
|
3698
|
-
/* @__PURE__ */ (0,
|
|
3885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("li", { className: "flex items-center gap-2 px-1 py-[3px]", children: [
|
|
3886
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3699
3887
|
Checkbox,
|
|
3700
3888
|
{
|
|
3701
3889
|
checked: isSelected,
|
|
@@ -3703,25 +3891,25 @@ function FilterFacetGroup({ facet, selected, counts, onToggle }) {
|
|
|
3703
3891
|
label: option.label
|
|
3704
3892
|
}
|
|
3705
3893
|
),
|
|
3706
|
-
typeof count === "number" && /* @__PURE__ */ (0,
|
|
3894
|
+
typeof count === "number" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-text-dim ml-auto font-mono text-[10px] tabular-nums", children: count })
|
|
3707
3895
|
] }, option.value);
|
|
3708
3896
|
}) })
|
|
3709
3897
|
] });
|
|
3710
3898
|
}
|
|
3711
3899
|
|
|
3712
3900
|
// src/patterns/HealthScore/HealthScore.tsx
|
|
3713
|
-
var
|
|
3901
|
+
var import_react59 = require("react");
|
|
3714
3902
|
|
|
3715
3903
|
// src/patterns/RadialProgress/RadialProgress.tsx
|
|
3716
|
-
var
|
|
3717
|
-
var
|
|
3904
|
+
var import_react58 = require("react");
|
|
3905
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
3718
3906
|
var toneStrokeClass = {
|
|
3719
3907
|
accent: "stroke-accent",
|
|
3720
3908
|
ok: "stroke-ok",
|
|
3721
3909
|
warn: "stroke-warn",
|
|
3722
3910
|
err: "stroke-err"
|
|
3723
3911
|
};
|
|
3724
|
-
var RadialProgress = (0,
|
|
3912
|
+
var RadialProgress = (0, import_react58.forwardRef)(
|
|
3725
3913
|
function RadialProgress2({
|
|
3726
3914
|
value,
|
|
3727
3915
|
max = 100,
|
|
@@ -3739,7 +3927,7 @@ var RadialProgress = (0, import_react57.forwardRef)(
|
|
|
3739
3927
|
const c = 2 * Math.PI * r;
|
|
3740
3928
|
const dash = pct / 100 * c;
|
|
3741
3929
|
const resolvedTone = tone ?? (clamped >= max ? "ok" : "accent");
|
|
3742
|
-
return /* @__PURE__ */ (0,
|
|
3930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
3743
3931
|
"div",
|
|
3744
3932
|
{
|
|
3745
3933
|
ref,
|
|
@@ -3752,8 +3940,8 @@ var RadialProgress = (0, import_react57.forwardRef)(
|
|
|
3752
3940
|
style: { width: size, height: size },
|
|
3753
3941
|
...props,
|
|
3754
3942
|
children: [
|
|
3755
|
-
/* @__PURE__ */ (0,
|
|
3756
|
-
/* @__PURE__ */ (0,
|
|
3943
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
|
|
3944
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3757
3945
|
"circle",
|
|
3758
3946
|
{
|
|
3759
3947
|
cx: size / 2,
|
|
@@ -3764,7 +3952,7 @@ var RadialProgress = (0, import_react57.forwardRef)(
|
|
|
3764
3952
|
className: "stroke-panel-2"
|
|
3765
3953
|
}
|
|
3766
3954
|
),
|
|
3767
|
-
/* @__PURE__ */ (0,
|
|
3955
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3768
3956
|
"circle",
|
|
3769
3957
|
{
|
|
3770
3958
|
cx: size / 2,
|
|
@@ -3782,7 +3970,7 @@ var RadialProgress = (0, import_react57.forwardRef)(
|
|
|
3782
3970
|
}
|
|
3783
3971
|
)
|
|
3784
3972
|
] }),
|
|
3785
|
-
/* @__PURE__ */ (0,
|
|
3973
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "absolute inset-0 grid place-items-center font-mono text-[11px] font-medium tabular-nums", children: children ?? `${Math.round(pct)}%` })
|
|
3786
3974
|
]
|
|
3787
3975
|
}
|
|
3788
3976
|
);
|
|
@@ -3791,7 +3979,7 @@ var RadialProgress = (0, import_react57.forwardRef)(
|
|
|
3791
3979
|
RadialProgress.displayName = "RadialProgress";
|
|
3792
3980
|
|
|
3793
3981
|
// src/patterns/HealthScore/HealthScore.tsx
|
|
3794
|
-
var
|
|
3982
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
3795
3983
|
function deltaTone(delta) {
|
|
3796
3984
|
if (delta > 0) return "ok";
|
|
3797
3985
|
if (delta < 0) return "err";
|
|
@@ -3808,7 +3996,7 @@ var toneTextClass = {
|
|
|
3808
3996
|
warn: "text-warn",
|
|
3809
3997
|
err: "text-err"
|
|
3810
3998
|
};
|
|
3811
|
-
var HealthScore = (0,
|
|
3999
|
+
var HealthScore = (0, import_react59.forwardRef)(function HealthScore2({
|
|
3812
4000
|
value,
|
|
3813
4001
|
max = 100,
|
|
3814
4002
|
delta,
|
|
@@ -3823,7 +4011,7 @@ var HealthScore = (0, import_react58.forwardRef)(function HealthScore2({
|
|
|
3823
4011
|
const pct = max > 0 ? Math.round(Math.min(max, Math.max(0, value)) / max * 100) : 0;
|
|
3824
4012
|
const resolvedTone = tone ?? (pct >= 80 ? "ok" : pct >= 50 ? "accent" : "warn");
|
|
3825
4013
|
const indicatorTone = typeof delta === "number" ? deltaTone(delta) : "accent";
|
|
3826
|
-
const core = /* @__PURE__ */ (0,
|
|
4014
|
+
const core = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
3827
4015
|
"div",
|
|
3828
4016
|
{
|
|
3829
4017
|
ref,
|
|
@@ -3831,10 +4019,10 @@ var HealthScore = (0, import_react58.forwardRef)(function HealthScore2({
|
|
|
3831
4019
|
"aria-label": ariaLabel ?? `${pct}% health`,
|
|
3832
4020
|
...props,
|
|
3833
4021
|
children: [
|
|
3834
|
-
/* @__PURE__ */ (0,
|
|
3835
|
-
label && /* @__PURE__ */ (0,
|
|
3836
|
-
typeof delta === "number" && /* @__PURE__ */ (0,
|
|
3837
|
-
/* @__PURE__ */ (0,
|
|
4022
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(RadialProgress, { value, max, size, tone: resolvedTone }),
|
|
4023
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "text-text-muted mt-1 text-[12px] leading-tight", children: label }),
|
|
4024
|
+
typeof delta === "number" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: cn("font-mono text-[11px] tabular-nums", toneTextClass[indicatorTone]), children: [
|
|
4025
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { "aria-hidden": true, children: deltaGlyph(delta) }),
|
|
3838
4026
|
" ",
|
|
3839
4027
|
Math.abs(delta)
|
|
3840
4028
|
] })
|
|
@@ -3844,15 +4032,15 @@ var HealthScore = (0, import_react58.forwardRef)(function HealthScore2({
|
|
|
3844
4032
|
if (!breakdown || breakdown.length === 0) {
|
|
3845
4033
|
return core;
|
|
3846
4034
|
}
|
|
3847
|
-
return /* @__PURE__ */ (0,
|
|
4035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3848
4036
|
HoverCard,
|
|
3849
4037
|
{
|
|
3850
|
-
trigger: /* @__PURE__ */ (0,
|
|
3851
|
-
content: /* @__PURE__ */ (0,
|
|
3852
|
-
/* @__PURE__ */ (0,
|
|
3853
|
-
/* @__PURE__ */ (0,
|
|
3854
|
-
/* @__PURE__ */ (0,
|
|
3855
|
-
/* @__PURE__ */ (0,
|
|
4038
|
+
trigger: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "inline-flex", children: core }),
|
|
4039
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex min-w-[180px] flex-col gap-2", children: [
|
|
4040
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "text-text-dim font-mono text-[9px] tracking-[1.4px] uppercase", children: "Breakdown" }),
|
|
4041
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("ul", { className: "m-0 flex list-none flex-col gap-1 p-0 text-[12px]", children: breakdown.map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("li", { className: "flex items-center gap-2", children: [
|
|
4042
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-text-muted flex-1 truncate", children: entry.label }),
|
|
4043
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3856
4044
|
"span",
|
|
3857
4045
|
{
|
|
3858
4046
|
className: cn(
|
|
@@ -3870,21 +4058,21 @@ var HealthScore = (0, import_react58.forwardRef)(function HealthScore2({
|
|
|
3870
4058
|
HealthScore.displayName = "HealthScore";
|
|
3871
4059
|
|
|
3872
4060
|
// src/patterns/LargeTitle/LargeTitle.tsx
|
|
3873
|
-
var
|
|
3874
|
-
var
|
|
3875
|
-
var LargeTitle = (0,
|
|
3876
|
-
return /* @__PURE__ */ (0,
|
|
4061
|
+
var import_react60 = require("react");
|
|
4062
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
4063
|
+
var LargeTitle = (0, import_react60.forwardRef)(function LargeTitle2({ title, eyebrow, trailing, className, ...props }, ref) {
|
|
4064
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
3877
4065
|
"header",
|
|
3878
4066
|
{
|
|
3879
4067
|
ref,
|
|
3880
4068
|
className: cn("px-screen flex items-end justify-between gap-3 py-3 pb-4", className),
|
|
3881
4069
|
...props,
|
|
3882
4070
|
children: [
|
|
3883
|
-
/* @__PURE__ */ (0,
|
|
3884
|
-
eyebrow && /* @__PURE__ */ (0,
|
|
3885
|
-
/* @__PURE__ */ (0,
|
|
4071
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
4072
|
+
eyebrow && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-m-eyebrow text-accent mb-[6px] font-mono tracking-wide uppercase", children: eyebrow }),
|
|
4073
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h1", { className: "text-m-h1 m-0 truncate leading-tight font-medium tracking-tight", children: title })
|
|
3886
4074
|
] }),
|
|
3887
|
-
trailing && /* @__PURE__ */ (0,
|
|
4075
|
+
trailing && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "shrink-0", children: trailing })
|
|
3888
4076
|
]
|
|
3889
4077
|
}
|
|
3890
4078
|
);
|
|
@@ -3893,10 +4081,10 @@ LargeTitle.displayName = "LargeTitle";
|
|
|
3893
4081
|
|
|
3894
4082
|
// src/patterns/Menubar/Menubar.tsx
|
|
3895
4083
|
var RadixMenubar = __toESM(require("@radix-ui/react-menubar"), 1);
|
|
3896
|
-
var
|
|
3897
|
-
var
|
|
3898
|
-
var Menubar = (0,
|
|
3899
|
-
return /* @__PURE__ */ (0,
|
|
4084
|
+
var import_react61 = require("react");
|
|
4085
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
4086
|
+
var Menubar = (0, import_react61.forwardRef)(function Menubar2({ className, ...props }, ref) {
|
|
4087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3900
4088
|
RadixMenubar.Root,
|
|
3901
4089
|
{
|
|
3902
4090
|
ref,
|
|
@@ -3910,9 +4098,9 @@ var Menubar = (0, import_react60.forwardRef)(function Menubar2({ className, ...p
|
|
|
3910
4098
|
});
|
|
3911
4099
|
Menubar.displayName = "Menubar";
|
|
3912
4100
|
var MenubarMenu = RadixMenubar.Menu;
|
|
3913
|
-
var MenubarTrigger = (0,
|
|
4101
|
+
var MenubarTrigger = (0, import_react61.forwardRef)(
|
|
3914
4102
|
function MenubarTrigger2({ className, ...props }, ref) {
|
|
3915
|
-
return /* @__PURE__ */ (0,
|
|
4103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3916
4104
|
RadixMenubar.Trigger,
|
|
3917
4105
|
{
|
|
3918
4106
|
ref,
|
|
@@ -3929,9 +4117,9 @@ var MenubarTrigger = (0, import_react60.forwardRef)(
|
|
|
3929
4117
|
}
|
|
3930
4118
|
);
|
|
3931
4119
|
MenubarTrigger.displayName = "MenubarTrigger";
|
|
3932
|
-
var MenubarContent = (0,
|
|
4120
|
+
var MenubarContent = (0, import_react61.forwardRef)(
|
|
3933
4121
|
function MenubarContent2({ className, sideOffset = 6, align = "start", ...props }, ref) {
|
|
3934
|
-
return /* @__PURE__ */ (0,
|
|
4122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RadixMenubar.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3935
4123
|
RadixMenubar.Content,
|
|
3936
4124
|
{
|
|
3937
4125
|
ref,
|
|
@@ -3953,24 +4141,24 @@ var itemBase3 = cn(
|
|
|
3953
4141
|
"data-[highlighted]:bg-panel-2",
|
|
3954
4142
|
"data-[disabled]:opacity-40 data-[disabled]:cursor-not-allowed"
|
|
3955
4143
|
);
|
|
3956
|
-
var MenubarItem = (0,
|
|
3957
|
-
return /* @__PURE__ */ (0,
|
|
4144
|
+
var MenubarItem = (0, import_react61.forwardRef)(function MenubarItem2({ trailing, destructive, className, children, ...props }, ref) {
|
|
4145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
3958
4146
|
RadixMenubar.Item,
|
|
3959
4147
|
{
|
|
3960
4148
|
ref,
|
|
3961
4149
|
className: cn(itemBase3, destructive ? "text-err" : "text-text", className),
|
|
3962
4150
|
...props,
|
|
3963
4151
|
children: [
|
|
3964
|
-
/* @__PURE__ */ (0,
|
|
3965
|
-
trailing && /* @__PURE__ */ (0,
|
|
4152
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "flex-1", children }),
|
|
4153
|
+
trailing && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
|
|
3966
4154
|
]
|
|
3967
4155
|
}
|
|
3968
4156
|
);
|
|
3969
4157
|
});
|
|
3970
4158
|
MenubarItem.displayName = "MenubarItem";
|
|
3971
|
-
var MenubarSeparator = (0,
|
|
4159
|
+
var MenubarSeparator = (0, import_react61.forwardRef)(
|
|
3972
4160
|
function MenubarSeparator2({ className, ...props }, ref) {
|
|
3973
|
-
return /* @__PURE__ */ (0,
|
|
4161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3974
4162
|
RadixMenubar.Separator,
|
|
3975
4163
|
{
|
|
3976
4164
|
ref,
|
|
@@ -3984,13 +4172,13 @@ MenubarSeparator.displayName = "MenubarSeparator";
|
|
|
3984
4172
|
|
|
3985
4173
|
// src/patterns/NavBar/NavBar.tsx
|
|
3986
4174
|
var RadixNav = __toESM(require("@radix-ui/react-navigation-menu"), 1);
|
|
3987
|
-
var
|
|
4175
|
+
var import_react63 = require("react");
|
|
3988
4176
|
|
|
3989
4177
|
// src/patterns/Sidebar/Sidebar.tsx
|
|
3990
|
-
var
|
|
3991
|
-
var
|
|
3992
|
-
var Sidebar = (0,
|
|
3993
|
-
return /* @__PURE__ */ (0,
|
|
4178
|
+
var import_react62 = require("react");
|
|
4179
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
4180
|
+
var Sidebar = (0, import_react62.forwardRef)(function Sidebar2({ width = 240, className, style, ...props }, ref) {
|
|
4181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3994
4182
|
"aside",
|
|
3995
4183
|
{
|
|
3996
4184
|
ref,
|
|
@@ -4004,12 +4192,12 @@ var Sidebar = (0, import_react61.forwardRef)(function Sidebar2({ width = 240, cl
|
|
|
4004
4192
|
);
|
|
4005
4193
|
});
|
|
4006
4194
|
Sidebar.displayName = "Sidebar";
|
|
4007
|
-
var NavItem = (0,
|
|
4195
|
+
var NavItem = (0, import_react62.forwardRef)(
|
|
4008
4196
|
function NavItem2({ icon, label, active, badge, href, disabled, className, ...props }, ref) {
|
|
4009
|
-
const inner = /* @__PURE__ */ (0,
|
|
4010
|
-
icon && /* @__PURE__ */ (0,
|
|
4011
|
-
/* @__PURE__ */ (0,
|
|
4012
|
-
badge != null && /* @__PURE__ */ (0,
|
|
4197
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
4198
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "w-[14px] text-center opacity-80", children: icon }),
|
|
4199
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "flex-1 truncate", children: label }),
|
|
4200
|
+
badge != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4013
4201
|
"span",
|
|
4014
4202
|
{
|
|
4015
4203
|
className: cn(
|
|
@@ -4030,7 +4218,7 @@ var NavItem = (0, import_react61.forwardRef)(
|
|
|
4030
4218
|
);
|
|
4031
4219
|
if (href) {
|
|
4032
4220
|
const anchorProps = props;
|
|
4033
|
-
return /* @__PURE__ */ (0,
|
|
4221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4034
4222
|
"a",
|
|
4035
4223
|
{
|
|
4036
4224
|
ref,
|
|
@@ -4044,7 +4232,7 @@ var NavItem = (0, import_react61.forwardRef)(
|
|
|
4044
4232
|
);
|
|
4045
4233
|
}
|
|
4046
4234
|
const buttonProps = props;
|
|
4047
|
-
return /* @__PURE__ */ (0,
|
|
4235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4048
4236
|
"button",
|
|
4049
4237
|
{
|
|
4050
4238
|
ref,
|
|
@@ -4059,7 +4247,7 @@ var NavItem = (0, import_react61.forwardRef)(
|
|
|
4059
4247
|
}
|
|
4060
4248
|
);
|
|
4061
4249
|
NavItem.displayName = "NavItem";
|
|
4062
|
-
var NavSection = (0,
|
|
4250
|
+
var NavSection = (0, import_react62.forwardRef)(function NavSection2({
|
|
4063
4251
|
label,
|
|
4064
4252
|
icon,
|
|
4065
4253
|
action,
|
|
@@ -4073,16 +4261,16 @@ var NavSection = (0, import_react61.forwardRef)(function NavSection2({
|
|
|
4073
4261
|
...props
|
|
4074
4262
|
}, ref) {
|
|
4075
4263
|
const isControlled = open !== void 0;
|
|
4076
|
-
const [internalOpen, setInternalOpen] = (0,
|
|
4264
|
+
const [internalOpen, setInternalOpen] = (0, import_react62.useState)(defaultOpen);
|
|
4077
4265
|
const isOpen = !collapsible || (isControlled ? open : internalOpen);
|
|
4078
|
-
const toggle = (0,
|
|
4266
|
+
const toggle = (0, import_react62.useCallback)(() => {
|
|
4079
4267
|
const next = !isOpen;
|
|
4080
4268
|
if (!isControlled) setInternalOpen(next);
|
|
4081
4269
|
onOpenChange?.(next);
|
|
4082
4270
|
}, [isOpen, isControlled, onOpenChange]);
|
|
4083
4271
|
const eyebrowClass = "text-text-dim flex items-center gap-[6px] px-2 pt-2 font-mono text-[9px] tracking-[1.4px] uppercase";
|
|
4084
|
-
return /* @__PURE__ */ (0,
|
|
4085
|
-
collapsible ? /* @__PURE__ */ (0,
|
|
4272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
4273
|
+
collapsible ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
4086
4274
|
"button",
|
|
4087
4275
|
{
|
|
4088
4276
|
type: "button",
|
|
@@ -4095,18 +4283,18 @@ var NavSection = (0, import_react61.forwardRef)(function NavSection2({
|
|
|
4095
4283
|
"hover:text-text-muted"
|
|
4096
4284
|
),
|
|
4097
4285
|
children: [
|
|
4098
|
-
icon != null && /* @__PURE__ */ (0,
|
|
4099
|
-
/* @__PURE__ */ (0,
|
|
4286
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: icon }),
|
|
4287
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "flex-1 text-left", children: label }),
|
|
4100
4288
|
action,
|
|
4101
|
-
/* @__PURE__ */ (0,
|
|
4289
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-70", children: isOpen ? "\u25BE" : "\u25B8" })
|
|
4102
4290
|
]
|
|
4103
4291
|
}
|
|
4104
|
-
) : /* @__PURE__ */ (0,
|
|
4105
|
-
icon != null && /* @__PURE__ */ (0,
|
|
4106
|
-
/* @__PURE__ */ (0,
|
|
4292
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: eyebrowClass, children: [
|
|
4293
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: icon }),
|
|
4294
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "flex-1", children: label }),
|
|
4107
4295
|
action
|
|
4108
4296
|
] }),
|
|
4109
|
-
isOpen && /* @__PURE__ */ (0,
|
|
4297
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4110
4298
|
"div",
|
|
4111
4299
|
{
|
|
4112
4300
|
className: cn("flex flex-col gap-[2px]", indent > 0 && "border-border ml-2 border-l"),
|
|
@@ -4119,12 +4307,12 @@ var NavSection = (0, import_react61.forwardRef)(function NavSection2({
|
|
|
4119
4307
|
NavSection.displayName = "NavSection";
|
|
4120
4308
|
|
|
4121
4309
|
// src/patterns/NavBar/NavBar.tsx
|
|
4122
|
-
var
|
|
4310
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
4123
4311
|
function isActiveTree(item, activeId) {
|
|
4124
4312
|
if (item.id === activeId) return true;
|
|
4125
4313
|
return item.children?.some((c) => isActiveTree(c, activeId)) ?? false;
|
|
4126
4314
|
}
|
|
4127
|
-
var NavBar = (0,
|
|
4315
|
+
var NavBar = (0, import_react63.forwardRef)(function NavBar2({
|
|
4128
4316
|
orientation = "horizontal",
|
|
4129
4317
|
items,
|
|
4130
4318
|
brand,
|
|
@@ -4138,17 +4326,17 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4138
4326
|
...props
|
|
4139
4327
|
}, ref) {
|
|
4140
4328
|
const isControlled = value !== void 0;
|
|
4141
|
-
const [internalValue, setInternalValue] = (0,
|
|
4329
|
+
const [internalValue, setInternalValue] = (0, import_react63.useState)(defaultValue);
|
|
4142
4330
|
const activeId = isControlled ? value : internalValue;
|
|
4143
|
-
const [drawerOpen, setDrawerOpen] = (0,
|
|
4144
|
-
const select = (0,
|
|
4331
|
+
const [drawerOpen, setDrawerOpen] = (0, import_react63.useState)(false);
|
|
4332
|
+
const select = (0, import_react63.useCallback)(
|
|
4145
4333
|
(id) => {
|
|
4146
4334
|
if (!isControlled) setInternalValue(id);
|
|
4147
4335
|
onValueChange?.(id);
|
|
4148
4336
|
},
|
|
4149
4337
|
[isControlled, onValueChange]
|
|
4150
4338
|
);
|
|
4151
|
-
const handleItemActivate = (0,
|
|
4339
|
+
const handleItemActivate = (0, import_react63.useCallback)(
|
|
4152
4340
|
(id) => {
|
|
4153
4341
|
select(id);
|
|
4154
4342
|
setDrawerOpen(false);
|
|
@@ -4160,7 +4348,7 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4160
4348
|
// drawer is open on a viewport that's resizing past `md`, both navs can
|
|
4161
4349
|
// sit in the DOM together. Identical accessible names would trip axe's
|
|
4162
4350
|
// `landmark-unique` rule.
|
|
4163
|
-
/* @__PURE__ */ (0,
|
|
4351
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("nav", { "aria-label": "Mobile navigation", className: "flex flex-col gap-1", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4164
4352
|
VerticalItem,
|
|
4165
4353
|
{
|
|
4166
4354
|
item,
|
|
@@ -4170,14 +4358,14 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4170
4358
|
item.id
|
|
4171
4359
|
)) })
|
|
4172
4360
|
);
|
|
4173
|
-
const mobileBar = responsive ? /* @__PURE__ */ (0,
|
|
4361
|
+
const mobileBar = responsive ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4174
4362
|
"div",
|
|
4175
4363
|
{
|
|
4176
4364
|
className: cn(
|
|
4177
4365
|
"border-border bg-panel z-overlay sticky top-0 flex h-[52px] items-center gap-4 border-b px-5 md:hidden"
|
|
4178
4366
|
),
|
|
4179
4367
|
children: [
|
|
4180
|
-
/* @__PURE__ */ (0,
|
|
4368
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4181
4369
|
"button",
|
|
4182
4370
|
{
|
|
4183
4371
|
type: "button",
|
|
@@ -4187,15 +4375,15 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4187
4375
|
children: "\u2630"
|
|
4188
4376
|
}
|
|
4189
4377
|
),
|
|
4190
|
-
brand && /* @__PURE__ */ (0,
|
|
4191
|
-
actions && /* @__PURE__ */ (0,
|
|
4378
|
+
brand && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex flex-1 items-center text-[13px] font-medium whitespace-nowrap", children: brand }),
|
|
4379
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex items-center gap-3", children: actions })
|
|
4192
4380
|
]
|
|
4193
4381
|
}
|
|
4194
4382
|
) : null;
|
|
4195
4383
|
if (orientation === "horizontal") {
|
|
4196
|
-
return /* @__PURE__ */ (0,
|
|
4384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
4197
4385
|
mobileBar,
|
|
4198
|
-
/* @__PURE__ */ (0,
|
|
4386
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4199
4387
|
"header",
|
|
4200
4388
|
{
|
|
4201
4389
|
ref,
|
|
@@ -4206,10 +4394,10 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4206
4394
|
),
|
|
4207
4395
|
...props,
|
|
4208
4396
|
children: [
|
|
4209
|
-
brand && /* @__PURE__ */ (0,
|
|
4210
|
-
/* @__PURE__ */ (0,
|
|
4211
|
-
/* @__PURE__ */ (0,
|
|
4212
|
-
(item) => item.children?.length ? /* @__PURE__ */ (0,
|
|
4397
|
+
brand && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "shrink-0 text-[13px] font-medium whitespace-nowrap", children: brand }),
|
|
4398
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(RadixNav.Root, { className: "relative flex-1", delayDuration: 120, children: [
|
|
4399
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.List, { className: "m-0! flex list-none! items-center gap-1 p-0! [&_li]:m-0!", children: items.map(
|
|
4400
|
+
(item) => item.children?.length ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4213
4401
|
HorizontalDropdown,
|
|
4214
4402
|
{
|
|
4215
4403
|
item,
|
|
@@ -4218,7 +4406,7 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4218
4406
|
onActivate: handleItemActivate
|
|
4219
4407
|
},
|
|
4220
4408
|
item.id
|
|
4221
|
-
) : /* @__PURE__ */ (0,
|
|
4409
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4222
4410
|
HorizontalLink,
|
|
4223
4411
|
{
|
|
4224
4412
|
item,
|
|
@@ -4227,13 +4415,13 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4227
4415
|
}
|
|
4228
4416
|
) }, item.id)
|
|
4229
4417
|
) }),
|
|
4230
|
-
/* @__PURE__ */ (0,
|
|
4418
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "z-popover absolute top-full left-0 flex justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Viewport, { className: "origin-top-left data-[state=open]:animate-[ship-fade-in_120ms_var(--easing-out)]" }) })
|
|
4231
4419
|
] }),
|
|
4232
|
-
actions && /* @__PURE__ */ (0,
|
|
4420
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex items-center gap-3", children: actions })
|
|
4233
4421
|
]
|
|
4234
4422
|
}
|
|
4235
4423
|
),
|
|
4236
|
-
responsive && /* @__PURE__ */ (0,
|
|
4424
|
+
responsive && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4237
4425
|
Drawer,
|
|
4238
4426
|
{
|
|
4239
4427
|
open: drawerOpen,
|
|
@@ -4246,9 +4434,9 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4246
4434
|
)
|
|
4247
4435
|
] });
|
|
4248
4436
|
}
|
|
4249
|
-
return /* @__PURE__ */ (0,
|
|
4437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
4250
4438
|
mobileBar,
|
|
4251
|
-
/* @__PURE__ */ (0,
|
|
4439
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4252
4440
|
"aside",
|
|
4253
4441
|
{
|
|
4254
4442
|
ref,
|
|
@@ -4261,8 +4449,8 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4261
4449
|
),
|
|
4262
4450
|
...props,
|
|
4263
4451
|
children: [
|
|
4264
|
-
brand && /* @__PURE__ */ (0,
|
|
4265
|
-
/* @__PURE__ */ (0,
|
|
4452
|
+
brand && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "px-2 py-1 text-[13px] font-medium", children: brand }),
|
|
4453
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("nav", { "aria-label": "Sidebar navigation", className: "flex flex-1 flex-col gap-1 overflow-y-auto", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4266
4454
|
VerticalItem,
|
|
4267
4455
|
{
|
|
4268
4456
|
item,
|
|
@@ -4271,11 +4459,11 @@ var NavBar = (0, import_react62.forwardRef)(function NavBar2({
|
|
|
4271
4459
|
},
|
|
4272
4460
|
item.id
|
|
4273
4461
|
)) }),
|
|
4274
|
-
actions && /* @__PURE__ */ (0,
|
|
4462
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "border-border mt-auto flex flex-col gap-2 border-t pt-3", children: actions })
|
|
4275
4463
|
]
|
|
4276
4464
|
}
|
|
4277
4465
|
),
|
|
4278
|
-
responsive && /* @__PURE__ */ (0,
|
|
4466
|
+
responsive && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4279
4467
|
Drawer,
|
|
4280
4468
|
{
|
|
4281
4469
|
open: drawerOpen,
|
|
@@ -4304,13 +4492,13 @@ function HorizontalLink({ item, active, onActivate }) {
|
|
|
4304
4492
|
}
|
|
4305
4493
|
onActivate(item.id);
|
|
4306
4494
|
};
|
|
4307
|
-
const inner = /* @__PURE__ */ (0,
|
|
4308
|
-
item.icon != null && /* @__PURE__ */ (0,
|
|
4309
|
-
/* @__PURE__ */ (0,
|
|
4310
|
-
item.badge != null && /* @__PURE__ */ (0,
|
|
4495
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
4496
|
+
item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
|
|
4497
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: item.label }),
|
|
4498
|
+
item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ItemBadge, { active, children: item.badge })
|
|
4311
4499
|
] });
|
|
4312
4500
|
if (item.href) {
|
|
4313
|
-
return /* @__PURE__ */ (0,
|
|
4501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4314
4502
|
"a",
|
|
4315
4503
|
{
|
|
4316
4504
|
href: item.href,
|
|
@@ -4322,7 +4510,7 @@ function HorizontalLink({ item, active, onActivate }) {
|
|
|
4322
4510
|
}
|
|
4323
4511
|
) });
|
|
4324
4512
|
}
|
|
4325
|
-
return /* @__PURE__ */ (0,
|
|
4513
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4326
4514
|
"button",
|
|
4327
4515
|
{
|
|
4328
4516
|
type: "button",
|
|
@@ -4335,8 +4523,8 @@ function HorizontalLink({ item, active, onActivate }) {
|
|
|
4335
4523
|
) });
|
|
4336
4524
|
}
|
|
4337
4525
|
function HorizontalDropdown({ item, active, activeId, onActivate }) {
|
|
4338
|
-
return /* @__PURE__ */ (0,
|
|
4339
|
-
/* @__PURE__ */ (0,
|
|
4526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(RadixNav.Item, { children: [
|
|
4527
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4340
4528
|
RadixNav.Trigger,
|
|
4341
4529
|
{
|
|
4342
4530
|
className: cn(
|
|
@@ -4348,9 +4536,9 @@ function HorizontalDropdown({ item, active, activeId, onActivate }) {
|
|
|
4348
4536
|
),
|
|
4349
4537
|
disabled: item.disabled,
|
|
4350
4538
|
children: [
|
|
4351
|
-
item.icon != null && /* @__PURE__ */ (0,
|
|
4352
|
-
/* @__PURE__ */ (0,
|
|
4353
|
-
/* @__PURE__ */ (0,
|
|
4539
|
+
item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
|
|
4540
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: item.label }),
|
|
4541
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4354
4542
|
"span",
|
|
4355
4543
|
{
|
|
4356
4544
|
"aria-hidden": true,
|
|
@@ -4361,7 +4549,7 @@ function HorizontalDropdown({ item, active, activeId, onActivate }) {
|
|
|
4361
4549
|
]
|
|
4362
4550
|
}
|
|
4363
4551
|
),
|
|
4364
|
-
/* @__PURE__ */ (0,
|
|
4552
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Content, { className: "border-border bg-panel min-w-[220px] rounded-xs border p-2 shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("ul", { className: "m-0! flex list-none! flex-col gap-[2px] p-0! [&_li]:m-0!", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DropdownLink, { item: child, active: child.id === activeId, onActivate }) }, child.id)) }) })
|
|
4365
4553
|
] });
|
|
4366
4554
|
}
|
|
4367
4555
|
function DropdownLink({ item, active, onActivate }) {
|
|
@@ -4378,13 +4566,13 @@ function DropdownLink({ item, active, onActivate }) {
|
|
|
4378
4566
|
}
|
|
4379
4567
|
onActivate(item.id);
|
|
4380
4568
|
};
|
|
4381
|
-
const inner = /* @__PURE__ */ (0,
|
|
4382
|
-
item.icon != null && /* @__PURE__ */ (0,
|
|
4383
|
-
/* @__PURE__ */ (0,
|
|
4384
|
-
item.badge != null && /* @__PURE__ */ (0,
|
|
4569
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
4570
|
+
item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
|
|
4571
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "flex-1", children: item.label }),
|
|
4572
|
+
item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ItemBadge, { active, children: item.badge })
|
|
4385
4573
|
] });
|
|
4386
4574
|
if (item.href) {
|
|
4387
|
-
return /* @__PURE__ */ (0,
|
|
4575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4388
4576
|
"a",
|
|
4389
4577
|
{
|
|
4390
4578
|
href: item.href,
|
|
@@ -4396,7 +4584,7 @@ function DropdownLink({ item, active, onActivate }) {
|
|
|
4396
4584
|
}
|
|
4397
4585
|
) });
|
|
4398
4586
|
}
|
|
4399
|
-
return /* @__PURE__ */ (0,
|
|
4587
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4400
4588
|
"button",
|
|
4401
4589
|
{
|
|
4402
4590
|
type: "button",
|
|
@@ -4411,9 +4599,9 @@ function DropdownLink({ item, active, onActivate }) {
|
|
|
4411
4599
|
function VerticalItem({ item, activeId, onActivate }) {
|
|
4412
4600
|
const hasChildren = (item.children?.length ?? 0) > 0;
|
|
4413
4601
|
const treeActive = isActiveTree(item, activeId);
|
|
4414
|
-
const [open, setOpen] = (0,
|
|
4415
|
-
const prevTreeActive = (0,
|
|
4416
|
-
(0,
|
|
4602
|
+
const [open, setOpen] = (0, import_react63.useState)(treeActive);
|
|
4603
|
+
const prevTreeActive = (0, import_react63.useRef)(treeActive);
|
|
4604
|
+
(0, import_react63.useEffect)(() => {
|
|
4417
4605
|
if (treeActive && !prevTreeActive.current) setOpen(true);
|
|
4418
4606
|
prevTreeActive.current = treeActive;
|
|
4419
4607
|
}, [treeActive]);
|
|
@@ -4425,7 +4613,7 @@ function VerticalItem({ item, activeId, onActivate }) {
|
|
|
4425
4613
|
}
|
|
4426
4614
|
onActivate(item.id);
|
|
4427
4615
|
};
|
|
4428
|
-
return /* @__PURE__ */ (0,
|
|
4616
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4429
4617
|
NavItem,
|
|
4430
4618
|
{
|
|
4431
4619
|
icon: item.icon,
|
|
@@ -4438,8 +4626,8 @@ function VerticalItem({ item, activeId, onActivate }) {
|
|
|
4438
4626
|
}
|
|
4439
4627
|
);
|
|
4440
4628
|
}
|
|
4441
|
-
return /* @__PURE__ */ (0,
|
|
4442
|
-
/* @__PURE__ */ (0,
|
|
4629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex flex-col", children: [
|
|
4630
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4443
4631
|
"button",
|
|
4444
4632
|
{
|
|
4445
4633
|
type: "button",
|
|
@@ -4455,18 +4643,18 @@ function VerticalItem({ item, activeId, onActivate }) {
|
|
|
4455
4643
|
item.disabled && "pointer-events-none opacity-50"
|
|
4456
4644
|
),
|
|
4457
4645
|
children: [
|
|
4458
|
-
item.icon != null && /* @__PURE__ */ (0,
|
|
4459
|
-
/* @__PURE__ */ (0,
|
|
4460
|
-
item.badge != null && /* @__PURE__ */ (0,
|
|
4461
|
-
/* @__PURE__ */ (0,
|
|
4646
|
+
item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { "aria-hidden": true, className: "w-[14px] text-center opacity-80", children: item.icon }),
|
|
4647
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "flex-1 truncate", children: item.label }),
|
|
4648
|
+
item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ItemBadge, { active: treeActive, children: item.badge }),
|
|
4649
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-60", children: open ? "\u25BE" : "\u25B8" })
|
|
4462
4650
|
]
|
|
4463
4651
|
}
|
|
4464
4652
|
),
|
|
4465
|
-
open && /* @__PURE__ */ (0,
|
|
4653
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "border-border mt-1 ml-[18px] flex flex-col gap-[2px] border-l pl-3", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(VerticalItem, { item: child, activeId, onActivate }, child.id)) })
|
|
4466
4654
|
] });
|
|
4467
4655
|
}
|
|
4468
4656
|
function ItemBadge({ active, children }) {
|
|
4469
|
-
return /* @__PURE__ */ (0,
|
|
4657
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4470
4658
|
"span",
|
|
4471
4659
|
{
|
|
4472
4660
|
className: cn(
|
|
@@ -4479,8 +4667,8 @@ function ItemBadge({ active, children }) {
|
|
|
4479
4667
|
}
|
|
4480
4668
|
|
|
4481
4669
|
// src/patterns/OnboardingChecklist/OnboardingChecklist.tsx
|
|
4482
|
-
var
|
|
4483
|
-
var
|
|
4670
|
+
var import_react64 = require("react");
|
|
4671
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
4484
4672
|
var statusDot = {
|
|
4485
4673
|
pending: "off",
|
|
4486
4674
|
"in-progress": "sync",
|
|
@@ -4491,11 +4679,11 @@ var labelStateClass = {
|
|
|
4491
4679
|
"in-progress": "text-text",
|
|
4492
4680
|
done: "text-text-dim line-through"
|
|
4493
4681
|
};
|
|
4494
|
-
var OnboardingChecklist = (0,
|
|
4682
|
+
var OnboardingChecklist = (0, import_react64.forwardRef)(
|
|
4495
4683
|
function OnboardingChecklist2({ items, onItemClick, title = "Get started", progressLabel, hideProgress, className, ...props }, ref) {
|
|
4496
4684
|
const total = items.length;
|
|
4497
4685
|
const done = items.filter((i) => i.status === "done").length;
|
|
4498
|
-
return /* @__PURE__ */ (0,
|
|
4686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
4499
4687
|
"section",
|
|
4500
4688
|
{
|
|
4501
4689
|
ref,
|
|
@@ -4506,11 +4694,11 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4506
4694
|
),
|
|
4507
4695
|
...props,
|
|
4508
4696
|
children: [
|
|
4509
|
-
/* @__PURE__ */ (0,
|
|
4510
|
-
/* @__PURE__ */ (0,
|
|
4511
|
-
/* @__PURE__ */ (0,
|
|
4697
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("header", { className: "flex items-center gap-2", children: [
|
|
4698
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[14px] font-medium", children: title }),
|
|
4699
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-text-dim ml-auto font-mono text-[11px] tabular-nums", children: progressLabel ?? `${done} of ${total} complete` })
|
|
4512
4700
|
] }),
|
|
4513
|
-
!hideProgress && total > 0 && /* @__PURE__ */ (0,
|
|
4701
|
+
!hideProgress && total > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4514
4702
|
"div",
|
|
4515
4703
|
{
|
|
4516
4704
|
role: "progressbar",
|
|
@@ -4519,7 +4707,7 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4519
4707
|
"aria-valuenow": done,
|
|
4520
4708
|
"aria-label": typeof title === "string" ? `${title} progress` : "Setup progress",
|
|
4521
4709
|
className: "bg-panel-2 h-[3px] w-full overflow-hidden rounded-full",
|
|
4522
|
-
children: /* @__PURE__ */ (0,
|
|
4710
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4523
4711
|
"span",
|
|
4524
4712
|
{
|
|
4525
4713
|
"aria-hidden": true,
|
|
@@ -4532,10 +4720,10 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4532
4720
|
)
|
|
4533
4721
|
}
|
|
4534
4722
|
),
|
|
4535
|
-
/* @__PURE__ */ (0,
|
|
4723
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("ul", { className: "m-0 flex list-none flex-col gap-1 p-0", children: items.map((item) => {
|
|
4536
4724
|
const interactive = typeof onItemClick === "function";
|
|
4537
|
-
const labelBlock = /* @__PURE__ */ (0,
|
|
4538
|
-
/* @__PURE__ */ (0,
|
|
4725
|
+
const labelBlock = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
4726
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4539
4727
|
StatusDot,
|
|
4540
4728
|
{
|
|
4541
4729
|
state: statusDot[item.status],
|
|
@@ -4544,17 +4732,17 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4544
4732
|
className: "mt-[3px]"
|
|
4545
4733
|
}
|
|
4546
4734
|
),
|
|
4547
|
-
/* @__PURE__ */ (0,
|
|
4548
|
-
/* @__PURE__ */ (0,
|
|
4549
|
-
item.description && /* @__PURE__ */ (0,
|
|
4735
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-[2px]", children: [
|
|
4736
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: cn("text-[13px]", labelStateClass[item.status]), children: item.label }),
|
|
4737
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-text-muted text-[12px] leading-[1.45]", children: item.description })
|
|
4550
4738
|
] })
|
|
4551
4739
|
] });
|
|
4552
4740
|
const labelRegionClass = cn(
|
|
4553
4741
|
"flex flex-1 items-start gap-3 rounded-md px-2 py-2 text-left transition-colors duration-(--duration-micro)",
|
|
4554
4742
|
interactive && "cursor-pointer outline-none hover:bg-panel-2 focus-visible:ring-[3px] focus-visible:ring-accent-dim"
|
|
4555
4743
|
);
|
|
4556
|
-
return /* @__PURE__ */ (0,
|
|
4557
|
-
interactive ? /* @__PURE__ */ (0,
|
|
4744
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("li", { className: "flex items-start gap-2", children: [
|
|
4745
|
+
interactive ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4558
4746
|
"button",
|
|
4559
4747
|
{
|
|
4560
4748
|
type: "button",
|
|
@@ -4563,8 +4751,8 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4563
4751
|
className: labelRegionClass,
|
|
4564
4752
|
children: labelBlock
|
|
4565
4753
|
}
|
|
4566
|
-
) : /* @__PURE__ */ (0,
|
|
4567
|
-
item.action && /* @__PURE__ */ (0,
|
|
4754
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: labelRegionClass, children: labelBlock }),
|
|
4755
|
+
item.action && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "shrink-0 self-center", children: item.action })
|
|
4568
4756
|
] }, item.id);
|
|
4569
4757
|
}) })
|
|
4570
4758
|
]
|
|
@@ -4575,8 +4763,8 @@ var OnboardingChecklist = (0, import_react63.forwardRef)(
|
|
|
4575
4763
|
OnboardingChecklist.displayName = "OnboardingChecklist";
|
|
4576
4764
|
|
|
4577
4765
|
// src/patterns/Pagination/Pagination.tsx
|
|
4578
|
-
var
|
|
4579
|
-
var
|
|
4766
|
+
var import_react65 = require("react");
|
|
4767
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
4580
4768
|
function buildRange(page, total, siblings) {
|
|
4581
4769
|
if (total <= 0) return [];
|
|
4582
4770
|
const items = [];
|
|
@@ -4589,9 +4777,9 @@ function buildRange(page, total, siblings) {
|
|
|
4589
4777
|
if (total > 1) items.push(total);
|
|
4590
4778
|
return items;
|
|
4591
4779
|
}
|
|
4592
|
-
var Pagination = (0,
|
|
4780
|
+
var Pagination = (0, import_react65.forwardRef)(function Pagination2({ page, total, onPageChange, siblings = 1, className, ...props }, ref) {
|
|
4593
4781
|
const items = buildRange(page, total, siblings);
|
|
4594
|
-
return /* @__PURE__ */ (0,
|
|
4782
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
4595
4783
|
"nav",
|
|
4596
4784
|
{
|
|
4597
4785
|
ref,
|
|
@@ -4599,7 +4787,7 @@ var Pagination = (0, import_react64.forwardRef)(function Pagination2({ page, tot
|
|
|
4599
4787
|
className: cn("inline-flex items-center gap-1", className),
|
|
4600
4788
|
...props,
|
|
4601
4789
|
children: [
|
|
4602
|
-
/* @__PURE__ */ (0,
|
|
4790
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
4603
4791
|
IconButton,
|
|
4604
4792
|
{
|
|
4605
4793
|
size: "sm",
|
|
@@ -4612,7 +4800,7 @@ var Pagination = (0, import_react64.forwardRef)(function Pagination2({ page, tot
|
|
|
4612
4800
|
),
|
|
4613
4801
|
items.map((item, i) => {
|
|
4614
4802
|
if (item === "start-ellipsis" || item === "end-ellipsis") {
|
|
4615
|
-
return /* @__PURE__ */ (0,
|
|
4803
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
4616
4804
|
"span",
|
|
4617
4805
|
{
|
|
4618
4806
|
"aria-hidden": true,
|
|
@@ -4623,7 +4811,7 @@ var Pagination = (0, import_react64.forwardRef)(function Pagination2({ page, tot
|
|
|
4623
4811
|
);
|
|
4624
4812
|
}
|
|
4625
4813
|
const isActive = item === page;
|
|
4626
|
-
return /* @__PURE__ */ (0,
|
|
4814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
4627
4815
|
"button",
|
|
4628
4816
|
{
|
|
4629
4817
|
type: "button",
|
|
@@ -4641,7 +4829,7 @@ var Pagination = (0, import_react64.forwardRef)(function Pagination2({ page, tot
|
|
|
4641
4829
|
item
|
|
4642
4830
|
);
|
|
4643
4831
|
}),
|
|
4644
|
-
/* @__PURE__ */ (0,
|
|
4832
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
4645
4833
|
IconButton,
|
|
4646
4834
|
{
|
|
4647
4835
|
size: "sm",
|
|
@@ -4659,10 +4847,10 @@ var Pagination = (0, import_react64.forwardRef)(function Pagination2({ page, tot
|
|
|
4659
4847
|
Pagination.displayName = "Pagination";
|
|
4660
4848
|
|
|
4661
4849
|
// src/patterns/Progress/Progress.tsx
|
|
4662
|
-
var
|
|
4663
|
-
var
|
|
4664
|
-
var
|
|
4665
|
-
var trackStyles = (0,
|
|
4850
|
+
var import_class_variance_authority12 = require("class-variance-authority");
|
|
4851
|
+
var import_react66 = require("react");
|
|
4852
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
4853
|
+
var trackStyles = (0, import_class_variance_authority12.cva)("w-full rounded-full bg-panel-2 overflow-hidden", {
|
|
4666
4854
|
variants: {
|
|
4667
4855
|
size: {
|
|
4668
4856
|
sm: "h-[3px]",
|
|
@@ -4672,7 +4860,7 @@ var trackStyles = (0, import_class_variance_authority11.cva)("w-full rounded-ful
|
|
|
4672
4860
|
},
|
|
4673
4861
|
defaultVariants: { size: "md" }
|
|
4674
4862
|
});
|
|
4675
|
-
var fillStyles = (0,
|
|
4863
|
+
var fillStyles = (0, import_class_variance_authority12.cva)("h-full rounded-full transition-[width] duration-(--duration-step)", {
|
|
4676
4864
|
variants: {
|
|
4677
4865
|
tone: {
|
|
4678
4866
|
accent: "bg-accent",
|
|
@@ -4683,7 +4871,7 @@ var fillStyles = (0, import_class_variance_authority11.cva)("h-full rounded-full
|
|
|
4683
4871
|
},
|
|
4684
4872
|
defaultVariants: { tone: "accent" }
|
|
4685
4873
|
});
|
|
4686
|
-
var Progress = (0,
|
|
4874
|
+
var Progress = (0, import_react66.forwardRef)(function Progress2({
|
|
4687
4875
|
value = 0,
|
|
4688
4876
|
max = 100,
|
|
4689
4877
|
indeterminate = false,
|
|
@@ -4697,15 +4885,15 @@ var Progress = (0, import_react65.forwardRef)(function Progress2({
|
|
|
4697
4885
|
const clamped = Math.min(max, Math.max(0, value));
|
|
4698
4886
|
const pct = max > 0 ? clamped / max * 100 : 0;
|
|
4699
4887
|
const display = Math.round(pct);
|
|
4700
|
-
return /* @__PURE__ */ (0,
|
|
4701
|
-
label != null && /* @__PURE__ */ (0,
|
|
4702
|
-
/* @__PURE__ */ (0,
|
|
4703
|
-
showValue && !indeterminate && /* @__PURE__ */ (0,
|
|
4888
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { ref, className: cn("flex w-full flex-col gap-2", className), ...props, children: [
|
|
4889
|
+
label != null && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex text-[12px]", children: [
|
|
4890
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "text-text-muted", children: label }),
|
|
4891
|
+
showValue && !indeterminate && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: "text-text ml-auto font-mono tabular-nums", children: [
|
|
4704
4892
|
display,
|
|
4705
4893
|
"%"
|
|
4706
4894
|
] })
|
|
4707
4895
|
] }),
|
|
4708
|
-
/* @__PURE__ */ (0,
|
|
4896
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
4709
4897
|
"div",
|
|
4710
4898
|
{
|
|
4711
4899
|
role: "progressbar",
|
|
@@ -4714,7 +4902,7 @@ var Progress = (0, import_react65.forwardRef)(function Progress2({
|
|
|
4714
4902
|
"aria-valuenow": indeterminate ? void 0 : display,
|
|
4715
4903
|
"aria-label": typeof label === "string" ? label : void 0,
|
|
4716
4904
|
className: trackStyles({ size }),
|
|
4717
|
-
children: indeterminate ? /* @__PURE__ */ (0,
|
|
4905
|
+
children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
4718
4906
|
"span",
|
|
4719
4907
|
{
|
|
4720
4908
|
"aria-hidden": true,
|
|
@@ -4724,7 +4912,7 @@ var Progress = (0, import_react65.forwardRef)(function Progress2({
|
|
|
4724
4912
|
"animate-[ship-indeterminate_1.4s_linear_infinite]"
|
|
4725
4913
|
)
|
|
4726
4914
|
}
|
|
4727
|
-
) : /* @__PURE__ */ (0,
|
|
4915
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { "aria-hidden": true, className: fillStyles({ tone }), style: { width: `${pct}%` } })
|
|
4728
4916
|
}
|
|
4729
4917
|
)
|
|
4730
4918
|
] });
|
|
@@ -4732,18 +4920,18 @@ var Progress = (0, import_react65.forwardRef)(function Progress2({
|
|
|
4732
4920
|
Progress.displayName = "Progress";
|
|
4733
4921
|
|
|
4734
4922
|
// src/patterns/PullToRefresh/PullToRefresh.tsx
|
|
4735
|
-
var
|
|
4736
|
-
var
|
|
4923
|
+
var import_react67 = require("react");
|
|
4924
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
4737
4925
|
var labels = {
|
|
4738
4926
|
idle: "Pull to refresh",
|
|
4739
4927
|
pulling: "Pull to refresh",
|
|
4740
4928
|
ready: "Release to refresh",
|
|
4741
4929
|
loading: "Refreshing\u2026"
|
|
4742
4930
|
};
|
|
4743
|
-
var PullToRefresh = (0,
|
|
4931
|
+
var PullToRefresh = (0, import_react67.forwardRef)(function PullToRefresh2({ state = "idle", label, className, ...props }, ref) {
|
|
4744
4932
|
const isLoading = state === "loading";
|
|
4745
4933
|
const transform = state === "ready" ? "rotate(180deg)" : state === "pulling" ? "rotate(90deg)" : "rotate(0deg)";
|
|
4746
|
-
return /* @__PURE__ */ (0,
|
|
4934
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
4747
4935
|
"div",
|
|
4748
4936
|
{
|
|
4749
4937
|
ref,
|
|
@@ -4753,7 +4941,7 @@ var PullToRefresh = (0, import_react66.forwardRef)(function PullToRefresh2({ sta
|
|
|
4753
4941
|
className: cn("text-text-muted flex flex-col items-center gap-[6px] py-3", className),
|
|
4754
4942
|
...props,
|
|
4755
4943
|
children: [
|
|
4756
|
-
/* @__PURE__ */ (0,
|
|
4944
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
4757
4945
|
"div",
|
|
4758
4946
|
{
|
|
4759
4947
|
"aria-hidden": true,
|
|
@@ -4769,7 +4957,7 @@ var PullToRefresh = (0, import_react66.forwardRef)(function PullToRefresh2({ sta
|
|
|
4769
4957
|
}
|
|
4770
4958
|
}
|
|
4771
4959
|
),
|
|
4772
|
-
/* @__PURE__ */ (0,
|
|
4960
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-m-eyebrow font-mono tracking-wide uppercase", children: label ?? labels[state] })
|
|
4773
4961
|
]
|
|
4774
4962
|
}
|
|
4775
4963
|
);
|
|
@@ -4777,8 +4965,8 @@ var PullToRefresh = (0, import_react66.forwardRef)(function PullToRefresh2({ sta
|
|
|
4777
4965
|
PullToRefresh.displayName = "PullToRefresh";
|
|
4778
4966
|
|
|
4779
4967
|
// src/patterns/Sparkline/Sparkline.tsx
|
|
4780
|
-
var
|
|
4781
|
-
var
|
|
4968
|
+
var import_react68 = require("react");
|
|
4969
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
4782
4970
|
function buildPath(values, w, h) {
|
|
4783
4971
|
if (values.length === 0) return { line: "", area: "" };
|
|
4784
4972
|
const pad = 2;
|
|
@@ -4797,7 +4985,7 @@ function buildPath(values, w, h) {
|
|
|
4797
4985
|
)} L${pad.toFixed(2)},${(h - pad).toFixed(2)} Z`;
|
|
4798
4986
|
return { line, area };
|
|
4799
4987
|
}
|
|
4800
|
-
var Sparkline = (0,
|
|
4988
|
+
var Sparkline = (0, import_react68.forwardRef)(function Sparkline2({
|
|
4801
4989
|
values,
|
|
4802
4990
|
width = 160,
|
|
4803
4991
|
height = 32,
|
|
@@ -4808,8 +4996,8 @@ var Sparkline = (0, import_react67.forwardRef)(function Sparkline2({
|
|
|
4808
4996
|
"aria-label": ariaLabel = "Trend",
|
|
4809
4997
|
...props
|
|
4810
4998
|
}, ref) {
|
|
4811
|
-
const { line, area } = (0,
|
|
4812
|
-
return /* @__PURE__ */ (0,
|
|
4999
|
+
const { line, area } = (0, import_react68.useMemo)(() => buildPath(values, width, height), [values, width, height]);
|
|
5000
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
4813
5001
|
"svg",
|
|
4814
5002
|
{
|
|
4815
5003
|
ref,
|
|
@@ -4821,8 +5009,8 @@ var Sparkline = (0, import_react67.forwardRef)(function Sparkline2({
|
|
|
4821
5009
|
className: cn("inline-block", className),
|
|
4822
5010
|
...props,
|
|
4823
5011
|
children: [
|
|
4824
|
-
fill && /* @__PURE__ */ (0,
|
|
4825
|
-
/* @__PURE__ */ (0,
|
|
5012
|
+
fill && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("path", { d: area, fill: stroke, fillOpacity: 0.16, stroke: "none" }),
|
|
5013
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
4826
5014
|
"path",
|
|
4827
5015
|
{
|
|
4828
5016
|
d: line,
|
|
@@ -4840,16 +5028,16 @@ var Sparkline = (0, import_react67.forwardRef)(function Sparkline2({
|
|
|
4840
5028
|
Sparkline.displayName = "Sparkline";
|
|
4841
5029
|
|
|
4842
5030
|
// src/patterns/Spinner/Spinner.tsx
|
|
4843
|
-
var
|
|
4844
|
-
var
|
|
5031
|
+
var import_react69 = require("react");
|
|
5032
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
4845
5033
|
var sizes = {
|
|
4846
5034
|
sm: { box: "h-3 w-3", border: "border-[2px]" },
|
|
4847
5035
|
md: { box: "h-4 w-4", border: "border-[2px]" },
|
|
4848
5036
|
lg: { box: "h-5 w-5", border: "border-[2px]" }
|
|
4849
5037
|
};
|
|
4850
|
-
var Spinner2 = (0,
|
|
5038
|
+
var Spinner2 = (0, import_react69.forwardRef)(function Spinner3({ size = "md", label = "Loading", className, ...props }, ref) {
|
|
4851
5039
|
const s = sizes[size];
|
|
4852
|
-
return /* @__PURE__ */ (0,
|
|
5040
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4853
5041
|
"span",
|
|
4854
5042
|
{
|
|
4855
5043
|
ref,
|
|
@@ -4857,7 +5045,7 @@ var Spinner2 = (0, import_react68.forwardRef)(function Spinner3({ size = "md", l
|
|
|
4857
5045
|
"aria-label": label,
|
|
4858
5046
|
className: cn("inline-block", className),
|
|
4859
5047
|
...props,
|
|
4860
|
-
children: /* @__PURE__ */ (0,
|
|
5048
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
4861
5049
|
"span",
|
|
4862
5050
|
{
|
|
4863
5051
|
"aria-hidden": true,
|
|
@@ -4874,8 +5062,8 @@ var Spinner2 = (0, import_react68.forwardRef)(function Spinner3({ size = "md", l
|
|
|
4874
5062
|
Spinner2.displayName = "Spinner";
|
|
4875
5063
|
|
|
4876
5064
|
// src/patterns/Stepper/Stepper.tsx
|
|
4877
|
-
var
|
|
4878
|
-
var
|
|
5065
|
+
var import_react70 = require("react");
|
|
5066
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
4879
5067
|
var dotBase = "h-6 w-6 rounded-full grid place-items-center text-[11px] font-mono font-semibold border";
|
|
4880
5068
|
var dotStateClass = {
|
|
4881
5069
|
done: "bg-accent text-on-accent border-accent",
|
|
@@ -4892,8 +5080,8 @@ function stateFor(index, current) {
|
|
|
4892
5080
|
if (index === current) return "current";
|
|
4893
5081
|
return "upcoming";
|
|
4894
5082
|
}
|
|
4895
|
-
var Stepper = (0,
|
|
4896
|
-
return /* @__PURE__ */ (0,
|
|
5083
|
+
var Stepper = (0, import_react70.forwardRef)(function Stepper2({ steps, current, className, ...props }, ref) {
|
|
5084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
4897
5085
|
"ol",
|
|
4898
5086
|
{
|
|
4899
5087
|
ref,
|
|
@@ -4905,19 +5093,19 @@ var Stepper = (0, import_react69.forwardRef)(function Stepper2({ steps, current,
|
|
|
4905
5093
|
const id = typeof step === "string" ? void 0 : step.id;
|
|
4906
5094
|
const state = stateFor(i, current);
|
|
4907
5095
|
const connectorActive = i < current;
|
|
4908
|
-
return /* @__PURE__ */ (0,
|
|
4909
|
-
/* @__PURE__ */ (0,
|
|
5096
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react70.Fragment, { children: [
|
|
5097
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
4910
5098
|
"li",
|
|
4911
5099
|
{
|
|
4912
5100
|
"aria-current": state === "current" ? "step" : void 0,
|
|
4913
5101
|
className: "flex items-center gap-2",
|
|
4914
5102
|
children: [
|
|
4915
|
-
/* @__PURE__ */ (0,
|
|
4916
|
-
/* @__PURE__ */ (0,
|
|
5103
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { "aria-hidden": true, className: cn(dotBase, dotStateClass[state]), children: state === "done" ? "\u2713" : i + 1 }),
|
|
5104
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: cn("text-[12px]", labelStateClass2[state]), children: label })
|
|
4917
5105
|
]
|
|
4918
5106
|
}
|
|
4919
5107
|
),
|
|
4920
|
-
i < steps.length - 1 && /* @__PURE__ */ (0,
|
|
5108
|
+
i < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
4921
5109
|
"span",
|
|
4922
5110
|
{
|
|
4923
5111
|
"aria-hidden": true,
|
|
@@ -4932,13 +5120,13 @@ var Stepper = (0, import_react69.forwardRef)(function Stepper2({ steps, current,
|
|
|
4932
5120
|
Stepper.displayName = "Stepper";
|
|
4933
5121
|
|
|
4934
5122
|
// src/patterns/TabBar/TabBar.tsx
|
|
4935
|
-
var
|
|
4936
|
-
var
|
|
4937
|
-
var TabBar = (0,
|
|
5123
|
+
var import_react71 = require("react");
|
|
5124
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
5125
|
+
var TabBar = (0, import_react71.forwardRef)(function TabBar2({ items, value, defaultValue, onValueChange, className, ...props }, ref) {
|
|
4938
5126
|
const isControlled = value !== void 0;
|
|
4939
|
-
const [internalValue, setInternalValue] = (0,
|
|
5127
|
+
const [internalValue, setInternalValue] = (0, import_react71.useState)(defaultValue);
|
|
4940
5128
|
const activeId = isControlled ? value : internalValue;
|
|
4941
|
-
const handleSelect = (0,
|
|
5129
|
+
const handleSelect = (0, import_react71.useCallback)(
|
|
4942
5130
|
(id, e) => {
|
|
4943
5131
|
if (!isControlled) setInternalValue(id);
|
|
4944
5132
|
onValueChange?.(id);
|
|
@@ -4946,7 +5134,7 @@ var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, def
|
|
|
4946
5134
|
},
|
|
4947
5135
|
[isControlled, onValueChange]
|
|
4948
5136
|
);
|
|
4949
|
-
return /* @__PURE__ */ (0,
|
|
5137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
4950
5138
|
"nav",
|
|
4951
5139
|
{
|
|
4952
5140
|
ref,
|
|
@@ -4961,7 +5149,7 @@ var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, def
|
|
|
4961
5149
|
children: items.map((item) => {
|
|
4962
5150
|
const isActive = item.id === activeId;
|
|
4963
5151
|
if (item.elevated) {
|
|
4964
|
-
return /* @__PURE__ */ (0,
|
|
5152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "grid place-items-center", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
4965
5153
|
"button",
|
|
4966
5154
|
{
|
|
4967
5155
|
type: "button",
|
|
@@ -4977,13 +5165,13 @@ var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, def
|
|
|
4977
5165
|
"disabled:cursor-not-allowed disabled:opacity-40"
|
|
4978
5166
|
),
|
|
4979
5167
|
children: [
|
|
4980
|
-
/* @__PURE__ */ (0,
|
|
4981
|
-
/* @__PURE__ */ (0,
|
|
5168
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { "aria-hidden": true, children: item.icon }),
|
|
5169
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "sr-only", children: item.label })
|
|
4982
5170
|
]
|
|
4983
5171
|
}
|
|
4984
5172
|
) }, item.id);
|
|
4985
5173
|
}
|
|
4986
|
-
return /* @__PURE__ */ (0,
|
|
5174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
4987
5175
|
"button",
|
|
4988
5176
|
{
|
|
4989
5177
|
type: "button",
|
|
@@ -4998,9 +5186,9 @@ var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, def
|
|
|
4998
5186
|
isActive ? "text-accent-text" : "text-text-muted hover:text-text"
|
|
4999
5187
|
),
|
|
5000
5188
|
children: [
|
|
5001
|
-
/* @__PURE__ */ (0,
|
|
5189
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "relative inline-flex", "aria-hidden": true, children: [
|
|
5002
5190
|
item.icon,
|
|
5003
|
-
item.badge != null && /* @__PURE__ */ (0,
|
|
5191
|
+
item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
5004
5192
|
"span",
|
|
5005
5193
|
{
|
|
5006
5194
|
className: cn(
|
|
@@ -5011,9 +5199,9 @@ var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, def
|
|
|
5011
5199
|
}
|
|
5012
5200
|
)
|
|
5013
5201
|
] }),
|
|
5014
|
-
/* @__PURE__ */ (0,
|
|
5202
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "text-[10px] font-medium tracking-tight", children: [
|
|
5015
5203
|
item.label,
|
|
5016
|
-
item.badge != null && /* @__PURE__ */ (0,
|
|
5204
|
+
item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "sr-only", children: [
|
|
5017
5205
|
", ",
|
|
5018
5206
|
item.badge,
|
|
5019
5207
|
" unread"
|
|
@@ -5031,11 +5219,11 @@ TabBar.displayName = "TabBar";
|
|
|
5031
5219
|
|
|
5032
5220
|
// src/patterns/Tabs/Tabs.tsx
|
|
5033
5221
|
var RadixTabs = __toESM(require("@radix-ui/react-tabs"), 1);
|
|
5034
|
-
var
|
|
5035
|
-
var
|
|
5036
|
-
var
|
|
5037
|
-
var TabsVariantContext = (0,
|
|
5038
|
-
var tabsListStyles = (0,
|
|
5222
|
+
var import_class_variance_authority13 = require("class-variance-authority");
|
|
5223
|
+
var import_react72 = require("react");
|
|
5224
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
5225
|
+
var TabsVariantContext = (0, import_react72.createContext)("underline");
|
|
5226
|
+
var tabsListStyles = (0, import_class_variance_authority13.cva)("", {
|
|
5039
5227
|
variants: {
|
|
5040
5228
|
variant: {
|
|
5041
5229
|
underline: "flex gap-6 border-b border-border",
|
|
@@ -5043,7 +5231,7 @@ var tabsListStyles = (0, import_class_variance_authority12.cva)("", {
|
|
|
5043
5231
|
}
|
|
5044
5232
|
}
|
|
5045
5233
|
});
|
|
5046
|
-
var tabsTriggerStyles = (0,
|
|
5234
|
+
var tabsTriggerStyles = (0, import_class_variance_authority13.cva)(
|
|
5047
5235
|
"cursor-pointer outline-none transition-colors duration-(--duration-micro) focus-visible:ring-[3px] focus-visible:ring-accent-dim",
|
|
5048
5236
|
{
|
|
5049
5237
|
variants: {
|
|
@@ -5064,8 +5252,8 @@ var tabsTriggerStyles = (0, import_class_variance_authority12.cva)(
|
|
|
5064
5252
|
}
|
|
5065
5253
|
}
|
|
5066
5254
|
);
|
|
5067
|
-
var Tabs = (0,
|
|
5068
|
-
return /* @__PURE__ */ (0,
|
|
5255
|
+
var Tabs = (0, import_react72.forwardRef)(function Tabs2({ variant = "underline", className, ...props }, ref) {
|
|
5256
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(TabsVariantContext.Provider, { value: variant, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
5069
5257
|
RadixTabs.Root,
|
|
5070
5258
|
{
|
|
5071
5259
|
ref,
|
|
@@ -5075,14 +5263,14 @@ var Tabs = (0, import_react71.forwardRef)(function Tabs2({ variant = "underline"
|
|
|
5075
5263
|
) });
|
|
5076
5264
|
});
|
|
5077
5265
|
Tabs.displayName = "Tabs";
|
|
5078
|
-
var TabsList = (0,
|
|
5079
|
-
const variant = (0,
|
|
5080
|
-
return /* @__PURE__ */ (0,
|
|
5266
|
+
var TabsList = (0, import_react72.forwardRef)(function TabsList2({ className, ...props }, ref) {
|
|
5267
|
+
const variant = (0, import_react72.useContext)(TabsVariantContext);
|
|
5268
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(RadixTabs.List, { ref, className: cn(tabsListStyles({ variant }), className), ...props });
|
|
5081
5269
|
});
|
|
5082
5270
|
TabsList.displayName = "TabsList";
|
|
5083
|
-
var Tab = (0,
|
|
5084
|
-
const variant = (0,
|
|
5085
|
-
return /* @__PURE__ */ (0,
|
|
5271
|
+
var Tab = (0, import_react72.forwardRef)(function Tab2({ className, ...props }, ref) {
|
|
5272
|
+
const variant = (0, import_react72.useContext)(TabsVariantContext);
|
|
5273
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
5086
5274
|
RadixTabs.Trigger,
|
|
5087
5275
|
{
|
|
5088
5276
|
ref,
|
|
@@ -5092,9 +5280,9 @@ var Tab = (0, import_react71.forwardRef)(function Tab2({ className, ...props },
|
|
|
5092
5280
|
);
|
|
5093
5281
|
});
|
|
5094
5282
|
Tab.displayName = "Tab";
|
|
5095
|
-
var TabsContent = (0,
|
|
5283
|
+
var TabsContent = (0, import_react72.forwardRef)(
|
|
5096
5284
|
function TabsContent2({ className, ...props }, ref) {
|
|
5097
|
-
return /* @__PURE__ */ (0,
|
|
5285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
5098
5286
|
RadixTabs.Content,
|
|
5099
5287
|
{
|
|
5100
5288
|
ref,
|
|
@@ -5110,8 +5298,8 @@ var TabsContent = (0, import_react71.forwardRef)(
|
|
|
5110
5298
|
TabsContent.displayName = "TabsContent";
|
|
5111
5299
|
|
|
5112
5300
|
// src/patterns/Timeline/Timeline.tsx
|
|
5113
|
-
var
|
|
5114
|
-
var
|
|
5301
|
+
var import_react73 = require("react");
|
|
5302
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
5115
5303
|
var ringClass = {
|
|
5116
5304
|
accent: "border-accent",
|
|
5117
5305
|
ok: "border-ok",
|
|
@@ -5119,8 +5307,8 @@ var ringClass = {
|
|
|
5119
5307
|
err: "border-err",
|
|
5120
5308
|
muted: "border-text-dim"
|
|
5121
5309
|
};
|
|
5122
|
-
var Timeline = (0,
|
|
5123
|
-
return /* @__PURE__ */ (0,
|
|
5310
|
+
var Timeline = (0, import_react73.forwardRef)(function Timeline2({ events, className, children, ...props }, ref) {
|
|
5311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
5124
5312
|
"ol",
|
|
5125
5313
|
{
|
|
5126
5314
|
ref,
|
|
@@ -5130,14 +5318,14 @@ var Timeline = (0, import_react72.forwardRef)(function Timeline2({ events, class
|
|
|
5130
5318
|
className
|
|
5131
5319
|
),
|
|
5132
5320
|
...props,
|
|
5133
|
-
children: events ? events.map((e, i) => /* @__PURE__ */ (0,
|
|
5321
|
+
children: events ? events.map((e, i) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(TimelineItem, { tone: e.tone, time: e.time, description: e.description, children: e.title }, i)) : children
|
|
5134
5322
|
}
|
|
5135
5323
|
);
|
|
5136
5324
|
});
|
|
5137
5325
|
Timeline.displayName = "Timeline";
|
|
5138
|
-
var TimelineItem = (0,
|
|
5139
|
-
return /* @__PURE__ */ (0,
|
|
5140
|
-
/* @__PURE__ */ (0,
|
|
5326
|
+
var TimelineItem = (0, import_react73.forwardRef)(function TimelineItem2({ tone = "accent", description, time, className, children, ...props }, ref) {
|
|
5327
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("li", { ref, className: cn("relative mb-[18px] last:mb-0", className), ...props, children: [
|
|
5328
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
5141
5329
|
"span",
|
|
5142
5330
|
{
|
|
5143
5331
|
"aria-hidden": true,
|
|
@@ -5147,15 +5335,15 @@ var TimelineItem = (0, import_react72.forwardRef)(function TimelineItem2({ tone
|
|
|
5147
5335
|
)
|
|
5148
5336
|
}
|
|
5149
5337
|
),
|
|
5150
|
-
/* @__PURE__ */ (0,
|
|
5151
|
-
description && /* @__PURE__ */ (0,
|
|
5152
|
-
time && /* @__PURE__ */ (0,
|
|
5338
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-[13px] font-medium", children }),
|
|
5339
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-text-muted text-[12px]", children: description }),
|
|
5340
|
+
time && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-text-dim mt-[2px] font-mono text-[10px]", children: time })
|
|
5153
5341
|
] });
|
|
5154
5342
|
});
|
|
5155
5343
|
TimelineItem.displayName = "TimelineItem";
|
|
5156
5344
|
|
|
5157
5345
|
// src/patterns/Timeline/ActivityTimeline.tsx
|
|
5158
|
-
var
|
|
5346
|
+
var import_react74 = require("react");
|
|
5159
5347
|
|
|
5160
5348
|
// src/patterns/Timeline/formatRelative.ts
|
|
5161
5349
|
var SECOND = 1e3;
|
|
@@ -5190,7 +5378,7 @@ function formatRelative(input, now = /* @__PURE__ */ new Date()) {
|
|
|
5190
5378
|
}
|
|
5191
5379
|
|
|
5192
5380
|
// src/patterns/Timeline/ActivityTimeline.tsx
|
|
5193
|
-
var
|
|
5381
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
5194
5382
|
var ringClass2 = {
|
|
5195
5383
|
accent: "border-accent",
|
|
5196
5384
|
ok: "border-ok",
|
|
@@ -5198,10 +5386,10 @@ var ringClass2 = {
|
|
|
5198
5386
|
err: "border-err",
|
|
5199
5387
|
muted: "border-text-dim"
|
|
5200
5388
|
};
|
|
5201
|
-
var ActivityTimeline = (0,
|
|
5389
|
+
var ActivityTimeline = (0, import_react74.forwardRef)(
|
|
5202
5390
|
function ActivityTimeline2({ events, relativeNow, className, ...props }, ref) {
|
|
5203
5391
|
const now = relativeNow ?? /* @__PURE__ */ new Date();
|
|
5204
|
-
return /* @__PURE__ */ (0,
|
|
5392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5205
5393
|
"ol",
|
|
5206
5394
|
{
|
|
5207
5395
|
ref,
|
|
@@ -5214,8 +5402,8 @@ var ActivityTimeline = (0, import_react73.forwardRef)(
|
|
|
5214
5402
|
children: events.map((event) => {
|
|
5215
5403
|
const tone = event.tone ?? "accent";
|
|
5216
5404
|
const time = formatRelative(event.at, now);
|
|
5217
|
-
return /* @__PURE__ */ (0,
|
|
5218
|
-
/* @__PURE__ */ (0,
|
|
5405
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("li", { className: "relative mb-4 last:mb-0", children: [
|
|
5406
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5219
5407
|
"span",
|
|
5220
5408
|
{
|
|
5221
5409
|
"aria-hidden": true,
|
|
@@ -5225,16 +5413,16 @@ var ActivityTimeline = (0, import_react73.forwardRef)(
|
|
|
5225
5413
|
)
|
|
5226
5414
|
}
|
|
5227
5415
|
),
|
|
5228
|
-
/* @__PURE__ */ (0,
|
|
5229
|
-
event.icon && /* @__PURE__ */ (0,
|
|
5230
|
-
/* @__PURE__ */ (0,
|
|
5231
|
-
time && /* @__PURE__ */ (0,
|
|
5416
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-baseline gap-2", children: [
|
|
5417
|
+
event.icon && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": true, className: "text-text-muted font-mono text-[12px]", children: event.icon }),
|
|
5418
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "text-[13px] font-medium", children: event.title }),
|
|
5419
|
+
time && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("time", { className: "text-text-dim ml-auto font-mono text-[10px]", children: time })
|
|
5232
5420
|
] }),
|
|
5233
|
-
event.actor && /* @__PURE__ */ (0,
|
|
5234
|
-
event.actor.avatar && /* @__PURE__ */ (0,
|
|
5235
|
-
/* @__PURE__ */ (0,
|
|
5421
|
+
event.actor && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "text-text-muted mt-[2px] flex items-center gap-[6px] text-[12px]", children: [
|
|
5422
|
+
event.actor.avatar && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": true, className: "inline-flex", children: event.actor.avatar }),
|
|
5423
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: event.actor.name })
|
|
5236
5424
|
] }),
|
|
5237
|
-
event.payload && /* @__PURE__ */ (0,
|
|
5425
|
+
event.payload && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "border-border bg-panel-2 mt-2 rounded-md border px-3 py-2 font-mono text-[11px] leading-[1.5]", children: event.payload })
|
|
5238
5426
|
] }, event.id);
|
|
5239
5427
|
})
|
|
5240
5428
|
}
|
|
@@ -5244,9 +5432,9 @@ var ActivityTimeline = (0, import_react73.forwardRef)(
|
|
|
5244
5432
|
ActivityTimeline.displayName = "ActivityTimeline";
|
|
5245
5433
|
|
|
5246
5434
|
// src/patterns/Topbar/Topbar.tsx
|
|
5247
|
-
var
|
|
5248
|
-
var
|
|
5249
|
-
var Topbar = (0,
|
|
5435
|
+
var import_react75 = require("react");
|
|
5436
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
5437
|
+
var Topbar = (0, import_react75.forwardRef)(function Topbar2({
|
|
5250
5438
|
title,
|
|
5251
5439
|
eyebrow,
|
|
5252
5440
|
leading,
|
|
@@ -5260,7 +5448,7 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5260
5448
|
}, ref) {
|
|
5261
5449
|
const isTouch = density === "touch";
|
|
5262
5450
|
const backHandler = typeof back === "function" ? back : back ? onBack : void 0;
|
|
5263
|
-
return /* @__PURE__ */ (0,
|
|
5451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
5264
5452
|
"header",
|
|
5265
5453
|
{
|
|
5266
5454
|
ref,
|
|
@@ -5271,7 +5459,7 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5271
5459
|
),
|
|
5272
5460
|
...props,
|
|
5273
5461
|
children: [
|
|
5274
|
-
isTouch && back && /* @__PURE__ */ (0,
|
|
5462
|
+
isTouch && back && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5275
5463
|
"button",
|
|
5276
5464
|
{
|
|
5277
5465
|
type: "button",
|
|
@@ -5285,7 +5473,7 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5285
5473
|
"hover:bg-panel-2 h-touch w-touch",
|
|
5286
5474
|
"focus-visible:ring-accent-dim outline-none focus-visible:ring-[3px]"
|
|
5287
5475
|
),
|
|
5288
|
-
children: /* @__PURE__ */ (0,
|
|
5476
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5289
5477
|
"svg",
|
|
5290
5478
|
{
|
|
5291
5479
|
width: "20",
|
|
@@ -5295,15 +5483,15 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5295
5483
|
stroke: "currentColor",
|
|
5296
5484
|
strokeWidth: "2",
|
|
5297
5485
|
"aria-hidden": true,
|
|
5298
|
-
children: /* @__PURE__ */ (0,
|
|
5486
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("path", { d: "m15 18-6-6 6-6" })
|
|
5299
5487
|
}
|
|
5300
5488
|
)
|
|
5301
5489
|
}
|
|
5302
5490
|
),
|
|
5303
5491
|
leading,
|
|
5304
|
-
(title || isTouch && eyebrow) && /* @__PURE__ */ (0,
|
|
5305
|
-
isTouch && eyebrow && /* @__PURE__ */ (0,
|
|
5306
|
-
title && /* @__PURE__ */ (0,
|
|
5492
|
+
(title || isTouch && eyebrow) && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn("min-w-0", isTouch && "flex-1"), children: [
|
|
5493
|
+
isTouch && eyebrow && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "text-m-eyebrow text-accent font-mono tracking-wide uppercase", children: eyebrow }),
|
|
5494
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5307
5495
|
"div",
|
|
5308
5496
|
{
|
|
5309
5497
|
className: cn(
|
|
@@ -5313,8 +5501,8 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5313
5501
|
}
|
|
5314
5502
|
)
|
|
5315
5503
|
] }),
|
|
5316
|
-
!isTouch && /* @__PURE__ */ (0,
|
|
5317
|
-
actions && /* @__PURE__ */ (0,
|
|
5504
|
+
!isTouch && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "flex flex-1 items-center" }),
|
|
5505
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: cn("flex items-center", isTouch ? "gap-1" : "gap-3"), children: actions }),
|
|
5318
5506
|
children
|
|
5319
5507
|
]
|
|
5320
5508
|
}
|
|
@@ -5323,8 +5511,8 @@ var Topbar = (0, import_react74.forwardRef)(function Topbar2({
|
|
|
5323
5511
|
Topbar.displayName = "Topbar";
|
|
5324
5512
|
|
|
5325
5513
|
// src/patterns/Tree/Tree.tsx
|
|
5326
|
-
var
|
|
5327
|
-
var
|
|
5514
|
+
var import_react76 = require("react");
|
|
5515
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
5328
5516
|
var EMPTY_SET2 = /* @__PURE__ */ new Set();
|
|
5329
5517
|
function flattenVisible(items, expanded, level, parentId, out) {
|
|
5330
5518
|
for (const item of items) {
|
|
@@ -5335,7 +5523,7 @@ function flattenVisible(items, expanded, level, parentId, out) {
|
|
|
5335
5523
|
}
|
|
5336
5524
|
}
|
|
5337
5525
|
}
|
|
5338
|
-
var Tree = (0,
|
|
5526
|
+
var Tree = (0, import_react76.forwardRef)(function Tree2({
|
|
5339
5527
|
items,
|
|
5340
5528
|
expanded: expandedProp,
|
|
5341
5529
|
defaultExpanded,
|
|
@@ -5358,24 +5546,24 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5358
5546
|
onChange: onValueChange
|
|
5359
5547
|
});
|
|
5360
5548
|
const expandedSet = expanded ?? EMPTY_SET2;
|
|
5361
|
-
const flatVisible = (0,
|
|
5549
|
+
const flatVisible = (0, import_react76.useMemo)(() => {
|
|
5362
5550
|
const out = [];
|
|
5363
5551
|
flattenVisible(items, expandedSet, 1, null, out);
|
|
5364
5552
|
return out;
|
|
5365
5553
|
}, [items, expandedSet]);
|
|
5366
|
-
const [activeId, setActiveId] = (0,
|
|
5367
|
-
(0,
|
|
5554
|
+
const [activeId, setActiveId] = (0, import_react76.useState)(null);
|
|
5555
|
+
(0, import_react76.useEffect)(() => {
|
|
5368
5556
|
if (activeId && !flatVisible.some((f) => f.id === activeId)) {
|
|
5369
5557
|
setActiveId(null);
|
|
5370
5558
|
}
|
|
5371
5559
|
}, [activeId, flatVisible]);
|
|
5372
|
-
const tabStopId = (0,
|
|
5560
|
+
const tabStopId = (0, import_react76.useMemo)(() => {
|
|
5373
5561
|
if (activeId && flatVisible.some((f) => f.id === activeId)) return activeId;
|
|
5374
5562
|
if (value && flatVisible.some((f) => f.id === value)) return value;
|
|
5375
5563
|
return flatVisible[0]?.id ?? null;
|
|
5376
5564
|
}, [activeId, flatVisible, value]);
|
|
5377
|
-
const listRef = (0,
|
|
5378
|
-
const setRefs = (0,
|
|
5565
|
+
const listRef = (0, import_react76.useRef)(null);
|
|
5566
|
+
const setRefs = (0, import_react76.useCallback)(
|
|
5379
5567
|
(node) => {
|
|
5380
5568
|
listRef.current = node;
|
|
5381
5569
|
if (typeof ref === "function") ref(node);
|
|
@@ -5383,20 +5571,20 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5383
5571
|
},
|
|
5384
5572
|
[ref]
|
|
5385
5573
|
);
|
|
5386
|
-
const focusItem = (0,
|
|
5574
|
+
const focusItem = (0, import_react76.useCallback)((id) => {
|
|
5387
5575
|
const root = listRef.current;
|
|
5388
5576
|
if (!root) return;
|
|
5389
5577
|
const el = root.querySelector(`[data-treeitem-id="${CSS.escape(id)}"]`);
|
|
5390
5578
|
el?.focus();
|
|
5391
5579
|
}, []);
|
|
5392
|
-
const moveActive = (0,
|
|
5580
|
+
const moveActive = (0, import_react76.useCallback)(
|
|
5393
5581
|
(id) => {
|
|
5394
5582
|
setActiveId(id);
|
|
5395
5583
|
queueMicrotask(() => focusItem(id));
|
|
5396
5584
|
},
|
|
5397
5585
|
[focusItem]
|
|
5398
5586
|
);
|
|
5399
|
-
const toggle = (0,
|
|
5587
|
+
const toggle = (0, import_react76.useCallback)(
|
|
5400
5588
|
(id) => {
|
|
5401
5589
|
setExpanded((prev) => {
|
|
5402
5590
|
const next = new Set(prev ?? EMPTY_SET2);
|
|
@@ -5407,7 +5595,7 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5407
5595
|
},
|
|
5408
5596
|
[setExpanded]
|
|
5409
5597
|
);
|
|
5410
|
-
const expand = (0,
|
|
5598
|
+
const expand = (0, import_react76.useCallback)(
|
|
5411
5599
|
(id) => {
|
|
5412
5600
|
setExpanded((prev) => {
|
|
5413
5601
|
const base = prev ?? EMPTY_SET2;
|
|
@@ -5419,7 +5607,7 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5419
5607
|
},
|
|
5420
5608
|
[setExpanded]
|
|
5421
5609
|
);
|
|
5422
|
-
const collapse = (0,
|
|
5610
|
+
const collapse = (0, import_react76.useCallback)(
|
|
5423
5611
|
(id) => {
|
|
5424
5612
|
setExpanded((prev) => {
|
|
5425
5613
|
const base = prev ?? EMPTY_SET2;
|
|
@@ -5431,13 +5619,13 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5431
5619
|
},
|
|
5432
5620
|
[setExpanded]
|
|
5433
5621
|
);
|
|
5434
|
-
const selectItem = (0,
|
|
5622
|
+
const selectItem = (0, import_react76.useCallback)(
|
|
5435
5623
|
(id) => {
|
|
5436
5624
|
setValue(id);
|
|
5437
5625
|
},
|
|
5438
5626
|
[setValue]
|
|
5439
5627
|
);
|
|
5440
|
-
const handleKeyDown = (0,
|
|
5628
|
+
const handleKeyDown = (0, import_react76.useCallback)(
|
|
5441
5629
|
(e) => {
|
|
5442
5630
|
onKeyDown?.(e);
|
|
5443
5631
|
if (e.defaultPrevented) return;
|
|
@@ -5517,7 +5705,7 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5517
5705
|
toggle
|
|
5518
5706
|
]
|
|
5519
5707
|
);
|
|
5520
|
-
return /* @__PURE__ */ (0,
|
|
5708
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
5521
5709
|
"ul",
|
|
5522
5710
|
{
|
|
5523
5711
|
ref: setRefs,
|
|
@@ -5525,7 +5713,7 @@ var Tree = (0, import_react75.forwardRef)(function Tree2({
|
|
|
5525
5713
|
className: cn("flex flex-col gap-px text-[12px]", className),
|
|
5526
5714
|
onKeyDown: handleKeyDown,
|
|
5527
5715
|
...props,
|
|
5528
|
-
children: items.map((item) => /* @__PURE__ */ (0,
|
|
5716
|
+
children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
5529
5717
|
TreeItemRow,
|
|
5530
5718
|
{
|
|
5531
5719
|
item,
|
|
@@ -5560,8 +5748,8 @@ function TreeItemRow({
|
|
|
5560
5748
|
const isExpanded = hasChildren && expanded.has(item.id);
|
|
5561
5749
|
const isSelected = selected === item.id;
|
|
5562
5750
|
const isTabStop = tabStopId === item.id;
|
|
5563
|
-
return /* @__PURE__ */ (0,
|
|
5564
|
-
/* @__PURE__ */ (0,
|
|
5751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("li", { role: "none", children: [
|
|
5752
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
5565
5753
|
"div",
|
|
5566
5754
|
{
|
|
5567
5755
|
role: "treeitem",
|
|
@@ -5584,14 +5772,14 @@ function TreeItemRow({
|
|
|
5584
5772
|
isSelected ? "bg-accent-dim text-accent" : "text-text hover:bg-panel-2"
|
|
5585
5773
|
),
|
|
5586
5774
|
children: [
|
|
5587
|
-
/* @__PURE__ */ (0,
|
|
5588
|
-
item.icon && /* @__PURE__ */ (0,
|
|
5589
|
-
/* @__PURE__ */ (0,
|
|
5775
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { "aria-hidden": true, className: "text-text-dim grid w-3 place-items-center text-[10px]", children: hasChildren ? isExpanded ? "\u25BE" : "\u25B8" : "" }),
|
|
5776
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { "aria-hidden": true, className: "text-[12px] opacity-80", children: item.icon }),
|
|
5777
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "flex-1 truncate", children: item.label }),
|
|
5590
5778
|
item.trailing
|
|
5591
5779
|
]
|
|
5592
5780
|
}
|
|
5593
5781
|
),
|
|
5594
|
-
hasChildren && isExpanded && /* @__PURE__ */ (0,
|
|
5782
|
+
hasChildren && isExpanded && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("ul", { role: "group", className: "flex flex-col gap-px", children: (item.children ?? []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
5595
5783
|
TreeItemRow,
|
|
5596
5784
|
{
|
|
5597
5785
|
item: child,
|
|
@@ -5610,9 +5798,9 @@ function TreeItemRow({
|
|
|
5610
5798
|
|
|
5611
5799
|
// src/patterns/WizardDialog/WizardDialog.tsx
|
|
5612
5800
|
var RadixDialog5 = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
5613
|
-
var
|
|
5614
|
-
var
|
|
5615
|
-
var WizardDialog = (0,
|
|
5801
|
+
var import_react77 = require("react");
|
|
5802
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
5803
|
+
var WizardDialog = (0, import_react77.forwardRef)(function WizardDialog2({
|
|
5616
5804
|
open,
|
|
5617
5805
|
defaultOpen,
|
|
5618
5806
|
onOpenChange,
|
|
@@ -5628,19 +5816,19 @@ var WizardDialog = (0, import_react76.forwardRef)(function WizardDialog2({
|
|
|
5628
5816
|
cancelLabel,
|
|
5629
5817
|
onCancel
|
|
5630
5818
|
}, ref) {
|
|
5631
|
-
const [current, setCurrent] = (0,
|
|
5819
|
+
const [current, setCurrent] = (0, import_react77.useState)(initialStep);
|
|
5632
5820
|
const total = steps.length;
|
|
5633
5821
|
const safeCurrent = Math.min(current, Math.max(0, total - 1));
|
|
5634
5822
|
const step = steps[safeCurrent];
|
|
5635
|
-
const goTo = (0,
|
|
5823
|
+
const goTo = (0, import_react77.useCallback)(
|
|
5636
5824
|
(index) => {
|
|
5637
5825
|
setCurrent(Math.min(Math.max(0, index), Math.max(0, total - 1)));
|
|
5638
5826
|
},
|
|
5639
5827
|
[total]
|
|
5640
5828
|
);
|
|
5641
|
-
const goNext = (0,
|
|
5642
|
-
const goBack = (0,
|
|
5643
|
-
const ctx = (0,
|
|
5829
|
+
const goNext = (0, import_react77.useCallback)(() => setCurrent((c) => Math.min(c + 1, total - 1)), [total]);
|
|
5830
|
+
const goBack = (0, import_react77.useCallback)(() => setCurrent((c) => Math.max(c - 1, 0)), []);
|
|
5831
|
+
const ctx = (0, import_react77.useMemo)(
|
|
5644
5832
|
() => ({
|
|
5645
5833
|
current: safeCurrent,
|
|
5646
5834
|
total,
|
|
@@ -5652,7 +5840,7 @@ var WizardDialog = (0, import_react76.forwardRef)(function WizardDialog2({
|
|
|
5652
5840
|
}),
|
|
5653
5841
|
[safeCurrent, total, goNext, goBack, goTo]
|
|
5654
5842
|
);
|
|
5655
|
-
const stepperSteps = (0,
|
|
5843
|
+
const stepperSteps = (0, import_react77.useMemo)(() => steps.map((s) => ({ id: s.id, label: s.label })), [steps]);
|
|
5656
5844
|
if (!step) return null;
|
|
5657
5845
|
const canAdvance = step.canAdvance ? step.canAdvance(ctx) : true;
|
|
5658
5846
|
const body = typeof step.content === "function" ? step.content(ctx) : step.content;
|
|
@@ -5663,23 +5851,23 @@ var WizardDialog = (0, import_react76.forwardRef)(function WizardDialog2({
|
|
|
5663
5851
|
goNext();
|
|
5664
5852
|
}
|
|
5665
5853
|
};
|
|
5666
|
-
return /* @__PURE__ */ (0,
|
|
5667
|
-
title && /* @__PURE__ */ (0,
|
|
5668
|
-
description && /* @__PURE__ */ (0,
|
|
5669
|
-
/* @__PURE__ */ (0,
|
|
5670
|
-
/* @__PURE__ */ (0,
|
|
5671
|
-
/* @__PURE__ */ (0,
|
|
5672
|
-
cancelLabel && /* @__PURE__ */ (0,
|
|
5673
|
-
/* @__PURE__ */ (0,
|
|
5674
|
-
/* @__PURE__ */ (0,
|
|
5854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(DialogRoot, { open, defaultOpen, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogContent, { ref, width, children: [
|
|
5855
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(WizardTitle, { children: title }),
|
|
5856
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(WizardDescription, { children: description }),
|
|
5857
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-5", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Stepper, { steps: stepperSteps, current: safeCurrent }) }),
|
|
5858
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-5", children: body }),
|
|
5859
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex justify-end gap-2", children: [
|
|
5860
|
+
cancelLabel && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { type: "button", variant: "ghost", onClick: onCancel, children: cancelLabel }),
|
|
5861
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { type: "button", variant: "secondary", onClick: goBack, disabled: ctx.isFirst, children: backLabel }),
|
|
5862
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { type: "button", variant: "primary", onClick: handlePrimary, disabled: !canAdvance, children: ctx.isLast ? completeLabel : nextLabel })
|
|
5675
5863
|
] })
|
|
5676
5864
|
] }) });
|
|
5677
5865
|
});
|
|
5678
5866
|
function WizardTitle({ children }) {
|
|
5679
|
-
return /* @__PURE__ */ (0,
|
|
5867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(RadixDialog5.Title, { className: "mb-2 text-[16px] font-medium", children });
|
|
5680
5868
|
}
|
|
5681
5869
|
function WizardDescription({ children }) {
|
|
5682
|
-
return /* @__PURE__ */ (0,
|
|
5870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(RadixDialog5.Description, { className: "text-text-muted mb-4 text-[13px] leading-[1.55]", children });
|
|
5683
5871
|
}
|
|
5684
5872
|
WizardDialog.displayName = "WizardDialog";
|
|
5685
5873
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -5745,6 +5933,7 @@ WizardDialog.displayName = "WizardDialog";
|
|
|
5745
5933
|
HoverCardRoot,
|
|
5746
5934
|
HoverCardTrigger,
|
|
5747
5935
|
IconButton,
|
|
5936
|
+
InlineEdit,
|
|
5748
5937
|
Input,
|
|
5749
5938
|
Kbd,
|
|
5750
5939
|
LargeTitle,
|