@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 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/Input/Input.tsx
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 inputWrapperStyles = (0, import_class_variance_authority3.cva)(
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, import_react15.forwardRef)(function Input2({ size, tone, density, icon, trailing, error, width, className, style, disabled, ...props }, ref) {
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, import_jsx_runtime8.jsxs)(
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, import_jsx_runtime8.jsx)("span", { className: "text-text-dim leading-none", children: icon }),
765
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
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, import_jsx_runtime8.jsx)("span", { className: "text-text-dim text-[11px]", children: trailing })
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 import_react16 = require("react");
788
- var import_jsx_runtime9 = require("react/jsx-runtime");
789
- var SearchInput = (0, import_react16.forwardRef)(function SearchInput2({
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, import_jsx_runtime9.jsxs)(
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, import_jsx_runtime9.jsx)("span", { className: cn("text-text-dim leading-none", isTouch && "text-[18px]"), "aria-hidden": true, children: "\u2315" }),
816
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
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, import_jsx_runtime9.jsx)("kbd", { className: "text-text-dim border-border rounded-xs border px-[6px] py-[2px] font-mono text-[10px]", children: resolvedShortcut })
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 import_react17 = require("react");
839
- var import_jsx_runtime10 = require("react/jsx-runtime");
840
- var OTP = (0, import_react17.forwardRef)(function OTP2({ length = 6, onComplete, onChange, defaultValue = "", ariaLabel = "Code", className, disabled }, ref) {
841
- const baseId = (0, import_react17.useId)();
842
- const refs = (0, import_react17.useRef)([]);
843
- const [values, setValues] = (0, import_react17.useState)(
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, import_react17.useState)("");
847
- (0, import_react17.useImperativeHandle)(ref, () => ({
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, import_jsx_runtime10.jsxs)("div", { className: cn("flex gap-2", className), children: [
898
- values.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)("span", { className: "sr-only", "aria-live": "polite", "aria-atomic": "true", children: completedAnnouncement })
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 import_react18 = require("react");
932
- var import_jsx_runtime11 = require("react/jsx-runtime");
933
- var RadioGroup = (0, import_react18.forwardRef)(function RadioGroup2({ className, ...props }, ref) {
934
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(RadixRadio.Root, { ref, className: cn("flex flex-col gap-2", className), ...props });
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, import_react18.forwardRef)(function Radio2({ label, className, id: idProp, ...props }, ref) {
938
- const reactId = (0, import_react18.useId)();
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, import_jsx_runtime11.jsxs)(
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, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsx)(RadixRadio.Indicator, { className: "bg-accent block h-[7px] w-[7px] rounded-full" })
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, import_jsx_runtime11.jsx)("label", { htmlFor: id, className: "cursor-pointer text-[13px]", children: label })
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 import_react19 = require("react");
975
- var import_jsx_runtime12 = require("react/jsx-runtime");
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, import_react19.forwardRef)(function SelectTrigger2({ size = "md", className, children, ...props }, ref) {
986
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
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, import_jsx_runtime12.jsx)(RadixSelect.Icon, { className: "text-text-dim text-[11px] leading-none", children: "\u25BE" })
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, import_react19.forwardRef)(
1196
+ var SelectContent = (0, import_react20.forwardRef)(
1009
1197
  function SelectContent2({ className, children, position = "popper", sideOffset = 6, ...props }, ref) {
1010
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RadixSelect.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(RadixSelect.Viewport, { children })
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, import_react19.forwardRef)(
1216
+ var SelectItem = (0, import_react20.forwardRef)(
1029
1217
  function SelectItem2({ className, children, ...props }, ref) {
1030
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(RadixSelect.ItemText, { children })
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, import_jsx_runtime12.jsxs)(RadixSelect.Root, { ...rootProps, children: [
1058
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
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, import_jsx_runtime12.jsx)(SelectValue, { placeholder })
1253
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { placeholder })
1066
1254
  }
1067
1255
  ),
1068
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SelectContent, { children: options.map((opt) => {
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, import_jsx_runtime12.jsx)(SelectItem, { value, children: label }, value);
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 import_react20 = require("react");
1079
- var import_jsx_runtime13 = require("react/jsx-runtime");
1080
- var Slider = (0, import_react20.forwardRef)(function Slider2({
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, import_react20.useState)(arrDefault);
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, import_react20.useCallback)(
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, import_jsx_runtime13.jsxs)(
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, import_jsx_runtime13.jsxs)(
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, import_jsx_runtime13.jsx)(RadixSlider.Track, { className: "bg-panel-2 relative h-1 grow rounded-full", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RadixSlider.Range, { className: "bg-accent absolute h-full rounded-full" }) }),
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, import_jsx_runtime13.jsx)(
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, import_jsx_runtime13.jsx)("span", { className: "text-text-muted min-w-[28px] text-right font-mono text-[11px]", children: display })
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 import_react21 = require("react");
1156
- var import_jsx_runtime14 = require("react/jsx-runtime");
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, import_react21.forwardRef)(function Switch2({ label, size = "md", density = "comfortable", className, id: idProp, ...props }, ref) {
1178
- const reactId = (0, import_react21.useId)();
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, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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 import_class_variance_authority4 = require("class-variance-authority");
1230
- var import_react22 = require("react");
1231
- var import_jsx_runtime15 = require("react/jsx-runtime");
1232
- var textareaStyles = (0, import_class_variance_authority4.cva)(
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, import_react22.forwardRef)(function Textarea2({ tone, error, rows = 4, className, ...props }, ref) {
1251
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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 import_react24 = require("react");
1454
+ var import_react25 = require("react");
1267
1455
 
1268
1456
  // src/components/StatusDot/StatusDot.tsx
1269
- var import_react23 = require("react");
1270
- var import_jsx_runtime16 = require("react/jsx-runtime");
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, import_react23.forwardRef)(function StatusDot2({ state = "ok", label, pulse, size = 8, className, ...props }, ref) {
1296
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
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, import_jsx_runtime16.jsx)(
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, import_jsx_runtime16.jsx)("span", { className: "text-text-muted text-[12px]", children: label })
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 import_jsx_runtime17 = require("react/jsx-runtime");
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, import_react24.forwardRef)(function Avatar2({ name = "?", src, size = "md", status, initials, className, style, ...props }, ref) {
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, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsxs)(
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, import_jsx_runtime17.jsx)(RadixAvatar.Image, { src, alt: name, className: "h-full w-full object-cover" }),
1370
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
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, import_jsx_runtime17.jsx)(
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 import_react25 = require("react");
1401
- var import_jsx_runtime18 = require("react/jsx-runtime");
1402
- var AvatarGroup = (0, import_react25.forwardRef)(function AvatarGroup2({ names, max = 3, size = "md", className, ...props }, ref) {
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, import_jsx_runtime18.jsxs)("div", { ref, className: cn("inline-flex", className), ...props, children: [
1408
- visible.map((n, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { style: { marginLeft: i === 0 ? 0 : overlap }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Avatar, { name: n, size }) }, `${n}-${i}`)),
1409
- rest > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
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 import_class_variance_authority5 = require("class-variance-authority");
1432
- var import_react26 = require("react");
1433
- var import_jsx_runtime19 = require("react/jsx-runtime");
1434
- var badgeStyles = (0, import_class_variance_authority5.cva)("inline-flex items-center font-sans leading-none whitespace-nowrap", {
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, import_react26.forwardRef)(function Badge2({ variant = "neutral", size = "md", dot, icon, className, children, ...props }, ref) {
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, import_jsx_runtime19.jsxs)("span", { ref, className: cn(badgeStyles({ variant, size }), className), ...props, children: [
1471
- dot && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)("span", { className: "inline-flex leading-none", children: icon }),
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 import_class_variance_authority6 = require("class-variance-authority");
1486
- var import_react27 = require("react");
1487
- var import_jsx_runtime20 = require("react/jsx-runtime");
1488
- var cardStyles = (0, import_class_variance_authority6.cva)(
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, import_react27.forwardRef)(function Card2({
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, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsxs)("div", { className: cn("flex items-start gap-3", (description || children) && "mb-[10px]"), children: [
1557
- title && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex-1 text-[14px] font-medium", children: title }),
1558
- actions && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex gap-1", children: actions })
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, import_jsx_runtime20.jsx)("div", { className: cn("text-text-muted text-[12px] leading-[1.55]", children && "mb-[14px]"), children: description }),
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, import_jsx_runtime20.jsx)("div", { className: "border-border text-text-dim mt-[14px] border-t pt-3 text-[11px]", children: footer })
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, import_react27.forwardRef)(function CardLink2({ variant, density, title, description, footer, className, children, href, ...props }, ref) {
1569
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
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, import_jsx_runtime20.jsx)("div", { className: cn("flex items-start", (description || children) && "mb-[10px]"), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex-1 text-[14px] font-medium", children: title }) }),
1583
- description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("text-text-muted text-[12px] leading-[1.55]", children && "mb-[14px]"), children: description }),
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, import_jsx_runtime20.jsx)("div", { className: "border-border text-text-dim mt-[14px] border-t pt-3 text-[11px]", children: footer })
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 import_react28 = require("react");
1594
- var import_jsx_runtime21 = require("react/jsx-runtime");
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, import_react28.forwardRef)(function StatCard2({ label, value, delta, trend = "flat", icon, className, ...props }, ref) {
1602
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
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, import_jsx_runtime21.jsxs)("div", { className: "mb-[10px] flex items-center justify-between", children: [
1610
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-text-dim font-mono text-[10px] tracking-wide uppercase", children: label }),
1611
- icon && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-text-dim text-[14px]", children: icon })
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, import_jsx_runtime21.jsx)("div", { className: "text-text font-mono text-[26px] leading-none font-medium tracking-tight", children: value }),
1614
- delta !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: cn("mt-[6px] font-mono text-[11px]", trendClasses[trend]), children: [
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 import_react29 = require("react");
1627
- var import_jsx_runtime22 = require("react/jsx-runtime");
1628
- var Chip = (0, import_react29.forwardRef)(function Chip2({ icon, onRemove, density = "comfortable", className, children, ...props }, ref) {
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, import_jsx_runtime22.jsxs)(
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, import_jsx_runtime22.jsx)("span", { className: cn("text-text-dim inline-flex", isTouch ? "text-[12px]" : "text-[10px]"), children: icon }),
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, import_jsx_runtime22.jsx)(
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 import_react30 = require("react");
1665
- var import_jsx_runtime23 = require("react/jsx-runtime");
1666
- var Kbd = (0, import_react30.forwardRef)(function Kbd2({ className, children, ...props }, ref) {
1667
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
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 import_react31 = require("react");
1687
- var import_jsx_runtime24 = require("react/jsx-runtime");
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, import_react31.forwardRef)(function ScrollArea2({
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
1912
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
1725
1913
  }
1726
1914
  ),
1727
- showHorizontal && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
1923
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadixScrollArea.Thumb, { className: thumbBase })
1736
1924
  }
1737
1925
  ),
1738
- orientation === "both" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadixScrollArea.Corner, { className: "bg-panel-2/60" })
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 import_class_variance_authority7 = require("class-variance-authority");
1747
- var import_react32 = require("react");
1748
- var import_jsx_runtime25 = require("react/jsx-runtime");
1749
- var skeletonStyles = (0, import_class_variance_authority7.cva)("block bg-panel-2 animate-[ship-skeleton_1.4s_infinite]", {
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, import_react32.forwardRef)(function Skeleton2({ shape = "line", width = "100%", height, standalone = false, className, style, ...props }, ref) {
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, import_jsx_runtime25.jsx)(
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, import_react32.forwardRef)(function SkeletonGroup2({ label = "Loading", loading = true, className, children, ...props }, ref) {
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, import_jsx_runtime25.jsx)("div", { ref, className, ...props, children });
1966
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className, ...props, children });
1779
1967
  }
1780
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
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 import_react33 = require("react");
1797
- var import_jsx_runtime26 = require("react/jsx-runtime");
1798
- var Tag = (0, import_react33.forwardRef)(function Tag2({ onRemove, icon, size = 22, className, children, ...props }, ref) {
1799
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
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, import_jsx_runtime26.jsx)("span", { className: "text-text-dim inline-flex", children: icon }),
1999
+ icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-text-dim inline-flex", children: icon }),
1812
2000
  children,
1813
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
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 import_react34 = require("react");
1832
- var import_jsx_runtime27 = require("react/jsx-runtime");
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, import_react34.forwardRef)(
2024
+ var ContextMenuContent = (0, import_react35.forwardRef)(
1837
2025
  function ContextMenuContent2({ className, ...props }, ref) {
1838
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadixContext.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
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, import_react34.forwardRef)(
2046
+ var ContextMenuItem = (0, import_react35.forwardRef)(
1859
2047
  function ContextMenuItem2({ icon, trailing, destructive, className, children, ...props }, ref) {
1860
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
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, import_jsx_runtime27.jsx)("span", { className: "w-[14px] text-[12px] opacity-70", children: icon }),
1868
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "flex-1", children }),
1869
- trailing && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
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, import_react34.forwardRef)(function ContextMenuSeparator2({ className, ...props }, ref) {
1877
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
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 import_react35 = require("react");
1892
- var import_jsx_runtime28 = require("react/jsx-runtime");
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, import_react35.forwardRef)(
2085
+ var DialogOverlay = (0, import_react36.forwardRef)(
1898
2086
  function DialogOverlay2({ className, ...props }, ref) {
1899
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
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, import_react35.forwardRef)(function DialogContent2({ className, width = 460, style, children, ...props }, ref) {
1915
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(DialogPortal, { children: [
1916
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogOverlay, {}),
1917
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
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, import_jsx_runtime28.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(DialogContent, { width, children: [
1938
- title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
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, import_jsx_runtime28.jsx)(RadixDialog.Description, { className: "text-text-muted mb-[18px] text-[13px] leading-[1.55]", children: description }),
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, import_jsx_runtime28.jsx)("div", { className: "mt-5 flex justify-end gap-2", children: footer })
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 import_react36 = require("react");
1954
- var import_jsx_runtime29 = require("react/jsx-runtime");
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, import_jsx_runtime29.jsxs)("div", { className: "border-border flex items-center justify-between border-b p-[16px] px-5", children: [
1961
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixDialog2.Title, { className: "text-[14px] font-medium", children: title }),
1962
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
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, import_jsx_runtime29.jsx)("div", { className: "px-5 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixDialog2.Title, { className: "text-m-body-lg font-semibold tracking-tight", children: title }) });
1973
- var DragHandle = () => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex justify-center pt-3 pb-2", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "bg-border-strong h-1 w-9 rounded-full" }) });
1974
- var Drawer = (0, import_react36.forwardRef)(function Drawer2({ side = "right", title, width = 420, height = "85vh", handle, children, ...rootProps }, ref) {
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, import_jsx_runtime29.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DialogPortal, { children: [
1979
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogOverlay, {}),
1980
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
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, import_jsx_runtime29.jsx)(DragHandle, {}),
1992
- title ? isBottom ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SheetHeader, { title }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DrawerHeader, { title }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(RadixDialog2.Title, { className: "sr-only", children: isBottom ? "Sheet" : "Drawer" }),
1993
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: cn("flex-1 overflow-auto", isBottom ? "px-5 pb-6" : "p-5"), children })
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 import_react37 = require("react");
2004
- var import_jsx_runtime30 = require("react/jsx-runtime");
2005
- var Sheet = (0, import_react37.forwardRef)(function Sheet2({ title, width = "min(640px, 90vw)", children, ...rootProps }, ref) {
2006
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(DialogPortal, { children: [
2007
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogOverlay, {}),
2008
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
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, import_jsx_runtime30.jsx)(RadixDialog3.Title, { className: "mb-1 text-[15px] font-medium", children: title }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RadixDialog3.Title, { className: "sr-only", children: "Sheet" }),
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 import_react38 = require("react");
2032
- var import_jsx_runtime31 = require("react/jsx-runtime");
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, import_react38.forwardRef)(function AlertDialog2({ title, description, footer, width = 460, children, ...rootProps }, ref) {
2038
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(AlertDialogRoot, { ...rootProps, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(RadixAlert.Portal, { children: [
2039
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsxs)(
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, import_jsx_runtime31.jsx)(
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, import_jsx_runtime31.jsx)(RadixAlert.Description, { className: "text-text-muted mb-[18px] text-[13px] leading-[1.55]", children: description }),
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, import_jsx_runtime31.jsx)("div", { className: "mt-5 flex justify-end gap-2", children: footer })
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 import_react39 = require("react");
2079
- var import_jsx_runtime32 = require("react/jsx-runtime");
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, import_react39.forwardRef)(
2274
+ var DropdownMenuContent = (0, import_react40.forwardRef)(
2087
2275
  function DropdownMenuContent2({ className, sideOffset = 6, align = "start", ...props }, ref) {
2088
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
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, import_react39.forwardRef)(function MenuItem2({ icon, trailing, destructive, className, children, ...props }, ref) {
2111
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
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, import_jsx_runtime32.jsx)("span", { className: "w-[14px] text-[12px] opacity-70", children: icon }),
2119
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "flex-1", children }),
2120
- trailing && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
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, import_react39.forwardRef)(
2314
+ var MenuCheckboxItem = (0, import_react40.forwardRef)(
2127
2315
  function MenuCheckboxItem2({ className, children, ...props }, ref) {
2128
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
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, import_jsx_runtime32.jsx)(RadixMenu.ItemIndicator, { className: "text-accent absolute top-1/2 left-2 -translate-y-1/2 text-[10px]", children: "\u2713" }),
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, import_react39.forwardRef)(
2331
+ var MenuSeparator = (0, import_react40.forwardRef)(
2144
2332
  function MenuSeparator2({ className, ...props }, ref) {
2145
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
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 import_react40 = require("react");
2161
- var import_jsx_runtime33 = require("react/jsx-runtime");
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, import_react40.forwardRef)(
2353
+ var HoverCardContent = (0, import_react41.forwardRef)(
2166
2354
  function HoverCardContent2({ className, sideOffset = 4, ...props }, ref) {
2167
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixHoverCard.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
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, import_jsx_runtime33.jsxs)(RadixHoverCard.Root, { openDelay: 200, closeDelay: 120, ...rootProps, children: [
2185
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixHoverCard.Trigger, { asChild: true, children: trigger }),
2186
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(HoverCardContent, { children: content })
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 import_react41 = require("react");
2193
- var import_jsx_runtime34 = require("react/jsx-runtime");
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, import_react41.forwardRef)(
2388
+ var PopoverContent = (0, import_react42.forwardRef)(
2201
2389
  function PopoverContent2({ className, align = "start", sideOffset = 6, ...props }, ref) {
2202
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixPopover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
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 import_react42 = require("react");
2224
- var import_jsx_runtime35 = require("react/jsx-runtime");
2225
- var ToastContext = (0, import_react42.createContext)(null);
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, import_react42.useState)([]);
2251
- const toast = (0, import_react42.useCallback)((t) => {
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, import_react42.useCallback)((id) => {
2451
+ const dismiss = (0, import_react43.useCallback)((id) => {
2264
2452
  setToasts((prev) => prev.filter((t) => t.id !== id));
2265
2453
  }, []);
2266
- const value = (0, import_react42.useMemo)(() => ({ toast, dismiss }), [toast, dismiss]);
2267
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ToastContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(RadixToast.Provider, { swipeDirection: "right", children: [
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, import_jsx_runtime35.jsx)(ToastCard, { toast: t, onDismiss: () => dismiss(t.id) }, t.id)),
2270
- /* @__PURE__ */ (0, import_jsx_runtime35.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" })
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, import_react42.useContext)(ToastContext);
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, import_react42.forwardRef)(function ToastCard2({ toast, onDismiss }, ref) {
2466
+ var ToastCard = (0, import_react43.forwardRef)(function ToastCard2({ toast, onDismiss }, ref) {
2279
2467
  const variant = toast.variant ?? "default";
2280
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
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, import_jsx_runtime35.jsx)("span", { className: cn("mt-px text-[14px] leading-none", variantTextColor[variant]), children: variantIcon[variant] }),
2296
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "min-w-0 flex-1", children: [
2297
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixToast.Title, { className: "text-text text-[13px] font-medium", children: toast.title }),
2298
- toast.description && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixToast.Description, { className: "text-text-muted mt-[2px] text-[12px] leading-[1.5]", children: toast.description }),
2299
- toast.action && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "mt-2", children: toast.action })
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, import_jsx_runtime35.jsx)(
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 import_react43 = require("react");
2318
- var import_jsx_runtime36 = require("react/jsx-runtime");
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, import_react43.forwardRef)(
2512
+ var TooltipContent = (0, import_react44.forwardRef)(
2325
2513
  function TooltipContent2({ className, sideOffset = 6, ...props }, ref) {
2326
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadixTooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
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, import_jsx_runtime36.jsx)(TooltipProvider, { delayDuration, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Tooltip, { children: [
2350
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TooltipTrigger, { asChild: true, children }),
2351
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TooltipContent, { side, children: content })
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 import_class_variance_authority8 = require("class-variance-authority");
2357
- var import_react44 = require("react");
2358
- var import_jsx_runtime37 = require("react/jsx-runtime");
2359
- var alertStyles = (0, import_class_variance_authority8.cva)("flex items-start gap-3 rounded-base border bg-panel p-3 text-[13px]", {
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, import_react44.forwardRef)(function Alert2({
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, import_jsx_runtime37.jsxs)(
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, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: cn("mt-[1px] text-[14px] leading-none", iconColorClass[t]), children: icon ?? defaultGlyph[t] }),
2404
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "min-w-0 flex-1", children: [
2405
- title && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-medium", children: title }),
2406
- description && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-text-muted mt-[2px] text-[12px]", children: description }),
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, import_jsx_runtime37.jsx)("div", { className: "ml-1 shrink-0", children: action })
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 import_class_variance_authority9 = require("class-variance-authority");
2418
- var import_react45 = require("react");
2419
- var import_jsx_runtime38 = require("react/jsx-runtime");
2420
- var bannerStyles = (0, import_class_variance_authority9.cva)(
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, import_react45.forwardRef)(function Banner2({ tone = "accent", sticky, icon, action, live = "polite", className, children, ...props }, ref) {
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, import_jsx_runtime38.jsxs)(
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, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "leading-none", children: icon ?? defaultGlyph2[t] }),
2456
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "min-w-0 flex-1", children }),
2457
- action && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "ml-auto", children: action })
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 import_react46 = require("react");
2466
- var import_jsx_runtime39 = require("react/jsx-runtime");
2467
- var Breadcrumbs = (0, import_react46.forwardRef)(function Breadcrumbs2({ separator = "/", className, children, ...props }, ref) {
2468
- const crumbs = import_react46.Children.toArray(children).filter(import_react46.isValidElement);
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, import_jsx_runtime39.jsx)("nav", { ref, "aria-label": "Breadcrumb", className: cn("text-[13px]", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ol", { className: "text-text-muted flex flex-wrap items-center gap-[6px]", children: crumbs.map((crumb, i) => {
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, import_jsx_runtime39.jsxs)("li", { className: "inline-flex items-center gap-[6px]", children: [
2473
- isCurrent ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Crumb, { ...crumb.props, current: true }) : crumb,
2474
- !isCurrent && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: separator })
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, import_react46.forwardRef)(function Crumb2({ current, className, href, children, ...props }, ref) {
2667
+ var Crumb = (0, import_react47.forwardRef)(function Crumb2({ current, className, href, children, ...props }, ref) {
2480
2668
  if (current) {
2481
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { "aria-current": "page", className: cn("text-text", className), children });
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, import_jsx_runtime39.jsx)("span", { className: cn("text-text-dim", className), children });
2672
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cn("text-text-dim", className), children });
2485
2673
  }
2486
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
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 import_react47 = require("react");
2501
- var import_jsx_runtime40 = require("react/jsx-runtime");
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, import_react47.forwardRef)(function Combobox2({
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, import_react47.useId)();
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, import_react47.useMemo)(() => options.map(normalize), [options]);
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, import_react47.useMemo)(() => {
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, import_react47.useState)(false);
2557
- const wrapperRef = (0, import_react47.useRef)(null);
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, import_react47.useMemo)(
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, import_react47.useEffect)(() => {
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, import_jsx_runtime40.jsxs)("div", { ref: wrapperRef, className: "relative", style: { width }, children: [
2595
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
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, import_jsx_runtime40.jsx)(
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, import_jsx_runtime40.jsx)("li", { className: "text-text-dim px-2 py-3 text-center text-[12px]", role: "presentation", children: emptyState ?? "No matches" }) : filtered.map((option, i) => {
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, import_jsx_runtime40.jsxs)(
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, import_jsx_runtime40.jsx)("div", { children: option.label }),
2660
- option.description && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "text-text-dim text-[11px]", children: option.description })
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, import_jsx_runtime40.jsx)("input", { type: "hidden", name, value: value ?? "", readOnly: true })
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 import_react48 = require("react");
2676
- var import_jsx_runtime41 = require("react/jsx-runtime");
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, import_react48.forwardRef)(
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, import_react48.useMemo)(() => flatItems(groups), [groups]);
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, import_react48.useId)();
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, import_react48.useEffect)(() => {
2894
+ (0, import_react49.useEffect)(() => {
2707
2895
  setCursor(0);
2708
2896
  }, [query, groups, setCursor]);
2709
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(RadixDialog4.Root, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(RadixDialog4.Portal, { children: [
2710
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
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, import_jsx_runtime41.jsxs)(
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, import_jsx_runtime41.jsx)(RadixDialog4.Title, { className: "sr-only", children: "Command palette" }),
2734
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "border-border flex items-center gap-[10px] border-b px-4 py-[14px]", children: [
2735
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: "\u2315" }),
2736
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
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, import_jsx_runtime41.jsx)("span", { className: "border-border text-text-dim rounded-xs border px-[6px] py-[2px] font-mono text-[10px]", children: "ESC" })
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, import_jsx_runtime41.jsx)("div", { id: listboxId, className: "min-h-[220px] p-2", role: "listbox", "aria-label": "Results", children: flat.length === 0 ? emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "text-text-dim px-3 py-5 text-center text-[12px]", children: "No matches" }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
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, import_jsx_runtime41.jsx)("div", { className: "border-border text-text-dim flex gap-4 border-t px-[14px] py-[10px] font-mono text-[10px]", children: footer })
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, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: groups.map((group, gIdx) => {
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, import_jsx_runtime41.jsxs)("div", { children: [
2778
- group.label && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "text-text-dim px-2 pt-2 pb-1 font-mono text-[9px] tracking-[1.4px] uppercase", children: [
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, import_jsx_runtime41.jsxs)(
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, import_jsx_runtime41.jsx)(
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, import_jsx_runtime41.jsxs)("span", { className: "min-w-0 flex-1", children: [
2812
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "block truncate text-[13px]", children: item.label }),
2813
- item.description && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-text-dim block truncate text-[11px]", children: item.description })
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, import_jsx_runtime41.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: item.trailing })
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 import_react49 = require("react");
2838
- var import_jsx_runtime42 = require("react/jsx-runtime");
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, import_react49.useMemo)(() => {
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, import_react49.useMemo)(() => {
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, import_react49.useMemo)(() => sortedData.map(rowKey), [sortedData, rowKey]);
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, import_react49.useRef)(null);
2895
- (0, import_react49.useEffect)(() => {
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, import_jsx_runtime42.jsxs)("table", { ref, className: cn("w-full border-collapse text-[12px]", className), children: [
2927
- caption && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("caption", { className: "sr-only", children: caption }),
2928
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("thead", { className: cn("bg-panel-2", stickyHeader && "z-raised sticky top-0"), children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("tr", { children: [
2929
- selectable && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("th", { scope: "col", className: "border-border w-8 border-b px-3 py-2 text-left", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
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, import_jsx_runtime42.jsx)("span", { "aria-hidden": true, className: "ml-1", children: sort?.direction === "asc" ? "\u2191" : "\u2193" });
2946
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
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, import_jsx_runtime42.jsxs)(
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, import_jsx_runtime42.jsxs)("tbody", { children: [
2976
- sortedData.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
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, import_jsx_runtime42.jsxs)(
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, import_jsx_runtime42.jsx)("td", { className: "px-3 py-[10px]", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
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, import_jsx_runtime42.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))
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 import_react50 = require("react");
3018
- var import_jsx_runtime43 = require("react/jsx-runtime");
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, import_react50.forwardRef)(function Calendar2({
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, import_react50.useState)(() => /* @__PURE__ */ new Date());
3043
- const [hydrated, setHydrated] = (0, import_react50.useState)(false);
3044
- (0, import_react50.useEffect)(() => setHydrated(true), []);
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, import_react50.useState)(initialMonth);
3053
- const [internalYear, setInternalYear] = (0, import_react50.useState)(initialYear);
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, import_react50.useCallback)(
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, import_react50.useCallback)(() => {
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, import_react50.useCallback)(() => {
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, import_react50.useState)(() => {
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, import_react50.useEffect)(() => {
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, import_react50.useRef)(/* @__PURE__ */ new Map());
3089
- const shouldFocusRef = (0, import_react50.useRef)(false);
3090
- (0, import_react50.useEffect)(() => {
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, import_react50.useCallback)(
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, import_react50.useCallback)(
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, import_jsx_runtime43.jsxs)(
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, import_jsx_runtime43.jsxs)("div", { className: "mb-3 flex items-center justify-between", children: [
3173
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("span", { className: "text-[13px] font-medium", "aria-live": "polite", children: [
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, import_jsx_runtime43.jsxs)("div", { className: "flex gap-1", children: [
3179
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
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, import_jsx_runtime43.jsx)(IconButton, { size: "sm", variant: "ghost", icon: "\u203A", "aria-label": "Next month", onClick: goNext })
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, import_jsx_runtime43.jsxs)("div", { role: "grid", "aria-label": `${MONTHS[month]} ${year}`, className: "flex flex-col gap-[2px]", children: [
3193
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { role: "row", className: "grid grid-cols-7 gap-[2px]", children: DAYS.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
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, import_jsx_runtime43.jsx)("div", { role: "gridcell", "aria-hidden": true }, `pad-${r}-${c}`));
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, import_jsx_runtime43.jsx)("div", { role: "gridcell", "aria-selected": isSelected, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
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, import_jsx_runtime43.jsx)("div", { role: "row", className: "grid grid-cols-7 gap-[2px]", children: cells }, `row-${r}`)
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 import_react51 = require("react");
3269
- var import_jsx_runtime44 = require("react/jsx-runtime");
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, import_react51.forwardRef)(function DatePicker2({
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, import_react51.useState)(false);
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, import_jsx_runtime44.jsxs)(RadixPopover2.Root, { open, onOpenChange: setOpen, children: [
3292
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(RadixPopover2.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
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, import_jsx_runtime44.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: "\u25A2" }),
3310
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: cn("flex-1 truncate", !value && "text-text-dim"), children: value ? format(value) : emptyLabel ?? placeholder })
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, import_jsx_runtime44.jsx)(RadixPopover2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
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, import_jsx_runtime44.jsx)(
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, import_jsx_runtime44.jsx)("input", { type: "hidden", name, value: value ? value.toISOString() : "", readOnly: true })
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 import_react52 = require("react");
3342
- var import_jsx_runtime45 = require("react/jsx-runtime");
3343
- var Dots = (0, import_react52.forwardRef)(function Dots2({ total, current, onChange, className, "aria-label": ariaLabel = "Progress", ...props }, ref) {
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, import_jsx_runtime45.jsx)(
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, import_jsx_runtime45.jsx)(
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, import_jsx_runtime45.jsx)("span", { "aria-hidden": true, className: sharedClass }, i);
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 import_react53 = require("react");
3385
- var import_jsx_runtime46 = require("react/jsx-runtime");
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, import_react53.forwardRef)(function Dropzone2({
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, import_react53.useState)(false);
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, import_jsx_runtime46.jsxs)(
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, import_jsx_runtime46.jsx)(
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, import_jsx_runtime46.jsx)(
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, import_jsx_runtime46.jsx)("div", { className: "mb-1 text-[13px] font-medium", children: title }),
3457
- description && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "text-text-dim text-[11px]", children: description })
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 import_class_variance_authority10 = require("class-variance-authority");
3466
- var import_react54 = require("react");
3467
- var import_jsx_runtime47 = require("react/jsx-runtime");
3468
- var plateStyles = (0, import_class_variance_authority10.cva)("grid h-12 w-12 place-items-center rounded-base text-[22px]", {
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, import_react54.forwardRef)(function EmptyState2({ icon, title, description, action, chips, tone, className, ...props }, ref) {
3481
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
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, import_jsx_runtime47.jsx)("span", { "aria-hidden": true, className: plateStyles({ tone: tone ?? "neutral" }), children: icon }),
3492
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "text-[14px] font-medium", children: title }),
3493
- description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "text-text-muted max-w-[260px] text-[12px] leading-[1.5]", children: description }),
3494
- chips && chips.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "flex w-full flex-col gap-1", children: chips.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
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 import_react55 = require("react");
3517
- var import_jsx_runtime48 = require("react/jsx-runtime");
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, import_react55.forwardRef)(function FileChip2({ name, size, progress, icon, onRemove, failed, className, ...props }, ref) {
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, import_jsx_runtime48.jsxs)(
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, import_jsx_runtime48.jsx)(
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, import_jsx_runtime48.jsxs)("div", { className: "min-w-0 flex-1", children: [
3546
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "truncate text-[12px] font-medium", children: name }),
3547
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: cn("font-mono text-[10px]", failed ? "text-err" : "text-text-dim"), children: [
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, import_jsx_runtime48.jsxs)("span", { children: [
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, import_jsx_runtime48.jsx)("div", { className: "bg-panel mt-1 h-[2px] overflow-hidden rounded-full", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
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, import_jsx_runtime48.jsx)(
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 import_react56 = require("react");
3587
- var import_jsx_runtime49 = require("react/jsx-runtime");
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, import_react56.forwardRef)(function FilterPanel2({
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, import_react56.useCallback)(
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, import_react56.useCallback)(() => {
3806
+ const handleReset = (0, import_react57.useCallback)(() => {
3619
3807
  setSelection(EMPTY);
3620
3808
  onReset?.();
3621
3809
  }, [setSelection, onReset]);
3622
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
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, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2", children: [
3635
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-text-dim font-mono text-[10px] tracking-[1.4px] uppercase", children: title }),
3636
- total > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { size: "sm", variant: "accent", children: total }),
3637
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
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, import_jsx_runtime49.jsx)(
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, import_react56.useState)(facet.defaultOpen ?? true);
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, import_jsx_runtime49.jsxs)("section", { className: "flex flex-col gap-1", children: [
3672
- collapsible ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
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, import_jsx_runtime49.jsx)("span", { className: "flex-1 text-left", children: facet.label }),
3686
- selectedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { size: "sm", variant: "neutral", children: selectedCount }),
3687
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-70", children: isOpen ? "\u25BE" : "\u25B8" })
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, import_jsx_runtime49.jsxs)("div", { className: cn(headingClass, "px-1 py-[2px]"), children: [
3691
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "flex-1", children: facet.label }),
3692
- selectedCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { size: "sm", variant: "neutral", children: selectedCount })
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, import_jsx_runtime49.jsx)("ul", { className: "m-0 flex list-none flex-col gap-[2px] p-0", children: facet.options.map((option) => {
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, import_jsx_runtime49.jsxs)("li", { className: "flex items-center gap-2 px-1 py-[3px]", children: [
3698
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
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, import_jsx_runtime49.jsx)("span", { className: "text-text-dim ml-auto font-mono text-[10px] tabular-nums", children: count })
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 import_react58 = require("react");
3901
+ var import_react59 = require("react");
3714
3902
 
3715
3903
  // src/patterns/RadialProgress/RadialProgress.tsx
3716
- var import_react57 = require("react");
3717
- var import_jsx_runtime50 = require("react/jsx-runtime");
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, import_react57.forwardRef)(
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, import_jsx_runtime50.jsxs)(
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, import_jsx_runtime50.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
3756
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
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, import_jsx_runtime50.jsx)(
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, import_jsx_runtime50.jsx)("div", { className: "absolute inset-0 grid place-items-center font-mono text-[11px] font-medium tabular-nums", children: children ?? `${Math.round(pct)}%` })
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 import_jsx_runtime51 = require("react/jsx-runtime");
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, import_react58.forwardRef)(function HealthScore2({
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, import_jsx_runtime51.jsxs)(
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, import_jsx_runtime51.jsx)(RadialProgress, { value, max, size, tone: resolvedTone }),
3835
- label && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "text-text-muted mt-1 text-[12px] leading-tight", children: label }),
3836
- typeof delta === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: cn("font-mono text-[11px] tabular-nums", toneTextClass[indicatorTone]), children: [
3837
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { "aria-hidden": true, children: deltaGlyph(delta) }),
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, import_jsx_runtime51.jsx)(
4035
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3848
4036
  HoverCard,
3849
4037
  {
3850
- trigger: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "inline-flex", children: core }),
3851
- content: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex min-w-[180px] flex-col gap-2", children: [
3852
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "text-text-dim font-mono text-[9px] tracking-[1.4px] uppercase", children: "Breakdown" }),
3853
- /* @__PURE__ */ (0, import_jsx_runtime51.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_runtime51.jsxs)("li", { className: "flex items-center gap-2", children: [
3854
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-text-muted flex-1 truncate", children: entry.label }),
3855
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
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 import_react59 = require("react");
3874
- var import_jsx_runtime52 = require("react/jsx-runtime");
3875
- var LargeTitle = (0, import_react59.forwardRef)(function LargeTitle2({ title, eyebrow, trailing, className, ...props }, ref) {
3876
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
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, import_jsx_runtime52.jsxs)("div", { className: "min-w-0 flex-1", children: [
3884
- eyebrow && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "text-m-eyebrow text-accent mb-[6px] font-mono tracking-wide uppercase", children: eyebrow }),
3885
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("h1", { className: "text-m-h1 m-0 truncate leading-tight font-medium tracking-tight", children: title })
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, import_jsx_runtime52.jsx)("div", { className: "shrink-0", children: trailing })
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 import_react60 = require("react");
3897
- var import_jsx_runtime53 = require("react/jsx-runtime");
3898
- var Menubar = (0, import_react60.forwardRef)(function Menubar2({ className, ...props }, ref) {
3899
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
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, import_react60.forwardRef)(
4101
+ var MenubarTrigger = (0, import_react61.forwardRef)(
3914
4102
  function MenubarTrigger2({ className, ...props }, ref) {
3915
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
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, import_react60.forwardRef)(
4120
+ var MenubarContent = (0, import_react61.forwardRef)(
3933
4121
  function MenubarContent2({ className, sideOffset = 6, align = "start", ...props }, ref) {
3934
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(RadixMenubar.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
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, import_react60.forwardRef)(function MenubarItem2({ trailing, destructive, className, children, ...props }, ref) {
3957
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
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, import_jsx_runtime53.jsx)("span", { className: "flex-1", children }),
3965
- trailing && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: trailing })
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, import_react60.forwardRef)(
4159
+ var MenubarSeparator = (0, import_react61.forwardRef)(
3972
4160
  function MenubarSeparator2({ className, ...props }, ref) {
3973
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
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 import_react62 = require("react");
4175
+ var import_react63 = require("react");
3988
4176
 
3989
4177
  // src/patterns/Sidebar/Sidebar.tsx
3990
- var import_react61 = require("react");
3991
- var import_jsx_runtime54 = require("react/jsx-runtime");
3992
- var Sidebar = (0, import_react61.forwardRef)(function Sidebar2({ width = 240, className, style, ...props }, ref) {
3993
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
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, import_react61.forwardRef)(
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, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
4010
- icon && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { "aria-hidden": true, className: "w-[14px] text-center opacity-80", children: icon }),
4011
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "flex-1 truncate", children: label }),
4012
- badge != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
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, import_jsx_runtime54.jsx)(
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, import_jsx_runtime54.jsx)(
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, import_react61.forwardRef)(function NavSection2({
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, import_react61.useState)(defaultOpen);
4264
+ const [internalOpen, setInternalOpen] = (0, import_react62.useState)(defaultOpen);
4077
4265
  const isOpen = !collapsible || (isControlled ? open : internalOpen);
4078
- const toggle = (0, import_react61.useCallback)(() => {
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, import_jsx_runtime54.jsxs)("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
4085
- collapsible ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
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, import_jsx_runtime54.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: icon }),
4099
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "flex-1 text-left", children: label }),
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, import_jsx_runtime54.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-70", children: isOpen ? "\u25BE" : "\u25B8" })
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, import_jsx_runtime54.jsxs)("div", { className: eyebrowClass, children: [
4105
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: icon }),
4106
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "flex-1", children: label }),
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, import_jsx_runtime54.jsx)(
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 import_jsx_runtime55 = require("react/jsx-runtime");
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, import_react62.forwardRef)(function NavBar2({
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, import_react62.useState)(defaultValue);
4329
+ const [internalValue, setInternalValue] = (0, import_react63.useState)(defaultValue);
4142
4330
  const activeId = isControlled ? value : internalValue;
4143
- const [drawerOpen, setDrawerOpen] = (0, import_react62.useState)(false);
4144
- const select = (0, import_react62.useCallback)(
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, import_react62.useCallback)(
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, import_jsx_runtime55.jsx)("nav", { "aria-label": "Mobile navigation", className: "flex flex-col gap-1", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsxs)(
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, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)("div", { className: "flex flex-1 items-center text-[13px] font-medium whitespace-nowrap", children: brand }),
4191
- actions && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex items-center gap-3", children: actions })
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, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
4384
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
4197
4385
  mobileBar,
4198
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
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, import_jsx_runtime55.jsx)("div", { className: "shrink-0 text-[13px] font-medium whitespace-nowrap", children: brand }),
4210
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(RadixNav.Root, { className: "relative flex-1", delayDuration: 120, children: [
4211
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(RadixNav.List, { className: "m-0! flex list-none! items-center gap-1 p-0! [&_li]:m-0!", children: items.map(
4212
- (item) => item.children?.length ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)(RadixNav.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)("div", { className: "z-popover absolute top-full left-0 flex justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(RadixNav.Viewport, { className: "origin-top-left data-[state=open]:animate-[ship-fade-in_120ms_var(--easing-out)]" }) })
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, import_jsx_runtime55.jsx)("div", { className: "flex items-center gap-3", children: actions })
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, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
4437
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
4250
4438
  mobileBar,
4251
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
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, import_jsx_runtime55.jsx)("div", { className: "px-2 py-1 text-[13px] font-medium", children: brand }),
4265
- /* @__PURE__ */ (0, import_jsx_runtime55.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_runtime55.jsx)(
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, import_jsx_runtime55.jsx)("div", { className: "border-border mt-auto flex flex-col gap-2 border-t pt-3", children: actions })
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, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
4308
- item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
4309
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: item.label }),
4310
- item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ItemBadge, { active, children: item.badge })
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, import_jsx_runtime55.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsxs)(RadixNav.Item, { children: [
4339
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
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, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
4352
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: item.label }),
4353
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)(RadixNav.Content, { className: "border-border bg-panel min-w-[220px] rounded-xs border p-2 shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime55.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_runtime55.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(DropdownLink, { item: child, active: child.id === activeId, onActivate }) }, child.id)) }) })
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, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
4382
- item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "opacity-80", children: item.icon }),
4383
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "flex-1", children: item.label }),
4384
- item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ItemBadge, { active, children: item.badge })
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, import_jsx_runtime55.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsx)(RadixNav.Link, { asChild: true, active, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
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, import_react62.useState)(treeActive);
4415
- const prevTreeActive = (0, import_react62.useRef)(treeActive);
4416
- (0, import_react62.useEffect)(() => {
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, import_jsx_runtime55.jsx)(
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, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col", children: [
4442
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
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, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "w-[14px] text-center opacity-80", children: item.icon }),
4459
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "flex-1 truncate", children: item.label }),
4460
- item.badge != null && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ItemBadge, { active: treeActive, children: item.badge }),
4461
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "aria-hidden": true, className: "text-[10px] opacity-60", children: open ? "\u25BE" : "\u25B8" })
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, import_jsx_runtime55.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_runtime55.jsx)(VerticalItem, { item: child, activeId, onActivate }, child.id)) })
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, import_jsx_runtime55.jsx)(
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 import_react63 = require("react");
4483
- var import_jsx_runtime56 = require("react/jsx-runtime");
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, import_react63.forwardRef)(
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, import_jsx_runtime56.jsxs)(
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, import_jsx_runtime56.jsxs)("header", { className: "flex items-center gap-2", children: [
4510
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[14px] font-medium", children: title }),
4511
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-dim ml-auto font-mono text-[11px] tabular-nums", children: progressLabel ?? `${done} of ${total} complete` })
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, import_jsx_runtime56.jsx)(
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, import_jsx_runtime56.jsx)(
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, import_jsx_runtime56.jsx)("ul", { className: "m-0 flex list-none flex-col gap-1 p-0", children: items.map((item) => {
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, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
4538
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
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, import_jsx_runtime56.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-[2px]", children: [
4548
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: cn("text-[13px]", labelStateClass[item.status]), children: item.label }),
4549
- item.description && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-muted text-[12px] leading-[1.45]", children: item.description })
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, import_jsx_runtime56.jsxs)("li", { className: "flex items-start gap-2", children: [
4557
- interactive ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
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, import_jsx_runtime56.jsx)("div", { className: labelRegionClass, children: labelBlock }),
4567
- item.action && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "shrink-0 self-center", children: item.action })
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 import_react64 = require("react");
4579
- var import_jsx_runtime57 = require("react/jsx-runtime");
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, import_react64.forwardRef)(function Pagination2({ page, total, onPageChange, siblings = 1, className, ...props }, ref) {
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, import_jsx_runtime57.jsxs)(
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, import_jsx_runtime57.jsx)(
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, import_jsx_runtime57.jsx)(
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, import_jsx_runtime57.jsx)(
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, import_jsx_runtime57.jsx)(
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 import_class_variance_authority11 = require("class-variance-authority");
4663
- var import_react65 = require("react");
4664
- var import_jsx_runtime58 = require("react/jsx-runtime");
4665
- var trackStyles = (0, import_class_variance_authority11.cva)("w-full rounded-full bg-panel-2 overflow-hidden", {
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, import_class_variance_authority11.cva)("h-full rounded-full transition-[width] duration-(--duration-step)", {
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, import_react65.forwardRef)(function Progress2({
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, import_jsx_runtime58.jsxs)("div", { ref, className: cn("flex w-full flex-col gap-2", className), ...props, children: [
4701
- label != null && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex text-[12px]", children: [
4702
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-text-muted", children: label }),
4703
- showValue && !indeterminate && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "text-text ml-auto font-mono tabular-nums", children: [
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, import_jsx_runtime58.jsx)(
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, import_jsx_runtime58.jsx)(
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, import_jsx_runtime58.jsx)("span", { "aria-hidden": true, className: fillStyles({ tone }), style: { width: `${pct}%` } })
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 import_react66 = require("react");
4736
- var import_jsx_runtime59 = require("react/jsx-runtime");
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, import_react66.forwardRef)(function PullToRefresh2({ state = "idle", label, className, ...props }, ref) {
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, import_jsx_runtime59.jsxs)(
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, import_jsx_runtime59.jsx)(
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, import_jsx_runtime59.jsx)("span", { className: "text-m-eyebrow font-mono tracking-wide uppercase", children: label ?? labels[state] })
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 import_react67 = require("react");
4781
- var import_jsx_runtime60 = require("react/jsx-runtime");
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, import_react67.forwardRef)(function Sparkline2({
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, import_react67.useMemo)(() => buildPath(values, width, height), [values, width, height]);
4812
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
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, import_jsx_runtime60.jsx)("path", { d: area, fill: stroke, fillOpacity: 0.16, stroke: "none" }),
4825
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
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 import_react68 = require("react");
4844
- var import_jsx_runtime61 = require("react/jsx-runtime");
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, import_react68.forwardRef)(function Spinner3({ size = "md", label = "Loading", className, ...props }, ref) {
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, import_jsx_runtime61.jsx)(
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, import_jsx_runtime61.jsx)(
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 import_react69 = require("react");
4878
- var import_jsx_runtime62 = require("react/jsx-runtime");
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, import_react69.forwardRef)(function Stepper2({ steps, current, className, ...props }, ref) {
4896
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
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, import_jsx_runtime62.jsxs)(import_react69.Fragment, { children: [
4909
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
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, import_jsx_runtime62.jsx)("span", { "aria-hidden": true, className: cn(dotBase, dotStateClass[state]), children: state === "done" ? "\u2713" : i + 1 }),
4916
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: cn("text-[12px]", labelStateClass2[state]), children: label })
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, import_jsx_runtime62.jsx)(
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 import_react70 = require("react");
4936
- var import_jsx_runtime63 = require("react/jsx-runtime");
4937
- var TabBar = (0, import_react70.forwardRef)(function TabBar2({ items, value, defaultValue, onValueChange, className, ...props }, ref) {
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, import_react70.useState)(defaultValue);
5127
+ const [internalValue, setInternalValue] = (0, import_react71.useState)(defaultValue);
4940
5128
  const activeId = isControlled ? value : internalValue;
4941
- const handleSelect = (0, import_react70.useCallback)(
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, import_jsx_runtime63.jsx)(
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, import_jsx_runtime63.jsx)("div", { className: "grid place-items-center", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
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, import_jsx_runtime63.jsx)("span", { "aria-hidden": true, children: item.icon }),
4981
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "sr-only", children: item.label })
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, import_jsx_runtime63.jsxs)(
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, import_jsx_runtime63.jsxs)("span", { className: "relative inline-flex", "aria-hidden": true, children: [
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, import_jsx_runtime63.jsx)(
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, import_jsx_runtime63.jsxs)("span", { className: "text-[10px] font-medium tracking-tight", children: [
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, import_jsx_runtime63.jsxs)("span", { className: "sr-only", children: [
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 import_class_variance_authority12 = require("class-variance-authority");
5035
- var import_react71 = require("react");
5036
- var import_jsx_runtime64 = require("react/jsx-runtime");
5037
- var TabsVariantContext = (0, import_react71.createContext)("underline");
5038
- var tabsListStyles = (0, import_class_variance_authority12.cva)("", {
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, import_class_variance_authority12.cva)(
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, import_react71.forwardRef)(function Tabs2({ variant = "underline", className, ...props }, ref) {
5068
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(TabsVariantContext.Provider, { value: variant, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
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, import_react71.forwardRef)(function TabsList2({ className, ...props }, ref) {
5079
- const variant = (0, import_react71.useContext)(TabsVariantContext);
5080
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(RadixTabs.List, { ref, className: cn(tabsListStyles({ variant }), className), ...props });
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, import_react71.forwardRef)(function Tab2({ className, ...props }, ref) {
5084
- const variant = (0, import_react71.useContext)(TabsVariantContext);
5085
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
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, import_react71.forwardRef)(
5283
+ var TabsContent = (0, import_react72.forwardRef)(
5096
5284
  function TabsContent2({ className, ...props }, ref) {
5097
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
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 import_react72 = require("react");
5114
- var import_jsx_runtime65 = require("react/jsx-runtime");
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, import_react72.forwardRef)(function Timeline2({ events, className, children, ...props }, ref) {
5123
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
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, import_jsx_runtime65.jsx)(TimelineItem, { tone: e.tone, time: e.time, description: e.description, children: e.title }, i)) : children
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, import_react72.forwardRef)(function TimelineItem2({ tone = "accent", description, time, className, children, ...props }, ref) {
5139
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("li", { ref, className: cn("relative mb-[18px] last:mb-0", className), ...props, children: [
5140
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
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, import_jsx_runtime65.jsx)("div", { className: "text-[13px] font-medium", children }),
5151
- description && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "text-text-muted text-[12px]", children: description }),
5152
- time && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "text-text-dim mt-[2px] font-mono text-[10px]", children: time })
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 import_react73 = require("react");
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 import_jsx_runtime66 = require("react/jsx-runtime");
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, import_react73.forwardRef)(
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, import_jsx_runtime66.jsx)(
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, import_jsx_runtime66.jsxs)("li", { className: "relative mb-4 last:mb-0", children: [
5218
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
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, import_jsx_runtime66.jsxs)("div", { className: "flex items-baseline gap-2", children: [
5229
- event.icon && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { "aria-hidden": true, className: "text-text-muted font-mono text-[12px]", children: event.icon }),
5230
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-[13px] font-medium", children: event.title }),
5231
- time && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("time", { className: "text-text-dim ml-auto font-mono text-[10px]", children: time })
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, import_jsx_runtime66.jsxs)("div", { className: "text-text-muted mt-[2px] flex items-center gap-[6px] text-[12px]", children: [
5234
- event.actor.avatar && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { "aria-hidden": true, className: "inline-flex", children: event.actor.avatar }),
5235
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { children: event.actor.name })
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, import_jsx_runtime66.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 })
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 import_react74 = require("react");
5248
- var import_jsx_runtime67 = require("react/jsx-runtime");
5249
- var Topbar = (0, import_react74.forwardRef)(function Topbar2({
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, import_jsx_runtime67.jsxs)(
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, import_jsx_runtime67.jsx)(
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, import_jsx_runtime67.jsx)(
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, import_jsx_runtime67.jsx)("path", { d: "m15 18-6-6 6-6" })
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, import_jsx_runtime67.jsxs)("div", { className: cn("min-w-0", isTouch && "flex-1"), children: [
5305
- isTouch && eyebrow && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "text-m-eyebrow text-accent font-mono tracking-wide uppercase", children: eyebrow }),
5306
- title && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
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, import_jsx_runtime67.jsx)("div", { className: "flex flex-1 items-center" }),
5317
- actions && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: cn("flex items-center", isTouch ? "gap-1" : "gap-3"), children: actions }),
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 import_react75 = require("react");
5327
- var import_jsx_runtime68 = require("react/jsx-runtime");
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, import_react75.forwardRef)(function Tree2({
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, import_react75.useMemo)(() => {
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, import_react75.useState)(null);
5367
- (0, import_react75.useEffect)(() => {
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, import_react75.useMemo)(() => {
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, import_react75.useRef)(null);
5378
- const setRefs = (0, import_react75.useCallback)(
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, import_react75.useCallback)((id) => {
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, import_react75.useCallback)(
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, import_react75.useCallback)(
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, import_react75.useCallback)(
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, import_react75.useCallback)(
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, import_react75.useCallback)(
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, import_react75.useCallback)(
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, import_jsx_runtime68.jsx)(
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, import_jsx_runtime68.jsx)(
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, import_jsx_runtime68.jsxs)("li", { role: "none", children: [
5564
- /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
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, import_jsx_runtime68.jsx)("span", { "aria-hidden": true, className: "text-text-dim grid w-3 place-items-center text-[10px]", children: hasChildren ? isExpanded ? "\u25BE" : "\u25B8" : "" }),
5588
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { "aria-hidden": true, className: "text-[12px] opacity-80", children: item.icon }),
5589
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "flex-1 truncate", children: item.label }),
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, import_jsx_runtime68.jsx)("ul", { role: "group", className: "flex flex-col gap-px", children: (item.children ?? []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
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 import_react76 = require("react");
5614
- var import_jsx_runtime69 = require("react/jsx-runtime");
5615
- var WizardDialog = (0, import_react76.forwardRef)(function WizardDialog2({
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, import_react76.useState)(initialStep);
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, import_react76.useCallback)(
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, import_react76.useCallback)(() => setCurrent((c) => Math.min(c + 1, total - 1)), [total]);
5642
- const goBack = (0, import_react76.useCallback)(() => setCurrent((c) => Math.max(c - 1, 0)), []);
5643
- const ctx = (0, import_react76.useMemo)(
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, import_react76.useMemo)(() => steps.map((s) => ({ id: s.id, label: s.label })), [steps]);
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, import_jsx_runtime69.jsx)(DialogRoot, { open, defaultOpen, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(DialogContent, { ref, width, children: [
5667
- title && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(WizardTitle, { children: title }),
5668
- description && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(WizardDescription, { children: description }),
5669
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "mb-5", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Stepper, { steps: stepperSteps, current: safeCurrent }) }),
5670
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "mb-5", children: body }),
5671
- /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex justify-end gap-2", children: [
5672
- cancelLabel && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { type: "button", variant: "ghost", onClick: onCancel, children: cancelLabel }),
5673
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { type: "button", variant: "secondary", onClick: goBack, disabled: ctx.isFirst, children: backLabel }),
5674
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { type: "button", variant: "primary", onClick: handlePrimary, disabled: !canAdvance, children: ctx.isLast ? completeLabel : nextLabel })
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, import_jsx_runtime69.jsx)(RadixDialog5.Title, { className: "mb-2 text-[16px] font-medium", children });
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, import_jsx_runtime69.jsx)(RadixDialog5.Description, { className: "text-text-muted mb-4 text-[13px] leading-[1.55]", children });
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,