@mirror-physics/fractal-ui 0.2.0-next.71 → 0.2.0-next.73
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 +359 -231
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +105 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +26 -1
- package/dist/index.d.ts +26 -1
- package/dist/index.js +358 -231
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -91,6 +91,7 @@ __export(index_exports, {
|
|
|
91
91
|
SidebarNav: () => SidebarNav,
|
|
92
92
|
SidebarNavItem: () => SidebarNavItem,
|
|
93
93
|
SidebarSection: () => SidebarSection,
|
|
94
|
+
Slider: () => Slider,
|
|
94
95
|
SortableTable: () => SortableTable,
|
|
95
96
|
SortableTableGhost: () => SortableTableGhost,
|
|
96
97
|
TableSearch: () => TableSearch,
|
|
@@ -907,10 +908,136 @@ function NumberInput({
|
|
|
907
908
|
] });
|
|
908
909
|
}
|
|
909
910
|
|
|
911
|
+
// src/components/Slider/Slider.tsx
|
|
912
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
913
|
+
function Slider(props) {
|
|
914
|
+
const {
|
|
915
|
+
min = 0,
|
|
916
|
+
max = 100,
|
|
917
|
+
step = 1,
|
|
918
|
+
disabled = false,
|
|
919
|
+
className,
|
|
920
|
+
showValues = true,
|
|
921
|
+
formatValue = (value) => value,
|
|
922
|
+
knobs = 1
|
|
923
|
+
} = props;
|
|
924
|
+
const span = Math.max(max - min, 1);
|
|
925
|
+
const rawValues = knobs === 2 ? props.value : [props.value];
|
|
926
|
+
const firstValue = clamp(rawValues[0], min, max);
|
|
927
|
+
const secondValue = knobs === 2 ? clamp(rawValues[1], firstValue, max) : firstValue;
|
|
928
|
+
const selectionStart = knobs === 2 ? firstValue : min;
|
|
929
|
+
const selectionEnd = secondValue;
|
|
930
|
+
const selectionStartPercent = (selectionStart - min) / span * 100;
|
|
931
|
+
const selectionEndPercent = (selectionEnd - min) / span * 100;
|
|
932
|
+
const changeSingleValue = (value) => {
|
|
933
|
+
;
|
|
934
|
+
props.onValueChange(clamp(value, min, max));
|
|
935
|
+
};
|
|
936
|
+
const changeRangeValue = (nextLower, nextUpper) => {
|
|
937
|
+
;
|
|
938
|
+
props.onValueChange([
|
|
939
|
+
clamp(nextLower, min, nextUpper),
|
|
940
|
+
clamp(nextUpper, nextLower, max)
|
|
941
|
+
]);
|
|
942
|
+
};
|
|
943
|
+
const getKeyboardValue = (event, value) => {
|
|
944
|
+
const pageStep = step * 10;
|
|
945
|
+
const adjustments = {
|
|
946
|
+
ArrowDown: -step,
|
|
947
|
+
ArrowLeft: -step,
|
|
948
|
+
ArrowRight: step,
|
|
949
|
+
ArrowUp: step,
|
|
950
|
+
PageDown: -pageStep,
|
|
951
|
+
PageUp: pageStep
|
|
952
|
+
};
|
|
953
|
+
if (event.key === "Home") return min;
|
|
954
|
+
if (event.key === "End") return max;
|
|
955
|
+
if (!(event.key in adjustments)) return null;
|
|
956
|
+
return value + adjustments[event.key];
|
|
957
|
+
};
|
|
958
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
959
|
+
"div",
|
|
960
|
+
{
|
|
961
|
+
className: cn("fractal-slider", disabled && "fractal-slider--disabled", className),
|
|
962
|
+
"data-disabled": disabled || void 0,
|
|
963
|
+
"data-knobs": knobs,
|
|
964
|
+
children: [
|
|
965
|
+
showValues && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "fractal-slider-values", "aria-hidden": "true", children: [
|
|
966
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("output", { children: formatValue(firstValue) }),
|
|
967
|
+
knobs === 2 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("output", { children: formatValue(secondValue) })
|
|
968
|
+
] }),
|
|
969
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
970
|
+
"div",
|
|
971
|
+
{
|
|
972
|
+
className: "fractal-slider-control",
|
|
973
|
+
style: {
|
|
974
|
+
"--fractal-slider-selection-start": `${selectionStartPercent}%`,
|
|
975
|
+
"--fractal-slider-selection-end": `${selectionEndPercent}%`
|
|
976
|
+
},
|
|
977
|
+
children: [
|
|
978
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "fractal-slider-track", "aria-hidden": "true" }),
|
|
979
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "fractal-slider-selection", "aria-hidden": "true" }),
|
|
980
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
981
|
+
"input",
|
|
982
|
+
{
|
|
983
|
+
"aria-label": knobs === 2 ? props.lowerAriaLabel ?? "Lower value" : props.ariaLabel ?? "Slider value",
|
|
984
|
+
disabled,
|
|
985
|
+
max,
|
|
986
|
+
min,
|
|
987
|
+
onChange: (event) => {
|
|
988
|
+
const nextValue = event.currentTarget.valueAsNumber;
|
|
989
|
+
if (knobs === 2) changeRangeValue(Math.min(nextValue, secondValue), secondValue);
|
|
990
|
+
else changeSingleValue(nextValue);
|
|
991
|
+
},
|
|
992
|
+
onKeyDown: (event) => {
|
|
993
|
+
const nextValue = getKeyboardValue(event, firstValue);
|
|
994
|
+
if (nextValue === null) return;
|
|
995
|
+
event.preventDefault();
|
|
996
|
+
if (knobs === 2) changeRangeValue(Math.min(nextValue, secondValue), secondValue);
|
|
997
|
+
else changeSingleValue(nextValue);
|
|
998
|
+
},
|
|
999
|
+
step,
|
|
1000
|
+
type: "range",
|
|
1001
|
+
value: firstValue
|
|
1002
|
+
}
|
|
1003
|
+
),
|
|
1004
|
+
knobs === 2 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1005
|
+
"input",
|
|
1006
|
+
{
|
|
1007
|
+
"aria-label": props.upperAriaLabel ?? "Upper value",
|
|
1008
|
+
disabled,
|
|
1009
|
+
max,
|
|
1010
|
+
min,
|
|
1011
|
+
onChange: (event) => {
|
|
1012
|
+
const nextValue = event.currentTarget.valueAsNumber;
|
|
1013
|
+
changeRangeValue(firstValue, Math.max(nextValue, firstValue));
|
|
1014
|
+
},
|
|
1015
|
+
onKeyDown: (event) => {
|
|
1016
|
+
const nextValue = getKeyboardValue(event, secondValue);
|
|
1017
|
+
if (nextValue === null) return;
|
|
1018
|
+
event.preventDefault();
|
|
1019
|
+
changeRangeValue(firstValue, Math.max(nextValue, firstValue));
|
|
1020
|
+
},
|
|
1021
|
+
step,
|
|
1022
|
+
type: "range",
|
|
1023
|
+
value: secondValue
|
|
1024
|
+
}
|
|
1025
|
+
)
|
|
1026
|
+
]
|
|
1027
|
+
}
|
|
1028
|
+
)
|
|
1029
|
+
]
|
|
1030
|
+
}
|
|
1031
|
+
);
|
|
1032
|
+
}
|
|
1033
|
+
function clamp(value, minimum, maximum) {
|
|
1034
|
+
return Math.min(maximum, Math.max(minimum, value));
|
|
1035
|
+
}
|
|
1036
|
+
|
|
910
1037
|
// src/components/PasswordInput/PasswordInput.tsx
|
|
911
1038
|
var React7 = __toESM(require("react"), 1);
|
|
912
1039
|
var import_fractal_icons6 = require("@mirror-physics/fractal-icons");
|
|
913
|
-
var
|
|
1040
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
914
1041
|
var PasswordInput = React7.forwardRef(
|
|
915
1042
|
({
|
|
916
1043
|
className,
|
|
@@ -921,13 +1048,13 @@ var PasswordInput = React7.forwardRef(
|
|
|
921
1048
|
}, ref) => {
|
|
922
1049
|
const [passwordVisible, setPasswordVisible] = React7.useState(false);
|
|
923
1050
|
const toggleLabel = passwordVisible ? hidePasswordLabel : showPasswordLabel;
|
|
924
|
-
return /* @__PURE__ */ (0,
|
|
1051
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
925
1052
|
"div",
|
|
926
1053
|
{
|
|
927
1054
|
className: cn("fractal-password-input", className),
|
|
928
1055
|
"data-password-visible": passwordVisible ? "" : void 0,
|
|
929
1056
|
children: [
|
|
930
|
-
/* @__PURE__ */ (0,
|
|
1057
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
931
1058
|
Input,
|
|
932
1059
|
{
|
|
933
1060
|
...props,
|
|
@@ -937,7 +1064,7 @@ var PasswordInput = React7.forwardRef(
|
|
|
937
1064
|
type: passwordVisible ? "text" : "password"
|
|
938
1065
|
}
|
|
939
1066
|
),
|
|
940
|
-
/* @__PURE__ */ (0,
|
|
1067
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
941
1068
|
"button",
|
|
942
1069
|
{
|
|
943
1070
|
type: "button",
|
|
@@ -947,7 +1074,7 @@ var PasswordInput = React7.forwardRef(
|
|
|
947
1074
|
disabled,
|
|
948
1075
|
title: toggleLabel,
|
|
949
1076
|
onClick: () => setPasswordVisible((visible) => !visible),
|
|
950
|
-
children: passwordVisible ? /* @__PURE__ */ (0,
|
|
1077
|
+
children: passwordVisible ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_fractal_icons6.EyeSlash, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_fractal_icons6.Eye, { "aria-hidden": "true", size: 18 })
|
|
951
1078
|
}
|
|
952
1079
|
)
|
|
953
1080
|
]
|
|
@@ -959,9 +1086,9 @@ PasswordInput.displayName = "PasswordInput";
|
|
|
959
1086
|
|
|
960
1087
|
// src/components/Label/Label.tsx
|
|
961
1088
|
var React8 = __toESM(require("react"), 1);
|
|
962
|
-
var
|
|
1089
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
963
1090
|
var Label = React8.forwardRef(
|
|
964
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
1091
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
965
1092
|
"label",
|
|
966
1093
|
{
|
|
967
1094
|
ref,
|
|
@@ -975,7 +1102,7 @@ Label.displayName = "Label";
|
|
|
975
1102
|
// src/components/Alert/Alert.tsx
|
|
976
1103
|
var React9 = __toESM(require("react"), 1);
|
|
977
1104
|
var import_fractal_icons7 = require("@mirror-physics/fractal-icons");
|
|
978
|
-
var
|
|
1105
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
979
1106
|
var defaultIcons = {
|
|
980
1107
|
default: import_fractal_icons7.CircleInfo,
|
|
981
1108
|
info: import_fractal_icons7.CircleInfo,
|
|
@@ -986,7 +1113,7 @@ var defaultIcons = {
|
|
|
986
1113
|
var Alert = React9.forwardRef(
|
|
987
1114
|
({ className, variant = "default", icon, children, ...props }, ref) => {
|
|
988
1115
|
const DefaultIcon = defaultIcons[variant];
|
|
989
|
-
return /* @__PURE__ */ (0,
|
|
1116
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
990
1117
|
"div",
|
|
991
1118
|
{
|
|
992
1119
|
ref,
|
|
@@ -994,8 +1121,8 @@ var Alert = React9.forwardRef(
|
|
|
994
1121
|
className: cn("fractal-alert", `fractal-alert--${variant}`, className),
|
|
995
1122
|
...props,
|
|
996
1123
|
children: [
|
|
997
|
-
/* @__PURE__ */ (0,
|
|
998
|
-
/* @__PURE__ */ (0,
|
|
1124
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "fractal-alert-icon", "aria-hidden": true, children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultIcon, { size: 18 }) }),
|
|
1125
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "fractal-alert-content", children })
|
|
999
1126
|
]
|
|
1000
1127
|
}
|
|
1001
1128
|
);
|
|
@@ -1003,18 +1130,18 @@ var Alert = React9.forwardRef(
|
|
|
1003
1130
|
);
|
|
1004
1131
|
Alert.displayName = "Alert";
|
|
1005
1132
|
var AlertTitle = React9.forwardRef(
|
|
1006
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
1133
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h5", { ref, className: cn("fractal-alert-title", className), ...props })
|
|
1007
1134
|
);
|
|
1008
1135
|
AlertTitle.displayName = "AlertTitle";
|
|
1009
1136
|
var AlertDescription = React9.forwardRef(
|
|
1010
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
1137
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { ref, className: cn("fractal-alert-description", className), ...props })
|
|
1011
1138
|
);
|
|
1012
1139
|
AlertDescription.displayName = "AlertDescription";
|
|
1013
1140
|
|
|
1014
1141
|
// src/components/Toggle/Toggle.tsx
|
|
1015
|
-
var
|
|
1142
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1016
1143
|
function Toggle({ checked, onChange, label, className }) {
|
|
1017
|
-
return /* @__PURE__ */ (0,
|
|
1144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
1018
1145
|
"button",
|
|
1019
1146
|
{
|
|
1020
1147
|
type: "button",
|
|
@@ -1023,8 +1150,8 @@ function Toggle({ checked, onChange, label, className }) {
|
|
|
1023
1150
|
className: cn("fractal-toggle", className),
|
|
1024
1151
|
onClick: () => onChange(!checked),
|
|
1025
1152
|
children: [
|
|
1026
|
-
/* @__PURE__ */ (0,
|
|
1027
|
-
label && /* @__PURE__ */ (0,
|
|
1153
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: cn("fractal-toggle-track", checked && "fractal-toggle-track--checked"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: cn("fractal-toggle-thumb", checked && "fractal-toggle-thumb--checked") }) }),
|
|
1154
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "fractal-toggle-label", children: label })
|
|
1028
1155
|
]
|
|
1029
1156
|
}
|
|
1030
1157
|
);
|
|
@@ -1086,7 +1213,7 @@ function useEscapeDismiss(priority, handler, enabled = true) {
|
|
|
1086
1213
|
|
|
1087
1214
|
// src/components/UILoader/UILoader.tsx
|
|
1088
1215
|
var import_react3 = require("react");
|
|
1089
|
-
var
|
|
1216
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1090
1217
|
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";
|
|
1091
1218
|
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";
|
|
1092
1219
|
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";
|
|
@@ -1095,7 +1222,7 @@ function UILoader({ size = 48, tone = "neutral", className, style, label = "Load
|
|
|
1095
1222
|
const clipId = `fractal-ui-loader-clip-${rawId}`;
|
|
1096
1223
|
const gradientId = `fractal-ui-loader-gradient-${rawId}`;
|
|
1097
1224
|
const height = typeof size === "number" ? `${size}px` : size;
|
|
1098
|
-
return /* @__PURE__ */ (0,
|
|
1225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1099
1226
|
"span",
|
|
1100
1227
|
{
|
|
1101
1228
|
"aria-hidden": ariaHidden || void 0,
|
|
@@ -1103,35 +1230,35 @@ function UILoader({ size = 48, tone = "neutral", className, style, label = "Load
|
|
|
1103
1230
|
className: cn("fractal-ui-loader", `fractal-ui-loader--${tone}`, className),
|
|
1104
1231
|
role: ariaHidden ? void 0 : "status",
|
|
1105
1232
|
style,
|
|
1106
|
-
children: /* @__PURE__ */ (0,
|
|
1107
|
-
/* @__PURE__ */ (0,
|
|
1108
|
-
/* @__PURE__ */ (0,
|
|
1109
|
-
/* @__PURE__ */ (0,
|
|
1110
|
-
/* @__PURE__ */ (0,
|
|
1233
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("svg", { "aria-hidden": "true", fill: "none", viewBox: "0 0 144 92", style: { height, width: "auto" }, children: [
|
|
1234
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("defs", { children: [
|
|
1235
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("linearGradient", { id: gradientId, x1: "59", x2: "94.3", y1: "0", y2: "89.1", gradientUnits: "userSpaceOnUse", children: [
|
|
1236
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("stop", { className: "fractal-ui-loader__stop-start", offset: "0" }),
|
|
1237
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("stop", { className: "fractal-ui-loader__stop-end", offset: "1" })
|
|
1111
1238
|
] }),
|
|
1112
|
-
/* @__PURE__ */ (0,
|
|
1113
|
-
/* @__PURE__ */ (0,
|
|
1114
|
-
/* @__PURE__ */ (0,
|
|
1115
|
-
/* @__PURE__ */ (0,
|
|
1239
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("linearGradient", { id: `${gradientId}-shine`, x1: "0", x2: "1", y1: "0", y2: "0", children: [
|
|
1240
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("stop", { offset: "0.4", stopColor: "white", stopOpacity: "0" }),
|
|
1241
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("stop", { offset: "0.5", stopColor: "white", stopOpacity: "0.62" }),
|
|
1242
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("stop", { offset: "0.6", stopColor: "white", stopOpacity: "0" })
|
|
1116
1243
|
] }),
|
|
1117
|
-
/* @__PURE__ */ (0,
|
|
1118
|
-
/* @__PURE__ */ (0,
|
|
1119
|
-
/* @__PURE__ */ (0,
|
|
1120
|
-
/* @__PURE__ */ (0,
|
|
1244
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("clipPath", { id: clipId, children: [
|
|
1245
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: LEFT }),
|
|
1246
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: CENTER }),
|
|
1247
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: RIGHT })
|
|
1121
1248
|
] })
|
|
1122
1249
|
] }),
|
|
1123
|
-
/* @__PURE__ */ (0,
|
|
1124
|
-
/* @__PURE__ */ (0,
|
|
1125
|
-
/* @__PURE__ */ (0,
|
|
1126
|
-
/* @__PURE__ */ (0,
|
|
1250
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: CENTER, fill: `url(#${gradientId})` }),
|
|
1251
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: RIGHT, fill: `url(#${gradientId})` }),
|
|
1252
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: LEFT, fill: `url(#${gradientId})` }),
|
|
1253
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("g", { clipPath: `url(#${clipId})`, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("g", { className: "fractal-ui-loader__shine-axis", transform: "translate(72 46) rotate(68.4)", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("rect", { className: "fractal-ui-loader__shine", x: "-160", y: "-100", width: "320", height: "200", fill: `url(#${gradientId}-shine)` }) }) })
|
|
1127
1254
|
] })
|
|
1128
1255
|
}
|
|
1129
1256
|
);
|
|
1130
1257
|
}
|
|
1131
1258
|
|
|
1132
1259
|
// src/components/Modal/Modal.tsx
|
|
1133
|
-
var
|
|
1134
|
-
var CloseIcon = () => /* @__PURE__ */ (0,
|
|
1260
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1261
|
+
var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime15.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_runtime15.jsx)("path", { d: "M12 4L4 12M4 4L12 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
1135
1262
|
function Modal({ open, onClose, title, children, danger, warn, footer, noClose, closeDisabled = false, size = "sm", loading = false, loadingLabel = "Loading", scrollable = false, className }) {
|
|
1136
1263
|
const [bodyScrolled, setBodyScrolled] = React10.useState(false);
|
|
1137
1264
|
useEscapeDismiss(80, onClose, open && !noClose && !closeDisabled);
|
|
@@ -1142,13 +1269,13 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
|
|
|
1142
1269
|
const sizeClass = `fractal-modal-panel--${size}`;
|
|
1143
1270
|
const accentClass = danger ? "fractal-modal-panel--danger" : warn ? "fractal-modal-panel--warn" : "";
|
|
1144
1271
|
return (0, import_react_dom.createPortal)(
|
|
1145
|
-
/* @__PURE__ */ (0,
|
|
1272
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "fractal-modal-overlay", onClick: noClose || closeDisabled ? void 0 : onClose, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1146
1273
|
"div",
|
|
1147
1274
|
{
|
|
1148
1275
|
className: cn("fractal-modal-panel", sizeClass, accentClass, scrollable && "fractal-modal-panel--scrollable", className),
|
|
1149
1276
|
onClick: (e) => e.stopPropagation(),
|
|
1150
1277
|
children: [
|
|
1151
|
-
/* @__PURE__ */ (0,
|
|
1278
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1152
1279
|
"div",
|
|
1153
1280
|
{
|
|
1154
1281
|
className: cn(
|
|
@@ -1157,12 +1284,12 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
|
|
|
1157
1284
|
scrollable && bodyScrolled && "fractal-modal-title-row--scrolled"
|
|
1158
1285
|
),
|
|
1159
1286
|
children: [
|
|
1160
|
-
/* @__PURE__ */ (0,
|
|
1161
|
-
!noClose && /* @__PURE__ */ (0,
|
|
1287
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h3", { className: cn("fractal-modal-title", danger && "fractal-modal-title--danger", warn && "fractal-modal-title--warn"), children: title }),
|
|
1288
|
+
!noClose && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { type: "button", onClick: onClose, title: "Close", disabled: closeDisabled, className: "fractal-modal-close", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CloseIcon, {}) })
|
|
1162
1289
|
]
|
|
1163
1290
|
}
|
|
1164
1291
|
),
|
|
1165
|
-
/* @__PURE__ */ (0,
|
|
1292
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1166
1293
|
"div",
|
|
1167
1294
|
{
|
|
1168
1295
|
"aria-busy": loading || void 0,
|
|
@@ -1173,10 +1300,10 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
|
|
|
1173
1300
|
scrollable && "fractal-modal-body--scrollable"
|
|
1174
1301
|
),
|
|
1175
1302
|
onScroll: scrollable ? (event) => setBodyScrolled(event.currentTarget.scrollTop > 0) : void 0,
|
|
1176
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1303
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(UILoader, { label: loadingLabel }) : children
|
|
1177
1304
|
}
|
|
1178
1305
|
),
|
|
1179
|
-
footer && /* @__PURE__ */ (0,
|
|
1306
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn("fractal-modal-footer", scrollable && "fractal-modal-footer--divided"), children: footer })
|
|
1180
1307
|
]
|
|
1181
1308
|
}
|
|
1182
1309
|
) }),
|
|
@@ -1185,17 +1312,17 @@ function Modal({ open, onClose, title, children, danger, warn, footer, noClose,
|
|
|
1185
1312
|
}
|
|
1186
1313
|
|
|
1187
1314
|
// src/components/DataTable/DataTable.tsx
|
|
1188
|
-
var
|
|
1315
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1189
1316
|
function DataTable({ columns, data, emptyMessage, header, size = "md", className }) {
|
|
1190
|
-
return /* @__PURE__ */ (0,
|
|
1191
|
-
header && /* @__PURE__ */ (0,
|
|
1192
|
-
data.length === 0 ? /* @__PURE__ */ (0,
|
|
1193
|
-
/* @__PURE__ */ (0,
|
|
1194
|
-
/* @__PURE__ */ (0,
|
|
1317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn("fractal-datatable", `fractal-datatable--${size}`, className), children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "fractal-datatable-surface", children: [
|
|
1318
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fractal-datatable-header", children: header }),
|
|
1319
|
+
data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "fractal-datatable-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("table", { className: "fractal-datatable-table", children: [
|
|
1320
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("tr", { className: "fractal-datatable-thead-row", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("th", { className: "fractal-datatable-th", style: { width: col.width }, children: col.header }, col.key)) }) }),
|
|
1321
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("tbody", { children: data.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1195
1322
|
"tr",
|
|
1196
1323
|
{
|
|
1197
1324
|
className: "fractal-datatable-row",
|
|
1198
|
-
children: columns.map((col) => /* @__PURE__ */ (0,
|
|
1325
|
+
children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("td", { className: "fractal-datatable-td", style: { width: col.width }, children: col.render(row, rowIndex) }, col.key))
|
|
1199
1326
|
},
|
|
1200
1327
|
rowIndex
|
|
1201
1328
|
)) })
|
|
@@ -1206,7 +1333,7 @@ function DataTable({ columns, data, emptyMessage, header, size = "md", className
|
|
|
1206
1333
|
// src/components/Dropdown/Dropdown.tsx
|
|
1207
1334
|
var React11 = __toESM(require("react"), 1);
|
|
1208
1335
|
var import_fractal_icons8 = require("@mirror-physics/fractal-icons");
|
|
1209
|
-
var
|
|
1336
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1210
1337
|
var MARGIN = 4;
|
|
1211
1338
|
function Dropdown({
|
|
1212
1339
|
items,
|
|
@@ -1302,8 +1429,8 @@ function Dropdown({
|
|
|
1302
1429
|
document.addEventListener("mousedown", handleClickOutside);
|
|
1303
1430
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
1304
1431
|
}, [open]);
|
|
1305
|
-
return /* @__PURE__ */ (0,
|
|
1306
|
-
/* @__PURE__ */ (0,
|
|
1432
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cn("fractal-dropdown", className), children: [
|
|
1433
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1307
1434
|
"button",
|
|
1308
1435
|
{
|
|
1309
1436
|
ref: triggerRef,
|
|
@@ -1322,15 +1449,15 @@ function Dropdown({
|
|
|
1322
1449
|
triggerClassName
|
|
1323
1450
|
),
|
|
1324
1451
|
children: [
|
|
1325
|
-
triggerContent != null ? triggerContent : /* @__PURE__ */ (0,
|
|
1326
|
-
selected.icon != null && /* @__PURE__ */ (0,
|
|
1327
|
-
selected.description != null && (typeof selected.description !== "string" || selected.description !== "") && /* @__PURE__ */ (0,
|
|
1452
|
+
triggerContent != null ? triggerContent : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
1453
|
+
selected.icon != null && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-icon fractal-dropdown-icon--trigger", children: selected.icon }),
|
|
1454
|
+
selected.description != null && (typeof selected.description !== "string" || selected.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-selected-text", children: selected.description })
|
|
1328
1455
|
] }),
|
|
1329
|
-
!noChevron && !iconOnly && /* @__PURE__ */ (0,
|
|
1456
|
+
!noChevron && !iconOnly && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-chevron", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ChevronIcon, { size: size === "sm" ? 14 : 16 }) })
|
|
1330
1457
|
]
|
|
1331
1458
|
}
|
|
1332
1459
|
),
|
|
1333
|
-
open && /* @__PURE__ */ (0,
|
|
1460
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1334
1461
|
"div",
|
|
1335
1462
|
{
|
|
1336
1463
|
ref: panelRef,
|
|
@@ -1339,21 +1466,21 @@ function Dropdown({
|
|
|
1339
1466
|
className: cn("fractal-dropdown-panel", `fractal-dropdown-panel--${size}`, panelClassName),
|
|
1340
1467
|
style: panelStyle,
|
|
1341
1468
|
children: [
|
|
1342
|
-
label != null && /* @__PURE__ */ (0,
|
|
1469
|
+
label != null && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "fractal-dropdown-label", children: label }),
|
|
1343
1470
|
visibleItems.map((item, index) => {
|
|
1344
|
-
const topDivider = item.border === "top" ? /* @__PURE__ */ (0,
|
|
1345
|
-
const bottomDivider = item.border === "bottom" ? /* @__PURE__ */ (0,
|
|
1471
|
+
const topDivider = item.border === "top" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
|
|
1472
|
+
const bottomDivider = item.border === "bottom" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "fractal-dropdown-separator" }) : null;
|
|
1346
1473
|
if (item.kind === "header") {
|
|
1347
|
-
return /* @__PURE__ */ (0,
|
|
1474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(React11.Fragment, { children: [
|
|
1348
1475
|
topDivider,
|
|
1349
|
-
/* @__PURE__ */ (0,
|
|
1476
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { role: "presentation", className: "fractal-dropdown-label", children: item.description }),
|
|
1350
1477
|
bottomDivider
|
|
1351
1478
|
] }, `header-${index}`);
|
|
1352
1479
|
}
|
|
1353
1480
|
const isSelected = item.value === selectedValue;
|
|
1354
|
-
return /* @__PURE__ */ (0,
|
|
1481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(React11.Fragment, { children: [
|
|
1355
1482
|
topDivider,
|
|
1356
|
-
/* @__PURE__ */ (0,
|
|
1483
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1357
1484
|
"button",
|
|
1358
1485
|
{
|
|
1359
1486
|
type: "button",
|
|
@@ -1365,9 +1492,9 @@ function Dropdown({
|
|
|
1365
1492
|
},
|
|
1366
1493
|
className: "fractal-dropdown-option",
|
|
1367
1494
|
children: [
|
|
1368
|
-
item.icon != null && /* @__PURE__ */ (0,
|
|
1369
|
-
item.description != null && (typeof item.description !== "string" || item.description !== "") && /* @__PURE__ */ (0,
|
|
1370
|
-
item.trailing != null && /* @__PURE__ */ (0,
|
|
1495
|
+
item.icon != null && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-icon", children: item.icon }),
|
|
1496
|
+
item.description != null && (typeof item.description !== "string" || item.description !== "") && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-option-text", children: item.description }),
|
|
1497
|
+
item.trailing != null && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "fractal-dropdown-trailing", children: item.trailing })
|
|
1371
1498
|
]
|
|
1372
1499
|
}
|
|
1373
1500
|
),
|
|
@@ -1382,9 +1509,9 @@ function Dropdown({
|
|
|
1382
1509
|
|
|
1383
1510
|
// src/components/Link/Link.tsx
|
|
1384
1511
|
var React12 = __toESM(require("react"), 1);
|
|
1385
|
-
var
|
|
1512
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1386
1513
|
var Link = React12.forwardRef(
|
|
1387
|
-
({ className, theme = "default", size = "md", ...props }, ref) => /* @__PURE__ */ (0,
|
|
1514
|
+
({ className, theme = "default", size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1388
1515
|
"a",
|
|
1389
1516
|
{
|
|
1390
1517
|
ref,
|
|
@@ -1397,9 +1524,9 @@ Link.displayName = "Link";
|
|
|
1397
1524
|
|
|
1398
1525
|
// src/components/Chip/Chip.tsx
|
|
1399
1526
|
var React13 = __toESM(require("react"), 1);
|
|
1400
|
-
var
|
|
1527
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1401
1528
|
var Chip = React13.forwardRef(
|
|
1402
|
-
({ className, tone = "neutral", ...props }, ref) => /* @__PURE__ */ (0,
|
|
1529
|
+
({ className, tone = "neutral", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1403
1530
|
"span",
|
|
1404
1531
|
{
|
|
1405
1532
|
ref,
|
|
@@ -1412,7 +1539,7 @@ Chip.displayName = "Chip";
|
|
|
1412
1539
|
|
|
1413
1540
|
// src/components/Checkbox/Checkbox.tsx
|
|
1414
1541
|
var import_fractal_icons9 = require("@mirror-physics/fractal-icons");
|
|
1415
|
-
var
|
|
1542
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1416
1543
|
function Checkbox({
|
|
1417
1544
|
checked,
|
|
1418
1545
|
indeterminate = false,
|
|
@@ -1423,7 +1550,7 @@ function Checkbox({
|
|
|
1423
1550
|
onKeyDown,
|
|
1424
1551
|
...props
|
|
1425
1552
|
}) {
|
|
1426
|
-
return /* @__PURE__ */ (0,
|
|
1553
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1427
1554
|
"button",
|
|
1428
1555
|
{
|
|
1429
1556
|
...props,
|
|
@@ -1445,10 +1572,10 @@ function Checkbox({
|
|
|
1445
1572
|
onKeyDown?.(event);
|
|
1446
1573
|
if (event.key === " " || event.key === "Enter") event.stopPropagation();
|
|
1447
1574
|
},
|
|
1448
|
-
children: indeterminate ? /* @__PURE__ */ (0,
|
|
1449
|
-
/* @__PURE__ */ (0,
|
|
1450
|
-
/* @__PURE__ */ (0,
|
|
1451
|
-
] }) : checked ? /* @__PURE__ */ (0,
|
|
1575
|
+
children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "fractal-checkbox__indeterminate-icon", "aria-hidden": "true", children: [
|
|
1576
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons9.Checkbox, { size: 18 }),
|
|
1577
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons9.Minus, { className: "fractal-checkbox__indeterminate-mark", size: 12 })
|
|
1578
|
+
] }) : checked ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons9.CheckboxChecked, { "aria-hidden": "true", size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fractal_icons9.Checkbox, { "aria-hidden": "true", size: 18 })
|
|
1452
1579
|
}
|
|
1453
1580
|
);
|
|
1454
1581
|
}
|
|
@@ -1456,7 +1583,7 @@ function Checkbox({
|
|
|
1456
1583
|
// src/components/SortableTable/SortableTable.tsx
|
|
1457
1584
|
var import_react4 = require("react");
|
|
1458
1585
|
var import_fractal_icons10 = require("@mirror-physics/fractal-icons");
|
|
1459
|
-
var
|
|
1586
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1460
1587
|
function SortableTable({
|
|
1461
1588
|
columns,
|
|
1462
1589
|
data,
|
|
@@ -1551,16 +1678,16 @@ function SortableTable({
|
|
|
1551
1678
|
onSortChange?.(nextKey, nextDirection);
|
|
1552
1679
|
}
|
|
1553
1680
|
};
|
|
1554
|
-
return /* @__PURE__ */ (0,
|
|
1555
|
-
header && /* @__PURE__ */ (0,
|
|
1556
|
-
visibleRows.length === 0 ? /* @__PURE__ */ (0,
|
|
1557
|
-
/* @__PURE__ */ (0,
|
|
1558
|
-
selection && /* @__PURE__ */ (0,
|
|
1681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("fractal-sortable-table", `fractal-sortable-table--${size}`, embedded && "fractal-sortable-table--embedded", className), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "fractal-sortable-table-surface", children: [
|
|
1682
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "fractal-sortable-table-header", children: header }),
|
|
1683
|
+
visibleRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "fractal-sortable-table-empty", children: emptyMessage || "No data" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("table", { "aria-label": ariaLabel, className: "fractal-sortable-table-table", children: [
|
|
1684
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("tr", { className: "fractal-sortable-table-thead-row", children: [
|
|
1685
|
+
selection && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1559
1686
|
"th",
|
|
1560
1687
|
{
|
|
1561
1688
|
className: "fractal-sortable-table-th fractal-sortable-table-selection-cell",
|
|
1562
1689
|
scope: "col",
|
|
1563
|
-
children: /* @__PURE__ */ (0,
|
|
1690
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1564
1691
|
Checkbox,
|
|
1565
1692
|
{
|
|
1566
1693
|
"aria-label": selection.selectAllLabel ?? "Select all rows",
|
|
@@ -1586,7 +1713,7 @@ function SortableTable({
|
|
|
1586
1713
|
columns.map((col) => {
|
|
1587
1714
|
const isActive = activeKey === col.key && activeDirection !== null;
|
|
1588
1715
|
if (!col.sortable) {
|
|
1589
|
-
return /* @__PURE__ */ (0,
|
|
1716
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1590
1717
|
"th",
|
|
1591
1718
|
{
|
|
1592
1719
|
className: "fractal-sortable-table-th",
|
|
@@ -1597,13 +1724,13 @@ function SortableTable({
|
|
|
1597
1724
|
col.key
|
|
1598
1725
|
);
|
|
1599
1726
|
}
|
|
1600
|
-
return /* @__PURE__ */ (0,
|
|
1727
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1601
1728
|
"th",
|
|
1602
1729
|
{
|
|
1603
1730
|
className: "fractal-sortable-table-th fractal-sortable-table-th--sortable",
|
|
1604
1731
|
scope: "col",
|
|
1605
1732
|
style: { width: col.width },
|
|
1606
|
-
children: /* @__PURE__ */ (0,
|
|
1733
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1607
1734
|
"button",
|
|
1608
1735
|
{
|
|
1609
1736
|
type: "button",
|
|
@@ -1614,8 +1741,8 @@ function SortableTable({
|
|
|
1614
1741
|
onClick: () => handleSortClick(col.key),
|
|
1615
1742
|
"aria-sort": isActive ? activeDirection === "asc" ? "ascending" : "descending" : "none",
|
|
1616
1743
|
children: [
|
|
1617
|
-
/* @__PURE__ */ (0,
|
|
1618
|
-
/* @__PURE__ */ (0,
|
|
1744
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: col.header }),
|
|
1745
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fractal-sortable-table-sort-icon", "aria-hidden": "true", children: isActive && activeDirection === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_fractal_icons10.ArrowUp, { size: 14 }) : isActive && activeDirection === "desc" ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_fractal_icons10.ArrowDown, { size: 14 }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_fractal_icons10.ArrowsUpDown, { size: 14 }) })
|
|
1619
1746
|
]
|
|
1620
1747
|
}
|
|
1621
1748
|
)
|
|
@@ -1624,7 +1751,7 @@ function SortableTable({
|
|
|
1624
1751
|
);
|
|
1625
1752
|
})
|
|
1626
1753
|
] }) }),
|
|
1627
|
-
/* @__PURE__ */ (0,
|
|
1754
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tbody", { children: visibleRows.map((row, rowIndex) => {
|
|
1628
1755
|
const highlighted = highlightRow?.(row, rowIndex) ?? false;
|
|
1629
1756
|
const disabled = isRowDisabled?.(row) ?? false;
|
|
1630
1757
|
const selectionDisabled = disabled || (isRowSelectionDisabled?.(row) ?? false);
|
|
@@ -1633,7 +1760,7 @@ function SortableTable({
|
|
|
1633
1760
|
label: rowAction.label(row, rowIndex),
|
|
1634
1761
|
icon: rowAction.icon(row, rowIndex)
|
|
1635
1762
|
} : null;
|
|
1636
|
-
return /* @__PURE__ */ (0,
|
|
1763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1637
1764
|
"tr",
|
|
1638
1765
|
{
|
|
1639
1766
|
className: cn(
|
|
@@ -1657,7 +1784,7 @@ function SortableTable({
|
|
|
1657
1784
|
role: interactive ? "button" : void 0,
|
|
1658
1785
|
tabIndex: interactive ? 0 : void 0,
|
|
1659
1786
|
children: [
|
|
1660
|
-
selection && /* @__PURE__ */ (0,
|
|
1787
|
+
selection && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("td", { className: "fractal-sortable-table-td fractal-sortable-table-selection-cell", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1661
1788
|
Checkbox,
|
|
1662
1789
|
{
|
|
1663
1790
|
"aria-label": selection.getRowLabel(row),
|
|
@@ -1669,7 +1796,7 @@ function SortableTable({
|
|
|
1669
1796
|
}
|
|
1670
1797
|
}
|
|
1671
1798
|
) }),
|
|
1672
|
-
columns.map((col, columnIndex) => /* @__PURE__ */ (0,
|
|
1799
|
+
columns.map((col, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1673
1800
|
"td",
|
|
1674
1801
|
{
|
|
1675
1802
|
className: cn(
|
|
@@ -1679,7 +1806,7 @@ function SortableTable({
|
|
|
1679
1806
|
style: { width: col.width, textAlign: col.align ?? "left" },
|
|
1680
1807
|
children: [
|
|
1681
1808
|
col.render(row, rowIndex),
|
|
1682
|
-
action && columnIndex === columns.length - 1 && /* @__PURE__ */ (0,
|
|
1809
|
+
action && columnIndex === columns.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fractal-sortable-table-row-action", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "fractal-sortable-table-row-action__icon", children: action.icon }) })
|
|
1683
1810
|
]
|
|
1684
1811
|
},
|
|
1685
1812
|
col.key
|
|
@@ -1695,7 +1822,7 @@ function SortableTable({
|
|
|
1695
1822
|
|
|
1696
1823
|
// src/components/Tabs/Tabs.tsx
|
|
1697
1824
|
var import_react5 = require("react");
|
|
1698
|
-
var
|
|
1825
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1699
1826
|
function Tabs({
|
|
1700
1827
|
items,
|
|
1701
1828
|
defaultValue,
|
|
@@ -1766,8 +1893,8 @@ function Tabs({
|
|
|
1766
1893
|
selectTab(nextId2);
|
|
1767
1894
|
requestAnimationFrame(() => tabRefs.current[nextId2]?.focus());
|
|
1768
1895
|
};
|
|
1769
|
-
return /* @__PURE__ */ (0,
|
|
1770
|
-
/* @__PURE__ */ (0,
|
|
1896
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: cn("fractal-tabs", `fractal-tabs--${variant}`, divider && "fractal-tabs--divider", className), children: [
|
|
1897
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1771
1898
|
"div",
|
|
1772
1899
|
{
|
|
1773
1900
|
ref: tabListRef,
|
|
@@ -1780,7 +1907,7 @@ function Tabs({
|
|
|
1780
1907
|
const isActive = item.id === activeId;
|
|
1781
1908
|
const tabId = `${reactId}-tab-${item.id}`;
|
|
1782
1909
|
const panelId = `${reactId}-panel-${item.id}`;
|
|
1783
|
-
return /* @__PURE__ */ (0,
|
|
1910
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1784
1911
|
"button",
|
|
1785
1912
|
{
|
|
1786
1913
|
ref: (el) => {
|
|
@@ -1811,7 +1938,7 @@ function Tabs({
|
|
|
1811
1938
|
const tabId = `${reactId}-tab-${item.id}`;
|
|
1812
1939
|
const panelId = `${reactId}-panel-${item.id}`;
|
|
1813
1940
|
const isActive = item.id === activeId;
|
|
1814
|
-
return /* @__PURE__ */ (0,
|
|
1941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1815
1942
|
"div",
|
|
1816
1943
|
{
|
|
1817
1944
|
id: panelId,
|
|
@@ -1829,7 +1956,7 @@ function Tabs({
|
|
|
1829
1956
|
|
|
1830
1957
|
// src/components/ContentSwitcher/ContentSwitcher.tsx
|
|
1831
1958
|
var React14 = __toESM(require("react"), 1);
|
|
1832
|
-
var
|
|
1959
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1833
1960
|
function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = false, className }) {
|
|
1834
1961
|
const switcherRef = React14.useRef(null);
|
|
1835
1962
|
const buttonRefs = React14.useRef([]);
|
|
@@ -1887,7 +2014,7 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
|
|
|
1887
2014
|
onValueChange(items[nextIndex].value);
|
|
1888
2015
|
}
|
|
1889
2016
|
};
|
|
1890
|
-
return /* @__PURE__ */ (0,
|
|
2017
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1891
2018
|
"div",
|
|
1892
2019
|
{
|
|
1893
2020
|
className: cn("fractal-content-switcher", fullWidth && "fractal-content-switcher--full-width", className),
|
|
@@ -1895,10 +2022,10 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
|
|
|
1895
2022
|
"aria-label": ariaLabel,
|
|
1896
2023
|
ref: switcherRef,
|
|
1897
2024
|
children: [
|
|
1898
|
-
/* @__PURE__ */ (0,
|
|
2025
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "fractal-content-switcher__indicator", "aria-hidden": true }),
|
|
1899
2026
|
items.map((item, index) => {
|
|
1900
2027
|
const active = item.value === value;
|
|
1901
|
-
return /* @__PURE__ */ (0,
|
|
2028
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1902
2029
|
"button",
|
|
1903
2030
|
{
|
|
1904
2031
|
className: cn("fractal-content-switcher__item", active && "fractal-content-switcher__item--active"),
|
|
@@ -1932,7 +2059,7 @@ function ContentSwitcher({ items, value, onValueChange, ariaLabel, fullWidth = f
|
|
|
1932
2059
|
// src/components/Disclosure/Disclosure.tsx
|
|
1933
2060
|
var import_react6 = require("react");
|
|
1934
2061
|
var import_fractal_icons11 = require("@mirror-physics/fractal-icons");
|
|
1935
|
-
var
|
|
2062
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1936
2063
|
function Disclosure({
|
|
1937
2064
|
title,
|
|
1938
2065
|
meta,
|
|
@@ -1960,7 +2087,7 @@ function Disclosure({
|
|
|
1960
2087
|
onOpenChange?.(next);
|
|
1961
2088
|
}
|
|
1962
2089
|
};
|
|
1963
|
-
return /* @__PURE__ */ (0,
|
|
2090
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1964
2091
|
"div",
|
|
1965
2092
|
{
|
|
1966
2093
|
className: cn(
|
|
@@ -1971,7 +2098,7 @@ function Disclosure({
|
|
|
1971
2098
|
className
|
|
1972
2099
|
),
|
|
1973
2100
|
children: [
|
|
1974
|
-
/* @__PURE__ */ (0,
|
|
2101
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1975
2102
|
"button",
|
|
1976
2103
|
{
|
|
1977
2104
|
type: "button",
|
|
@@ -1982,13 +2109,13 @@ function Disclosure({
|
|
|
1982
2109
|
disabled,
|
|
1983
2110
|
onClick: toggle,
|
|
1984
2111
|
children: [
|
|
1985
|
-
/* @__PURE__ */ (0,
|
|
1986
|
-
/* @__PURE__ */ (0,
|
|
1987
|
-
meta && /* @__PURE__ */ (0,
|
|
2112
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fractal-disclosure-icon", "aria-hidden": "true", children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fractal_icons11.ChevronDown, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fractal_icons11.ChevronRight, { size: 16 }) }),
|
|
2113
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fractal-disclosure-title", children: title }),
|
|
2114
|
+
meta && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "fractal-disclosure-meta", children: meta })
|
|
1988
2115
|
]
|
|
1989
2116
|
}
|
|
1990
2117
|
),
|
|
1991
|
-
/* @__PURE__ */ (0,
|
|
2118
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1992
2119
|
"div",
|
|
1993
2120
|
{
|
|
1994
2121
|
id: panelId,
|
|
@@ -1996,7 +2123,7 @@ function Disclosure({
|
|
|
1996
2123
|
"aria-labelledby": headerId,
|
|
1997
2124
|
className: "fractal-disclosure-panel",
|
|
1998
2125
|
hidden: !isOpen,
|
|
1999
|
-
children: /* @__PURE__ */ (0,
|
|
2126
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "fractal-disclosure-panel-inner", children })
|
|
2000
2127
|
}
|
|
2001
2128
|
)
|
|
2002
2129
|
]
|
|
@@ -2005,18 +2132,18 @@ function Disclosure({
|
|
|
2005
2132
|
}
|
|
2006
2133
|
|
|
2007
2134
|
// src/components/LatticeLoader/LatticeLoader.tsx
|
|
2008
|
-
var
|
|
2135
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2009
2136
|
var LATTICE_COUNT = 160;
|
|
2010
2137
|
var WAVE_PERIOD = 80;
|
|
2011
2138
|
function LatticeLoader({ className, label = "Loading", ...props }) {
|
|
2012
|
-
return /* @__PURE__ */ (0,
|
|
2139
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2013
2140
|
"span",
|
|
2014
2141
|
{
|
|
2015
2142
|
"aria-label": label,
|
|
2016
2143
|
className: cn("fractal-lattice-loader", className),
|
|
2017
2144
|
role: "progressbar",
|
|
2018
2145
|
...props,
|
|
2019
|
-
children: Array.from({ length: LATTICE_COUNT }, (_, index) => /* @__PURE__ */ (0,
|
|
2146
|
+
children: Array.from({ length: LATTICE_COUNT }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2020
2147
|
"span",
|
|
2021
2148
|
{
|
|
2022
2149
|
"aria-hidden": "true",
|
|
@@ -2030,10 +2157,10 @@ function LatticeLoader({ className, label = "Loading", ...props }) {
|
|
|
2030
2157
|
}
|
|
2031
2158
|
|
|
2032
2159
|
// src/components/Ghost/Ghost.tsx
|
|
2033
|
-
var
|
|
2160
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2034
2161
|
var toCssLength = (value) => typeof value === "number" ? `${value}px` : value;
|
|
2035
2162
|
function Ghost({ className, width, height, radius, style, ...props }) {
|
|
2036
|
-
return /* @__PURE__ */ (0,
|
|
2163
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2037
2164
|
"div",
|
|
2038
2165
|
{
|
|
2039
2166
|
"aria-hidden": "true",
|
|
@@ -2049,15 +2176,15 @@ function Ghost({ className, width, height, radius, style, ...props }) {
|
|
|
2049
2176
|
);
|
|
2050
2177
|
}
|
|
2051
2178
|
function GhostLine({ className, size = "md", width = "100%", ...props }) {
|
|
2052
|
-
return /* @__PURE__ */ (0,
|
|
2179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: cn("fractal-ghost-line", `fractal-ghost-line--${size}`, className), width, ...props });
|
|
2053
2180
|
}
|
|
2054
2181
|
function ButtonGhost({ className, size = "md", iconOnly = false, width, ...props }) {
|
|
2055
|
-
return /* @__PURE__ */ (0,
|
|
2182
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: cn("fractal-ghost-button", `fractal-ghost-button--${size}`, iconOnly && "fractal-ghost-button--icon-only", className), width, ...props });
|
|
2056
2183
|
}
|
|
2057
2184
|
function CardGhost({ className, lines = 3, showHeader = true, ...props }) {
|
|
2058
|
-
return /* @__PURE__ */ (0,
|
|
2059
|
-
showHeader && /* @__PURE__ */ (0,
|
|
2060
|
-
/* @__PURE__ */ (0,
|
|
2185
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-card", className), ...props, children: [
|
|
2186
|
+
showHeader && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "38%" }),
|
|
2187
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: index === lines - 1 ? "62%" : "100%" }, index)) })
|
|
2061
2188
|
] });
|
|
2062
2189
|
}
|
|
2063
2190
|
function DataTableGhost({
|
|
@@ -2071,81 +2198,81 @@ function DataTableGhost({
|
|
|
2071
2198
|
...props
|
|
2072
2199
|
}) {
|
|
2073
2200
|
const cells = Array.from({ length: columns }, (_, index) => index);
|
|
2074
|
-
return /* @__PURE__ */ (0,
|
|
2075
|
-
(showHeader || headers) && /* @__PURE__ */ (0,
|
|
2076
|
-
/* @__PURE__ */ (0,
|
|
2201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.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_runtime26.jsxs)("table", { className: "fractal-ghost-table__table", children: [
|
|
2202
|
+
(showHeader || headers) && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("tr", { className: "fractal-ghost-table__head-row", children: cells.map((index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("th", { style: { width: columnWidths?.[index] }, children: headers?.[index] ?? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { size: "sm", width: index === columns - 1 ? "62%" : "76%" }) }, index)) }) }),
|
|
2203
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("tbody", { children: Array.from({ length: rows }, (_, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("tr", { className: "fractal-ghost-table__row", children: cells.map((columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("td", { style: { width: columnWidths?.[columnIndex] }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: `${[72, 54, 82, 63, 46][(rowIndex + columnIndex) % 5]}%` }) }, columnIndex)) }, rowIndex)) })
|
|
2077
2204
|
] }) });
|
|
2078
2205
|
}
|
|
2079
2206
|
function InputGhost({ className, labelWidth = "26%", ...props }) {
|
|
2080
|
-
return /* @__PURE__ */ (0,
|
|
2207
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FormFieldGhost, { className, labelWidth, ...props });
|
|
2081
2208
|
}
|
|
2082
2209
|
function TextareaGhost({ className, labelWidth = "26%", ...props }) {
|
|
2083
|
-
return /* @__PURE__ */ (0,
|
|
2210
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FormFieldGhost, { className, labelWidth, multiline: true, ...props });
|
|
2084
2211
|
}
|
|
2085
2212
|
function LabelGhost({ className, width = "26%", ...props }) {
|
|
2086
|
-
return /* @__PURE__ */ (0,
|
|
2213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { className: cn("fractal-ghost-label", className), size: "sm", width, ...props });
|
|
2087
2214
|
}
|
|
2088
2215
|
function FormFieldGhost({ className, labelWidth = "26%", multiline = false, ...props }) {
|
|
2089
|
-
return /* @__PURE__ */ (0,
|
|
2090
|
-
/* @__PURE__ */ (0,
|
|
2091
|
-
/* @__PURE__ */ (0,
|
|
2216
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-field", className), ...props, children: [
|
|
2217
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelGhost, { width: labelWidth }),
|
|
2218
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: cn("fractal-ghost-field__control", multiline && "fractal-ghost-field__control--multiline") })
|
|
2092
2219
|
] });
|
|
2093
2220
|
}
|
|
2094
2221
|
function AlertGhost({ className, ...props }) {
|
|
2095
|
-
return /* @__PURE__ */ (0,
|
|
2096
|
-
/* @__PURE__ */ (0,
|
|
2097
|
-
/* @__PURE__ */ (0,
|
|
2222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-alert", className), ...props, children: [
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "30%" }),
|
|
2224
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { size: "sm", width: "78%" })
|
|
2098
2225
|
] });
|
|
2099
2226
|
}
|
|
2100
2227
|
function CheckboxGhost({ className, ...props }) {
|
|
2101
|
-
return /* @__PURE__ */ (0,
|
|
2102
|
-
/* @__PURE__ */ (0,
|
|
2103
|
-
/* @__PURE__ */ (0,
|
|
2228
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-choice", className), ...props, children: [
|
|
2229
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-choice__control" }),
|
|
2230
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "42%" })
|
|
2104
2231
|
] });
|
|
2105
2232
|
}
|
|
2106
2233
|
var ToggleGhost = CheckboxGhost;
|
|
2107
2234
|
function ChipGhost({ className, width = 74, ...props }) {
|
|
2108
|
-
return /* @__PURE__ */ (0,
|
|
2235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: cn("fractal-ghost-chip", className), height: 24, width, ...props });
|
|
2109
2236
|
}
|
|
2110
2237
|
function LinkGhost({ className, width = 96, ...props }) {
|
|
2111
|
-
return /* @__PURE__ */ (0,
|
|
2238
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { className: cn("fractal-ghost-link", className), size: "sm", width, ...props });
|
|
2112
2239
|
}
|
|
2113
2240
|
var TextButtonGhost = LinkGhost;
|
|
2114
2241
|
function DropdownGhost({ className, ...props }) {
|
|
2115
|
-
return /* @__PURE__ */ (0,
|
|
2116
|
-
/* @__PURE__ */ (0,
|
|
2117
|
-
/* @__PURE__ */ (0,
|
|
2242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropdown", className), ...props, children: [
|
|
2243
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "38%" }),
|
|
2244
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-dropdown__chevron" })
|
|
2118
2245
|
] });
|
|
2119
2246
|
}
|
|
2120
2247
|
function ContentSwitcherGhost({ className, options = 3, ...props }) {
|
|
2121
|
-
return /* @__PURE__ */ (0,
|
|
2248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-switcher", className), ...props, children: Array.from({ length: options }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, {}, index)) });
|
|
2122
2249
|
}
|
|
2123
2250
|
var TabsGhost = ContentSwitcherGhost;
|
|
2124
2251
|
function DisclosureGhost({ className, ...props }) {
|
|
2125
|
-
return /* @__PURE__ */ (0,
|
|
2126
|
-
/* @__PURE__ */ (0,
|
|
2127
|
-
/* @__PURE__ */ (0,
|
|
2252
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-disclosure", className), ...props, children: [
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-disclosure__icon" }),
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "42%" })
|
|
2128
2255
|
] });
|
|
2129
2256
|
}
|
|
2130
2257
|
function PaginationGhost({ className, pages = 5, ...props }) {
|
|
2131
|
-
return /* @__PURE__ */ (0,
|
|
2258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-hidden": "true", className: cn("fractal-ghost-pagination", className), ...props, children: Array.from({ length: pages }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, {}, index)) });
|
|
2132
2259
|
}
|
|
2133
2260
|
function FileDropzoneGhost({ className, ...props }) {
|
|
2134
|
-
return /* @__PURE__ */ (0,
|
|
2135
|
-
/* @__PURE__ */ (0,
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
2137
|
-
/* @__PURE__ */ (0,
|
|
2261
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-dropzone", className), ...props, children: [
|
|
2262
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-dropzone__icon" }),
|
|
2263
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "26%" }),
|
|
2264
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { size: "sm", width: "46%" })
|
|
2138
2265
|
] });
|
|
2139
2266
|
}
|
|
2140
2267
|
function PromptCardGhost({ className, ...props }) {
|
|
2141
|
-
return /* @__PURE__ */ (0,
|
|
2268
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(CardGhost, { className: cn("fractal-ghost-prompt-card", className), lines: 4, ...props });
|
|
2142
2269
|
}
|
|
2143
2270
|
function ConversationGhost({
|
|
2144
2271
|
className,
|
|
2145
2272
|
"aria-label": ariaLabel = "Loading conversation",
|
|
2146
2273
|
...props
|
|
2147
2274
|
}) {
|
|
2148
|
-
return /* @__PURE__ */ (0,
|
|
2275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2149
2276
|
"div",
|
|
2150
2277
|
{
|
|
2151
2278
|
"aria-busy": "true",
|
|
@@ -2154,54 +2281,54 @@ function ConversationGhost({
|
|
|
2154
2281
|
role: "status",
|
|
2155
2282
|
...props,
|
|
2156
2283
|
children: [
|
|
2157
|
-
/* @__PURE__ */ (0,
|
|
2158
|
-
/* @__PURE__ */ (0,
|
|
2159
|
-
/* @__PURE__ */ (0,
|
|
2160
|
-
/* @__PURE__ */ (0,
|
|
2284
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--user", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "fractal-ghost-conversation__bubble", children: [
|
|
2285
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "100%" }),
|
|
2286
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "86%" }),
|
|
2287
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "64%" })
|
|
2161
2288
|
] }) }),
|
|
2162
|
-
/* @__PURE__ */ (0,
|
|
2163
|
-
/* @__PURE__ */ (0,
|
|
2164
|
-
/* @__PURE__ */ (0,
|
|
2165
|
-
/* @__PURE__ */ (0,
|
|
2289
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: "fractal-ghost-conversation__message fractal-ghost-conversation__message--assistant", children: [
|
|
2290
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "92%" }),
|
|
2291
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "78%" }),
|
|
2292
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "58%" })
|
|
2166
2293
|
] })
|
|
2167
2294
|
]
|
|
2168
2295
|
}
|
|
2169
2296
|
);
|
|
2170
2297
|
}
|
|
2171
2298
|
function SortableTableGhost(props) {
|
|
2172
|
-
return /* @__PURE__ */ (0,
|
|
2299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DataTableGhost, { ...props });
|
|
2173
2300
|
}
|
|
2174
2301
|
function SidebarGhost({ className, items = 6, ...props }) {
|
|
2175
|
-
return /* @__PURE__ */ (0,
|
|
2176
|
-
/* @__PURE__ */ (0,
|
|
2177
|
-
/* @__PURE__ */ (0,
|
|
2178
|
-
/* @__PURE__ */ (0,
|
|
2179
|
-
/* @__PURE__ */ (0,
|
|
2302
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("aside", { "aria-hidden": "true", className: cn("fractal-ghost-sidebar", className), ...props, children: [
|
|
2303
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-sidebar__brand" }),
|
|
2304
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-ghost-sidebar__items", children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "fractal-ghost-sidebar__item", children: [
|
|
2305
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, {}),
|
|
2306
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: `${[54, 68, 44, 61][index % 4]}%` })
|
|
2180
2307
|
] }, index)) })
|
|
2181
2308
|
] });
|
|
2182
2309
|
}
|
|
2183
2310
|
function ModalGhost({ className, title, lines = 3, ...props }) {
|
|
2184
|
-
return /* @__PURE__ */ (0,
|
|
2311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SurfaceGhost, { className: cn("fractal-ghost-modal", className), title, lines, ...props });
|
|
2185
2312
|
}
|
|
2186
2313
|
function SidePanelGhost({ className, title, lines = 5, ...props }) {
|
|
2187
|
-
return /* @__PURE__ */ (0,
|
|
2314
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SurfaceGhost, { className: cn("fractal-ghost-side-panel", className), title, lines, ...props });
|
|
2188
2315
|
}
|
|
2189
2316
|
function SurfaceGhost({ className, title, lines = 3, ...props }) {
|
|
2190
|
-
return /* @__PURE__ */ (0,
|
|
2191
|
-
/* @__PURE__ */ (0,
|
|
2192
|
-
/* @__PURE__ */ (0,
|
|
2193
|
-
/* @__PURE__ */ (0,
|
|
2317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { "aria-hidden": "true", className: cn("fractal-ghost-surface", className), ...props, children: [
|
|
2318
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "fractal-ghost-surface__header", children: [
|
|
2319
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: "42%" }),
|
|
2320
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Ghost, { className: "fractal-ghost-surface__close" })
|
|
2194
2321
|
] }),
|
|
2195
|
-
title && /* @__PURE__ */ (0,
|
|
2196
|
-
/* @__PURE__ */ (0,
|
|
2322
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-ghost-surface__title", children: title }),
|
|
2323
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fractal-ghost-stack", children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GhostLine, { width: index === lines - 1 ? "64%" : "100%" }, index)) })
|
|
2197
2324
|
] });
|
|
2198
2325
|
}
|
|
2199
2326
|
|
|
2200
2327
|
// src/components/Sidebar/Sidebar.tsx
|
|
2201
2328
|
var React15 = __toESM(require("react"), 1);
|
|
2202
|
-
var
|
|
2329
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2203
2330
|
var Sidebar = React15.forwardRef(
|
|
2204
|
-
({ className, width, compact = false, style, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2331
|
+
({ className, width, compact = false, style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2205
2332
|
"aside",
|
|
2206
2333
|
{
|
|
2207
2334
|
ref,
|
|
@@ -2214,11 +2341,11 @@ var Sidebar = React15.forwardRef(
|
|
|
2214
2341
|
);
|
|
2215
2342
|
Sidebar.displayName = "Sidebar";
|
|
2216
2343
|
var SidebarHeader = React15.forwardRef(
|
|
2217
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2344
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { ref, className: cn("fractal-sidebar__header", className), ...props })
|
|
2218
2345
|
);
|
|
2219
2346
|
SidebarHeader.displayName = "SidebarHeader";
|
|
2220
2347
|
var SidebarBrand = React15.forwardRef(
|
|
2221
|
-
({ className, type = "button", ...props }, ref) => /* @__PURE__ */ (0,
|
|
2348
|
+
({ className, type = "button", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { ref, type, className: cn("fractal-sidebar__brand", className), ...props })
|
|
2222
2349
|
);
|
|
2223
2350
|
SidebarBrand.displayName = "SidebarBrand";
|
|
2224
2351
|
function SidebarAccountMenu({
|
|
@@ -2229,7 +2356,7 @@ function SidebarAccountMenu({
|
|
|
2229
2356
|
icon,
|
|
2230
2357
|
className
|
|
2231
2358
|
}) {
|
|
2232
|
-
return /* @__PURE__ */ (0,
|
|
2359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2233
2360
|
Dropdown,
|
|
2234
2361
|
{
|
|
2235
2362
|
align: "left",
|
|
@@ -2239,9 +2366,9 @@ function SidebarAccountMenu({
|
|
|
2239
2366
|
panelClassName: "fractal-sidebar__account-panel",
|
|
2240
2367
|
selectedValue: "",
|
|
2241
2368
|
triggerClassName: "fractal-sidebar__account-trigger",
|
|
2242
|
-
triggerContent: /* @__PURE__ */ (0,
|
|
2243
|
-
icon && /* @__PURE__ */ (0,
|
|
2244
|
-
/* @__PURE__ */ (0,
|
|
2369
|
+
triggerContent: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
2370
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fractal-sidebar__account-icon", "aria-hidden": "true", children: icon }),
|
|
2371
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fractal-sidebar__account-name", children: name })
|
|
2245
2372
|
] }),
|
|
2246
2373
|
triggerLabel,
|
|
2247
2374
|
triggerVariant: "tertiary"
|
|
@@ -2249,15 +2376,15 @@ function SidebarAccountMenu({
|
|
|
2249
2376
|
);
|
|
2250
2377
|
}
|
|
2251
2378
|
var SidebarNav = React15.forwardRef(
|
|
2252
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2379
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("nav", { ref, className: cn("fractal-sidebar__nav", className), ...props })
|
|
2253
2380
|
);
|
|
2254
2381
|
SidebarNav.displayName = "SidebarNav";
|
|
2255
2382
|
var SidebarSection = React15.forwardRef(
|
|
2256
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2383
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { ref, className: cn("fractal-sidebar__section", className), ...props })
|
|
2257
2384
|
);
|
|
2258
2385
|
SidebarSection.displayName = "SidebarSection";
|
|
2259
2386
|
var SidebarNavItem = React15.forwardRef(
|
|
2260
|
-
({ active = false, icon, endAdornment, className, type = "button", children, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2387
|
+
({ active = false, icon, endAdornment, className, type = "button", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2261
2388
|
"button",
|
|
2262
2389
|
{
|
|
2263
2390
|
ref,
|
|
@@ -2267,28 +2394,28 @@ var SidebarNavItem = React15.forwardRef(
|
|
|
2267
2394
|
"aria-current": active ? "page" : void 0,
|
|
2268
2395
|
...props,
|
|
2269
2396
|
children: [
|
|
2270
|
-
icon && /* @__PURE__ */ (0,
|
|
2271
|
-
/* @__PURE__ */ (0,
|
|
2272
|
-
endAdornment && /* @__PURE__ */ (0,
|
|
2397
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fractal-sidebar__nav-item-icon", "aria-hidden": "true", children: icon }),
|
|
2398
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fractal-sidebar__nav-item-label", children }),
|
|
2399
|
+
endAdornment && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "fractal-sidebar__nav-item-end", children: endAdornment })
|
|
2273
2400
|
]
|
|
2274
2401
|
}
|
|
2275
2402
|
)
|
|
2276
2403
|
);
|
|
2277
2404
|
SidebarNavItem.displayName = "SidebarNavItem";
|
|
2278
2405
|
var SidebarFooter = React15.forwardRef(
|
|
2279
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2406
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { ref, className: cn("fractal-sidebar__footer", className), ...props })
|
|
2280
2407
|
);
|
|
2281
2408
|
SidebarFooter.displayName = "SidebarFooter";
|
|
2282
2409
|
|
|
2283
2410
|
// src/components/SidePanel/SidePanel.tsx
|
|
2284
2411
|
var import_react_dom2 = require("react-dom");
|
|
2285
2412
|
var import_fractal_icons12 = require("@mirror-physics/fractal-icons");
|
|
2286
|
-
var
|
|
2413
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2287
2414
|
function SidePanel({ open, onClose, title, description, children, footer, size = "md", loading = false, loadingLabel = "Loading", className }) {
|
|
2288
2415
|
useEscapeDismiss(80, onClose, open);
|
|
2289
2416
|
if (!open) return null;
|
|
2290
2417
|
return (0, import_react_dom2.createPortal)(
|
|
2291
|
-
/* @__PURE__ */ (0,
|
|
2418
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "fractal-side-panel-overlay", onMouseDown: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2292
2419
|
"aside",
|
|
2293
2420
|
{
|
|
2294
2421
|
className: cn("fractal-side-panel", `fractal-side-panel--${size}`, className),
|
|
@@ -2297,15 +2424,15 @@ function SidePanel({ open, onClose, title, description, children, footer, size =
|
|
|
2297
2424
|
role: "dialog",
|
|
2298
2425
|
onMouseDown: (event) => event.stopPropagation(),
|
|
2299
2426
|
children: [
|
|
2300
|
-
/* @__PURE__ */ (0,
|
|
2301
|
-
/* @__PURE__ */ (0,
|
|
2302
|
-
typeof title === "string" ? /* @__PURE__ */ (0,
|
|
2303
|
-
description && /* @__PURE__ */ (0,
|
|
2427
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("header", { className: "fractal-side-panel__header", children: [
|
|
2428
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "fractal-side-panel__heading", children: [
|
|
2429
|
+
typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h2", { className: "fractal-side-panel__title", children: title }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "fractal-side-panel__title", children: title }),
|
|
2430
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "fractal-side-panel__description", children: description })
|
|
2304
2431
|
] }),
|
|
2305
|
-
/* @__PURE__ */ (0,
|
|
2432
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("button", { type: "button", className: "fractal-side-panel__close", "aria-label": "Close panel", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_fractal_icons12.Close, { size: 18 }) })
|
|
2306
2433
|
] }),
|
|
2307
|
-
/* @__PURE__ */ (0,
|
|
2308
|
-
footer && /* @__PURE__ */ (0,
|
|
2434
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.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_runtime28.jsx)(UILoader, { label: loadingLabel }) : children }),
|
|
2435
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("footer", { className: "fractal-side-panel__footer", children: footer })
|
|
2309
2436
|
]
|
|
2310
2437
|
}
|
|
2311
2438
|
) }),
|
|
@@ -2315,17 +2442,17 @@ function SidePanel({ open, onClose, title, description, children, footer, size =
|
|
|
2315
2442
|
|
|
2316
2443
|
// src/components/Textarea/Textarea.tsx
|
|
2317
2444
|
var React16 = __toESM(require("react"), 1);
|
|
2318
|
-
var
|
|
2445
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2319
2446
|
var Textarea = React16.forwardRef(
|
|
2320
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2447
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("textarea", { ref, className: cn("fractal-textarea", className), ...props })
|
|
2321
2448
|
);
|
|
2322
2449
|
Textarea.displayName = "Textarea";
|
|
2323
2450
|
|
|
2324
2451
|
// src/components/TextButton/TextButton.tsx
|
|
2325
2452
|
var React17 = __toESM(require("react"), 1);
|
|
2326
|
-
var
|
|
2453
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2327
2454
|
var TextButton = React17.forwardRef(
|
|
2328
|
-
({ className, icon, iconPosition = "start", size = "md", tone = "primary", children, ...props }, ref) => /* @__PURE__ */ (0,
|
|
2455
|
+
({ className, icon, iconPosition = "start", size = "md", tone = "primary", children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
2329
2456
|
"button",
|
|
2330
2457
|
{
|
|
2331
2458
|
ref,
|
|
@@ -2333,9 +2460,9 @@ var TextButton = React17.forwardRef(
|
|
|
2333
2460
|
type: "button",
|
|
2334
2461
|
...props,
|
|
2335
2462
|
children: [
|
|
2336
|
-
icon && iconPosition === "start" && /* @__PURE__ */ (0,
|
|
2337
|
-
/* @__PURE__ */ (0,
|
|
2338
|
-
icon && iconPosition === "end" && /* @__PURE__ */ (0,
|
|
2463
|
+
icon && iconPosition === "start" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon }),
|
|
2464
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children }),
|
|
2465
|
+
icon && iconPosition === "end" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "fractal-text-button__icon", "aria-hidden": "true", children: icon })
|
|
2339
2466
|
]
|
|
2340
2467
|
}
|
|
2341
2468
|
)
|
|
@@ -2345,7 +2472,7 @@ TextButton.displayName = "TextButton";
|
|
|
2345
2472
|
// src/components/FileDropzone/FileDropzone.tsx
|
|
2346
2473
|
var React18 = __toESM(require("react"), 1);
|
|
2347
2474
|
var import_fractal_icons13 = require("@mirror-physics/fractal-icons");
|
|
2348
|
-
var
|
|
2475
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2349
2476
|
function FileDropzone({
|
|
2350
2477
|
files,
|
|
2351
2478
|
onFilesChange,
|
|
@@ -2365,8 +2492,8 @@ function FileDropzone({
|
|
|
2365
2492
|
if (additions.length === 0) return;
|
|
2366
2493
|
onFilesChange(multiple ? [...files, ...additions] : additions.slice(0, 1));
|
|
2367
2494
|
};
|
|
2368
|
-
return /* @__PURE__ */ (0,
|
|
2369
|
-
/* @__PURE__ */ (0,
|
|
2495
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cn("fractal-file-dropzone", className), children: [
|
|
2496
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2370
2497
|
"input",
|
|
2371
2498
|
{
|
|
2372
2499
|
ref: inputRef,
|
|
@@ -2382,7 +2509,7 @@ function FileDropzone({
|
|
|
2382
2509
|
}
|
|
2383
2510
|
}
|
|
2384
2511
|
),
|
|
2385
|
-
/* @__PURE__ */ (0,
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
2386
2513
|
"button",
|
|
2387
2514
|
{
|
|
2388
2515
|
className: "fractal-file-dropzone__target",
|
|
@@ -2405,18 +2532,18 @@ function FileDropzone({
|
|
|
2405
2532
|
addFiles(event.dataTransfer.files);
|
|
2406
2533
|
},
|
|
2407
2534
|
children: [
|
|
2408
|
-
/* @__PURE__ */ (0,
|
|
2409
|
-
/* @__PURE__ */ (0,
|
|
2410
|
-
/* @__PURE__ */ (0,
|
|
2411
|
-
description && /* @__PURE__ */ (0,
|
|
2535
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_fractal_icons13.FileArrowUp, { "aria-hidden": "true", size: 20 }),
|
|
2536
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: "fractal-file-dropzone__copy", children: [
|
|
2537
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fractal-file-dropzone__title", children: title }),
|
|
2538
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fractal-file-dropzone__description", children: description })
|
|
2412
2539
|
] })
|
|
2413
2540
|
]
|
|
2414
2541
|
}
|
|
2415
2542
|
),
|
|
2416
|
-
files.length > 0 && /* @__PURE__ */ (0,
|
|
2417
|
-
/* @__PURE__ */ (0,
|
|
2418
|
-
/* @__PURE__ */ (0,
|
|
2419
|
-
/* @__PURE__ */ (0,
|
|
2543
|
+
files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("ul", { className: "fractal-file-dropzone__files", "aria-label": "Attached files", children: files.map((file, index) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("li", { className: "fractal-file-dropzone__file", children: [
|
|
2544
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fractal-file-dropzone__file-name", children: file.name }),
|
|
2545
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "fractal-file-dropzone__file-meta", children: formatFileSize(file.size) }),
|
|
2546
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2420
2547
|
"button",
|
|
2421
2548
|
{
|
|
2422
2549
|
className: "fractal-file-dropzone__remove",
|
|
@@ -2424,7 +2551,7 @@ function FileDropzone({
|
|
|
2424
2551
|
"aria-label": `Remove ${file.name}`,
|
|
2425
2552
|
disabled,
|
|
2426
2553
|
onClick: () => onFilesChange(files.filter((_, fileIndex) => fileIndex !== index)),
|
|
2427
|
-
children: /* @__PURE__ */ (0,
|
|
2554
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_fractal_icons13.Close, { "aria-hidden": "true", size: 14 })
|
|
2428
2555
|
}
|
|
2429
2556
|
)
|
|
2430
2557
|
] }, `${file.name}-${file.size}-${index}`)) })
|
|
@@ -2438,7 +2565,7 @@ function formatFileSize(bytes) {
|
|
|
2438
2565
|
|
|
2439
2566
|
// src/components/Pagination/Pagination.tsx
|
|
2440
2567
|
var import_fractal_icons14 = require("@mirror-physics/fractal-icons");
|
|
2441
|
-
var
|
|
2568
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2442
2569
|
function Pagination({
|
|
2443
2570
|
page,
|
|
2444
2571
|
pageSize,
|
|
@@ -2454,10 +2581,10 @@ function Pagination({
|
|
|
2454
2581
|
const start = totalItems === 0 ? 0 : (currentPage - 1) * pageSize + 1;
|
|
2455
2582
|
const end = Math.min(currentPage * pageSize, totalItems);
|
|
2456
2583
|
const canChangePageSize = pageSizeOptions != null && pageSizeOptions.length > 0 && onPageSizeChange != null;
|
|
2457
|
-
return /* @__PURE__ */ (0,
|
|
2458
|
-
/* @__PURE__ */ (0,
|
|
2459
|
-
/* @__PURE__ */ (0,
|
|
2460
|
-
canChangePageSize && /* @__PURE__ */ (0,
|
|
2584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("nav", { className: cn("fractal-pagination", className), "aria-label": ariaLabel, children: [
|
|
2585
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "fractal-pagination__summary", children: totalItems === 0 ? "No results" : `${start}-${end} of ${totalItems}` }),
|
|
2586
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "fractal-pagination__controls", children: [
|
|
2587
|
+
canChangePageSize && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2461
2588
|
Dropdown,
|
|
2462
2589
|
{
|
|
2463
2590
|
align: "right",
|
|
@@ -2474,7 +2601,7 @@ function Pagination({
|
|
|
2474
2601
|
triggerVariant: "tertiary"
|
|
2475
2602
|
}
|
|
2476
2603
|
),
|
|
2477
|
-
/* @__PURE__ */ (0,
|
|
2604
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2478
2605
|
"button",
|
|
2479
2606
|
{
|
|
2480
2607
|
className: "fractal-pagination__button",
|
|
@@ -2483,15 +2610,15 @@ function Pagination({
|
|
|
2483
2610
|
title: "Previous page",
|
|
2484
2611
|
disabled: currentPage === 1 || totalItems === 0,
|
|
2485
2612
|
onClick: () => onPageChange(currentPage - 1),
|
|
2486
|
-
children: /* @__PURE__ */ (0,
|
|
2613
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_fractal_icons14.ArrowLeft, { "aria-hidden": "true", size: 16 })
|
|
2487
2614
|
}
|
|
2488
2615
|
),
|
|
2489
|
-
/* @__PURE__ */ (0,
|
|
2616
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "fractal-pagination__page", "aria-current": "page", children: [
|
|
2490
2617
|
currentPage,
|
|
2491
2618
|
" of ",
|
|
2492
2619
|
totalPages
|
|
2493
2620
|
] }),
|
|
2494
|
-
/* @__PURE__ */ (0,
|
|
2621
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2495
2622
|
"button",
|
|
2496
2623
|
{
|
|
2497
2624
|
className: "fractal-pagination__button",
|
|
@@ -2500,7 +2627,7 @@ function Pagination({
|
|
|
2500
2627
|
title: "Next page",
|
|
2501
2628
|
disabled: currentPage === totalPages || totalItems === 0,
|
|
2502
2629
|
onClick: () => onPageChange(currentPage + 1),
|
|
2503
|
-
children: /* @__PURE__ */ (0,
|
|
2630
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_fractal_icons14.ArrowRight, { "aria-hidden": "true", size: 16 })
|
|
2504
2631
|
}
|
|
2505
2632
|
)
|
|
2506
2633
|
] })
|
|
@@ -2569,6 +2696,7 @@ function Pagination({
|
|
|
2569
2696
|
SidebarNav,
|
|
2570
2697
|
SidebarNavItem,
|
|
2571
2698
|
SidebarSection,
|
|
2699
|
+
Slider,
|
|
2572
2700
|
SortableTable,
|
|
2573
2701
|
SortableTableGhost,
|
|
2574
2702
|
TableSearch,
|