@mieweb/ui 0.8.0-dev.17 → 0.8.0-dev.19

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.d.cts CHANGED
@@ -3250,6 +3250,11 @@ interface ChatComposerHandle {
3250
3250
  addFiles: (files: File[]) => void;
3251
3251
  /** Focus the text input. */
3252
3252
  focus: () => void;
3253
+ /**
3254
+ * The underlying textarea element, for host integrations that need caret
3255
+ * access (e.g. mention insertion via `setSelectionRange`).
3256
+ */
3257
+ getTextarea: () => HTMLTextAreaElement | null;
3253
3258
  }
3254
3259
  /** Structured context passed to `onError` so hosts can localize by reason. */
3255
3260
  interface ChatComposerError {
@@ -3280,6 +3285,27 @@ interface ChatComposerProps {
3280
3285
  maxLength?: number;
3281
3286
  /** Show a character counter (requires `maxLength`). */
3282
3287
  showCharacterCount?: boolean;
3288
+ /**
3289
+ * Allow sending while the composer itself is empty (e.g. when the host
3290
+ * stages attachments outside the composer). The host receives a message
3291
+ * with empty `content` and no attachments and owns any further guarding.
3292
+ * @default false
3293
+ */
3294
+ canSendWhenEmpty?: boolean;
3295
+ /**
3296
+ * Maximum height of the auto-growing input: a pixel number or any CSS
3297
+ * length (e.g. `'40vh'`).
3298
+ * @default 160
3299
+ */
3300
+ maxHeight?: number | string;
3301
+ /**
3302
+ * Extra props spread onto the underlying textarea. Event handlers run
3303
+ * before the composer's built-in handlers; call `event.preventDefault()`
3304
+ * in `onKeyDown` / `onPaste` to claim that event (e.g. for a mention
3305
+ * menu's arrow/Enter navigation). `className` and `style` are merged
3306
+ * with the composer's own.
3307
+ */
3308
+ textareaProps?: Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'defaultValue'>;
3283
3309
  /** Extra entries for the `+` menu, rendered after the built-in items. */
3284
3310
  addMenuItems?: ChatComposerMenuItem[];
3285
3311
  /** Enable file attachments (built-in "Attach files" menu item, paste-to-attach, chips). @default true */
@@ -3296,8 +3322,10 @@ interface ChatComposerProps {
3296
3322
  onMicClick?: () => void;
3297
3323
  /**
3298
3324
  * Custom node rendered in place of the built-in mic button (e.g.
3299
- * `RecordButton`). Rendered as-is: pass your own disabled state when the
3300
- * composer is `disabled`.
3325
+ * `RecordButton`). The slot is wrapped in a 32px-tall (`h-8`) flex row so it
3326
+ * aligns with the other composer controls; taller content overflows and
3327
+ * stays vertically centered without inflating the row. Interaction state is
3328
+ * not managed: pass your own disabled state when the composer is `disabled`.
3301
3329
  */
3302
3330
  micSlot?: React$1.ReactNode;
3303
3331
  /** When to show the mic: always, or only while the composer is empty. @default 'always' */
@@ -3350,9 +3378,10 @@ interface ChatComposerProps {
3350
3378
  className?: string;
3351
3379
  }
3352
3380
  /**
3353
- * Standardized chat input: an always-available text area on top, a quiet icon
3354
- * toolbar below it (`+` menu, mic, send/stop), and an optional bottom row with
3355
- * agent and model selectors.
3381
+ * Standardized chat input. At `md+` it renders as a single-row pill — `+`
3382
+ * menu, text input and actions (mic, send/stop) side by side; below `md` the
3383
+ * input stacks above the icon row. The optional agent/model selector row
3384
+ * hangs below the card on the page background.
3356
3385
  */
3357
3386
  declare const ChatComposer: React$1.ForwardRefExoticComponent<ChatComposerProps & React$1.RefAttributes<ChatComposerHandle>>;
3358
3387
 
package/dist/index.d.ts CHANGED
@@ -3250,6 +3250,11 @@ interface ChatComposerHandle {
3250
3250
  addFiles: (files: File[]) => void;
3251
3251
  /** Focus the text input. */
3252
3252
  focus: () => void;
3253
+ /**
3254
+ * The underlying textarea element, for host integrations that need caret
3255
+ * access (e.g. mention insertion via `setSelectionRange`).
3256
+ */
3257
+ getTextarea: () => HTMLTextAreaElement | null;
3253
3258
  }
3254
3259
  /** Structured context passed to `onError` so hosts can localize by reason. */
3255
3260
  interface ChatComposerError {
@@ -3280,6 +3285,27 @@ interface ChatComposerProps {
3280
3285
  maxLength?: number;
3281
3286
  /** Show a character counter (requires `maxLength`). */
3282
3287
  showCharacterCount?: boolean;
3288
+ /**
3289
+ * Allow sending while the composer itself is empty (e.g. when the host
3290
+ * stages attachments outside the composer). The host receives a message
3291
+ * with empty `content` and no attachments and owns any further guarding.
3292
+ * @default false
3293
+ */
3294
+ canSendWhenEmpty?: boolean;
3295
+ /**
3296
+ * Maximum height of the auto-growing input: a pixel number or any CSS
3297
+ * length (e.g. `'40vh'`).
3298
+ * @default 160
3299
+ */
3300
+ maxHeight?: number | string;
3301
+ /**
3302
+ * Extra props spread onto the underlying textarea. Event handlers run
3303
+ * before the composer's built-in handlers; call `event.preventDefault()`
3304
+ * in `onKeyDown` / `onPaste` to claim that event (e.g. for a mention
3305
+ * menu's arrow/Enter navigation). `className` and `style` are merged
3306
+ * with the composer's own.
3307
+ */
3308
+ textareaProps?: Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'defaultValue'>;
3283
3309
  /** Extra entries for the `+` menu, rendered after the built-in items. */
3284
3310
  addMenuItems?: ChatComposerMenuItem[];
3285
3311
  /** Enable file attachments (built-in "Attach files" menu item, paste-to-attach, chips). @default true */
@@ -3296,8 +3322,10 @@ interface ChatComposerProps {
3296
3322
  onMicClick?: () => void;
3297
3323
  /**
3298
3324
  * Custom node rendered in place of the built-in mic button (e.g.
3299
- * `RecordButton`). Rendered as-is: pass your own disabled state when the
3300
- * composer is `disabled`.
3325
+ * `RecordButton`). The slot is wrapped in a 32px-tall (`h-8`) flex row so it
3326
+ * aligns with the other composer controls; taller content overflows and
3327
+ * stays vertically centered without inflating the row. Interaction state is
3328
+ * not managed: pass your own disabled state when the composer is `disabled`.
3301
3329
  */
3302
3330
  micSlot?: React$1.ReactNode;
3303
3331
  /** When to show the mic: always, or only while the composer is empty. @default 'always' */
@@ -3350,9 +3378,10 @@ interface ChatComposerProps {
3350
3378
  className?: string;
3351
3379
  }
3352
3380
  /**
3353
- * Standardized chat input: an always-available text area on top, a quiet icon
3354
- * toolbar below it (`+` menu, mic, send/stop), and an optional bottom row with
3355
- * agent and model selectors.
3381
+ * Standardized chat input. At `md+` it renders as a single-row pill — `+`
3382
+ * menu, text input and actions (mic, send/stop) side by side; below `md` the
3383
+ * input stacks above the icon row. The optional agent/model selector row
3384
+ * hangs below the card on the page background.
3356
3385
  */
3357
3386
  declare const ChatComposer: React$1.ForwardRefExoticComponent<ChatComposerProps & React$1.RefAttributes<ChatComposerHandle>>;
3358
3387