@mieweb/ui 0.11.0-dev.1 → 0.11.0-dev.2

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunkJFLC7SHM_cjs = require('../../chunk-JFLC7SHM.cjs');
4
4
  var chunkXRVMYT5G_cjs = require('../../chunk-XRVMYT5G.cjs');
5
- var chunkU2RS574O_cjs = require('../../chunk-U2RS574O.cjs');
5
+ var chunkWGXJNCRG_cjs = require('../../chunk-WGXJNCRG.cjs');
6
6
  var chunkAJPFQF3H_cjs = require('../../chunk-AJPFQF3H.cjs');
7
7
  require('../../chunk-GLXTVCHN.cjs');
8
8
  var chunkKQ6GLYFZ_cjs = require('../../chunk-KQ6GLYFZ.cjs');
@@ -1411,7 +1411,7 @@ function SuperChat({
1411
1411
  mediaItems.length
1412
1412
  ]);
1413
1413
  React3__namespace.useEffect(() => {
1414
- chunkU2RS574O_cjs.notifyComposerMigrationOnce("SuperChat");
1414
+ chunkWGXJNCRG_cjs.notifyComposerMigrationOnce("SuperChat");
1415
1415
  }, []);
1416
1416
  const renderText = React3__namespace.useMemo(
1417
1417
  () => renderTextContent ?? createMarkdownRenderer({
@@ -1897,7 +1897,7 @@ function SuperChat({
1897
1897
  }
1898
1898
  ),
1899
1899
  /* @__PURE__ */ jsxRuntime.jsx(
1900
- chunkU2RS574O_cjs.ChatComposer,
1900
+ chunkWGXJNCRG_cjs.ChatComposer,
1901
1901
  {
1902
1902
  value: draft,
1903
1903
  onValueChange: handleDraftChange,
@@ -62,18 +62,22 @@ type UncontrolledProviderFilterProps = {
62
62
  };
63
63
  type ComposerModelSelectorProps = ComposerModelSelectorBaseProps & (ControlledProviderFilterProps | UncontrolledProviderFilterProps);
64
64
 
65
- /** An agent shown in the composer's agent selector. */
66
- interface ChatComposerAgentOption {
67
- /** Stable id (returned via `onAgentChange`). */
65
+ /** An option in a composer selector-row menu (agent, voice, …). */
66
+ interface ComposerSelectorOption {
67
+ /** Stable id (returned via `onChange`). */
68
68
  id: string;
69
69
  /** Display label. */
70
70
  label: string;
71
- /** Optional leading icon (defaults to a bot glyph in the trigger). */
71
+ /** Optional leading icon (falls back to the selector's `icon` in the trigger). */
72
72
  icon?: React.ReactNode;
73
73
  /** Optional secondary text shown in the menu. */
74
74
  description?: string;
75
75
  }
76
76
 
77
+ /** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
78
+ interface ChatComposerAgentOption extends ComposerSelectorOption {
79
+ }
80
+
77
81
  interface SuperChatProps {
78
82
  /** The conversation to display (host-owned state). */
79
83
  conversation: SuperChatConversation;
@@ -62,18 +62,22 @@ type UncontrolledProviderFilterProps = {
62
62
  };
63
63
  type ComposerModelSelectorProps = ComposerModelSelectorBaseProps & (ControlledProviderFilterProps | UncontrolledProviderFilterProps);
64
64
 
65
- /** An agent shown in the composer's agent selector. */
66
- interface ChatComposerAgentOption {
67
- /** Stable id (returned via `onAgentChange`). */
65
+ /** An option in a composer selector-row menu (agent, voice, …). */
66
+ interface ComposerSelectorOption {
67
+ /** Stable id (returned via `onChange`). */
68
68
  id: string;
69
69
  /** Display label. */
70
70
  label: string;
71
- /** Optional leading icon (defaults to a bot glyph in the trigger). */
71
+ /** Optional leading icon (falls back to the selector's `icon` in the trigger). */
72
72
  icon?: React.ReactNode;
73
73
  /** Optional secondary text shown in the menu. */
74
74
  description?: string;
75
75
  }
76
76
 
77
+ /** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
78
+ interface ChatComposerAgentOption extends ComposerSelectorOption {
79
+ }
80
+
77
81
  interface SuperChatProps {
78
82
  /** The conversation to display (host-owned state). */
79
83
  conversation: SuperChatConversation;
@@ -1,7 +1,7 @@
1
1
  import { TextRenderContext } from '../../chunk-I6CY5C6A.js';
2
2
  export { TextRenderContext, useTextRenderContext } from '../../chunk-I6CY5C6A.js';
3
3
  import { ChatBubble, MCPToolCallDisplay, AITypingIndicator, SparklesIcon, ButtonGroup, CloseIcon, JumpToBottomButton } from '../../chunk-RM2HPQIC.js';
4
- import { notifyComposerMigrationOnce, ChatComposer } from '../../chunk-TJ4GWQPM.js';
4
+ import { notifyComposerMigrationOnce, ChatComposer } from '../../chunk-GJPCWR4C.js';
5
5
  import { MediaFeed } from '../../chunk-2X54ZLT6.js';
6
6
  import '../../chunk-RISZWWEQ.js';
7
7
  import { MediaPlayer } from '../../chunk-N54FYWG6.js';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkJFLC7SHM_cjs = require('../../../chunk-JFLC7SHM.cjs');
4
- var chunkFMEA6WAY_cjs = require('../../../chunk-FMEA6WAY.cjs');
5
- require('../../../chunk-U2RS574O.cjs');
4
+ var chunkC66JR43M_cjs = require('../../../chunk-C66JR43M.cjs');
5
+ require('../../../chunk-WGXJNCRG.cjs');
6
6
  require('../../../chunk-ZNUMOJOI.cjs');
7
7
  require('../../../chunk-PINIBEIU.cjs');
8
8
  require('../../../chunk-I44YNYI6.cjs');
@@ -615,7 +615,7 @@ function ZoomableImage({
615
615
  ),
616
616
  open && typeof document !== "undefined" && reactDom.createPortal(
617
617
  /* @__PURE__ */ jsxRuntime.jsx(
618
- chunkFMEA6WAY_cjs.LightboxModal,
618
+ chunkC66JR43M_cjs.LightboxModal,
619
619
  {
620
620
  attachment,
621
621
  onClose: () => setOpen(false)
@@ -1,6 +1,6 @@
1
1
  import { useTextRenderContext } from '../../../chunk-I6CY5C6A.js';
2
- import { LightboxModal } from '../../../chunk-YZCM7CXK.js';
3
- import '../../../chunk-TJ4GWQPM.js';
2
+ import { LightboxModal } from '../../../chunk-NKG2UNXE.js';
3
+ import '../../../chunk-GJPCWR4C.js';
4
4
  import '../../../chunk-AMYFRY7K.js';
5
5
  import '../../../chunk-OYUIEJPN.js';
6
6
  import '../../../chunk-6NZXWKUE.js';
package/dist/index.cjs CHANGED
@@ -43,8 +43,8 @@ var chunkXPWFIDZM_cjs = require('./chunk-XPWFIDZM.cjs');
43
43
  var chunkAHHFFXJR_cjs = require('./chunk-AHHFFXJR.cjs');
44
44
  var chunk7RV6CAP6_cjs = require('./chunk-7RV6CAP6.cjs');
45
45
  var chunkXRVMYT5G_cjs = require('./chunk-XRVMYT5G.cjs');
46
- var chunkFMEA6WAY_cjs = require('./chunk-FMEA6WAY.cjs');
47
- var chunkU2RS574O_cjs = require('./chunk-U2RS574O.cjs');
46
+ var chunkC66JR43M_cjs = require('./chunk-C66JR43M.cjs');
47
+ var chunkWGXJNCRG_cjs = require('./chunk-WGXJNCRG.cjs');
48
48
  var chunkIJYTASQQ_cjs = require('./chunk-IJYTASQQ.cjs');
49
49
  var chunk3SZQRMHM_cjs = require('./chunk-3SZQRMHM.cjs');
50
50
  var chunkOZOSWBSI_cjs = require('./chunk-OZOSWBSI.cjs');
@@ -1462,7 +1462,7 @@ function AIEmptyState({
1462
1462
  /* @__PURE__ */ jsxRuntime.jsx(SuggestedActions, { actions: suggestions, onSelect: onSuggestionSelect })
1463
1463
  ] }) : void 0;
1464
1464
  return /* @__PURE__ */ jsxRuntime.jsx(
1465
- chunkFMEA6WAY_cjs.EmptyState,
1465
+ chunkC66JR43M_cjs.EmptyState,
1466
1466
  {
1467
1467
  title,
1468
1468
  description,
@@ -1523,7 +1523,7 @@ function AIChat({
1523
1523
  renderMessageFooter
1524
1524
  }) {
1525
1525
  React13__namespace.useEffect(() => {
1526
- chunkU2RS574O_cjs.notifyComposerMigrationOnce("AIChat");
1526
+ chunkWGXJNCRG_cjs.notifyComposerMigrationOnce("AIChat");
1527
1527
  }, []);
1528
1528
  const messages = React13__namespace.useMemo(
1529
1529
  () => session?.messages || messagesProp || [],
@@ -1659,7 +1659,7 @@ function AIChat({
1659
1659
  },
1660
1660
  [isHostControlled, hostOnValueChange]
1661
1661
  );
1662
- const { stopTyping } = chunkFMEA6WAY_cjs.useTypingEmulation({
1662
+ const { stopTyping } = chunkC66JR43M_cjs.useTypingEmulation({
1663
1663
  value: composerValue,
1664
1664
  onTypingStart,
1665
1665
  onTypingStop
@@ -1826,7 +1826,7 @@ function AIChat({
1826
1826
  }
1827
1827
  ) }),
1828
1828
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "ai-chat-composer", className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
1829
- chunkU2RS574O_cjs.ChatComposer,
1829
+ chunkWGXJNCRG_cjs.ChatComposer,
1830
1830
  {
1831
1831
  onSend: hostOnSend ? (message) => sendWithRestore(message, hostOnSend) : handleSend,
1832
1832
  placeholder: inputPlaceholder,
@@ -1848,8 +1848,8 @@ function AIChat({
1848
1848
  allowAttachments: composerRest.allowAttachments ?? legacyAttachments,
1849
1849
  maxLength: composerRest.maxLength ?? 1600,
1850
1850
  inputLabel: composerRest.inputLabel ?? "Message",
1851
- acceptedFileTypes: composerRest.acceptedFileTypes ?? (legacyAttachments ? chunkU2RS574O_cjs.DEFAULT_ACCEPTED_FILE_TYPES : void 0),
1852
- maxFileSize: composerRest.maxFileSize ?? (legacyAttachments ? chunkU2RS574O_cjs.DEFAULT_MAX_FILE_SIZE : void 0),
1851
+ acceptedFileTypes: composerRest.acceptedFileTypes ?? (legacyAttachments ? chunkWGXJNCRG_cjs.DEFAULT_ACCEPTED_FILE_TYPES : void 0),
1852
+ maxFileSize: composerRest.maxFileSize ?? (legacyAttachments ? chunkWGXJNCRG_cjs.DEFAULT_MAX_FILE_SIZE : void 0),
1853
1853
  value: composerValue,
1854
1854
  onValueChange: handleComposerValueChange
1855
1855
  }
@@ -45200,159 +45200,159 @@ Object.defineProperty(exports, "getToolIcon", {
45200
45200
  });
45201
45201
  Object.defineProperty(exports, "AttachmentPreview", {
45202
45202
  enumerable: true,
45203
- get: function () { return chunkFMEA6WAY_cjs.AttachmentPreview; }
45203
+ get: function () { return chunkC66JR43M_cjs.AttachmentPreview; }
45204
45204
  });
45205
45205
  Object.defineProperty(exports, "ConversationHeader", {
45206
45206
  enumerable: true,
45207
- get: function () { return chunkFMEA6WAY_cjs.ConversationHeader; }
45207
+ get: function () { return chunkC66JR43M_cjs.ConversationHeader; }
45208
45208
  });
45209
45209
  Object.defineProperty(exports, "ConversationListItem", {
45210
45210
  enumerable: true,
45211
- get: function () { return chunkFMEA6WAY_cjs.ConversationListItem; }
45211
+ get: function () { return chunkC66JR43M_cjs.ConversationListItem; }
45212
45212
  });
45213
45213
  Object.defineProperty(exports, "ConversationListSkeleton", {
45214
45214
  enumerable: true,
45215
- get: function () { return chunkFMEA6WAY_cjs.ConversationListSkeleton; }
45215
+ get: function () { return chunkC66JR43M_cjs.ConversationListSkeleton; }
45216
45216
  });
45217
45217
  Object.defineProperty(exports, "DateSeparator", {
45218
45218
  enumerable: true,
45219
- get: function () { return chunkFMEA6WAY_cjs.DateSeparator; }
45219
+ get: function () { return chunkC66JR43M_cjs.DateSeparator; }
45220
45220
  });
45221
45221
  Object.defineProperty(exports, "EmptyState", {
45222
45222
  enumerable: true,
45223
- get: function () { return chunkFMEA6WAY_cjs.EmptyState; }
45223
+ get: function () { return chunkC66JR43M_cjs.EmptyState; }
45224
45224
  });
45225
45225
  Object.defineProperty(exports, "LightboxModal", {
45226
45226
  enumerable: true,
45227
- get: function () { return chunkFMEA6WAY_cjs.LightboxModal; }
45227
+ get: function () { return chunkC66JR43M_cjs.LightboxModal; }
45228
45228
  });
45229
45229
  Object.defineProperty(exports, "LoadMoreButton", {
45230
45230
  enumerable: true,
45231
- get: function () { return chunkFMEA6WAY_cjs.LoadMoreButton; }
45231
+ get: function () { return chunkC66JR43M_cjs.LoadMoreButton; }
45232
45232
  });
45233
45233
  Object.defineProperty(exports, "MessageBubble", {
45234
45234
  enumerable: true,
45235
- get: function () { return chunkFMEA6WAY_cjs.MessageBubble; }
45235
+ get: function () { return chunkC66JR43M_cjs.MessageBubble; }
45236
45236
  });
45237
45237
  Object.defineProperty(exports, "MessageList", {
45238
45238
  enumerable: true,
45239
- get: function () { return chunkFMEA6WAY_cjs.MessageList; }
45239
+ get: function () { return chunkC66JR43M_cjs.MessageList; }
45240
45240
  });
45241
45241
  Object.defineProperty(exports, "MessageStatusIcon", {
45242
45242
  enumerable: true,
45243
- get: function () { return chunkFMEA6WAY_cjs.MessageStatusIcon; }
45243
+ get: function () { return chunkC66JR43M_cjs.MessageStatusIcon; }
45244
45244
  });
45245
45245
  Object.defineProperty(exports, "MessageThread", {
45246
45246
  enumerable: true,
45247
- get: function () { return chunkFMEA6WAY_cjs.MessageThread; }
45247
+ get: function () { return chunkC66JR43M_cjs.MessageThread; }
45248
45248
  });
45249
45249
  Object.defineProperty(exports, "MessagingSplitView", {
45250
45250
  enumerable: true,
45251
- get: function () { return chunkFMEA6WAY_cjs.MessagingSplitView; }
45251
+ get: function () { return chunkC66JR43M_cjs.MessagingSplitView; }
45252
45252
  });
45253
45253
  Object.defineProperty(exports, "ReadReceiptIndicator", {
45254
45254
  enumerable: true,
45255
- get: function () { return chunkFMEA6WAY_cjs.ReadReceiptIndicator; }
45255
+ get: function () { return chunkC66JR43M_cjs.ReadReceiptIndicator; }
45256
45256
  });
45257
45257
  Object.defineProperty(exports, "SkeletonMessage", {
45258
45258
  enumerable: true,
45259
- get: function () { return chunkFMEA6WAY_cjs.SkeletonMessage; }
45259
+ get: function () { return chunkC66JR43M_cjs.SkeletonMessage; }
45260
45260
  });
45261
45261
  Object.defineProperty(exports, "TypingIndicator", {
45262
45262
  enumerable: true,
45263
- get: function () { return chunkFMEA6WAY_cjs.TypingIndicator; }
45263
+ get: function () { return chunkC66JR43M_cjs.TypingIndicator; }
45264
45264
  });
45265
45265
  Object.defineProperty(exports, "bubbleVariants", {
45266
45266
  enumerable: true,
45267
- get: function () { return chunkFMEA6WAY_cjs.bubbleVariants; }
45267
+ get: function () { return chunkC66JR43M_cjs.bubbleVariants; }
45268
45268
  });
45269
45269
  Object.defineProperty(exports, "formatDateLabel", {
45270
45270
  enumerable: true,
45271
- get: function () { return chunkFMEA6WAY_cjs.formatDateLabel; }
45271
+ get: function () { return chunkC66JR43M_cjs.formatDateLabel; }
45272
45272
  });
45273
45273
  Object.defineProperty(exports, "formatFileSize", {
45274
45274
  enumerable: true,
45275
- get: function () { return chunkFMEA6WAY_cjs.formatFileSize; }
45275
+ get: function () { return chunkC66JR43M_cjs.formatFileSize; }
45276
45276
  });
45277
45277
  Object.defineProperty(exports, "formatLastSeen", {
45278
45278
  enumerable: true,
45279
- get: function () { return chunkFMEA6WAY_cjs.formatLastSeen; }
45279
+ get: function () { return chunkC66JR43M_cjs.formatLastSeen; }
45280
45280
  });
45281
45281
  Object.defineProperty(exports, "getConversationSubtitle", {
45282
45282
  enumerable: true,
45283
- get: function () { return chunkFMEA6WAY_cjs.getConversationSubtitle; }
45283
+ get: function () { return chunkC66JR43M_cjs.getConversationSubtitle; }
45284
45284
  });
45285
45285
  Object.defineProperty(exports, "getConversationTitle", {
45286
45286
  enumerable: true,
45287
- get: function () { return chunkFMEA6WAY_cjs.getConversationTitle; }
45287
+ get: function () { return chunkC66JR43M_cjs.getConversationTitle; }
45288
45288
  });
45289
45289
  Object.defineProperty(exports, "groupMessagesByDate", {
45290
45290
  enumerable: true,
45291
- get: function () { return chunkFMEA6WAY_cjs.groupMessagesByDate; }
45291
+ get: function () { return chunkC66JR43M_cjs.groupMessagesByDate; }
45292
45292
  });
45293
45293
  Object.defineProperty(exports, "headerVariants", {
45294
45294
  enumerable: true,
45295
- get: function () { return chunkFMEA6WAY_cjs.headerVariants; }
45295
+ get: function () { return chunkC66JR43M_cjs.headerVariants; }
45296
45296
  });
45297
45297
  Object.defineProperty(exports, "isSameSenderGroup", {
45298
45298
  enumerable: true,
45299
- get: function () { return chunkFMEA6WAY_cjs.isSameSenderGroup; }
45299
+ get: function () { return chunkC66JR43M_cjs.isSameSenderGroup; }
45300
45300
  });
45301
45301
  Object.defineProperty(exports, "useMessageScroll", {
45302
45302
  enumerable: true,
45303
- get: function () { return chunkFMEA6WAY_cjs.useMessageScroll; }
45303
+ get: function () { return chunkC66JR43M_cjs.useMessageScroll; }
45304
45304
  });
45305
45305
  Object.defineProperty(exports, "useMessages", {
45306
45306
  enumerable: true,
45307
- get: function () { return chunkFMEA6WAY_cjs.useMessages; }
45307
+ get: function () { return chunkC66JR43M_cjs.useMessages; }
45308
45308
  });
45309
45309
  Object.defineProperty(exports, "useReadReceipts", {
45310
45310
  enumerable: true,
45311
- get: function () { return chunkFMEA6WAY_cjs.useReadReceipts; }
45311
+ get: function () { return chunkC66JR43M_cjs.useReadReceipts; }
45312
45312
  });
45313
45313
  Object.defineProperty(exports, "useTypingEmulation", {
45314
45314
  enumerable: true,
45315
- get: function () { return chunkFMEA6WAY_cjs.useTypingEmulation; }
45315
+ get: function () { return chunkC66JR43M_cjs.useTypingEmulation; }
45316
45316
  });
45317
45317
  Object.defineProperty(exports, "useTypingIndicator", {
45318
45318
  enumerable: true,
45319
- get: function () { return chunkFMEA6WAY_cjs.useTypingIndicator; }
45319
+ get: function () { return chunkC66JR43M_cjs.useTypingIndicator; }
45320
45320
  });
45321
45321
  Object.defineProperty(exports, "AttachmentPicker", {
45322
45322
  enumerable: true,
45323
- get: function () { return chunkU2RS574O_cjs.AttachmentPicker; }
45323
+ get: function () { return chunkWGXJNCRG_cjs.AttachmentPicker; }
45324
45324
  });
45325
45325
  Object.defineProperty(exports, "AttachmentPreviewItem", {
45326
45326
  enumerable: true,
45327
- get: function () { return chunkU2RS574O_cjs.AttachmentPreviewItem; }
45327
+ get: function () { return chunkWGXJNCRG_cjs.AttachmentPreviewItem; }
45328
45328
  });
45329
45329
  Object.defineProperty(exports, "CameraButton", {
45330
45330
  enumerable: true,
45331
- get: function () { return chunkU2RS574O_cjs.CameraButton; }
45331
+ get: function () { return chunkWGXJNCRG_cjs.CameraButton; }
45332
45332
  });
45333
45333
  Object.defineProperty(exports, "ChatComposer", {
45334
45334
  enumerable: true,
45335
- get: function () { return chunkU2RS574O_cjs.ChatComposer; }
45335
+ get: function () { return chunkWGXJNCRG_cjs.ChatComposer; }
45336
45336
  });
45337
45337
  Object.defineProperty(exports, "ComposerModelSelector", {
45338
45338
  enumerable: true,
45339
- get: function () { return chunkU2RS574O_cjs.ComposerModelSelector; }
45339
+ get: function () { return chunkWGXJNCRG_cjs.ComposerModelSelector; }
45340
45340
  });
45341
45341
  Object.defineProperty(exports, "DragDropZone", {
45342
45342
  enumerable: true,
45343
- get: function () { return chunkU2RS574O_cjs.DragDropZone; }
45343
+ get: function () { return chunkWGXJNCRG_cjs.DragDropZone; }
45344
45344
  });
45345
45345
  Object.defineProperty(exports, "generateAttachmentId", {
45346
45346
  enumerable: true,
45347
- get: function () { return chunkU2RS574O_cjs.generateAttachmentId; }
45347
+ get: function () { return chunkWGXJNCRG_cjs.generateAttachmentId; }
45348
45348
  });
45349
45349
  Object.defineProperty(exports, "getFileType", {
45350
45350
  enumerable: true,
45351
- get: function () { return chunkU2RS574O_cjs.getFileType; }
45351
+ get: function () { return chunkWGXJNCRG_cjs.getFileType; }
45352
45352
  });
45353
45353
  Object.defineProperty(exports, "validateFile", {
45354
45354
  enumerable: true,
45355
- get: function () { return chunkU2RS574O_cjs.validateFile; }
45355
+ get: function () { return chunkWGXJNCRG_cjs.validateFile; }
45356
45356
  });
45357
45357
  Object.defineProperty(exports, "Table", {
45358
45358
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -1162,6 +1162,18 @@ declare namespace ComposerModelSelector {
1162
1162
  var displayName: string;
1163
1163
  }
1164
1164
 
1165
+ /** An option in a composer selector-row menu (agent, voice, …). */
1166
+ interface ComposerSelectorOption {
1167
+ /** Stable id (returned via `onChange`). */
1168
+ id: string;
1169
+ /** Display label. */
1170
+ label: string;
1171
+ /** Optional leading icon (falls back to the selector's `icon` in the trigger). */
1172
+ icon?: React$1.ReactNode;
1173
+ /** Optional secondary text shown in the menu. */
1174
+ description?: string;
1175
+ }
1176
+
1165
1177
  /**
1166
1178
  * A candidate for the composer's `@mention` autocomplete. Generic so any
1167
1179
  * surface (multi-party chat, agent picker, …) can supply its own list.
@@ -1463,16 +1475,8 @@ interface ChatComposerMenuItem {
1463
1475
  /** Called when the item is selected. */
1464
1476
  onSelect?: () => void;
1465
1477
  }
1466
- /** An agent shown in the composer's agent selector. */
1467
- interface ChatComposerAgentOption {
1468
- /** Stable id (returned via `onAgentChange`). */
1469
- id: string;
1470
- /** Display label. */
1471
- label: string;
1472
- /** Optional leading icon (defaults to a bot glyph in the trigger). */
1473
- icon?: React$1.ReactNode;
1474
- /** Optional secondary text shown in the menu. */
1475
- description?: string;
1478
+ /** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
1479
+ interface ChatComposerAgentOption extends ComposerSelectorOption {
1476
1480
  }
1477
1481
  /** Imperative handle exposed via `ref` for host-level integrations. */
1478
1482
  interface ChatComposerHandle {
@@ -1619,6 +1623,13 @@ interface ChatComposerProps {
1619
1623
  showModelSelector?: boolean;
1620
1624
  /** Props passed through to the embedded `ComposerModelSelector`. */
1621
1625
  modelSelectorProps?: ComposerModelSelectorProps;
1626
+ /**
1627
+ * Custom node at the end of the bottom row, after the model selector (e.g.
1628
+ * a voice-activation selector). Shows the row even when no built-in
1629
+ * selector is enabled. Interaction state is not managed: pass your own
1630
+ * disabled state when the composer is `disabled`.
1631
+ */
1632
+ selectorsEndSlot?: React$1.ReactNode;
1622
1633
  /** Replaces the composer with a read-only notice. */
1623
1634
  readOnly?: boolean;
1624
1635
  /** Notice text shown when `readOnly` is set. */
package/dist/index.d.ts CHANGED
@@ -1162,6 +1162,18 @@ declare namespace ComposerModelSelector {
1162
1162
  var displayName: string;
1163
1163
  }
1164
1164
 
1165
+ /** An option in a composer selector-row menu (agent, voice, …). */
1166
+ interface ComposerSelectorOption {
1167
+ /** Stable id (returned via `onChange`). */
1168
+ id: string;
1169
+ /** Display label. */
1170
+ label: string;
1171
+ /** Optional leading icon (falls back to the selector's `icon` in the trigger). */
1172
+ icon?: React$1.ReactNode;
1173
+ /** Optional secondary text shown in the menu. */
1174
+ description?: string;
1175
+ }
1176
+
1165
1177
  /**
1166
1178
  * A candidate for the composer's `@mention` autocomplete. Generic so any
1167
1179
  * surface (multi-party chat, agent picker, …) can supply its own list.
@@ -1463,16 +1475,8 @@ interface ChatComposerMenuItem {
1463
1475
  /** Called when the item is selected. */
1464
1476
  onSelect?: () => void;
1465
1477
  }
1466
- /** An agent shown in the composer's agent selector. */
1467
- interface ChatComposerAgentOption {
1468
- /** Stable id (returned via `onAgentChange`). */
1469
- id: string;
1470
- /** Display label. */
1471
- label: string;
1472
- /** Optional leading icon (defaults to a bot glyph in the trigger). */
1473
- icon?: React$1.ReactNode;
1474
- /** Optional secondary text shown in the menu. */
1475
- description?: string;
1478
+ /** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
1479
+ interface ChatComposerAgentOption extends ComposerSelectorOption {
1476
1480
  }
1477
1481
  /** Imperative handle exposed via `ref` for host-level integrations. */
1478
1482
  interface ChatComposerHandle {
@@ -1619,6 +1623,13 @@ interface ChatComposerProps {
1619
1623
  showModelSelector?: boolean;
1620
1624
  /** Props passed through to the embedded `ComposerModelSelector`. */
1621
1625
  modelSelectorProps?: ComposerModelSelectorProps;
1626
+ /**
1627
+ * Custom node at the end of the bottom row, after the model selector (e.g.
1628
+ * a voice-activation selector). Shows the row even when no built-in
1629
+ * selector is enabled. Interaction state is not managed: pass your own
1630
+ * disabled state when the composer is `disabled`.
1631
+ */
1632
+ selectorsEndSlot?: React$1.ReactNode;
1622
1633
  /** Replaces the composer with a read-only notice. */
1623
1634
  readOnly?: boolean;
1624
1635
  /** Notice text shown when `readOnly` is set. */
package/dist/index.js CHANGED
@@ -44,10 +44,10 @@ export { SourceTip } from './chunk-KFEN2SRZ.js';
44
44
  export { Sparkline } from './chunk-CG4ZKJLE.js';
45
45
  import { ButtonGroup, SparklesIcon, RefreshIcon, CloseIcon, JumpToBottomButton, AIMessageDisplay } from './chunk-RM2HPQIC.js';
46
46
  export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ButtonGroup, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-RM2HPQIC.js';
47
- import { useTypingEmulation, EmptyState } from './chunk-YZCM7CXK.js';
48
- export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingEmulation, useTypingIndicator } from './chunk-YZCM7CXK.js';
49
- import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-TJ4GWQPM.js';
50
- export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-TJ4GWQPM.js';
47
+ import { useTypingEmulation, EmptyState } from './chunk-NKG2UNXE.js';
48
+ export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingEmulation, useTypingIndicator } from './chunk-NKG2UNXE.js';
49
+ import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-GJPCWR4C.js';
50
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-GJPCWR4C.js';
51
51
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-TNUL4LGG.js';
52
52
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-TNUL4LGG.js';
53
53
  export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';