@nucleux/md3-prompt-enhancer 0.11.3 → 0.12.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
@@ -35,7 +35,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
35
 
36
36
  // src/index.tsx
37
37
  var stateLayer = "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";
38
- var overline = "flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]";
38
+ var overline = "flex items-center gap-1.5 font-sans text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]";
39
39
  var textLink = utils.cn(
40
40
  "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",
41
41
  stateLayer
@@ -82,7 +82,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
82
82
  return /* @__PURE__ */ jsxRuntime.jsxs(
83
83
  "ins",
84
84
  {
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]",
85
+ className: "rounded-md-xs bg-md-primary-container/75 px-0.5 py-px text-[rgb(79_55_138)] underline decoration-md-primary/50 dark:text-md-on-primary-container decoration-dotted underline-offset-4 [box-decoration-break:clone]",
86
86
  children: [
87
87
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: promptEnhancer.PROMPT_ENHANCER_TEXT.added }),
88
88
  s.text
@@ -106,11 +106,11 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
106
106
  role: "region",
107
107
  "aria-label": promptEnhancer.PROMPT_ENHANCER_TEXT.regionLabel,
108
108
  onKeyDown: pe.onReviewKeyDown,
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",
109
+ className: "flex flex-col gap-3.5 rounded-[16px] bg-md-surface-container-lowest px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none",
110
110
  children: [
111
111
  listed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-3", children: [
112
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-medium leading-6 text-md-on-surface", children: heading }),
113
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-md-on-surface-variant", children: [
112
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-sans text-base font-medium leading-6 text-md-on-surface", children: heading }),
113
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs tracking-[0.4px] text-md-on-surface-variant", children: [
114
114
  kept,
115
115
  " of ",
116
116
  pe.changes.length,
@@ -131,23 +131,23 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
131
131
  }
132
132
  )
133
133
  ] }) : diffStyle === "split" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5", children: [
134
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3", children: [
134
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 rounded-[14px] border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3", children: [
135
135
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: utils.cn(overline, "text-md-on-surface-variant"), children: promptEnhancer.PROMPT_ENHANCER_TEXT.youWrote }),
136
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14.5px] leading-[22px] text-md-on-surface", children: pe.original })
136
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-sans text-[14.5px] leading-[22px] text-md-on-surface", children: pe.original })
137
137
  ] }),
138
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3", children: [
138
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 rounded-[14px] border border-md-primary/45 bg-md-primary/5 px-3.5 py-3", children: [
139
139
  improvedOverline,
140
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14.5px] leading-[22px] text-md-on-surface", children: marked })
140
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-sans text-[14.5px] leading-[22px] text-md-on-surface", children: marked })
141
141
  ] })
142
142
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
143
143
  improvedOverline,
144
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base leading-[26px] text-md-on-surface", children: marked })
144
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-sans text-base leading-[26px] text-md-on-surface", children: marked })
145
145
  ] }),
146
146
  listed && pe.state !== "editing" && /* @__PURE__ */ jsxRuntime.jsx("div", { role: "group", "aria-label": promptEnhancer.PROMPT_ENHANCER_TEXT.changesLabel, className: "flex flex-col border-t border-md-outline-variant", children: pe.changes.map((c) => {
147
147
  const on = !pe.removed.includes(c.id);
148
148
  const cb = `${uid}-c-${c.id}`;
149
149
  const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(" ");
150
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0", children: [
150
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 border-b border-md-outline-variant pb-2 pt-2.5 last:border-b-0 last:pb-0", children: [
151
151
  /* @__PURE__ */ jsxRuntime.jsx(
152
152
  md3Checkbox.Md3Checkbox,
153
153
  {
@@ -159,7 +159,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
159
159
  className: "-ml-2.5 shrink-0"
160
160
  }
161
161
  ),
162
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pt-2.5", children: [
162
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pt-2.5 font-sans", children: [
163
163
  /* @__PURE__ */ jsxRuntime.jsx(
164
164
  "label",
165
165
  {
@@ -177,7 +177,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
177
177
  "span",
178
178
  {
179
179
  id: `${cb}-as`,
180
- 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",
180
+ 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 leading-[1.55] text-md-on-surface-variant",
181
181
  children: [
182
182
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleHelp, { "aria-hidden": true, className: "size-3.5" }),
183
183
  c.assumption
@@ -188,7 +188,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
188
188
  ] }, c.id);
189
189
  }) }),
190
190
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-x-3 gap-y-2", children: [
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", {}),
191
+ pe.state !== "editing" && allowEdit ? /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "text", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { "aria-hidden": true }), onClick: pe.edit, children: promptEnhancer.PROMPT_ENHANCER_TEXT.edit }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
192
192
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-auto inline-flex flex-wrap gap-2", children: [
193
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 }),
194
194
  /* @__PURE__ */ jsxRuntime.jsx(md3Button.Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? promptEnhancer.PROMPT_ENHANCER_TEXT.useEdited : useLabel })
@@ -260,7 +260,7 @@ var Md3PromptEnhancer = React__namespace.forwardRef((props, ref) => {
260
260
  }
261
261
  )
262
262
  ] }) : null;
263
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, "data-state": pe.state, className: utils.cn("flex w-full flex-col gap-3", className), ...rest, children: [
263
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, "data-state": pe.state, className: utils.cn("font-md", "flex w-full flex-col gap-3", className), ...rest, children: [
264
264
  autoToggle,
265
265
  review,
266
266
  failed,
@@ -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 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"]}
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\n/** nucleux.in sets the review's own copy in Inter (font-sans); its Material components stay in Roboto. */\nconst overline = \"flex items-center gap-1.5 font-sans 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-container/75 px-0.5 py-px text-[rgb(79_55_138)] underline decoration-md-primary/50 dark:text-md-on-primary-container 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-[16px] 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=\"font-sans text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs tracking-[0.4px] 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-[14px] 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=\"font-sans text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-[14px] border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"font-sans 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=\"font-sans 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 pb-2 pt-2.5 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 font-sans\">\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 leading-[1.55] 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}>\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(\"font-md\", \"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
@@ -13,7 +13,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
13
13
 
14
14
  // src/index.tsx
15
15
  var stateLayer = "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";
16
- var overline = "flex items-center gap-1.5 text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]";
16
+ var overline = "flex items-center gap-1.5 font-sans text-[11.5px] font-semibold uppercase leading-4 tracking-[0.06em]";
17
17
  var textLink = cn(
18
18
  "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",
19
19
  stateLayer
@@ -60,7 +60,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
60
60
  return /* @__PURE__ */ jsxs(
61
61
  "ins",
62
62
  {
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]",
63
+ className: "rounded-md-xs bg-md-primary-container/75 px-0.5 py-px text-[rgb(79_55_138)] underline decoration-md-primary/50 dark:text-md-on-primary-container decoration-dotted underline-offset-4 [box-decoration-break:clone]",
64
64
  children: [
65
65
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: PROMPT_ENHANCER_TEXT.added }),
66
66
  s.text
@@ -84,11 +84,11 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
84
84
  role: "region",
85
85
  "aria-label": PROMPT_ENHANCER_TEXT.regionLabel,
86
86
  onKeyDown: pe.onReviewKeyDown,
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",
87
+ className: "flex flex-col gap-3.5 rounded-[16px] bg-md-surface-container-lowest px-5 py-[18px] animate-nx-fade-in motion-reduce:animate-none",
88
88
  children: [
89
89
  listed && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-3", children: [
90
- /* @__PURE__ */ jsx("p", { className: "text-base font-medium leading-6 text-md-on-surface", children: heading }),
91
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-md-on-surface-variant", children: [
90
+ /* @__PURE__ */ jsx("p", { className: "font-sans text-base font-medium leading-6 text-md-on-surface", children: heading }),
91
+ /* @__PURE__ */ jsxs("span", { className: "text-xs tracking-[0.4px] text-md-on-surface-variant", children: [
92
92
  kept,
93
93
  " of ",
94
94
  pe.changes.length,
@@ -109,23 +109,23 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
109
109
  }
110
110
  )
111
111
  ] }) : diffStyle === "split" ? /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[repeat(auto-fit,minmax(210px,1fr))] gap-2.5", children: [
112
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-md-md border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3", children: [
112
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-[14px] border border-transparent bg-md-on-surface/[0.04] px-3.5 py-3", children: [
113
113
  /* @__PURE__ */ jsx("p", { className: cn(overline, "text-md-on-surface-variant"), children: PROMPT_ENHANCER_TEXT.youWrote }),
114
- /* @__PURE__ */ jsx("p", { className: "text-[14.5px] leading-[22px] text-md-on-surface", children: pe.original })
114
+ /* @__PURE__ */ jsx("p", { className: "font-sans text-[14.5px] leading-[22px] text-md-on-surface", children: pe.original })
115
115
  ] }),
116
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-md-md border border-md-primary/45 bg-md-primary/5 px-3.5 py-3", children: [
116
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-[14px] border border-md-primary/45 bg-md-primary/5 px-3.5 py-3", children: [
117
117
  improvedOverline,
118
- /* @__PURE__ */ jsx("p", { className: "text-[14.5px] leading-[22px] text-md-on-surface", children: marked })
118
+ /* @__PURE__ */ jsx("p", { className: "font-sans text-[14.5px] leading-[22px] text-md-on-surface", children: marked })
119
119
  ] })
120
120
  ] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
121
121
  improvedOverline,
122
- /* @__PURE__ */ jsx("p", { className: "text-base leading-[26px] text-md-on-surface", children: marked })
122
+ /* @__PURE__ */ jsx("p", { className: "font-sans text-base leading-[26px] text-md-on-surface", children: marked })
123
123
  ] }),
124
124
  listed && pe.state !== "editing" && /* @__PURE__ */ jsx("div", { role: "group", "aria-label": PROMPT_ENHANCER_TEXT.changesLabel, className: "flex flex-col border-t border-md-outline-variant", children: pe.changes.map((c) => {
125
125
  const on = !pe.removed.includes(c.id);
126
126
  const cb = `${uid}-c-${c.id}`;
127
127
  const desc = [explain && c.reason ? `${cb}-why` : null, c.assumption ? `${cb}-as` : null].filter(Boolean).join(" ");
128
- return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 border-b border-md-outline-variant py-2 last:border-b-0 last:pb-0", children: [
128
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 border-b border-md-outline-variant pb-2 pt-2.5 last:border-b-0 last:pb-0", children: [
129
129
  /* @__PURE__ */ jsx(
130
130
  Md3Checkbox,
131
131
  {
@@ -137,7 +137,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
137
137
  className: "-ml-2.5 shrink-0"
138
138
  }
139
139
  ),
140
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pt-2.5", children: [
140
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pt-2.5 font-sans", children: [
141
141
  /* @__PURE__ */ jsx(
142
142
  "label",
143
143
  {
@@ -155,7 +155,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
155
155
  "span",
156
156
  {
157
157
  id: `${cb}-as`,
158
- 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",
158
+ 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 leading-[1.55] text-md-on-surface-variant",
159
159
  children: [
160
160
  /* @__PURE__ */ jsx(CircleHelp, { "aria-hidden": true, className: "size-3.5" }),
161
161
  c.assumption
@@ -166,7 +166,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
166
166
  ] }, c.id);
167
167
  }) }),
168
168
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-x-3 gap-y-2", children: [
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", {}),
169
+ pe.state !== "editing" && allowEdit ? /* @__PURE__ */ jsx(Md3Button, { variant: "text", icon: /* @__PURE__ */ jsx(Pencil, { "aria-hidden": true }), onClick: pe.edit, children: PROMPT_ENHANCER_TEXT.edit }) : /* @__PURE__ */ jsx("span", {}),
170
170
  /* @__PURE__ */ jsxs("span", { className: "ml-auto inline-flex flex-wrap gap-2", children: [
171
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 }),
172
172
  /* @__PURE__ */ jsx(Md3Button, { variant: "filled", onClick: pe.use, children: pe.state === "editing" ? PROMPT_ENHANCER_TEXT.useEdited : useLabel })
@@ -238,7 +238,7 @@ var Md3PromptEnhancer = React.forwardRef((props, ref) => {
238
238
  }
239
239
  )
240
240
  ] }) : null;
241
- return /* @__PURE__ */ jsxs("div", { ref, "data-state": pe.state, className: cn("flex w-full flex-col gap-3", className), ...rest, children: [
241
+ return /* @__PURE__ */ jsxs("div", { ref, "data-state": pe.state, className: cn("font-md", "flex w-full flex-col gap-3", className), ...rest, children: [
242
242
  autoToggle,
243
243
  review,
244
244
  failed,
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 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"]}
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\n/** nucleux.in sets the review's own copy in Inter (font-sans); its Material components stay in Roboto. */\nconst overline = \"flex items-center gap-1.5 font-sans 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-container/75 px-0.5 py-px text-[rgb(79_55_138)] underline decoration-md-primary/50 dark:text-md-on-primary-container 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-[16px] 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=\"font-sans text-base font-medium leading-6 text-md-on-surface\">{heading}</p>\n <span className=\"text-xs tracking-[0.4px] 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-[14px] 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=\"font-sans text-[14.5px] leading-[22px] text-md-on-surface\">{pe.original}</p>\n </div>\n <div className=\"flex flex-col gap-2 rounded-[14px] border border-md-primary/45 bg-md-primary/5 px-3.5 py-3\">\n {improvedOverline}\n <p className=\"font-sans 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=\"font-sans 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 pb-2 pt-2.5 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 font-sans\">\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 leading-[1.55] 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}>\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(\"font-md\", \"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.11.3",
3
+ "version": "0.12.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.11.3",
44
- "@nucleux/md3-button": "0.11.3",
45
- "@nucleux/md3-card": "0.11.3",
46
- "@nucleux/md3-checkbox": "0.11.3",
47
- "@nucleux/md3-open-input": "0.11.3",
48
- "@nucleux/md3-switch": "0.11.3",
49
- "@nucleux/prompt-enhancer": "0.11.3",
50
- "@nucleux/utils": "0.11.3",
43
+ "@nucleux/md3-agent-composer": "0.12.0",
44
+ "@nucleux/md3-button": "0.12.0",
45
+ "@nucleux/md3-card": "0.12.0",
46
+ "@nucleux/md3-checkbox": "0.12.0",
47
+ "@nucleux/md3-open-input": "0.12.0",
48
+ "@nucleux/md3-switch": "0.12.0",
49
+ "@nucleux/prompt-enhancer": "0.12.0",
50
+ "@nucleux/utils": "0.12.0",
51
51
  "lucide-react": "^0.469.0"
52
52
  },
53
53
  "devDependencies": {
54
- "@nucleux/md3-icon-button": "0.11.3",
54
+ "@nucleux/md3-icon-button": "0.12.0",
55
55
  "@types/react": "^18.3.18",
56
56
  "react": "^18.3.1",
57
57
  "tsup": "^8.3.5",