@neuronection/assistant-ui 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/README.md +3 -0
- package/dist/ai-actions-dropdown.d.ts +29 -0
- package/dist/ai-actions-dropdown.js +3 -0
- package/dist/ai-actions-dropdown.js.map +1 -0
- package/dist/ai-button.d.ts +22 -0
- package/dist/ai-button.js +3 -0
- package/dist/ai-button.js.map +1 -0
- package/dist/ai-magic-fill.d.ts +20 -0
- package/dist/ai-magic-fill.js +3 -0
- package/dist/ai-magic-fill.js.map +1 -0
- package/dist/chip-list.d.ts +1 -1
- package/dist/chip-list.js +1 -1
- package/dist/{chunk-5HXDKOBY.js → chunk-2EPZAT3X.js} +3 -3
- package/dist/{chunk-5HXDKOBY.js.map → chunk-2EPZAT3X.js.map} +1 -1
- package/dist/{chunk-TJGX27YO.js → chunk-34NO2UOB.js} +4 -4
- package/dist/chunk-34NO2UOB.js.map +1 -0
- package/dist/{chunk-5X3RYDPC.js → chunk-5LRRVD27.js} +4 -4
- package/dist/chunk-5LRRVD27.js.map +1 -0
- package/dist/{chunk-LEDQQBVV.js → chunk-75QQR2VT.js} +4 -4
- package/dist/{chunk-LEDQQBVV.js.map → chunk-75QQR2VT.js.map} +1 -1
- package/dist/{chunk-N5KQRHXU.js → chunk-BE3XFZWU.js} +3 -3
- package/dist/{chunk-N5KQRHXU.js.map → chunk-BE3XFZWU.js.map} +1 -1
- package/dist/{chunk-XLD2BPTT.js → chunk-BN3YHYYL.js} +3 -2
- package/dist/chunk-BN3YHYYL.js.map +1 -0
- package/dist/{chunk-WPO6CDA4.js → chunk-BWPNEQ3T.js} +4 -4
- package/dist/{chunk-WPO6CDA4.js.map → chunk-BWPNEQ3T.js.map} +1 -1
- package/dist/chunk-C74WWM23.js +38 -0
- package/dist/chunk-C74WWM23.js.map +1 -0
- package/dist/{chunk-3HFL3JGP.js → chunk-GDGKARRB.js} +4 -2
- package/dist/chunk-GDGKARRB.js.map +1 -0
- package/dist/chunk-HTXTVWVG.js +3 -0
- package/dist/chunk-HTXTVWVG.js.map +1 -0
- package/dist/chunk-I37SYHM7.js +123 -0
- package/dist/chunk-I37SYHM7.js.map +1 -0
- package/dist/{chunk-ESUTPQDO.js → chunk-I5J6SDLK.js} +3 -3
- package/dist/{chunk-ESUTPQDO.js.map → chunk-I5J6SDLK.js.map} +1 -1
- package/dist/{chunk-KXLMTAZ5.js → chunk-JWAX2AOO.js} +3 -3
- package/dist/chunk-JWAX2AOO.js.map +1 -0
- package/dist/chunk-L4NM55XW.js +74 -0
- package/dist/chunk-L4NM55XW.js.map +1 -0
- package/dist/chunk-L56KGPGS.js +115 -0
- package/dist/chunk-L56KGPGS.js.map +1 -0
- package/dist/{chunk-COPPAHR5.js → chunk-M4V7XHL7.js} +2 -2
- package/dist/chunk-M4V7XHL7.js.map +1 -0
- package/dist/{chunk-DV3MXDLN.js → chunk-OT6EQFMP.js} +3 -3
- package/dist/{chunk-DV3MXDLN.js.map → chunk-OT6EQFMP.js.map} +1 -1
- package/dist/chunk-PSAJSOXL.js +3 -0
- package/dist/chunk-PSAJSOXL.js.map +1 -0
- package/dist/{chunk-CI56SSO2.js → chunk-SIIY2EGI.js} +3 -3
- package/dist/{chunk-CI56SSO2.js.map → chunk-SIIY2EGI.js.map} +1 -1
- package/dist/{chunk-RHBQ3GZE.js → chunk-SXVOJ7WE.js} +4 -4
- package/dist/{chunk-RHBQ3GZE.js.map → chunk-SXVOJ7WE.js.map} +1 -1
- package/dist/{chunk-GA3XIDVX.js → chunk-TKKHWO6C.js} +3 -3
- package/dist/{chunk-GA3XIDVX.js.map → chunk-TKKHWO6C.js.map} +1 -1
- package/dist/{chunk-MEBOS2FX.js → chunk-UU2V5FGF.js} +4 -4
- package/dist/{chunk-MEBOS2FX.js.map → chunk-UU2V5FGF.js.map} +1 -1
- package/dist/{chunk-3522NABN.js → chunk-W5WDGME5.js} +3 -3
- package/dist/{chunk-3522NABN.js.map → chunk-W5WDGME5.js.map} +1 -1
- package/dist/{chunk-WZSAUESL.js → chunk-WA7Q4TTA.js} +3 -3
- package/dist/{chunk-WZSAUESL.js.map → chunk-WA7Q4TTA.js.map} +1 -1
- package/dist/combobox.js +1 -1
- package/dist/confirmation-modal.js +1 -1
- package/dist/connection-test-row.d.ts +23 -0
- package/dist/connection-test-row.js +73 -0
- package/dist/connection-test-row.js.map +1 -0
- package/dist/context-menu.js +1 -1
- package/dist/date-picker.js +1 -1
- package/dist/field-label.js +1 -1
- package/dist/form-modal.js +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +27 -24
- package/dist/info-button.js +1 -1
- package/dist/input.d.ts +2 -2
- package/dist/input.js +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal.js +2 -2
- package/dist/popover-button.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/provider-form.d.ts +31 -0
- package/dist/provider-form.js +89 -0
- package/dist/provider-form.js.map +1 -0
- package/dist/settings-shell.d.ts +24 -0
- package/dist/settings-shell.js +74 -0
- package/dist/settings-shell.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/table.d.ts +1 -0
- package/dist/table.js +1 -1
- package/dist/textarea.d.ts +10 -0
- package/dist/textarea.js +3 -0
- package/dist/textarea.js.map +1 -0
- package/dist/tokens.d.ts +1 -1
- package/dist/tokens.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/wizard.js +1 -1
- package/package.json +26 -2
- package/dist/chunk-3HFL3JGP.js.map +0 -1
- package/dist/chunk-5X3RYDPC.js.map +0 -1
- package/dist/chunk-COPPAHR5.js.map +0 -1
- package/dist/chunk-KXLMTAZ5.js.map +0 -1
- package/dist/chunk-TJGX27YO.js.map +0 -1
- package/dist/chunk-XLD2BPTT.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/textarea/Textarea.tsx"],"names":["Textarea"],"mappings":";;;;AASO,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASA,SAAAA,CAAS,EAAE,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC9E,IAAA,MAAM,SAAe,KAAA,CAAA,KAAA,EAAM;AAC3B,IAAA,MAAM,EAAA,GAAK,MAAA,KAAW,KAAA,IAAS,IAAA,IAAQ,QAAQ,MAAA,GAAS,MAAA,CAAA;AACxD,IAAA,MAAM,WAAA,GAAc,QAAQ,CAAA,EAAG,EAAE,WAAW,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AAElE,IAAA,MAAM,QAAA,mBACJ,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA;AAAA,QACA,SAAA,EAAQ,UAAA;AAAA,QACR,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,kBAAA,EAAkB,WAAA;AAAA,QAClB,SAAA,EAAW,EAAA;AAAA,UACT,6XAAA;AAAA,UACA,KAAA,IACE,yGAAA;AAAA,UACF;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,IAAA,IAAQ,CAAC,OAAO,OAAO,QAAA;AAEtC,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,uBACE,OAAA,EAAA,EAAM,OAAA,EAAS,IAAI,SAAA,EAAU,sDAAA,EAC3B,iBACH,CAAA,GACE,IAAA;AAAA,MACH,QAAA;AAAA,MACA,IAAA,IAAQ,CAAC,KAAA,mBACR,GAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,EAAS,SAAA,EAAU,mCAAA,EAC5B,QAAA,EAAA,IAAA,EACH,CAAA,GACE,IAAA;AAAA,MACH,KAAA,mBACC,GAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,6CAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AACF","file":"chunk-C74WWM23.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface TextareaProps extends React.ComponentProps<'textarea'> {\n label?: string\n hint?: string\n error?: string\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea({ className, label, hint, error, id: idProp, ...props }, ref) {\n const autoId = React.useId()\n const id = idProp ?? (label || hint || error ? autoId : undefined)\n const describedBy = error ? `${id}-error` : hint ? `${id}-hint` : undefined\n\n const textarea = (\n <textarea\n ref={ref}\n id={id}\n data-as=\"textarea\"\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n className={cn(\n 'flex min-h-16 w-full rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface)] px-3 py-2 text-sm text-[var(--as-fg)] transition-colors placeholder:text-[var(--as-muted-fg)] focus-visible:border-[var(--as-focus-ring)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--as-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50',\n error &&\n 'border-[var(--as-danger)] focus-visible:border-[var(--as-danger)] focus-visible:ring-[var(--as-danger)]',\n className,\n )}\n {...props}\n />\n )\n\n if (!label && !hint && !error) return textarea\n\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n {label ? (\n <label htmlFor={id} className=\"text-sm font-medium leading-none text-[var(--as-fg)]\">\n {label}\n </label>\n ) : null}\n {textarea}\n {hint && !error ? (\n <p id={`${id}-hint`} className=\"text-xs text-[var(--as-muted-fg)]\">\n {hint}\n </p>\n ) : null}\n {error ? (\n <p id={`${id}-error`} role=\"alert\" className=\"text-xs font-medium text-[var(--as-danger)]\">\n {error}\n </p>\n ) : null}\n </div>\n )\n },\n)\n"]}
|
|
@@ -32,6 +32,8 @@ var semanticTokens = [
|
|
|
32
32
|
"--as-ai-fg",
|
|
33
33
|
"--as-focus-ring",
|
|
34
34
|
"--as-overlay",
|
|
35
|
+
"--as-z-modal",
|
|
36
|
+
"--as-z-popover",
|
|
35
37
|
"--as-radius-sm",
|
|
36
38
|
"--as-radius",
|
|
37
39
|
"--as-radius-lg",
|
|
@@ -43,5 +45,5 @@ var semanticTokens = [
|
|
|
43
45
|
];
|
|
44
46
|
|
|
45
47
|
export { rawTokens, semanticTokens };
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-GDGKARRB.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-GDGKARRB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/tokens.ts"],"names":[],"mappings":";AAAO,IAAM,SAAA,GAAY;AAAA,EACvB,aAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF;AAEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF","file":"chunk-GDGKARRB.js","sourcesContent":["export const rawTokens = [\n '--as-tone-0',\n '--as-tone-50',\n '--as-tone-100',\n '--as-tone-200',\n '--as-tone-300',\n '--as-tone-500',\n '--as-tone-700',\n '--as-tone-900',\n '--as-accent',\n '--as-accent-strong',\n '--as-success',\n '--as-warning',\n '--as-danger',\n '--as-ai',\n] as const\n\nexport const semanticTokens = [\n '--as-primary',\n '--as-primary-fg',\n '--as-secondary',\n '--as-secondary-fg',\n '--as-surface',\n '--as-surface-raised',\n '--as-border',\n '--as-fg',\n '--as-muted',\n '--as-muted-fg',\n '--as-success-fg',\n '--as-warning-fg',\n '--as-danger-fg',\n '--as-ai-fg',\n '--as-focus-ring',\n '--as-overlay',\n '--as-z-modal',\n '--as-z-popover',\n '--as-radius-sm',\n '--as-radius',\n '--as-radius-lg',\n '--as-font-sans',\n '--as-font-mono',\n '--as-shadow-1',\n '--as-shadow-2',\n '--as-shadow-3',\n] as const\n\nexport type RawTokenName = (typeof rawTokens)[number]\nexport type SemanticTokenName = (typeof semanticTokens)[number]\nexport type ThemeTokenName = SemanticTokenName | RawTokenName\nexport type ThemeTokens = Partial<Record<ThemeTokenName, string>>\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-HTXTVWVG.js"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-SIIY2EGI.js';
|
|
2
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Sparkles, Send } from 'lucide-react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var AiActionsDropdown = React.forwardRef(function AiActionsDropdown2({
|
|
8
|
+
actions,
|
|
9
|
+
onAction,
|
|
10
|
+
onPrompt,
|
|
11
|
+
busy = false,
|
|
12
|
+
error,
|
|
13
|
+
label = "AI actions",
|
|
14
|
+
title,
|
|
15
|
+
promptLabel = "Ask something custom",
|
|
16
|
+
promptPlaceholder,
|
|
17
|
+
promptSubmitLabel = "Send",
|
|
18
|
+
disabled = false,
|
|
19
|
+
align = "end",
|
|
20
|
+
side = "bottom",
|
|
21
|
+
className,
|
|
22
|
+
panelClassName
|
|
23
|
+
}, ref) {
|
|
24
|
+
const [open, setOpen] = React.useState(false);
|
|
25
|
+
const [prompt, setPrompt] = React.useState("");
|
|
26
|
+
const sendPrompt = () => {
|
|
27
|
+
const trimmed = prompt.trim();
|
|
28
|
+
if (!trimmed || busy || !onPrompt) return;
|
|
29
|
+
onPrompt(trimmed);
|
|
30
|
+
setPrompt("");
|
|
31
|
+
};
|
|
32
|
+
return /* @__PURE__ */ jsx(Popover, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
|
|
33
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, disabled: disabled || busy, children: /* @__PURE__ */ jsx(
|
|
34
|
+
"button",
|
|
35
|
+
{
|
|
36
|
+
ref,
|
|
37
|
+
type: "button",
|
|
38
|
+
"data-as": "ai-actions-dropdown",
|
|
39
|
+
"aria-label": label,
|
|
40
|
+
className: cn(
|
|
41
|
+
"inline-flex size-7 cursor-pointer items-center justify-center rounded-full bg-[color-mix(in_srgb,var(--as-ai)_12%,transparent)] text-[var(--as-ai)] transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50",
|
|
42
|
+
className
|
|
43
|
+
),
|
|
44
|
+
children: /* @__PURE__ */ jsx(Sparkles, { className: "size-4", "aria-hidden": true })
|
|
45
|
+
}
|
|
46
|
+
) }),
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
PopoverContent,
|
|
49
|
+
{
|
|
50
|
+
side,
|
|
51
|
+
align,
|
|
52
|
+
"aria-label": title ?? label,
|
|
53
|
+
className: cn("w-64 p-1.5", panelClassName),
|
|
54
|
+
children: /* @__PURE__ */ jsxs("div", { "data-as": "ai-actions-panel", role: "menu", children: [
|
|
55
|
+
title ? /* @__PURE__ */ jsx("p", { className: "px-2 pb-1 pt-1.5 text-xs font-semibold uppercase tracking-wide text-[var(--as-muted-fg)]", children: title }) : null,
|
|
56
|
+
actions.map((action) => /* @__PURE__ */ jsxs(
|
|
57
|
+
"button",
|
|
58
|
+
{
|
|
59
|
+
type: "button",
|
|
60
|
+
role: "menuitem",
|
|
61
|
+
disabled: busy,
|
|
62
|
+
onClick: () => onAction(action),
|
|
63
|
+
className: "flex w-full cursor-pointer items-start gap-2.5 rounded-[var(--as-radius-sm)] px-2 py-2 text-left transition-colors hover:bg-[var(--as-secondary)] disabled:pointer-events-none disabled:opacity-50",
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsx(
|
|
66
|
+
action.icon,
|
|
67
|
+
{
|
|
68
|
+
className: "mt-0.5 size-4 shrink-0 text-[var(--as-ai)]",
|
|
69
|
+
"aria-hidden": true
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col", children: [
|
|
73
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-[var(--as-fg)]", children: action.label }),
|
|
74
|
+
action.description ? /* @__PURE__ */ jsx("span", { className: "text-xs text-[var(--as-muted-fg)]", children: action.description }) : null
|
|
75
|
+
] })
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
action.id
|
|
79
|
+
)),
|
|
80
|
+
onPrompt ? /* @__PURE__ */ jsxs(
|
|
81
|
+
"form",
|
|
82
|
+
{
|
|
83
|
+
className: "mt-1 flex items-center gap-1.5 border-t border-[var(--as-border)] p-1.5",
|
|
84
|
+
onSubmit: (event) => {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
sendPrompt();
|
|
87
|
+
},
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ jsx(
|
|
90
|
+
"input",
|
|
91
|
+
{
|
|
92
|
+
type: "text",
|
|
93
|
+
"aria-label": promptLabel,
|
|
94
|
+
placeholder: promptPlaceholder ?? promptLabel,
|
|
95
|
+
value: prompt,
|
|
96
|
+
onChange: (event) => setPrompt(event.target.value),
|
|
97
|
+
className: "h-7 w-full bg-transparent text-sm outline-none placeholder:text-[var(--as-muted-fg)]"
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ jsx(
|
|
101
|
+
"button",
|
|
102
|
+
{
|
|
103
|
+
type: "submit",
|
|
104
|
+
"aria-label": promptSubmitLabel,
|
|
105
|
+
disabled: busy || !prompt.trim(),
|
|
106
|
+
className: "shrink-0 cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-ai)] p-1 text-[var(--as-ai-fg)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-40",
|
|
107
|
+
children: /* @__PURE__ */ jsx(Send, { className: "size-3", "aria-hidden": true })
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
) : null,
|
|
113
|
+
busy ? /* @__PURE__ */ jsx("p", { className: "px-2 pb-1.5 text-xs text-[var(--as-muted-fg)]", role: "status", children: "\u2026" }) : null,
|
|
114
|
+
error ? /* @__PURE__ */ jsx("p", { role: "alert", className: "px-2 pb-1.5 text-xs text-[var(--as-danger)]", children: error }) : null
|
|
115
|
+
] })
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
] }) });
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
export { AiActionsDropdown };
|
|
122
|
+
//# sourceMappingURL=chunk-I37SYHM7.js.map
|
|
123
|
+
//# sourceMappingURL=chunk-I37SYHM7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ai-actions-dropdown/AiActionsDropdown.tsx"],"names":["AiActionsDropdown"],"mappings":";;;;;;AA8BO,IAAM,iBAAA,GAA0B,KAAA,CAAA,UAAA,CAGrC,SAASA,kBAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,GAAQ,YAAA;AAAA,EACR,KAAA;AAAA,EACA,WAAA,GAAc,sBAAA;AAAA,EACd,iBAAA;AAAA,EACA,iBAAA,GAAoB,MAAA;AAAA,EACpB,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,eAAS,EAAE,CAAA;AAE7C,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,OAAA,GAAU,OAAO,IAAA,EAAK;AAC5B,IAAA,IAAI,CAAC,OAAA,IAAW,IAAA,IAAQ,CAAC,QAAA,EAAU;AACnC,IAAA,QAAA,CAAS,OAAO,CAAA;AAChB,IAAA,SAAA,CAAU,EAAE,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,WAAQ,IAAA,EAAY,YAAA,EAAc,SACjC,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAC,QAAA,EAAU,YAAY,IAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAQ,qBAAA;AAAA,QACR,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,kVAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA,KAC3C,EACF,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,cAAY,KAAA,IAAS,KAAA;AAAA,QACrB,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,cAAc,CAAA;AAAA,QAE1C,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAQ,kBAAA,EAAmB,MAAK,MAAA,EAClC,QAAA,EAAA;AAAA,UAAA,KAAA,mBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0FAAA,EACV,iBACH,CAAA,GACE,IAAA;AAAA,UACH,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZ,IAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,UAAA;AAAA,cACL,QAAA,EAAU,IAAA;AAAA,cACV,OAAA,EAAS,MAAM,QAAA,CAAS,MAAM,CAAA;AAAA,cAC9B,SAAA,EAAU,oMAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,MAAA,CAAO,IAAA;AAAA,kBAAP;AAAA,oBACC,SAAA,EAAU,4CAAA;AAAA,oBACV,aAAA,EAAW;AAAA;AAAA,iBACb;AAAA,gCACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,MAAA,CAAO,KAAA,EACV,CAAA;AAAA,kBACC,MAAA,CAAO,8BACN,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EACb,QAAA,EAAA,MAAA,CAAO,aACV,CAAA,GACE;AAAA,iBAAA,EACN;AAAA;AAAA,aAAA;AAAA,YApBK,MAAA,CAAO;AAAA,WAsBf,CAAA;AAAA,UACA,QAAA,mBACC,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,yEAAA;AAAA,cACV,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,UAAA,EAAW;AAAA,cACb,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,MAAA;AAAA,oBACL,YAAA,EAAY,WAAA;AAAA,oBACZ,aAAa,iBAAA,IAAqB,WAAA;AAAA,oBAClC,KAAA,EAAO,MAAA;AAAA,oBACP,UAAU,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,oBACjD,SAAA,EAAU;AAAA;AAAA,iBACZ;AAAA,gCACA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAY,iBAAA;AAAA,oBACZ,QAAA,EAAU,IAAA,IAAQ,CAAC,MAAA,CAAO,IAAA,EAAK;AAAA,oBAC/B,SAAA,EAAU,yLAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA;AACvC;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,IAAA,uBACE,GAAA,EAAA,EAAE,SAAA,EAAU,iDAAgD,IAAA,EAAK,QAAA,EAAS,oBAE3E,CAAA,GACE,IAAA;AAAA,UACH,KAAA,uBACE,GAAA,EAAA,EAAE,IAAA,EAAK,SAAQ,SAAA,EAAU,6CAAA,EACvB,iBACH,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA;AACF,GAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC","file":"chunk-I37SYHM7.js","sourcesContent":["import * as React from 'react'\nimport { Send, Sparkles, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\n\nexport interface AiAction {\n id: string\n label: string\n description?: string\n icon: LucideIcon\n}\n\nexport interface AiActionsDropdownProps {\n actions: AiAction[]\n onAction: (action: AiAction) => void\n onPrompt?: (prompt: string) => void\n busy?: boolean\n error?: string | null\n label?: string\n title?: string\n promptLabel?: string\n promptPlaceholder?: string\n promptSubmitLabel?: string\n disabled?: boolean\n align?: 'start' | 'center' | 'end'\n side?: 'top' | 'bottom' | 'left' | 'right'\n className?: string\n panelClassName?: string\n}\n\nexport const AiActionsDropdown = React.forwardRef<\n HTMLButtonElement,\n AiActionsDropdownProps\n>(function AiActionsDropdown(\n {\n actions,\n onAction,\n onPrompt,\n busy = false,\n error,\n label = 'AI actions',\n title,\n promptLabel = 'Ask something custom',\n promptPlaceholder,\n promptSubmitLabel = 'Send',\n disabled = false,\n align = 'end',\n side = 'bottom',\n className,\n panelClassName,\n },\n ref,\n) {\n const [open, setOpen] = React.useState(false)\n const [prompt, setPrompt] = React.useState('')\n\n const sendPrompt = () => {\n const trimmed = prompt.trim()\n if (!trimmed || busy || !onPrompt) return\n onPrompt(trimmed)\n setPrompt('')\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <span className=\"relative inline-flex\">\n <PopoverTrigger asChild disabled={disabled || busy}>\n <button\n ref={ref}\n type=\"button\"\n data-as=\"ai-actions-dropdown\"\n aria-label={label}\n className={cn(\n 'inline-flex size-7 cursor-pointer items-center justify-center rounded-full bg-[color-mix(in_srgb,var(--as-ai)_12%,transparent)] text-[var(--as-ai)] transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n >\n <Sparkles className=\"size-4\" aria-hidden />\n </button>\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n aria-label={title ?? label}\n className={cn('w-64 p-1.5', panelClassName)}\n >\n <div data-as=\"ai-actions-panel\" role=\"menu\">\n {title ? (\n <p className=\"px-2 pb-1 pt-1.5 text-xs font-semibold uppercase tracking-wide text-[var(--as-muted-fg)]\">\n {title}\n </p>\n ) : null}\n {actions.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n role=\"menuitem\"\n disabled={busy}\n onClick={() => onAction(action)}\n className=\"flex w-full cursor-pointer items-start gap-2.5 rounded-[var(--as-radius-sm)] px-2 py-2 text-left transition-colors hover:bg-[var(--as-secondary)] disabled:pointer-events-none disabled:opacity-50\"\n >\n <action.icon\n className=\"mt-0.5 size-4 shrink-0 text-[var(--as-ai)]\"\n aria-hidden\n />\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"text-sm font-medium text-[var(--as-fg)]\">\n {action.label}\n </span>\n {action.description ? (\n <span className=\"text-xs text-[var(--as-muted-fg)]\">\n {action.description}\n </span>\n ) : null}\n </span>\n </button>\n ))}\n {onPrompt ? (\n <form\n className=\"mt-1 flex items-center gap-1.5 border-t border-[var(--as-border)] p-1.5\"\n onSubmit={(event) => {\n event.preventDefault()\n sendPrompt()\n }}\n >\n <input\n type=\"text\"\n aria-label={promptLabel}\n placeholder={promptPlaceholder ?? promptLabel}\n value={prompt}\n onChange={(event) => setPrompt(event.target.value)}\n className=\"h-7 w-full bg-transparent text-sm outline-none placeholder:text-[var(--as-muted-fg)]\"\n />\n <button\n type=\"submit\"\n aria-label={promptSubmitLabel}\n disabled={busy || !prompt.trim()}\n className=\"shrink-0 cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-ai)] p-1 text-[var(--as-ai-fg)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-40\"\n >\n <Send className=\"size-3\" aria-hidden />\n </button>\n </form>\n ) : null}\n {busy ? (\n <p className=\"px-2 pb-1.5 text-xs text-[var(--as-muted-fg)]\" role=\"status\">\n …\n </p>\n ) : null}\n {error ? (\n <p role=\"alert\" className=\"px-2 pb-1.5 text-xs text-[var(--as-danger)]\">\n {error}\n </p>\n ) : null}\n </div>\n </PopoverContent>\n </span>\n </Popover>\n )\n})\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InfoButton } from './chunk-
|
|
1
|
+
import { InfoButton } from './chunk-OT6EQFMP.js';
|
|
2
2
|
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -17,5 +17,5 @@ function FieldLabel({
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export { FieldLabel };
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
20
|
+
//# sourceMappingURL=chunk-I5J6SDLK.js.map
|
|
21
|
+
//# sourceMappingURL=chunk-I5J6SDLK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/field-label/FieldLabel.tsx"],"names":[],"mappings":";;;;AAaO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACE,IAAA,CAAC,UAAK,SAAA,EAAQ,aAAA,EAAc,WAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA,EAC1F,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,wBACf,UAAA,EAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAc,aACzC,QAAA,EAAA,IAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/field-label/FieldLabel.tsx"],"names":[],"mappings":";;;;AAaO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACE,IAAA,CAAC,UAAK,SAAA,EAAQ,aAAA,EAAc,WAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA,EAC1F,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,wBACf,UAAA,EAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAc,aACzC,QAAA,EAAA,IAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-I5J6SDLK.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\nimport { InfoButton } from '../info-button/InfoButton'\n\nexport interface FieldLabelProps {\n children: React.ReactNode\n info: React.ReactNode\n infoTitle?: React.ReactNode\n label?: string\n showOnHover?: boolean\n className?: string\n}\n\nexport function FieldLabel({\n children,\n info,\n infoTitle,\n label,\n showOnHover,\n className,\n}: FieldLabelProps) {\n return (\n <span data-as=\"field-label\" className={cn('group flex items-center gap-1 text-xs', className)}>\n <span>{children}</span>\n <InfoButton title={infoTitle} label={label} showOnHover={showOnHover}>\n {info}\n </InfoButton>\n </span>\n )\n}\n"]}
|
|
@@ -16,7 +16,7 @@ var MenuContent = React.forwardRef(function MenuContent2({ className, sideOffset
|
|
|
16
16
|
sideOffset,
|
|
17
17
|
collisionPadding: 8,
|
|
18
18
|
className: cn(
|
|
19
|
-
"as-anim-pop z-
|
|
19
|
+
"as-anim-pop z-[var(--as-z-popover)] min-w-40 overflow-hidden rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-1 text-[var(--as-fg)] shadow-[var(--as-shadow-3)]",
|
|
20
20
|
className
|
|
21
21
|
),
|
|
22
22
|
...props,
|
|
@@ -105,5 +105,5 @@ function ActionMenu({
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
export { ActionMenu, Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuTrigger };
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-JWAX2AOO.js.map
|
|
109
|
+
//# sourceMappingURL=chunk-JWAX2AOO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/menu/Menu.tsx"],"names":["MenuContent","MenuItem","MenuSeparator","MenuLabel"],"mappings":"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","file":"chunk-JWAX2AOO.js","sourcesContent":["import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Loader2, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport const Menu = DropdownMenuPrimitive.Root\nexport const MenuTrigger = DropdownMenuPrimitive.Trigger\nexport const MenuGroup = DropdownMenuPrimitive.Group\n\nexport const MenuContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(function MenuContent({ className, sideOffset = 6, children, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n data-as=\"menu\"\n sideOffset={sideOffset}\n collisionPadding={8}\n className={cn(\n 'as-anim-pop z-[var(--as-z-popover)] min-w-40 overflow-hidden rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-1 text-[var(--as-fg)] shadow-[var(--as-shadow-3)]',\n className,\n )}\n {...props}\n >\n {children}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n )\n})\n\nexport interface MenuItemProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n icon?: LucideIcon\n danger?: boolean\n pending?: boolean\n}\n\nexport const MenuItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n MenuItemProps\n>(function MenuItem({ className, icon: Icon, danger, pending, disabled, children, ...props }, ref) {\n const SpinnerIcon = pending ? Loader2 : null\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n disabled={disabled || pending}\n aria-busy={pending || undefined}\n className={cn(\n 'flex w-full cursor-pointer select-none items-center gap-2 rounded-[calc(var(--as-radius-sm)-2px)] px-2 py-1.5 text-left text-sm outline-none transition-colors focus:bg-[var(--as-secondary)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0',\n danger && 'text-[var(--as-danger)] focus:bg-[var(--as-danger)]/10',\n className,\n )}\n {...props}\n >\n {SpinnerIcon ? (\n <SpinnerIcon className=\"animate-spin\" aria-hidden />\n ) : Icon ? (\n <Icon aria-hidden />\n ) : null}\n {children}\n </DropdownMenuPrimitive.Item>\n )\n})\n\nexport const MenuSeparator = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function MenuSeparator({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-[var(--as-border)]', className)}\n {...props}\n />\n )\n})\n\nexport const MenuLabel = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label>\n>(function MenuLabel({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-xs font-medium text-[var(--as-muted-fg)]', className)}\n {...props}\n />\n )\n})\n\nexport interface ActionMenuItem {\n key: string\n label: string\n icon?: LucideIcon\n danger?: boolean\n disabled?: boolean\n pending?: boolean\n onSelect: () => void\n}\n\nexport interface ActionMenuProps {\n label: string\n trigger: React.ReactNode\n items: ActionMenuItem[]\n align?: 'start' | 'center' | 'end'\n side?: 'top' | 'right' | 'bottom' | 'left'\n triggerClassName?: string\n panelClassName?: string\n disabled?: boolean\n}\n\nexport function ActionMenu({\n label,\n trigger,\n items,\n align = 'end',\n side = 'bottom',\n triggerClassName,\n panelClassName,\n disabled = false,\n}: ActionMenuProps) {\n return (\n <Menu modal={false}>\n <MenuTrigger\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n className={cn(\n 'inline-flex cursor-pointer items-center justify-center gap-1 rounded-full transition-colors hover:bg-[var(--as-secondary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50',\n triggerClassName ?? 'size-9',\n )}\n >\n {trigger}\n </MenuTrigger>\n <MenuContent align={align} side={side} className={cn('w-52 p-1', panelClassName)}>\n <div className=\"flex flex-col\">\n {items.map((item) => (\n <MenuItem\n key={item.key}\n icon={item.icon}\n danger={item.danger}\n disabled={item.disabled}\n pending={item.pending}\n onSelect={() => item.onSelect()}\n >\n {item.label}\n </MenuItem>\n ))}\n </div>\n </MenuContent>\n </Menu>\n )\n}\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Textarea } from './chunk-C74WWM23.js';
|
|
2
|
+
import { FormModal } from './chunk-2EPZAT3X.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Sparkles } from 'lucide-react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function AiMagicFill({
|
|
8
|
+
open,
|
|
9
|
+
onOpenChange,
|
|
10
|
+
onSubmit,
|
|
11
|
+
busy = false,
|
|
12
|
+
error,
|
|
13
|
+
title = "Magic Fill",
|
|
14
|
+
subtitle = "AI-powered data extraction",
|
|
15
|
+
description,
|
|
16
|
+
promptLabel = "Describe details",
|
|
17
|
+
placeholder = "Describe the data here\u2026",
|
|
18
|
+
submitLabel,
|
|
19
|
+
cancelLabel = "Cancel",
|
|
20
|
+
className
|
|
21
|
+
}) {
|
|
22
|
+
const [prompt, setPrompt] = React.useState("");
|
|
23
|
+
const submit = () => {
|
|
24
|
+
const trimmed = prompt.trim();
|
|
25
|
+
if (!trimmed || busy) return;
|
|
26
|
+
onSubmit(trimmed);
|
|
27
|
+
setPrompt("");
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ jsx(
|
|
30
|
+
FormModal,
|
|
31
|
+
{
|
|
32
|
+
open,
|
|
33
|
+
onOpenChange,
|
|
34
|
+
title,
|
|
35
|
+
description: subtitle,
|
|
36
|
+
icon: Sparkles,
|
|
37
|
+
submitLabel: submitLabel ?? `Apply ${title}`,
|
|
38
|
+
cancelLabel,
|
|
39
|
+
submitting: busy,
|
|
40
|
+
submitDisabled: !prompt.trim(),
|
|
41
|
+
onSubmit: submit,
|
|
42
|
+
contentClassName: className,
|
|
43
|
+
children: /* @__PURE__ */ jsxs("div", { "data-as": "ai-magic-fill", className: "flex flex-col gap-4", children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
45
|
+
/* @__PURE__ */ jsx(
|
|
46
|
+
"label",
|
|
47
|
+
{
|
|
48
|
+
htmlFor: "ai-magic-fill-prompt",
|
|
49
|
+
className: "text-[11px] font-bold uppercase tracking-[0.18em] text-[var(--as-muted-fg)]",
|
|
50
|
+
children: promptLabel
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
/* @__PURE__ */ jsx(
|
|
54
|
+
Textarea,
|
|
55
|
+
{
|
|
56
|
+
id: "ai-magic-fill-prompt",
|
|
57
|
+
rows: 5,
|
|
58
|
+
value: prompt,
|
|
59
|
+
onChange: (event) => setPrompt(event.target.value),
|
|
60
|
+
placeholder,
|
|
61
|
+
className: "resize-none leading-relaxed"
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] }),
|
|
65
|
+
description ? /* @__PURE__ */ jsx("p", { className: "rounded-[var(--as-radius)] border border-[color-mix(in_srgb,var(--as-ai)_25%,transparent)] bg-[color-mix(in_srgb,var(--as-ai)_8%,transparent)] p-3 text-xs font-medium leading-relaxed text-[var(--as-fg)]", children: description }) : null,
|
|
66
|
+
error ? /* @__PURE__ */ jsx("p", { role: "alert", className: "text-xs font-semibold text-[var(--as-danger)]", children: error }) : null
|
|
67
|
+
] })
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { AiMagicFill };
|
|
73
|
+
//# sourceMappingURL=chunk-L4NM55XW.js.map
|
|
74
|
+
//# sourceMappingURL=chunk-L4NM55XW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ai-magic-fill/AiMagicFill.tsx"],"names":[],"mappings":";;;;;;AAqBO,SAAS,WAAA,CAAY;AAAA,EAC1B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,GAAQ,YAAA;AAAA,EACR,QAAA,GAAW,4BAAA;AAAA,EACX,WAAA;AAAA,EACA,WAAA,GAAc,kBAAA;AAAA,EACd,WAAA,GAAc,8BAAA;AAAA,EACd,WAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,eAAS,EAAE,CAAA;AAE7C,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,MAAM,OAAA,GAAU,OAAO,IAAA,EAAK;AAC5B,IAAA,IAAI,CAAC,WAAW,IAAA,EAAM;AACtB,IAAA,QAAA,CAAS,OAAO,CAAA;AAChB,IAAA,SAAA,CAAU,EAAE,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA,EAAa,QAAA;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,EAAa,WAAA,IAAe,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA;AAAA,MAC1C,WAAA;AAAA,MACA,UAAA,EAAY,IAAA;AAAA,MACZ,cAAA,EAAgB,CAAC,MAAA,CAAO,IAAA,EAAK;AAAA,MAC7B,QAAA,EAAU,MAAA;AAAA,MACV,gBAAA,EAAkB,SAAA;AAAA,MAElB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAQ,eAAA,EAAgB,WAAU,qBAAA,EACrC,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,sBAAA;AAAA,cACR,SAAA,EAAU,6EAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BACA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAG,sBAAA;AAAA,cACH,IAAA,EAAM,CAAA;AAAA,cACN,KAAA,EAAO,MAAA;AAAA,cACP,UAAU,CAAC,KAAA,KACT,SAAA,CAAU,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,cAE9B,WAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,QACC,8BACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4MAAA,EACV,uBACH,CAAA,GACE,IAAA;AAAA,QACH,KAAA,uBACE,GAAA,EAAA,EAAE,IAAA,EAAK,SAAQ,SAAA,EAAU,+CAAA,EACvB,iBACH,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA,GACF;AAEJ","file":"chunk-L4NM55XW.js","sourcesContent":["import * as React from 'react'\nimport { Sparkles } from 'lucide-react'\nimport { FormModal } from '../form-modal/FormModal'\nimport { Textarea } from '../textarea/Textarea'\n\nexport interface AiMagicFillProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n onSubmit: (prompt: string) => void\n busy?: boolean\n error?: string | null\n title?: string\n subtitle?: string\n description?: string\n promptLabel?: string\n placeholder?: string\n submitLabel?: string\n cancelLabel?: string\n className?: string\n}\n\nexport function AiMagicFill({\n open,\n onOpenChange,\n onSubmit,\n busy = false,\n error,\n title = 'Magic Fill',\n subtitle = 'AI-powered data extraction',\n description,\n promptLabel = 'Describe details',\n placeholder = 'Describe the data here…',\n submitLabel,\n cancelLabel = 'Cancel',\n className,\n}: AiMagicFillProps) {\n const [prompt, setPrompt] = React.useState('')\n\n const submit = () => {\n const trimmed = prompt.trim()\n if (!trimmed || busy) return\n onSubmit(trimmed)\n setPrompt('')\n }\n\n return (\n <FormModal\n open={open}\n onOpenChange={onOpenChange}\n title={title}\n description={subtitle}\n icon={Sparkles}\n submitLabel={submitLabel ?? `Apply ${title}`}\n cancelLabel={cancelLabel}\n submitting={busy}\n submitDisabled={!prompt.trim()}\n onSubmit={submit}\n contentClassName={className}\n >\n <div data-as=\"ai-magic-fill\" className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-1.5\">\n <label\n htmlFor=\"ai-magic-fill-prompt\"\n className=\"text-[11px] font-bold uppercase tracking-[0.18em] text-[var(--as-muted-fg)]\"\n >\n {promptLabel}\n </label>\n <Textarea\n id=\"ai-magic-fill-prompt\"\n rows={5}\n value={prompt}\n onChange={(event: React.ChangeEvent<HTMLTextAreaElement>) =>\n setPrompt(event.target.value)\n }\n placeholder={placeholder}\n className=\"resize-none leading-relaxed\"\n />\n </div>\n {description ? (\n <p className=\"rounded-[var(--as-radius)] border border-[color-mix(in_srgb,var(--as-ai)_25%,transparent)] bg-[color-mix(in_srgb,var(--as-ai)_8%,transparent)] p-3 text-xs font-medium leading-relaxed text-[var(--as-fg)]\">\n {description}\n </p>\n ) : null}\n {error ? (\n <p role=\"alert\" className=\"text-xs font-semibold text-[var(--as-danger)]\">\n {error}\n </p>\n ) : null}\n </div>\n </FormModal>\n )\n}\n"]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-SIIY2EGI.js';
|
|
2
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Sparkles, Send } from 'lucide-react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var AiButton = React.forwardRef(
|
|
8
|
+
function AiButton2({
|
|
9
|
+
onSubmit,
|
|
10
|
+
suggestions = [],
|
|
11
|
+
onResponse,
|
|
12
|
+
loading = false,
|
|
13
|
+
error,
|
|
14
|
+
label = "Ask AI",
|
|
15
|
+
promptLabel = "Ask a question",
|
|
16
|
+
submitLabel = "Send",
|
|
17
|
+
loadingLabel = "Thinking\u2026",
|
|
18
|
+
placeholder,
|
|
19
|
+
disabled = false,
|
|
20
|
+
side = "bottom",
|
|
21
|
+
align = "end",
|
|
22
|
+
className,
|
|
23
|
+
panelClassName
|
|
24
|
+
}, ref) {
|
|
25
|
+
const [open, setOpen] = React.useState(false);
|
|
26
|
+
const [prompt, setPrompt] = React.useState("");
|
|
27
|
+
const send = (value) => {
|
|
28
|
+
const trimmed = value.trim();
|
|
29
|
+
if (!trimmed || loading) return;
|
|
30
|
+
onSubmit(trimmed);
|
|
31
|
+
setPrompt("");
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsx(Popover, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
|
|
34
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs(
|
|
35
|
+
"button",
|
|
36
|
+
{
|
|
37
|
+
ref,
|
|
38
|
+
type: "button",
|
|
39
|
+
"data-as": "ai-button",
|
|
40
|
+
"aria-label": label,
|
|
41
|
+
className: cn(
|
|
42
|
+
"inline-flex cursor-pointer items-center gap-1 rounded-full bg-[color-mix(in_srgb,var(--as-ai)_12%,transparent)] px-2.5 py-1 text-xs font-medium text-[var(--as-ai)] transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50",
|
|
43
|
+
className
|
|
44
|
+
),
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "size-3.5", "aria-hidden": true }),
|
|
47
|
+
label
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
) }),
|
|
51
|
+
/* @__PURE__ */ jsx(
|
|
52
|
+
PopoverContent,
|
|
53
|
+
{
|
|
54
|
+
side,
|
|
55
|
+
align,
|
|
56
|
+
"aria-label": label,
|
|
57
|
+
className: cn("w-72 p-3", panelClassName),
|
|
58
|
+
children: /* @__PURE__ */ jsxs(
|
|
59
|
+
"form",
|
|
60
|
+
{
|
|
61
|
+
"data-as": "ai-button-panel",
|
|
62
|
+
onSubmit: (event) => {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
send(prompt);
|
|
65
|
+
},
|
|
66
|
+
children: [
|
|
67
|
+
suggestions.length > 0 ? /* @__PURE__ */ jsx("div", { className: "mb-2 flex flex-wrap gap-1", children: suggestions.map((suggestion) => /* @__PURE__ */ jsx(
|
|
68
|
+
"button",
|
|
69
|
+
{
|
|
70
|
+
type: "button",
|
|
71
|
+
disabled: loading,
|
|
72
|
+
onClick: () => send(suggestion),
|
|
73
|
+
className: "cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-secondary)] px-2 py-1 text-xs transition-colors hover:bg-[color-mix(in_srgb,var(--as-ai)_14%,var(--as-secondary))] disabled:pointer-events-none disabled:opacity-50",
|
|
74
|
+
children: suggestion
|
|
75
|
+
},
|
|
76
|
+
suggestion
|
|
77
|
+
)) }) : null,
|
|
78
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center gap-2", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(
|
|
80
|
+
"input",
|
|
81
|
+
{
|
|
82
|
+
type: "text",
|
|
83
|
+
"aria-label": promptLabel,
|
|
84
|
+
placeholder: placeholder ?? promptLabel,
|
|
85
|
+
value: prompt,
|
|
86
|
+
onChange: (event) => setPrompt(event.target.value),
|
|
87
|
+
className: "h-8 w-full rounded-[var(--as-radius-sm)] border border-[var(--as-border)] bg-[var(--as-surface)] px-2 text-sm outline-none placeholder:text-[var(--as-muted-fg)] focus-visible:border-[var(--as-focus-ring)]"
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ jsx(
|
|
91
|
+
"button",
|
|
92
|
+
{
|
|
93
|
+
type: "submit",
|
|
94
|
+
"aria-label": submitLabel,
|
|
95
|
+
disabled: loading || !prompt.trim(),
|
|
96
|
+
className: "shrink-0 cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-ai)] p-1.5 text-[var(--as-ai-fg)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-40",
|
|
97
|
+
children: /* @__PURE__ */ jsx(Send, { className: "size-3.5", "aria-hidden": true })
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] }),
|
|
101
|
+
loading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--as-muted-fg)]", role: "status", children: loadingLabel }) : null,
|
|
102
|
+
error ? /* @__PURE__ */ jsx("p", { role: "alert", className: "text-sm text-[var(--as-danger)]", children: error }) : null,
|
|
103
|
+
onResponse
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
)
|
|
109
|
+
] }) });
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
export { AiButton };
|
|
114
|
+
//# sourceMappingURL=chunk-L56KGPGS.js.map
|
|
115
|
+
//# sourceMappingURL=chunk-L56KGPGS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ai-button/AiButton.tsx"],"names":["AiButton"],"mappings":"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","file":"chunk-L56KGPGS.js","sourcesContent":["import * as React from 'react'\nimport { Send, Sparkles } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\n\nexport interface AiButtonProps {\n onSubmit: (prompt: string) => void\n suggestions?: string[]\n onResponse?: React.ReactNode\n loading?: boolean\n error?: string | null\n label?: string\n promptLabel?: string\n submitLabel?: string\n loadingLabel?: string\n placeholder?: string\n disabled?: boolean\n side?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n className?: string\n panelClassName?: string\n}\n\nexport const AiButton = React.forwardRef<HTMLButtonElement, AiButtonProps>(\n function AiButton(\n {\n onSubmit,\n suggestions = [],\n onResponse,\n loading = false,\n error,\n label = 'Ask AI',\n promptLabel = 'Ask a question',\n submitLabel = 'Send',\n loadingLabel = 'Thinking…',\n placeholder,\n disabled = false,\n side = 'bottom',\n align = 'end',\n className,\n panelClassName,\n },\n ref,\n ) {\n const [open, setOpen] = React.useState(false)\n const [prompt, setPrompt] = React.useState('')\n\n const send = (value: string) => {\n const trimmed = value.trim()\n if (!trimmed || loading) return\n onSubmit(trimmed)\n setPrompt('')\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <span className=\"relative inline-flex\">\n <PopoverTrigger asChild disabled={disabled}>\n <button\n ref={ref}\n type=\"button\"\n data-as=\"ai-button\"\n aria-label={label}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-1 rounded-full bg-[color-mix(in_srgb,var(--as-ai)_12%,transparent)] px-2.5 py-1 text-xs font-medium text-[var(--as-ai)] transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n >\n <Sparkles className=\"size-3.5\" aria-hidden />\n {label}\n </button>\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n aria-label={label}\n className={cn('w-72 p-3', panelClassName)}\n >\n <form\n data-as=\"ai-button-panel\"\n onSubmit={(event) => {\n event.preventDefault()\n send(prompt)\n }}\n >\n {suggestions.length > 0 ? (\n <div className=\"mb-2 flex flex-wrap gap-1\">\n {suggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n disabled={loading}\n onClick={() => send(suggestion)}\n className=\"cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-secondary)] px-2 py-1 text-xs transition-colors hover:bg-[color-mix(in_srgb,var(--as-ai)_14%,var(--as-secondary))] disabled:pointer-events-none disabled:opacity-50\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n ) : null}\n <div className=\"mb-2 flex items-center gap-2\">\n <input\n type=\"text\"\n aria-label={promptLabel}\n placeholder={placeholder ?? promptLabel}\n value={prompt}\n onChange={(event) => setPrompt(event.target.value)}\n className=\"h-8 w-full rounded-[var(--as-radius-sm)] border border-[var(--as-border)] bg-[var(--as-surface)] px-2 text-sm outline-none placeholder:text-[var(--as-muted-fg)] focus-visible:border-[var(--as-focus-ring)]\"\n />\n <button\n type=\"submit\"\n aria-label={submitLabel}\n disabled={loading || !prompt.trim()}\n className=\"shrink-0 cursor-pointer rounded-[var(--as-radius-sm)] bg-[var(--as-ai)] p-1.5 text-[var(--as-ai-fg)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-40\"\n >\n <Send className=\"size-3.5\" aria-hidden />\n </button>\n </div>\n {loading ? (\n <p className=\"text-sm text-[var(--as-muted-fg)]\" role=\"status\">\n {loadingLabel}\n </p>\n ) : null}\n {error ? (\n <p role=\"alert\" className=\"text-sm text-[var(--as-danger)]\">\n {error}\n </p>\n ) : null}\n {onResponse}\n </form>\n </PopoverContent>\n </span>\n </Popover>\n )\n },\n)\n"]}
|
|
@@ -32,5 +32,5 @@ var Input = React.forwardRef(function Input2({ className, label, hint, error, id
|
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
export { Input };
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-M4V7XHL7.js.map
|
|
36
|
+
//# sourceMappingURL=chunk-M4V7XHL7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input/Input.tsx"],"names":["Input"],"mappings":";;;;AASO,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA,CAAyC,SAASA,MAAAA,CAC3E,EAAE,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,GAAG,KAAA,IAChD,GAAA,EACA;AACA,EAAA,MAAM,SAAe,KAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,EAAA,GAAK,MAAA,KAAW,KAAA,IAAS,IAAA,IAAQ,QAAQ,MAAA,GAAS,MAAA,CAAA;AACxD,EAAA,MAAM,WAAA,GAAc,QAAQ,CAAA,EAAG,EAAE,WAAW,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AAElE,EAAA,MAAM,KAAA,mBACJ,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,EAAQ,OAAA;AAAA,MACR,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,MAC7B,kBAAA,EAAkB,WAAA;AAAA,MAClB,SAAA,EAAW,EAAA;AAAA,QACT,oZAAA;AAAA,QACA,KAAA,IACE,yGAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAGF,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,IAAA,IAAQ,CAAC,OAAO,OAAO,KAAA;AAEtC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,uBACE,OAAA,EAAA,EAAM,OAAA,EAAS,IAAI,SAAA,EAAU,sDAAA,EAC3B,iBACH,CAAA,GACE,IAAA;AAAA,IACH,KAAA;AAAA,IACA,IAAA,IAAQ,CAAC,KAAA,mBACR,GAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,EAAS,SAAA,EAAU,mCAAA,EAC5B,QAAA,EAAA,IAAA,EACH,CAAA,GACE,IAAA;AAAA,IACH,KAAA,mBACC,GAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,6CAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAC","file":"chunk-M4V7XHL7.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface InputProps extends React.ComponentProps<'input'> {\n label?: React.ReactNode\n hint?: React.ReactNode\n error?: string\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, label, hint, error, id: idProp, ...props },\n ref,\n) {\n const autoId = React.useId()\n const id = idProp ?? (label || hint || error ? autoId : undefined)\n const describedBy = error ? `${id}-error` : hint ? `${id}-hint` : undefined\n\n const input = (\n <input\n ref={ref}\n id={id}\n data-as=\"input\"\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n className={cn(\n 'flex h-9 w-full rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface)] px-3 py-1 text-sm text-[var(--as-fg)] transition-colors placeholder:text-[var(--as-muted-fg)] focus-visible:border-[var(--as-focus-ring)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--as-focus-ring)] focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50',\n error &&\n 'border-[var(--as-danger)] focus-visible:border-[var(--as-danger)] focus-visible:ring-[var(--as-danger)]',\n className,\n )}\n {...props}\n />\n )\n\n if (!label && !hint && !error) return input\n\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n {label ? (\n <label htmlFor={id} className=\"text-sm font-medium leading-none text-[var(--as-fg)]\">\n {label}\n </label>\n ) : null}\n {input}\n {hint && !error ? (\n <p id={`${id}-hint`} className=\"text-xs text-[var(--as-muted-fg)]\">\n {hint}\n </p>\n ) : null}\n {error ? (\n <p id={`${id}-error`} role=\"alert\" className=\"text-xs font-medium text-[var(--as-danger)]\">\n {error}\n </p>\n ) : null}\n </div>\n )\n})\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PopoverButton } from './chunk-
|
|
1
|
+
import { PopoverButton } from './chunk-BE3XFZWU.js';
|
|
2
2
|
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
3
|
import { Info } from 'lucide-react';
|
|
4
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -42,5 +42,5 @@ function InfoButton({
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export { InfoButton };
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-OT6EQFMP.js.map
|
|
46
|
+
//# sourceMappingURL=chunk-OT6EQFMP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/info-button/InfoButton.tsx"],"names":[],"mappings":";;;;;AAcO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,aAAA;AAAA,EACR,WAAA,GAAc,IAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd;AACF,CAAA,EAAoB;AAClB,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAQ,aAAA;AAAA,MACR,SAAA,EAAW,EAAA;AAAA,QACT,UAAA;AAAA,QACA,WAAA,IACE,+EAAA;AAAA,QACF;AAAA,OACF;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAC9C,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAC1C,aAAA,EAAe,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAEhD,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,yBAAS,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,UAC9C,KAAA;AAAA,UACA,gBAAA,EAAiB,4DAAA;AAAA,UACjB,WAAA;AAAA,UACA,cAAA,EAAe,UAAA;AAAA,UAEf,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,mBAAQ,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAA,EAAuB,iBAAM,CAAA,GAAO,IAAA;AAAA,4BAC1D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAqC,QAAA,EAAS;AAAA,WAAA,EAC/D;AAAA;AAAA;AACF;AAAA,GACF;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/info-button/InfoButton.tsx"],"names":[],"mappings":";;;;;AAcO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,aAAA;AAAA,EACR,WAAA,GAAc,IAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd;AACF,CAAA,EAAoB;AAClB,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAQ,aAAA;AAAA,MACR,SAAA,EAAW,EAAA;AAAA,QACT,UAAA;AAAA,QACA,WAAA,IACE,+EAAA;AAAA,QACF;AAAA,OACF;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAC9C,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAC1C,aAAA,EAAe,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,MAEhD,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,yBAAS,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,UAC9C,KAAA;AAAA,UACA,gBAAA,EAAiB,4DAAA;AAAA,UACjB,WAAA;AAAA,UACA,cAAA,EAAe,UAAA;AAAA,UAEf,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,mBAAQ,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAA,EAAuB,iBAAM,CAAA,GAAO,IAAA;AAAA,4BAC1D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAqC,QAAA,EAAS;AAAA,WAAA,EAC/D;AAAA;AAAA;AACF;AAAA,GACF;AAEJ","file":"chunk-OT6EQFMP.js","sourcesContent":["import * as React from 'react'\nimport { Info } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { PopoverButton } from '../popover-button/PopoverButton'\n\nexport interface InfoButtonProps {\n children: React.ReactNode\n title?: React.ReactNode\n label?: string\n showOnHover?: boolean\n openOnHover?: boolean\n className?: string\n}\n\nexport function InfoButton({\n children,\n title,\n label = 'Information',\n showOnHover = true,\n openOnHover = true,\n className,\n}: InfoButtonProps) {\n return (\n <span\n data-as=\"info-button\"\n className={cn(\n 'shrink-0',\n showOnHover &&\n 'opacity-0 transition-opacity focus-within:opacity-100 group-hover:opacity-100',\n className,\n )}\n onMouseDown={(event) => event.stopPropagation()}\n onClick={(event) => event.stopPropagation()}\n onDoubleClick={(event) => event.stopPropagation()}\n >\n <PopoverButton\n trigger={<Info className=\"size-4\" aria-hidden />}\n label={label}\n triggerClassName=\"size-6 text-[var(--as-muted-fg)] hover:text-[var(--as-fg)]\"\n openOnHover={openOnHover}\n panelClassName=\"max-w-xs\"\n >\n <div className=\"space-y-1.5\">\n {title ? <p className=\"text-sm font-medium\">{title}</p> : null}\n <div className=\"text-xs text-[var(--as-muted-fg)]\">{children}</div>\n </div>\n </PopoverButton>\n </span>\n )\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PSAJSOXL.js"}
|
|
@@ -16,7 +16,7 @@ var PopoverContent = React.forwardRef(function PopoverContent2({ className, alig
|
|
|
16
16
|
align,
|
|
17
17
|
sideOffset,
|
|
18
18
|
className: cn(
|
|
19
|
-
"as-anim-pop z-
|
|
19
|
+
"as-anim-pop z-[var(--as-z-popover)] w-72 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-4 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
|
|
20
20
|
className
|
|
21
21
|
),
|
|
22
22
|
...props
|
|
@@ -25,5 +25,5 @@ var PopoverContent = React.forwardRef(function PopoverContent2({ className, alig
|
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger };
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-SIIY2EGI.js.map
|
|
29
|
+
//# sourceMappingURL=chunk-SIIY2EGI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/popover/Popover.tsx"],"names":["PopoverContent"],"mappings":";;;;;AAIO,IAAM,OAAA,GAA2B,gBAAA,CAAA;AACjC,IAAM,cAAA,GAAkC,gBAAA,CAAA;AACxC,IAAM,aAAA,GAAiC,gBAAA,CAAA;AACvC,IAAM,YAAA,GAAgC,gBAAA,CAAA;AAEtC,IAAM,cAAA,GAAuB,KAAA,CAAA,UAAA,CAGlC,SAASA,eAAAA,CAAe,EAAE,SAAA,EAAW,KAAA,GAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,IAAS,GAAA,EAAK;AACxF,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,SAAA;AAAA,MACR,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,
|
|
1
|
+
{"version":3,"sources":["../src/components/popover/Popover.tsx"],"names":["PopoverContent"],"mappings":";;;;;AAIO,IAAM,OAAA,GAA2B,gBAAA,CAAA;AACjC,IAAM,cAAA,GAAkC,gBAAA,CAAA;AACxC,IAAM,aAAA,GAAiC,gBAAA,CAAA;AACvC,IAAM,YAAA,GAAgC,gBAAA,CAAA;AAEtC,IAAM,cAAA,GAAuB,KAAA,CAAA,UAAA,CAGlC,SAASA,eAAAA,CAAe,EAAE,SAAA,EAAW,KAAA,GAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,IAAS,GAAA,EAAK;AACxF,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,SAAA;AAAA,MACR,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8MAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ,CAAC","file":"chunk-SIIY2EGI.js","sourcesContent":["import * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../../lib/utils'\n\nexport const Popover = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\nexport const PopoverClose = PopoverPrimitive.Close\n\nexport const PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(function PopoverContent({ className, align = 'center', sideOffset = 6, ...props }, ref) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n data-as=\"popover\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'as-anim-pop z-[var(--as-z-popover)] w-72 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-4 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n})\n"]}
|
|
@@ -27,7 +27,7 @@ var ModalContent = React.forwardRef(function ModalContent2({ className, children
|
|
|
27
27
|
DialogPrimitive.Overlay,
|
|
28
28
|
{
|
|
29
29
|
"data-as": "modal-overlay",
|
|
30
|
-
className: cn("as-anim-fade fixed inset-0 z-
|
|
30
|
+
className: cn("as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]")
|
|
31
31
|
}
|
|
32
32
|
),
|
|
33
33
|
/* @__PURE__ */ jsxs(
|
|
@@ -36,7 +36,7 @@ var ModalContent = React.forwardRef(function ModalContent2({ className, children
|
|
|
36
36
|
ref,
|
|
37
37
|
"data-as": "modal",
|
|
38
38
|
className: cn(
|
|
39
|
-
"as-anim-modal fixed left-1/2 top-1/2 z-
|
|
39
|
+
"as-anim-modal fixed left-1/2 top-1/2 z-[var(--as-z-modal)] flex max-h-[85vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-y-auto rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
|
|
40
40
|
modalContentVariants({ size }),
|
|
41
41
|
className
|
|
42
42
|
),
|
|
@@ -109,5 +109,5 @@ var ModalFooter = React.forwardRef(
|
|
|
109
109
|
);
|
|
110
110
|
|
|
111
111
|
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants };
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
113
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-SXVOJ7WE.js.map
|
|
113
|
+
//# sourceMappingURL=chunk-SXVOJ7WE.js.map
|