@neuronection/assistant-ui 0.18.0 → 0.20.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 +16 -0
- package/README.md +3 -0
- package/dist/ai-actions-dropdown.d.ts +3 -0
- package/dist/ai-actions-dropdown.js +1 -1
- package/dist/ai-text-transform.d.ts +44 -0
- package/dist/ai-text-transform.js +3 -0
- package/dist/ai-text-transform.js.map +1 -0
- package/dist/chunk-2PR6POP6.js +543 -0
- package/dist/chunk-2PR6POP6.js.map +1 -0
- package/dist/chunk-BKAO7BTU.js +156 -0
- package/dist/chunk-BKAO7BTU.js.map +1 -0
- package/dist/chunk-KAC2DOLH.js +362 -0
- package/dist/chunk-KAC2DOLH.js.map +1 -0
- package/dist/chunk-LWSLNCW2.js +271 -0
- package/dist/chunk-LWSLNCW2.js.map +1 -0
- package/dist/chunk-XUDCCQRN.js +253 -0
- package/dist/chunk-XUDCCQRN.js.map +1 -0
- package/dist/dictation.d.ts +64 -0
- package/dist/dictation.js +3 -0
- package/dist/dictation.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +16 -12
- package/dist/index.js.map +1 -1
- package/dist/rich-text-editor.d.ts +51 -0
- package/dist/rich-text-editor.js +3 -0
- package/dist/rich-text-editor.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/text-diff-view.d.ts +61 -0
- package/dist/text-diff-view.js +3 -0
- package/dist/text-diff-view.js.map +1 -0
- package/package.json +24 -2
- package/dist/chunk-I37SYHM7.js +0 -123
- package/dist/chunk-I37SYHM7.js.map +0 -1
package/dist/chunk-I37SYHM7.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ai-actions-dropdown/AiActionsDropdown.tsx"],"names":["AiActionsDropdown"],"mappings":"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","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"]}
|