@ai-matrx/design-system 0.86.362 → 0.86.364
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 +9 -0
- package/dist/data-table/index.cjs +1 -0
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.js +1 -0
- package/dist/data-table/index.js.map +1 -1
- package/dist/index.cjs +366 -305
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -2
- package/dist/index.d.ts +29 -2
- package/dist/index.js +231 -182
- package/dist/index.js.map +1 -1
- package/dist/styles.css +13 -0
- package/dist/tokens.css +3 -0
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -276,6 +276,12 @@ function AlertTriangleIcon(props) {
|
|
|
276
276
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 17h.01" })
|
|
277
277
|
] });
|
|
278
278
|
}
|
|
279
|
+
function CircleCheckIcon(props) {
|
|
280
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps("circle-check", props), children: [
|
|
281
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
282
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m16 9-5.5 5.5L8 12" })
|
|
283
|
+
] });
|
|
284
|
+
}
|
|
279
285
|
function CircleHelpIcon(props) {
|
|
280
286
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps("circle-question-mark", props), children: [
|
|
281
287
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
@@ -283,6 +289,13 @@ function CircleHelpIcon(props) {
|
|
|
283
289
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 17h.01" })
|
|
284
290
|
] });
|
|
285
291
|
}
|
|
292
|
+
function CircleXIcon(props) {
|
|
293
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps("circle-x", props), children: [
|
|
294
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
295
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m15 9-6 6" }),
|
|
296
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m9 9 6 6" })
|
|
297
|
+
] });
|
|
298
|
+
}
|
|
286
299
|
function InfoIcon(props) {
|
|
287
300
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps("info", props), children: [
|
|
288
301
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
@@ -3589,7 +3602,7 @@ function WritingBoxProvider({
|
|
|
3589
3602
|
Box,
|
|
3590
3603
|
children
|
|
3591
3604
|
}) {
|
|
3592
|
-
return /* @__PURE__ */ (0,
|
|
3605
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(WritingBoxContext.Provider, { value: Box, children });
|
|
3593
3606
|
}
|
|
3594
3607
|
function useWritingBox() {
|
|
3595
3608
|
return React68.useContext(WritingBoxContext) ?? StandInBox;
|
|
@@ -3598,12 +3611,12 @@ function WritingInputProvider({
|
|
|
3598
3611
|
Box,
|
|
3599
3612
|
children
|
|
3600
3613
|
}) {
|
|
3601
|
-
return /* @__PURE__ */ (0,
|
|
3614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(WritingInputContext.Provider, { value: Box, children });
|
|
3602
3615
|
}
|
|
3603
3616
|
function useWritingInput() {
|
|
3604
3617
|
return React68.useContext(WritingInputContext) ?? StandInInput;
|
|
3605
3618
|
}
|
|
3606
|
-
var React68,
|
|
3619
|
+
var React68, import_jsx_runtime100, KEY, registry4, WritingBoxContext, StandInBox, INPUT_KEY, inputRegistry, WritingInputContext, StandInInput;
|
|
3607
3620
|
var init_writing_box = __esm({
|
|
3608
3621
|
"src/writing-box.tsx"() {
|
|
3609
3622
|
"use strict";
|
|
@@ -3612,7 +3625,7 @@ var init_writing_box = __esm({
|
|
|
3612
3625
|
init_input();
|
|
3613
3626
|
init_textarea();
|
|
3614
3627
|
init_stand_in_notice();
|
|
3615
|
-
|
|
3628
|
+
import_jsx_runtime100 = require("react/jsx-runtime");
|
|
3616
3629
|
KEY = /* @__PURE__ */ Symbol.for("@ai-matrx/design-system/writing-box");
|
|
3617
3630
|
registry4 = globalThis;
|
|
3618
3631
|
WritingBoxContext = registry4[KEY] ?? (registry4[KEY] = React68.createContext(null));
|
|
@@ -3623,7 +3636,7 @@ var init_writing_box = __esm({
|
|
|
3623
3636
|
"A multi-line writing box drew as a plain Textarea (no mic, no read-aloud): the host did not mount <WritingBoxProvider Box={...}>."
|
|
3624
3637
|
);
|
|
3625
3638
|
}, []);
|
|
3626
|
-
return /* @__PURE__ */ (0,
|
|
3639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Textarea, { ...props, "data-writing-box-host": UNCONFIGURED });
|
|
3627
3640
|
};
|
|
3628
3641
|
INPUT_KEY = /* @__PURE__ */ Symbol.for("@ai-matrx/design-system/writing-input");
|
|
3629
3642
|
inputRegistry = globalThis;
|
|
@@ -3635,7 +3648,7 @@ var init_writing_box = __esm({
|
|
|
3635
3648
|
"A one-line writing input drew as a plain Input (no mic, no read-aloud): the host did not mount <WritingInputProvider Box={...}>."
|
|
3636
3649
|
);
|
|
3637
3650
|
}, []);
|
|
3638
|
-
return /* @__PURE__ */ (0,
|
|
3651
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Input, { ...props, "data-writing-box-host": UNCONFIGURED });
|
|
3639
3652
|
};
|
|
3640
3653
|
}
|
|
3641
3654
|
});
|
|
@@ -3683,12 +3696,12 @@ function ClipboardFallbackDialog({
|
|
|
3683
3696
|
inputRef.current?.focus();
|
|
3684
3697
|
inputRef.current?.select();
|
|
3685
3698
|
};
|
|
3686
|
-
return /* @__PURE__ */ (0,
|
|
3687
|
-
/* @__PURE__ */ (0,
|
|
3688
|
-
/* @__PURE__ */ (0,
|
|
3689
|
-
/* @__PURE__ */ (0,
|
|
3699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(DialogContent, { size: "sm", children: [
|
|
3700
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(DialogHeader, { children: [
|
|
3701
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(DialogTitle, { children: title }),
|
|
3702
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(DialogDescription, { children: description })
|
|
3690
3703
|
] }),
|
|
3691
|
-
multiline ? /* @__PURE__ */ (0,
|
|
3704
|
+
multiline ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
3692
3705
|
Textarea2,
|
|
3693
3706
|
{
|
|
3694
3707
|
mono: true,
|
|
@@ -3698,7 +3711,7 @@ function ClipboardFallbackDialog({
|
|
|
3698
3711
|
rows: 8,
|
|
3699
3712
|
onFocus: (event) => event.currentTarget.select()
|
|
3700
3713
|
}
|
|
3701
|
-
) : /* @__PURE__ */ (0,
|
|
3714
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
3702
3715
|
Input2,
|
|
3703
3716
|
{
|
|
3704
3717
|
mono: true,
|
|
@@ -3708,17 +3721,17 @@ function ClipboardFallbackDialog({
|
|
|
3708
3721
|
onFocus: (event) => event.currentTarget.select()
|
|
3709
3722
|
}
|
|
3710
3723
|
),
|
|
3711
|
-
blocked ? /* @__PURE__ */ (0,
|
|
3712
|
-
/* @__PURE__ */ (0,
|
|
3713
|
-
/* @__PURE__ */ (0,
|
|
3714
|
-
/* @__PURE__ */ (0,
|
|
3715
|
-
copied ? /* @__PURE__ */ (0,
|
|
3724
|
+
blocked ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("p", { role: "status", className: "text-sm text-destructive", children: "Still blocked. Press Cmd/Ctrl+C to copy." }) : null,
|
|
3725
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(DialogFooter, { children: [
|
|
3726
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), children: "Close" }),
|
|
3727
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Button, { type: "button", onClick: handleCopy, children: [
|
|
3728
|
+
copied ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CheckIcon, { className: "mr-2 h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(CopyIcon, { className: "mr-2 h-4 w-4" }),
|
|
3716
3729
|
copied ? "Copied" : "Copy"
|
|
3717
3730
|
] })
|
|
3718
3731
|
] })
|
|
3719
3732
|
] }) });
|
|
3720
3733
|
}
|
|
3721
|
-
var React70, import_clipboard5,
|
|
3734
|
+
var React70, import_clipboard5, import_jsx_runtime102;
|
|
3722
3735
|
var init_clipboard_fallback_dialog = __esm({
|
|
3723
3736
|
"src/clipboard-fallback-dialog.tsx"() {
|
|
3724
3737
|
"use strict";
|
|
@@ -3730,7 +3743,7 @@ var init_clipboard_fallback_dialog = __esm({
|
|
|
3730
3743
|
init_doors();
|
|
3731
3744
|
init_dialog();
|
|
3732
3745
|
init_icons();
|
|
3733
|
-
|
|
3746
|
+
import_jsx_runtime102 = require("react/jsx-runtime");
|
|
3734
3747
|
}
|
|
3735
3748
|
});
|
|
3736
3749
|
|
|
@@ -3768,45 +3781,45 @@ function AuthGateDialog({
|
|
|
3768
3781
|
if (onNavigate) onNavigate(href);
|
|
3769
3782
|
else window.location.assign(href);
|
|
3770
3783
|
};
|
|
3771
|
-
return /* @__PURE__ */ (0,
|
|
3784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
3772
3785
|
Dialog,
|
|
3773
3786
|
{
|
|
3774
3787
|
open: isOpen,
|
|
3775
3788
|
onOpenChange: (open) => {
|
|
3776
3789
|
if (!open) onClose();
|
|
3777
3790
|
},
|
|
3778
|
-
children: /* @__PURE__ */ (0,
|
|
3779
|
-
/* @__PURE__ */ (0,
|
|
3780
|
-
/* @__PURE__ */ (0,
|
|
3781
|
-
/* @__PURE__ */ (0,
|
|
3791
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(DialogContent, { size: "sm", children: [
|
|
3792
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(DialogHeader, { children: [
|
|
3793
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(DialogTitle, { children: "Sign in required" }),
|
|
3794
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(DialogDescription, { children: [
|
|
3782
3795
|
featureName,
|
|
3783
3796
|
" requires an account"
|
|
3784
3797
|
] })
|
|
3785
3798
|
] }),
|
|
3786
|
-
/* @__PURE__ */ (0,
|
|
3787
|
-
/* @__PURE__ */ (0,
|
|
3788
|
-
/* @__PURE__ */ (0,
|
|
3789
|
-
/* @__PURE__ */ (0,
|
|
3790
|
-
/* @__PURE__ */ (0,
|
|
3799
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex flex-col items-center gap-5 pb-4 pt-2 text-center", children: [
|
|
3800
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex h-14 w-14 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(LockIcon, { className: "h-7 w-7 text-primary" }) }),
|
|
3801
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: "max-w-[280px] text-sm leading-relaxed text-muted-foreground", children: featureDescription || `Sign in to use ${featureName}. Your current work will be right here when you get back.` }),
|
|
3802
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex w-full max-w-[260px] flex-col gap-2.5", children: [
|
|
3803
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
3791
3804
|
Button,
|
|
3792
3805
|
{
|
|
3793
3806
|
variant: "primary",
|
|
3794
3807
|
className: "w-full",
|
|
3795
3808
|
onClick: () => go(signInHref ?? DEFAULT_SIGN_IN),
|
|
3796
3809
|
children: [
|
|
3797
|
-
/* @__PURE__ */ (0,
|
|
3810
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(LogInIcon, { className: "mr-2 h-4 w-4" }),
|
|
3798
3811
|
"Sign In"
|
|
3799
3812
|
]
|
|
3800
3813
|
}
|
|
3801
3814
|
),
|
|
3802
|
-
/* @__PURE__ */ (0,
|
|
3815
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
3803
3816
|
Button,
|
|
3804
3817
|
{
|
|
3805
3818
|
variant: "outline",
|
|
3806
3819
|
className: "w-full",
|
|
3807
3820
|
onClick: () => go(signUpHref ?? DEFAULT_SIGN_UP),
|
|
3808
3821
|
children: [
|
|
3809
|
-
/* @__PURE__ */ (0,
|
|
3822
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(GemIcon, { className: "mr-2 h-4 w-4" }),
|
|
3810
3823
|
"Create Free Account"
|
|
3811
3824
|
]
|
|
3812
3825
|
}
|
|
@@ -3817,7 +3830,7 @@ function AuthGateDialog({
|
|
|
3817
3830
|
}
|
|
3818
3831
|
);
|
|
3819
3832
|
}
|
|
3820
|
-
var React71,
|
|
3833
|
+
var React71, import_jsx_runtime103, DEFAULT_SIGN_IN, DEFAULT_SIGN_UP, announced2, auth_gate_dialog_default;
|
|
3821
3834
|
var init_auth_gate_dialog = __esm({
|
|
3822
3835
|
"src/auth-gate-dialog.tsx"() {
|
|
3823
3836
|
"use strict";
|
|
@@ -3826,7 +3839,7 @@ var init_auth_gate_dialog = __esm({
|
|
|
3826
3839
|
init_button();
|
|
3827
3840
|
init_dialog();
|
|
3828
3841
|
init_icons();
|
|
3829
|
-
|
|
3842
|
+
import_jsx_runtime103 = require("react/jsx-runtime");
|
|
3830
3843
|
DEFAULT_SIGN_IN = "/login";
|
|
3831
3844
|
DEFAULT_SIGN_UP = "/sign-up";
|
|
3832
3845
|
announced2 = false;
|
|
@@ -3879,17 +3892,17 @@ function EmailInputDialog({
|
|
|
3879
3892
|
setError(null);
|
|
3880
3893
|
onClose();
|
|
3881
3894
|
};
|
|
3882
|
-
return /* @__PURE__ */ (0,
|
|
3883
|
-
/* @__PURE__ */ (0,
|
|
3884
|
-
/* @__PURE__ */ (0,
|
|
3885
|
-
/* @__PURE__ */ (0,
|
|
3895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Dialog, { open: isOpen, onOpenChange: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(DialogContent, { size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("form", { onSubmit: handleSubmit, noValidate: true, className: "flex flex-col gap-4", children: [
|
|
3896
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(DialogHeader, { children: [
|
|
3897
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(DialogTitle, { className: "flex items-center gap-2", children: [
|
|
3898
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(MailIcon, { className: "h-5 w-5 text-primary" }),
|
|
3886
3899
|
title
|
|
3887
3900
|
] }),
|
|
3888
|
-
/* @__PURE__ */ (0,
|
|
3901
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(DialogDescription, { children: description })
|
|
3889
3902
|
] }),
|
|
3890
|
-
/* @__PURE__ */ (0,
|
|
3891
|
-
/* @__PURE__ */ (0,
|
|
3892
|
-
/* @__PURE__ */ (0,
|
|
3903
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "space-y-2", children: [
|
|
3904
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Label4, { htmlFor: "email-input-dialog-email", children: "Email address" }),
|
|
3905
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
3893
3906
|
Input2,
|
|
3894
3907
|
{
|
|
3895
3908
|
id: "email-input-dialog-email",
|
|
@@ -3904,9 +3917,9 @@ function EmailInputDialog({
|
|
|
3904
3917
|
autoFocus: true
|
|
3905
3918
|
}
|
|
3906
3919
|
),
|
|
3907
|
-
error ? /* @__PURE__ */ (0,
|
|
3920
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("p", { className: "text-sm text-destructive", children: [
|
|
3908
3921
|
error,
|
|
3909
|
-
/* @__PURE__ */ (0,
|
|
3922
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
3910
3923
|
ErrorActions,
|
|
3911
3924
|
{
|
|
3912
3925
|
message: error,
|
|
@@ -3917,22 +3930,22 @@ function EmailInputDialog({
|
|
|
3917
3930
|
)
|
|
3918
3931
|
] }) : email.trim() && !isValidEmail(email.trim()) ? (
|
|
3919
3932
|
// An offer, never a block: Send stays enabled; pressing it names the problem.
|
|
3920
|
-
/* @__PURE__ */ (0,
|
|
3933
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("p", { className: "text-sm text-muted-foreground", "data-email-hint": true, children: "Not a full address yet, like you@example.com" })
|
|
3921
3934
|
) : null
|
|
3922
3935
|
] }),
|
|
3923
|
-
/* @__PURE__ */ (0,
|
|
3924
|
-
/* @__PURE__ */ (0,
|
|
3925
|
-
/* @__PURE__ */ (0,
|
|
3926
|
-
/* @__PURE__ */ (0,
|
|
3936
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(DialogFooter, { children: [
|
|
3937
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { type: "button", variant: "outline", onClick: handleClose, disabled: loading, children: "Cancel" }),
|
|
3938
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { variant: "primary", type: "submit", disabled: loading || !email.trim(), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_jsx_runtime104.Fragment, { children: [
|
|
3939
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 matrx-spin" }),
|
|
3927
3940
|
"Sending..."
|
|
3928
|
-
] }) : /* @__PURE__ */ (0,
|
|
3929
|
-
/* @__PURE__ */ (0,
|
|
3941
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_jsx_runtime104.Fragment, { children: [
|
|
3942
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(MailIcon, { className: "mr-2 h-4 w-4" }),
|
|
3930
3943
|
submitLabel
|
|
3931
3944
|
] }) })
|
|
3932
3945
|
] })
|
|
3933
3946
|
] }) }) });
|
|
3934
3947
|
}
|
|
3935
|
-
var React72,
|
|
3948
|
+
var React72, import_jsx_runtime104, isValidEmail, email_input_dialog_default;
|
|
3936
3949
|
var init_email_input_dialog = __esm({
|
|
3937
3950
|
"src/email-input-dialog.tsx"() {
|
|
3938
3951
|
"use strict";
|
|
@@ -3944,7 +3957,7 @@ var init_email_input_dialog = __esm({
|
|
|
3944
3957
|
init_error_box();
|
|
3945
3958
|
init_icons();
|
|
3946
3959
|
init_label();
|
|
3947
|
-
|
|
3960
|
+
import_jsx_runtime104 = require("react/jsx-runtime");
|
|
3948
3961
|
isValidEmail = (email) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
3949
3962
|
email_input_dialog_default = EmailInputDialog;
|
|
3950
3963
|
}
|
|
@@ -3965,34 +3978,34 @@ function SandboxGateDialog({ open, onChoose, children }) {
|
|
|
3965
3978
|
);
|
|
3966
3979
|
}
|
|
3967
3980
|
}, [open, noPanel]);
|
|
3968
|
-
return /* @__PURE__ */ (0,
|
|
3981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
3969
3982
|
Dialog,
|
|
3970
3983
|
{
|
|
3971
3984
|
open,
|
|
3972
3985
|
onOpenChange: (next) => {
|
|
3973
3986
|
if (!next) onChoose("cancel");
|
|
3974
3987
|
},
|
|
3975
|
-
children: /* @__PURE__ */ (0,
|
|
3976
|
-
/* @__PURE__ */ (0,
|
|
3977
|
-
/* @__PURE__ */ (0,
|
|
3978
|
-
/* @__PURE__ */ (0,
|
|
3988
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DialogContent, { size: "md", className: "gap-4", ...noPanel ? { "data-sandbox-gate-panel": UNCONFIGURED } : {}, children: [
|
|
3989
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DialogHeader, { children: [
|
|
3990
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DialogTitle, { className: "flex items-center gap-2", children: [
|
|
3991
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(AlertTriangleIcon, { className: "h-4 w-4 text-warning" }),
|
|
3979
3992
|
"Sandbox unavailable"
|
|
3980
3993
|
] }),
|
|
3981
|
-
/* @__PURE__ */ (0,
|
|
3994
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(DialogDescription, { children: "This conversation is bound to a sandbox, but it can't be reached right now (it may be stopped, expired, or still starting). Nothing was sent. Attach or start a sandbox and retry, or send this message without a sandbox." })
|
|
3982
3995
|
] }),
|
|
3983
|
-
children ? /* @__PURE__ */ (0,
|
|
3984
|
-
/* @__PURE__ */ (0,
|
|
3985
|
-
/* @__PURE__ */ (0,
|
|
3986
|
-
/* @__PURE__ */ (0,
|
|
3987
|
-
/* @__PURE__ */ (0,
|
|
3988
|
-
/* @__PURE__ */ (0,
|
|
3996
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "max-h-[50dvh] overflow-y-auto rounded-md border border-border", children }) : null,
|
|
3997
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(DialogFooter, { className: "gap-2 sm:justify-between", children: [
|
|
3998
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { variant: "ghost", onClick: () => onChoose("cancel"), children: "Cancel" }),
|
|
3999
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex gap-2", children: [
|
|
4000
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { variant: "outline", onClick: () => onChoose("detach"), children: "Send without sandbox" }),
|
|
4001
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { variant: "primary", onClick: () => onChoose("attach"), children: "Retry with sandbox" })
|
|
3989
4002
|
] })
|
|
3990
4003
|
] })
|
|
3991
4004
|
] })
|
|
3992
4005
|
}
|
|
3993
4006
|
);
|
|
3994
4007
|
}
|
|
3995
|
-
var React73,
|
|
4008
|
+
var React73, import_jsx_runtime105;
|
|
3996
4009
|
var init_sandbox_gate_dialog = __esm({
|
|
3997
4010
|
"src/sandbox-gate-dialog.tsx"() {
|
|
3998
4011
|
"use strict";
|
|
@@ -4002,7 +4015,7 @@ var init_sandbox_gate_dialog = __esm({
|
|
|
4002
4015
|
init_stand_in_notice();
|
|
4003
4016
|
init_dialog();
|
|
4004
4017
|
init_icons();
|
|
4005
|
-
|
|
4018
|
+
import_jsx_runtime105 = require("react/jsx-runtime");
|
|
4006
4019
|
}
|
|
4007
4020
|
});
|
|
4008
4021
|
|
|
@@ -4016,10 +4029,10 @@ function ScopeSetList({
|
|
|
4016
4029
|
items,
|
|
4017
4030
|
renderScope
|
|
4018
4031
|
}) {
|
|
4019
|
-
return /* @__PURE__ */ (0,
|
|
4020
|
-
/* @__PURE__ */ (0,
|
|
4021
|
-
items.length === 0 ? /* @__PURE__ */ (0,
|
|
4022
|
-
/* @__PURE__ */ (0,
|
|
4032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
4033
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: heading }),
|
|
4034
|
+
items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "text-sm text-muted-foreground", children: "None" }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("ul", { className: "flex flex-col gap-0.5", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("li", { className: "flex min-w-0 items-center gap-1 text-sm text-foreground", children: [
|
|
4035
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("span", { className: "shrink-0 text-muted-foreground", children: [
|
|
4023
4036
|
item.typeLabel,
|
|
4024
4037
|
":"
|
|
4025
4038
|
] }),
|
|
@@ -4043,32 +4056,32 @@ function ScopeMismatchDialog({
|
|
|
4043
4056
|
);
|
|
4044
4057
|
}
|
|
4045
4058
|
}, [open, plain]);
|
|
4046
|
-
return /* @__PURE__ */ (0,
|
|
4059
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
4047
4060
|
Dialog,
|
|
4048
4061
|
{
|
|
4049
4062
|
open,
|
|
4050
4063
|
onOpenChange: (next) => {
|
|
4051
4064
|
if (!next) onChoose("cancel");
|
|
4052
4065
|
},
|
|
4053
|
-
children: /* @__PURE__ */ (0,
|
|
4054
|
-
/* @__PURE__ */ (0,
|
|
4055
|
-
/* @__PURE__ */ (0,
|
|
4056
|
-
/* @__PURE__ */ (0,
|
|
4066
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(DialogContent, { size: "md", children: [
|
|
4067
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(DialogHeader, { children: [
|
|
4068
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(DialogTitle, { children: "This chat's scopes differ from your current selection" }),
|
|
4069
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(DialogDescription, { children: "Choose which scopes this chat should run under. Dismissing cancels the send \u2014 your message stays in the composer." })
|
|
4057
4070
|
] }),
|
|
4058
|
-
/* @__PURE__ */ (0,
|
|
4059
|
-
/* @__PURE__ */ (0,
|
|
4060
|
-
/* @__PURE__ */ (0,
|
|
4071
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "grid gap-4 py-1 sm:grid-cols-2", children: [
|
|
4072
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ScopeSetList, { heading: "Current selection", items: current, renderScope }),
|
|
4073
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ScopeSetList, { heading: "This chat's scopes", items: chat, renderScope })
|
|
4061
4074
|
] }),
|
|
4062
|
-
/* @__PURE__ */ (0,
|
|
4063
|
-
/* @__PURE__ */ (0,
|
|
4064
|
-
/* @__PURE__ */ (0,
|
|
4065
|
-
/* @__PURE__ */ (0,
|
|
4075
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(DialogFooter, { className: "flex-col gap-2 sm:flex-row sm:justify-end", children: [
|
|
4076
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { type: "button", variant: "outline", onClick: () => onChoose("keep"), children: "Keep chat's scopes" }),
|
|
4077
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { type: "button", variant: "outline", onClick: () => onChoose("combine"), children: "Combine both" }),
|
|
4078
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { variant: "primary", type: "button", onClick: () => onChoose("update"), children: "Use current selection" })
|
|
4066
4079
|
] })
|
|
4067
4080
|
] })
|
|
4068
4081
|
}
|
|
4069
4082
|
);
|
|
4070
4083
|
}
|
|
4071
|
-
var React74,
|
|
4084
|
+
var React74, import_jsx_runtime106, plainScope;
|
|
4072
4085
|
var init_scope_mismatch_dialog = __esm({
|
|
4073
4086
|
"src/scope-mismatch-dialog.tsx"() {
|
|
4074
4087
|
"use strict";
|
|
@@ -4077,8 +4090,8 @@ var init_scope_mismatch_dialog = __esm({
|
|
|
4077
4090
|
init_button();
|
|
4078
4091
|
init_stand_in_notice();
|
|
4079
4092
|
init_dialog();
|
|
4080
|
-
|
|
4081
|
-
plainScope = (item) => /* @__PURE__ */ (0,
|
|
4093
|
+
import_jsx_runtime106 = require("react/jsx-runtime");
|
|
4094
|
+
plainScope = (item) => /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "truncate", "data-scope-mismatch-host": UNCONFIGURED, children: item.name });
|
|
4082
4095
|
}
|
|
4083
4096
|
});
|
|
4084
4097
|
|
|
@@ -4112,17 +4125,17 @@ function ValuePromptsDialog({ request, open, onSettle: settle }) {
|
|
|
4112
4125
|
}, [request, answers, missingRequired, settle]);
|
|
4113
4126
|
const only = request?.fields.length === 1 ? request.fields[0] : void 0;
|
|
4114
4127
|
const single = only && !(answers[only.name] ?? "").includes("\n") ? only : null;
|
|
4115
|
-
return /* @__PURE__ */ (0,
|
|
4116
|
-
/* @__PURE__ */ (0,
|
|
4117
|
-
/* @__PURE__ */ (0,
|
|
4118
|
-
/* @__PURE__ */ (0,
|
|
4128
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Dialog, { open, onOpenChange: (next) => !next && request && settle(null), children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(DialogContent, { size: "sm", children: [
|
|
4129
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(DialogHeader, { children: [
|
|
4130
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(DialogTitle, { children: request?.title ?? "" }),
|
|
4131
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(DialogDescription, { className: request?.description ? void 0 : "sr-only", children: request?.description ?? request?.title ?? "" })
|
|
4119
4132
|
] }),
|
|
4120
|
-
/* @__PURE__ */ (0,
|
|
4121
|
-
/* @__PURE__ */ (0,
|
|
4133
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-col gap-4 py-1", children: request?.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
4134
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(Label4, { htmlFor: `value-prompt-${field.name}`, className: "text-sm text-foreground", children: [
|
|
4122
4135
|
field.prompt,
|
|
4123
|
-
field.required ? /* @__PURE__ */ (0,
|
|
4136
|
+
field.required ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "ml-1 text-destructive", children: "*" }) : null
|
|
4124
4137
|
] }),
|
|
4125
|
-
single?.name === field.name ? /* @__PURE__ */ (0,
|
|
4138
|
+
single?.name === field.name ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
4126
4139
|
WritingInput,
|
|
4127
4140
|
{
|
|
4128
4141
|
id: `value-prompt-${field.name}`,
|
|
@@ -4140,7 +4153,7 @@ function ValuePromptsDialog({ request, open, onSettle: settle }) {
|
|
|
4140
4153
|
}
|
|
4141
4154
|
}
|
|
4142
4155
|
}
|
|
4143
|
-
) : /* @__PURE__ */ (0,
|
|
4156
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
4144
4157
|
WritingBox,
|
|
4145
4158
|
{
|
|
4146
4159
|
id: `value-prompt-${field.name}`,
|
|
@@ -4153,13 +4166,13 @@ function ValuePromptsDialog({ request, open, onSettle: settle }) {
|
|
|
4153
4166
|
}
|
|
4154
4167
|
)
|
|
4155
4168
|
] }, field.name)) }),
|
|
4156
|
-
/* @__PURE__ */ (0,
|
|
4157
|
-
/* @__PURE__ */ (0,
|
|
4158
|
-
/* @__PURE__ */ (0,
|
|
4169
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(DialogFooter, { children: [
|
|
4170
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Button, { type: "button", variant: "outline", onClick: () => settle(null), children: "Cancel" }),
|
|
4171
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Button, { type: "button", variant: "primary", onClick: submit, disabled: missingRequired, children: request?.submitLabel ?? "Continue" })
|
|
4159
4172
|
] })
|
|
4160
4173
|
] }) });
|
|
4161
4174
|
}
|
|
4162
|
-
var React75,
|
|
4175
|
+
var React75, import_jsx_runtime107;
|
|
4163
4176
|
var init_value_prompts_dialog = __esm({
|
|
4164
4177
|
"src/value-prompts-dialog.tsx"() {
|
|
4165
4178
|
"use strict";
|
|
@@ -4169,7 +4182,7 @@ var init_value_prompts_dialog = __esm({
|
|
|
4169
4182
|
init_dialog();
|
|
4170
4183
|
init_label();
|
|
4171
4184
|
init_writing_box();
|
|
4172
|
-
|
|
4185
|
+
import_jsx_runtime107 = require("react/jsx-runtime");
|
|
4173
4186
|
}
|
|
4174
4187
|
});
|
|
4175
4188
|
|
|
@@ -4257,8 +4270,8 @@ function TextInputDialog({
|
|
|
4257
4270
|
if (busy) return;
|
|
4258
4271
|
submit();
|
|
4259
4272
|
};
|
|
4260
|
-
const body = /* @__PURE__ */ (0,
|
|
4261
|
-
multiline ? /* @__PURE__ */ (0,
|
|
4273
|
+
const body = /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("form", { onSubmit: handleFormSubmit, className: "space-y-2", children: [
|
|
4274
|
+
multiline ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
4262
4275
|
ProTextarea,
|
|
4263
4276
|
{
|
|
4264
4277
|
autoFocus: true,
|
|
@@ -4278,7 +4291,7 @@ function TextInputDialog({
|
|
|
4278
4291
|
"aria-invalid": !!error,
|
|
4279
4292
|
"aria-describedby": error ? "text-input-dialog-error" : void 0
|
|
4280
4293
|
}
|
|
4281
|
-
) : /* @__PURE__ */ (0,
|
|
4294
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
4282
4295
|
Input2,
|
|
4283
4296
|
{
|
|
4284
4297
|
autoFocus: true,
|
|
@@ -4294,14 +4307,14 @@ function TextInputDialog({
|
|
|
4294
4307
|
"aria-describedby": error ? "text-input-dialog-error" : void 0
|
|
4295
4308
|
}
|
|
4296
4309
|
),
|
|
4297
|
-
error ? /* @__PURE__ */ (0,
|
|
4310
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("p", { id: "text-input-dialog-error", className: "text-sm text-destructive", children: [
|
|
4298
4311
|
error,
|
|
4299
|
-
/* @__PURE__ */ (0,
|
|
4312
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(ErrorActions, { message: error, operation: "Enter a value", source: "inline", origin: "design-system/TextInputDialog" })
|
|
4300
4313
|
] }) : null,
|
|
4301
|
-
/* @__PURE__ */ (0,
|
|
4314
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("button", { type: "submit", className: "hidden", tabIndex: -1, "aria-hidden": true })
|
|
4302
4315
|
] });
|
|
4303
|
-
const buttons = /* @__PURE__ */ (0,
|
|
4304
|
-
/* @__PURE__ */ (0,
|
|
4316
|
+
const buttons = /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_jsx_runtime108.Fragment, { children: [
|
|
4317
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
4305
4318
|
Button,
|
|
4306
4319
|
{
|
|
4307
4320
|
type: "button",
|
|
@@ -4311,22 +4324,22 @@ function TextInputDialog({
|
|
|
4311
4324
|
children: cancelLabel
|
|
4312
4325
|
}
|
|
4313
4326
|
),
|
|
4314
|
-
/* @__PURE__ */ (0,
|
|
4315
|
-
busy ? /* @__PURE__ */ (0,
|
|
4327
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(Button, { type: "button", onClick: submit, disabled: busy || !allowEmpty && !value.trim(), children: [
|
|
4328
|
+
busy ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Loader2Icon, { className: "mr-2 h-4 w-4 matrx-spin" }) : null,
|
|
4316
4329
|
confirmLabel
|
|
4317
4330
|
] })
|
|
4318
4331
|
] });
|
|
4319
4332
|
if (isMobile) {
|
|
4320
|
-
return /* @__PURE__ */ (0,
|
|
4321
|
-
/* @__PURE__ */ (0,
|
|
4322
|
-
/* @__PURE__ */ (0,
|
|
4323
|
-
description ? /* @__PURE__ */ (0,
|
|
4333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Drawer, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(DrawerContent, { children: [
|
|
4334
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(DrawerHeader, { children: [
|
|
4335
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DrawerTitle, { children: title }),
|
|
4336
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DrawerDescription, { children: description }) : null
|
|
4324
4337
|
] }),
|
|
4325
|
-
/* @__PURE__ */ (0,
|
|
4326
|
-
/* @__PURE__ */ (0,
|
|
4338
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "px-4 pb-2", children: body }),
|
|
4339
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DrawerFooter, { className: "flex-row justify-end gap-2", children: buttons })
|
|
4327
4340
|
] }) });
|
|
4328
4341
|
}
|
|
4329
|
-
return /* @__PURE__ */ (0,
|
|
4342
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
|
|
4330
4343
|
DialogContent,
|
|
4331
4344
|
{
|
|
4332
4345
|
className: "sm:max-w-md",
|
|
@@ -4336,17 +4349,17 @@ function TextInputDialog({
|
|
|
4336
4349
|
}
|
|
4337
4350
|
},
|
|
4338
4351
|
children: [
|
|
4339
|
-
/* @__PURE__ */ (0,
|
|
4340
|
-
/* @__PURE__ */ (0,
|
|
4341
|
-
description ? /* @__PURE__ */ (0,
|
|
4352
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(DialogHeader, { children: [
|
|
4353
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DialogTitle, { children: title }),
|
|
4354
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DialogDescription, { children: description }) : null
|
|
4342
4355
|
] }),
|
|
4343
4356
|
body,
|
|
4344
|
-
/* @__PURE__ */ (0,
|
|
4357
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(DialogFooter, { children: buttons })
|
|
4345
4358
|
]
|
|
4346
4359
|
}
|
|
4347
4360
|
) });
|
|
4348
4361
|
}
|
|
4349
|
-
var React76,
|
|
4362
|
+
var React76, import_jsx_runtime108;
|
|
4350
4363
|
var init_text_input_dialog = __esm({
|
|
4351
4364
|
"src/text-input-dialog.tsx"() {
|
|
4352
4365
|
"use strict";
|
|
@@ -4362,7 +4375,7 @@ var init_text_input_dialog = __esm({
|
|
|
4362
4375
|
init_writing_box();
|
|
4363
4376
|
init_opener_reclick();
|
|
4364
4377
|
init_error_box();
|
|
4365
|
-
|
|
4378
|
+
import_jsx_runtime108 = require("react/jsx-runtime");
|
|
4366
4379
|
}
|
|
4367
4380
|
});
|
|
4368
4381
|
|
|
@@ -4582,6 +4595,7 @@ __export(src_exports, {
|
|
|
4582
4595
|
Peek: () => Peek,
|
|
4583
4596
|
PeekEntityRendererProvider: () => PeekEntityRendererProvider,
|
|
4584
4597
|
PeekHoverCard: () => PeekHoverCard,
|
|
4598
|
+
PeekNotice: () => PeekNotice,
|
|
4585
4599
|
PeekPartRendererProvider: () => PeekPartRendererProvider,
|
|
4586
4600
|
PeekPopover: () => PeekPopover,
|
|
4587
4601
|
PeekWindow: () => PeekWindow,
|
|
@@ -15273,11 +15287,58 @@ function TrayMenu({ menu }) {
|
|
|
15273
15287
|
] });
|
|
15274
15288
|
}
|
|
15275
15289
|
|
|
15290
|
+
// src/peek-notice.tsx
|
|
15291
|
+
init_cn();
|
|
15292
|
+
init_controls();
|
|
15293
|
+
init_icons();
|
|
15294
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
15295
|
+
var LEVEL = {
|
|
15296
|
+
success: { icon: CircleCheckIcon, ink: "text-success-ink", label: "Done" },
|
|
15297
|
+
info: { icon: InfoIcon, ink: "text-info-ink", label: "Notice" },
|
|
15298
|
+
warning: { icon: AlertTriangleIcon, ink: "text-warning-ink", label: "Warning" },
|
|
15299
|
+
error: { icon: CircleXIcon, ink: "text-destructive-ink", label: "Error" }
|
|
15300
|
+
};
|
|
15301
|
+
function PeekNotice({ level, title, subtitle, items, limit = 5, onDismiss }) {
|
|
15302
|
+
const tone = LEVEL[level];
|
|
15303
|
+
const Icon3 = tone.icon;
|
|
15304
|
+
const rows = (items ?? []).map((item, i) => ({
|
|
15305
|
+
key: `${i}:${item.text}`,
|
|
15306
|
+
text: item.text,
|
|
15307
|
+
title: item.text,
|
|
15308
|
+
...item.detail ? { detail: item.detail } : {}
|
|
15309
|
+
}));
|
|
15310
|
+
return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
|
|
15311
|
+
PeekCard,
|
|
15312
|
+
{
|
|
15313
|
+
size: "md",
|
|
15314
|
+
height: "content",
|
|
15315
|
+
density: "compact",
|
|
15316
|
+
role: level === "error" ? "alert" : "status",
|
|
15317
|
+
"aria-label": `${tone.label}: ${title}`,
|
|
15318
|
+
"data-matrx-peek-notice": level,
|
|
15319
|
+
children: [
|
|
15320
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
|
|
15321
|
+
PeekCardHeader,
|
|
15322
|
+
{
|
|
15323
|
+
title,
|
|
15324
|
+
leading: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Icon3, { className: cn("size-4", tone.ink) }),
|
|
15325
|
+
...subtitle ? { subtitle } : {},
|
|
15326
|
+
...onDismiss ? {
|
|
15327
|
+
trailing: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Button2, { type: "button", variant: "quiet", "aria-label": "Dismiss", title: "Dismiss", icon: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(XIcon, { className: "size-3.5" }), onClick: onDismiss })
|
|
15328
|
+
} : {}
|
|
15329
|
+
}
|
|
15330
|
+
),
|
|
15331
|
+
rows.length ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(PeekCardBody, { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(PeekCardRows, { rows, limit }) }) : null
|
|
15332
|
+
]
|
|
15333
|
+
}
|
|
15334
|
+
);
|
|
15335
|
+
}
|
|
15336
|
+
|
|
15276
15337
|
// src/radio-group.tsx
|
|
15277
15338
|
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
15278
15339
|
var React65 = __toESM(require("react"), 1);
|
|
15279
15340
|
init_cn();
|
|
15280
|
-
var
|
|
15341
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
15281
15342
|
var RadioGroupSizeContext = React65.createContext("md");
|
|
15282
15343
|
var CONTROL_CLASSES = {
|
|
15283
15344
|
sm: "h-3.5 w-3.5",
|
|
@@ -15289,7 +15350,7 @@ var DOT_CLASSES = {
|
|
|
15289
15350
|
md: "h-1.5 w-1.5",
|
|
15290
15351
|
lg: "h-2 w-2"
|
|
15291
15352
|
};
|
|
15292
|
-
var RadioGroup5 = React65.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0,
|
|
15353
|
+
var RadioGroup5 = React65.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
15293
15354
|
RadioGroupPrimitive.Root,
|
|
15294
15355
|
{
|
|
15295
15356
|
ref,
|
|
@@ -15302,7 +15363,7 @@ RadioGroup5.displayName = RadioGroupPrimitive.Root.displayName;
|
|
|
15302
15363
|
var RadioGroupItem = React65.forwardRef(({ className, size, ...props }, ref) => {
|
|
15303
15364
|
const groupSize = React65.useContext(RadioGroupSizeContext);
|
|
15304
15365
|
const resolved = size ?? groupSize;
|
|
15305
|
-
return /* @__PURE__ */ (0,
|
|
15366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
15306
15367
|
RadioGroupPrimitive.Item,
|
|
15307
15368
|
{
|
|
15308
15369
|
ref,
|
|
@@ -15319,7 +15380,7 @@ var RadioGroupItem = React65.forwardRef(({ className, size, ...props }, ref) =>
|
|
|
15319
15380
|
className
|
|
15320
15381
|
),
|
|
15321
15382
|
...props,
|
|
15322
|
-
children: /* @__PURE__ */ (0,
|
|
15383
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
15323
15384
|
"div",
|
|
15324
15385
|
{
|
|
15325
15386
|
className: cn("rounded-full bg-primary-foreground", DOT_CLASSES[resolved])
|
|
@@ -15338,7 +15399,7 @@ function RadioList({
|
|
|
15338
15399
|
"aria-label": ariaLabel
|
|
15339
15400
|
}) {
|
|
15340
15401
|
const baseId = React65.useId();
|
|
15341
|
-
return /* @__PURE__ */ (0,
|
|
15402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
15342
15403
|
RadioGroup5,
|
|
15343
15404
|
{
|
|
15344
15405
|
value,
|
|
@@ -15349,7 +15410,7 @@ function RadioList({
|
|
|
15349
15410
|
children: options.map((opt, i) => {
|
|
15350
15411
|
const selected = value === opt.value;
|
|
15351
15412
|
const id = `${baseId}-${i}`;
|
|
15352
|
-
return /* @__PURE__ */ (0,
|
|
15413
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
|
|
15353
15414
|
"label",
|
|
15354
15415
|
{
|
|
15355
15416
|
htmlFor: id,
|
|
@@ -15360,9 +15421,9 @@ function RadioList({
|
|
|
15360
15421
|
opt.disabled && "cursor-not-allowed text-disabled-foreground"
|
|
15361
15422
|
),
|
|
15362
15423
|
children: [
|
|
15363
|
-
/* @__PURE__ */ (0,
|
|
15364
|
-
/* @__PURE__ */ (0,
|
|
15365
|
-
opt.hint != null && opt.hint !== "" ? /* @__PURE__ */ (0,
|
|
15424
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(RadioGroupItem, { id, value: opt.value, disabled: opt.disabled }),
|
|
15425
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "flex-1 truncate", children: opt.label }),
|
|
15426
|
+
opt.hint != null && opt.hint !== "" ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: opt.hint }) : null
|
|
15366
15427
|
]
|
|
15367
15428
|
},
|
|
15368
15429
|
opt.value
|
|
@@ -15378,7 +15439,7 @@ var TogglePrimitive = __toESM(require("@radix-ui/react-toggle"), 1);
|
|
|
15378
15439
|
var import_class_variance_authority7 = require("class-variance-authority");
|
|
15379
15440
|
var React66 = __toESM(require("react"), 1);
|
|
15380
15441
|
init_cn();
|
|
15381
|
-
var
|
|
15442
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
15382
15443
|
var toggleVariants = (0, import_class_variance_authority7.cva)(
|
|
15383
15444
|
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
15384
15445
|
{
|
|
@@ -15404,7 +15465,7 @@ var toggleVariants = (0, import_class_variance_authority7.cva)(
|
|
|
15404
15465
|
}
|
|
15405
15466
|
}
|
|
15406
15467
|
);
|
|
15407
|
-
var Toggle = React66.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0,
|
|
15468
|
+
var Toggle = React66.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
15408
15469
|
TogglePrimitive.Root,
|
|
15409
15470
|
{
|
|
15410
15471
|
ref,
|
|
@@ -15415,20 +15476,20 @@ var Toggle = React66.forwardRef(({ className, variant, size, ...props }, ref) =>
|
|
|
15415
15476
|
));
|
|
15416
15477
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
15417
15478
|
var ToggleGroupContext = React66.createContext({ size: "default", variant: "default" });
|
|
15418
|
-
var ToggleGroup = React66.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0,
|
|
15479
|
+
var ToggleGroup = React66.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
15419
15480
|
ToggleGroupPrimitive.Root,
|
|
15420
15481
|
{
|
|
15421
15482
|
ref,
|
|
15422
15483
|
"data-slot": "toggle-group",
|
|
15423
15484
|
className: cn("flex items-center justify-center gap-1", className),
|
|
15424
15485
|
...props,
|
|
15425
|
-
children: /* @__PURE__ */ (0,
|
|
15486
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
15426
15487
|
}
|
|
15427
15488
|
));
|
|
15428
15489
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
15429
15490
|
var ToggleGroupItem = React66.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
15430
15491
|
const context = React66.useContext(ToggleGroupContext);
|
|
15431
|
-
return /* @__PURE__ */ (0,
|
|
15492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
15432
15493
|
ToggleGroupPrimitive.Item,
|
|
15433
15494
|
{
|
|
15434
15495
|
ref,
|
|
@@ -15453,7 +15514,7 @@ init_cn();
|
|
|
15453
15514
|
init_icons();
|
|
15454
15515
|
init_controls();
|
|
15455
15516
|
init_motion();
|
|
15456
|
-
var
|
|
15517
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
15457
15518
|
var BASE_SIZE = 40;
|
|
15458
15519
|
var BASE_ICON = 20;
|
|
15459
15520
|
var REACH = 150;
|
|
@@ -15473,29 +15534,29 @@ function FloatingDock({
|
|
|
15473
15534
|
growthFactor = 2,
|
|
15474
15535
|
labelPosition = "top"
|
|
15475
15536
|
}) {
|
|
15476
|
-
return /* @__PURE__ */ (0,
|
|
15477
|
-
/* @__PURE__ */ (0,
|
|
15478
|
-
/* @__PURE__ */ (0,
|
|
15537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: cn("flex w-auto items-center justify-center bg-background", className), children: [
|
|
15538
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(FloatingDockPhone, { items }),
|
|
15539
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(FloatingDockDesktop, { items, growthFactor, labelPosition })
|
|
15479
15540
|
] });
|
|
15480
15541
|
}
|
|
15481
15542
|
function BalancedFloatingDock(props) {
|
|
15482
|
-
return /* @__PURE__ */ (0,
|
|
15543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(FloatingDock, { growthFactor: 1.8, labelPosition: "side", ...props });
|
|
15483
15544
|
}
|
|
15484
15545
|
function FloatingDockPhone({ items }) {
|
|
15485
15546
|
const [open, setOpen] = React67.useState(false);
|
|
15486
|
-
return /* @__PURE__ */ (0,
|
|
15487
|
-
/* @__PURE__ */ (0,
|
|
15547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "relative block md:hidden", children: [
|
|
15548
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15488
15549
|
Button2,
|
|
15489
15550
|
{
|
|
15490
15551
|
type: "button",
|
|
15491
15552
|
variant: "quiet",
|
|
15492
15553
|
"aria-label": open ? "Close menu" : "Open menu",
|
|
15493
|
-
icon: open ? /* @__PURE__ */ (0,
|
|
15554
|
+
icon: open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(PanelTopCloseIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(PanelTopOpenIcon, { className: "h-5 w-5" }),
|
|
15494
15555
|
"aria-expanded": open,
|
|
15495
15556
|
onClick: () => setOpen(!open)
|
|
15496
15557
|
}
|
|
15497
15558
|
),
|
|
15498
|
-
/* @__PURE__ */ (0,
|
|
15559
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15499
15560
|
"div",
|
|
15500
15561
|
{
|
|
15501
15562
|
"data-open": open,
|
|
@@ -15505,32 +15566,32 @@ function FloatingDockPhone({ items }) {
|
|
|
15505
15566
|
PANEL_MOTION_CLASS,
|
|
15506
15567
|
open ? "translate-y-0" : "pointer-events-none -translate-y-full"
|
|
15507
15568
|
),
|
|
15508
|
-
children: /* @__PURE__ */ (0,
|
|
15509
|
-
/* @__PURE__ */ (0,
|
|
15510
|
-
/* @__PURE__ */ (0,
|
|
15511
|
-
/* @__PURE__ */ (0,
|
|
15569
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex h-full flex-col", children: [
|
|
15570
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center justify-between border-b border-border p-4", children: [
|
|
15571
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h2", { className: "text-lg font-medium", children: "Menu" }),
|
|
15572
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15512
15573
|
Button2,
|
|
15513
15574
|
{
|
|
15514
15575
|
type: "button",
|
|
15515
15576
|
variant: "quiet",
|
|
15516
15577
|
"aria-label": "Close menu",
|
|
15517
|
-
icon: /* @__PURE__ */ (0,
|
|
15578
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(XIcon, { className: "h-6 w-6" }),
|
|
15518
15579
|
onClick: () => setOpen(false)
|
|
15519
15580
|
}
|
|
15520
15581
|
)
|
|
15521
15582
|
] }),
|
|
15522
|
-
/* @__PURE__ */ (0,
|
|
15583
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "flex-1 overflow-y-auto", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
15523
15584
|
HostLink,
|
|
15524
15585
|
{
|
|
15525
15586
|
href: item.href,
|
|
15526
15587
|
className: "flex items-center justify-between border-b border-border p-4",
|
|
15527
15588
|
onClick: () => setOpen(false),
|
|
15528
15589
|
children: [
|
|
15529
|
-
/* @__PURE__ */ (0,
|
|
15530
|
-
/* @__PURE__ */ (0,
|
|
15531
|
-
/* @__PURE__ */ (0,
|
|
15590
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center space-x-4", children: [
|
|
15591
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "h-5 w-5 [&>svg]:h-full [&>svg]:w-full", children: item.icon }) }),
|
|
15592
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "font-medium", children: item.label })
|
|
15532
15593
|
] }),
|
|
15533
|
-
/* @__PURE__ */ (0,
|
|
15594
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ChevronRightIcon, { className: "h-5 w-5 text-muted-foreground" })
|
|
15534
15595
|
]
|
|
15535
15596
|
},
|
|
15536
15597
|
item.label
|
|
@@ -15557,7 +15618,7 @@ function FloatingDockDesktop({
|
|
|
15557
15618
|
})
|
|
15558
15619
|
);
|
|
15559
15620
|
};
|
|
15560
|
-
return /* @__PURE__ */ (0,
|
|
15621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15561
15622
|
"div",
|
|
15562
15623
|
{
|
|
15563
15624
|
onMouseMove: (e) => measure(e.clientX),
|
|
@@ -15571,8 +15632,8 @@ function FloatingDockDesktop({
|
|
|
15571
15632
|
const size = dockSize(BASE_SIZE, growthFactor, distance);
|
|
15572
15633
|
const icon = dockSize(BASE_ICON, growthFactor, distance);
|
|
15573
15634
|
const under = Number.isFinite(distance) && Math.abs(distance) < BASE_SIZE / 2;
|
|
15574
|
-
return /* @__PURE__ */ (0,
|
|
15575
|
-
/* @__PURE__ */ (0,
|
|
15635
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(HostLink, { href: item.href, "aria-label": item.label, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "relative", children: [
|
|
15636
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15576
15637
|
"div",
|
|
15577
15638
|
{
|
|
15578
15639
|
ref: (el) => {
|
|
@@ -15583,7 +15644,7 @@ function FloatingDockDesktop({
|
|
|
15583
15644
|
"relative flex aspect-square items-center justify-center rounded-full bg-muted transition-[width,height]",
|
|
15584
15645
|
MAGNIFY_MOTION
|
|
15585
15646
|
),
|
|
15586
|
-
children: /* @__PURE__ */ (0,
|
|
15647
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15587
15648
|
"div",
|
|
15588
15649
|
{
|
|
15589
15650
|
style: { width: icon, height: icon },
|
|
@@ -15596,7 +15657,7 @@ function FloatingDockDesktop({
|
|
|
15596
15657
|
)
|
|
15597
15658
|
}
|
|
15598
15659
|
),
|
|
15599
|
-
/* @__PURE__ */ (0,
|
|
15660
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
|
|
15600
15661
|
"div",
|
|
15601
15662
|
{
|
|
15602
15663
|
"data-shown": under,
|
|
@@ -15622,7 +15683,7 @@ init_writing_box();
|
|
|
15622
15683
|
|
|
15623
15684
|
// src/deferred-dialog.tsx
|
|
15624
15685
|
var React69 = __toESM(require("react"), 1);
|
|
15625
|
-
var
|
|
15686
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
15626
15687
|
function deferredDialog(name, load, isOpen) {
|
|
15627
15688
|
let pending = null;
|
|
15628
15689
|
const preload = () => pending ??= load().then((component) => ({ default: component }));
|
|
@@ -15632,7 +15693,7 @@ function deferredDialog(name, load, isOpen) {
|
|
|
15632
15693
|
const [opened, setOpened] = React69.useState(open);
|
|
15633
15694
|
if (open && !opened) setOpened(true);
|
|
15634
15695
|
if (!open && !opened) return null;
|
|
15635
|
-
return /* @__PURE__ */ (0,
|
|
15696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(React69.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Body, { ...props }) });
|
|
15636
15697
|
}
|
|
15637
15698
|
Deferred.displayName = name;
|
|
15638
15699
|
return Object.assign(Deferred, { preload });
|
|
@@ -15678,10 +15739,10 @@ var TextInputDialog2 = deferredDialog(
|
|
|
15678
15739
|
// src/clipboard-fallback-host.tsx
|
|
15679
15740
|
var import_clipboard_fallback_opener = require("@ai-matrx/kit/clipboard-fallback-opener");
|
|
15680
15741
|
var import_opener_react2 = require("@ai-matrx/kit/opener-react");
|
|
15681
|
-
var
|
|
15742
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
15682
15743
|
function ClipboardFallbackHost() {
|
|
15683
15744
|
const { open, shown, settle } = (0, import_opener_react2.useOpenerHost)(import_clipboard_fallback_opener.clipboardFallbackOpener);
|
|
15684
|
-
return /* @__PURE__ */ (0,
|
|
15745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
15685
15746
|
ClipboardFallbackDialog2,
|
|
15686
15747
|
{
|
|
15687
15748
|
open,
|
|
@@ -15698,7 +15759,7 @@ function ClipboardFallbackHost() {
|
|
|
15698
15759
|
// src/floating-sheet.tsx
|
|
15699
15760
|
var import_react21 = require("react");
|
|
15700
15761
|
init_motion();
|
|
15701
|
-
var
|
|
15762
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
15702
15763
|
var FloatingSheet = ({
|
|
15703
15764
|
children,
|
|
15704
15765
|
isOpen,
|
|
@@ -16004,8 +16065,8 @@ var FloatingSheet = ({
|
|
|
16004
16065
|
const bottomPadding = showFooter ? "" : "pb-safe";
|
|
16005
16066
|
return `${basePadding} ${bottomPadding}`.trim();
|
|
16006
16067
|
};
|
|
16007
|
-
return /* @__PURE__ */ (0,
|
|
16008
|
-
isOpen && hasBackdrop && /* @__PURE__ */ (0,
|
|
16068
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
|
|
16069
|
+
isOpen && hasBackdrop && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
16009
16070
|
"div",
|
|
16010
16071
|
{
|
|
16011
16072
|
className: `fixed ${respectHeader ? "left-0 right-0 top-10 bottom-0" : "inset-0"} bg-[var(--matrx-overlay-scrim-soft)] z-40 ${isMobile ? "backdrop-blur-sm" : ""} transition-opacity ${durationClass} ${backdropClassName}`,
|
|
@@ -16014,7 +16075,7 @@ var FloatingSheet = ({
|
|
|
16014
16075
|
"data-testid": "floating-sheet-backdrop"
|
|
16015
16076
|
}
|
|
16016
16077
|
),
|
|
16017
|
-
/* @__PURE__ */ (0,
|
|
16078
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
16018
16079
|
"div",
|
|
16019
16080
|
{
|
|
16020
16081
|
ref: sheetRef,
|
|
@@ -16026,25 +16087,25 @@ var FloatingSheet = ({
|
|
|
16026
16087
|
"aria-labelledby": "sheet-title",
|
|
16027
16088
|
tabIndex: -1,
|
|
16028
16089
|
"data-testid": "floating-sheet",
|
|
16029
|
-
children: /* @__PURE__ */ (0,
|
|
16030
|
-
showHeader && /* @__PURE__ */ (0,
|
|
16090
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex flex-col h-full overflow-hidden", children: [
|
|
16091
|
+
showHeader && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
16031
16092
|
"div",
|
|
16032
16093
|
{
|
|
16033
16094
|
className: `flex items-center justify-between border-b border-border ${getMobileHeaderClass()} ${headerClassName}`,
|
|
16034
16095
|
children: [
|
|
16035
|
-
/* @__PURE__ */ (0,
|
|
16036
|
-
typeof title === "string" ? /* @__PURE__ */ (0,
|
|
16037
|
-
description && (typeof description === "string" ? /* @__PURE__ */ (0,
|
|
16096
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
16097
|
+
typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("h2", { id: "sheet-title", className: `${isMobile ? "text-xl" : "text-lg"} font-semibold text-foreground`, children: title }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { id: "sheet-title", children: title }),
|
|
16098
|
+
description && (typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("p", { className: "type-body text-muted-foreground mt-1", children: description }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "mt-1", children: description }))
|
|
16038
16099
|
] }),
|
|
16039
|
-
headerContent && /* @__PURE__ */ (0,
|
|
16040
|
-
showCloseButton && /* @__PURE__ */ (0,
|
|
16100
|
+
headerContent && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "ml-4 flex items-center", children: headerContent }),
|
|
16101
|
+
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
16041
16102
|
"button",
|
|
16042
16103
|
{
|
|
16043
16104
|
onClick: onClose,
|
|
16044
16105
|
className: `ml-4 rounded-full ${isMobile ? "p-2" : "p-1.5"} text-muted-foreground hover:text-foreground bg-transparent hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring`,
|
|
16045
16106
|
"aria-label": "Close",
|
|
16046
16107
|
"data-testid": "floating-sheet-close",
|
|
16047
|
-
children: closeButton || /* @__PURE__ */ (0,
|
|
16108
|
+
children: closeButton || /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
16048
16109
|
"svg",
|
|
16049
16110
|
{
|
|
16050
16111
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -16056,8 +16117,8 @@ var FloatingSheet = ({
|
|
|
16056
16117
|
strokeLinecap: "round",
|
|
16057
16118
|
strokeLinejoin: "round",
|
|
16058
16119
|
children: [
|
|
16059
|
-
/* @__PURE__ */ (0,
|
|
16060
|
-
/* @__PURE__ */ (0,
|
|
16120
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
16121
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
16061
16122
|
]
|
|
16062
16123
|
}
|
|
16063
16124
|
)
|
|
@@ -16066,7 +16127,7 @@ var FloatingSheet = ({
|
|
|
16066
16127
|
]
|
|
16067
16128
|
}
|
|
16068
16129
|
),
|
|
16069
|
-
/* @__PURE__ */ (0,
|
|
16130
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
16070
16131
|
"div",
|
|
16071
16132
|
{
|
|
16072
16133
|
ref: contentRef,
|
|
@@ -16075,7 +16136,7 @@ var FloatingSheet = ({
|
|
|
16075
16136
|
children
|
|
16076
16137
|
}
|
|
16077
16138
|
),
|
|
16078
|
-
showFooter && /* @__PURE__ */ (0,
|
|
16139
|
+
showFooter && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
16079
16140
|
"div",
|
|
16080
16141
|
{
|
|
16081
16142
|
className: `border-t border-border ${getMobileFooterClass()} ${footerClassName}`,
|
|
@@ -16090,12 +16151,12 @@ var FloatingSheet = ({
|
|
|
16090
16151
|
};
|
|
16091
16152
|
|
|
16092
16153
|
// src/simple-tooltip.tsx
|
|
16093
|
-
var
|
|
16154
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
16094
16155
|
var SimpleTooltip = ({ children, text }) => {
|
|
16095
16156
|
if (!text) return children;
|
|
16096
|
-
return /* @__PURE__ */ (0,
|
|
16097
|
-
/* @__PURE__ */ (0,
|
|
16098
|
-
/* @__PURE__ */ (0,
|
|
16157
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Tooltip, { children: [
|
|
16158
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(TooltipTrigger, { asChild: true, children }),
|
|
16159
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("p", { children: text }) })
|
|
16099
16160
|
] });
|
|
16100
16161
|
};
|
|
16101
16162
|
var AdvancedTooltip = ({
|
|
@@ -16118,16 +16179,16 @@ var AdvancedTooltip = ({
|
|
|
16118
16179
|
success: "bg-success text-success-foreground"
|
|
16119
16180
|
};
|
|
16120
16181
|
const baseContentClasses = "rounded-md px-3 py-1.5 text-sm shadow-md";
|
|
16121
|
-
return /* @__PURE__ */ (0,
|
|
16122
|
-
/* @__PURE__ */ (0,
|
|
16123
|
-
/* @__PURE__ */ (0,
|
|
16182
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Tooltip, { delayDuration, children: [
|
|
16183
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(TooltipTrigger, { asChild: true, className, children }),
|
|
16184
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
16124
16185
|
TooltipContent,
|
|
16125
16186
|
{
|
|
16126
16187
|
side,
|
|
16127
16188
|
align,
|
|
16128
16189
|
sideOffset,
|
|
16129
16190
|
className: `${baseContentClasses} ${variantStyles[variant]} ${contentClassName}`,
|
|
16130
|
-
children: /* @__PURE__ */ (0,
|
|
16191
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("p", { className: "leading-none whitespace-pre-wrap", children: text })
|
|
16131
16192
|
}
|
|
16132
16193
|
)
|
|
16133
16194
|
] });
|
|
@@ -16137,7 +16198,7 @@ var AdvancedTooltip = ({
|
|
|
16137
16198
|
var import_react22 = __toESM(require("react"), 1);
|
|
16138
16199
|
init_cn();
|
|
16139
16200
|
init_icons();
|
|
16140
|
-
var
|
|
16201
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
16141
16202
|
var animationStyles = `
|
|
16142
16203
|
@keyframes pulseWave {
|
|
16143
16204
|
0% { opacity: 0.3; transform: scale(0.8); }
|
|
@@ -16214,19 +16275,19 @@ var LoadingSpinner = ({
|
|
|
16214
16275
|
}
|
|
16215
16276
|
};
|
|
16216
16277
|
const sizeClasses2 = getSizeClasses();
|
|
16217
|
-
const renderDots = () => /* @__PURE__ */ (0,
|
|
16218
|
-
/* @__PURE__ */ (0,
|
|
16219
|
-
/* @__PURE__ */ (0,
|
|
16220
|
-
/* @__PURE__ */ (0,
|
|
16278
|
+
const renderDots = () => /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: cn("flex items-center", sizeClasses2.container), children: [
|
|
16279
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }),
|
|
16280
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-2") }),
|
|
16281
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-3") })
|
|
16221
16282
|
] });
|
|
16222
|
-
const renderBars = () => /* @__PURE__ */ (0,
|
|
16223
|
-
/* @__PURE__ */ (0,
|
|
16224
|
-
/* @__PURE__ */ (0,
|
|
16225
|
-
/* @__PURE__ */ (0,
|
|
16226
|
-
/* @__PURE__ */ (0,
|
|
16283
|
+
const renderBars = () => /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: cn("flex items-center", sizeClasses2.container), children: [
|
|
16284
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-1") }),
|
|
16285
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-2") }),
|
|
16286
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-3") }),
|
|
16287
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-4") })
|
|
16227
16288
|
] });
|
|
16228
|
-
const renderBrain = () => /* @__PURE__ */ (0,
|
|
16229
|
-
/* @__PURE__ */ (0,
|
|
16289
|
+
const renderBrain = () => /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "relative w-6 h-6 flex items-center justify-center", children: [
|
|
16290
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
16230
16291
|
"svg",
|
|
16231
16292
|
{
|
|
16232
16293
|
width: "24",
|
|
@@ -16234,7 +16295,7 @@ var LoadingSpinner = ({
|
|
|
16234
16295
|
viewBox: "0 0 24 24",
|
|
16235
16296
|
fill: "none",
|
|
16236
16297
|
className: "w-5 h-5 text-primary dark:text-primary-foreground",
|
|
16237
|
-
children: /* @__PURE__ */ (0,
|
|
16298
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
|
|
16238
16299
|
"path",
|
|
16239
16300
|
{
|
|
16240
16301
|
d: "M12 4C9.5 4 7.5 5.5 7.5 8C7.5 9 7.5 9.5 7 10.5C6.5 11.5 6 12 6 13.5C6 15.5 7.5 17 9.5 17C10.5 17 11 16.5 12 16.5C13 16.5 13.5 17 14.5 17C16.5 17 18 15.5 18 13.5C18 12 17.5 11.5 17 10.5C16.5 9.5 16.5 9 16.5 8C16.5 5.5 14.5 4 12 4Z",
|
|
@@ -16245,44 +16306,44 @@ var LoadingSpinner = ({
|
|
|
16245
16306
|
)
|
|
16246
16307
|
}
|
|
16247
16308
|
) }),
|
|
16248
|
-
/* @__PURE__ */ (0,
|
|
16249
|
-
/* @__PURE__ */ (0,
|
|
16250
|
-
/* @__PURE__ */ (0,
|
|
16251
|
-
/* @__PURE__ */ (0,
|
|
16252
|
-
/* @__PURE__ */ (0,
|
|
16253
|
-
/* @__PURE__ */ (0,
|
|
16309
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "absolute inset-0", children: [
|
|
16310
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[8px] top-[10px] loading-neuron-1" }),
|
|
16311
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[12px] top-[8px] loading-neuron-2" }),
|
|
16312
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[16px] top-[10px] loading-neuron-3" }),
|
|
16313
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[10px] top-[14px] loading-neuron-4" }),
|
|
16314
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[14px] top-[14px] loading-neuron-5" })
|
|
16254
16315
|
] }),
|
|
16255
|
-
/* @__PURE__ */ (0,
|
|
16256
|
-
/* @__PURE__ */ (0,
|
|
16316
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-1" }),
|
|
16317
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-2" })
|
|
16257
16318
|
] });
|
|
16258
|
-
const renderMinimal = () => /* @__PURE__ */ (0,
|
|
16259
|
-
const renderWorkflow = () => /* @__PURE__ */ (0,
|
|
16260
|
-
/* @__PURE__ */ (0,
|
|
16261
|
-
/* @__PURE__ */ (0,
|
|
16262
|
-
/* @__PURE__ */ (0,
|
|
16263
|
-
/* @__PURE__ */ (0,
|
|
16319
|
+
const renderMinimal = () => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "relative", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }) });
|
|
16320
|
+
const renderWorkflow = () => /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex flex-col items-center justify-center space-y-6", children: [
|
|
16321
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "relative", children: [
|
|
16322
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-16 h-16 bg-primary/10 dark:bg-primary-foreground/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(WorkflowIcon, { className: "w-8 h-8 text-primary dark:text-primary-foreground" }) }),
|
|
16323
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute -top-1 -right-1 w-6 h-6 bg-primary dark:bg-primary-foreground rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(PlusIcon, { className: "w-3 h-3 text-primary-foreground dark:text-primary" }) }),
|
|
16324
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute inset-0 border-2 border-transparent border-t-primary dark:border-t-primary-foreground rounded-full matrx-spin" })
|
|
16264
16325
|
] }),
|
|
16265
|
-
/* @__PURE__ */ (0,
|
|
16266
|
-
/* @__PURE__ */ (0,
|
|
16267
|
-
/* @__PURE__ */ (0,
|
|
16326
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "text-center space-y-2", children: [
|
|
16327
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("h2", { className: "text-lg font-semibold text-foreground flex items-center gap-2 justify-center", children: [
|
|
16328
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Loader2Icon, { className: "w-4 h-4 matrx-spin" }),
|
|
16268
16329
|
title || "Loading Workflow"
|
|
16269
16330
|
] }),
|
|
16270
|
-
/* @__PURE__ */ (0,
|
|
16331
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("p", { className: "type-body text-muted-foreground max-w-sm", children: subtitle || message || "Setting up your workflow..." })
|
|
16271
16332
|
] }),
|
|
16272
|
-
showProgressSteps && /* @__PURE__ */ (0,
|
|
16273
|
-
/* @__PURE__ */ (0,
|
|
16274
|
-
/* @__PURE__ */ (0,
|
|
16275
|
-
/* @__PURE__ */ (0,
|
|
16333
|
+
showProgressSteps && /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-2 type-secondary text-muted-foreground", children: [
|
|
16334
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
16335
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-2 h-2 bg-primary dark:bg-primary-foreground rounded-full matrx-pulse" }),
|
|
16336
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { children: "Loading" })
|
|
16276
16337
|
] }),
|
|
16277
|
-
/* @__PURE__ */ (0,
|
|
16278
|
-
/* @__PURE__ */ (0,
|
|
16279
|
-
/* @__PURE__ */ (0,
|
|
16280
|
-
/* @__PURE__ */ (0,
|
|
16338
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-4 h-px bg-muted-foreground/30" }),
|
|
16339
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
16340
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
|
|
16341
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { children: "Initializing" })
|
|
16281
16342
|
] }),
|
|
16282
|
-
/* @__PURE__ */ (0,
|
|
16283
|
-
/* @__PURE__ */ (0,
|
|
16284
|
-
/* @__PURE__ */ (0,
|
|
16285
|
-
/* @__PURE__ */ (0,
|
|
16343
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-4 h-px bg-muted-foreground/30" }),
|
|
16344
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
16345
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
|
|
16346
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { children: "Ready" })
|
|
16286
16347
|
] })
|
|
16287
16348
|
] })
|
|
16288
16349
|
] });
|
|
@@ -16311,13 +16372,13 @@ var LoadingSpinner = ({
|
|
|
16311
16372
|
}
|
|
16312
16373
|
};
|
|
16313
16374
|
if (variant === "workflow" && (fullscreen || overlay)) {
|
|
16314
|
-
return /* @__PURE__ */ (0,
|
|
16375
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: cn(
|
|
16315
16376
|
"flex items-center justify-center bg-background",
|
|
16316
16377
|
fullscreen && "h-dvh w-full",
|
|
16317
16378
|
className
|
|
16318
16379
|
), "aria-busy": "true", children: [
|
|
16319
|
-
overlay && /* @__PURE__ */ (0,
|
|
16320
|
-
/* @__PURE__ */ (0,
|
|
16380
|
+
overlay && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: "absolute inset-0 bg-background/80 backdrop-blur-sm z-50" }),
|
|
16381
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn(
|
|
16321
16382
|
"flex flex-col items-center justify-center",
|
|
16322
16383
|
overlay && "relative z-50"
|
|
16323
16384
|
), children: renderWorkflow() })
|
|
@@ -16325,22 +16386,22 @@ var LoadingSpinner = ({
|
|
|
16325
16386
|
}
|
|
16326
16387
|
return (
|
|
16327
16388
|
// aria-busy: a spinner is a stand-in, and whatever measures a settled layout waits for it.
|
|
16328
|
-
/* @__PURE__ */ (0,
|
|
16389
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { className: cn("flex items-center", className), "aria-busy": "true", children: variant === "workflow" ? renderWorkflow() : /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_jsx_runtime112.Fragment, { children: [
|
|
16329
16390
|
renderSpinner(),
|
|
16330
|
-
showMessage && /* @__PURE__ */ (0,
|
|
16391
|
+
showMessage && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: cn("ml-3 text-muted-foreground", sizeClasses2.text), children: message || getDefaultMessage() })
|
|
16331
16392
|
] }) })
|
|
16332
16393
|
);
|
|
16333
16394
|
};
|
|
16334
16395
|
|
|
16335
16396
|
// src/mini-loader.tsx
|
|
16336
|
-
var
|
|
16397
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
16337
16398
|
function MatrxMiniLoader() {
|
|
16338
|
-
return /* @__PURE__ */ (0,
|
|
16399
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(LoadingSpinner, { variant: "dots", message: "Initializing Matrx...", size: "md" });
|
|
16339
16400
|
}
|
|
16340
16401
|
|
|
16341
16402
|
// src/suspense-loader.tsx
|
|
16342
16403
|
init_icons();
|
|
16343
|
-
var
|
|
16404
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
16344
16405
|
var sizeClasses = {
|
|
16345
16406
|
xs: "h-3 w-3",
|
|
16346
16407
|
sm: "h-4 w-4",
|
|
@@ -16353,7 +16414,7 @@ function SuspenseLoader({
|
|
|
16353
16414
|
message,
|
|
16354
16415
|
className = ""
|
|
16355
16416
|
}) {
|
|
16356
|
-
const spinner = /* @__PURE__ */ (0,
|
|
16417
|
+
const spinner = /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
16357
16418
|
Loader2Icon,
|
|
16358
16419
|
{
|
|
16359
16420
|
className: `${sizeClasses[size]} matrx-spin text-disabled-foreground ${className}`,
|
|
@@ -16361,7 +16422,7 @@ function SuspenseLoader({
|
|
|
16361
16422
|
"aria-label": message ? void 0 : "Loading"
|
|
16362
16423
|
}
|
|
16363
16424
|
);
|
|
16364
|
-
const content = message ? /* @__PURE__ */ (0,
|
|
16425
|
+
const content = message ? /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
|
|
16365
16426
|
"span",
|
|
16366
16427
|
{
|
|
16367
16428
|
className: "inline-flex items-center gap-2",
|
|
@@ -16369,12 +16430,12 @@ function SuspenseLoader({
|
|
|
16369
16430
|
"aria-live": "polite",
|
|
16370
16431
|
children: [
|
|
16371
16432
|
spinner,
|
|
16372
|
-
/* @__PURE__ */ (0,
|
|
16433
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)("span", { children: message })
|
|
16373
16434
|
]
|
|
16374
16435
|
}
|
|
16375
16436
|
) : spinner;
|
|
16376
16437
|
if (centered) {
|
|
16377
|
-
return /* @__PURE__ */ (0,
|
|
16438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { className: "flex items-center justify-center w-full h-full min-h-[2rem]", children: content });
|
|
16378
16439
|
}
|
|
16379
16440
|
return content;
|
|
16380
16441
|
}
|
|
@@ -16382,7 +16443,7 @@ function SuspenseLoader({
|
|
|
16382
16443
|
// src/shimmer-text.tsx
|
|
16383
16444
|
init_cn();
|
|
16384
16445
|
var import_react23 = require("react");
|
|
16385
|
-
var
|
|
16446
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
16386
16447
|
var SHIMMER_STYLE = {
|
|
16387
16448
|
backgroundImage: "linear-gradient(90deg, color-mix(in srgb, currentColor 18%, transparent) 0%, currentColor 50%, color-mix(in srgb, currentColor 18%, transparent) 100%)",
|
|
16388
16449
|
backgroundSize: "200% 100%",
|
|
@@ -16410,7 +16471,7 @@ function useShimmerSweep(durationMs = 2e3) {
|
|
|
16410
16471
|
}
|
|
16411
16472
|
function ShimmerText({ text, className }) {
|
|
16412
16473
|
const ref = useShimmerSweep();
|
|
16413
|
-
return /* @__PURE__ */ (0,
|
|
16474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
16414
16475
|
"span",
|
|
16415
16476
|
{
|
|
16416
16477
|
ref,
|
|
@@ -16474,7 +16535,7 @@ var import_react_slot8 = require("@radix-ui/react-slot");
|
|
|
16474
16535
|
var React79 = __toESM(require("react"), 1);
|
|
16475
16536
|
init_icons();
|
|
16476
16537
|
init_motion();
|
|
16477
|
-
var
|
|
16538
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
16478
16539
|
var FIRST_USE_HINT_TITLE_MAX = 32;
|
|
16479
16540
|
var FIRST_USE_HINT_DETAIL_MAX = 60;
|
|
16480
16541
|
var FirstUseHintContext = React79.createContext(null);
|
|
@@ -16482,7 +16543,7 @@ function FirstUseHintProvider({
|
|
|
16482
16543
|
store,
|
|
16483
16544
|
children
|
|
16484
16545
|
}) {
|
|
16485
|
-
return /* @__PURE__ */ (0,
|
|
16546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(FirstUseHintContext.Provider, { value: store, children });
|
|
16486
16547
|
}
|
|
16487
16548
|
var sessionLearned = /* @__PURE__ */ new Set();
|
|
16488
16549
|
var warnedNoProvider = false;
|
|
@@ -16565,9 +16626,9 @@ function FirstUseHint({
|
|
|
16565
16626
|
}),
|
|
16566
16627
|
[target]
|
|
16567
16628
|
);
|
|
16568
|
-
return /* @__PURE__ */ (0,
|
|
16569
|
-
pulse ? /* @__PURE__ */ (0,
|
|
16570
|
-
/* @__PURE__ */ (0,
|
|
16629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Popover, { open, children: [
|
|
16630
|
+
pulse ? /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_jsx_runtime116.Fragment, { children: [
|
|
16631
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
16571
16632
|
import_react_slot8.Slot,
|
|
16572
16633
|
{
|
|
16573
16634
|
ref: hostRef,
|
|
@@ -16576,8 +16637,8 @@ function FirstUseHint({
|
|
|
16576
16637
|
children
|
|
16577
16638
|
}
|
|
16578
16639
|
),
|
|
16579
|
-
/* @__PURE__ */ (0,
|
|
16580
|
-
] }) : /* @__PURE__ */ (0,
|
|
16640
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(PopoverAnchor, { virtualRef })
|
|
16641
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
16581
16642
|
PopoverAnchor,
|
|
16582
16643
|
{
|
|
16583
16644
|
asChild: true,
|
|
@@ -16589,7 +16650,7 @@ function FirstUseHint({
|
|
|
16589
16650
|
children
|
|
16590
16651
|
}
|
|
16591
16652
|
),
|
|
16592
|
-
/* @__PURE__ */ (0,
|
|
16653
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
16593
16654
|
PopoverContent,
|
|
16594
16655
|
{
|
|
16595
16656
|
side,
|
|
@@ -16606,17 +16667,17 @@ function FirstUseHint({
|
|
|
16606
16667
|
onInteractOutside: (e) => e.preventDefault(),
|
|
16607
16668
|
onEscapeKeyDown: learn,
|
|
16608
16669
|
children: [
|
|
16609
|
-
/* @__PURE__ */ (0,
|
|
16610
|
-
/* @__PURE__ */ (0,
|
|
16611
|
-
/* @__PURE__ */ (0,
|
|
16670
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center gap-1 py-0.5 pl-3 pr-0.5", children: [
|
|
16671
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex min-w-0 flex-col py-1", children: [
|
|
16672
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "type-secondary truncate font-medium text-foreground", children: title }),
|
|
16612
16673
|
detail ? (
|
|
16613
16674
|
// Two lines at most: on a 375px phone a full 60-character line can wrap once.
|
|
16614
|
-
/* @__PURE__ */ (0,
|
|
16675
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "type-secondary line-clamp-2 text-muted-foreground", children: detail })
|
|
16615
16676
|
) : null
|
|
16616
16677
|
] }),
|
|
16617
|
-
/* @__PURE__ */ (0,
|
|
16678
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(IconButton, { icon: XIcon, "aria-label": "Dismiss tip", className: "shrink-0", onClick: learn })
|
|
16618
16679
|
] }),
|
|
16619
|
-
/* @__PURE__ */ (0,
|
|
16680
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(PopoverPrimitive3.Arrow, { className: "fill-popover", width: 10, height: 5 })
|
|
16620
16681
|
]
|
|
16621
16682
|
}
|
|
16622
16683
|
)
|
|
@@ -16628,7 +16689,7 @@ var React80 = __toESM(require("react"), 1);
|
|
|
16628
16689
|
init_cn();
|
|
16629
16690
|
init_controls();
|
|
16630
16691
|
init_icons();
|
|
16631
|
-
var
|
|
16692
|
+
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
16632
16693
|
var SKIP = "skip";
|
|
16633
16694
|
function unansweredQuestions(preview, answers) {
|
|
16634
16695
|
return preview.questions.filter((q) => !answers[q.id]);
|
|
@@ -16646,11 +16707,11 @@ function ItemDoor({ item, onOpenItem }) {
|
|
|
16646
16707
|
const renderItem = React80.useContext(RenderItemContext);
|
|
16647
16708
|
const hosted = renderItem ? renderItem(item) : null;
|
|
16648
16709
|
if (hosted != null) {
|
|
16649
|
-
return /* @__PURE__ */ (0,
|
|
16710
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center", children: hosted });
|
|
16650
16711
|
}
|
|
16651
16712
|
const title = item.title?.trim() || "Untitled";
|
|
16652
|
-
return /* @__PURE__ */ (0,
|
|
16653
|
-
/* @__PURE__ */ (0,
|
|
16713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center gap-0.5", children: [
|
|
16714
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
16654
16715
|
Button2,
|
|
16655
16716
|
{
|
|
16656
16717
|
type: "button",
|
|
@@ -16661,12 +16722,12 @@ function ItemDoor({ item, onOpenItem }) {
|
|
|
16661
16722
|
children: title
|
|
16662
16723
|
}
|
|
16663
16724
|
),
|
|
16664
|
-
/* @__PURE__ */ (0,
|
|
16725
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
16665
16726
|
Button2,
|
|
16666
16727
|
{
|
|
16667
16728
|
type: "button",
|
|
16668
16729
|
variant: "quiet",
|
|
16669
|
-
icon: /* @__PURE__ */ (0,
|
|
16730
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ExternalLinkIcon, {}),
|
|
16670
16731
|
"data-clickable": "",
|
|
16671
16732
|
"aria-label": `Open ${title} in a new tab`,
|
|
16672
16733
|
className: "shrink-0",
|
|
@@ -16678,9 +16739,9 @@ function ItemDoor({ item, onOpenItem }) {
|
|
|
16678
16739
|
function Doors({ items, total, onOpenItem }) {
|
|
16679
16740
|
if (!items.length) return null;
|
|
16680
16741
|
const more = (total ?? items.length) - items.length;
|
|
16681
|
-
return /* @__PURE__ */ (0,
|
|
16682
|
-
items.map((item) => /* @__PURE__ */ (0,
|
|
16683
|
-
more > 0 ? /* @__PURE__ */ (0,
|
|
16742
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
16743
|
+
items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ItemDoor, { item, onOpenItem }, `${item.table ?? item.type}:${item.id}`)),
|
|
16744
|
+
more > 0 ? /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("span", { className: "text-xs text-muted-foreground", children: [
|
|
16684
16745
|
"+",
|
|
16685
16746
|
more,
|
|
16686
16747
|
" more"
|
|
@@ -16688,17 +16749,17 @@ function Doors({ items, total, onOpenItem }) {
|
|
|
16688
16749
|
] });
|
|
16689
16750
|
}
|
|
16690
16751
|
function Row({ title, meta, children }) {
|
|
16691
|
-
return /* @__PURE__ */ (0,
|
|
16692
|
-
/* @__PURE__ */ (0,
|
|
16693
|
-
/* @__PURE__ */ (0,
|
|
16694
|
-
meta ? /* @__PURE__ */ (0,
|
|
16752
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { "data-change-row": "", className: "flex flex-col gap-1 px-3 py-2", children: [
|
|
16753
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex items-baseline justify-between gap-3", children: [
|
|
16754
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "min-w-0 text-sm text-foreground", children: title }),
|
|
16755
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "shrink-0 text-xs text-muted-foreground", children: meta }) : null
|
|
16695
16756
|
] }),
|
|
16696
16757
|
children
|
|
16697
16758
|
] });
|
|
16698
16759
|
}
|
|
16699
16760
|
function Alarm({ warning, onOpenItem }) {
|
|
16700
16761
|
const items = [...warning.items ?? [], ...warning.users ?? []];
|
|
16701
|
-
return /* @__PURE__ */ (0,
|
|
16762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
|
|
16702
16763
|
"div",
|
|
16703
16764
|
{
|
|
16704
16765
|
role: "alert",
|
|
@@ -16706,8 +16767,8 @@ function Alarm({ warning, onOpenItem }) {
|
|
|
16706
16767
|
"data-severity": warning.severity,
|
|
16707
16768
|
className: "flex flex-col gap-1.5 rounded-group border border-destructive bg-destructive/10 px-3 py-2",
|
|
16708
16769
|
children: [
|
|
16709
|
-
/* @__PURE__ */ (0,
|
|
16710
|
-
/* @__PURE__ */ (0,
|
|
16770
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "text-sm font-medium text-foreground", children: warning.message }),
|
|
16771
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items, total: warning.count ?? items.length, onOpenItem })
|
|
16711
16772
|
]
|
|
16712
16773
|
}
|
|
16713
16774
|
);
|
|
@@ -16724,10 +16785,10 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
|
|
|
16724
16785
|
const suggested = !question.suggested ? null : yes && question.suggested === yes.value ? "yes" : noOption && question.suggested === noOption.value ? "no" : "other";
|
|
16725
16786
|
const wayOut = rest.map((o) => ({ value: o.value, label: o.label }));
|
|
16726
16787
|
const chosen = [...question.options, ...question.way_out].find((o) => o.value === answer);
|
|
16727
|
-
return /* @__PURE__ */ (0,
|
|
16728
|
-
/* @__PURE__ */ (0,
|
|
16729
|
-
/* @__PURE__ */ (0,
|
|
16730
|
-
/* @__PURE__ */ (0,
|
|
16788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { "data-change-question": question.id, "data-kind": question.kind, className: "flex flex-col gap-1.5 px-3 py-2", children: [
|
|
16789
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "text-sm text-foreground", children: question.prompt }),
|
|
16790
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items: question.items.sample, total: question.items.count, onOpenItem }),
|
|
16791
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
16731
16792
|
DecisionControl,
|
|
16732
16793
|
{
|
|
16733
16794
|
value,
|
|
@@ -16749,7 +16810,7 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
|
|
|
16749
16810
|
"aria-label": question.prompt
|
|
16750
16811
|
}
|
|
16751
16812
|
),
|
|
16752
|
-
chosen?.consequence ? /* @__PURE__ */ (0,
|
|
16813
|
+
chosen?.consequence ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "text-xs text-muted-foreground", children: chosen.consequence }) : null
|
|
16753
16814
|
] });
|
|
16754
16815
|
}
|
|
16755
16816
|
var VERB_WORDS = {
|
|
@@ -16758,7 +16819,7 @@ var VERB_WORDS = {
|
|
|
16758
16819
|
move: { goes: "Moves with it", commit: "Move" }
|
|
16759
16820
|
};
|
|
16760
16821
|
function ReviewChanges({ renderItem, ...props }) {
|
|
16761
|
-
return /* @__PURE__ */ (0,
|
|
16822
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(RenderItemContext.Provider, { value: renderItem, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ReviewChangesBody, { ...props }) });
|
|
16762
16823
|
}
|
|
16763
16824
|
function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, onCancel, busy, commitLabel, className }) {
|
|
16764
16825
|
const words = VERB_WORDS[preview.verb] ?? { goes: "Changes with it", commit: "Apply" };
|
|
@@ -16772,23 +16833,23 @@ function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, o
|
|
|
16772
16833
|
const suggestible = pending.filter((q) => q.suggested);
|
|
16773
16834
|
const ready = canCommitChanges(preview, answers);
|
|
16774
16835
|
const target = preview.target_organization?.name;
|
|
16775
|
-
return /* @__PURE__ */ (0,
|
|
16776
|
-
alarms.map((w, i) => /* @__PURE__ */ (0,
|
|
16777
|
-
/* @__PURE__ */ (0,
|
|
16778
|
-
moving.length ? /* @__PURE__ */ (0,
|
|
16779
|
-
kept.length || staying.length ? /* @__PURE__ */ (0,
|
|
16780
|
-
kept.map((w, i) => /* @__PURE__ */ (0,
|
|
16781
|
-
staying.map((g) => /* @__PURE__ */ (0,
|
|
16836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { "data-review-changes": "", "data-verb": preview.verb, className: cn("flex min-h-0 flex-col gap-3", className), children: [
|
|
16837
|
+
alarms.map((w, i) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Alarm, { warning: w, onOpenItem }, `${w.kind}:${i}`)),
|
|
16838
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(RowGroup, { title: preview.verb === "move" && target ? `Moving to ${target}` : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Row, { title: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items: preview.roots, onOpenItem }) }) }),
|
|
16839
|
+
moving.length ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(RowGroup, { title: words.goes, children: moving.map((g) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Row, { title: g.noun, meta: `${g.count_is_estimate ? "about " : ""}${g.count}`, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `${g.rule_id ?? "root"}:${g.table ?? g.type}`)) }) : null,
|
|
16840
|
+
kept.length || staying.length ? /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(RowGroup, { title: "Stays where it is", children: [
|
|
16841
|
+
kept.map((w, i) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Row, { title: w.message ?? w.noun ?? "Used elsewhere", meta: w.count ?? void 0, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items: w.items ?? [], total: w.count, onOpenItem }) }, `kept:${i}`)),
|
|
16842
|
+
staying.map((g) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Row, { title: g.noun, meta: g.count, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `stay:${g.table ?? g.type}`))
|
|
16782
16843
|
] }) : null,
|
|
16783
|
-
preview.questions.length ? /* @__PURE__ */ (0,
|
|
16784
|
-
auto || unchecked ? /* @__PURE__ */ (0,
|
|
16785
|
-
auto ? /* @__PURE__ */ (0,
|
|
16786
|
-
unchecked ? /* @__PURE__ */ (0,
|
|
16844
|
+
preview.questions.length ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(RowGroup, { title: "Decide", children: preview.questions.map((q) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Question, { question: q, answer: answers[q.id], onAnswer, onOpenItem, disabled: busy }, q.id)) }) : null,
|
|
16845
|
+
auto || unchecked ? /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex flex-wrap gap-2 px-1", children: [
|
|
16846
|
+
auto ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Badge2, { tone: "neutral", children: `${auto.count ?? ""} decided automatically`.trim() }) : null,
|
|
16847
|
+
unchecked ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Badge2, { tone: "neutral", children: "Links inside text not checked" }) : null
|
|
16787
16848
|
] }) : null,
|
|
16788
|
-
/* @__PURE__ */ (0,
|
|
16789
|
-
suggestible.length ? /* @__PURE__ */ (0,
|
|
16790
|
-
/* @__PURE__ */ (0,
|
|
16791
|
-
/* @__PURE__ */ (0,
|
|
16849
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { "data-review-changes-actions": "", className: "flex flex-wrap items-center justify-end gap-2", children: [
|
|
16850
|
+
suggestible.length ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Button2, { variant: "quiet", disabled: busy, onClick: () => suggestible.forEach((q) => onAnswer(q.id, q.suggested)), children: "Accept suggestions" }) : null,
|
|
16851
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Button2, { variant: "outline", disabled: busy, onClick: onCancel, children: "Cancel" }),
|
|
16852
|
+
/* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Button2, { variant: preview.verb === "delete" ? "danger" : "primary", disabled: busy || !ready, onClick: onCommit, children: commitLabel ?? words.commit })
|
|
16792
16853
|
] })
|
|
16793
16854
|
] });
|
|
16794
16855
|
}
|
|
@@ -16956,7 +17017,7 @@ function insertLines(boxes, id, line, col, cols) {
|
|
|
16956
17017
|
}
|
|
16957
17018
|
|
|
16958
17019
|
// src/grid-canvas/grid-canvas.tsx
|
|
16959
|
-
var
|
|
17020
|
+
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
16960
17021
|
var GRID_CANVAS_COLUMNS = { lg: 12, sm: 4 };
|
|
16961
17022
|
var GRID_CANVAS_PHONE_MAX_PX = 640;
|
|
16962
17023
|
var GRID_CANVAS_ROW_PX = 24;
|
|
@@ -17131,7 +17192,7 @@ function GridCanvas({
|
|
|
17131
17192
|
};
|
|
17132
17193
|
const rows = { lg: gridRows(grids.lg), sm: gridRows(grids.sm) };
|
|
17133
17194
|
const active = preview ? preview.boxes.find((b) => b.id === preview.id) : void 0;
|
|
17134
|
-
return /* @__PURE__ */ (0,
|
|
17195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
|
|
17135
17196
|
"div",
|
|
17136
17197
|
{
|
|
17137
17198
|
ref: rootRef,
|
|
@@ -17151,8 +17212,8 @@ function GridCanvas({
|
|
|
17151
17212
|
"--grid-rows-sm": preview?.breakpoint === "sm" ? rows.sm + 1 : rows.sm
|
|
17152
17213
|
},
|
|
17153
17214
|
children: [
|
|
17154
|
-
/* @__PURE__ */ (0,
|
|
17155
|
-
active && preview ? /* @__PURE__ */ (0,
|
|
17215
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "matrx-grid-canvas-field", children: [
|
|
17216
|
+
active && preview ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "matrx-grid-canvas-placeholder", "aria-hidden": true, style: placementVars(active, active) }) : null,
|
|
17156
17217
|
items.map((item, n) => {
|
|
17157
17218
|
const lg = grids.lg[n];
|
|
17158
17219
|
const sm = grids.sm[n];
|
|
@@ -17161,7 +17222,7 @@ function GridCanvas({
|
|
|
17161
17222
|
const drawLg = moving && preview.breakpoint === "lg" ? startBox : lg;
|
|
17162
17223
|
const drawSm = moving && preview.breakpoint === "sm" ? startBox : sm;
|
|
17163
17224
|
const label = itemLabel?.(item.id);
|
|
17164
|
-
return /* @__PURE__ */ (0,
|
|
17225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
|
|
17165
17226
|
"div",
|
|
17166
17227
|
{
|
|
17167
17228
|
ref: (el) => {
|
|
@@ -17177,8 +17238,8 @@ function GridCanvas({
|
|
|
17177
17238
|
onPointerDown: editable ? (e) => onItemPointerDown(e, item.id) : void 0,
|
|
17178
17239
|
onKeyDown: editable ? (e) => onItemKeyDown(e, item.id) : void 0,
|
|
17179
17240
|
children: [
|
|
17180
|
-
/* @__PURE__ */ (0,
|
|
17181
|
-
editable ? /* @__PURE__ */ (0,
|
|
17241
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "matrx-grid-canvas-content", children: renderItem(item.id, { breakpoint, editing: editable }) }),
|
|
17242
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
17182
17243
|
"span",
|
|
17183
17244
|
{
|
|
17184
17245
|
className: "matrx-grid-canvas-resize",
|
|
@@ -17193,7 +17254,7 @@ function GridCanvas({
|
|
|
17193
17254
|
);
|
|
17194
17255
|
})
|
|
17195
17256
|
] }),
|
|
17196
|
-
/* @__PURE__ */ (0,
|
|
17257
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("span", { className: "matrx-grid-canvas-live", "aria-live": "polite", children: announcement })
|
|
17197
17258
|
]
|
|
17198
17259
|
}
|
|
17199
17260
|
);
|