@mirror-physics/fractal-ui 0.2.0-next.57 → 0.2.0-next.59

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
  SidebarSection: () => SidebarSection,
94
94
  SortableTable: () => SortableTable,
95
95
  SortableTableGhost: () => SortableTableGhost,
96
+ TableSearch: () => TableSearch,
96
97
  Tabs: () => Tabs,
97
98
  TabsGhost: () => TabsGhost,
98
99
  TextButton: () => TextButton,
@@ -786,10 +787,50 @@ var Input = React4.forwardRef(
786
787
  );
787
788
  Input.displayName = "Input";
788
789
 
789
- // src/components/NumberInput/NumberInput.tsx
790
+ // src/components/TableSearch/TableSearch.tsx
790
791
  var React5 = __toESM(require("react"), 1);
791
792
  var import_fractal_icons4 = require("@mirror-physics/fractal-icons");
792
793
  var import_jsx_runtime7 = require("react/jsx-runtime");
794
+ var TableSearch = React5.forwardRef(
795
+ ({
796
+ searchType = "text",
797
+ className,
798
+ inputClassName,
799
+ placeholder,
800
+ title,
801
+ ...props
802
+ }, ref) => {
803
+ const isGlob = searchType === "glob";
804
+ const SearchIcon = isGlob ? import_fractal_icons4.MagnifyingGlassLines : import_fractal_icons4.MagnifyingGlass;
805
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
806
+ "div",
807
+ {
808
+ className: cn("fractal-table-search", className),
809
+ "data-search-type": searchType,
810
+ children: [
811
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SearchIcon, { className: "fractal-table-search__icon", size: 17, "aria-hidden": "true" }),
812
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
813
+ Input,
814
+ {
815
+ ...props,
816
+ ref,
817
+ type: "search",
818
+ className: cn("fractal-table-search__input", inputClassName),
819
+ placeholder: placeholder ?? (isGlob ? "Glob search \u2014 use *, ?, or [a-z]" : "Search"),
820
+ title: title ?? (isGlob ? "Glob pattern: *, **, ?, [abc], [a-z], and [!abc]" : void 0)
821
+ }
822
+ )
823
+ ]
824
+ }
825
+ );
826
+ }
827
+ );
828
+ TableSearch.displayName = "TableSearch";
829
+
830
+ // src/components/NumberInput/NumberInput.tsx
831
+ var React6 = __toESM(require("react"), 1);
832
+ var import_fractal_icons5 = require("@mirror-physics/fractal-icons");
833
+ var import_jsx_runtime8 = require("react/jsx-runtime");
793
834
  function NumberInput({
794
835
  unit,
795
836
  className,
@@ -801,7 +842,7 @@ function NumberInput({
801
842
  max,
802
843
  ...props
803
844
  }) {
804
- const inputRef = React5.useRef(null);
845
+ const inputRef = React6.useRef(null);
805
846
  const numericValue = Number(value ?? defaultValue);
806
847
  const characterCount = Math.max(String(value ?? defaultValue ?? "").length, 1);
807
848
  const controlLabel = typeof props["aria-label"] === "string" ? props["aria-label"] : "value";
@@ -815,8 +856,8 @@ function NumberInput({
815
856
  input.dispatchEvent(new Event("input", { bubbles: true }));
816
857
  input.focus();
817
858
  };
818
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("fractal-number-input", unit && "fractal-number-input--with-unit", className), children: [
819
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
859
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: cn("fractal-number-input", unit && "fractal-number-input--with-unit", className), children: [
860
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
820
861
  Input,
821
862
  {
822
863
  ref: inputRef,
@@ -830,7 +871,7 @@ function NumberInput({
830
871
  ...props
831
872
  }
832
873
  ),
833
- unit && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
874
+ unit && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
834
875
  "span",
835
876
  {
836
877
  className: "fractal-number-input-unit",
@@ -839,8 +880,8 @@ function NumberInput({
839
880
  children: unit
840
881
  }
841
882
  ),
842
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "fractal-number-input-controls", children: [
843
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
883
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "fractal-number-input-controls", children: [
884
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
844
885
  "button",
845
886
  {
846
887
  type: "button",
@@ -848,10 +889,10 @@ function NumberInput({
848
889
  "aria-label": `Decrease ${controlLabel}`,
849
890
  disabled: decrementDisabled,
850
891
  onClick: () => changeByStep(-1),
851
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_fractal_icons4.Minus, { "aria-hidden": "true", size: 16 })
892
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_fractal_icons5.Minus, { "aria-hidden": "true", size: 16 })
852
893
  }
853
894
  ),
854
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
895
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
855
896
  "button",
856
897
  {
857
898
  type: "button",
@@ -859,7 +900,7 @@ function NumberInput({
859
900
  "aria-label": `Increase ${controlLabel}`,
860
901
  disabled: incrementDisabled,
861
902
  onClick: () => changeByStep(1),
862
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_fractal_icons4.Plus, { "aria-hidden": "true", size: 16 })
903
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_fractal_icons5.Plus, { "aria-hidden": "true", size: 16 })
863
904
  }
864
905
  )
865
906
  ] })
@@ -867,10 +908,10 @@ function NumberInput({
867
908
  }
868
909
 
869
910
  // src/components/PasswordInput/PasswordInput.tsx
870
- var React6 = __toESM(require("react"), 1);
871
- var import_fractal_icons5 = require("@mirror-physics/fractal-icons");
872
- var import_jsx_runtime8 = require("react/jsx-runtime");
873
- var PasswordInput = React6.forwardRef(
911
+ var React7 = __toESM(require("react"), 1);
912
+ var import_fractal_icons6 = require("@mirror-physics/fractal-icons");
913
+ var import_jsx_runtime9 = require("react/jsx-runtime");
914
+ var PasswordInput = React7.forwardRef(
874
915
  ({
875
916
  className,
876
917
  disabled,
@@ -878,15 +919,15 @@ var PasswordInput = React6.forwardRef(
878
919
  hidePasswordLabel = "Hide password",
879
920
  ...props
880
921
  }, ref) => {
881
- const [passwordVisible, setPasswordVisible] = React6.useState(false);
922
+ const [passwordVisible, setPasswordVisible] = React7.useState(false);
882
923
  const toggleLabel = passwordVisible ? hidePasswordLabel : showPasswordLabel;
883
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
924
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
884
925
  "div",
885
926
  {
886
927
  className: cn("fractal-password-input", className),
887
928
  "data-password-visible": passwordVisible ? "" : void 0,
888
929
  children: [
889
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
930
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
890
931
  Input,
891
932
  {
892
933
  ...props,
@@ -896,7 +937,7 @@ var PasswordInput = React6.forwardRef(
896
937
  type: passwordVisible ? "text" : "password"
897
938
  }
898
939
  ),
899
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
940
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
900
941
  "button",
901
942
  {
902
943
  type: "button",
@@ -906,7 +947,7 @@ var PasswordInput = React6.forwardRef(
906
947
  disabled,
907
948
  title: toggleLabel,
908
949
  onClick: () => setPasswordVisible((visible) => !visible),
909
- children: passwordVisible ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_fractal_icons5.EyeSlash, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_fractal_icons5.Eye, { "aria-hidden": "true", size: 18 })
950
+ children: passwordVisible ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_fractal_icons6.EyeSlash, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_fractal_icons6.Eye, { "aria-hidden": "true", size: 18 })
910
951
  }
911
952
  )
912
953
  ]
@@ -917,10 +958,10 @@ var PasswordInput = React6.forwardRef(
917
958
  PasswordInput.displayName = "PasswordInput";
918
959
 
919
960
  // src/components/Label/Label.tsx
920
- var React7 = __toESM(require("react"), 1);
921
- var import_jsx_runtime9 = require("react/jsx-runtime");
922
- var Label = React7.forwardRef(
923
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
961
+ var React8 = __toESM(require("react"), 1);
962
+ var import_jsx_runtime10 = require("react/jsx-runtime");
963
+ var Label = React8.forwardRef(
964
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
924
965
  "label",
925
966
  {
926
967
  ref,
@@ -932,20 +973,20 @@ var Label = React7.forwardRef(
932
973
  Label.displayName = "Label";
933
974
 
934
975
  // src/components/Alert/Alert.tsx
935
- var React8 = __toESM(require("react"), 1);
936
- var import_fractal_icons6 = require("@mirror-physics/fractal-icons");
937
- var import_jsx_runtime10 = require("react/jsx-runtime");
976
+ var React9 = __toESM(require("react"), 1);
977
+ var import_fractal_icons7 = require("@mirror-physics/fractal-icons");
978
+ var import_jsx_runtime11 = require("react/jsx-runtime");
938
979
  var defaultIcons = {
939
- default: import_fractal_icons6.CircleInfo,
940
- info: import_fractal_icons6.CircleInfo,
941
- success: import_fractal_icons6.CircleCheck,
942
- warning: import_fractal_icons6.Warning,
943
- error: import_fractal_icons6.CircleClose
980
+ default: import_fractal_icons7.CircleInfo,
981
+ info: import_fractal_icons7.CircleInfo,
982
+ success: import_fractal_icons7.CircleCheck,
983
+ warning: import_fractal_icons7.Warning,
984
+ error: import_fractal_icons7.CircleClose
944
985
  };
945
- var Alert = React8.forwardRef(
986
+ var Alert = React9.forwardRef(
946
987
  ({ className, variant = "default", icon, children, ...props }, ref) => {
947
988
  const DefaultIcon = defaultIcons[variant];
948
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
989
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
949
990
  "div",
950
991
  {
951
992
  ref,
@@ -953,27 +994,27 @@ var Alert = React8.forwardRef(
953
994
  className: cn("fractal-alert", `fractal-alert--${variant}`, className),
954
995
  ...props,
955
996
  children: [
956
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "fractal-alert-icon", "aria-hidden": true, children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DefaultIcon, { size: 18 }) }),
957
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "fractal-alert-content", children })
997
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "fractal-alert-icon", "aria-hidden": true, children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DefaultIcon, { size: 18 }) }),
998
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "fractal-alert-content", children })
958
999
  ]
959
1000
  }
960
1001
  );
961
1002
  }
962
1003
  );
963
1004
  Alert.displayName = "Alert";
964
- var AlertTitle = React8.forwardRef(
965
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h5", { ref, className: cn("fractal-alert-title", className), ...props })
1005
+ var AlertTitle = React9.forwardRef(
1006
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h5", { ref, className: cn("fractal-alert-title", className), ...props })
966
1007
  );
967
1008
  AlertTitle.displayName = "AlertTitle";
968
- var AlertDescription = React8.forwardRef(
969
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cn("fractal-alert-description", className), ...props })
1009
+ var AlertDescription = React9.forwardRef(
1010
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { ref, className: cn("fractal-alert-description", className), ...props })
970
1011
  );
971
1012
  AlertDescription.displayName = "AlertDescription";
972
1013
 
973
1014
  // src/components/Toggle/Toggle.tsx
974
- var import_jsx_runtime11 = require("react/jsx-runtime");
1015
+ var import_jsx_runtime12 = require("react/jsx-runtime");
975
1016
  function Toggle({ checked, onChange, label, className }) {
976
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1017
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
977
1018
  "button",
978
1019
  {
979
1020
  type: "button",
@@ -982,8 +1023,8 @@ function Toggle({ checked, onChange, label, className }) {
982
1023
  className: cn("fractal-toggle", className),
983
1024
  onClick: () => onChange(!checked),
984
1025
  children: [
985
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cn("fractal-toggle-track", checked && "fractal-toggle-track--checked"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cn("fractal-toggle-thumb", checked && "fractal-toggle-thumb--checked") }) }),
986
- label && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "fractal-toggle-label", children: label })
1026
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: cn("fractal-toggle-track", checked && "fractal-toggle-track--checked"), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: cn("fractal-toggle-thumb", checked && "fractal-toggle-thumb--checked") }) }),
1027
+ label && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "fractal-toggle-label", children: label })
987
1028
  ]
988
1029
  }
989
1030
  );
@@ -1044,7 +1085,7 @@ function useEscapeDismiss(priority, handler, enabled = true) {
1044
1085
 
1045
1086
  // src/components/UILoader/UILoader.tsx
1046
1087
  var import_react3 = require("react");
1047
- var import_jsx_runtime12 = require("react/jsx-runtime");
1088
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1048
1089
  var LEFT = "M0 53C0 51 1.6 49.5 3.6 49.5h16.5c1 0 1.9.4 2.5 1L42.1 69.6c.7.7 1.1 1.6 1.1 2.5v16.2c0 2-1.6 3.5-3.6 3.5H23.1c-1 0-1.9-.4-2.5-1L1.1 71.7C.4 71 0 70.1 0 69.2V53Z";
1049
1090
  var CENTER = "M0 3.5C0 1.6 1.6 0 3.6 0h16.5c1 0 1.9.4 2.5 1L92.5 69.6c.7.7 1 1.6 1 2.5v16.2c0 2-1.6 3.5-3.6 3.5H73.4c-1 0-1.9-.4-2.5-1L1.1 22.2C.4 21.6 0 20.7 0 19.7V3.5Z";
1050
1091
  var RIGHT = "M50.4 3.5C50.4 1.6 52 0 54 0h16.5c1 0 1.9.4 2.5 1l69.8 68.6c.7.7 1.1 1.6 1.1 2.5v16.2c0 2-1.6 3.5-3.6 3.5h-16.5c-1 0-1.9-.4-2.5-1L51.4 22.2c-.7-.6-1-1.5-1-2.5V3.5Z";
@@ -1053,7 +1094,7 @@ function UILoader({ size = 48, tone = "neutral", className, style, label = "Load
1053
1094
  const clipId = `fractal-ui-loader-clip-${rawId}`;
1054
1095
  const gradientId = `fractal-ui-loader-gradient-${rawId}`;
1055
1096
  const height = typeof size === "number" ? `${size}px` : size;
1056
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1097
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1057
1098
  "span",
1058
1099
  {
1059
1100
  "aria-hidden": ariaHidden || void 0,
@@ -1061,52 +1102,52 @@ function UILoader({ size = 48, tone = "neutral", className, style, label = "Load
1061
1102
  className: cn("fractal-ui-loader", `fractal-ui-loader--${tone}`, className),
1062
1103
  role: ariaHidden ? void 0 : "status",
1063
1104
  style,
1064
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("svg", { "aria-hidden": "true", fill: "none", viewBox: "0 0 144 92", style: { height, width: "auto" }, children: [
1065
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("defs", { children: [
1066
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("linearGradient", { id: gradientId, x1: "59", x2: "94.3", y1: "0", y2: "89.1", gradientUnits: "userSpaceOnUse", children: [
1067
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("stop", { className: "fractal-ui-loader__stop-start", offset: "0" }),
1068
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("stop", { className: "fractal-ui-loader__stop-end", offset: "1" })
1105
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("svg", { "aria-hidden": "true", fill: "none", viewBox: "0 0 144 92", style: { height, width: "auto" }, children: [
1106
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("defs", { children: [
1107
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("linearGradient", { id: gradientId, x1: "59", x2: "94.3", y1: "0", y2: "89.1", gradientUnits: "userSpaceOnUse", children: [
1108
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("stop", { className: "fractal-ui-loader__stop-start", offset: "0" }),
1109
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("stop", { className: "fractal-ui-loader__stop-end", offset: "1" })
1069
1110
  ] }),
1070
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("linearGradient", { id: `${gradientId}-shine`, x1: "0", x2: "1", y1: "0", y2: "0", children: [
1071
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("stop", { offset: "0.4", stopColor: "white", stopOpacity: "0" }),
1072
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("stop", { offset: "0.5", stopColor: "white", stopOpacity: "0.62" }),
1073
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("stop", { offset: "0.6", stopColor: "white", stopOpacity: "0" })
1111
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("linearGradient", { id: `${gradientId}-shine`, x1: "0", x2: "1", y1: "0", y2: "0", children: [
1112
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("stop", { offset: "0.4", stopColor: "white", stopOpacity: "0" }),
1113
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("stop", { offset: "0.5", stopColor: "white", stopOpacity: "0.62" }),
1114
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("stop", { offset: "0.6", stopColor: "white", stopOpacity: "0" })
1074
1115
  ] }),
1075
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("clipPath", { id: clipId, children: [
1076
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: LEFT }),
1077
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: CENTER }),
1078
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: RIGHT })
1116
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("clipPath", { id: clipId, children: [
1117
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: LEFT }),
1118
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: CENTER }),
1119
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: RIGHT })
1079
1120
  ] })
1080
1121
  ] }),
1081
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: CENTER, fill: `url(#${gradientId})` }),
1082
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: RIGHT, fill: `url(#${gradientId})` }),
1083
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: LEFT, fill: `url(#${gradientId})` }),
1084
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("g", { clipPath: `url(#${clipId})`, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("g", { className: "fractal-ui-loader__shine-axis", transform: "translate(72 46) rotate(68.4)", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("rect", { className: "fractal-ui-loader__shine", x: "-160", y: "-100", width: "320", height: "200", fill: `url(#${gradientId}-shine)` }) }) })
1122
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: CENTER, fill: `url(#${gradientId})` }),
1123
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: RIGHT, fill: `url(#${gradientId})` }),
1124
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: LEFT, fill: `url(#${gradientId})` }),
1125
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("g", { clipPath: `url(#${clipId})`, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("g", { className: "fractal-ui-loader__shine-axis", transform: "translate(72 46) rotate(68.4)", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("rect", { className: "fractal-ui-loader__shine", x: "-160", y: "-100", width: "320", height: "200", fill: `url(#${gradientId}-shine)` }) }) })
1085
1126
  ] })
1086
1127
  }
1087
1128
  );
1088
1129
  }
1089
1130
 
1090
1131
  // src/components/Modal/Modal.tsx
1091
- var import_jsx_runtime13 = require("react/jsx-runtime");
1092
- var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M12 4L4 12M4 4L12 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1132
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1133
+ var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: "M12 4L4 12M4 4L12 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1093
1134
  function Modal({ open, onClose, title, children, danger, warn, footer, noClose, closeDisabled = false, size = "sm", loading = false, loadingLabel = "Loading", scrollable = false, className }) {
1094
1135
  useEscapeDismiss(80, onClose, open && !noClose && !closeDisabled);
1095
1136
  if (!open) return null;
1096
1137
  const sizeClass = `fractal-modal-panel--${size}`;
1097
1138
  const accentClass = danger ? "fractal-modal-panel--danger" : warn ? "fractal-modal-panel--warn" : "";
1098
1139
  return (0, import_react_dom.createPortal)(
1099
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "fractal-modal-overlay", onClick: noClose || closeDisabled ? void 0 : onClose, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1140
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "fractal-modal-overlay", onClick: noClose || closeDisabled ? void 0 : onClose, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1100
1141
  "div",
1101
1142
  {
1102
1143
  className: cn("fractal-modal-panel", sizeClass, accentClass, scrollable && "fractal-modal-panel--scrollable", className),
1103
1144
  onClick: (e) => e.stopPropagation(),
1104
1145
  children: [
1105
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "fractal-modal-title-row", children: [
1106
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h3", { className: cn("fractal-modal-title", danger && "fractal-modal-title--danger", warn && "fractal-modal-title--warn"), children: title }),
1107
- !noClose && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", onClick: onClose, title: "Close", disabled: closeDisabled, className: "fractal-modal-close", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CloseIcon, {}) })
1146
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "fractal-modal-title-row", children: [
1147
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h3", { className: cn("fractal-modal-title", danger && "fractal-modal-title--danger", warn && "fractal-modal-title--warn"), children: title }),
1148
+ !noClose && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", onClick: onClose, title: "Close", disabled: closeDisabled, className: "fractal-modal-close", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CloseIcon, {}) })
1108
1149
  ] }),
1109
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1150
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1110
1151
  "div",
1111
1152
  {
1112
1153
  "aria-busy": loading || void 0,
@@ -1116,10 +1157,10 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
1116
1157
  loading && "fractal-modal-body--loading",
1117
1158
  scrollable && "fractal-modal-body--scrollable"
1118
1159
  ),
1119
- children: loading ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(UILoader, { label: loadingLabel }) : children
1160
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(UILoader, { label: loadingLabel }) : children
1120
1161
  }
1121
1162
  ),
1122
- footer && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("fractal-modal-footer", scrollable && "fractal-modal-footer--divided"), children: footer })
1163
+ footer && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("fractal-modal-footer", scrollable && "fractal-modal-footer--divided"), children: footer })
1123
1164
  ]
1124
1165
  }
1125
1166
  ) }),
@@ -1128,17 +1169,17 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
1128
1169
  }
1129
1170
 
1130
1171
  // src/components/DataTable/DataTable.tsx
1131
- var import_jsx_runtime14 = require("react/jsx-runtime");
1172
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1132
1173
  function DataTable({ columns, data, emptyMessage, header, size = "md", className }) {
1133
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("fractal-datatable", `fractal-datatable--${size}`, className), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "fractal-datatable-surface", children: [
1134
- header && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "fractal-datatable-header", children: header }),
1135
- data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "fractal-datatable-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("table", { className: "fractal-datatable-table", children: [
1136
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tr", { className: "fractal-datatable-thead-row", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("th", { className: "fractal-datatable-th", style: { width: col.width }, children: col.header }, col.key)) }) }),
1137
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("tbody", { children: data.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1174
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn("fractal-datatable", `fractal-datatable--${size}`, className), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "fractal-datatable-surface", children: [
1175
+ header && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-datatable-header", children: header }),
1176
+ data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-datatable-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("table", { className: "fractal-datatable-table", children: [
1177
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("tr", { className: "fractal-datatable-thead-row", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("th", { className: "fractal-datatable-th", style: { width: col.width }, children: col.header }, col.key)) }) }),
1178
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("tbody", { children: data.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1138
1179
  "tr",
1139
1180
  {
1140
1181
  className: "fractal-datatable-row",
1141
- children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("td", { className: "fractal-datatable-td", style: { width: col.width }, children: col.render(row, rowIndex) }, col.key))
1182
+ children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("td", { className: "fractal-datatable-td", style: { width: col.width }, children: col.render(row, rowIndex) }, col.key))
1142
1183
  },
1143
1184
  rowIndex
1144
1185
  )) })
@@ -1147,9 +1188,9 @@ function DataTable({ columns, data, emptyMessage, header, size = "md", className
1147
1188
  }
1148
1189
 
1149
1190
  // src/components/Dropdown/Dropdown.tsx
1150
- var React9 = __toESM(require("react"), 1);
1151
- var import_fractal_icons7 = require("@mirror-physics/fractal-icons");
1152
- var import_jsx_runtime15 = require("react/jsx-runtime");
1191
+ var React10 = __toESM(require("react"), 1);
1192
+ var import_fractal_icons8 = require("@mirror-physics/fractal-icons");
1193
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1153
1194
  var MARGIN = 4;
1154
1195
  function Dropdown({
1155
1196
  items,
@@ -1158,6 +1199,7 @@ function Dropdown({
1158
1199
  triggerLabel = "Options",
1159
1200
  direction = "down",
1160
1201
  align = "left",
1202
+ triggerOrientation = "horizontal",
1161
1203
  triggerContent,
1162
1204
  label,
1163
1205
  iconOnly = false,
@@ -1170,10 +1212,10 @@ function Dropdown({
1170
1212
  closeOnSelect = true,
1171
1213
  disabled = false
1172
1214
  }) {
1173
- const [open, setOpen] = React9.useState(false);
1174
- const triggerRef = React9.useRef(null);
1175
- const panelRef = React9.useRef(null);
1176
- const [panelStyle, setPanelStyle] = React9.useState({});
1215
+ const [open, setOpen] = React10.useState(false);
1216
+ const triggerRef = React10.useRef(null);
1217
+ const panelRef = React10.useRef(null);
1218
+ const [panelStyle, setPanelStyle] = React10.useState({});
1177
1219
  const visibleItems = items.filter(
1178
1220
  (item) => item.icon != null || item.description != null && (typeof item.description === "string" ? item.description !== "" : true)
1179
1221
  );
@@ -1181,42 +1223,60 @@ function Dropdown({
1181
1223
  const selectableItems = visibleItems.filter((i) => i.kind !== "header");
1182
1224
  const selected = items.find((i) => i.value === selectedValue && i.kind !== "header") ?? selectableItems[0] ?? visibleItems[0];
1183
1225
  const isUp = direction === "up";
1184
- const ChevronIcon = isUp ? import_fractal_icons7.ChevronUp : import_fractal_icons7.ChevronDown;
1185
- React9.useLayoutEffect(() => {
1226
+ const isHorizontalDirection = direction === "left" || direction === "right";
1227
+ const ChevronIcon = direction === "up" ? import_fractal_icons8.ChevronUp : direction === "left" ? import_fractal_icons8.ChevronLeft : direction === "right" ? import_fractal_icons8.ChevronRight : import_fractal_icons8.ChevronDown;
1228
+ React10.useLayoutEffect(() => {
1186
1229
  if (!open || !triggerRef.current || !panelRef.current) return;
1187
1230
  const triggerRect = triggerRef.current.getBoundingClientRect();
1188
1231
  const panelRect = panelRef.current.getBoundingClientRect();
1189
1232
  const vw = window.innerWidth;
1190
1233
  const vh = window.innerHeight;
1191
- const spaceBelow = vh - triggerRect.bottom - MARGIN;
1192
- const spaceAbove = triggerRect.top - MARGIN;
1193
- let placeAbove = isUp;
1194
- if (placeAbove && panelRect.height > spaceAbove && spaceBelow > spaceAbove) {
1195
- placeAbove = false;
1196
- } else if (!placeAbove && panelRect.height > spaceBelow && spaceAbove > spaceBelow) {
1197
- placeAbove = true;
1198
- }
1199
- const top = placeAbove ? -(panelRect.height + MARGIN) : triggerRect.height + MARGIN;
1234
+ let top;
1200
1235
  let left;
1201
1236
  let right;
1202
- if (align === "right") {
1203
- right = 0;
1204
- const panelLeft = triggerRect.right - panelRect.width;
1205
- if (panelLeft < 0) {
1206
- right = void 0;
1207
- left = 0;
1237
+ if (isHorizontalDirection) {
1238
+ const spaceRight = vw - triggerRect.right - MARGIN;
1239
+ const spaceLeft = triggerRect.left - MARGIN;
1240
+ let placeRight = direction === "right";
1241
+ if (placeRight && panelRect.width > spaceRight && spaceLeft > spaceRight) {
1242
+ placeRight = false;
1243
+ } else if (!placeRight && panelRect.width > spaceLeft && spaceRight > spaceLeft) {
1244
+ placeRight = true;
1208
1245
  }
1246
+ left = placeRight ? triggerRect.width + MARGIN : -(panelRect.width + MARGIN);
1247
+ top = 0;
1248
+ const panelBottom = triggerRect.top + panelRect.height;
1249
+ if (panelBottom > vh - MARGIN) top -= panelBottom - (vh - MARGIN);
1250
+ if (triggerRect.top + top < MARGIN) top += MARGIN - (triggerRect.top + top);
1209
1251
  } else {
1210
- left = 0;
1211
- const panelRight = triggerRect.left + panelRect.width;
1212
- if (panelRight > vw) {
1213
- left = void 0;
1252
+ const spaceBelow = vh - triggerRect.bottom - MARGIN;
1253
+ const spaceAbove = triggerRect.top - MARGIN;
1254
+ let placeAbove = isUp;
1255
+ if (placeAbove && panelRect.height > spaceAbove && spaceBelow > spaceAbove) {
1256
+ placeAbove = false;
1257
+ } else if (!placeAbove && panelRect.height > spaceBelow && spaceAbove > spaceBelow) {
1258
+ placeAbove = true;
1259
+ }
1260
+ top = placeAbove ? -(panelRect.height + MARGIN) : triggerRect.height + MARGIN;
1261
+ if (align === "right") {
1214
1262
  right = 0;
1263
+ const panelLeft = triggerRect.right - panelRect.width;
1264
+ if (panelLeft < 0) {
1265
+ right = void 0;
1266
+ left = 0;
1267
+ }
1268
+ } else {
1269
+ left = 0;
1270
+ const panelRight = triggerRect.left + panelRect.width;
1271
+ if (panelRight > vw) {
1272
+ left = void 0;
1273
+ right = 0;
1274
+ }
1215
1275
  }
1216
1276
  }
1217
1277
  setPanelStyle({ top, left, right });
1218
- }, [open, isUp, align]);
1219
- React9.useEffect(() => {
1278
+ }, [open, direction, isHorizontalDirection, isUp, align]);
1279
+ React10.useEffect(() => {
1220
1280
  if (!open) return;
1221
1281
  const handleClickOutside = (e) => {
1222
1282
  const target = e.target;
@@ -1226,8 +1286,8 @@ function Dropdown({
1226
1286
  document.addEventListener("mousedown", handleClickOutside);
1227
1287
  return () => document.removeEventListener("mousedown", handleClickOutside);
1228
1288
  }, [open]);
1229
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn("fractal-dropdown", className), children: [
1230
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1289
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: cn("fractal-dropdown", className), children: [
1290
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1231
1291
  "button",
1232
1292
  {
1233
1293
  ref: triggerRef,
@@ -1241,19 +1301,20 @@ function Dropdown({
1241
1301
  "fractal-dropdown-trigger",
1242
1302
  `fractal-dropdown-trigger--${size}`,
1243
1303
  `fractal-dropdown-trigger--${triggerVariant}`,
1304
+ `fractal-dropdown-trigger--${triggerOrientation}`,
1244
1305
  iconOnly && "fractal-dropdown-trigger--icon-only",
1245
1306
  triggerClassName
1246
1307
  ),
1247
1308
  children: [
1248
- triggerContent != null ? triggerContent : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1249
- selected.icon != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-icon fractal-dropdown-icon--trigger", children: selected.icon }),
1250
- selected.description != null && (typeof selected.description !== "string" || selected.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-selected-text", children: selected.description })
1309
+ triggerContent != null ? triggerContent : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1310
+ selected.icon != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-icon fractal-dropdown-icon--trigger", children: selected.icon }),
1311
+ selected.description != null && (typeof selected.description !== "string" || selected.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-selected-text", children: selected.description })
1251
1312
  ] }),
1252
- !noChevron && !iconOnly && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-chevron", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronIcon, { size: size === "sm" ? 14 : 16 }) })
1313
+ !noChevron && !iconOnly && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-chevron", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChevronIcon, { size: size === "sm" ? 14 : 16 }) })
1253
1314
  ]
1254
1315
  }
1255
1316
  ),
1256
- open && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1317
+ open && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1257
1318
  "div",
1258
1319
  {
1259
1320
  ref: panelRef,
@@ -1262,21 +1323,21 @@ function Dropdown({
1262
1323
  className: cn("fractal-dropdown-panel", `fractal-dropdown-panel--${size}`, panelClassName),
1263
1324
  style: panelStyle,
1264
1325
  children: [
1265
- label != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-dropdown-label", children: label }),
1326
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fractal-dropdown-label", children: label }),
1266
1327
  visibleItems.map((item, index) => {
1267
- const topDivider = item.border === "top" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
1268
- const bottomDivider = item.border === "bottom" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
1328
+ const topDivider = item.border === "top" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
1329
+ const bottomDivider = item.border === "bottom" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
1269
1330
  if (item.kind === "header") {
1270
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(React9.Fragment, { children: [
1331
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(React10.Fragment, { children: [
1271
1332
  topDivider,
1272
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { role: "presentation", className: "fractal-dropdown-label", children: item.description }),
1333
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { role: "presentation", className: "fractal-dropdown-label", children: item.description }),
1273
1334
  bottomDivider
1274
1335
  ] }, `header-${index}`);
1275
1336
  }
1276
1337
  const isSelected = item.value === selectedValue;
1277
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(React9.Fragment, { children: [
1338
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(React10.Fragment, { children: [
1278
1339
  topDivider,
1279
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1340
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1280
1341
  "button",
1281
1342
  {
1282
1343
  type: "button",
@@ -1288,9 +1349,9 @@ function Dropdown({
1288
1349
  },
1289
1350
  className: "fractal-dropdown-option",
1290
1351
  children: [
1291
- item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-icon", children: item.icon }),
1292
- item.description != null && (typeof item.description !== "string" || item.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-option-text", children: item.description }),
1293
- item.trailing != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "fractal-dropdown-trailing", children: item.trailing })
1352
+ item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-icon", children: item.icon }),
1353
+ item.description != null && (typeof item.description !== "string" || item.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-option-text", children: item.description }),
1354
+ item.trailing != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "fractal-dropdown-trailing", children: item.trailing })
1294
1355
  ]
1295
1356
  }
1296
1357
  ),
@@ -1304,10 +1365,10 @@ function Dropdown({
1304
1365
  }
1305
1366
 
1306
1367
  // src/components/Link/Link.tsx
1307
- var React10 = __toESM(require("react"), 1);
1308
- var import_jsx_runtime16 = require("react/jsx-runtime");
1309
- var Link = React10.forwardRef(
1310
- ({ className, theme = "default", size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1368
+ var React11 = __toESM(require("react"), 1);
1369
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1370
+ var Link = React11.forwardRef(
1371
+ ({ className, theme = "default", size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1311
1372
  "a",
1312
1373
  {
1313
1374
  ref,
@@ -1319,10 +1380,10 @@ var Link = React10.forwardRef(
1319
1380
  Link.displayName = "Link";
1320
1381
 
1321
1382
  // src/components/Chip/Chip.tsx
1322
- var React11 = __toESM(require("react"), 1);
1323
- var import_jsx_runtime17 = require("react/jsx-runtime");
1324
- var Chip = React11.forwardRef(
1325
- ({ className, tone = "neutral", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1383
+ var React12 = __toESM(require("react"), 1);
1384
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1385
+ var Chip = React12.forwardRef(
1386
+ ({ className, tone = "neutral", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1326
1387
  "span",
1327
1388
  {
1328
1389
  ref,
@@ -1334,8 +1395,8 @@ var Chip = React11.forwardRef(
1334
1395
  Chip.displayName = "Chip";
1335
1396
 
1336
1397
  // src/components/Checkbox/Checkbox.tsx
1337
- var import_fractal_icons8 = require("@mirror-physics/fractal-icons");
1338
- var import_jsx_runtime18 = require("react/jsx-runtime");
1398
+ var import_fractal_icons9 = require("@mirror-physics/fractal-icons");
1399
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1339
1400
  function Checkbox({
1340
1401
  checked,
1341
1402
  indeterminate = false,
@@ -1346,7 +1407,7 @@ function Checkbox({
1346
1407
  onKeyDown,
1347
1408
  ...props
1348
1409
  }) {
1349
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1410
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1350
1411
  "button",
1351
1412
  {
1352
1413
  ...props,
@@ -1368,18 +1429,18 @@ function Checkbox({
1368
1429
  onKeyDown?.(event);
1369
1430
  if (event.key === " " || event.key === "Enter") event.stopPropagation();
1370
1431
  },
1371
- children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "fractal-checkbox__indeterminate-icon", "aria-hidden": "true", children: [
1372
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_fractal_icons8.Checkbox, { size: 18 }),
1373
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_fractal_icons8.Minus, { className: "fractal-checkbox__indeterminate-mark", size: 12 })
1374
- ] }) : checked ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_fractal_icons8.CheckboxChecked, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_fractal_icons8.Checkbox, { "aria-hidden": "true", size: 18 })
1432
+ children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "fractal-checkbox__indeterminate-icon", "aria-hidden": "true", children: [
1433
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.Checkbox, { size: 18 }),
1434
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.Minus, { className: "fractal-checkbox__indeterminate-mark", size: 12 })
1435
+ ] }) : checked ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.CheckboxChecked, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.Checkbox, { "aria-hidden": "true", size: 18 })
1375
1436
  }
1376
1437
  );
1377
1438
  }
1378
1439
 
1379
1440
  // src/components/SortableTable/SortableTable.tsx
1380
1441
  var import_react4 = require("react");
1381
- var import_fractal_icons9 = require("@mirror-physics/fractal-icons");
1382
- var import_jsx_runtime19 = require("react/jsx-runtime");
1442
+ var import_fractal_icons10 = require("@mirror-physics/fractal-icons");
1443
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1383
1444
  function SortableTable({
1384
1445
  columns,
1385
1446
  data,
@@ -1455,13 +1516,13 @@ function SortableTable({
1455
1516
  onSortChange?.(nextKey, nextDirection);
1456
1517
  }
1457
1518
  };
1458
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("fractal-sortable-table", `fractal-sortable-table--${size}`, embedded && "fractal-sortable-table--embedded", className), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "fractal-sortable-table-surface", children: [
1459
- header && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fractal-sortable-table-header", children: header }),
1460
- sorted.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fractal-sortable-table-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("table", { className: "fractal-sortable-table-table", children: [
1461
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { className: "fractal-sortable-table-thead-row", children: columns.map((col) => {
1519
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("fractal-sortable-table", `fractal-sortable-table--${size}`, embedded && "fractal-sortable-table--embedded", className), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "fractal-sortable-table-surface", children: [
1520
+ header && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "fractal-sortable-table-header", children: header }),
1521
+ sorted.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "fractal-sortable-table-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("table", { className: "fractal-sortable-table-table", children: [
1522
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tr", { className: "fractal-sortable-table-thead-row", children: columns.map((col) => {
1462
1523
  const isActive = activeKey === col.key && activeDirection !== null;
1463
1524
  if (!col.sortable) {
1464
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1525
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1465
1526
  "th",
1466
1527
  {
1467
1528
  className: "fractal-sortable-table-th",
@@ -1471,12 +1532,12 @@ function SortableTable({
1471
1532
  col.key
1472
1533
  );
1473
1534
  }
1474
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1535
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1475
1536
  "th",
1476
1537
  {
1477
1538
  className: "fractal-sortable-table-th fractal-sortable-table-th--sortable",
1478
1539
  style: { width: col.width },
1479
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1540
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1480
1541
  "button",
1481
1542
  {
1482
1543
  type: "button",
@@ -1487,8 +1548,8 @@ function SortableTable({
1487
1548
  onClick: () => handleSortClick(col.key),
1488
1549
  "aria-sort": isActive ? activeDirection === "asc" ? "ascending" : "descending" : "none",
1489
1550
  children: [
1490
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: col.header }),
1491
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fractal-sortable-table-sort-icon", "aria-hidden": "true", children: isActive && activeDirection === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.ArrowUp, { size: 14 }) : isActive && activeDirection === "desc" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.ArrowDown, { size: 14 }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_fractal_icons9.ArrowsUpDown, { size: 14 }) })
1551
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: col.header }),
1552
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fractal-sortable-table-sort-icon", "aria-hidden": "true", children: isActive && activeDirection === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons10.ArrowUp, { size: 14 }) : isActive && activeDirection === "desc" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons10.ArrowDown, { size: 14 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons10.ArrowsUpDown, { size: 14 }) })
1492
1553
  ]
1493
1554
  }
1494
1555
  )
@@ -1496,13 +1557,13 @@ function SortableTable({
1496
1557
  col.key
1497
1558
  );
1498
1559
  }) }) }),
1499
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { children: sorted.map((row, rowIndex) => {
1560
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tbody", { children: sorted.map((row, rowIndex) => {
1500
1561
  const highlighted = highlightRow?.(row, rowIndex) ?? false;
1501
1562
  const action = rowAction ? {
1502
1563
  label: rowAction.label(row, rowIndex),
1503
1564
  icon: rowAction.icon(row, rowIndex)
1504
1565
  } : null;
1505
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1566
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1506
1567
  "tr",
1507
1568
  {
1508
1569
  className: cn(
@@ -1520,7 +1581,7 @@ function SortableTable({
1520
1581
  "aria-label": action?.label,
1521
1582
  role: onRowClick ? "button" : void 0,
1522
1583
  tabIndex: onRowClick ? 0 : void 0,
1523
- children: columns.map((col, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1584
+ children: columns.map((col, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1524
1585
  "td",
1525
1586
  {
1526
1587
  className: cn(
@@ -1530,7 +1591,7 @@ function SortableTable({
1530
1591
  style: { width: col.width, textAlign: col.align ?? "left" },
1531
1592
  children: [
1532
1593
  col.render(row, rowIndex),
1533
- action && columnIndex === columns.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fractal-sortable-table-row-action", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fractal-sortable-table-row-action__icon", children: action.icon }) })
1594
+ action && columnIndex === columns.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fractal-sortable-table-row-action", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "fractal-sortable-table-row-action__icon", children: action.icon }) })
1534
1595
  ]
1535
1596
  },
1536
1597
  col.key
@@ -1545,7 +1606,7 @@ function SortableTable({
1545
1606
 
1546
1607
  // src/components/Tabs/Tabs.tsx
1547
1608
  var import_react5 = require("react");
1548
- var import_jsx_runtime20 = require("react/jsx-runtime");
1609
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1549
1610
  function Tabs({
1550
1611
  items,
1551
1612
  defaultValue,
@@ -1616,8 +1677,8 @@ function Tabs({
1616
1677
  selectTab(nextId2);
1617
1678
  requestAnimationFrame(() => tabRefs.current[nextId2]?.focus());
1618
1679
  };
1619
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: cn("fractal-tabs", `fractal-tabs--${variant}`, divider && "fractal-tabs--divider", className), children: [
1620
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1680
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: cn("fractal-tabs", `fractal-tabs--${variant}`, divider && "fractal-tabs--divider", className), children: [
1681
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1621
1682
  "div",
1622
1683
  {
1623
1684
  ref: tabListRef,
@@ -1630,7 +1691,7 @@ function Tabs({
1630
1691
  const isActive = item.id === activeId;
1631
1692
  const tabId = `${reactId}-tab-${item.id}`;
1632
1693
  const panelId = `${reactId}-panel-${item.id}`;
1633
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1694
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1634
1695
  "button",
1635
1696
  {
1636
1697
  ref: (el) => {
@@ -1661,7 +1722,7 @@ function Tabs({
1661
1722
  const tabId = `${reactId}-tab-${item.id}`;
1662
1723
  const panelId = `${reactId}-panel-${item.id}`;
1663
1724
  const isActive = item.id === activeId;
1664
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1725
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1665
1726
  "div",
1666
1727
  {
1667
1728
  id: panelId,
@@ -1678,14 +1739,14 @@ function Tabs({
1678
1739
  }
1679
1740
 
1680
1741
  // src/components/ContentSwitcher/ContentSwitcher.tsx
1681
- var React12 = __toESM(require("react"), 1);
1682
- var import_jsx_runtime21 = require("react/jsx-runtime");
1742
+ var React13 = __toESM(require("react"), 1);
1743
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1683
1744
  function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = false, className }) {
1684
- const switcherRef = React12.useRef(null);
1685
- const buttonRefs = React12.useRef([]);
1686
- const indicatorMotionReadyRef = React12.useRef(false);
1745
+ const switcherRef = React13.useRef(null);
1746
+ const buttonRefs = React13.useRef([]);
1747
+ const indicatorMotionReadyRef = React13.useRef(false);
1687
1748
  const activeIndex = items.findIndex((item) => item.value === value);
1688
- React12.useLayoutEffect(() => {
1749
+ React13.useLayoutEffect(() => {
1689
1750
  const switcher = switcherRef.current;
1690
1751
  const activeButton = buttonRefs.current[activeIndex];
1691
1752
  let motionFrame = 0;
@@ -1737,7 +1798,7 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
1737
1798
  onValueChange(items[nextIndex].value);
1738
1799
  }
1739
1800
  };
1740
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1801
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1741
1802
  "div",
1742
1803
  {
1743
1804
  className: cn("fractal-content-switcher", fullWidth && "fractal-content-switcher--full-width", className),
@@ -1745,10 +1806,10 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
1745
1806
  "aria-label": ariaLabel,
1746
1807
  ref: switcherRef,
1747
1808
  children: [
1748
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fractal-content-switcher__indicator", "aria-hidden": true }),
1809
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fractal-content-switcher__indicator", "aria-hidden": true }),
1749
1810
  items.map((item, index) => {
1750
1811
  const active = item.value === value;
1751
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1812
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1752
1813
  "button",
1753
1814
  {
1754
1815
  className: cn("fractal-content-switcher__item", active && "fractal-content-switcher__item--active"),
@@ -1781,8 +1842,8 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
1781
1842
 
1782
1843
  // src/components/Disclosure/Disclosure.tsx
1783
1844
  var import_react6 = require("react");
1784
- var import_fractal_icons10 = require("@mirror-physics/fractal-icons");
1785
- var import_jsx_runtime22 = require("react/jsx-runtime");
1845
+ var import_fractal_icons11 = require("@mirror-physics/fractal-icons");
1846
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1786
1847
  function Disclosure({
1787
1848
  title,
1788
1849
  meta,
@@ -1810,7 +1871,7 @@ function Disclosure({
1810
1871
  onOpenChange?.(next);
1811
1872
  }
1812
1873
  };
1813
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1874
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1814
1875
  "div",
1815
1876
  {
1816
1877
  className: cn(
@@ -1821,7 +1882,7 @@ function Disclosure({
1821
1882
  className
1822
1883
  ),
1823
1884
  children: [
1824
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1885
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1825
1886
  "button",
1826
1887
  {
1827
1888
  type: "button",
@@ -1832,13 +1893,13 @@ function Disclosure({
1832
1893
  disabled,
1833
1894
  onClick: toggle,
1834
1895
  children: [
1835
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fractal-disclosure-icon", "aria-hidden": "true", children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fractal_icons10.ChevronDown, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fractal_icons10.ChevronRight, { size: 16 }) }),
1836
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fractal-disclosure-title", children: title }),
1837
- meta && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "fractal-disclosure-meta", children: meta })
1896
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fractal-disclosure-icon", "aria-hidden": "true", children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_fractal_icons11.ChevronDown, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_fractal_icons11.ChevronRight, { size: 16 }) }),
1897
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fractal-disclosure-title", children: title }),
1898
+ meta && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fractal-disclosure-meta", children: meta })
1838
1899
  ]
1839
1900
  }
1840
1901
  ),
1841
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1902
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1842
1903
  "div",
1843
1904
  {
1844
1905
  id: panelId,
@@ -1846,7 +1907,7 @@ function Disclosure({
1846
1907
  "aria-labelledby": headerId,
1847
1908
  className: "fractal-disclosure-panel",
1848
1909
  hidden: !isOpen,
1849
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fractal-disclosure-panel-inner", children })
1910
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "fractal-disclosure-panel-inner", children })
1850
1911
  }
1851
1912
  )
1852
1913
  ]
@@ -1855,18 +1916,18 @@ function Disclosure({
1855
1916
  }
1856
1917
 
1857
1918
  // src/components/LatticeLoader/LatticeLoader.tsx
1858
- var import_jsx_runtime23 = require("react/jsx-runtime");
1919
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1859
1920
  var LATTICE_COUNT = 160;
1860
1921
  var WAVE_PERIOD = 80;
1861
1922
  function LatticeLoader({ className, label = "Loading", ...props }) {
1862
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1923
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1863
1924
  "span",
1864
1925
  {
1865
1926
  "aria-label": label,
1866
1927
  className: cn("fractal-lattice-loader", className),
1867
1928
  role: "progressbar",
1868
1929
  ...props,
1869
- children: Array.from({ length: LATTICE_COUNT }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1930
+ children: Array.from({ length: LATTICE_COUNT }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1870
1931
  "span",
1871
1932
  {
1872
1933
  "aria-hidden": "true",
@@ -1880,10 +1941,10 @@ function LatticeLoader({ className, label = "Loading", ...props }) {
1880
1941
  }
1881
1942
 
1882
1943
  // src/components/Ghost/Ghost.tsx
1883
- var import_jsx_runtime24 = require("react/jsx-runtime");
1944
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1884
1945
  var toCssLength = (value) => typeof value === "number" ? `${value}px` : value;
1885
1946
  function Ghost({ className, width, height, radius, style, ...props }) {
1886
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1947
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1887
1948
  "div",
1888
1949
  {
1889
1950
  "aria-hidden": "true",
@@ -1899,15 +1960,15 @@ function Ghost({ className, width, height, radius, style, ...props }) {
1899
1960
  );
1900
1961
  }
1901
1962
  function GhostLine({ className, size = "md", width = "100%", ...props }) {
1902
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: cn("fractal-ghost-line", `fractal-ghost-line--${size}`, className), width, ...props });
1963
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: cn("fractal-ghost-line", `fractal-ghost-line--${size}`, className), width, ...props });
1903
1964
  }
1904
1965
  function ButtonGhost({ className, size = "md", iconOnly = false, width, ...props }) {
1905
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: cn("fractal-ghost-button", `fractal-ghost-button--${size}`, iconOnly && "fractal-ghost-button--icon-only", className), width, ...props });
1966
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: cn("fractal-ghost-button", `fractal-ghost-button--${size}`, iconOnly && "fractal-ghost-button--icon-only", className), width, ...props });
1906
1967
  }
1907
1968
  function CardGhost({ className, lines = 3, showHeader = true, ...props }) {
1908
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-card", className), ...props, children: [
1909
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "38%" }),
1910
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: index === lines - 1 ? "62%" : "100%" }, index)) })
1969
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-card", className), ...props, children: [
1970
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "38%" }),
1971
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: index === lines - 1 ? "62%" : "100%" }, index)) })
1911
1972
  ] });
1912
1973
  }
1913
1974
  function DataTableGhost({
@@ -1921,81 +1982,81 @@ function DataTableGhost({
1921
1982
  ...props
1922
1983
  }) {
1923
1984
  const cells = Array.from({ length: columns }, (_, index) => index);
1924
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { "aria-busy": "true", "aria-label": "Loading table", className: cn("fractal-ghost-table", `fractal-ghost-table--${size}`, className), role: "status", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("table", { className: "fractal-ghost-table__table", children: [
1925
- (showHeader || headers) && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "fractal-ghost-table__head-row", children: cells.map((index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("th", { style: { width: columnWidths?.[index] }, children: headers?.[index] ?? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { size: "sm", width: index === columns - 1 ? "62%" : "76%" }) }, index)) }) }),
1926
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tbody", { children: Array.from({ length: rows }, (_, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "fractal-ghost-table__row", children: cells.map((columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { style: { width: columnWidths?.[columnIndex] }, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: `${[72, 54, 82, 63, 46][(rowIndex + columnIndex) % 5]}%` }) }, columnIndex)) }, rowIndex)) })
1985
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "aria-busy": "true", "aria-label": "Loading table", className: cn("fractal-ghost-table", `fractal-ghost-table--${size}`, className), role: "status", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("table", { className: "fractal-ghost-table__table", children: [
1986
+ (showHeader || headers) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("tr", { className: "fractal-ghost-table__head-row", children: cells.map((index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("th", { style: { width: columnWidths?.[index] }, children: headers?.[index] ?? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { size: "sm", width: index === columns - 1 ? "62%" : "76%" }) }, index)) }) }),
1987
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("tbody", { children: Array.from({ length: rows }, (_, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("tr", { className: "fractal-ghost-table__row", children: cells.map((columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("td", { style: { width: columnWidths?.[columnIndex] }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: `${[72, 54, 82, 63, 46][(rowIndex + columnIndex) % 5]}%` }) }, columnIndex)) }, rowIndex)) })
1927
1988
  ] }) });
1928
1989
  }
1929
1990
  function InputGhost({ className, labelWidth = "26%", ...props }) {
1930
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FormFieldGhost, { className, labelWidth, ...props });
1991
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FormFieldGhost, { className, labelWidth, ...props });
1931
1992
  }
1932
1993
  function TextareaGhost({ className, labelWidth = "26%", ...props }) {
1933
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FormFieldGhost, { className, labelWidth, multiline: true, ...props });
1994
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FormFieldGhost, { className, labelWidth, multiline: true, ...props });
1934
1995
  }
1935
1996
  function LabelGhost({ className, width = "26%", ...props }) {
1936
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { className: cn("fractal-ghost-label", className), size: "sm", width, ...props });
1997
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { className: cn("fractal-ghost-label", className), size: "sm", width, ...props });
1937
1998
  }
1938
1999
  function FormFieldGhost({ className, labelWidth = "26%", multiline = false, ...props }) {
1939
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-field", className), ...props, children: [
1940
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(LabelGhost, { width: labelWidth }),
1941
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: cn("fractal-ghost-field__control", multiline && "fractal-ghost-field__control--multiline") })
2000
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-field", className), ...props, children: [
2001
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(LabelGhost, { width: labelWidth }),
2002
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: cn("fractal-ghost-field__control", multiline && "fractal-ghost-field__control--multiline") })
1942
2003
  ] });
1943
2004
  }
1944
2005
  function AlertGhost({ className, ...props }) {
1945
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-alert", className), ...props, children: [
1946
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "30%" }),
1947
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { size: "sm", width: "78%" })
2006
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-alert", className), ...props, children: [
2007
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "30%" }),
2008
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { size: "sm", width: "78%" })
1948
2009
  ] });
1949
2010
  }
1950
2011
  function CheckboxGhost({ className, ...props }) {
1951
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-choice", className), ...props, children: [
1952
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-choice__control" }),
1953
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "42%" })
2012
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-choice", className), ...props, children: [
2013
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-choice__control" }),
2014
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "42%" })
1954
2015
  ] });
1955
2016
  }
1956
2017
  var ToggleGhost = CheckboxGhost;
1957
2018
  function ChipGhost({ className, width = 74, ...props }) {
1958
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: cn("fractal-ghost-chip", className), height: 24, width, ...props });
2019
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: cn("fractal-ghost-chip", className), height: 24, width, ...props });
1959
2020
  }
1960
2021
  function LinkGhost({ className, width = 96, ...props }) {
1961
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { className: cn("fractal-ghost-link", className), size: "sm", width, ...props });
2022
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { className: cn("fractal-ghost-link", className), size: "sm", width, ...props });
1962
2023
  }
1963
2024
  var TextButtonGhost = LinkGhost;
1964
2025
  function DropdownGhost({ className, ...props }) {
1965
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropdown", className), ...props, children: [
1966
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "38%" }),
1967
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-dropdown__chevron" })
2026
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropdown", className), ...props, children: [
2027
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "38%" }),
2028
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-dropdown__chevron" })
1968
2029
  ] });
1969
2030
  }
1970
2031
  function ContentSwitcherGhost({ className, options = 3, ...props }) {
1971
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-switcher", className), ...props, children: Array.from({ length: options }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, {}, index)) });
2032
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-switcher", className), ...props, children: Array.from({ length: options }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, {}, index)) });
1972
2033
  }
1973
2034
  var TabsGhost = ContentSwitcherGhost;
1974
2035
  function DisclosureGhost({ className, ...props }) {
1975
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-disclosure", className), ...props, children: [
1976
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-disclosure__icon" }),
1977
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "42%" })
2036
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-disclosure", className), ...props, children: [
2037
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-disclosure__icon" }),
2038
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "42%" })
1978
2039
  ] });
1979
2040
  }
1980
2041
  function PaginationGhost({ className, pages = 5, ...props }) {
1981
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-pagination", className), ...props, children: Array.from({ length: pages }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, {}, index)) });
2042
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-pagination", className), ...props, children: Array.from({ length: pages }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, {}, index)) });
1982
2043
  }
1983
2044
  function FileDropzoneGhost({ className, ...props }) {
1984
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropzone", className), ...props, children: [
1985
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-dropzone__icon" }),
1986
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "26%" }),
1987
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { size: "sm", width: "46%" })
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropzone", className), ...props, children: [
2046
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-dropzone__icon" }),
2047
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "26%" }),
2048
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { size: "sm", width: "46%" })
1988
2049
  ] });
1989
2050
  }
1990
2051
  function PromptCardGhost({ className, ...props }) {
1991
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CardGhost, { className: cn("fractal-ghost-prompt-card", className), lines: 4, ...props });
2052
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CardGhost, { className: cn("fractal-ghost-prompt-card", className), lines: 4, ...props });
1992
2053
  }
1993
2054
  function ConversationGhost({
1994
2055
  className,
1995
2056
  "aria-label": ariaLabel = "Loading conversation",
1996
2057
  ...props
1997
2058
  }) {
1998
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2059
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1999
2060
  "div",
2000
2061
  {
2001
2062
  "aria-busy": "true",
@@ -2004,54 +2065,54 @@ function ConversationGhost({
2004
2065
  role: "status",
2005
2066
  ...props,
2006
2067
  children: [
2007
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--user", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "fractal-ghost-conversation__bubble", children: [
2008
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "100%" }),
2009
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "86%" }),
2010
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "64%" })
2068
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--user", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "fractal-ghost-conversation__bubble", children: [
2069
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "100%" }),
2070
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "86%" }),
2071
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "64%" })
2011
2072
  ] }) }),
2012
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--assistant", children: [
2013
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "92%" }),
2014
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "78%" }),
2015
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "58%" })
2073
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--assistant", children: [
2074
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "92%" }),
2075
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "78%" }),
2076
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "58%" })
2016
2077
  ] })
2017
2078
  ]
2018
2079
  }
2019
2080
  );
2020
2081
  }
2021
2082
  function SortableTableGhost(props) {
2022
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DataTableGhost, { ...props });
2083
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DataTableGhost, { ...props });
2023
2084
  }
2024
2085
  function SidebarGhost({ className, items = 6, ...props }) {
2025
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("aside", { "aria-hidden": "true", className: cn("fractal-ghost-sidebar", className), ...props, children: [
2026
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-sidebar__brand" }),
2027
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fractal-ghost-sidebar__items", children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "fractal-ghost-sidebar__item", children: [
2028
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, {}),
2029
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: `${[54, 68, 44, 61][index % 4]}%` })
2086
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("aside", { "aria-hidden": "true", className: cn("fractal-ghost-sidebar", className), ...props, children: [
2087
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-sidebar__brand" }),
2088
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "fractal-ghost-sidebar__items", children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "fractal-ghost-sidebar__item", children: [
2089
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, {}),
2090
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: `${[54, 68, 44, 61][index % 4]}%` })
2030
2091
  ] }, index)) })
2031
2092
  ] });
2032
2093
  }
2033
2094
  function ModalGhost({ className, title, lines = 3, ...props }) {
2034
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SurfaceGhost, { className: cn("fractal-ghost-modal", className), title, lines, ...props });
2095
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SurfaceGhost, { className: cn("fractal-ghost-modal", className), title, lines, ...props });
2035
2096
  }
2036
2097
  function SidePanelGhost({ className, title, lines = 5, ...props }) {
2037
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SurfaceGhost, { className: cn("fractal-ghost-side-panel", className), title, lines, ...props });
2098
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SurfaceGhost, { className: cn("fractal-ghost-side-panel", className), title, lines, ...props });
2038
2099
  }
2039
2100
  function SurfaceGhost({ className, title, lines = 3, ...props }) {
2040
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-surface", className), ...props, children: [
2041
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "fractal-ghost-surface__header", children: [
2042
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: "42%" }),
2043
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Ghost, { className: "fractal-ghost-surface__close" })
2101
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-surface", className), ...props, children: [
2102
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "fractal-ghost-surface__header", children: [
2103
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: "42%" }),
2104
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Ghost, { className: "fractal-ghost-surface__close" })
2044
2105
  ] }),
2045
- title && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fractal-ghost-surface__title", children: title }),
2046
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GhostLine, { width: index === lines - 1 ? "64%" : "100%" }, index)) })
2106
+ title && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "fractal-ghost-surface__title", children: title }),
2107
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GhostLine, { width: index === lines - 1 ? "64%" : "100%" }, index)) })
2047
2108
  ] });
2048
2109
  }
2049
2110
 
2050
2111
  // src/components/Sidebar/Sidebar.tsx
2051
- var React13 = __toESM(require("react"), 1);
2052
- var import_jsx_runtime25 = require("react/jsx-runtime");
2053
- var Sidebar = React13.forwardRef(
2054
- ({ className, width, compact = false, style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2112
+ var React14 = __toESM(require("react"), 1);
2113
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2114
+ var Sidebar = React14.forwardRef(
2115
+ ({ className, width, compact = false, style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2055
2116
  "aside",
2056
2117
  {
2057
2118
  ref,
@@ -2063,12 +2124,12 @@ var Sidebar = React13.forwardRef(
2063
2124
  )
2064
2125
  );
2065
2126
  Sidebar.displayName = "Sidebar";
2066
- var SidebarHeader = React13.forwardRef(
2067
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, className: cn("fractal-sidebar__header", className), ...props })
2127
+ var SidebarHeader = React14.forwardRef(
2128
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className: cn("fractal-sidebar__header", className), ...props })
2068
2129
  );
2069
2130
  SidebarHeader.displayName = "SidebarHeader";
2070
- var SidebarBrand = React13.forwardRef(
2071
- ({ className, type = "button", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { ref, type, className: cn("fractal-sidebar__brand", className), ...props })
2131
+ var SidebarBrand = React14.forwardRef(
2132
+ ({ className, type = "button", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("button", { ref, type, className: cn("fractal-sidebar__brand", className), ...props })
2072
2133
  );
2073
2134
  SidebarBrand.displayName = "SidebarBrand";
2074
2135
  function SidebarAccountMenu({
@@ -2079,7 +2140,7 @@ function SidebarAccountMenu({
2079
2140
  icon,
2080
2141
  className
2081
2142
  }) {
2082
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2143
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2083
2144
  Dropdown,
2084
2145
  {
2085
2146
  align: "left",
@@ -2089,25 +2150,25 @@ function SidebarAccountMenu({
2089
2150
  panelClassName: "fractal-sidebar__account-panel",
2090
2151
  selectedValue: "",
2091
2152
  triggerClassName: "fractal-sidebar__account-trigger",
2092
- triggerContent: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
2093
- icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fractal-sidebar__account-icon", "aria-hidden": "true", children: icon }),
2094
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fractal-sidebar__account-name", children: name })
2153
+ triggerContent: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
2154
+ icon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fractal-sidebar__account-icon", "aria-hidden": "true", children: icon }),
2155
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fractal-sidebar__account-name", children: name })
2095
2156
  ] }),
2096
2157
  triggerLabel,
2097
2158
  triggerVariant: "tertiary"
2098
2159
  }
2099
2160
  );
2100
2161
  }
2101
- var SidebarNav = React13.forwardRef(
2102
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("nav", { ref, className: cn("fractal-sidebar__nav", className), ...props })
2162
+ var SidebarNav = React14.forwardRef(
2163
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("nav", { ref, className: cn("fractal-sidebar__nav", className), ...props })
2103
2164
  );
2104
2165
  SidebarNav.displayName = "SidebarNav";
2105
- var SidebarSection = React13.forwardRef(
2106
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, className: cn("fractal-sidebar__section", className), ...props })
2166
+ var SidebarSection = React14.forwardRef(
2167
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className: cn("fractal-sidebar__section", className), ...props })
2107
2168
  );
2108
2169
  SidebarSection.displayName = "SidebarSection";
2109
- var SidebarNavItem = React13.forwardRef(
2110
- ({ active = false, icon, endAdornment, className, type = "button", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2170
+ var SidebarNavItem = React14.forwardRef(
2171
+ ({ active = false, icon, endAdornment, className, type = "button", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2111
2172
  "button",
2112
2173
  {
2113
2174
  ref,
@@ -2117,28 +2178,28 @@ var SidebarNavItem = React13.forwardRef(
2117
2178
  "aria-current": active ? "page" : void 0,
2118
2179
  ...props,
2119
2180
  children: [
2120
- icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fractal-sidebar__nav-item-icon", "aria-hidden": "true", children: icon }),
2121
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fractal-sidebar__nav-item-label", children }),
2122
- endAdornment && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "fractal-sidebar__nav-item-end", children: endAdornment })
2181
+ icon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fractal-sidebar__nav-item-icon", "aria-hidden": "true", children: icon }),
2182
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fractal-sidebar__nav-item-label", children }),
2183
+ endAdornment && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "fractal-sidebar__nav-item-end", children: endAdornment })
2123
2184
  ]
2124
2185
  }
2125
2186
  )
2126
2187
  );
2127
2188
  SidebarNavItem.displayName = "SidebarNavItem";
2128
- var SidebarFooter = React13.forwardRef(
2129
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, className: cn("fractal-sidebar__footer", className), ...props })
2189
+ var SidebarFooter = React14.forwardRef(
2190
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className: cn("fractal-sidebar__footer", className), ...props })
2130
2191
  );
2131
2192
  SidebarFooter.displayName = "SidebarFooter";
2132
2193
 
2133
2194
  // src/components/SidePanel/SidePanel.tsx
2134
2195
  var import_react_dom2 = require("react-dom");
2135
- var import_fractal_icons11 = require("@mirror-physics/fractal-icons");
2136
- var import_jsx_runtime26 = require("react/jsx-runtime");
2196
+ var import_fractal_icons12 = require("@mirror-physics/fractal-icons");
2197
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2137
2198
  function SidePanel({ open, onClose, title, description, children, footer, size = "md", loading = false, loadingLabel = "Loading", className }) {
2138
2199
  useEscapeDismiss(80, onClose, open);
2139
2200
  if (!open) return null;
2140
2201
  return (0, import_react_dom2.createPortal)(
2141
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-side-panel-overlay", onMouseDown: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2202
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "fractal-side-panel-overlay", onMouseDown: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2142
2203
  "aside",
2143
2204
  {
2144
2205
  className: cn("fractal-side-panel", `fractal-side-panel--${size}`, className),
@@ -2147,15 +2208,15 @@ function SidePanel({ open, onClose, title, description, children, footer, size =
2147
2208
  role: "dialog",
2148
2209
  onMouseDown: (event) => event.stopPropagation(),
2149
2210
  children: [
2150
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("header", { className: "fractal-side-panel__header", children: [
2151
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "fractal-side-panel__heading", children: [
2152
- typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h2", { className: "fractal-side-panel__title", children: title }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-side-panel__title", children: title }),
2153
- description && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "fractal-side-panel__description", children: description })
2211
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("header", { className: "fractal-side-panel__header", children: [
2212
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "fractal-side-panel__heading", children: [
2213
+ typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h2", { className: "fractal-side-panel__title", children: title }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "fractal-side-panel__title", children: title }),
2214
+ description && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "fractal-side-panel__description", children: description })
2154
2215
  ] }),
2155
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("button", { type: "button", className: "fractal-side-panel__close", "aria-label": "Close panel", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_fractal_icons11.Close, { size: 18 }) })
2216
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "fractal-side-panel__close", "aria-label": "Close panel", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_fractal_icons12.Close, { size: 18 }) })
2156
2217
  ] }),
2157
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-busy": loading || void 0, className: cn("fractal-side-panel__body", loading && "fractal-side-panel__body--loading"), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(UILoader, { label: loadingLabel }) : children }),
2158
- footer && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("footer", { className: "fractal-side-panel__footer", children: footer })
2218
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { "aria-busy": loading || void 0, className: cn("fractal-side-panel__body", loading && "fractal-side-panel__body--loading"), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(UILoader, { label: loadingLabel }) : children }),
2219
+ footer && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("footer", { className: "fractal-side-panel__footer", children: footer })
2159
2220
  ]
2160
2221
  }
2161
2222
  ) }),
@@ -2164,18 +2225,18 @@ function SidePanel({ open, onClose, title, description, children, footer, size =
2164
2225
  }
2165
2226
 
2166
2227
  // src/components/Textarea/Textarea.tsx
2167
- var React14 = __toESM(require("react"), 1);
2168
- var import_jsx_runtime27 = require("react/jsx-runtime");
2169
- var Textarea = React14.forwardRef(
2170
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("textarea", { ref, className: cn("fractal-textarea", className), ...props })
2228
+ var React15 = __toESM(require("react"), 1);
2229
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2230
+ var Textarea = React15.forwardRef(
2231
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("textarea", { ref, className: cn("fractal-textarea", className), ...props })
2171
2232
  );
2172
2233
  Textarea.displayName = "Textarea";
2173
2234
 
2174
2235
  // src/components/TextButton/TextButton.tsx
2175
- var React15 = __toESM(require("react"), 1);
2176
- var import_jsx_runtime28 = require("react/jsx-runtime");
2177
- var TextButton = React15.forwardRef(
2178
- ({ className, icon, iconPosition = "start", size = "md", tone = "primary", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2236
+ var React16 = __toESM(require("react"), 1);
2237
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2238
+ var TextButton = React16.forwardRef(
2239
+ ({ className, icon, iconPosition = "start", size = "md", tone = "primary", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2179
2240
  "button",
2180
2241
  {
2181
2242
  ref,
@@ -2183,9 +2244,9 @@ var TextButton = React15.forwardRef(
2183
2244
  type: "button",
2184
2245
  ...props,
2185
2246
  children: [
2186
- icon && iconPosition === "start" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon }),
2187
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children }),
2188
- icon && iconPosition === "end" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon })
2247
+ icon && iconPosition === "start" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon }),
2248
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children }),
2249
+ icon && iconPosition === "end" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon })
2189
2250
  ]
2190
2251
  }
2191
2252
  )
@@ -2193,9 +2254,9 @@ var TextButton = React15.forwardRef(
2193
2254
  TextButton.displayName = "TextButton";
2194
2255
 
2195
2256
  // src/components/FileDropzone/FileDropzone.tsx
2196
- var React16 = __toESM(require("react"), 1);
2197
- var import_fractal_icons12 = require("@mirror-physics/fractal-icons");
2198
- var import_jsx_runtime29 = require("react/jsx-runtime");
2257
+ var React17 = __toESM(require("react"), 1);
2258
+ var import_fractal_icons13 = require("@mirror-physics/fractal-icons");
2259
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2199
2260
  function FileDropzone({
2200
2261
  files,
2201
2262
  onFilesChange,
@@ -2206,17 +2267,17 @@ function FileDropzone({
2206
2267
  description = "Files stay attached to this record.",
2207
2268
  className
2208
2269
  }) {
2209
- const inputId = React16.useId();
2210
- const inputRef = React16.useRef(null);
2211
- const [isDragging, setIsDragging] = React16.useState(false);
2270
+ const inputId = React17.useId();
2271
+ const inputRef = React17.useRef(null);
2272
+ const [isDragging, setIsDragging] = React17.useState(false);
2212
2273
  const addFiles = (nextFiles) => {
2213
2274
  if (disabled) return;
2214
2275
  const additions = Array.from(nextFiles);
2215
2276
  if (additions.length === 0) return;
2216
2277
  onFilesChange(multiple ? [...files, ...additions] : additions.slice(0, 1));
2217
2278
  };
2218
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: cn("fractal-file-dropzone", className), children: [
2219
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2279
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: cn("fractal-file-dropzone", className), children: [
2280
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2220
2281
  "input",
2221
2282
  {
2222
2283
  ref: inputRef,
@@ -2232,7 +2293,7 @@ function FileDropzone({
2232
2293
  }
2233
2294
  }
2234
2295
  ),
2235
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2296
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2236
2297
  "button",
2237
2298
  {
2238
2299
  className: "fractal-file-dropzone__target",
@@ -2255,18 +2316,18 @@ function FileDropzone({
2255
2316
  addFiles(event.dataTransfer.files);
2256
2317
  },
2257
2318
  children: [
2258
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_fractal_icons12.FileArrowUp, { "aria-hidden": "true", size: 20 }),
2259
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("span", { className: "fractal-file-dropzone__copy", children: [
2260
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-file-dropzone__title", children: title }),
2261
- description && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-file-dropzone__description", children: description })
2319
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fractal_icons13.FileArrowUp, { "aria-hidden": "true", size: 20 }),
2320
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "fractal-file-dropzone__copy", children: [
2321
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-file-dropzone__title", children: title }),
2322
+ description && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-file-dropzone__description", children: description })
2262
2323
  ] })
2263
2324
  ]
2264
2325
  }
2265
2326
  ),
2266
- files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("ul", { className: "fractal-file-dropzone__files", "aria-label": "Attached files", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("li", { className: "fractal-file-dropzone__file", children: [
2267
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-file-dropzone__file-name", children: file.name }),
2268
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "fractal-file-dropzone__file-meta", children: formatFileSize(file.size) }),
2269
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2327
+ files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("ul", { className: "fractal-file-dropzone__files", "aria-label": "Attached files", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("li", { className: "fractal-file-dropzone__file", children: [
2328
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-file-dropzone__file-name", children: file.name }),
2329
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-file-dropzone__file-meta", children: formatFileSize(file.size) }),
2330
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2270
2331
  "button",
2271
2332
  {
2272
2333
  className: "fractal-file-dropzone__remove",
@@ -2274,7 +2335,7 @@ function FileDropzone({
2274
2335
  "aria-label": `Remove ${file.name}`,
2275
2336
  disabled,
2276
2337
  onClick: () => onFilesChange(files.filter((_, fileIndex) => fileIndex !== index)),
2277
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_fractal_icons12.Close, { "aria-hidden": "true", size: 14 })
2338
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fractal_icons13.Close, { "aria-hidden": "true", size: 14 })
2278
2339
  }
2279
2340
  )
2280
2341
  ] }, `${file.name}-${file.size}-${index}`)) })
@@ -2287,8 +2348,8 @@ function formatFileSize(bytes) {
2287
2348
  }
2288
2349
 
2289
2350
  // src/components/Pagination/Pagination.tsx
2290
- var import_fractal_icons13 = require("@mirror-physics/fractal-icons");
2291
- var import_jsx_runtime30 = require("react/jsx-runtime");
2351
+ var import_fractal_icons14 = require("@mirror-physics/fractal-icons");
2352
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2292
2353
  function Pagination({
2293
2354
  page,
2294
2355
  pageSize,
@@ -2304,10 +2365,10 @@ function Pagination({
2304
2365
  const start = totalItems === 0 ? 0 : (currentPage - 1) * pageSize + 1;
2305
2366
  const end = Math.min(currentPage * pageSize, totalItems);
2306
2367
  const canChangePageSize = pageSizeOptions != null && pageSizeOptions.length > 0 && onPageSizeChange != null;
2307
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("nav", { className: cn("fractal-pagination", className), "aria-label": ariaLabel, children: [
2308
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-pagination__summary", children: totalItems === 0 ? "No results" : `${start}-${end} of ${totalItems}` }),
2309
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "fractal-pagination__controls", children: [
2310
- canChangePageSize && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2368
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("nav", { className: cn("fractal-pagination", className), "aria-label": ariaLabel, children: [
2369
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fractal-pagination__summary", children: totalItems === 0 ? "No results" : `${start}-${end} of ${totalItems}` }),
2370
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "fractal-pagination__controls", children: [
2371
+ canChangePageSize && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2311
2372
  Dropdown,
2312
2373
  {
2313
2374
  align: "right",
@@ -2324,7 +2385,7 @@ function Pagination({
2324
2385
  triggerVariant: "tertiary"
2325
2386
  }
2326
2387
  ),
2327
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2388
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2328
2389
  "button",
2329
2390
  {
2330
2391
  className: "fractal-pagination__button",
@@ -2333,15 +2394,15 @@ function Pagination({
2333
2394
  title: "Previous page",
2334
2395
  disabled: currentPage === 1 || totalItems === 0,
2335
2396
  onClick: () => onPageChange(currentPage - 1),
2336
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fractal_icons13.ArrowLeft, { "aria-hidden": "true", size: 16 })
2397
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_fractal_icons14.ArrowLeft, { "aria-hidden": "true", size: 16 })
2337
2398
  }
2338
2399
  ),
2339
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "fractal-pagination__page", "aria-current": "page", children: [
2400
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: "fractal-pagination__page", "aria-current": "page", children: [
2340
2401
  currentPage,
2341
2402
  " of ",
2342
2403
  totalPages
2343
2404
  ] }),
2344
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2405
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2345
2406
  "button",
2346
2407
  {
2347
2408
  className: "fractal-pagination__button",
@@ -2350,7 +2411,7 @@ function Pagination({
2350
2411
  title: "Next page",
2351
2412
  disabled: currentPage === totalPages || totalItems === 0,
2352
2413
  onClick: () => onPageChange(currentPage + 1),
2353
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fractal_icons13.ArrowRight, { "aria-hidden": "true", size: 16 })
2414
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_fractal_icons14.ArrowRight, { "aria-hidden": "true", size: 16 })
2354
2415
  }
2355
2416
  )
2356
2417
  ] })
@@ -2421,6 +2482,7 @@ function Pagination({
2421
2482
  SidebarSection,
2422
2483
  SortableTable,
2423
2484
  SortableTableGhost,
2485
+ TableSearch,
2424
2486
  Tabs,
2425
2487
  TabsGhost,
2426
2488
  TextButton,