@nucleux/md3-prompt-enhancer 0.7.0 → 0.8.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/dist/index.cjs +20 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/package.json +13 -11
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,7 @@ var React = require('react');
|
|
|
5
5
|
var lucideReact = require('lucide-react');
|
|
6
6
|
var utils = require('@nucleux/utils');
|
|
7
7
|
var promptEnhancer = require('@nucleux/prompt-enhancer');
|
|
8
|
+
var md3OpenInput = require('@nucleux/md3-open-input');
|
|
8
9
|
var md3AgentComposer = require('@nucleux/md3-agent-composer');
|
|
9
10
|
var md3Button = require('@nucleux/md3-button');
|
|
10
11
|
var md3Card = require('@nucleux/md3-card');
|
|
@@ -54,10 +55,15 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
|
|
|
54
55
|
placeholder = promptEnhancer.PROMPT_ENHANCER_TEXT.placeholder,
|
|
55
56
|
failureMessage = promptEnhancer.PROMPT_ENHANCER_TEXT.failure,
|
|
56
57
|
composerActions,
|
|
58
|
+
composerLeading,
|
|
59
|
+
trigger = "chip",
|
|
60
|
+
settingsItems,
|
|
61
|
+
onSettingsSelect,
|
|
57
62
|
onSubmit
|
|
58
63
|
} = props;
|
|
59
64
|
const { className, ...rest } = promptEnhancer.splitPromptEnhancerProps(props);
|
|
60
65
|
const pe = promptEnhancer.usePromptEnhancer(props);
|
|
66
|
+
const settingsControl = trigger === "settings";
|
|
61
67
|
const uid = React__namespace.useId();
|
|
62
68
|
const busy = pe.state === "enhancing";
|
|
63
69
|
const listed = showChanges && pe.changes.length > 0;
|
|
@@ -258,13 +264,24 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
|
|
|
258
264
|
onValueChange: pe.setValue,
|
|
259
265
|
onSubmit: pe.submit,
|
|
260
266
|
placeholder,
|
|
261
|
-
leftActions: hint != null ? /* @__PURE__ */ jsxRuntime.
|
|
267
|
+
leftActions: composerLeading != null || settingsControl || hint != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
268
|
+
composerLeading,
|
|
269
|
+
settingsControl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
+
md3OpenInput.Md3RequestSettings,
|
|
271
|
+
{
|
|
272
|
+
items: promptEnhancer.promptEnhancerSettingsItems(pe, /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, {}), settingsItems),
|
|
273
|
+
onSelect: (id) => promptEnhancer.selectPromptEnhancerSetting(pe, id, onSettingsSelect),
|
|
274
|
+
className: "static [&>[role=menu]]:left-10"
|
|
275
|
+
}
|
|
276
|
+
),
|
|
277
|
+
hint != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 text-xs text-md-on-surface-variant", children: hint })
|
|
278
|
+
] }) : void 0,
|
|
262
279
|
rightActions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
263
|
-
tool,
|
|
280
|
+
!settingsControl && tool,
|
|
264
281
|
composerActions
|
|
265
282
|
] }),
|
|
266
283
|
className: utils.cn(
|
|
267
|
-
"rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base",
|
|
284
|
+
"relative rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base",
|
|
268
285
|
!onSubmit && "[&_button[aria-label=Send]]:hidden"
|
|
269
286
|
)
|
|
270
287
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"names":["cn","React","PROMPT_ENHANCER_TEXT","splitPromptEnhancerProps","usePromptEnhancer","jsx","jsxs","MessageSquareText","Md3Card","Md3Checkbox","CircleHelp","Md3Button","Pencil","Loader2","Check","Undo2","AlertCircle","Sparkles","Md3Switch","Md3AgentComposer","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as React from \"react\";\nimport { AlertCircle, Check, CircleHelp, Loader2, MessageSquareText, Pencil, Sparkles, Undo2 } from \"lucide-react\";\nimport { cn } from \"@nucleux/utils\";\nimport {\n PROMPT_ENHANCER_TEXT,\n describePromptEnhancerChange,\n splitPromptEnhancerProps,\n usePromptEnhancer,\n type PromptEnhancerChange,\n type PromptEnhancerController,\n type PromptEnhancerDiffStyle,\n type PromptEnhancerProps,\n type PromptEnhancerSegment,\n type PromptEnhancerState,\n type PromptEnhancerSuggestion,\n type PromptEnhancerVariant,\n} from \"@nucleux/prompt-enhancer\";\nimport { Md3AgentComposer } from \"@nucleux/md3-agent-composer\";\nimport { Md3Button } from \"@nucleux/md3-button\";\nimport { Md3Card } from \"@nucleux/md3-card\";\nimport { Md3Checkbox } from \"@nucleux/md3-checkbox\";\nimport { Md3Switch } from \"@nucleux/md3-switch\";\n\n/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */\nexport type Md3PromptEnhancerProps = PromptEnhancerProps;\n/** \"preview-diff\", \"wand-button\" or \"auto-enhance-toggle\". */\nexport type Md3PromptEnhancerVariant = PromptEnhancerVariant;\n/** \"original\", \"enhancing\", \"enhanced\", \"editing\", \"accepted\", \"reverted\" or \"failed\". */\nexport type Md3PromptEnhancerState = PromptEnhancerState;\n/** \"split\" or \"inline\". */\nexport type Md3PromptEnhancerDiffStyle = PromptEnhancerDiffStyle;\n/** One proposed addition — identical to `PromptEnhancerChange`. */\nexport type Md3PromptEnhancerChange = PromptEnhancerChange;\n/** What `onEnhance` resolves with — identical to `PromptEnhancerSuggestion`. */\nexport type Md3PromptEnhancerSuggestion = PromptEnhancerSuggestion;\n/** A run of the marked suggestion — identical to `PromptEnhancerSegment`. */\nexport type Md3PromptEnhancerSegment = PromptEnhancerSegment;\n/** The shared controller — identical to `PromptEnhancerController`. */\nexport type Md3PromptEnhancerController = PromptEnhancerController;\n\nconst stateLayer =\n \"before:absolute before:inset-0 before:bg-current before:opacity-0 before:transition-opacity before:content-[''] hover:before:opacity-[0.08] focus-visible:before:opacity-[0.12] active:before:opacity-[0.12] motion-reduce:before:transition-none\";\n\nconst overline = \"flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]\";\n\nconst textLink = cn(\n \"relative inline-flex min-h-8 items-center gap-1 overflow-hidden rounded-full px-2.5 text-[13px] font-medium outline-none focus-visible:ring-2 focus-visible:ring-md-primary disabled:pointer-events-none disabled:opacity-[0.38] [&_svg]:size-4\",\n stateLayer,\n);\n\n/**\n * The Material 3 Prompt Enhancer: an Improve-style tool in the\n * `Md3AgentComposer` toolbar proposes a clearer version of the request, shown\n * in an outlined card above the composer — what they wrote beside the\n * suggestion, every addition highlighted in primary-container and explained,\n * assumptions labelled, each change removable with a checkbox. Use updates the\n * composer with Undo and sends nothing; Edit, Keep original and a failure line\n * that leaves the original untouched are built in. Same API, states and\n * accessible names as `PromptEnhancer` from `@nucleux/prompt-enhancer`.\n */\nexport const Md3PromptEnhancer = React.forwardRef<HTMLDivElement, Md3PromptEnhancerProps>((props, ref) => {\n const {\n variant = \"preview-diff\",\n diffStyle = \"split\",\n showChanges = true,\n explain = true,\n allowEdit = true,\n allowKeepOriginal = true,\n undo = true,\n actionLabel = PROMPT_ENHANCER_TEXT.actionLabel,\n heading = PROMPT_ENHANCER_TEXT.heading,\n hint,\n placeholder = PROMPT_ENHANCER_TEXT.placeholder,\n failureMessage = PROMPT_ENHANCER_TEXT.failure,\n composerActions,\n onSubmit,\n } = props;\n const { className, ...rest } = splitPromptEnhancerProps(props);\n const pe = usePromptEnhancer(props);\n const uid = React.useId();\n const busy = pe.state === \"enhancing\";\n const listed = showChanges && pe.changes.length > 0;\n const kept = pe.changes.length - pe.removed.length;\n\n const marked = pe.segments.map((s, i) => {\n if (s.type === \"text\" || !showChanges) return s.type === \"removed\" ? null : <React.Fragment key={i}>{s.text}</React.Fragment>;\n if (s.type === \"added\")\n return (\n <ins\n key={i}\n className=\"rounded-md-xs bg-md-primary-container/75 px-0.5 text-md-on-primary-container underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]\"\n >\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.added}</span>\n {s.text}\n </ins>\n );\n return (\n <del key={i} className=\"text-md-on-surface-variant line-through\">\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.removed}</span>\n {s.text}\n </del>\n );\n });\n\n const improvedOverline = (\n <p className={cn(overline, \"text-md-primary\")}>\n <MessageSquareText aria-hidden className=\"size-4\" />\n {PROMPT_ENHANCER_TEXT.enhanced}\n </p>\n );\n\n const review = pe.showReview ? (\n <Md3Card\n variant=\"outlined\"\n role=\"region\"\n aria-label={PROMPT_ENHANCER_TEXT.regionLabel}\n onKeyDown={pe.onReviewKeyDown}\n className=\"flex flex-col gap-3.5 rounded-md-lg bg-md-surface px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none\"\n >\n {listed && (\n <div className=\"flex flex-wrap items-baseline justify-between gap-3\">\n <p className=\"text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs text-md-on-surface-variant\">\n {kept} of {pe.changes.length} changes\n </span>\n </div>\n )}\n\n {pe.state === \"editing\" ? (\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={`${uid}-edit`} className=\"px-1 text-xs font-medium text-md-primary\">\n {PROMPT_ENHANCER_TEXT.editLabel}\n </label>\n <textarea\n id={`${uid}-edit`}\n rows={3}\n autoFocus\n value={pe.editText}\n onChange={(e) => pe.setEditText(e.target.value)}\n className=\"w-full resize-none rounded-md-xs border-2 border-md-primary bg-transparent px-[15px] py-3 text-base leading-6 text-md-on-surface outline-none\"\n />\n </div>\n ) : diffStyle === \"split\" ? (\n <div className=\"grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5\">\n <div className=\"flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3\">\n <p className={cn(overline, \"text-md-on-surface-variant\")}>{PROMPT_ENHANCER_TEXT.youWrote}</p>\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{marked}</p>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {improvedOverline}\n <p className=\"text-base leading-[26px] text-md-on-surface\">{marked}</p>\n </div>\n )}\n\n {listed && pe.state !== \"editing\" && (\n <div role=\"group\" aria-label={PROMPT_ENHANCER_TEXT.changesLabel} className=\"flex flex-col border-t border-md-outline-variant\">\n {pe.changes.map((c) => {\n const on = !pe.removed.includes(c.id);\n const cb = `${uid}-c-${c.id}`;\n const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(\" \");\n return (\n <div key={c.id} className=\"flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0\">\n <Md3Checkbox\n id={cb}\n checked={on}\n onCheckedChange={() => pe.toggleChange(c.id)}\n aria-labelledby={`${cb}-l`}\n aria-describedby={desc || undefined}\n className=\"-ml-2.5 shrink-0\"\n />\n <div className=\"flex min-w-0 flex-col gap-0.5 pt-2.5\">\n <label\n id={`${cb}-l`}\n htmlFor={cb}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-5 text-md-on-surface\",\n !on && \"text-md-on-surface-variant line-through\",\n )}\n >\n {describePromptEnhancerChange(c)}\n </label>\n {explain && c.reason && (\n <span id={`${cb}-why`} className=\"text-[12.5px] leading-[18px] text-md-on-surface-variant\">\n {c.reason}\n </span>\n )}\n {c.assumption && (\n <span\n id={`${cb}-as`}\n className=\"mt-1 inline-flex items-center gap-1 self-start rounded-md-sm bg-md-surface-container-high px-2 py-0.5 text-[11.5px] font-medium text-md-on-surface-variant\"\n >\n <CircleHelp aria-hidden className=\"size-3.5\" />\n {c.assumption}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center justify-between gap-x-3 gap-y-2\">\n {pe.state !== \"editing\" && allowEdit ? (\n <Md3Button variant=\"text\" icon={<Pencil aria-hidden />} onClick={pe.edit} className=\"-ml-1\">\n {PROMPT_ENHANCER_TEXT.edit}\n </Md3Button>\n ) : (\n <span />\n )}\n <span className=\"ml-auto inline-flex flex-wrap gap-2\">\n {pe.state === \"editing\" ? (\n <Md3Button variant=\"outlined\" onClick={pe.cancelEdit}>\n {PROMPT_ENHANCER_TEXT.cancelEdit}\n </Md3Button>\n ) : (\n allowKeepOriginal && (\n <Md3Button variant=\"outlined\" onClick={pe.keep}>\n {PROMPT_ENHANCER_TEXT.keep}\n </Md3Button>\n )\n )}\n <Md3Button variant=\"filled\" onClick={pe.use}>\n {pe.state === \"editing\" ? PROMPT_ENHANCER_TEXT.useEdited : PROMPT_ENHANCER_TEXT.use}\n </Md3Button>\n </span>\n </div>\n </Md3Card>\n ) : null;\n\n const noteRow = \"flex flex-wrap items-center gap-2 px-1 text-[13px] leading-5 text-md-on-surface-variant [&>svg]:size-[18px] [&>svg]:shrink-0\";\n const note =\n pe.state === \"enhancing\" ? (\n <p className={noteRow}>\n <Loader2 aria-hidden className=\"animate-spin text-md-primary motion-reduce:animate-none\" />\n {PROMPT_ENHANCER_TEXT.working}\n </p>\n ) : pe.state === \"accepted\" ? (\n <div className={noteRow}>\n <Check aria-hidden className=\"text-md-primary\" />\n <span className=\"flex-1\">{PROMPT_ENHANCER_TEXT.accepted}</span>\n {undo && (\n <button type=\"button\" onClick={pe.undoUse} className={cn(textLink, \"text-md-primary\")}>\n <Undo2 aria-hidden />\n {PROMPT_ENHANCER_TEXT.undo}\n </button>\n )}\n </div>\n ) : pe.state === \"reverted\" ? (\n <p className={noteRow}>\n <Undo2 aria-hidden className=\"text-md-primary\" />\n {PROMPT_ENHANCER_TEXT.reverted}\n </p>\n ) : null;\n\n const failed =\n pe.state === \"failed\" ? (\n <div\n role=\"alert\"\n className=\"flex flex-wrap items-center gap-2 rounded-md-md bg-md-error-container py-2 pl-3 pr-2 text-[13px] leading-5 text-md-on-error-container\"\n >\n <AlertCircle aria-hidden className=\"size-[18px] shrink-0\" />\n <span className=\"min-w-0 flex-1\">{failureMessage}</span>\n <button type=\"button\" onClick={pe.enhance} disabled={!pe.canEnhance} className={textLink}>\n {PROMPT_ENHANCER_TEXT.retry}\n </button>\n {allowKeepOriginal && (\n <button type=\"button\" onClick={pe.keep} className={textLink}>\n {PROMPT_ENHANCER_TEXT.keep}\n </button>\n )}\n </div>\n ) : null;\n\n const tool = (\n <button\n type=\"button\"\n onClick={busy ? pe.cancel : pe.enhance}\n disabled={!busy && !pe.canEnhance}\n aria-label={busy ? PROMPT_ENHANCER_TEXT.cancel : `${actionLabel} this prompt with AI`}\n className={cn(\n \"relative inline-flex min-h-8 shrink-0 items-center gap-1.5 overflow-hidden rounded-md-sm border py-1 pl-2 pr-2.5 text-[13px] font-medium leading-5 outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-md-primary focus-visible:ring-offset-2 focus-visible:ring-offset-md-surface\",\n \"disabled:pointer-events-none disabled:opacity-[0.38] motion-reduce:transition-none [&_svg]:size-[18px]\",\n stateLayer,\n busy\n ? \"border-transparent bg-md-secondary-container text-md-on-secondary-container\"\n : \"border-md-outline-variant bg-transparent text-md-on-surface-variant\",\n )}\n >\n {busy ? (\n <Loader2 aria-hidden className=\"relative animate-spin motion-reduce:animate-none\" />\n ) : (\n <Sparkles aria-hidden className=\"relative\" />\n )}\n <span className=\"relative\">{busy ? PROMPT_ENHANCER_TEXT.busy : actionLabel}</span>\n </button>\n );\n\n const autoToggle =\n variant === \"auto-enhance-toggle\" ? (\n <Md3Card variant=\"outlined\" className=\"flex items-center justify-between gap-4 rounded-md-lg bg-md-surface px-4 py-3\">\n <div className=\"min-w-0\">\n <p id={`${uid}-auto`} className=\"text-sm font-medium leading-5 text-md-on-surface\">\n {PROMPT_ENHANCER_TEXT.autoTitle}\n </p>\n <p id={`${uid}-auto-d`} className=\"mt-0.5 text-xs leading-4 text-md-on-surface-variant\">\n {PROMPT_ENHANCER_TEXT.autoDescription}\n </p>\n </div>\n <Md3Switch\n checked={pe.autoEnhance}\n onCheckedChange={pe.setAutoEnhance}\n aria-labelledby={`${uid}-auto`}\n aria-describedby={`${uid}-auto-d`}\n />\n </Md3Card>\n ) : null;\n\n return (\n <div ref={ref} data-state={pe.state} className={cn(\"flex w-full flex-col gap-3\", className)} {...rest}>\n {autoToggle}\n {review}\n {failed}\n <div role=\"status\" aria-live=\"polite\" className={note ? undefined : \"sr-only\"}>\n {note ?? pe.announcement}\n </div>\n <Md3AgentComposer\n value={pe.value}\n onValueChange={pe.setValue}\n onSubmit={pe.submit}\n placeholder={placeholder}\n leftActions={hint != null ? <span className=\"px-1 text-xs text-md-on-surface-variant\">{hint}</span> : undefined}\n rightActions={\n <>\n {tool}\n {composerActions}\n </>\n }\n className={cn(\n \"rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base\",\n !onSubmit && \"[&_button[aria-label=Send]]:hidden\",\n )}\n />\n </div>\n );\n});\nMd3PromptEnhancer.displayName = \"Md3PromptEnhancer\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"names":["cn","React","PROMPT_ENHANCER_TEXT","splitPromptEnhancerProps","usePromptEnhancer","jsx","jsxs","MessageSquareText","Md3Card","Md3Checkbox","CircleHelp","Md3Button","Pencil","Loader2","Check","Undo2","AlertCircle","Sparkles","Md3Switch","Md3AgentComposer","Fragment","Md3RequestSettings","promptEnhancerSettingsItems","selectPromptEnhancerSetting"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as React from \"react\";\nimport { AlertCircle, Check, CircleHelp, Loader2, MessageSquareText, Pencil, Sparkles, Undo2 } from \"lucide-react\";\nimport { cn } from \"@nucleux/utils\";\nimport {\n PROMPT_ENHANCER_TEXT,\n describePromptEnhancerChange,\n promptEnhancerSettingsItems,\n selectPromptEnhancerSetting,\n splitPromptEnhancerProps,\n usePromptEnhancer,\n type PromptEnhancerChange,\n type PromptEnhancerController,\n type PromptEnhancerDiffStyle,\n type PromptEnhancerProps,\n type PromptEnhancerSegment,\n type PromptEnhancerState,\n type PromptEnhancerSuggestion,\n type PromptEnhancerTrigger,\n type PromptEnhancerVariant,\n} from \"@nucleux/prompt-enhancer\";\nimport { Md3RequestSettings } from \"@nucleux/md3-open-input\";\nimport { Md3AgentComposer } from \"@nucleux/md3-agent-composer\";\nimport { Md3Button } from \"@nucleux/md3-button\";\nimport { Md3Card } from \"@nucleux/md3-card\";\nimport { Md3Checkbox } from \"@nucleux/md3-checkbox\";\nimport { Md3Switch } from \"@nucleux/md3-switch\";\n\n/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */\nexport type Md3PromptEnhancerProps = PromptEnhancerProps;\n/** \"preview-diff\", \"wand-button\" or \"auto-enhance-toggle\". */\nexport type Md3PromptEnhancerVariant = PromptEnhancerVariant;\n/** \"chip\" or \"settings\". */\nexport type Md3PromptEnhancerTrigger = PromptEnhancerTrigger;\n/** \"original\", \"enhancing\", \"enhanced\", \"editing\", \"accepted\", \"reverted\" or \"failed\". */\nexport type Md3PromptEnhancerState = PromptEnhancerState;\n/** \"split\" or \"inline\". */\nexport type Md3PromptEnhancerDiffStyle = PromptEnhancerDiffStyle;\n/** One proposed addition — identical to `PromptEnhancerChange`. */\nexport type Md3PromptEnhancerChange = PromptEnhancerChange;\n/** What `onEnhance` resolves with — identical to `PromptEnhancerSuggestion`. */\nexport type Md3PromptEnhancerSuggestion = PromptEnhancerSuggestion;\n/** A run of the marked suggestion — identical to `PromptEnhancerSegment`. */\nexport type Md3PromptEnhancerSegment = PromptEnhancerSegment;\n/** The shared controller — identical to `PromptEnhancerController`. */\nexport type Md3PromptEnhancerController = PromptEnhancerController;\n\nconst stateLayer =\n \"before:absolute before:inset-0 before:bg-current before:opacity-0 before:transition-opacity before:content-[''] hover:before:opacity-[0.08] focus-visible:before:opacity-[0.12] active:before:opacity-[0.12] motion-reduce:before:transition-none\";\n\nconst overline = \"flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]\";\n\nconst textLink = cn(\n \"relative inline-flex min-h-8 items-center gap-1 overflow-hidden rounded-full px-2.5 text-[13px] font-medium outline-none focus-visible:ring-2 focus-visible:ring-md-primary disabled:pointer-events-none disabled:opacity-[0.38] [&_svg]:size-4\",\n stateLayer,\n);\n\n/**\n * The Material 3 Prompt Enhancer: an Improve-style tool in the\n * `Md3AgentComposer` toolbar proposes a clearer version of the request, shown\n * in an outlined card above the composer — what they wrote beside the\n * suggestion, every addition highlighted in primary-container and explained,\n * assumptions labelled, each change removable with a checkbox. Use updates the\n * composer with Undo and sends nothing; Edit, Keep original and a failure line\n * that leaves the original untouched are built in. Same API, states and\n * accessible names as `PromptEnhancer` from `@nucleux/prompt-enhancer`.\n */\nexport const Md3PromptEnhancer = React.forwardRef<HTMLDivElement, Md3PromptEnhancerProps>((props, ref) => {\n const {\n variant = \"preview-diff\",\n diffStyle = \"split\",\n showChanges = true,\n explain = true,\n allowEdit = true,\n allowKeepOriginal = true,\n undo = true,\n actionLabel = PROMPT_ENHANCER_TEXT.actionLabel,\n heading = PROMPT_ENHANCER_TEXT.heading,\n hint,\n placeholder = PROMPT_ENHANCER_TEXT.placeholder,\n failureMessage = PROMPT_ENHANCER_TEXT.failure,\n composerActions,\n composerLeading,\n trigger = \"chip\",\n settingsItems,\n onSettingsSelect,\n onSubmit,\n } = props;\n const { className, ...rest } = splitPromptEnhancerProps(props);\n const pe = usePromptEnhancer(props);\n const settingsControl = trigger === \"settings\";\n const uid = React.useId();\n const busy = pe.state === \"enhancing\";\n const listed = showChanges && pe.changes.length > 0;\n const kept = pe.changes.length - pe.removed.length;\n\n const marked = pe.segments.map((s, i) => {\n if (s.type === \"text\" || !showChanges) return s.type === \"removed\" ? null : <React.Fragment key={i}>{s.text}</React.Fragment>;\n if (s.type === \"added\")\n return (\n <ins\n key={i}\n className=\"rounded-md-xs bg-md-primary-container/75 px-0.5 text-md-on-primary-container underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]\"\n >\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.added}</span>\n {s.text}\n </ins>\n );\n return (\n <del key={i} className=\"text-md-on-surface-variant line-through\">\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.removed}</span>\n {s.text}\n </del>\n );\n });\n\n const improvedOverline = (\n <p className={cn(overline, \"text-md-primary\")}>\n <MessageSquareText aria-hidden className=\"size-4\" />\n {PROMPT_ENHANCER_TEXT.enhanced}\n </p>\n );\n\n const review = pe.showReview ? (\n <Md3Card\n variant=\"outlined\"\n role=\"region\"\n aria-label={PROMPT_ENHANCER_TEXT.regionLabel}\n onKeyDown={pe.onReviewKeyDown}\n className=\"flex flex-col gap-3.5 rounded-md-lg bg-md-surface px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none\"\n >\n {listed && (\n <div className=\"flex flex-wrap items-baseline justify-between gap-3\">\n <p className=\"text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs text-md-on-surface-variant\">\n {kept} of {pe.changes.length} changes\n </span>\n </div>\n )}\n\n {pe.state === \"editing\" ? (\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={`${uid}-edit`} className=\"px-1 text-xs font-medium text-md-primary\">\n {PROMPT_ENHANCER_TEXT.editLabel}\n </label>\n <textarea\n id={`${uid}-edit`}\n rows={3}\n autoFocus\n value={pe.editText}\n onChange={(e) => pe.setEditText(e.target.value)}\n className=\"w-full resize-none rounded-md-xs border-2 border-md-primary bg-transparent px-[15px] py-3 text-base leading-6 text-md-on-surface outline-none\"\n />\n </div>\n ) : diffStyle === \"split\" ? (\n <div className=\"grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5\">\n <div className=\"flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3\">\n <p className={cn(overline, \"text-md-on-surface-variant\")}>{PROMPT_ENHANCER_TEXT.youWrote}</p>\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{marked}</p>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {improvedOverline}\n <p className=\"text-base leading-[26px] text-md-on-surface\">{marked}</p>\n </div>\n )}\n\n {listed && pe.state !== \"editing\" && (\n <div role=\"group\" aria-label={PROMPT_ENHANCER_TEXT.changesLabel} className=\"flex flex-col border-t border-md-outline-variant\">\n {pe.changes.map((c) => {\n const on = !pe.removed.includes(c.id);\n const cb = `${uid}-c-${c.id}`;\n const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(\" \");\n return (\n <div key={c.id} className=\"flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0\">\n <Md3Checkbox\n id={cb}\n checked={on}\n onCheckedChange={() => pe.toggleChange(c.id)}\n aria-labelledby={`${cb}-l`}\n aria-describedby={desc || undefined}\n className=\"-ml-2.5 shrink-0\"\n />\n <div className=\"flex min-w-0 flex-col gap-0.5 pt-2.5\">\n <label\n id={`${cb}-l`}\n htmlFor={cb}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-5 text-md-on-surface\",\n !on && \"text-md-on-surface-variant line-through\",\n )}\n >\n {describePromptEnhancerChange(c)}\n </label>\n {explain && c.reason && (\n <span id={`${cb}-why`} className=\"text-[12.5px] leading-[18px] text-md-on-surface-variant\">\n {c.reason}\n </span>\n )}\n {c.assumption && (\n <span\n id={`${cb}-as`}\n className=\"mt-1 inline-flex items-center gap-1 self-start rounded-md-sm bg-md-surface-container-high px-2 py-0.5 text-[11.5px] font-medium text-md-on-surface-variant\"\n >\n <CircleHelp aria-hidden className=\"size-3.5\" />\n {c.assumption}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center justify-between gap-x-3 gap-y-2\">\n {pe.state !== \"editing\" && allowEdit ? (\n <Md3Button variant=\"text\" icon={<Pencil aria-hidden />} onClick={pe.edit} className=\"-ml-1\">\n {PROMPT_ENHANCER_TEXT.edit}\n </Md3Button>\n ) : (\n <span />\n )}\n <span className=\"ml-auto inline-flex flex-wrap gap-2\">\n {pe.state === \"editing\" ? (\n <Md3Button variant=\"outlined\" onClick={pe.cancelEdit}>\n {PROMPT_ENHANCER_TEXT.cancelEdit}\n </Md3Button>\n ) : (\n allowKeepOriginal && (\n <Md3Button variant=\"outlined\" onClick={pe.keep}>\n {PROMPT_ENHANCER_TEXT.keep}\n </Md3Button>\n )\n )}\n <Md3Button variant=\"filled\" onClick={pe.use}>\n {pe.state === \"editing\" ? PROMPT_ENHANCER_TEXT.useEdited : PROMPT_ENHANCER_TEXT.use}\n </Md3Button>\n </span>\n </div>\n </Md3Card>\n ) : null;\n\n const noteRow = \"flex flex-wrap items-center gap-2 px-1 text-[13px] leading-5 text-md-on-surface-variant [&>svg]:size-[18px] [&>svg]:shrink-0\";\n const note =\n pe.state === \"enhancing\" ? (\n <p className={noteRow}>\n <Loader2 aria-hidden className=\"animate-spin text-md-primary motion-reduce:animate-none\" />\n {PROMPT_ENHANCER_TEXT.working}\n </p>\n ) : pe.state === \"accepted\" ? (\n <div className={noteRow}>\n <Check aria-hidden className=\"text-md-primary\" />\n <span className=\"flex-1\">{PROMPT_ENHANCER_TEXT.accepted}</span>\n {undo && (\n <button type=\"button\" onClick={pe.undoUse} className={cn(textLink, \"text-md-primary\")}>\n <Undo2 aria-hidden />\n {PROMPT_ENHANCER_TEXT.undo}\n </button>\n )}\n </div>\n ) : pe.state === \"reverted\" ? (\n <p className={noteRow}>\n <Undo2 aria-hidden className=\"text-md-primary\" />\n {PROMPT_ENHANCER_TEXT.reverted}\n </p>\n ) : null;\n\n const failed =\n pe.state === \"failed\" ? (\n <div\n role=\"alert\"\n className=\"flex flex-wrap items-center gap-2 rounded-md-md bg-md-error-container py-2 pl-3 pr-2 text-[13px] leading-5 text-md-on-error-container\"\n >\n <AlertCircle aria-hidden className=\"size-[18px] shrink-0\" />\n <span className=\"min-w-0 flex-1\">{failureMessage}</span>\n <button type=\"button\" onClick={pe.enhance} disabled={!pe.canEnhance} className={textLink}>\n {PROMPT_ENHANCER_TEXT.retry}\n </button>\n {allowKeepOriginal && (\n <button type=\"button\" onClick={pe.keep} className={textLink}>\n {PROMPT_ENHANCER_TEXT.keep}\n </button>\n )}\n </div>\n ) : null;\n\n const tool = (\n <button\n type=\"button\"\n onClick={busy ? pe.cancel : pe.enhance}\n disabled={!busy && !pe.canEnhance}\n aria-label={busy ? PROMPT_ENHANCER_TEXT.cancel : `${actionLabel} this prompt with AI`}\n className={cn(\n \"relative inline-flex min-h-8 shrink-0 items-center gap-1.5 overflow-hidden rounded-md-sm border py-1 pl-2 pr-2.5 text-[13px] font-medium leading-5 outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-md-primary focus-visible:ring-offset-2 focus-visible:ring-offset-md-surface\",\n \"disabled:pointer-events-none disabled:opacity-[0.38] motion-reduce:transition-none [&_svg]:size-[18px]\",\n stateLayer,\n busy\n ? \"border-transparent bg-md-secondary-container text-md-on-secondary-container\"\n : \"border-md-outline-variant bg-transparent text-md-on-surface-variant\",\n )}\n >\n {busy ? (\n <Loader2 aria-hidden className=\"relative animate-spin motion-reduce:animate-none\" />\n ) : (\n <Sparkles aria-hidden className=\"relative\" />\n )}\n <span className=\"relative\">{busy ? PROMPT_ENHANCER_TEXT.busy : actionLabel}</span>\n </button>\n );\n\n const autoToggle =\n variant === \"auto-enhance-toggle\" ? (\n <Md3Card variant=\"outlined\" className=\"flex items-center justify-between gap-4 rounded-md-lg bg-md-surface px-4 py-3\">\n <div className=\"min-w-0\">\n <p id={`${uid}-auto`} className=\"text-sm font-medium leading-5 text-md-on-surface\">\n {PROMPT_ENHANCER_TEXT.autoTitle}\n </p>\n <p id={`${uid}-auto-d`} className=\"mt-0.5 text-xs leading-4 text-md-on-surface-variant\">\n {PROMPT_ENHANCER_TEXT.autoDescription}\n </p>\n </div>\n <Md3Switch\n checked={pe.autoEnhance}\n onCheckedChange={pe.setAutoEnhance}\n aria-labelledby={`${uid}-auto`}\n aria-describedby={`${uid}-auto-d`}\n />\n </Md3Card>\n ) : null;\n\n return (\n <div ref={ref} data-state={pe.state} className={cn(\"flex w-full flex-col gap-3\", className)} {...rest}>\n {autoToggle}\n {review}\n {failed}\n <div role=\"status\" aria-live=\"polite\" className={note ? undefined : \"sr-only\"}>\n {note ?? pe.announcement}\n </div>\n <Md3AgentComposer\n value={pe.value}\n onValueChange={pe.setValue}\n onSubmit={pe.submit}\n placeholder={placeholder}\n leftActions={\n composerLeading != null || settingsControl || hint != null ? (\n <>\n {composerLeading}\n {settingsControl && (\n <Md3RequestSettings\n items={promptEnhancerSettingsItems(pe, <Sparkles />, settingsItems)}\n onSelect={(id) => selectPromptEnhancerSetting(pe, id, onSettingsSelect)}\n className=\"static [&>[role=menu]]:left-10\"\n />\n )}\n {hint != null && <span className=\"px-1 text-xs text-md-on-surface-variant\">{hint}</span>}\n </>\n ) : undefined\n }\n rightActions={\n <>\n {!settingsControl && tool}\n {composerActions}\n </>\n }\n className={cn(\n \"relative rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base\",\n !onSubmit && \"[&_button[aria-label=Send]]:hidden\",\n )}\n />\n </div>\n );\n});\nMd3PromptEnhancer.displayName = \"Md3PromptEnhancer\";\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { PromptEnhancerProps, PromptEnhancerChange, PromptEnhancerController, PromptEnhancerDiffStyle, PromptEnhancerSegment, PromptEnhancerState, PromptEnhancerSuggestion, PromptEnhancerVariant } from '@nucleux/prompt-enhancer';
|
|
2
|
+
import { PromptEnhancerProps, PromptEnhancerChange, PromptEnhancerController, PromptEnhancerDiffStyle, PromptEnhancerSegment, PromptEnhancerState, PromptEnhancerSuggestion, PromptEnhancerTrigger, PromptEnhancerVariant } from '@nucleux/prompt-enhancer';
|
|
3
3
|
|
|
4
4
|
/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */
|
|
5
5
|
type Md3PromptEnhancerProps = PromptEnhancerProps;
|
|
6
6
|
/** "preview-diff", "wand-button" or "auto-enhance-toggle". */
|
|
7
7
|
type Md3PromptEnhancerVariant = PromptEnhancerVariant;
|
|
8
|
+
/** "chip" or "settings". */
|
|
9
|
+
type Md3PromptEnhancerTrigger = PromptEnhancerTrigger;
|
|
8
10
|
/** "original", "enhancing", "enhanced", "editing", "accepted", "reverted" or "failed". */
|
|
9
11
|
type Md3PromptEnhancerState = PromptEnhancerState;
|
|
10
12
|
/** "split" or "inline". */
|
|
@@ -29,4 +31,4 @@ type Md3PromptEnhancerController = PromptEnhancerController;
|
|
|
29
31
|
*/
|
|
30
32
|
declare const Md3PromptEnhancer: React.ForwardRefExoticComponent<PromptEnhancerProps & React.RefAttributes<HTMLDivElement>>;
|
|
31
33
|
|
|
32
|
-
export { Md3PromptEnhancer, type Md3PromptEnhancerChange, type Md3PromptEnhancerController, type Md3PromptEnhancerDiffStyle, type Md3PromptEnhancerProps, type Md3PromptEnhancerSegment, type Md3PromptEnhancerState, type Md3PromptEnhancerSuggestion, type Md3PromptEnhancerVariant };
|
|
34
|
+
export { Md3PromptEnhancer, type Md3PromptEnhancerChange, type Md3PromptEnhancerController, type Md3PromptEnhancerDiffStyle, type Md3PromptEnhancerProps, type Md3PromptEnhancerSegment, type Md3PromptEnhancerState, type Md3PromptEnhancerSuggestion, type Md3PromptEnhancerTrigger, type Md3PromptEnhancerVariant };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { PromptEnhancerProps, PromptEnhancerChange, PromptEnhancerController, PromptEnhancerDiffStyle, PromptEnhancerSegment, PromptEnhancerState, PromptEnhancerSuggestion, PromptEnhancerVariant } from '@nucleux/prompt-enhancer';
|
|
2
|
+
import { PromptEnhancerProps, PromptEnhancerChange, PromptEnhancerController, PromptEnhancerDiffStyle, PromptEnhancerSegment, PromptEnhancerState, PromptEnhancerSuggestion, PromptEnhancerTrigger, PromptEnhancerVariant } from '@nucleux/prompt-enhancer';
|
|
3
3
|
|
|
4
4
|
/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */
|
|
5
5
|
type Md3PromptEnhancerProps = PromptEnhancerProps;
|
|
6
6
|
/** "preview-diff", "wand-button" or "auto-enhance-toggle". */
|
|
7
7
|
type Md3PromptEnhancerVariant = PromptEnhancerVariant;
|
|
8
|
+
/** "chip" or "settings". */
|
|
9
|
+
type Md3PromptEnhancerTrigger = PromptEnhancerTrigger;
|
|
8
10
|
/** "original", "enhancing", "enhanced", "editing", "accepted", "reverted" or "failed". */
|
|
9
11
|
type Md3PromptEnhancerState = PromptEnhancerState;
|
|
10
12
|
/** "split" or "inline". */
|
|
@@ -29,4 +31,4 @@ type Md3PromptEnhancerController = PromptEnhancerController;
|
|
|
29
31
|
*/
|
|
30
32
|
declare const Md3PromptEnhancer: React.ForwardRefExoticComponent<PromptEnhancerProps & React.RefAttributes<HTMLDivElement>>;
|
|
31
33
|
|
|
32
|
-
export { Md3PromptEnhancer, type Md3PromptEnhancerChange, type Md3PromptEnhancerController, type Md3PromptEnhancerDiffStyle, type Md3PromptEnhancerProps, type Md3PromptEnhancerSegment, type Md3PromptEnhancerState, type Md3PromptEnhancerSuggestion, type Md3PromptEnhancerVariant };
|
|
34
|
+
export { Md3PromptEnhancer, type Md3PromptEnhancerChange, type Md3PromptEnhancerController, type Md3PromptEnhancerDiffStyle, type Md3PromptEnhancerProps, type Md3PromptEnhancerSegment, type Md3PromptEnhancerState, type Md3PromptEnhancerSuggestion, type Md3PromptEnhancerTrigger, type Md3PromptEnhancerVariant };
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { MessageSquareText, CircleHelp, Pencil, Loader2, Check, Undo2, AlertCircle, Sparkles } from 'lucide-react';
|
|
4
4
|
import { cn } from '@nucleux/utils';
|
|
5
|
-
import { PROMPT_ENHANCER_TEXT, splitPromptEnhancerProps, usePromptEnhancer, describePromptEnhancerChange } from '@nucleux/prompt-enhancer';
|
|
5
|
+
import { PROMPT_ENHANCER_TEXT, splitPromptEnhancerProps, usePromptEnhancer, describePromptEnhancerChange, selectPromptEnhancerSetting, promptEnhancerSettingsItems } from '@nucleux/prompt-enhancer';
|
|
6
|
+
import { Md3RequestSettings } from '@nucleux/md3-open-input';
|
|
6
7
|
import { Md3AgentComposer } from '@nucleux/md3-agent-composer';
|
|
7
8
|
import { Md3Button } from '@nucleux/md3-button';
|
|
8
9
|
import { Md3Card } from '@nucleux/md3-card';
|
|
@@ -32,10 +33,15 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
|
|
|
32
33
|
placeholder = PROMPT_ENHANCER_TEXT.placeholder,
|
|
33
34
|
failureMessage = PROMPT_ENHANCER_TEXT.failure,
|
|
34
35
|
composerActions,
|
|
36
|
+
composerLeading,
|
|
37
|
+
trigger = "chip",
|
|
38
|
+
settingsItems,
|
|
39
|
+
onSettingsSelect,
|
|
35
40
|
onSubmit
|
|
36
41
|
} = props;
|
|
37
42
|
const { className, ...rest } = splitPromptEnhancerProps(props);
|
|
38
43
|
const pe = usePromptEnhancer(props);
|
|
44
|
+
const settingsControl = trigger === "settings";
|
|
39
45
|
const uid = React.useId();
|
|
40
46
|
const busy = pe.state === "enhancing";
|
|
41
47
|
const listed = showChanges && pe.changes.length > 0;
|
|
@@ -236,13 +242,24 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
|
|
|
236
242
|
onValueChange: pe.setValue,
|
|
237
243
|
onSubmit: pe.submit,
|
|
238
244
|
placeholder,
|
|
239
|
-
leftActions: hint != null ? /* @__PURE__ */
|
|
245
|
+
leftActions: composerLeading != null || settingsControl || hint != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
246
|
+
composerLeading,
|
|
247
|
+
settingsControl && /* @__PURE__ */ jsx(
|
|
248
|
+
Md3RequestSettings,
|
|
249
|
+
{
|
|
250
|
+
items: promptEnhancerSettingsItems(pe, /* @__PURE__ */ jsx(Sparkles, {}), settingsItems),
|
|
251
|
+
onSelect: (id) => selectPromptEnhancerSetting(pe, id, onSettingsSelect),
|
|
252
|
+
className: "static [&>[role=menu]]:left-10"
|
|
253
|
+
}
|
|
254
|
+
),
|
|
255
|
+
hint != null && /* @__PURE__ */ jsx("span", { className: "px-1 text-xs text-md-on-surface-variant", children: hint })
|
|
256
|
+
] }) : void 0,
|
|
240
257
|
rightActions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
241
|
-
tool,
|
|
258
|
+
!settingsControl && tool,
|
|
242
259
|
composerActions
|
|
243
260
|
] }),
|
|
244
261
|
className: cn(
|
|
245
|
-
"rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base",
|
|
262
|
+
"relative rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base",
|
|
246
263
|
!onSubmit && "[&_button[aria-label=Send]]:hidden"
|
|
247
264
|
)
|
|
248
265
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx"],"names":["Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from \"react\";\nimport { AlertCircle, Check, CircleHelp, Loader2, MessageSquareText, Pencil, Sparkles, Undo2 } from \"lucide-react\";\nimport { cn } from \"@nucleux/utils\";\nimport {\n PROMPT_ENHANCER_TEXT,\n describePromptEnhancerChange,\n splitPromptEnhancerProps,\n usePromptEnhancer,\n type PromptEnhancerChange,\n type PromptEnhancerController,\n type PromptEnhancerDiffStyle,\n type PromptEnhancerProps,\n type PromptEnhancerSegment,\n type PromptEnhancerState,\n type PromptEnhancerSuggestion,\n type PromptEnhancerVariant,\n} from \"@nucleux/prompt-enhancer\";\nimport { Md3AgentComposer } from \"@nucleux/md3-agent-composer\";\nimport { Md3Button } from \"@nucleux/md3-button\";\nimport { Md3Card } from \"@nucleux/md3-card\";\nimport { Md3Checkbox } from \"@nucleux/md3-checkbox\";\nimport { Md3Switch } from \"@nucleux/md3-switch\";\n\n/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */\nexport type Md3PromptEnhancerProps = PromptEnhancerProps;\n/** \"preview-diff\", \"wand-button\" or \"auto-enhance-toggle\". */\nexport type Md3PromptEnhancerVariant = PromptEnhancerVariant;\n/** \"original\", \"enhancing\", \"enhanced\", \"editing\", \"accepted\", \"reverted\" or \"failed\". */\nexport type Md3PromptEnhancerState = PromptEnhancerState;\n/** \"split\" or \"inline\". */\nexport type Md3PromptEnhancerDiffStyle = PromptEnhancerDiffStyle;\n/** One proposed addition — identical to `PromptEnhancerChange`. */\nexport type Md3PromptEnhancerChange = PromptEnhancerChange;\n/** What `onEnhance` resolves with — identical to `PromptEnhancerSuggestion`. */\nexport type Md3PromptEnhancerSuggestion = PromptEnhancerSuggestion;\n/** A run of the marked suggestion — identical to `PromptEnhancerSegment`. */\nexport type Md3PromptEnhancerSegment = PromptEnhancerSegment;\n/** The shared controller — identical to `PromptEnhancerController`. */\nexport type Md3PromptEnhancerController = PromptEnhancerController;\n\nconst stateLayer =\n \"before:absolute before:inset-0 before:bg-current before:opacity-0 before:transition-opacity before:content-[''] hover:before:opacity-[0.08] focus-visible:before:opacity-[0.12] active:before:opacity-[0.12] motion-reduce:before:transition-none\";\n\nconst overline = \"flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]\";\n\nconst textLink = cn(\n \"relative inline-flex min-h-8 items-center gap-1 overflow-hidden rounded-full px-2.5 text-[13px] font-medium outline-none focus-visible:ring-2 focus-visible:ring-md-primary disabled:pointer-events-none disabled:opacity-[0.38] [&_svg]:size-4\",\n stateLayer,\n);\n\n/**\n * The Material 3 Prompt Enhancer: an Improve-style tool in the\n * `Md3AgentComposer` toolbar proposes a clearer version of the request, shown\n * in an outlined card above the composer — what they wrote beside the\n * suggestion, every addition highlighted in primary-container and explained,\n * assumptions labelled, each change removable with a checkbox. Use updates the\n * composer with Undo and sends nothing; Edit, Keep original and a failure line\n * that leaves the original untouched are built in. Same API, states and\n * accessible names as `PromptEnhancer` from `@nucleux/prompt-enhancer`.\n */\nexport const Md3PromptEnhancer = React.forwardRef<HTMLDivElement, Md3PromptEnhancerProps>((props, ref) => {\n const {\n variant = \"preview-diff\",\n diffStyle = \"split\",\n showChanges = true,\n explain = true,\n allowEdit = true,\n allowKeepOriginal = true,\n undo = true,\n actionLabel = PROMPT_ENHANCER_TEXT.actionLabel,\n heading = PROMPT_ENHANCER_TEXT.heading,\n hint,\n placeholder = PROMPT_ENHANCER_TEXT.placeholder,\n failureMessage = PROMPT_ENHANCER_TEXT.failure,\n composerActions,\n onSubmit,\n } = props;\n const { className, ...rest } = splitPromptEnhancerProps(props);\n const pe = usePromptEnhancer(props);\n const uid = React.useId();\n const busy = pe.state === \"enhancing\";\n const listed = showChanges && pe.changes.length > 0;\n const kept = pe.changes.length - pe.removed.length;\n\n const marked = pe.segments.map((s, i) => {\n if (s.type === \"text\" || !showChanges) return s.type === \"removed\" ? null : <React.Fragment key={i}>{s.text}</React.Fragment>;\n if (s.type === \"added\")\n return (\n <ins\n key={i}\n className=\"rounded-md-xs bg-md-primary-container/75 px-0.5 text-md-on-primary-container underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]\"\n >\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.added}</span>\n {s.text}\n </ins>\n );\n return (\n <del key={i} className=\"text-md-on-surface-variant line-through\">\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.removed}</span>\n {s.text}\n </del>\n );\n });\n\n const improvedOverline = (\n <p className={cn(overline, \"text-md-primary\")}>\n <MessageSquareText aria-hidden className=\"size-4\" />\n {PROMPT_ENHANCER_TEXT.enhanced}\n </p>\n );\n\n const review = pe.showReview ? (\n <Md3Card\n variant=\"outlined\"\n role=\"region\"\n aria-label={PROMPT_ENHANCER_TEXT.regionLabel}\n onKeyDown={pe.onReviewKeyDown}\n className=\"flex flex-col gap-3.5 rounded-md-lg bg-md-surface px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none\"\n >\n {listed && (\n <div className=\"flex flex-wrap items-baseline justify-between gap-3\">\n <p className=\"text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs text-md-on-surface-variant\">\n {kept} of {pe.changes.length} changes\n </span>\n </div>\n )}\n\n {pe.state === \"editing\" ? (\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={`${uid}-edit`} className=\"px-1 text-xs font-medium text-md-primary\">\n {PROMPT_ENHANCER_TEXT.editLabel}\n </label>\n <textarea\n id={`${uid}-edit`}\n rows={3}\n autoFocus\n value={pe.editText}\n onChange={(e) => pe.setEditText(e.target.value)}\n className=\"w-full resize-none rounded-md-xs border-2 border-md-primary bg-transparent px-[15px] py-3 text-base leading-6 text-md-on-surface outline-none\"\n />\n </div>\n ) : diffStyle === \"split\" ? (\n <div className=\"grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5\">\n <div className=\"flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3\">\n <p className={cn(overline, \"text-md-on-surface-variant\")}>{PROMPT_ENHANCER_TEXT.youWrote}</p>\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{marked}</p>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {improvedOverline}\n <p className=\"text-base leading-[26px] text-md-on-surface\">{marked}</p>\n </div>\n )}\n\n {listed && pe.state !== \"editing\" && (\n <div role=\"group\" aria-label={PROMPT_ENHANCER_TEXT.changesLabel} className=\"flex flex-col border-t border-md-outline-variant\">\n {pe.changes.map((c) => {\n const on = !pe.removed.includes(c.id);\n const cb = `${uid}-c-${c.id}`;\n const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(\" \");\n return (\n <div key={c.id} className=\"flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0\">\n <Md3Checkbox\n id={cb}\n checked={on}\n onCheckedChange={() => pe.toggleChange(c.id)}\n aria-labelledby={`${cb}-l`}\n aria-describedby={desc || undefined}\n className=\"-ml-2.5 shrink-0\"\n />\n <div className=\"flex min-w-0 flex-col gap-0.5 pt-2.5\">\n <label\n id={`${cb}-l`}\n htmlFor={cb}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-5 text-md-on-surface\",\n !on && \"text-md-on-surface-variant line-through\",\n )}\n >\n {describePromptEnhancerChange(c)}\n </label>\n {explain && c.reason && (\n <span id={`${cb}-why`} className=\"text-[12.5px] leading-[18px] text-md-on-surface-variant\">\n {c.reason}\n </span>\n )}\n {c.assumption && (\n <span\n id={`${cb}-as`}\n className=\"mt-1 inline-flex items-center gap-1 self-start rounded-md-sm bg-md-surface-container-high px-2 py-0.5 text-[11.5px] font-medium text-md-on-surface-variant\"\n >\n <CircleHelp aria-hidden className=\"size-3.5\" />\n {c.assumption}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center justify-between gap-x-3 gap-y-2\">\n {pe.state !== \"editing\" && allowEdit ? (\n <Md3Button variant=\"text\" icon={<Pencil aria-hidden />} onClick={pe.edit} className=\"-ml-1\">\n {PROMPT_ENHANCER_TEXT.edit}\n </Md3Button>\n ) : (\n <span />\n )}\n <span className=\"ml-auto inline-flex flex-wrap gap-2\">\n {pe.state === \"editing\" ? (\n <Md3Button variant=\"outlined\" onClick={pe.cancelEdit}>\n {PROMPT_ENHANCER_TEXT.cancelEdit}\n </Md3Button>\n ) : (\n allowKeepOriginal && (\n <Md3Button variant=\"outlined\" onClick={pe.keep}>\n {PROMPT_ENHANCER_TEXT.keep}\n </Md3Button>\n )\n )}\n <Md3Button variant=\"filled\" onClick={pe.use}>\n {pe.state === \"editing\" ? PROMPT_ENHANCER_TEXT.useEdited : PROMPT_ENHANCER_TEXT.use}\n </Md3Button>\n </span>\n </div>\n </Md3Card>\n ) : null;\n\n const noteRow = \"flex flex-wrap items-center gap-2 px-1 text-[13px] leading-5 text-md-on-surface-variant [&>svg]:size-[18px] [&>svg]:shrink-0\";\n const note =\n pe.state === \"enhancing\" ? (\n <p className={noteRow}>\n <Loader2 aria-hidden className=\"animate-spin text-md-primary motion-reduce:animate-none\" />\n {PROMPT_ENHANCER_TEXT.working}\n </p>\n ) : pe.state === \"accepted\" ? (\n <div className={noteRow}>\n <Check aria-hidden className=\"text-md-primary\" />\n <span className=\"flex-1\">{PROMPT_ENHANCER_TEXT.accepted}</span>\n {undo && (\n <button type=\"button\" onClick={pe.undoUse} className={cn(textLink, \"text-md-primary\")}>\n <Undo2 aria-hidden />\n {PROMPT_ENHANCER_TEXT.undo}\n </button>\n )}\n </div>\n ) : pe.state === \"reverted\" ? (\n <p className={noteRow}>\n <Undo2 aria-hidden className=\"text-md-primary\" />\n {PROMPT_ENHANCER_TEXT.reverted}\n </p>\n ) : null;\n\n const failed =\n pe.state === \"failed\" ? (\n <div\n role=\"alert\"\n className=\"flex flex-wrap items-center gap-2 rounded-md-md bg-md-error-container py-2 pl-3 pr-2 text-[13px] leading-5 text-md-on-error-container\"\n >\n <AlertCircle aria-hidden className=\"size-[18px] shrink-0\" />\n <span className=\"min-w-0 flex-1\">{failureMessage}</span>\n <button type=\"button\" onClick={pe.enhance} disabled={!pe.canEnhance} className={textLink}>\n {PROMPT_ENHANCER_TEXT.retry}\n </button>\n {allowKeepOriginal && (\n <button type=\"button\" onClick={pe.keep} className={textLink}>\n {PROMPT_ENHANCER_TEXT.keep}\n </button>\n )}\n </div>\n ) : null;\n\n const tool = (\n <button\n type=\"button\"\n onClick={busy ? pe.cancel : pe.enhance}\n disabled={!busy && !pe.canEnhance}\n aria-label={busy ? PROMPT_ENHANCER_TEXT.cancel : `${actionLabel} this prompt with AI`}\n className={cn(\n \"relative inline-flex min-h-8 shrink-0 items-center gap-1.5 overflow-hidden rounded-md-sm border py-1 pl-2 pr-2.5 text-[13px] font-medium leading-5 outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-md-primary focus-visible:ring-offset-2 focus-visible:ring-offset-md-surface\",\n \"disabled:pointer-events-none disabled:opacity-[0.38] motion-reduce:transition-none [&_svg]:size-[18px]\",\n stateLayer,\n busy\n ? \"border-transparent bg-md-secondary-container text-md-on-secondary-container\"\n : \"border-md-outline-variant bg-transparent text-md-on-surface-variant\",\n )}\n >\n {busy ? (\n <Loader2 aria-hidden className=\"relative animate-spin motion-reduce:animate-none\" />\n ) : (\n <Sparkles aria-hidden className=\"relative\" />\n )}\n <span className=\"relative\">{busy ? PROMPT_ENHANCER_TEXT.busy : actionLabel}</span>\n </button>\n );\n\n const autoToggle =\n variant === \"auto-enhance-toggle\" ? (\n <Md3Card variant=\"outlined\" className=\"flex items-center justify-between gap-4 rounded-md-lg bg-md-surface px-4 py-3\">\n <div className=\"min-w-0\">\n <p id={`${uid}-auto`} className=\"text-sm font-medium leading-5 text-md-on-surface\">\n {PROMPT_ENHANCER_TEXT.autoTitle}\n </p>\n <p id={`${uid}-auto-d`} className=\"mt-0.5 text-xs leading-4 text-md-on-surface-variant\">\n {PROMPT_ENHANCER_TEXT.autoDescription}\n </p>\n </div>\n <Md3Switch\n checked={pe.autoEnhance}\n onCheckedChange={pe.setAutoEnhance}\n aria-labelledby={`${uid}-auto`}\n aria-describedby={`${uid}-auto-d`}\n />\n </Md3Card>\n ) : null;\n\n return (\n <div ref={ref} data-state={pe.state} className={cn(\"flex w-full flex-col gap-3\", className)} {...rest}>\n {autoToggle}\n {review}\n {failed}\n <div role=\"status\" aria-live=\"polite\" className={note ? undefined : \"sr-only\"}>\n {note ?? pe.announcement}\n </div>\n <Md3AgentComposer\n value={pe.value}\n onValueChange={pe.setValue}\n onSubmit={pe.submit}\n placeholder={placeholder}\n leftActions={hint != null ? <span className=\"px-1 text-xs text-md-on-surface-variant\">{hint}</span> : undefined}\n rightActions={\n <>\n {tool}\n {composerActions}\n </>\n }\n className={cn(\n \"rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base\",\n !onSubmit && \"[&_button[aria-label=Send]]:hidden\",\n )}\n />\n </div>\n );\n});\nMd3PromptEnhancer.displayName = \"Md3PromptEnhancer\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"names":["Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from \"react\";\nimport { AlertCircle, Check, CircleHelp, Loader2, MessageSquareText, Pencil, Sparkles, Undo2 } from \"lucide-react\";\nimport { cn } from \"@nucleux/utils\";\nimport {\n PROMPT_ENHANCER_TEXT,\n describePromptEnhancerChange,\n promptEnhancerSettingsItems,\n selectPromptEnhancerSetting,\n splitPromptEnhancerProps,\n usePromptEnhancer,\n type PromptEnhancerChange,\n type PromptEnhancerController,\n type PromptEnhancerDiffStyle,\n type PromptEnhancerProps,\n type PromptEnhancerSegment,\n type PromptEnhancerState,\n type PromptEnhancerSuggestion,\n type PromptEnhancerTrigger,\n type PromptEnhancerVariant,\n} from \"@nucleux/prompt-enhancer\";\nimport { Md3RequestSettings } from \"@nucleux/md3-open-input\";\nimport { Md3AgentComposer } from \"@nucleux/md3-agent-composer\";\nimport { Md3Button } from \"@nucleux/md3-button\";\nimport { Md3Card } from \"@nucleux/md3-card\";\nimport { Md3Checkbox } from \"@nucleux/md3-checkbox\";\nimport { Md3Switch } from \"@nucleux/md3-switch\";\n\n/** Props of {@link Md3PromptEnhancer} — identical to `PromptEnhancerProps` from `@nucleux/prompt-enhancer`. */\nexport type Md3PromptEnhancerProps = PromptEnhancerProps;\n/** \"preview-diff\", \"wand-button\" or \"auto-enhance-toggle\". */\nexport type Md3PromptEnhancerVariant = PromptEnhancerVariant;\n/** \"chip\" or \"settings\". */\nexport type Md3PromptEnhancerTrigger = PromptEnhancerTrigger;\n/** \"original\", \"enhancing\", \"enhanced\", \"editing\", \"accepted\", \"reverted\" or \"failed\". */\nexport type Md3PromptEnhancerState = PromptEnhancerState;\n/** \"split\" or \"inline\". */\nexport type Md3PromptEnhancerDiffStyle = PromptEnhancerDiffStyle;\n/** One proposed addition — identical to `PromptEnhancerChange`. */\nexport type Md3PromptEnhancerChange = PromptEnhancerChange;\n/** What `onEnhance` resolves with — identical to `PromptEnhancerSuggestion`. */\nexport type Md3PromptEnhancerSuggestion = PromptEnhancerSuggestion;\n/** A run of the marked suggestion — identical to `PromptEnhancerSegment`. */\nexport type Md3PromptEnhancerSegment = PromptEnhancerSegment;\n/** The shared controller — identical to `PromptEnhancerController`. */\nexport type Md3PromptEnhancerController = PromptEnhancerController;\n\nconst stateLayer =\n \"before:absolute before:inset-0 before:bg-current before:opacity-0 before:transition-opacity before:content-[''] hover:before:opacity-[0.08] focus-visible:before:opacity-[0.12] active:before:opacity-[0.12] motion-reduce:before:transition-none\";\n\nconst overline = \"flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]\";\n\nconst textLink = cn(\n \"relative inline-flex min-h-8 items-center gap-1 overflow-hidden rounded-full px-2.5 text-[13px] font-medium outline-none focus-visible:ring-2 focus-visible:ring-md-primary disabled:pointer-events-none disabled:opacity-[0.38] [&_svg]:size-4\",\n stateLayer,\n);\n\n/**\n * The Material 3 Prompt Enhancer: an Improve-style tool in the\n * `Md3AgentComposer` toolbar proposes a clearer version of the request, shown\n * in an outlined card above the composer — what they wrote beside the\n * suggestion, every addition highlighted in primary-container and explained,\n * assumptions labelled, each change removable with a checkbox. Use updates the\n * composer with Undo and sends nothing; Edit, Keep original and a failure line\n * that leaves the original untouched are built in. Same API, states and\n * accessible names as `PromptEnhancer` from `@nucleux/prompt-enhancer`.\n */\nexport const Md3PromptEnhancer = React.forwardRef<HTMLDivElement, Md3PromptEnhancerProps>((props, ref) => {\n const {\n variant = \"preview-diff\",\n diffStyle = \"split\",\n showChanges = true,\n explain = true,\n allowEdit = true,\n allowKeepOriginal = true,\n undo = true,\n actionLabel = PROMPT_ENHANCER_TEXT.actionLabel,\n heading = PROMPT_ENHANCER_TEXT.heading,\n hint,\n placeholder = PROMPT_ENHANCER_TEXT.placeholder,\n failureMessage = PROMPT_ENHANCER_TEXT.failure,\n composerActions,\n composerLeading,\n trigger = \"chip\",\n settingsItems,\n onSettingsSelect,\n onSubmit,\n } = props;\n const { className, ...rest } = splitPromptEnhancerProps(props);\n const pe = usePromptEnhancer(props);\n const settingsControl = trigger === \"settings\";\n const uid = React.useId();\n const busy = pe.state === \"enhancing\";\n const listed = showChanges && pe.changes.length > 0;\n const kept = pe.changes.length - pe.removed.length;\n\n const marked = pe.segments.map((s, i) => {\n if (s.type === \"text\" || !showChanges) return s.type === \"removed\" ? null : <React.Fragment key={i}>{s.text}</React.Fragment>;\n if (s.type === \"added\")\n return (\n <ins\n key={i}\n className=\"rounded-md-xs bg-md-primary-container/75 px-0.5 text-md-on-primary-container underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]\"\n >\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.added}</span>\n {s.text}\n </ins>\n );\n return (\n <del key={i} className=\"text-md-on-surface-variant line-through\">\n <span className=\"sr-only\">{PROMPT_ENHANCER_TEXT.removed}</span>\n {s.text}\n </del>\n );\n });\n\n const improvedOverline = (\n <p className={cn(overline, \"text-md-primary\")}>\n <MessageSquareText aria-hidden className=\"size-4\" />\n {PROMPT_ENHANCER_TEXT.enhanced}\n </p>\n );\n\n const review = pe.showReview ? (\n <Md3Card\n variant=\"outlined\"\n role=\"region\"\n aria-label={PROMPT_ENHANCER_TEXT.regionLabel}\n onKeyDown={pe.onReviewKeyDown}\n className=\"flex flex-col gap-3.5 rounded-md-lg bg-md-surface px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none\"\n >\n {listed && (\n <div className=\"flex flex-wrap items-baseline justify-between gap-3\">\n <p className=\"text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs text-md-on-surface-variant\">\n {kept} of {pe.changes.length} changes\n </span>\n </div>\n )}\n\n {pe.state === \"editing\" ? (\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={`${uid}-edit`} className=\"px-1 text-xs font-medium text-md-primary\">\n {PROMPT_ENHANCER_TEXT.editLabel}\n </label>\n <textarea\n id={`${uid}-edit`}\n rows={3}\n autoFocus\n value={pe.editText}\n onChange={(e) => pe.setEditText(e.target.value)}\n className=\"w-full resize-none rounded-md-xs border-2 border-md-primary bg-transparent px-[15px] py-3 text-base leading-6 text-md-on-surface outline-none\"\n />\n </div>\n ) : diffStyle === \"split\" ? (\n <div className=\"grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5\">\n <div className=\"flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3\">\n <p className={cn(overline, \"text-md-on-surface-variant\")}>{PROMPT_ENHANCER_TEXT.youWrote}</p>\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"text-[14.5px] leading-[22px] text-md-on-surface\">{marked}</p>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {improvedOverline}\n <p className=\"text-base leading-[26px] text-md-on-surface\">{marked}</p>\n </div>\n )}\n\n {listed && pe.state !== \"editing\" && (\n <div role=\"group\" aria-label={PROMPT_ENHANCER_TEXT.changesLabel} className=\"flex flex-col border-t border-md-outline-variant\">\n {pe.changes.map((c) => {\n const on = !pe.removed.includes(c.id);\n const cb = `${uid}-c-${c.id}`;\n const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(\" \");\n return (\n <div key={c.id} className=\"flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0\">\n <Md3Checkbox\n id={cb}\n checked={on}\n onCheckedChange={() => pe.toggleChange(c.id)}\n aria-labelledby={`${cb}-l`}\n aria-describedby={desc || undefined}\n className=\"-ml-2.5 shrink-0\"\n />\n <div className=\"flex min-w-0 flex-col gap-0.5 pt-2.5\">\n <label\n id={`${cb}-l`}\n htmlFor={cb}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-5 text-md-on-surface\",\n !on && \"text-md-on-surface-variant line-through\",\n )}\n >\n {describePromptEnhancerChange(c)}\n </label>\n {explain && c.reason && (\n <span id={`${cb}-why`} className=\"text-[12.5px] leading-[18px] text-md-on-surface-variant\">\n {c.reason}\n </span>\n )}\n {c.assumption && (\n <span\n id={`${cb}-as`}\n className=\"mt-1 inline-flex items-center gap-1 self-start rounded-md-sm bg-md-surface-container-high px-2 py-0.5 text-[11.5px] font-medium text-md-on-surface-variant\"\n >\n <CircleHelp aria-hidden className=\"size-3.5\" />\n {c.assumption}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center justify-between gap-x-3 gap-y-2\">\n {pe.state !== \"editing\" && allowEdit ? (\n <Md3Button variant=\"text\" icon={<Pencil aria-hidden />} onClick={pe.edit} className=\"-ml-1\">\n {PROMPT_ENHANCER_TEXT.edit}\n </Md3Button>\n ) : (\n <span />\n )}\n <span className=\"ml-auto inline-flex flex-wrap gap-2\">\n {pe.state === \"editing\" ? (\n <Md3Button variant=\"outlined\" onClick={pe.cancelEdit}>\n {PROMPT_ENHANCER_TEXT.cancelEdit}\n </Md3Button>\n ) : (\n allowKeepOriginal && (\n <Md3Button variant=\"outlined\" onClick={pe.keep}>\n {PROMPT_ENHANCER_TEXT.keep}\n </Md3Button>\n )\n )}\n <Md3Button variant=\"filled\" onClick={pe.use}>\n {pe.state === \"editing\" ? PROMPT_ENHANCER_TEXT.useEdited : PROMPT_ENHANCER_TEXT.use}\n </Md3Button>\n </span>\n </div>\n </Md3Card>\n ) : null;\n\n const noteRow = \"flex flex-wrap items-center gap-2 px-1 text-[13px] leading-5 text-md-on-surface-variant [&>svg]:size-[18px] [&>svg]:shrink-0\";\n const note =\n pe.state === \"enhancing\" ? (\n <p className={noteRow}>\n <Loader2 aria-hidden className=\"animate-spin text-md-primary motion-reduce:animate-none\" />\n {PROMPT_ENHANCER_TEXT.working}\n </p>\n ) : pe.state === \"accepted\" ? (\n <div className={noteRow}>\n <Check aria-hidden className=\"text-md-primary\" />\n <span className=\"flex-1\">{PROMPT_ENHANCER_TEXT.accepted}</span>\n {undo && (\n <button type=\"button\" onClick={pe.undoUse} className={cn(textLink, \"text-md-primary\")}>\n <Undo2 aria-hidden />\n {PROMPT_ENHANCER_TEXT.undo}\n </button>\n )}\n </div>\n ) : pe.state === \"reverted\" ? (\n <p className={noteRow}>\n <Undo2 aria-hidden className=\"text-md-primary\" />\n {PROMPT_ENHANCER_TEXT.reverted}\n </p>\n ) : null;\n\n const failed =\n pe.state === \"failed\" ? (\n <div\n role=\"alert\"\n className=\"flex flex-wrap items-center gap-2 rounded-md-md bg-md-error-container py-2 pl-3 pr-2 text-[13px] leading-5 text-md-on-error-container\"\n >\n <AlertCircle aria-hidden className=\"size-[18px] shrink-0\" />\n <span className=\"min-w-0 flex-1\">{failureMessage}</span>\n <button type=\"button\" onClick={pe.enhance} disabled={!pe.canEnhance} className={textLink}>\n {PROMPT_ENHANCER_TEXT.retry}\n </button>\n {allowKeepOriginal && (\n <button type=\"button\" onClick={pe.keep} className={textLink}>\n {PROMPT_ENHANCER_TEXT.keep}\n </button>\n )}\n </div>\n ) : null;\n\n const tool = (\n <button\n type=\"button\"\n onClick={busy ? pe.cancel : pe.enhance}\n disabled={!busy && !pe.canEnhance}\n aria-label={busy ? PROMPT_ENHANCER_TEXT.cancel : `${actionLabel} this prompt with AI`}\n className={cn(\n \"relative inline-flex min-h-8 shrink-0 items-center gap-1.5 overflow-hidden rounded-md-sm border py-1 pl-2 pr-2.5 text-[13px] font-medium leading-5 outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-md-primary focus-visible:ring-offset-2 focus-visible:ring-offset-md-surface\",\n \"disabled:pointer-events-none disabled:opacity-[0.38] motion-reduce:transition-none [&_svg]:size-[18px]\",\n stateLayer,\n busy\n ? \"border-transparent bg-md-secondary-container text-md-on-secondary-container\"\n : \"border-md-outline-variant bg-transparent text-md-on-surface-variant\",\n )}\n >\n {busy ? (\n <Loader2 aria-hidden className=\"relative animate-spin motion-reduce:animate-none\" />\n ) : (\n <Sparkles aria-hidden className=\"relative\" />\n )}\n <span className=\"relative\">{busy ? PROMPT_ENHANCER_TEXT.busy : actionLabel}</span>\n </button>\n );\n\n const autoToggle =\n variant === \"auto-enhance-toggle\" ? (\n <Md3Card variant=\"outlined\" className=\"flex items-center justify-between gap-4 rounded-md-lg bg-md-surface px-4 py-3\">\n <div className=\"min-w-0\">\n <p id={`${uid}-auto`} className=\"text-sm font-medium leading-5 text-md-on-surface\">\n {PROMPT_ENHANCER_TEXT.autoTitle}\n </p>\n <p id={`${uid}-auto-d`} className=\"mt-0.5 text-xs leading-4 text-md-on-surface-variant\">\n {PROMPT_ENHANCER_TEXT.autoDescription}\n </p>\n </div>\n <Md3Switch\n checked={pe.autoEnhance}\n onCheckedChange={pe.setAutoEnhance}\n aria-labelledby={`${uid}-auto`}\n aria-describedby={`${uid}-auto-d`}\n />\n </Md3Card>\n ) : null;\n\n return (\n <div ref={ref} data-state={pe.state} className={cn(\"flex w-full flex-col gap-3\", className)} {...rest}>\n {autoToggle}\n {review}\n {failed}\n <div role=\"status\" aria-live=\"polite\" className={note ? undefined : \"sr-only\"}>\n {note ?? pe.announcement}\n </div>\n <Md3AgentComposer\n value={pe.value}\n onValueChange={pe.setValue}\n onSubmit={pe.submit}\n placeholder={placeholder}\n leftActions={\n composerLeading != null || settingsControl || hint != null ? (\n <>\n {composerLeading}\n {settingsControl && (\n <Md3RequestSettings\n items={promptEnhancerSettingsItems(pe, <Sparkles />, settingsItems)}\n onSelect={(id) => selectPromptEnhancerSetting(pe, id, onSettingsSelect)}\n className=\"static [&>[role=menu]]:left-10\"\n />\n )}\n {hint != null && <span className=\"px-1 text-xs text-md-on-surface-variant\">{hint}</span>}\n </>\n ) : undefined\n }\n rightActions={\n <>\n {!settingsControl && tool}\n {composerActions}\n </>\n }\n className={cn(\n \"relative rounded-md-xl border border-md-outline-variant bg-md-surface px-4 pb-2 pt-3.5 shadow-md-1 [&>textarea]:text-base\",\n !onSubmit && \"[&_button[aria-label=Send]]:hidden\",\n )}\n />\n </div>\n );\n});\nMd3PromptEnhancer.displayName = \"Md3PromptEnhancer\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nucleux/md3-prompt-enhancer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Material 3 Prompt Enhancer — proposes a clearer version of the request you wrote, every addition marked and explained — Nucleux agentic UI for React.",
|
|
@@ -39,20 +39,22 @@
|
|
|
39
39
|
"react-dom": ">=18"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@nucleux/md3-agent-composer": "0.
|
|
43
|
-
"@nucleux/md3-button": "0.
|
|
44
|
-
"@nucleux/md3-card": "0.
|
|
45
|
-
"@nucleux/md3-checkbox": "0.
|
|
46
|
-
"@nucleux/md3-
|
|
47
|
-
"@nucleux/
|
|
48
|
-
"@nucleux/
|
|
42
|
+
"@nucleux/md3-agent-composer": "0.8.0",
|
|
43
|
+
"@nucleux/md3-button": "0.8.0",
|
|
44
|
+
"@nucleux/md3-card": "0.8.0",
|
|
45
|
+
"@nucleux/md3-checkbox": "0.8.0",
|
|
46
|
+
"@nucleux/md3-open-input": "0.8.0",
|
|
47
|
+
"@nucleux/md3-switch": "0.8.0",
|
|
48
|
+
"@nucleux/prompt-enhancer": "0.8.0",
|
|
49
|
+
"@nucleux/utils": "0.8.0",
|
|
49
50
|
"lucide-react": "^0.469.0"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
|
-
"
|
|
53
|
-
"typescript": "^5.7.2",
|
|
53
|
+
"@nucleux/md3-icon-button": "0.8.0",
|
|
54
54
|
"@types/react": "^18.3.18",
|
|
55
|
-
"react": "^18.3.1"
|
|
55
|
+
"react": "^18.3.1",
|
|
56
|
+
"tsup": "^8.3.5",
|
|
57
|
+
"typescript": "^5.7.2"
|
|
56
58
|
},
|
|
57
59
|
"publishConfig": {
|
|
58
60
|
"access": "public"
|