@reopt-ai/opt-ui 1.12.4 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +236 -0
- package/COMPONENT_CATALOG.md +290 -111
- package/dist/core/index.cjs +13 -13
- package/dist/core/index.d.cts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/docs/02-components/01-core.md +49 -49
- package/dist/docs/02-components/02-visuals.md +1 -1
- package/dist/docs/02-components/03-shells.md +260 -63
- package/dist/docs/02-components/04-surfaces.md +1 -1
- package/dist/docs/02-components/index.md +4 -4
- package/dist/{field-sidebar-C8bDzGPs.js → field-sidebar-CRdToHRO.js} +3975 -235
- package/dist/{field-sidebar-DX5wP0qn.cjs → field-sidebar-CxxSK4JO.cjs} +4338 -244
- package/dist/{field-sidebar-Ct8c9L4V.d.cts → field-sidebar-D-rwuN_w.d.cts} +824 -2
- package/dist/{field-sidebar-YaWHfLLW.d.ts → field-sidebar-Dz7J4ett.d.ts} +824 -2
- package/dist/id-registry.cjs +72 -0
- package/dist/id-registry.js +72 -0
- package/dist/id-registry.json +153 -0
- package/dist/index.cjs +334 -1419
- package/dist/index.d.cts +51 -86
- package/dist/index.d.ts +51 -86
- package/dist/index.js +248 -1356
- package/dist/{key-pad-menu-1YN221Oi.cjs → key-pad-menu-0KWOnELe.cjs} +53 -483
- package/dist/{key-pad-menu-CwcY_Vps.d.cts → key-pad-menu-BOVu97bj.d.cts} +4 -55
- package/dist/{key-pad-menu-CUiQ-vKw.js → key-pad-menu-DMmbQ1jF.js} +54 -418
- package/dist/{key-pad-menu-WBJShCJn.d.ts → key-pad-menu-NlZ9zNF8.d.ts} +4 -55
- package/dist/meta.cjs +896 -7
- package/dist/meta.js +896 -7
- package/dist/shells/index.cjs +20 -1
- package/dist/shells/index.d.cts +2 -2
- package/dist/shells/index.d.ts +2 -2
- package/dist/shells/index.js +2 -2
- package/dist/{text-truncate-BFWd2cE_.js → text-truncate-Bd-0WkSP.js} +463 -99
- package/dist/{text-truncate-DsG5UAOY.cjs → text-truncate-BeYW6XZu.cjs} +525 -101
- package/dist/{text-truncate-CQyfUZvq.d.cts → text-truncate-eMzvU_7k.d.cts} +52 -1
- package/dist/{text-truncate-CQyfUZvq.d.ts → text-truncate-eMzvU_7k.d.ts} +52 -1
- package/dist/theme/server.cjs +2 -2
- package/dist/theme/server.js +2 -2
- package/package.json +6 -2
|
@@ -28,6 +28,7 @@ let react = require("react");
|
|
|
28
28
|
react = __toESM(react, 1);
|
|
29
29
|
let _reopt_ai_opt_ui_primitives = require("@reopt-ai/opt-ui-primitives");
|
|
30
30
|
let lucide_react = require("lucide-react");
|
|
31
|
+
let react_resizable_panels = require("react-resizable-panels");
|
|
31
32
|
//#region src/lib/cn.ts
|
|
32
33
|
/** Handles cn. */
|
|
33
34
|
function cn(...inputs) {
|
|
@@ -242,7 +243,7 @@ function useControlledState(defaultValue, controlledValue, onChange) {
|
|
|
242
243
|
}
|
|
243
244
|
//#endregion
|
|
244
245
|
//#region src/core/skeleton.tsx
|
|
245
|
-
const _excluded$
|
|
246
|
+
const _excluded$21 = [
|
|
246
247
|
"variant",
|
|
247
248
|
"width",
|
|
248
249
|
"height",
|
|
@@ -251,9 +252,9 @@ const _excluded$17 = [
|
|
|
251
252
|
"className",
|
|
252
253
|
"style"
|
|
253
254
|
];
|
|
254
|
-
const _excluded2$
|
|
255
|
-
const _excluded3$
|
|
256
|
-
const _excluded4$
|
|
255
|
+
const _excluded2$11 = ["lines", "className"];
|
|
256
|
+
const _excluded3$10 = ["size", "className"];
|
|
257
|
+
const _excluded4$7 = ["className"];
|
|
257
258
|
const variantStyles$4 = {
|
|
258
259
|
text: "rounded h-4",
|
|
259
260
|
circular: "rounded-full",
|
|
@@ -261,7 +262,7 @@ const variantStyles$4 = {
|
|
|
261
262
|
};
|
|
262
263
|
/** Renders the skeleton component. */
|
|
263
264
|
function Skeleton(_ref) {
|
|
264
|
-
let { variant = "text", width, height, lines = 1, animated = true, className, style } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
265
|
+
let { variant = "text", width, height, lines = 1, animated = true, className, style } = _ref, props = _objectWithoutProperties(_ref, _excluded$21);
|
|
265
266
|
const baseClass = cn("bg-bg-subtle", animated && "animate-pulse", variantStyles$4[variant], className);
|
|
266
267
|
const computedStyle = _objectSpread2({
|
|
267
268
|
width: typeof width === "number" ? `${width}px` : width,
|
|
@@ -297,7 +298,7 @@ function Skeleton(_ref) {
|
|
|
297
298
|
}
|
|
298
299
|
/** Renders the skeleton text component. */
|
|
299
300
|
function SkeletonText(_ref2) {
|
|
300
|
-
let { lines = 3, className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
301
|
+
let { lines = 3, className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$11);
|
|
301
302
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, _objectSpread2(_objectSpread2({
|
|
302
303
|
variant: "text",
|
|
303
304
|
lines,
|
|
@@ -309,7 +310,7 @@ function SkeletonText(_ref2) {
|
|
|
309
310
|
}
|
|
310
311
|
/** Renders the skeleton avatar component. */
|
|
311
312
|
function SkeletonAvatar(_ref3) {
|
|
312
|
-
let { size = 40, className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
313
|
+
let { size = 40, className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$10);
|
|
313
314
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Skeleton, _objectSpread2(_objectSpread2({
|
|
314
315
|
variant: "circular",
|
|
315
316
|
width: size,
|
|
@@ -322,7 +323,7 @@ function SkeletonAvatar(_ref3) {
|
|
|
322
323
|
}
|
|
323
324
|
/** Renders the skeleton card component. */
|
|
324
325
|
function SkeletonCard(_ref4) {
|
|
325
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
326
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$7);
|
|
326
327
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", _objectSpread2(_objectSpread2({ className: cn("gap-group flex flex-col", className) }, props), {}, {
|
|
327
328
|
"data-opt-id": "34V5D",
|
|
328
329
|
"data-opt-slug": "skeleton.SkeletonCard",
|
|
@@ -516,7 +517,7 @@ const koBreadcrumbLabels = {
|
|
|
516
517
|
navAriaLabel: "{label}(으)로 이동" };
|
|
517
518
|
//#endregion
|
|
518
519
|
//#region src/core/button.tsx
|
|
519
|
-
const _excluded$
|
|
520
|
+
const _excluded$20 = [
|
|
520
521
|
"variant",
|
|
521
522
|
"size",
|
|
522
523
|
"loading",
|
|
@@ -533,18 +534,18 @@ const variantStyles$3 = {
|
|
|
533
534
|
ghost: "text-text-secondary hover:bg-bg-subtle active:bg-bg-muted focus-visible:ring-offset-1",
|
|
534
535
|
danger: "bg-danger text-danger-fg hover:bg-danger active:bg-danger focus-visible:ring-offset-2"
|
|
535
536
|
};
|
|
536
|
-
const sizeStyles$
|
|
537
|
+
const sizeStyles$6 = {
|
|
537
538
|
sm: "h-[var(--opt-control-sm)] px-[var(--opt-control-padding-sm)] text-xs gap-[var(--opt-space-1-5)]",
|
|
538
539
|
md: "h-[var(--opt-control-md)] px-[var(--opt-control-padding-md)] text-sm gap-[var(--opt-space-2)]",
|
|
539
540
|
lg: "h-[var(--opt-control-lg)] px-[var(--opt-control-padding-lg)] text-base gap-[var(--opt-space-2)]"
|
|
540
541
|
};
|
|
541
542
|
/** Renders the button component. */
|
|
542
543
|
function Button(_ref) {
|
|
543
|
-
let { variant = "primary", size = "md", loading = false, leftIcon, rightIcon, className, disabled, children, "aria-busy": ariaBusy } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
544
|
+
let { variant = "primary", size = "md", loading = false, leftIcon, rightIcon, className, disabled, children, "aria-busy": ariaBusy } = _ref, props = _objectWithoutProperties(_ref, _excluded$20);
|
|
544
545
|
const isDisabled = disabled || loading;
|
|
545
546
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", _objectSpread2(_objectSpread2({
|
|
546
547
|
type: "button",
|
|
547
|
-
className: cn("inline-flex cursor-pointer items-center justify-center rounded-lg font-medium transition-colors", OPT_FOCUS_VISIBLE, variantStyles$3[variant], sizeStyles$
|
|
548
|
+
className: cn("inline-flex cursor-pointer items-center justify-center rounded-lg font-medium transition-colors", OPT_FOCUS_VISIBLE, variantStyles$3[variant], sizeStyles$6[size], isDisabled && "pointer-events-none cursor-not-allowed opacity-50", className),
|
|
548
549
|
disabled: isDisabled
|
|
549
550
|
}, props), {}, {
|
|
550
551
|
"aria-busy": loading ? true : ariaBusy,
|
|
@@ -646,8 +647,111 @@ function EmptyState({ icon, title, description, body, footer, actions, className
|
|
|
646
647
|
});
|
|
647
648
|
}
|
|
648
649
|
//#endregion
|
|
650
|
+
//#region src/core/description-list.tsx
|
|
651
|
+
const defaultLabels = {
|
|
652
|
+
copy: (term) => `Copy ${term}`,
|
|
653
|
+
copied: "Copied",
|
|
654
|
+
empty: "—"
|
|
655
|
+
};
|
|
656
|
+
const columnsClass = {
|
|
657
|
+
1: "grid-cols-1",
|
|
658
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
659
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
660
|
+
4: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4"
|
|
661
|
+
};
|
|
662
|
+
function CopyButton({ value, label, copiedLabel }) {
|
|
663
|
+
const [copied, setCopied] = (0, react.useState)(false);
|
|
664
|
+
const handleCopy = (0, react.useCallback)(() => {
|
|
665
|
+
var _navigator$clipboard;
|
|
666
|
+
(_navigator$clipboard = navigator.clipboard) === null || _navigator$clipboard === void 0 || _navigator$clipboard.writeText(value).then(() => {
|
|
667
|
+
setCopied(true);
|
|
668
|
+
window.setTimeout(() => setCopied(false), 1500);
|
|
669
|
+
});
|
|
670
|
+
}, [value]);
|
|
671
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
672
|
+
type: "button",
|
|
673
|
+
onClick: handleCopy,
|
|
674
|
+
"aria-label": copied ? copiedLabel : label,
|
|
675
|
+
className: cn(OPT_FOCUS_VISIBLE, OPT_TEXT_TERTIARY, "hover:text-text-primary shrink-0 rounded p-0.5 transition-colors"),
|
|
676
|
+
children: copied ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, {
|
|
677
|
+
className: "size-3.5",
|
|
678
|
+
"aria-hidden": "true"
|
|
679
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Copy, {
|
|
680
|
+
className: "size-3.5",
|
|
681
|
+
"aria-hidden": "true"
|
|
682
|
+
})
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
/**
|
|
686
|
+
* DescriptionList — the labelled facts about one thing.
|
|
687
|
+
*
|
|
688
|
+
* Detail views collect a dozen short fields that each mean nothing without
|
|
689
|
+
* their label, and hand-rolling them as a `<div>` grid loses the term/value
|
|
690
|
+
* association that assistive tech needs. This keeps the pairs in a real `<dl>`
|
|
691
|
+
* while still laying them out as boxed cells.
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* ```tsx
|
|
695
|
+
* <DescriptionList
|
|
696
|
+
* layout="grid"
|
|
697
|
+
* columns={2}
|
|
698
|
+
* items={[
|
|
699
|
+
* { id: "id", term: "Session ID", description: session.id, copyValue: session.id },
|
|
700
|
+
* { id: "entry", term: "Entry path", description: session.entryPath },
|
|
701
|
+
* ]}
|
|
702
|
+
* />
|
|
703
|
+
* ```
|
|
704
|
+
*/
|
|
705
|
+
function DescriptionList({ items, layout = "grid", columns = 2, compressed = false, labels: customLabels, className }) {
|
|
706
|
+
const labels = _objectSpread2(_objectSpread2({}, defaultLabels), customLabels);
|
|
707
|
+
if (layout === "inline") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dl", {
|
|
708
|
+
className: cn("flex flex-wrap items-baseline gap-x-6 gap-y-2", className),
|
|
709
|
+
"data-opt-id": "1NPD2",
|
|
710
|
+
"data-opt-slug": "description-list.DescriptionList",
|
|
711
|
+
children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
712
|
+
className: "flex items-baseline gap-2",
|
|
713
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", {
|
|
714
|
+
className: cn(OPT_TEXT_TERTIARY, "text-xs"),
|
|
715
|
+
title: item.hint,
|
|
716
|
+
children: item.term
|
|
717
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", {
|
|
718
|
+
className: cn(OPT_TEXT_PRIMARY, "text-sm font-medium"),
|
|
719
|
+
children: item.description || labels.empty
|
|
720
|
+
})]
|
|
721
|
+
}, item.id))
|
|
722
|
+
});
|
|
723
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dl", {
|
|
724
|
+
className: cn("grid", compressed ? "gap-element" : "gap-group", columnsClass[columns], className),
|
|
725
|
+
"data-opt-id": "1NPD2",
|
|
726
|
+
"data-opt-slug": "description-list.DescriptionList",
|
|
727
|
+
children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
728
|
+
className: cn("flex min-w-0 flex-col gap-1", layout === "grid" && [
|
|
729
|
+
"border border-border",
|
|
730
|
+
"bg-bg-subtle rounded-lg",
|
|
731
|
+
compressed ? "px-2.5 py-1.5" : "px-3 py-2"
|
|
732
|
+
]),
|
|
733
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", {
|
|
734
|
+
className: cn(OPT_TEXT_TERTIARY, "text-xs"),
|
|
735
|
+
title: item.hint,
|
|
736
|
+
children: item.term
|
|
737
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dd", {
|
|
738
|
+
className: cn(OPT_TEXT_PRIMARY, "flex min-w-0 items-center gap-1.5 text-sm"),
|
|
739
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
740
|
+
className: cn("min-w-0", item.wrap ? "break-all" : "truncate", !item.description && "text-text-secondary"),
|
|
741
|
+
children: item.description || labels.empty
|
|
742
|
+
}), item.copyValue && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyButton, {
|
|
743
|
+
value: item.copyValue,
|
|
744
|
+
label: labels.copy(typeof item.term === "string" ? item.term : item.id),
|
|
745
|
+
copiedLabel: labels.copied
|
|
746
|
+
})]
|
|
747
|
+
})]
|
|
748
|
+
}, item.id))
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
DescriptionList.displayName = "DescriptionList";
|
|
752
|
+
//#endregion
|
|
649
753
|
//#region src/core/badge.tsx
|
|
650
|
-
const _excluded$
|
|
754
|
+
const _excluded$19 = [
|
|
651
755
|
"variant",
|
|
652
756
|
"size",
|
|
653
757
|
"dot",
|
|
@@ -677,19 +781,19 @@ const progressStroke = {
|
|
|
677
781
|
error: "stroke-danger",
|
|
678
782
|
info: "stroke-info"
|
|
679
783
|
};
|
|
680
|
-
const sizeStyles$
|
|
784
|
+
const sizeStyles$5 = {
|
|
681
785
|
sm: "px-1.5 py-0.5 text-[10px]",
|
|
682
786
|
md: "px-2 py-0.5 text-[11px]"
|
|
683
787
|
};
|
|
684
788
|
/** Renders the badge component. */
|
|
685
789
|
function Badge(_ref) {
|
|
686
|
-
let { variant = "default", size = "md", dot = false, progress, progressSize = 16, className, children } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
790
|
+
let { variant = "default", size = "md", dot = false, progress, progressSize = 16, className, children } = _ref, props = _objectWithoutProperties(_ref, _excluded$19);
|
|
687
791
|
const hasProgress = progress != null;
|
|
688
792
|
const clampedProgress = hasProgress ? Math.min(100, Math.max(0, progress)) : 0;
|
|
689
793
|
const radius = (progressSize - 3) / 2;
|
|
690
794
|
const circumference = 2 * Math.PI * radius;
|
|
691
795
|
const offset = circumference - clampedProgress / 100 * circumference;
|
|
692
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", _objectSpread2(_objectSpread2({ className: cn(OPT_BADGE, variantStyles$2[variant], sizeStyles$
|
|
796
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", _objectSpread2(_objectSpread2({ className: cn(OPT_BADGE, variantStyles$2[variant], sizeStyles$5[size], className) }, props), {}, {
|
|
693
797
|
"data-opt-id": "9GBGZ",
|
|
694
798
|
"data-opt-slug": "badge.Badge",
|
|
695
799
|
children: [
|
|
@@ -729,24 +833,24 @@ function Badge(_ref) {
|
|
|
729
833
|
}
|
|
730
834
|
//#endregion
|
|
731
835
|
//#region src/core/spinner.tsx
|
|
732
|
-
const _excluded$
|
|
836
|
+
const _excluded$18 = [
|
|
733
837
|
"size",
|
|
734
838
|
"className",
|
|
735
839
|
"role",
|
|
736
840
|
"aria-hidden",
|
|
737
841
|
"aria-label"
|
|
738
842
|
];
|
|
739
|
-
const sizeStyles$
|
|
843
|
+
const sizeStyles$4 = {
|
|
740
844
|
sm: "h-4 w-4",
|
|
741
845
|
md: "h-6 w-6",
|
|
742
846
|
lg: "h-8 w-8"
|
|
743
847
|
};
|
|
744
848
|
/** Renders the spinner component. */
|
|
745
849
|
function Spinner(_ref) {
|
|
746
|
-
let { size = "md", className, role, "aria-hidden": ariaHidden, "aria-label": ariaLabel } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
850
|
+
let { size = "md", className, role, "aria-hidden": ariaHidden, "aria-label": ariaLabel } = _ref, props = _objectWithoutProperties(_ref, _excluded$18);
|
|
747
851
|
const isDecorative = ariaHidden === true || ariaHidden === "true";
|
|
748
852
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", _objectSpread2(_objectSpread2({
|
|
749
|
-
className: cn("animate-spin text-current", sizeStyles$
|
|
853
|
+
className: cn("animate-spin text-current", sizeStyles$4[size], className),
|
|
750
854
|
viewBox: "0 0 24 24",
|
|
751
855
|
fill: "none",
|
|
752
856
|
role: isDecorative ? void 0 : role !== null && role !== void 0 ? role : "status",
|
|
@@ -771,7 +875,7 @@ function Spinner(_ref) {
|
|
|
771
875
|
}
|
|
772
876
|
//#endregion
|
|
773
877
|
//#region src/core/alert.tsx
|
|
774
|
-
const _excluded$
|
|
878
|
+
const _excluded$17 = [
|
|
775
879
|
"variant",
|
|
776
880
|
"title",
|
|
777
881
|
"icon",
|
|
@@ -840,7 +944,7 @@ const defaultIcons = {
|
|
|
840
944
|
};
|
|
841
945
|
/** Renders the alert component. */
|
|
842
946
|
function Alert(_ref) {
|
|
843
|
-
let { variant = "info", title, icon, dismissible = false, onDismiss, className, children } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
947
|
+
let { variant = "info", title, icon, dismissible = false, onDismiss, className, children } = _ref, props = _objectWithoutProperties(_ref, _excluded$17);
|
|
844
948
|
const displayIcon = icon !== null && icon !== void 0 ? icon : defaultIcons[variant];
|
|
845
949
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", _objectSpread2(_objectSpread2({
|
|
846
950
|
role: "alert",
|
|
@@ -887,10 +991,10 @@ function Alert(_ref) {
|
|
|
887
991
|
}
|
|
888
992
|
//#endregion
|
|
889
993
|
//#region src/core/toolbar.tsx
|
|
890
|
-
const _excluded$
|
|
891
|
-
const _excluded2$
|
|
892
|
-
const _excluded3$
|
|
893
|
-
const _excluded4$
|
|
994
|
+
const _excluded$16 = ["className"];
|
|
995
|
+
const _excluded2$10 = ["className"];
|
|
996
|
+
const _excluded3$9 = ["className"];
|
|
997
|
+
const _excluded4$6 = ["className"];
|
|
894
998
|
const _excluded5$3 = ["className"];
|
|
895
999
|
const toolbarClass = `${OPT_SURFACE} ${OPT_BORDER} inline-flex w-fit items-center gap-0.5 px-1.5 py-1`;
|
|
896
1000
|
const buttonClass = `cursor-pointer rounded-md px-2.5 py-1.5 text-text-primary transition-colors data-[disabled]:cursor-not-allowed ${OPT_ACTIVE_ITEM} ${OPT_FOCUS}`;
|
|
@@ -905,7 +1009,7 @@ function ToolbarRoot(props) {
|
|
|
905
1009
|
}
|
|
906
1010
|
/** Renders the toolbar container component. */
|
|
907
1011
|
function ToolbarContainer(_ref) {
|
|
908
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1012
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$16);
|
|
909
1013
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ToolbarContainer, _objectSpread2(_objectSpread2({ className: cn(toolbarClass, className) }, props), {}, {
|
|
910
1014
|
"data-opt-id": "2AVXB",
|
|
911
1015
|
"data-opt-slug": "toolbar.ToolbarContainer"
|
|
@@ -913,7 +1017,7 @@ function ToolbarContainer(_ref) {
|
|
|
913
1017
|
}
|
|
914
1018
|
/** Renders the toolbar button component. */
|
|
915
1019
|
function ToolbarButton(_ref2) {
|
|
916
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1020
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$10);
|
|
917
1021
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ToolbarButton, _objectSpread2(_objectSpread2({ className: cn(buttonClass, className) }, props), {}, {
|
|
918
1022
|
"data-opt-id": "C212C",
|
|
919
1023
|
"data-opt-slug": "toolbar.ToolbarButton"
|
|
@@ -921,7 +1025,7 @@ function ToolbarButton(_ref2) {
|
|
|
921
1025
|
}
|
|
922
1026
|
/** Renders the toolbar separator component. */
|
|
923
1027
|
function ToolbarSeparator(_ref3) {
|
|
924
|
-
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1028
|
+
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$9);
|
|
925
1029
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ToolbarSeparator, _objectSpread2(_objectSpread2({ className: cn(separatorClass, className) }, props), {}, {
|
|
926
1030
|
"data-opt-id": "9J72S",
|
|
927
1031
|
"data-opt-slug": "toolbar.ToolbarSeparator"
|
|
@@ -929,14 +1033,14 @@ function ToolbarSeparator(_ref3) {
|
|
|
929
1033
|
}
|
|
930
1034
|
/** Renders the tooltip provider component. */
|
|
931
1035
|
function TooltipProvider(props) {
|
|
932
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.
|
|
1036
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.TooltipRoot, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
933
1037
|
"data-opt-id": "6NKHT",
|
|
934
1038
|
"data-opt-slug": "toolbar.TooltipProvider"
|
|
935
1039
|
}));
|
|
936
1040
|
}
|
|
937
1041
|
/** Renders the tooltip anchor component. */
|
|
938
1042
|
function TooltipAnchor(_ref4) {
|
|
939
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
1043
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$6);
|
|
940
1044
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.TooltipAnchor, _objectSpread2(_objectSpread2({ className }, props), {}, {
|
|
941
1045
|
"data-opt-id": "SAW1B",
|
|
942
1046
|
"data-opt-slug": "toolbar.TooltipAnchor"
|
|
@@ -961,7 +1065,7 @@ function useInputId(id, label, prefix) {
|
|
|
961
1065
|
}
|
|
962
1066
|
//#endregion
|
|
963
1067
|
//#region src/core/input.tsx
|
|
964
|
-
const _excluded$
|
|
1068
|
+
const _excluded$15 = [
|
|
965
1069
|
"label",
|
|
966
1070
|
"error",
|
|
967
1071
|
"hint",
|
|
@@ -976,7 +1080,7 @@ const _excluded$11 = [
|
|
|
976
1080
|
const inputSizeStyles = OPT_INPUT_SIZE;
|
|
977
1081
|
const Input = (0, react.forwardRef)((_ref, ref) => {
|
|
978
1082
|
var _useInputId;
|
|
979
|
-
let { label, error, hint, leftIcon, rightIcon, fullWidth = false, size = "md", required, className, id } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1083
|
+
let { label, error, hint, leftIcon, rightIcon, fullWidth = false, size = "md", required, className, id } = _ref, props = _objectWithoutProperties(_ref, _excluded$15);
|
|
980
1084
|
const fallbackId = (0, react.useId)().replace(/:/g, "");
|
|
981
1085
|
const inputId = (_useInputId = useInputId(id, label, "input")) !== null && _useInputId !== void 0 ? _useInputId : `input-${fallbackId}`;
|
|
982
1086
|
const hasError = Boolean(error);
|
|
@@ -1022,6 +1126,106 @@ const Input = (0, react.forwardRef)((_ref, ref) => {
|
|
|
1022
1126
|
});
|
|
1023
1127
|
Input.displayName = "Input";
|
|
1024
1128
|
//#endregion
|
|
1129
|
+
//#region src/core/switch.tsx
|
|
1130
|
+
const _excluded$14 = [
|
|
1131
|
+
"label",
|
|
1132
|
+
"required",
|
|
1133
|
+
"error",
|
|
1134
|
+
"hint",
|
|
1135
|
+
"description",
|
|
1136
|
+
"checked",
|
|
1137
|
+
"defaultChecked",
|
|
1138
|
+
"onChange",
|
|
1139
|
+
"size",
|
|
1140
|
+
"disabled",
|
|
1141
|
+
"className",
|
|
1142
|
+
"id",
|
|
1143
|
+
"onClick",
|
|
1144
|
+
"aria-label",
|
|
1145
|
+
"aria-labelledby"
|
|
1146
|
+
];
|
|
1147
|
+
const sizeStyles$3 = {
|
|
1148
|
+
sm: {
|
|
1149
|
+
track: "h-5 w-9",
|
|
1150
|
+
thumb: "h-4 w-4",
|
|
1151
|
+
translate: "translate-x-4"
|
|
1152
|
+
},
|
|
1153
|
+
md: {
|
|
1154
|
+
track: "h-6 w-11",
|
|
1155
|
+
thumb: "h-5 w-5",
|
|
1156
|
+
translate: "translate-x-5"
|
|
1157
|
+
},
|
|
1158
|
+
lg: {
|
|
1159
|
+
track: "h-7 w-14",
|
|
1160
|
+
thumb: "h-6 w-6",
|
|
1161
|
+
translate: "translate-x-7"
|
|
1162
|
+
}
|
|
1163
|
+
};
|
|
1164
|
+
const Switch = (0, react.forwardRef)((_ref, ref) => {
|
|
1165
|
+
var _useInputId;
|
|
1166
|
+
let { label, required, error, hint, description, checked: controlledChecked, defaultChecked = false, onChange, size = "md", disabled, className, id, onClick, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy } = _ref, props = _objectWithoutProperties(_ref, _excluded$14);
|
|
1167
|
+
const fallbackId = (0, react.useId)();
|
|
1168
|
+
const switchId = (_useInputId = useInputId(id, label, "switch")) !== null && _useInputId !== void 0 ? _useInputId : `switch-${fallbackId}`;
|
|
1169
|
+
const hintText = hint !== null && hint !== void 0 ? hint : description;
|
|
1170
|
+
const hasError = Boolean(error);
|
|
1171
|
+
const styles = sizeStyles$3[size];
|
|
1172
|
+
const labelId = label ? `${switchId}-label` : void 0;
|
|
1173
|
+
const switchLabelledBy = ariaLabelledBy !== null && ariaLabelledBy !== void 0 ? ariaLabelledBy : ariaLabel ? void 0 : labelId;
|
|
1174
|
+
const switchAriaLabel = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : switchLabelledBy ? void 0 : "Switch";
|
|
1175
|
+
const isControlled = controlledChecked !== void 0;
|
|
1176
|
+
const [internalChecked, setInternalChecked] = (0, react.useState)(defaultChecked);
|
|
1177
|
+
const checked = isControlled ? controlledChecked : internalChecked;
|
|
1178
|
+
const handleClick = (0, react.useCallback)((e) => {
|
|
1179
|
+
const next = !checked;
|
|
1180
|
+
if (!isControlled) setInternalChecked(next);
|
|
1181
|
+
onChange === null || onChange === void 0 || onChange(next);
|
|
1182
|
+
onClick === null || onClick === void 0 || onClick(e);
|
|
1183
|
+
}, [
|
|
1184
|
+
checked,
|
|
1185
|
+
isControlled,
|
|
1186
|
+
onChange,
|
|
1187
|
+
onClick
|
|
1188
|
+
]);
|
|
1189
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1190
|
+
className: cn("flex flex-col gap-1.5", className),
|
|
1191
|
+
"data-opt-id": "51Z9R",
|
|
1192
|
+
"data-opt-slug": "switch.Switch",
|
|
1193
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1194
|
+
className: "flex items-start gap-3",
|
|
1195
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", _objectSpread2(_objectSpread2({
|
|
1196
|
+
ref,
|
|
1197
|
+
type: "button",
|
|
1198
|
+
role: "switch",
|
|
1199
|
+
id: switchId,
|
|
1200
|
+
"aria-checked": checked,
|
|
1201
|
+
"aria-label": switchAriaLabel,
|
|
1202
|
+
"aria-labelledby": switchLabelledBy,
|
|
1203
|
+
disabled,
|
|
1204
|
+
className: cn("group relative inline-flex shrink-0 cursor-pointer rounded-full p-0.5 transition-colors", styles.track, "bg-bg-muted", "aria-[checked=true]:bg-accent", "disabled:cursor-not-allowed disabled:opacity-50", OPT_FOCUS_VISIBLE),
|
|
1205
|
+
"aria-invalid": hasError,
|
|
1206
|
+
"aria-required": required,
|
|
1207
|
+
"aria-describedby": getDescribedBy(switchId, error, hintText),
|
|
1208
|
+
onClick: handleClick
|
|
1209
|
+
}, props), {}, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: cn("pointer-events-none inline-block transform rounded-full bg-white shadow-sm ring-0 transition-transform", styles.thumb, "translate-x-0", size === "sm" && "group-aria-[checked=true]:translate-x-4", size === "md" && "group-aria-[checked=true]:translate-x-5", size === "lg" && "group-aria-[checked=true]:translate-x-7") }) })), (label || hintText) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1210
|
+
className: "flex flex-col",
|
|
1211
|
+
children: [label && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
1212
|
+
id: labelId,
|
|
1213
|
+
className: cn("text-text-primary text-sm font-medium", disabled && "opacity-50"),
|
|
1214
|
+
children: [label, required && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RequiredMark, {})]
|
|
1215
|
+
}), hintText && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1216
|
+
id: `${switchId}-hint`,
|
|
1217
|
+
className: cn("text-text-tertiary text-sm", disabled && "opacity-50"),
|
|
1218
|
+
children: hintText
|
|
1219
|
+
})]
|
|
1220
|
+
})]
|
|
1221
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FieldMessages, {
|
|
1222
|
+
id: switchId,
|
|
1223
|
+
error
|
|
1224
|
+
})]
|
|
1225
|
+
});
|
|
1226
|
+
});
|
|
1227
|
+
Switch.displayName = "Switch";
|
|
1228
|
+
//#endregion
|
|
1025
1229
|
//#region src/core/star-rating.tsx
|
|
1026
1230
|
function interpolate(template, values) {
|
|
1027
1231
|
return template.replace(/\{(\w+)\}/g, (_, key) => key in values ? String(values[key]) : `{${key}}`);
|
|
@@ -1126,8 +1330,62 @@ function StarRating({ value = 0, onChange, max = 5, readOnly = false, size = "md
|
|
|
1126
1330
|
});
|
|
1127
1331
|
}
|
|
1128
1332
|
//#endregion
|
|
1333
|
+
//#region src/core/textarea.tsx
|
|
1334
|
+
const _excluded$13 = [
|
|
1335
|
+
"label",
|
|
1336
|
+
"error",
|
|
1337
|
+
"hint",
|
|
1338
|
+
"fullWidth",
|
|
1339
|
+
"required",
|
|
1340
|
+
"resize",
|
|
1341
|
+
"size",
|
|
1342
|
+
"className",
|
|
1343
|
+
"id",
|
|
1344
|
+
"rows"
|
|
1345
|
+
];
|
|
1346
|
+
const textareaSizeStyles = OPT_TEXTAREA_SIZE;
|
|
1347
|
+
const resizeStyles$1 = {
|
|
1348
|
+
none: "resize-none",
|
|
1349
|
+
vertical: "resize-y",
|
|
1350
|
+
horizontal: "resize-x",
|
|
1351
|
+
both: "resize"
|
|
1352
|
+
};
|
|
1353
|
+
const Textarea = (0, react.forwardRef)((_ref, ref) => {
|
|
1354
|
+
var _useInputId;
|
|
1355
|
+
let { label, error, hint, fullWidth = false, required, resize = "vertical", size = "md", className, id, rows = 4 } = _ref, props = _objectWithoutProperties(_ref, _excluded$13);
|
|
1356
|
+
const fallbackId = (0, react.useId)().replace(/:/g, "");
|
|
1357
|
+
const textareaId = (_useInputId = useInputId(id, label, "textarea")) !== null && _useInputId !== void 0 ? _useInputId : `textarea-${fallbackId}`;
|
|
1358
|
+
const hasError = Boolean(error);
|
|
1359
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1360
|
+
className: cn("flex flex-col gap-1.5", fullWidth && "w-full"),
|
|
1361
|
+
"data-opt-id": "6T58H",
|
|
1362
|
+
"data-opt-slug": "textarea.Textarea",
|
|
1363
|
+
children: [
|
|
1364
|
+
label && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
1365
|
+
htmlFor: textareaId,
|
|
1366
|
+
className: "text-text-primary text-sm font-medium",
|
|
1367
|
+
children: [label, required && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RequiredMark, {})]
|
|
1368
|
+
}),
|
|
1369
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", _objectSpread2({
|
|
1370
|
+
ref,
|
|
1371
|
+
id: textareaId,
|
|
1372
|
+
rows,
|
|
1373
|
+
className: cn("border-border bg-surface text-text-primary placeholder:text-text-tertiary w-full rounded-lg border px-4 py-3 text-sm outline-transparent", OPT_FOCUS_VISIBLE, textareaSizeStyles[size], resizeStyles$1[resize], hasError && "border-danger focus-visible:outline-danger", !fullWidth && "w-auto", className),
|
|
1374
|
+
"aria-invalid": hasError,
|
|
1375
|
+
"aria-describedby": getDescribedBy(textareaId, error, hint)
|
|
1376
|
+
}, props)),
|
|
1377
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FieldMessages, {
|
|
1378
|
+
id: textareaId,
|
|
1379
|
+
error,
|
|
1380
|
+
hint
|
|
1381
|
+
})
|
|
1382
|
+
]
|
|
1383
|
+
});
|
|
1384
|
+
});
|
|
1385
|
+
Textarea.displayName = "Textarea";
|
|
1386
|
+
//#endregion
|
|
1129
1387
|
//#region src/core/meter.tsx
|
|
1130
|
-
const _excluded$
|
|
1388
|
+
const _excluded$12 = [
|
|
1131
1389
|
"value",
|
|
1132
1390
|
"min",
|
|
1133
1391
|
"max",
|
|
@@ -1155,7 +1413,7 @@ const variantStyles = {
|
|
|
1155
1413
|
* opt-ui-primitives Meter primitive, which owns the role/aria/valuetext.
|
|
1156
1414
|
*/
|
|
1157
1415
|
function Meter(_ref) {
|
|
1158
|
-
let { value, min = 0, max = 100, size = "md", variant = "default", showValue = false, label, getValueLabel, className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1416
|
+
let { value, min = 0, max = 100, size = "md", variant = "default", showValue = false, label, getValueLabel, className } = _ref, props = _objectWithoutProperties(_ref, _excluded$12);
|
|
1159
1417
|
const clamped = Math.min(Math.max(value, min), max);
|
|
1160
1418
|
const percentage = max === min ? 0 : (clamped - min) / (max - min) * 100;
|
|
1161
1419
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", _objectSpread2(_objectSpread2({ className: cn("w-full", className) }, props), {}, {
|
|
@@ -1203,8 +1461,8 @@ function CompositeZone({ children, label, focusLoop = true, focusWrap = true, cl
|
|
|
1203
1461
|
}
|
|
1204
1462
|
//#endregion
|
|
1205
1463
|
//#region src/core/disclosure.tsx
|
|
1206
|
-
const _excluded$
|
|
1207
|
-
const _excluded2$
|
|
1464
|
+
const _excluded$11 = ["className"];
|
|
1465
|
+
const _excluded2$9 = ["className"];
|
|
1208
1466
|
const triggerClass$1 = `flex w-full cursor-pointer items-center justify-between px-4 py-4 text-left text-sm font-medium text-text-primary transition-colors hover:bg-bg-subtle ${OPT_FOCUS} data-[active-item]:bg-bg-subtle data-[disabled]:cursor-not-allowed`;
|
|
1209
1467
|
const contentClass = `overflow-hidden ${OPT_ANIMATE_ENTER_EXIT}`;
|
|
1210
1468
|
/** Renders the disclosure root component. */
|
|
@@ -1216,7 +1474,7 @@ function DisclosureRoot(props) {
|
|
|
1216
1474
|
}
|
|
1217
1475
|
/** Renders the disclosure trigger component. */
|
|
1218
1476
|
function DisclosureTrigger(_ref) {
|
|
1219
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1477
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$11);
|
|
1220
1478
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.DisclosureTrigger, _objectSpread2(_objectSpread2({ className: cn(triggerClass$1, className) }, props), {}, {
|
|
1221
1479
|
"data-opt-id": "14EZW",
|
|
1222
1480
|
"data-opt-slug": "disclosure.DisclosureTrigger"
|
|
@@ -1224,7 +1482,7 @@ function DisclosureTrigger(_ref) {
|
|
|
1224
1482
|
}
|
|
1225
1483
|
/** Renders the disclosure content component. */
|
|
1226
1484
|
function DisclosureContent(_ref2) {
|
|
1227
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1485
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$9);
|
|
1228
1486
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.DisclosureContent, _objectSpread2(_objectSpread2({ className: cn(contentClass, className) }, props), {}, {
|
|
1229
1487
|
"data-opt-id": "78HYF",
|
|
1230
1488
|
"data-opt-slug": "disclosure.DisclosureContent"
|
|
@@ -1232,16 +1490,16 @@ function DisclosureContent(_ref2) {
|
|
|
1232
1490
|
}
|
|
1233
1491
|
//#endregion
|
|
1234
1492
|
//#region src/core/tabs.tsx
|
|
1235
|
-
const _excluded$
|
|
1236
|
-
const _excluded2$
|
|
1237
|
-
const _excluded3$
|
|
1493
|
+
const _excluded$10 = ["variant"];
|
|
1494
|
+
const _excluded2$8 = ["className", "actions"];
|
|
1495
|
+
const _excluded3$8 = [
|
|
1238
1496
|
"className",
|
|
1239
1497
|
"icon",
|
|
1240
1498
|
"status",
|
|
1241
1499
|
"statusLabel",
|
|
1242
1500
|
"children"
|
|
1243
1501
|
];
|
|
1244
|
-
const _excluded4$
|
|
1502
|
+
const _excluded4$5 = ["className"];
|
|
1245
1503
|
const TabsVariantContext = react.createContext("underline");
|
|
1246
1504
|
const tabClass = `cursor-pointer border-b-2 border-transparent px-4 py-2.5 text-sm text-text-tertiary transition-colors hover:text-text-primary data-[active-item]:text-text-primary data-[active-item]:border-text-primary data-[disabled]:cursor-not-allowed ${OPT_FOCUS}`;
|
|
1247
1505
|
const tabListClass = "flex border-b border-border-subtle";
|
|
@@ -1254,7 +1512,7 @@ const actionsClass = "flex flex-none items-center gap-element";
|
|
|
1254
1512
|
const tabPanelClass = `pt-4 ${OPT_FOCUS} data-[focus-visible]:rounded-lg`;
|
|
1255
1513
|
/** Renders the tabs root component. */
|
|
1256
1514
|
function TabsRoot(_ref) {
|
|
1257
|
-
let { variant = "underline" } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1515
|
+
let { variant = "underline" } = _ref, props = _objectWithoutProperties(_ref, _excluded$10);
|
|
1258
1516
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TabsVariantContext.Provider, {
|
|
1259
1517
|
value: variant,
|
|
1260
1518
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.TabsRoot, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
@@ -1265,7 +1523,7 @@ function TabsRoot(_ref) {
|
|
|
1265
1523
|
}
|
|
1266
1524
|
/** Renders the tab list component. */
|
|
1267
1525
|
function TabList(_ref2) {
|
|
1268
|
-
let { className, actions } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1526
|
+
let { className, actions } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$8);
|
|
1269
1527
|
const variant = react.useContext(TabsVariantContext);
|
|
1270
1528
|
const list = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.TabList, _objectSpread2(_objectSpread2({ className: cn(variant === "workspace" ? workspaceTabListClass : tabListClass, className) }, props), {}, {
|
|
1271
1529
|
"data-opt-id": "68K7E",
|
|
@@ -1282,7 +1540,7 @@ function TabList(_ref2) {
|
|
|
1282
1540
|
}
|
|
1283
1541
|
/** Renders the tab component. */
|
|
1284
1542
|
function Tab(_ref3) {
|
|
1285
|
-
let { className, icon, status, statusLabel, children } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1543
|
+
let { className, icon, status, statusLabel, children } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$8);
|
|
1286
1544
|
const variant = react.useContext(TabsVariantContext);
|
|
1287
1545
|
const decorated = icon != null || status != null;
|
|
1288
1546
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.Tab, _objectSpread2(_objectSpread2({ className: cn(variant === "workspace" ? workspaceTabClass : tabClass, className) }, props), {}, {
|
|
@@ -1308,7 +1566,7 @@ function Tab(_ref3) {
|
|
|
1308
1566
|
}
|
|
1309
1567
|
/** Renders the tab panel component. */
|
|
1310
1568
|
function TabPanel(_ref4) {
|
|
1311
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
1569
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$5);
|
|
1312
1570
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.TabPanel, _objectSpread2(_objectSpread2({ className: cn(tabPanelClass, className) }, props), {}, {
|
|
1313
1571
|
"data-opt-id": "C0MBP",
|
|
1314
1572
|
"data-opt-slug": "tabs.TabPanel"
|
|
@@ -1316,13 +1574,13 @@ function TabPanel(_ref4) {
|
|
|
1316
1574
|
}
|
|
1317
1575
|
//#endregion
|
|
1318
1576
|
//#region src/core/select.tsx
|
|
1319
|
-
const _excluded$
|
|
1577
|
+
const _excluded$9 = [
|
|
1320
1578
|
"className",
|
|
1321
1579
|
"minWidth",
|
|
1322
1580
|
"style"
|
|
1323
1581
|
];
|
|
1324
|
-
const _excluded2$
|
|
1325
|
-
const _excluded3$
|
|
1582
|
+
const _excluded2$7 = ["className"];
|
|
1583
|
+
const _excluded3$7 = ["className"];
|
|
1326
1584
|
const triggerClass = `${OPT_INPUT} cursor-pointer items-center justify-between data-[disabled]:cursor-not-allowed ${OPT_FOCUS}`;
|
|
1327
1585
|
const popoverClass$1 = `${OPT_SURFACE_POPOVER} ${OPT_ANIMATE_ENTER_EXIT} z-[120]`;
|
|
1328
1586
|
const itemClass$1 = `flex cursor-pointer items-center gap-2 data-[disabled]:cursor-not-allowed ${OPT_ITEM_BASE} ${OPT_ACTIVE_ITEM}`;
|
|
@@ -1342,7 +1600,7 @@ function SelectLabel(props) {
|
|
|
1342
1600
|
}
|
|
1343
1601
|
/** Renders the select trigger component. */
|
|
1344
1602
|
function SelectTrigger(_ref) {
|
|
1345
|
-
let { className, minWidth = 140, style } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1603
|
+
let { className, minWidth = 140, style } = _ref, props = _objectWithoutProperties(_ref, _excluded$9);
|
|
1346
1604
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.SelectTrigger, _objectSpread2(_objectSpread2({
|
|
1347
1605
|
className: cn(triggerClass, className),
|
|
1348
1606
|
style: _objectSpread2({ minWidth: typeof minWidth === "number" ? `${minWidth}px` : minWidth }, style)
|
|
@@ -1353,7 +1611,7 @@ function SelectTrigger(_ref) {
|
|
|
1353
1611
|
}
|
|
1354
1612
|
/** Renders the select popover component. */
|
|
1355
1613
|
function SelectPopover(_ref2) {
|
|
1356
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1614
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$7);
|
|
1357
1615
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.SelectPopover, _objectSpread2(_objectSpread2({ className: cn(popoverClass$1, className) }, props), {}, {
|
|
1358
1616
|
"data-opt-id": "P152F",
|
|
1359
1617
|
"data-opt-slug": "select.SelectPopover"
|
|
@@ -1361,7 +1619,7 @@ function SelectPopover(_ref2) {
|
|
|
1361
1619
|
}
|
|
1362
1620
|
/** Renders the select item component. */
|
|
1363
1621
|
function SelectItem(_ref3) {
|
|
1364
|
-
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1622
|
+
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$7);
|
|
1365
1623
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.SelectItem, _objectSpread2(_objectSpread2({ className: cn(itemClass$1, className) }, props), {}, {
|
|
1366
1624
|
"data-opt-id": "KKBAF",
|
|
1367
1625
|
"data-opt-slug": "select.SelectItem"
|
|
@@ -1369,10 +1627,10 @@ function SelectItem(_ref3) {
|
|
|
1369
1627
|
}
|
|
1370
1628
|
//#endregion
|
|
1371
1629
|
//#region src/core/dialog.tsx
|
|
1372
|
-
const _excluded$
|
|
1373
|
-
const _excluded2$
|
|
1374
|
-
const _excluded3$
|
|
1375
|
-
const _excluded4$
|
|
1630
|
+
const _excluded$8 = ["className"];
|
|
1631
|
+
const _excluded2$6 = ["className", "size"];
|
|
1632
|
+
const _excluded3$6 = ["className", "size"];
|
|
1633
|
+
const _excluded4$4 = ["className"];
|
|
1376
1634
|
const _excluded5$2 = ["className"];
|
|
1377
1635
|
const _excluded6$2 = ["className"];
|
|
1378
1636
|
const sizeClasses = {
|
|
@@ -1393,7 +1651,7 @@ function DialogRoot(props) {
|
|
|
1393
1651
|
}
|
|
1394
1652
|
/** Renders the dialog disclosure component. */
|
|
1395
1653
|
function DialogDisclosure(_ref) {
|
|
1396
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1654
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$8);
|
|
1397
1655
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.DialogDisclosure, _objectSpread2(_objectSpread2({ className: cn("inline-flex cursor-pointer items-center justify-center rounded-lg font-medium transition-colors", OPT_BUTTON_PRIMARY, OPT_FOCUS_VISIBLE, className) }, props), {}, {
|
|
1398
1656
|
"data-opt-id": "32QJK",
|
|
1399
1657
|
"data-opt-slug": "dialog.DialogDisclosure"
|
|
@@ -1401,7 +1659,7 @@ function DialogDisclosure(_ref) {
|
|
|
1401
1659
|
}
|
|
1402
1660
|
/** Renders the dialog panel component. */
|
|
1403
1661
|
function DialogPanel(_ref2) {
|
|
1404
|
-
let { className, size = "md" } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1662
|
+
let { className, size = "md" } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$6);
|
|
1405
1663
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.DialogPanel, _objectSpread2(_objectSpread2({ className: cn(panelBase, sizeClasses[size], className) }, props), {}, {
|
|
1406
1664
|
"data-opt-id": "BTMTG",
|
|
1407
1665
|
"data-opt-slug": "dialog.DialogPanel"
|
|
@@ -1413,7 +1671,7 @@ function DialogPanel(_ref2) {
|
|
|
1413
1671
|
* the other Dialog parts (DialogRoot/Heading/Description/Dismiss/…).
|
|
1414
1672
|
*/
|
|
1415
1673
|
function AlertDialogPanel(_ref3) {
|
|
1416
|
-
let { className, size = "sm" } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1674
|
+
let { className, size = "sm" } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$6);
|
|
1417
1675
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.AlertDialogPanel, _objectSpread2(_objectSpread2({ className: cn(panelBase, sizeClasses[size], className) }, props), {}, {
|
|
1418
1676
|
"data-opt-id": "80HGS",
|
|
1419
1677
|
"data-opt-slug": "dialog.AlertDialogPanel"
|
|
@@ -1421,7 +1679,7 @@ function AlertDialogPanel(_ref3) {
|
|
|
1421
1679
|
}
|
|
1422
1680
|
/** Renders the dialog heading component. */
|
|
1423
1681
|
function DialogHeading(_ref4) {
|
|
1424
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
1682
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$4);
|
|
1425
1683
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.DialogHeading, _objectSpread2(_objectSpread2({ className: cn(`text-lg font-semibold ${OPT_TEXT_PRIMARY}`, className) }, props), {}, {
|
|
1426
1684
|
"data-opt-id": "4NW4H",
|
|
1427
1685
|
"data-opt-slug": "dialog.DialogHeading"
|
|
@@ -1475,10 +1733,10 @@ function DialogFooter({ children, className }) {
|
|
|
1475
1733
|
}
|
|
1476
1734
|
//#endregion
|
|
1477
1735
|
//#region src/core/combobox.tsx
|
|
1478
|
-
const _excluded$
|
|
1479
|
-
const _excluded2$
|
|
1480
|
-
const _excluded3$
|
|
1481
|
-
const _excluded4$
|
|
1736
|
+
const _excluded$7 = ["className"];
|
|
1737
|
+
const _excluded2$5 = ["className"];
|
|
1738
|
+
const _excluded3$5 = ["className"];
|
|
1739
|
+
const _excluded4$3 = ["className"];
|
|
1482
1740
|
const inputClass$1 = `${OPT_INPUT} ${OPT_FOCUS}`;
|
|
1483
1741
|
const popoverClass = `${OPT_SURFACE_POPOVER} max-h-60 overflow-y-auto ${OPT_ANIMATE_ENTER_EXIT}`;
|
|
1484
1742
|
const itemClass = `${OPT_ITEM_BASE} ${OPT_ACTIVE_ITEM}`;
|
|
@@ -1493,7 +1751,7 @@ function ComboboxRoot(props) {
|
|
|
1493
1751
|
}
|
|
1494
1752
|
/** Renders the combobox input component. */
|
|
1495
1753
|
function ComboboxInput(_ref) {
|
|
1496
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1754
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$7);
|
|
1497
1755
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ComboboxInput, _objectSpread2(_objectSpread2({ className: cn(inputClass$1, className) }, props), {}, {
|
|
1498
1756
|
"data-opt-id": "92FZS",
|
|
1499
1757
|
"data-opt-slug": "combobox.ComboboxInput"
|
|
@@ -1501,7 +1759,7 @@ function ComboboxInput(_ref) {
|
|
|
1501
1759
|
}
|
|
1502
1760
|
/** Renders the combobox popover component. */
|
|
1503
1761
|
function ComboboxPopover(_ref2) {
|
|
1504
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1762
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$5);
|
|
1505
1763
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ComboboxPopover, _objectSpread2(_objectSpread2({ className: cn(popoverClass, className) }, props), {}, {
|
|
1506
1764
|
"data-opt-id": "WS4PD",
|
|
1507
1765
|
"data-opt-slug": "combobox.ComboboxPopover"
|
|
@@ -1509,7 +1767,7 @@ function ComboboxPopover(_ref2) {
|
|
|
1509
1767
|
}
|
|
1510
1768
|
/** Renders the combobox item component. */
|
|
1511
1769
|
function ComboboxItem(_ref3) {
|
|
1512
|
-
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1770
|
+
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$5);
|
|
1513
1771
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ComboboxItem, _objectSpread2(_objectSpread2({ className: cn(itemClass, className) }, props), {}, {
|
|
1514
1772
|
"data-opt-id": "MAZJN",
|
|
1515
1773
|
"data-opt-slug": "combobox.ComboboxItem"
|
|
@@ -1524,7 +1782,7 @@ function ComboboxGroup(props) {
|
|
|
1524
1782
|
}
|
|
1525
1783
|
/** Renders the combobox group label component. */
|
|
1526
1784
|
function ComboboxGroupLabel(_ref4) {
|
|
1527
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
1785
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$3);
|
|
1528
1786
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.ComboboxGroupLabel, _objectSpread2(_objectSpread2({ className: cn(groupLabelClass, className) }, props), {}, {
|
|
1529
1787
|
"data-opt-id": "512YF",
|
|
1530
1788
|
"data-opt-slug": "combobox.ComboboxGroupLabel"
|
|
@@ -1541,10 +1799,10 @@ function ComboboxEmpty({ className, children = koComboboxLabels.empty }) {
|
|
|
1541
1799
|
}
|
|
1542
1800
|
//#endregion
|
|
1543
1801
|
//#region src/core/menu.tsx
|
|
1544
|
-
const _excluded$
|
|
1545
|
-
const _excluded2$
|
|
1546
|
-
const _excluded3$
|
|
1547
|
-
const _excluded4$
|
|
1802
|
+
const _excluded$6 = ["className"];
|
|
1803
|
+
const _excluded2$4 = ["className"];
|
|
1804
|
+
const _excluded3$4 = ["className"];
|
|
1805
|
+
const _excluded4$2 = ["className"];
|
|
1548
1806
|
const _excluded5$1 = ["className"];
|
|
1549
1807
|
const _excluded6$1 = ["className"];
|
|
1550
1808
|
const _excluded7$1 = ["className"];
|
|
@@ -1562,7 +1820,7 @@ function MenubarRoot(props) {
|
|
|
1562
1820
|
}
|
|
1563
1821
|
/** Renders the menubar container component. */
|
|
1564
1822
|
function MenubarContainer(_ref) {
|
|
1565
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
1823
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$6);
|
|
1566
1824
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.MenubarContainer, _objectSpread2(_objectSpread2({ className: cn(menubarClass, className) }, props), {}, {
|
|
1567
1825
|
"data-opt-id": "4MVQT",
|
|
1568
1826
|
"data-opt-slug": "menu.MenubarContainer"
|
|
@@ -1577,7 +1835,7 @@ function MenuRoot(props) {
|
|
|
1577
1835
|
}
|
|
1578
1836
|
/** Renders the menu trigger component. */
|
|
1579
1837
|
function MenuTrigger(_ref2) {
|
|
1580
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
1838
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$4);
|
|
1581
1839
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.MenuTrigger, _objectSpread2(_objectSpread2({ className: cn(menuButtonClass, className) }, props), {}, {
|
|
1582
1840
|
"data-opt-id": "46BJG",
|
|
1583
1841
|
"data-opt-slug": "menu.MenuTrigger"
|
|
@@ -1592,7 +1850,7 @@ function MenuButtonArrow(props) {
|
|
|
1592
1850
|
}
|
|
1593
1851
|
/** Renders the menu popover component. */
|
|
1594
1852
|
function MenuPopover(_ref3) {
|
|
1595
|
-
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
1853
|
+
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$4);
|
|
1596
1854
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.MenuPopover, _objectSpread2(_objectSpread2({ className: cn(menuPopoverClass, className) }, props), {}, {
|
|
1597
1855
|
"data-opt-id": "Q1MFY",
|
|
1598
1856
|
"data-opt-slug": "menu.MenuPopover"
|
|
@@ -1600,7 +1858,7 @@ function MenuPopover(_ref3) {
|
|
|
1600
1858
|
}
|
|
1601
1859
|
/** Renders the menu item component. */
|
|
1602
1860
|
function MenuItem(_ref4) {
|
|
1603
|
-
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$
|
|
1861
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4$2);
|
|
1604
1862
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.MenuItem, _objectSpread2(_objectSpread2({ className: cn(menuItemClass, className) }, props), {}, {
|
|
1605
1863
|
"data-opt-id": "71JVB",
|
|
1606
1864
|
"data-opt-slug": "menu.MenuItem"
|
|
@@ -2063,9 +2321,9 @@ function Slider({ value: controlledValue, defaultValue = 0, onChange, min = 0, m
|
|
|
2063
2321
|
Slider.displayName = "Slider";
|
|
2064
2322
|
//#endregion
|
|
2065
2323
|
//#region src/core/popover.tsx
|
|
2066
|
-
const _excluded$
|
|
2067
|
-
const _excluded2$
|
|
2068
|
-
const _excluded3$
|
|
2324
|
+
const _excluded$5 = ["className"];
|
|
2325
|
+
const _excluded2$3 = ["className"];
|
|
2326
|
+
const _excluded3$3 = ["className"];
|
|
2069
2327
|
/** Renders the popover root component. */
|
|
2070
2328
|
function PopoverRoot(props) {
|
|
2071
2329
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.PopoverRoot, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
@@ -2074,7 +2332,7 @@ function PopoverRoot(props) {
|
|
|
2074
2332
|
}));
|
|
2075
2333
|
}
|
|
2076
2334
|
const PopoverTrigger = (0, react.forwardRef)((_ref, ref) => {
|
|
2077
|
-
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
2335
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$5);
|
|
2078
2336
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.PopoverTrigger, _objectSpread2(_objectSpread2({
|
|
2079
2337
|
ref,
|
|
2080
2338
|
className: cn("inline-flex items-center gap-1.5 rounded-lg px-3 py-2 text-sm", "cursor-pointer data-[disabled]:cursor-not-allowed", OPT_FOCUS_VISIBLE, className)
|
|
@@ -2086,7 +2344,7 @@ const PopoverTrigger = (0, react.forwardRef)((_ref, ref) => {
|
|
|
2086
2344
|
PopoverTrigger.displayName = "PopoverTrigger";
|
|
2087
2345
|
/** Renders the popover content component. */
|
|
2088
2346
|
function PopoverContent(_ref2) {
|
|
2089
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$
|
|
2347
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$3);
|
|
2090
2348
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.PopoverContent, _objectSpread2(_objectSpread2({ className: cn("bg-surface-overlay z-50 rounded-lg p-4 shadow-lg", OPT_BORDER, OPT_ANIMATE_ENTER_EXIT, className) }, props), {}, {
|
|
2091
2349
|
"data-opt-id": "E03EY",
|
|
2092
2350
|
"data-opt-slug": "popover.PopoverContent"
|
|
@@ -2094,7 +2352,7 @@ function PopoverContent(_ref2) {
|
|
|
2094
2352
|
}
|
|
2095
2353
|
/** Renders the popover close component. */
|
|
2096
2354
|
function PopoverClose(_ref3) {
|
|
2097
|
-
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$
|
|
2355
|
+
let { className } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$3);
|
|
2098
2356
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.PopoverClose, _objectSpread2(_objectSpread2({ className: cn("text-text-tertiary hover:bg-bg-subtle inline-flex items-center justify-center rounded-md p-1 text-sm", "cursor-pointer data-[disabled]:cursor-not-allowed", OPT_FOCUS_VISIBLE, className) }, props), {}, {
|
|
2099
2357
|
"data-opt-id": "FP4KF",
|
|
2100
2358
|
"data-opt-slug": "popover.PopoverClose"
|
|
@@ -3388,15 +3646,15 @@ function DateRangePicker({ value, onChange, presets = DEFAULT_PRESETS, placehold
|
|
|
3388
3646
|
DateRangePicker.displayName = "DateRangePicker";
|
|
3389
3647
|
//#endregion
|
|
3390
3648
|
//#region src/core/form.tsx
|
|
3391
|
-
const _excluded$
|
|
3392
|
-
const _excluded2 = ["className"];
|
|
3393
|
-
const _excluded3 = [
|
|
3649
|
+
const _excluded$4 = ["className", "store"];
|
|
3650
|
+
const _excluded2$2 = ["className"];
|
|
3651
|
+
const _excluded3$2 = [
|
|
3394
3652
|
"className",
|
|
3395
3653
|
"resize",
|
|
3396
3654
|
"rows",
|
|
3397
3655
|
"name"
|
|
3398
3656
|
];
|
|
3399
|
-
const _excluded4 = ["className"];
|
|
3657
|
+
const _excluded4$1 = ["className"];
|
|
3400
3658
|
const _excluded5 = ["className"];
|
|
3401
3659
|
const _excluded6 = [
|
|
3402
3660
|
"className",
|
|
@@ -3442,7 +3700,7 @@ function useRequiredFormContext(componentName) {
|
|
|
3442
3700
|
}
|
|
3443
3701
|
/** Renders the form root component. */
|
|
3444
3702
|
function FormRoot(_ref) {
|
|
3445
|
-
let { className, store } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
3703
|
+
let { className, store } = _ref, props = _objectWithoutProperties(_ref, _excluded$4);
|
|
3446
3704
|
const form = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.FormRoot, _objectSpread2({ className: cn("gap-section flex flex-col", className) }, props));
|
|
3447
3705
|
if (store) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.FormProvider, {
|
|
3448
3706
|
store,
|
|
@@ -3454,7 +3712,7 @@ function FormRoot(_ref) {
|
|
|
3454
3712
|
}
|
|
3455
3713
|
/** Renders the form input component. */
|
|
3456
3714
|
function FormInput(_ref2) {
|
|
3457
|
-
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2);
|
|
3715
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$2);
|
|
3458
3716
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_reopt_ai_opt_ui_primitives.FormInput, _objectSpread2(_objectSpread2({ className: cn(inputClass, className) }, props), {}, {
|
|
3459
3717
|
"data-opt-id": "D7Z8F",
|
|
3460
3718
|
"data-opt-slug": "form.FormInput"
|
|
@@ -3469,7 +3727,7 @@ const resizeStyles = {
|
|
|
3469
3727
|
/** Renders the form textarea component. */
|
|
3470
3728
|
function FormTextarea(_ref3) {
|
|
3471
3729
|
var _ref4;
|
|
3472
|
-
let { className, resize = "vertical", rows = 4, name } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3);
|
|
3730
|
+
let { className, resize = "vertical", rows = 4, name } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$2);
|
|
3473
3731
|
const form = useRequiredFormContext("FormTextarea");
|
|
3474
3732
|
const value = (_ref4 = (0, _reopt_ai_opt_ui_primitives.useFieldValue)(form, name)) !== null && _ref4 !== void 0 ? _ref4 : "";
|
|
3475
3733
|
const error = form === null || form === void 0 ? void 0 : form.getError(name);
|
|
@@ -3515,7 +3773,7 @@ function FormSelect({ name, children, className, placeholder, minWidth = 140, "a
|
|
|
3515
3773
|
}
|
|
3516
3774
|
/** Renders the form select popover component. */
|
|
3517
3775
|
function FormSelectPopover(_ref6) {
|
|
3518
|
-
let { className } = _ref6, props = _objectWithoutProperties(_ref6, _excluded4);
|
|
3776
|
+
let { className } = _ref6, props = _objectWithoutProperties(_ref6, _excluded4$1);
|
|
3519
3777
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectPopover, _objectSpread2(_objectSpread2({ className: cn(OPT_SURFACE_POPOVER, OPT_ANIMATE_ENTER_EXIT, "z-[120]", className) }, props), {}, {
|
|
3520
3778
|
"data-opt-id": "CQSPJ",
|
|
3521
3779
|
"data-opt-slug": "form.FormSelectPopover"
|
|
@@ -3851,8 +4109,47 @@ function formatOptNumber(value) {
|
|
|
3851
4109
|
return new Intl.NumberFormat(OPT_UI_DEFAULT_LOCALE).format(value);
|
|
3852
4110
|
}
|
|
3853
4111
|
//#endregion
|
|
4112
|
+
//#region src/core/dropdown-menu.tsx
|
|
4113
|
+
const _excluded$3 = ["className"];
|
|
4114
|
+
const _excluded2$1 = ["className"];
|
|
4115
|
+
const _excluded3$1 = ["className", "variant"];
|
|
4116
|
+
const _excluded4 = ["className"];
|
|
4117
|
+
const DropdownMenu = MenuRoot;
|
|
4118
|
+
/** Renders the dropdown trigger component. */
|
|
4119
|
+
function DropdownTrigger(_ref) {
|
|
4120
|
+
let { className } = _ref, props = _objectWithoutProperties(_ref, _excluded$3);
|
|
4121
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuTrigger, _objectSpread2(_objectSpread2({ className: cn("cursor-pointer gap-2", className) }, props), {}, {
|
|
4122
|
+
"data-opt-id": "C4BSS",
|
|
4123
|
+
"data-opt-slug": "dropdown-menu.DropdownTrigger"
|
|
4124
|
+
}));
|
|
4125
|
+
}
|
|
4126
|
+
/** Renders the dropdown content component. */
|
|
4127
|
+
function DropdownContent(_ref2) {
|
|
4128
|
+
let { className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$1);
|
|
4129
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuPopover, _objectSpread2(_objectSpread2({ className: cn(className) }, props), {}, {
|
|
4130
|
+
"data-opt-id": "J6NF7",
|
|
4131
|
+
"data-opt-slug": "dropdown-menu.DropdownContent"
|
|
4132
|
+
}));
|
|
4133
|
+
}
|
|
4134
|
+
/** Renders the dropdown item component. */
|
|
4135
|
+
function DropdownItem(_ref3) {
|
|
4136
|
+
let { className, variant = "default" } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$1);
|
|
4137
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuItem, _objectSpread2(_objectSpread2({ className: cn("cursor-pointer data-[disabled]:cursor-not-allowed", variant === "destructive" && "text-danger-fg data-[active-item]:bg-danger-subtle data-[active-item]:text-danger-fg", className) }, props), {}, {
|
|
4138
|
+
"data-opt-id": "5M6GA",
|
|
4139
|
+
"data-opt-slug": "dropdown-menu.DropdownItem"
|
|
4140
|
+
}));
|
|
4141
|
+
}
|
|
4142
|
+
/** Renders the dropdown separator component. */
|
|
4143
|
+
function DropdownSeparator(_ref4) {
|
|
4144
|
+
let { className } = _ref4, props = _objectWithoutProperties(_ref4, _excluded4);
|
|
4145
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuSeparator, _objectSpread2(_objectSpread2({ className: cn(className) }, props), {}, {
|
|
4146
|
+
"data-opt-id": "K9Y54",
|
|
4147
|
+
"data-opt-slug": "dropdown-menu.DropdownSeparator"
|
|
4148
|
+
}));
|
|
4149
|
+
}
|
|
4150
|
+
//#endregion
|
|
3854
4151
|
//#region src/core/checkbox.tsx
|
|
3855
|
-
const _excluded$
|
|
4152
|
+
const _excluded$2 = [
|
|
3856
4153
|
"label",
|
|
3857
4154
|
"required",
|
|
3858
4155
|
"error",
|
|
@@ -3917,7 +4214,7 @@ function IndeterminateIcon({ className }) {
|
|
|
3917
4214
|
}
|
|
3918
4215
|
const Checkbox = (0, react.forwardRef)((_ref, ref) => {
|
|
3919
4216
|
var _groupContext$size, _groupContext$disable, _useInputId;
|
|
3920
|
-
let { label, required, error, hint, description, checked: checkedProp, defaultChecked, onChange, size: sizeProp = "md", disabled: disabledProp, className, id, value, indeterminate } = _ref, props = _objectWithoutProperties(_ref, _excluded$
|
|
4217
|
+
let { label, required, error, hint, description, checked: checkedProp, defaultChecked, onChange, size: sizeProp = "md", disabled: disabledProp, className, id, value, indeterminate } = _ref, props = _objectWithoutProperties(_ref, _excluded$2);
|
|
3921
4218
|
const groupContext = (0, react.useContext)(CheckboxGroupContext);
|
|
3922
4219
|
const size = (_groupContext$size = groupContext === null || groupContext === void 0 ? void 0 : groupContext.size) !== null && _groupContext$size !== void 0 ? _groupContext$size : sizeProp;
|
|
3923
4220
|
const disabled = (_groupContext$disable = groupContext === null || groupContext === void 0 ? void 0 : groupContext.disabled) !== null && _groupContext$disable !== void 0 ? _groupContext$disable : disabledProp;
|
|
@@ -3963,9 +4260,9 @@ const Checkbox = (0, react.forwardRef)((_ref, ref) => {
|
|
|
3963
4260
|
"aria-invalid": hasError,
|
|
3964
4261
|
"aria-required": required,
|
|
3965
4262
|
"aria-describedby": getDescribedBy(checkboxId, error, hintText),
|
|
3966
|
-
className: "peer
|
|
4263
|
+
className: "peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed"
|
|
3967
4264
|
}, props)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3968
|
-
className: cn("inline-flex items-center justify-center rounded", styles.box, "border-border border-2", "bg-surface", "peer-checked:border-accent peer-checked:bg-accent", isIndeterminate && "border-accent bg-accent", "peer-disabled:cursor-not-allowed peer-disabled:opacity-50", "peer-focus-visible:ring-ring peer-focus-visible:ring-2 peer-focus-visible:ring-offset-1", "transition-colors"),
|
|
4265
|
+
className: cn("pointer-events-none inline-flex items-center justify-center rounded", styles.box, "border-border border-2", "bg-surface", "peer-checked:border-accent peer-checked:bg-accent", isIndeterminate && "border-accent bg-accent", "peer-disabled:cursor-not-allowed peer-disabled:opacity-50", "peer-focus-visible:ring-ring peer-focus-visible:ring-2 peer-focus-visible:ring-offset-1", "transition-colors"),
|
|
3969
4266
|
children: isIndeterminate ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IndeterminateIcon, { className: cn(styles.icon, "text-accent-fg opacity-0 transition-opacity", "opacity-100") }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckIcon, { className: cn(styles.icon, "text-accent-fg opacity-0 transition-opacity", checked && "opacity-100") })
|
|
3970
4267
|
})]
|
|
3971
4268
|
}), (label || hintText) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -4029,6 +4326,73 @@ function CheckboxGroup({ children, value: valueProp, defaultValue = EMPTY_STRING
|
|
|
4029
4326
|
});
|
|
4030
4327
|
}
|
|
4031
4328
|
//#endregion
|
|
4329
|
+
//#region src/core/resizable.tsx
|
|
4330
|
+
const _excluded$1 = [
|
|
4331
|
+
"direction",
|
|
4332
|
+
"children",
|
|
4333
|
+
"className",
|
|
4334
|
+
"id",
|
|
4335
|
+
"autoSaveId"
|
|
4336
|
+
];
|
|
4337
|
+
const _excluded2 = [
|
|
4338
|
+
"collapsedSize",
|
|
4339
|
+
"defaultSize",
|
|
4340
|
+
"minSize",
|
|
4341
|
+
"maxSize",
|
|
4342
|
+
"children",
|
|
4343
|
+
"className"
|
|
4344
|
+
];
|
|
4345
|
+
const _excluded3 = ["className", "withHandle"];
|
|
4346
|
+
function toPanelSize(size) {
|
|
4347
|
+
return typeof size === "number" ? `${size}%` : size;
|
|
4348
|
+
}
|
|
4349
|
+
/** Renders the resizable panel group component. */
|
|
4350
|
+
function ResizablePanelGroup(_ref) {
|
|
4351
|
+
let { direction, children, className, id, autoSaveId } = _ref, props = _objectWithoutProperties(_ref, _excluded$1);
|
|
4352
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_resizable_panels.Group, _objectSpread2(_objectSpread2({
|
|
4353
|
+
orientation: direction,
|
|
4354
|
+
id: id !== null && id !== void 0 ? id : autoSaveId,
|
|
4355
|
+
className: cn("flex h-full w-full", className)
|
|
4356
|
+
}, props), {}, {
|
|
4357
|
+
"data-opt-id": "BM5RR",
|
|
4358
|
+
"data-opt-slug": "resizable.ResizablePanelGroup",
|
|
4359
|
+
children
|
|
4360
|
+
}));
|
|
4361
|
+
}
|
|
4362
|
+
ResizablePanelGroup.displayName = "ResizablePanelGroup";
|
|
4363
|
+
/** Renders the resizable panel component. */
|
|
4364
|
+
function ResizablePanel(_ref2) {
|
|
4365
|
+
let { collapsedSize, defaultSize, minSize, maxSize, children, className } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2);
|
|
4366
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_resizable_panels.Panel, _objectSpread2(_objectSpread2({
|
|
4367
|
+
collapsedSize: toPanelSize(collapsedSize),
|
|
4368
|
+
defaultSize: toPanelSize(defaultSize),
|
|
4369
|
+
minSize: toPanelSize(minSize),
|
|
4370
|
+
maxSize: toPanelSize(maxSize),
|
|
4371
|
+
className: cn("overflow-auto", className)
|
|
4372
|
+
}, props), {}, {
|
|
4373
|
+
"data-opt-id": "88X4V",
|
|
4374
|
+
"data-opt-slug": "resizable.ResizablePanel",
|
|
4375
|
+
children
|
|
4376
|
+
}));
|
|
4377
|
+
}
|
|
4378
|
+
ResizablePanel.displayName = "ResizablePanel";
|
|
4379
|
+
/** Renders the resizable handle component. */
|
|
4380
|
+
function ResizableHandle(_ref3) {
|
|
4381
|
+
let { className, withHandle = false } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3);
|
|
4382
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_resizable_panels.Separator, _objectSpread2(_objectSpread2({ className: cn("bg-border relative flex items-center justify-center", "after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2", "data-[resize-handle-active]:bg-accent", "[&[data-orientation=vertical]]:h-px [&[data-orientation=vertical]]:w-full", "[&[data-orientation=horizontal]]:h-full [&[data-orientation=horizontal]]:w-px", className) }, props), {}, {
|
|
4383
|
+
"data-opt-id": "6Z22W",
|
|
4384
|
+
"data-opt-slug": "resizable.ResizableHandle",
|
|
4385
|
+
children: withHandle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4386
|
+
className: "border-border bg-surface z-10 flex h-4 w-3 items-center justify-center rounded-sm border",
|
|
4387
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.GripVertical, {
|
|
4388
|
+
"aria-hidden": "true",
|
|
4389
|
+
className: "text-text-tertiary h-3 w-3"
|
|
4390
|
+
})
|
|
4391
|
+
})
|
|
4392
|
+
}));
|
|
4393
|
+
}
|
|
4394
|
+
ResizableHandle.displayName = "ResizableHandle";
|
|
4395
|
+
//#endregion
|
|
4032
4396
|
//#region src/core/pagination.tsx
|
|
4033
4397
|
const _excluded = [
|
|
4034
4398
|
"totalItems",
|
|
@@ -4703,6 +5067,12 @@ Object.defineProperty(exports, "DateRangePicker", {
|
|
|
4703
5067
|
return DateRangePicker;
|
|
4704
5068
|
}
|
|
4705
5069
|
});
|
|
5070
|
+
Object.defineProperty(exports, "DescriptionList", {
|
|
5071
|
+
enumerable: true,
|
|
5072
|
+
get: function() {
|
|
5073
|
+
return DescriptionList;
|
|
5074
|
+
}
|
|
5075
|
+
});
|
|
4706
5076
|
Object.defineProperty(exports, "DialogBody", {
|
|
4707
5077
|
enumerable: true,
|
|
4708
5078
|
get: function() {
|
|
@@ -4775,6 +5145,36 @@ Object.defineProperty(exports, "DisclosureTrigger", {
|
|
|
4775
5145
|
return DisclosureTrigger;
|
|
4776
5146
|
}
|
|
4777
5147
|
});
|
|
5148
|
+
Object.defineProperty(exports, "DropdownContent", {
|
|
5149
|
+
enumerable: true,
|
|
5150
|
+
get: function() {
|
|
5151
|
+
return DropdownContent;
|
|
5152
|
+
}
|
|
5153
|
+
});
|
|
5154
|
+
Object.defineProperty(exports, "DropdownItem", {
|
|
5155
|
+
enumerable: true,
|
|
5156
|
+
get: function() {
|
|
5157
|
+
return DropdownItem;
|
|
5158
|
+
}
|
|
5159
|
+
});
|
|
5160
|
+
Object.defineProperty(exports, "DropdownMenu", {
|
|
5161
|
+
enumerable: true,
|
|
5162
|
+
get: function() {
|
|
5163
|
+
return DropdownMenu;
|
|
5164
|
+
}
|
|
5165
|
+
});
|
|
5166
|
+
Object.defineProperty(exports, "DropdownSeparator", {
|
|
5167
|
+
enumerable: true,
|
|
5168
|
+
get: function() {
|
|
5169
|
+
return DropdownSeparator;
|
|
5170
|
+
}
|
|
5171
|
+
});
|
|
5172
|
+
Object.defineProperty(exports, "DropdownTrigger", {
|
|
5173
|
+
enumerable: true,
|
|
5174
|
+
get: function() {
|
|
5175
|
+
return DropdownTrigger;
|
|
5176
|
+
}
|
|
5177
|
+
});
|
|
4778
5178
|
Object.defineProperty(exports, "EmptyState", {
|
|
4779
5179
|
enumerable: true,
|
|
4780
5180
|
get: function() {
|
|
@@ -5243,12 +5643,6 @@ Object.defineProperty(exports, "OPT_TD_MUTED", {
|
|
|
5243
5643
|
return OPT_TD_MUTED;
|
|
5244
5644
|
}
|
|
5245
5645
|
});
|
|
5246
|
-
Object.defineProperty(exports, "OPT_TEXTAREA_SIZE", {
|
|
5247
|
-
enumerable: true,
|
|
5248
|
-
get: function() {
|
|
5249
|
-
return OPT_TEXTAREA_SIZE;
|
|
5250
|
-
}
|
|
5251
|
-
});
|
|
5252
5646
|
Object.defineProperty(exports, "OPT_TEXT_LABEL", {
|
|
5253
5647
|
enumerable: true,
|
|
5254
5648
|
get: function() {
|
|
@@ -5321,6 +5715,24 @@ Object.defineProperty(exports, "RequiredMark", {
|
|
|
5321
5715
|
return RequiredMark;
|
|
5322
5716
|
}
|
|
5323
5717
|
});
|
|
5718
|
+
Object.defineProperty(exports, "ResizableHandle", {
|
|
5719
|
+
enumerable: true,
|
|
5720
|
+
get: function() {
|
|
5721
|
+
return ResizableHandle;
|
|
5722
|
+
}
|
|
5723
|
+
});
|
|
5724
|
+
Object.defineProperty(exports, "ResizablePanel", {
|
|
5725
|
+
enumerable: true,
|
|
5726
|
+
get: function() {
|
|
5727
|
+
return ResizablePanel;
|
|
5728
|
+
}
|
|
5729
|
+
});
|
|
5730
|
+
Object.defineProperty(exports, "ResizablePanelGroup", {
|
|
5731
|
+
enumerable: true,
|
|
5732
|
+
get: function() {
|
|
5733
|
+
return ResizablePanelGroup;
|
|
5734
|
+
}
|
|
5735
|
+
});
|
|
5324
5736
|
Object.defineProperty(exports, "SelectItem", {
|
|
5325
5737
|
enumerable: true,
|
|
5326
5738
|
get: function() {
|
|
@@ -5405,6 +5817,12 @@ Object.defineProperty(exports, "StatCard", {
|
|
|
5405
5817
|
return StatCard;
|
|
5406
5818
|
}
|
|
5407
5819
|
});
|
|
5820
|
+
Object.defineProperty(exports, "Switch", {
|
|
5821
|
+
enumerable: true,
|
|
5822
|
+
get: function() {
|
|
5823
|
+
return Switch;
|
|
5824
|
+
}
|
|
5825
|
+
});
|
|
5408
5826
|
Object.defineProperty(exports, "Tab", {
|
|
5409
5827
|
enumerable: true,
|
|
5410
5828
|
get: function() {
|
|
@@ -5441,6 +5859,12 @@ Object.defineProperty(exports, "TextTruncate", {
|
|
|
5441
5859
|
return TextTruncate;
|
|
5442
5860
|
}
|
|
5443
5861
|
});
|
|
5862
|
+
Object.defineProperty(exports, "Textarea", {
|
|
5863
|
+
enumerable: true,
|
|
5864
|
+
get: function() {
|
|
5865
|
+
return Textarea;
|
|
5866
|
+
}
|
|
5867
|
+
});
|
|
5444
5868
|
Object.defineProperty(exports, "ToolbarButton", {
|
|
5445
5869
|
enumerable: true,
|
|
5446
5870
|
get: function() {
|