@usefragments/ui 1.3.2 → 1.4.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.
Files changed (145) hide show
  1. package/README.md +3 -1
  2. package/dist/assets/ui.css +1261 -849
  3. package/dist/chart.cjs +60 -24
  4. package/dist/chart.js +38 -24
  5. package/dist/codeblock.cjs +14 -6
  6. package/dist/codeblock.js +14 -6
  7. package/dist/colorpicker.cjs +56 -9
  8. package/dist/colorpicker.js +34 -9
  9. package/dist/components/Badge/Badge.module.scss.cjs +23 -16
  10. package/dist/components/Badge/Badge.module.scss.js +23 -16
  11. package/dist/components/Badge/index.cjs +8 -1
  12. package/dist/components/Badge/index.d.ts +3 -0
  13. package/dist/components/Badge/index.d.ts.map +1 -1
  14. package/dist/components/Badge/index.js +8 -1
  15. package/dist/components/Button/Button.module.scss.cjs +16 -13
  16. package/dist/components/Button/Button.module.scss.js +16 -13
  17. package/dist/components/Button/index.d.ts +2 -1
  18. package/dist/components/Button/index.d.ts.map +1 -1
  19. package/dist/components/Chart/index.d.ts +3 -0
  20. package/dist/components/Chart/index.d.ts.map +1 -1
  21. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +21 -21
  22. package/dist/components/CodeBlock/CodeBlock.module.scss.js +21 -21
  23. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  24. package/dist/components/ColorPicker/index.d.ts +4 -0
  25. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  26. package/dist/components/Combobox/Combobox.module.scss.cjs +23 -23
  27. package/dist/components/Combobox/Combobox.module.scss.js +23 -23
  28. package/dist/components/Command/Command.module.scss.cjs +11 -11
  29. package/dist/components/Command/Command.module.scss.js +11 -11
  30. package/dist/components/ConversationList/ConversationList.module.scss.cjs +13 -10
  31. package/dist/components/ConversationList/ConversationList.module.scss.js +14 -11
  32. package/dist/components/ConversationList/index.cjs +26 -22
  33. package/dist/components/ConversationList/index.d.ts +5 -1
  34. package/dist/components/ConversationList/index.d.ts.map +1 -1
  35. package/dist/components/ConversationList/index.js +27 -23
  36. package/dist/components/DataTable/DataTable.module.scss.cjs +35 -35
  37. package/dist/components/DataTable/DataTable.module.scss.js +35 -35
  38. package/dist/components/DataTable/index.d.ts +4 -1
  39. package/dist/components/DataTable/index.d.ts.map +1 -1
  40. package/dist/components/DatePicker/index.d.ts +3 -0
  41. package/dist/components/DatePicker/index.d.ts.map +1 -1
  42. package/dist/components/Editor/index.d.ts +4 -1
  43. package/dist/components/Editor/index.d.ts.map +1 -1
  44. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  45. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  46. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  47. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  48. package/dist/components/Markdown/index.d.ts +16 -0
  49. package/dist/components/Markdown/index.d.ts.map +1 -1
  50. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  51. package/dist/components/Menu/Menu.module.scss.js +14 -14
  52. package/dist/components/Message/Message.module.scss.cjs +23 -20
  53. package/dist/components/Message/Message.module.scss.js +24 -21
  54. package/dist/components/Message/index.cjs +5 -1
  55. package/dist/components/Message/index.d.ts.map +1 -1
  56. package/dist/components/Message/index.js +5 -1
  57. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  58. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  59. package/dist/components/Pagination/Pagination.module.scss.cjs +7 -7
  60. package/dist/components/Pagination/Pagination.module.scss.js +7 -7
  61. package/dist/components/Prompt/Prompt.module.scss.cjs +52 -22
  62. package/dist/components/Prompt/Prompt.module.scss.js +52 -22
  63. package/dist/components/Prompt/index.cjs +197 -2
  64. package/dist/components/Prompt/index.d.ts +98 -3
  65. package/dist/components/Prompt/index.d.ts.map +1 -1
  66. package/dist/components/Prompt/index.js +198 -3
  67. package/dist/components/Select/Select.module.scss.cjs +29 -17
  68. package/dist/components/Select/Select.module.scss.js +30 -18
  69. package/dist/components/Select/index.cjs +45 -8
  70. package/dist/components/Select/index.d.ts +17 -2
  71. package/dist/components/Select/index.d.ts.map +1 -1
  72. package/dist/components/Select/index.js +45 -8
  73. package/dist/components/Sidebar/Sidebar.module.scss.cjs +45 -42
  74. package/dist/components/Sidebar/Sidebar.module.scss.js +45 -42
  75. package/dist/components/Sidebar/index.cjs +2 -0
  76. package/dist/components/Sidebar/index.d.ts +6 -1
  77. package/dist/components/Sidebar/index.d.ts.map +1 -1
  78. package/dist/components/Sidebar/index.js +2 -0
  79. package/dist/components/Text/Text.module.scss.cjs +63 -51
  80. package/dist/components/Text/Text.module.scss.js +63 -51
  81. package/dist/components/Text/index.d.ts +4 -2
  82. package/dist/components/Text/index.d.ts.map +1 -1
  83. package/dist/data-table.cjs +210 -28
  84. package/dist/data-table.js +189 -29
  85. package/dist/datepicker.cjs +63 -14
  86. package/dist/datepicker.js +41 -14
  87. package/dist/editor.cjs +67 -16
  88. package/dist/editor.js +45 -16
  89. package/dist/index.cjs +1 -0
  90. package/dist/index.d.ts +1 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +2 -1
  93. package/dist/markdown.cjs +63 -19
  94. package/dist/markdown.js +41 -19
  95. package/fragments.json +1 -1
  96. package/package.json +2 -2
  97. package/src/components/Badge/Badge.contract.json +28 -5
  98. package/src/components/Badge/Badge.module.scss +21 -0
  99. package/src/components/Badge/index.tsx +10 -1
  100. package/src/components/Button/Button.contract.json +9 -3
  101. package/src/components/Button/Button.module.scss +34 -0
  102. package/src/components/Button/index.tsx +11 -1
  103. package/src/components/Chart/Chart.contract.json +7 -0
  104. package/src/components/Chart/index.tsx +44 -27
  105. package/src/components/CodeBlock/CodeBlock.contract.json +7 -0
  106. package/src/components/CodeBlock/CodeBlock.module.scss +7 -2
  107. package/src/components/CodeBlock/index.tsx +38 -6
  108. package/src/components/ColorPicker/ColorPicker.contract.json +9 -1
  109. package/src/components/ColorPicker/index.tsx +42 -12
  110. package/src/components/Combobox/Combobox.module.scss +4 -13
  111. package/src/components/ConversationList/ConversationList.contract.json +16 -1
  112. package/src/components/ConversationList/ConversationList.module.scss +12 -0
  113. package/src/components/ConversationList/index.tsx +40 -26
  114. package/src/components/DataTable/DataTable.contract.json +8 -1
  115. package/src/components/DataTable/DataTable.module.scss +5 -0
  116. package/src/components/DataTable/index.tsx +282 -51
  117. package/src/components/DatePicker/DatePicker.contract.json +8 -1
  118. package/src/components/DatePicker/index.tsx +51 -22
  119. package/src/components/Editor/Editor.contract.json +19 -1
  120. package/src/components/Editor/index.tsx +67 -23
  121. package/src/components/Listbox/Listbox.module.scss +3 -11
  122. package/src/components/Markdown/Markdown.contract.json +15 -1
  123. package/src/components/Markdown/Markdown.module.scss +18 -1
  124. package/src/components/Markdown/index.tsx +58 -24
  125. package/src/components/Menu/Menu.module.scss +12 -2
  126. package/src/components/Message/Message.contract.json +3 -0
  127. package/src/components/Message/Message.module.scss +33 -4
  128. package/src/components/Message/index.tsx +7 -1
  129. package/src/components/Pagination/Pagination.contract.json +1 -0
  130. package/src/components/Pagination/Pagination.module.scss +5 -4
  131. package/src/components/Prompt/Prompt.contract.json +40 -1
  132. package/src/components/Prompt/Prompt.module.scss +351 -4
  133. package/src/components/Prompt/index.tsx +324 -0
  134. package/src/components/Select/Select.contract.json +11 -1
  135. package/src/components/Select/Select.module.scss +80 -13
  136. package/src/components/Select/index.tsx +73 -7
  137. package/src/components/Sidebar/Sidebar.contract.json +1 -0
  138. package/src/components/Sidebar/Sidebar.module.scss +10 -0
  139. package/src/components/Sidebar/index.tsx +7 -0
  140. package/src/components/Text/Text.contract.json +7 -4
  141. package/src/components/Text/Text.module.scss +18 -0
  142. package/src/components/Text/index.tsx +4 -2
  143. package/src/index.ts +1 -0
  144. package/src/tokens/_mixins.scss +39 -4
  145. package/src/tokens/_variables.scss +30 -0
@@ -5,6 +5,7 @@ const jsxRuntime = require("react/jsx-runtime");
5
5
  const React = require("react");
6
6
  const Prompt_module = require("./Prompt.module.scss.cjs");
7
7
  const index = require("../Loading/index.cjs");
8
+ const index$1 = require("../Select/index.cjs");
8
9
  function _interopNamespaceDefault(e) {
9
10
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
11
  if (e) {
@@ -22,6 +23,34 @@ function _interopNamespaceDefault(e) {
22
23
  return Object.freeze(n);
23
24
  }
24
25
  const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
26
+ function PlusIcon() {
27
+ return /* @__PURE__ */ jsxRuntime.jsx(
28
+ "svg",
29
+ {
30
+ xmlns: "http://www.w3.org/2000/svg",
31
+ width: "16",
32
+ height: "16",
33
+ viewBox: "0 0 256 256",
34
+ fill: "currentColor",
35
+ "aria-hidden": "true",
36
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" })
37
+ }
38
+ );
39
+ }
40
+ function CloseIcon() {
41
+ return /* @__PURE__ */ jsxRuntime.jsx(
42
+ "svg",
43
+ {
44
+ xmlns: "http://www.w3.org/2000/svg",
45
+ width: "16",
46
+ height: "16",
47
+ viewBox: "0 0 256 256",
48
+ fill: "currentColor",
49
+ "aria-hidden": "true",
50
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" })
51
+ }
52
+ );
53
+ }
25
54
  function ArrowUpIcon() {
26
55
  return /* @__PURE__ */ jsxRuntime.jsx(
27
56
  "svg",
@@ -73,10 +102,15 @@ function PromptRoot({
73
102
  autoResize = true,
74
103
  submitOnEnter = true,
75
104
  variant = "default",
105
+ appearance = "panel",
106
+ onFiles,
107
+ accept,
76
108
  className,
77
109
  ...htmlProps
78
110
  }) {
79
111
  const textareaRef = React__namespace.useRef(null);
112
+ const [dragging, setDragging] = React__namespace.useState(false);
113
+ const dragDepth = React__namespace.useRef(0);
80
114
  const [value, setValue] = useControllableState(
81
115
  controlledValue,
82
116
  defaultValue,
@@ -86,6 +120,13 @@ function PromptRoot({
86
120
  if (disabled || loading || !value.trim()) return;
87
121
  onSubmit == null ? void 0 : onSubmit(value);
88
122
  }, [disabled, loading, value, onSubmit]);
123
+ const acceptFiles = React__namespace.useCallback(
124
+ (files) => {
125
+ if (!onFiles || disabled || loading || files.length === 0) return;
126
+ onFiles(files);
127
+ },
128
+ [onFiles, disabled, loading]
129
+ );
89
130
  const contextValue = {
90
131
  value,
91
132
  setValue,
@@ -97,12 +138,39 @@ function PromptRoot({
97
138
  autoResize,
98
139
  submitOnEnter,
99
140
  handleSubmit,
100
- textareaRef
141
+ textareaRef,
142
+ accept,
143
+ onFiles: onFiles ? acceptFiles : void 0
101
144
  };
145
+ const dropHandlers = onFiles ? {
146
+ onDragEnter: (event) => {
147
+ if (!event.dataTransfer.types.includes("Files")) return;
148
+ dragDepth.current += 1;
149
+ setDragging(true);
150
+ },
151
+ onDragOver: (event) => {
152
+ if (!event.dataTransfer.types.includes("Files")) return;
153
+ event.preventDefault();
154
+ event.dataTransfer.dropEffect = "copy";
155
+ },
156
+ onDragLeave: () => {
157
+ dragDepth.current = Math.max(0, dragDepth.current - 1);
158
+ if (dragDepth.current === 0) setDragging(false);
159
+ },
160
+ onDrop: (event) => {
161
+ if (!event.dataTransfer.types.includes("Files")) return;
162
+ event.preventDefault();
163
+ dragDepth.current = 0;
164
+ setDragging(false);
165
+ acceptFiles(Array.from(event.dataTransfer.files));
166
+ }
167
+ } : null;
102
168
  const classes = [
103
169
  Prompt_module.default.prompt,
104
170
  variant === "fixed" && Prompt_module.default.fixed,
105
171
  variant === "sticky" && Prompt_module.default.sticky,
172
+ appearance === "seamless" && Prompt_module.default.seamless,
173
+ dragging && Prompt_module.default.dragging,
106
174
  disabled && Prompt_module.default.disabled,
107
175
  loading && Prompt_module.default.loading,
108
176
  className
@@ -111,10 +179,13 @@ function PromptRoot({
111
179
  "div",
112
180
  {
113
181
  ...htmlProps,
182
+ ...dropHandlers,
114
183
  className: classes,
115
184
  "data-disabled": disabled || void 0,
116
185
  "data-loading": loading || void 0,
117
186
  "data-variant": variant,
187
+ "data-appearance": appearance,
188
+ "data-dragging": dragging || void 0,
118
189
  children
119
190
  }
120
191
  ) });
@@ -124,6 +195,7 @@ function PromptTextarea({
124
195
  className,
125
196
  onChange,
126
197
  onKeyDown,
198
+ onPaste,
127
199
  "aria-label": ariaLabel,
128
200
  ...htmlProps
129
201
  }) {
@@ -138,7 +210,8 @@ function PromptTextarea({
138
210
  autoResize,
139
211
  submitOnEnter,
140
212
  handleSubmit,
141
- textareaRef
213
+ textareaRef,
214
+ onFiles
142
215
  } = usePromptContext();
143
216
  const lineHeight = 1.5;
144
217
  const padding = 12;
@@ -169,6 +242,20 @@ function PromptTextarea({
169
242
  handleSubmit();
170
243
  }
171
244
  };
245
+ const handlePaste = (e) => {
246
+ onPaste == null ? void 0 : onPaste(e);
247
+ if (e.defaultPrevented || !onFiles) return;
248
+ const files = Array.from(e.clipboardData.files);
249
+ if (files.length === 0) return;
250
+ e.preventDefault();
251
+ onFiles(
252
+ files.map(
253
+ (file, index2) => file.name && file.name !== "image.png" ? file : new File([file], `pasted-${index2 + 1}.${file.type.split("/")[1] || "png"}`, {
254
+ type: file.type
255
+ })
256
+ )
257
+ );
258
+ };
172
259
  const classes = [Prompt_module.default.textarea, className].filter(Boolean).join(" ");
173
260
  return /* @__PURE__ */ jsxRuntime.jsx(
174
261
  "textarea",
@@ -179,6 +266,7 @@ function PromptTextarea({
179
266
  value,
180
267
  onChange: handleChange,
181
268
  onKeyDown: handleKeyDown,
269
+ onPaste: handlePaste,
182
270
  placeholder: overridePlaceholder ?? placeholder,
183
271
  disabled: disabled || loading,
184
272
  rows: minRows,
@@ -259,6 +347,107 @@ function PromptModeButton({
259
347
  }
260
348
  );
261
349
  }
350
+ function formatSize(bytes) {
351
+ if (bytes < 1024) return `${bytes} B`;
352
+ const kb = bytes / 1024;
353
+ if (kb < 1024) return `${Math.round(kb)} KB`;
354
+ return `${(kb / 1024).toFixed(kb / 1024 < 10 ? 1 : 0)} MB`;
355
+ }
356
+ function PromptAttachments({ items, onRemove, className }) {
357
+ if (items.length === 0) return null;
358
+ const classes = [Prompt_module.default.attachments, className].filter(Boolean).join(" ");
359
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: classes, "aria-label": "Attachments", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: Prompt_module.default.attachment, children: [
360
+ item.previewUrl ? (
361
+ // Decorative: the filename beside it is the accessible name, and a
362
+ // thumbnail of a screenshot has no description worth inventing.
363
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.previewUrl, alt: "", className: Prompt_module.default.attachmentThumb })
364
+ ) : null,
365
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: Prompt_module.default.attachmentName, title: item.name, children: item.name }),
366
+ item.size != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Prompt_module.default.attachmentSize, children: formatSize(item.size) }),
367
+ onRemove && /* @__PURE__ */ jsxRuntime.jsx(
368
+ "button",
369
+ {
370
+ type: "button",
371
+ className: Prompt_module.default.attachmentRemove,
372
+ onClick: () => onRemove(item.id),
373
+ "aria-label": `Remove ${item.name}`,
374
+ children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {})
375
+ }
376
+ )
377
+ ] }, item.id)) });
378
+ }
379
+ function PromptAttach({
380
+ "aria-label": ariaLabel = "Attach files",
381
+ children,
382
+ accept: acceptOverride,
383
+ multiple = true,
384
+ disabled: buttonDisabled,
385
+ className
386
+ }) {
387
+ const { disabled, loading, accept, onFiles } = usePromptContext();
388
+ const inputRef = React__namespace.useRef(null);
389
+ const isDisabled = disabled || loading || buttonDisabled || !onFiles;
390
+ const classes = [Prompt_module.default.attach, className].filter(Boolean).join(" ");
391
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
392
+ /* @__PURE__ */ jsxRuntime.jsx(
393
+ "button",
394
+ {
395
+ type: "button",
396
+ className: classes,
397
+ onClick: () => {
398
+ var _a;
399
+ return (_a = inputRef.current) == null ? void 0 : _a.click();
400
+ },
401
+ disabled: isDisabled,
402
+ "aria-label": ariaLabel,
403
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, {})
404
+ }
405
+ ),
406
+ /* @__PURE__ */ jsxRuntime.jsx(
407
+ "input",
408
+ {
409
+ ref: inputRef,
410
+ type: "file",
411
+ hidden: true,
412
+ accept: acceptOverride ?? accept,
413
+ multiple,
414
+ onChange: (event) => {
415
+ const files = Array.from(event.target.files ?? []);
416
+ event.target.value = "";
417
+ onFiles == null ? void 0 : onFiles(files);
418
+ }
419
+ }
420
+ )
421
+ ] });
422
+ }
423
+ function PromptSelect({
424
+ icon,
425
+ "aria-label": ariaLabel,
426
+ options,
427
+ children,
428
+ placeholder,
429
+ disabled: selectDisabled,
430
+ className,
431
+ ...selectProps
432
+ }) {
433
+ const { disabled, loading } = usePromptContext();
434
+ const classes = [Prompt_module.default.select, className].filter(Boolean).join(" ");
435
+ return /* @__PURE__ */ jsxRuntime.jsxs(
436
+ index$1.Select,
437
+ {
438
+ ...selectProps,
439
+ size: "sm",
440
+ variant: "ghost",
441
+ options,
442
+ placeholder,
443
+ disabled: disabled || loading || selectDisabled,
444
+ children: [
445
+ /* @__PURE__ */ jsxRuntime.jsx(index$1.Select.Trigger, { className: classes, icon, "aria-label": ariaLabel }),
446
+ /* @__PURE__ */ jsxRuntime.jsx(index$1.Select.Content, { children })
447
+ ]
448
+ }
449
+ );
450
+ }
262
451
  function PromptUsage({ children, className }) {
263
452
  const classes = [Prompt_module.default.usage, className].filter(Boolean).join(" ");
264
453
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes, children });
@@ -305,15 +494,21 @@ const Prompt = Object.assign(PromptRoot, {
305
494
  Info: PromptInfo,
306
495
  ActionButton: PromptActionButton,
307
496
  ModeButton: PromptModeButton,
497
+ Select: PromptSelect,
498
+ Attach: PromptAttach,
499
+ Attachments: PromptAttachments,
308
500
  Usage: PromptUsage,
309
501
  Submit: PromptSubmit
310
502
  });
311
503
  exports.Prompt = Prompt;
312
504
  exports.PromptActionButton = PromptActionButton;
313
505
  exports.PromptActions = PromptActions;
506
+ exports.PromptAttach = PromptAttach;
507
+ exports.PromptAttachments = PromptAttachments;
314
508
  exports.PromptInfo = PromptInfo;
315
509
  exports.PromptModeButton = PromptModeButton;
316
510
  exports.PromptRoot = PromptRoot;
511
+ exports.PromptSelect = PromptSelect;
317
512
  exports.PromptSubmit = PromptSubmit;
318
513
  exports.PromptTab = PromptTab;
319
514
  exports.PromptTabs = PromptTabs;
@@ -1,5 +1,7 @@
1
1
  import * as React from 'react';
2
+ import { type SelectOption, type SelectValue } from '../Select';
2
3
  export type PromptVariant = 'default' | 'fixed' | 'sticky';
4
+ export type PromptAppearance = 'panel' | 'seamless';
3
5
  export interface PromptProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSubmit' | 'defaultValue'> {
4
6
  children: React.ReactNode;
5
7
  /** Controlled input value */
@@ -24,8 +26,19 @@ export interface PromptProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
24
26
  autoResize?: boolean;
25
27
  /** Submit on Enter key (Shift+Enter for newline) */
26
28
  submitOnEnter?: boolean;
29
+ /** Files added to the prompt, by any of the three routes people actually
30
+ * use: the attach button, a paste, or a drop anywhere on the card. Providing
31
+ * it is what turns all three on. */
32
+ onFiles?: (files: File[]) => void;
33
+ /** `accept` for the attach button's picker, e.g. `"image/*"`. */
34
+ accept?: string;
27
35
  /** Visual variant - "fixed" for bottom-fixed elevated prompt */
28
36
  variant?: PromptVariant;
37
+ /** How the card is divided up. `panel` keeps the toolbar as a filled footer
38
+ * under a rule; `seamless` makes the whole card one writing surface with the
39
+ * controls floating on it — the shape most agent composers use.
40
+ * @default "panel" */
41
+ appearance?: PromptAppearance;
29
42
  }
30
43
  export interface PromptTextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'defaultValue' | 'onChange' | 'rows' | 'disabled' | 'children'> {
31
44
  /** Override placeholder from context */
@@ -34,6 +47,8 @@ export interface PromptTextareaProps extends Omit<React.TextareaHTMLAttributes<H
34
47
  onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
35
48
  /** Composed with internal submit-on-enter logic */
36
49
  onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;
50
+ /** Composed with the prompt's paste-to-attach behaviour */
51
+ onPaste?: React.ClipboardEventHandler<HTMLTextAreaElement>;
37
52
  }
38
53
  export interface PromptToolbarProps {
39
54
  children: React.ReactNode;
@@ -79,6 +94,55 @@ export interface PromptModeButtonProps {
79
94
  disabled?: boolean;
80
95
  className?: string;
81
96
  }
97
+ /** One thing attached to the prompt, as the strip needs to render it. */
98
+ export interface PromptAttachment {
99
+ id: string;
100
+ name: string;
101
+ /** Size in bytes. Shown beside the name when known. */
102
+ size?: number;
103
+ /** Object URL or data URI. An image gets a thumbnail instead of an icon. */
104
+ previewUrl?: string;
105
+ }
106
+ export interface PromptAttachmentsProps {
107
+ items: PromptAttachment[];
108
+ /** Omit to render the strip read-only. */
109
+ onRemove?: (id: string) => void;
110
+ className?: string;
111
+ }
112
+ export interface PromptAttachProps {
113
+ /** Accessible name.
114
+ * @default "Attach files" */
115
+ 'aria-label'?: string;
116
+ /** Custom glyph. Defaults to a plus. */
117
+ children?: React.ReactNode;
118
+ /** Overrides the prompt's own `accept` for this control. */
119
+ accept?: string;
120
+ /** @default true */
121
+ multiple?: boolean;
122
+ disabled?: boolean;
123
+ className?: string;
124
+ }
125
+ export interface PromptSelectProps {
126
+ /** Leading glyph — says what the choice is about, so the visible text can be
127
+ * the choice itself. */
128
+ icon?: React.ReactNode;
129
+ /** Accessible name. The trigger shows the current choice, not this. */
130
+ 'aria-label': string;
131
+ /** Controlled value */
132
+ value?: SelectValue | null;
133
+ /** Default value for uncontrolled usage */
134
+ defaultValue?: SelectValue;
135
+ /** Called when the choice changes */
136
+ onValueChange?: (value: SelectValue | null) => void;
137
+ /** The choices. Omit and pass `Select.Item` children for richer options. */
138
+ options?: SelectOption[];
139
+ children?: React.ReactNode;
140
+ /** Shown before anything is chosen */
141
+ placeholder?: string;
142
+ /** Disabled independently of the prompt's own disabled state */
143
+ disabled?: boolean;
144
+ className?: string;
145
+ }
82
146
  export interface PromptUsageProps {
83
147
  children: React.ReactNode;
84
148
  className?: string;
@@ -102,10 +166,14 @@ interface PromptContextValue {
102
166
  submitOnEnter: boolean;
103
167
  handleSubmit: () => void;
104
168
  textareaRef: React.RefObject<HTMLTextAreaElement | null>;
169
+ accept?: string;
170
+ /** Undefined when the consumer has not opted into files at all, which is how
171
+ * Attach knows to disable itself and the root knows not to accept drops. */
172
+ onFiles?: (files: File[]) => void;
105
173
  }
106
174
  declare function usePromptContext(): PromptContextValue;
107
- declare function PromptRoot({ children, value: controlledValue, defaultValue, onChange, onSubmit, placeholder, disabled, loading, minRows, maxRows, autoResize, submitOnEnter, variant, className, ...htmlProps }: PromptProps): import("react/jsx-runtime").JSX.Element;
108
- declare function PromptTextarea({ placeholder: overridePlaceholder, className, onChange, onKeyDown, 'aria-label': ariaLabel, ...htmlProps }: PromptTextareaProps): import("react/jsx-runtime").JSX.Element;
175
+ declare function PromptRoot({ children, value: controlledValue, defaultValue, onChange, onSubmit, placeholder, disabled, loading, minRows, maxRows, autoResize, submitOnEnter, variant, appearance, onFiles, accept, className, ...htmlProps }: PromptProps): import("react/jsx-runtime").JSX.Element;
176
+ declare function PromptTextarea({ placeholder: overridePlaceholder, className, onChange, onKeyDown, onPaste, 'aria-label': ariaLabel, ...htmlProps }: PromptTextareaProps): import("react/jsx-runtime").JSX.Element;
109
177
  declare function PromptToolbar({ children, className }: PromptToolbarProps): import("react/jsx-runtime").JSX.Element;
110
178
  declare function PromptTabs({ children, className }: PromptTabsProps): import("react/jsx-runtime").JSX.Element;
111
179
  declare function PromptTab({ children, active, onClick, className }: PromptTabProps): import("react/jsx-runtime").JSX.Element;
@@ -113,6 +181,30 @@ declare function PromptActions({ children, className }: PromptActionsProps): imp
113
181
  declare function PromptInfo({ children, className }: PromptInfoProps): import("react/jsx-runtime").JSX.Element;
114
182
  declare function PromptActionButton({ children, 'aria-label': ariaLabel, onClick, disabled: buttonDisabled, className, }: PromptActionButtonProps): import("react/jsx-runtime").JSX.Element;
115
183
  declare function PromptModeButton({ children, onClick, active, disabled: buttonDisabled, className, }: PromptModeButtonProps): import("react/jsx-runtime").JSX.Element;
184
+ /**
185
+ * What is going with the message. Renders above the textarea rather than under
186
+ * the toolbar, because these are part of what you are sending and not a
187
+ * setting on the sending.
188
+ */
189
+ declare function PromptAttachments({ items, onRemove, className }: PromptAttachmentsProps): import("react/jsx-runtime").JSX.Element | null;
190
+ /**
191
+ * The attach control. Does nothing on its own — it opens a picker and hands
192
+ * the result to the prompt's `onFiles`, the same callback that paste and drop
193
+ * go through, so a consumer writes one handler for all three.
194
+ */
195
+ declare function PromptAttach({ 'aria-label': ariaLabel, children, accept: acceptOverride, multiple, disabled: buttonDisabled, className, }: PromptAttachProps): import("react/jsx-runtime").JSX.Element;
196
+ /**
197
+ * A choice that scopes the submission — model, agent, tone, which project this
198
+ * runs against. `ModeButton` covers a setting you toggle; this covers one you
199
+ * pick from a list, which every non-trivial composer ends up needing.
200
+ *
201
+ * It is a `Select` throughout, in its ghost variant, so the popup, keyboard
202
+ * handling and selection state are the same ones the rest of the library uses.
203
+ * The trigger shows the current choice rather than a field label, because in a
204
+ * toolbar the choice is the only part worth the width — what kind of choice it
205
+ * is comes from the icon and the accessible name.
206
+ */
207
+ declare function PromptSelect({ icon, 'aria-label': ariaLabel, options, children, placeholder, disabled: selectDisabled, className, ...selectProps }: PromptSelectProps): import("react/jsx-runtime").JSX.Element;
116
208
  declare function PromptUsage({ children, className }: PromptUsageProps): import("react/jsx-runtime").JSX.Element;
117
209
  declare function PromptSubmit({ children, 'aria-label': ariaLabel, className, }: PromptSubmitProps): import("react/jsx-runtime").JSX.Element;
118
210
  export declare const Prompt: typeof PromptRoot & {
@@ -124,9 +216,12 @@ export declare const Prompt: typeof PromptRoot & {
124
216
  Info: typeof PromptInfo;
125
217
  ActionButton: typeof PromptActionButton;
126
218
  ModeButton: typeof PromptModeButton;
219
+ Select: typeof PromptSelect;
220
+ Attach: typeof PromptAttach;
221
+ Attachments: typeof PromptAttachments;
127
222
  Usage: typeof PromptUsage;
128
223
  Submit: typeof PromptSubmit;
129
224
  };
130
- export { PromptRoot, PromptTextarea, PromptToolbar, PromptTabs, PromptTab, PromptActions, PromptInfo, PromptActionButton, PromptModeButton, PromptUsage, PromptSubmit, };
225
+ export { PromptRoot, PromptTextarea, PromptToolbar, PromptTabs, PromptTab, PromptActions, PromptInfo, PromptActionButton, PromptModeButton, PromptSelect, PromptAttach, PromptAttachments, PromptUsage, PromptSubmit, };
131
226
  export { usePromptContext };
132
227
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prompt/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prompt/index.tsx"],"names":[],"mappings":"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"}