@nucleux/md3-prompt-enhancer 0.9.0 → 0.10.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 CHANGED
@@ -51,6 +51,8 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
51
51
  undo = true,
52
52
  actionLabel = promptEnhancer.PROMPT_ENHANCER_TEXT.actionLabel,
53
53
  heading = promptEnhancer.PROMPT_ENHANCER_TEXT.heading,
54
+ enhancedLabel = promptEnhancer.PROMPT_ENHANCER_TEXT.enhanced,
55
+ useLabel = promptEnhancer.PROMPT_ENHANCER_TEXT.use,
54
56
  hint,
55
57
  placeholder = promptEnhancer.PROMPT_ENHANCER_TEXT.placeholder,
56
58
  failureMessage = promptEnhancer.PROMPT_ENHANCER_TEXT.failure,
@@ -59,7 +61,13 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
59
61
  trigger = "chip",
60
62
  settingsItems,
61
63
  onSettingsSelect,
62
- onSubmit
64
+ onSubmit,
65
+ onAdd,
66
+ addLabel,
67
+ add,
68
+ model,
69
+ onVoice,
70
+ voiceLabel
63
71
  } = props;
64
72
  const { className, ...rest } = promptEnhancer.splitPromptEnhancerProps(props);
65
73
  const pe = promptEnhancer.usePromptEnhancer(props);
@@ -74,7 +82,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
74
82
  return /* @__PURE__ */ jsxRuntime.jsxs(
75
83
  "ins",
76
84
  {
77
- 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]",
85
+ className: "rounded-md-xs bg-md-primary/[0.08] px-0.5 text-md-primary underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]",
78
86
  children: [
79
87
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: promptEnhancer.PROMPT_ENHANCER_TEXT.added }),
80
88
  s.text
@@ -89,7 +97,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
89
97
  });
90
98
  const improvedOverline = /* @__PURE__ */ jsxRuntime.jsxs("p", { className: utils.cn(overline, "text-md-primary"), children: [
91
99
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquareText, { "aria-hidden": true, className: "size-4" }),
92
- promptEnhancer.PROMPT_ENHANCER_TEXT.enhanced
100
+ enhancedLabel
93
101
  ] });
94
102
  const review = pe.showReview ? /* @__PURE__ */ jsxRuntime.jsxs(
95
103
  md3Card.Md3Card,
@@ -98,7 +106,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
98
106
  role: "region",
99
107
  "aria-label": promptEnhancer.PROMPT_ENHANCER_TEXT.regionLabel,
100
108
  onKeyDown: pe.onReviewKeyDown,
101
- 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",
109
+ className: "flex flex-col gap-3.5 rounded-md-lg bg-md-surface-container-lowest px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none",
102
110
  children: [
103
111
  listed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-3", children: [
104
112
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium leading-6 text-md-on-surface", children: heading }),
@@ -183,7 +191,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
183
191
  pe.state !== "editing" && allowEdit ? /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "text", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { "aria-hidden": true }), onClick: pe.edit, className: "-ml-1", children: promptEnhancer.PROMPT_ENHANCER_TEXT.edit }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
184
192
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-auto inline-flex flex-wrap gap-2", children: [
185
193
  pe.state === "editing" ? /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "outlined", onClick: pe.cancelEdit, children: promptEnhancer.PROMPT_ENHANCER_TEXT.cancelEdit }) : allowKeepOriginal && /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "outlined", onClick: pe.keep, children: promptEnhancer.PROMPT_ENHANCER_TEXT.keep }),
186
- /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? promptEnhancer.PROMPT_ENHANCER_TEXT.useEdited : promptEnhancer.PROMPT_ENHANCER_TEXT.use })
194
+ /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? promptEnhancer.PROMPT_ENHANCER_TEXT.useEdited : useLabel })
187
195
  ] })
188
196
  ] })
189
197
  ]
@@ -280,10 +288,13 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
280
288
  !settingsControl && tool,
281
289
  composerActions
282
290
  ] }),
283
- className: utils.cn(
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",
285
- !onSubmit && "[&_button[aria-label=Send]]:hidden"
286
- )
291
+ onAdd,
292
+ addLabel,
293
+ add,
294
+ model,
295
+ onVoice,
296
+ voiceLabel,
297
+ className: utils.cn("relative", !onSubmit && "[&_button[aria-label=Send]]:hidden")
287
298
  }
288
299
  )
289
300
  ] });
@@ -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","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"]}
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 enhancedLabel = PROMPT_ENHANCER_TEXT.enhanced,\n useLabel = PROMPT_ENHANCER_TEXT.use,\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 onAdd,\n addLabel,\n add,\n model,\n onVoice,\n voiceLabel,\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/[0.08] px-0.5 text-md-primary 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 {enhancedLabel}\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-container-lowest 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 : useLabel}\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 onAdd={onAdd}\n addLabel={addLabel}\n add={add}\n model={model}\n onVoice={onVoice}\n voiceLabel={voiceLabel}\n className={cn(\"relative\", !onSubmit && \"[&_button[aria-label=Send]]:hidden\")}\n />\n </div>\n );\n});\nMd3PromptEnhancer.displayName = \"Md3PromptEnhancer\";\n"]}
package/dist/index.js CHANGED
@@ -29,6 +29,8 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
29
29
  undo = true,
30
30
  actionLabel = PROMPT_ENHANCER_TEXT.actionLabel,
31
31
  heading = PROMPT_ENHANCER_TEXT.heading,
32
+ enhancedLabel = PROMPT_ENHANCER_TEXT.enhanced,
33
+ useLabel = PROMPT_ENHANCER_TEXT.use,
32
34
  hint,
33
35
  placeholder = PROMPT_ENHANCER_TEXT.placeholder,
34
36
  failureMessage = PROMPT_ENHANCER_TEXT.failure,
@@ -37,7 +39,13 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
37
39
  trigger = "chip",
38
40
  settingsItems,
39
41
  onSettingsSelect,
40
- onSubmit
42
+ onSubmit,
43
+ onAdd,
44
+ addLabel,
45
+ add,
46
+ model,
47
+ onVoice,
48
+ voiceLabel
41
49
  } = props;
42
50
  const { className, ...rest } = splitPromptEnhancerProps(props);
43
51
  const pe = usePromptEnhancer(props);
@@ -52,7 +60,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
52
60
  return /* @__PURE__ */ jsxs(
53
61
  "ins",
54
62
  {
55
- 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]",
63
+ className: "rounded-md-xs bg-md-primary/[0.08] px-0.5 text-md-primary underline decoration-md-primary/50 decoration-dotted underline-offset-4 [box-decoration-break:clone]",
56
64
  children: [
57
65
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: PROMPT_ENHANCER_TEXT.added }),
58
66
  s.text
@@ -67,7 +75,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
67
75
  });
68
76
  const improvedOverline = /* @__PURE__ */ jsxs("p", { className: cn(overline, "text-md-primary"), children: [
69
77
  /* @__PURE__ */ jsx(MessageSquareText, { "aria-hidden": true, className: "size-4" }),
70
- PROMPT_ENHANCER_TEXT.enhanced
78
+ enhancedLabel
71
79
  ] });
72
80
  const review = pe.showReview ? /* @__PURE__ */ jsxs(
73
81
  Md3Card,
@@ -76,7 +84,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
76
84
  role: "region",
77
85
  "aria-label": PROMPT_ENHANCER_TEXT.regionLabel,
78
86
  onKeyDown: pe.onReviewKeyDown,
79
- 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",
87
+ className: "flex flex-col gap-3.5 rounded-md-lg bg-md-surface-container-lowest px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none",
80
88
  children: [
81
89
  listed && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-3", children: [
82
90
  /* @__PURE__ */ jsx("p", { className: "text-base font-medium leading-6 text-md-on-surface", children: heading }),
@@ -161,7 +169,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
161
169
  pe.state !== "editing" && allowEdit ? /* @__PURE__ */ jsx(Md3Button, { variant: "text", icon: /* @__PURE__ */ jsx(Pencil, { "aria-hidden": true }), onClick: pe.edit, className: "-ml-1", children: PROMPT_ENHANCER_TEXT.edit }) : /* @__PURE__ */ jsx("span", {}),
162
170
  /* @__PURE__ */ jsxs("span", { className: "ml-auto inline-flex flex-wrap gap-2", children: [
163
171
  pe.state === "editing" ? /* @__PURE__ */ jsx(Md3Button, { variant: "outlined", onClick: pe.cancelEdit, children: PROMPT_ENHANCER_TEXT.cancelEdit }) : allowKeepOriginal && /* @__PURE__ */ jsx(Md3Button, { variant: "outlined", onClick: pe.keep, children: PROMPT_ENHANCER_TEXT.keep }),
164
- /* @__PURE__ */ jsx(Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? PROMPT_ENHANCER_TEXT.useEdited : PROMPT_ENHANCER_TEXT.use })
172
+ /* @__PURE__ */ jsx(Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? PROMPT_ENHANCER_TEXT.useEdited : useLabel })
165
173
  ] })
166
174
  ] })
167
175
  ]
@@ -258,10 +266,13 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
258
266
  !settingsControl && tool,
259
267
  composerActions
260
268
  ] }),
261
- className: cn(
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",
263
- !onSubmit && "[&_button[aria-label=Send]]:hidden"
264
- )
269
+ onAdd,
270
+ addLabel,
271
+ add,
272
+ model,
273
+ onVoice,
274
+ voiceLabel,
275
+ className: cn("relative", !onSubmit && "[&_button[aria-label=Send]]:hidden")
265
276
  }
266
277
  )
267
278
  ] });
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 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"]}
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 enhancedLabel = PROMPT_ENHANCER_TEXT.enhanced,\n useLabel = PROMPT_ENHANCER_TEXT.use,\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 onAdd,\n addLabel,\n add,\n model,\n onVoice,\n voiceLabel,\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/[0.08] px-0.5 text-md-primary 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 {enhancedLabel}\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-container-lowest 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 : useLabel}\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 onAdd={onAdd}\n addLabel={addLabel}\n add={add}\n model={model}\n onVoice={onVoice}\n voiceLabel={voiceLabel}\n className={cn(\"relative\", !onSubmit && \"[&_button[aria-label=Send]]:hidden\")}\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.9.0",
3
+ "version": "0.10.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; starts from the wand or the Improve prompt row in Request settings — Nucleux agentic UI for React.",
@@ -40,18 +40,18 @@
40
40
  "react-dom": ">=18"
41
41
  },
42
42
  "dependencies": {
43
- "@nucleux/md3-agent-composer": "0.9.0",
44
- "@nucleux/md3-button": "0.9.0",
45
- "@nucleux/md3-card": "0.9.0",
46
- "@nucleux/md3-checkbox": "0.9.0",
47
- "@nucleux/md3-open-input": "0.9.0",
48
- "@nucleux/md3-switch": "0.9.0",
49
- "@nucleux/prompt-enhancer": "0.9.0",
50
- "@nucleux/utils": "0.9.0",
43
+ "@nucleux/md3-agent-composer": "0.10.0",
44
+ "@nucleux/md3-button": "0.10.0",
45
+ "@nucleux/md3-card": "0.10.0",
46
+ "@nucleux/md3-checkbox": "0.10.0",
47
+ "@nucleux/md3-open-input": "0.10.0",
48
+ "@nucleux/md3-switch": "0.10.0",
49
+ "@nucleux/prompt-enhancer": "0.10.0",
50
+ "@nucleux/utils": "0.10.0",
51
51
  "lucide-react": "^0.469.0"
52
52
  },
53
53
  "devDependencies": {
54
- "@nucleux/md3-icon-button": "0.9.0",
54
+ "@nucleux/md3-icon-button": "0.10.0",
55
55
  "@types/react": "^18.3.18",
56
56
  "react": "^18.3.1",
57
57
  "tsup": "^8.3.5",