@elabs-ai/components-ai 4.0.0 → 4.2.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/README.md +62 -12
- package/dist/{_audio-player-media-chrome-KA5DY54G.js → _audio-player-media-chrome-T3XVXWRZ.js} +8 -4
- package/dist/_audio-player-media-chrome-T3XVXWRZ.js.map +1 -0
- package/dist/{_flow-boundary-D63PJ65S.js → _flow-boundary-SHNWLQG5.js} +32 -43
- package/dist/_flow-boundary-SHNWLQG5.js.map +1 -0
- package/dist/{_persona-rive-RFR2EUWP.js → _persona-rive-JEG44YHX.js} +9 -5
- package/dist/_persona-rive-JEG44YHX.js.map +1 -0
- package/dist/index.d.ts +1152 -218
- package/dist/index.js +5601 -3241
- package/dist/index.js.map +1 -1
- package/package.json +30 -15
- package/src/__contract__/audio-visualizer.contract.test.tsx +49 -0
- package/src/__contract__/chat-shell.contract.test.tsx +49 -0
- package/src/__contract__/grouped-parts.contract.test.tsx +49 -0
- package/src/__contract__/image.contract.test.tsx +49 -0
- package/src/__contract__/markdown-view.contract.test.tsx +49 -0
- package/src/__contract__/message-feedback.contract.test.tsx +49 -0
- package/src/__contract__/message-form.contract.test.tsx +49 -0
- package/src/__contract__/message-table.contract.test.tsx +49 -0
- package/src/__contract__/model-provider-logo.contract.test.tsx +49 -0
- package/src/__contract__/persona.contract.test.tsx +49 -0
- package/src/__contract__/prompt-input-effort.contract.test.tsx +49 -0
- package/src/__contract__/prompt-input-mode.contract.test.tsx +49 -0
- package/src/_audio-player-media-chrome.tsx +102 -15
- package/src/_chat-shell-rail.tsx +2 -2
- package/src/_flow-boundary.tsx +68 -49
- package/src/_lazy-boundary-conformance.ts +38 -0
- package/src/_lazy-cjk.test.ts +43 -0
- package/src/_lazy-cjk.ts +73 -0
- package/src/_lazy-engine-boundary.tsx +61 -0
- package/src/_lazy-math.test.ts +63 -0
- package/src/_lazy-math.ts +90 -0
- package/src/_lazy-mermaid-absent.test.ts +53 -0
- package/src/_lazy-mermaid.test.ts +15 -0
- package/src/_lazy-mermaid.ts +24 -1
- package/src/_mermaid-error-panel.test.tsx +50 -0
- package/src/_mermaid-error-panel.tsx +66 -0
- package/src/_persona-rive.tsx +62 -10
- package/src/_streamdown-i18n.ts +94 -22
- package/src/_streamdown-safety.ts +170 -0
- package/src/_theme-scope-store.test.ts +83 -0
- package/src/_theme-scope-store.ts +103 -0
- package/src/agent-event.stories.tsx +97 -0
- package/src/agent-event.test.tsx +145 -0
- package/src/agent-event.tsx +187 -0
- package/src/agent-timeline.stories.tsx +9 -1
- package/src/agent.test.tsx +47 -0
- package/src/agent.tsx +43 -24
- package/src/agentic-workspace.stories.tsx +27 -20
- package/src/artifact.tsx +17 -14
- package/src/asset-preview.test.tsx +40 -0
- package/src/asset-preview.tsx +83 -12
- package/src/attachments.tsx +7 -4
- package/src/audio-player.test.tsx +78 -0
- package/src/audio-player.tsx +243 -56
- package/src/audio-visualizer.stories.tsx +126 -0
- package/src/audio-visualizer.test.tsx +438 -0
- package/src/audio-visualizer.tsx +367 -0
- package/src/canvas.stories.tsx +150 -1
- package/src/chat-shell.stories.tsx +18 -3
- package/src/chat.stories.tsx +16 -2
- package/src/code-block.stories.tsx +9 -1
- package/src/code-block.test.tsx +100 -1
- package/src/code-block.tsx +166 -103
- package/src/commit.tsx +30 -41
- package/src/composer.stories.tsx +372 -9
- package/src/composer.test.tsx +357 -6
- package/src/composer.tsx +217 -35
- package/src/confirmation.stories.tsx +72 -1
- package/src/confirmation.test.tsx +216 -2
- package/src/confirmation.tsx +264 -4
- package/src/context-panel.stories.tsx +9 -1
- package/src/context-panel.tsx +3 -2
- package/src/conversation.stories.tsx +86 -2
- package/src/conversation.test.tsx +66 -0
- package/src/conversation.tsx +52 -9
- package/src/diff-view.stories.tsx +196 -0
- package/src/diff-view.test.tsx +238 -0
- package/src/diff-view.tsx +697 -0
- package/src/environment-variables.tsx +20 -37
- package/src/file-tree.test.tsx +21 -0
- package/src/file-tree.tsx +12 -2
- package/src/gallery.tsx +4 -2
- package/src/index.ts +14 -4
- package/src/inline-citation.tsx +5 -5
- package/src/jsx-preview.stories.tsx +2 -2
- package/src/jsx-preview.tsx +151 -43
- package/src/markdown-view.stories.tsx +92 -1
- package/src/markdown-view.test.tsx +237 -2
- package/src/markdown-view.tsx +157 -6
- package/src/message-compare.stories.tsx +175 -0
- package/src/message-compare.test.tsx +207 -0
- package/src/message-compare.tsx +453 -0
- package/src/message-form.stories.tsx +65 -4
- package/src/message-form.test.tsx +8 -2
- package/src/message-form.tsx +15 -7
- package/src/message-table.stories.tsx +2 -2
- package/src/message-table.test.tsx +7 -0
- package/src/message-table.tsx +8 -4
- package/src/message.stories.tsx +9 -1
- package/src/message.test.tsx +247 -1
- package/src/message.tsx +125 -15
- package/src/microcopy.test.tsx +40 -0
- package/src/{model-selector.stories.tsx → model-provider-logo.stories.tsx} +17 -8
- package/src/model-provider-logo.test.tsx +109 -0
- package/src/model-provider-logo.tsx +183 -0
- package/src/open-in-chat.tsx +50 -29
- package/src/package-info.tsx +12 -12
- package/src/permission-mode-select.stories.tsx +82 -0
- package/src/permission-mode-select.test.tsx +100 -0
- package/src/permission-mode-select.tsx +137 -0
- package/src/persona-missing-peer.test.tsx +54 -0
- package/src/persona.tsx +68 -22
- package/src/plan.stories.tsx +166 -0
- package/src/plan.test.tsx +267 -0
- package/src/plan.tsx +182 -20
- package/src/prompt-input-effort.stories.tsx +123 -0
- package/src/prompt-input-effort.test.tsx +83 -0
- package/src/prompt-input-effort.tsx +136 -0
- package/src/prompt-input-mode.stories.tsx +108 -0
- package/src/prompt-input-mode.test.tsx +99 -0
- package/src/prompt-input-mode.tsx +169 -0
- package/src/prompt-input-slash.stories.tsx +211 -0
- package/src/prompt-input-slash.test.tsx +262 -0
- package/src/prompt-input-slash.tsx +541 -0
- package/src/prompt-input.stories.tsx +2 -2
- package/src/prompt-input.test.tsx +67 -1
- package/src/prompt-input.tsx +42 -4
- package/src/queue.tsx +4 -4
- package/src/reasoning.tsx +42 -17
- package/src/sandbox.stories.tsx +9 -1
- package/src/sandbox.tsx +3 -3
- package/src/schema-display.test.tsx +56 -0
- package/src/schema-display.tsx +71 -37
- package/src/selection-toolbar.stories.tsx +9 -1
- package/src/session-header.stories.tsx +128 -0
- package/src/session-header.test.tsx +138 -0
- package/src/session-header.tsx +243 -0
- package/src/session-status-bar.stories.tsx +73 -0
- package/src/session-status-bar.test.tsx +94 -0
- package/src/session-status-bar.tsx +165 -0
- package/src/snippet.stories.tsx +9 -1
- package/src/snippet.test.tsx +6 -2
- package/src/snippet.tsx +14 -34
- package/src/speech-input.test.tsx +109 -0
- package/src/speech-input.tsx +31 -3
- package/src/stack-trace.tsx +24 -36
- package/src/streamdown-i18n.test.tsx +24 -1
- package/src/task.stories.tsx +13 -3
- package/src/templates-ai-assistant.stories.tsx +21 -1
- package/src/test-results.tsx +47 -27
- package/src/token-usage.stories.tsx +24 -0
- package/src/token-usage.test.tsx +92 -0
- package/src/{context.tsx → token-usage.tsx} +73 -59
- package/src/tool-result-card.stories.tsx +9 -1
- package/src/tool.stories.tsx +13 -3
- package/src/tool.test.tsx +65 -0
- package/src/tool.tsx +73 -30
- package/src/transcription.tsx +1 -1
- package/src/turn-status.stories.tsx +124 -0
- package/src/turn-status.test.tsx +74 -0
- package/src/turn-status.tsx +174 -0
- package/src/use-audio-level.ts +104 -0
- package/src/voice-selector.tsx +5 -5
- package/src/web-preview.test.tsx +51 -1
- package/src/web-preview.tsx +46 -10
- package/dist/_audio-player-media-chrome-KA5DY54G.js.map +0 -1
- package/dist/_flow-boundary-D63PJ65S.js.map +0 -1
- package/dist/_interactive-terminal-xterm-ATJ5EW3G.js +0 -11
- package/dist/_interactive-terminal-xterm-ATJ5EW3G.js.map +0 -1
- package/dist/_persona-rive-RFR2EUWP.js.map +0 -1
- package/src/_interactive-terminal-xterm.ts +0 -32
- package/src/blocks-ai-composer.stories.tsx +0 -83
- package/src/context.stories.tsx +0 -16
- package/src/interactive-terminal.stories.tsx +0 -165
- package/src/interactive-terminal.test.tsx +0 -448
- package/src/interactive-terminal.tsx +0 -444
- package/src/model-selector.test.tsx +0 -55
- package/src/model-selector.tsx +0 -225
- package/src/terminal.tsx +0 -244
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ComponentProps, ReactNode, HTMLAttributes, RefObject, FormEvent, PropsWithChildren, ImgHTMLAttributes, FC, ElementType, JSX } from 'react';
|
|
3
3
|
import * as _elabs_ai_components_ui from '@elabs-ai/components-ui';
|
|
4
|
-
import { AccordionItem, Accordion, TimelineItemProps, Status, TimelineRootProps, Button, FileSource, HoverCard, HoverCardContent, HoverCardTrigger, CollapsibleContent, CollapsibleTrigger, Badge, HeadingLevel, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Collapsible, Avatar, InputGroupButton, DropdownMenuItem, DropdownMenu, DropdownMenuContent, TooltipContent, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, InputGroupAddon, InputGroupTextarea,
|
|
5
|
-
import
|
|
4
|
+
import { AccordionItem, Accordion, TimelineItemProps, Status, TimelineRootProps, AgentEventPhase, AgentEventOutcome, CheckSummary, CheckResult, Button, FileSource, HoverCard, HoverCardContent, HoverCardTrigger, CollapsibleContent, CollapsibleTrigger, Badge, HeadingLevel, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Collapsible, Avatar, InputGroupButton, DropdownMenuItem, DropdownMenu, DropdownMenuContent, TooltipContent, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, InputGroupAddon, InputGroupTextarea, EffortLevel, OperatingMode, SlashCommand, Alert, AlertDescription, ApprovalOption, Textarea, AlertTitle, DiffLine, Switch, Carousel, ProseHeadingLevel, ButtonGroup, Popover, PopoverContent, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, StatusBadge, ScrollArea, TabsContent, Tabs, TabsList, TabsTrigger, SessionCapability, SessionWhatsNewItem, SessionQuickAction, InputGroup, InputGroupInput, InputGroupText, Dialog, DialogContent, CommandDialog, CommandShortcut, DialogTrigger, Input } from '@elabs-ai/components-ui';
|
|
5
|
+
import * as ai from 'ai';
|
|
6
|
+
import { Tool as Tool$1, FileUIPart, SourceDocumentUIPart, Experimental_SpeechResult, ChatStatus, ToolUIPart, UIMessage, Experimental_GeneratedImage, LanguageModelUsage, DynamicToolUIPart, Experimental_TranscriptionResult } from 'ai';
|
|
6
7
|
import { LucideIcon, LucideProps, FileIcon } from 'lucide-react';
|
|
7
|
-
import { MediaController, MediaControlBar, MediaDurationDisplay, MediaMuteButton, MediaPlayButton, MediaSeekBackwardButton, MediaSeekForwardButton, MediaTimeDisplay, MediaTimeRange, MediaVolumeRange } from 'media-chrome/react';
|
|
8
8
|
import { ReactFlowProps, ConnectionLineComponent, Controls as Controls$1, EdgeProps, Panel as Panel$1, NodeToolbar as NodeToolbar$1 } from '@xyflow/react';
|
|
9
9
|
import { BundledLanguage, ThemedToken } from 'shiki';
|
|
10
10
|
import { StickToBottom } from 'use-stick-to-bottom';
|
|
11
11
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
12
12
|
import { VariantProps } from 'class-variance-authority';
|
|
13
|
-
import { ITheme } from '@xterm/xterm';
|
|
14
13
|
import { TProps } from 'react-jsx-parser';
|
|
15
14
|
import { MermaidConfig, DiagramPlugin } from '@streamdown/mermaid';
|
|
16
15
|
import { Streamdown } from 'streamdown';
|
|
17
16
|
import { z } from 'zod';
|
|
18
17
|
import { Transition } from 'motion/react';
|
|
19
|
-
import { RiveParameters } from '@rive-app/react-webgl2';
|
|
20
18
|
|
|
21
19
|
type AgentProps = ComponentProps<"div">;
|
|
22
20
|
declare const Agent: react.MemoExoticComponent<({ className, ...props }: AgentProps) => react.JSX.Element>;
|
|
@@ -74,6 +72,28 @@ interface AgentStepProps extends Omit<TimelineItemProps, "children" | "descripti
|
|
|
74
72
|
*/
|
|
75
73
|
declare const AgentStep: react.NamedExoticComponent<AgentStepProps & react.RefAttributes<HTMLLIElement>>;
|
|
76
74
|
|
|
75
|
+
interface AgentEventProps extends Omit<AgentStepProps, "name" | "status" | "children" | "icon" | "timestamp"> {
|
|
76
|
+
/** The runtime event name, verbatim as the runtime emits it — e.g. `"user_prompt_submit"`, `"pre_tool_use"`, `"stop"`. */
|
|
77
|
+
label: string;
|
|
78
|
+
/** When this event fired relative to the action it gates. See `AgentEventPhase`. */
|
|
79
|
+
phase?: AgentEventPhase;
|
|
80
|
+
/** The event's verdict. @default "ok" */
|
|
81
|
+
outcome?: AgentEventOutcome;
|
|
82
|
+
/** Wall-clock duration of the event, in milliseconds. Rendered with the shared `formatElapsed`. */
|
|
83
|
+
durationMs?: number;
|
|
84
|
+
/** Gate checks the event ran: individual verdicts, or a count summary. */
|
|
85
|
+
checks?: CheckSummary | CheckResult[];
|
|
86
|
+
/** Optional leading glyph on the title row (Lucide). @default Webhook */
|
|
87
|
+
icon?: LucideIcon;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* One lifecycle/hook event line on the `AgentTimeline` rail — an `AgentStep`
|
|
91
|
+
* variant, never a second spine. Composes `AgentStep` exactly as `TaskItem`
|
|
92
|
+
* does in `./agent-timeline`, so it rides the same `TimelineRoot`/`TimelineItem`
|
|
93
|
+
* primitives every other trace entry uses.
|
|
94
|
+
*/
|
|
95
|
+
declare const AgentEvent: react.ForwardRefExoticComponent<AgentEventProps & react.RefAttributes<HTMLLIElement>>;
|
|
96
|
+
|
|
77
97
|
type ArtifactProps = HTMLAttributes<HTMLDivElement> & {
|
|
78
98
|
/**
|
|
79
99
|
* The artifact body has not arrived yet (loading-states.md loading signal).
|
|
@@ -336,7 +356,133 @@ declare const AttachmentHoverCardContent: ({ align, className, ...props }: Attac
|
|
|
336
356
|
type AttachmentEmptyProps = HTMLAttributes<HTMLDivElement>;
|
|
337
357
|
declare const AttachmentEmpty: ({ className, children, ...props }: AttachmentEmptyProps) => react.JSX.Element;
|
|
338
358
|
|
|
339
|
-
|
|
359
|
+
/**
|
|
360
|
+
* media-chrome lives behind a dynamic import — it declares no `sideEffects`, so
|
|
361
|
+
* a static import would put the whole custom-element library in every consumer's
|
|
362
|
+
* entry chunk, `AudioPlayer` rendered or not. Every value import lives in
|
|
363
|
+
* `_audio-player-media-chrome.tsx`. See ADR 0019 and `pnpm heavy-deps:check`.
|
|
364
|
+
*
|
|
365
|
+
* All ten parts resolve from the SAME module specifier, so they share one chunk:
|
|
366
|
+
* once `AudioPlayer` has loaded it, the controls inside it resolve from cache.
|
|
367
|
+
*
|
|
368
|
+
* Issue #101: `media-chrome` is an OPTIONAL peer, so no PUBLIC export's type
|
|
369
|
+
* may structurally reference `media-chrome/react`'s own types (previously
|
|
370
|
+
* `ComponentProps<typeof MediaController>` and nine siblings, imported as
|
|
371
|
+
* TYPE-only above) — doing so names `media-chrome/react`'s module specifier in
|
|
372
|
+
* this package's generated root `.d.ts` and hands a `skipLibCheck: false`
|
|
373
|
+
* consumer who has correctly omitted the peer a `TS2307` just for importing
|
|
374
|
+
* the barrel — not just for using `AudioPlayer`. `AudioPlayerPartProps` below
|
|
375
|
+
* is an OWNED base type: `media-chrome/react`'s wrapper
|
|
376
|
+
* (`media-chrome/react`'s `createComponent`, from the `ce-la-react` helper it
|
|
377
|
+
* is built on) types every part as `Omit<HTMLAttributes<I>, …> &
|
|
378
|
+
* Partial<the element's own instance members>` — i.e. ordinary HTML attributes
|
|
379
|
+
* plus a handful of optional custom attributes. `AudioPlayerPartProps` itself
|
|
380
|
+
* stays ordinary HTML attributes only; the PRIMITIVE-typed (`string` /
|
|
381
|
+
* `boolean` / `number`) extra instance members of `<media-controller>` and
|
|
382
|
+
* `<media-seek-forward-button>` — the two elements measured by the round-2
|
|
383
|
+
* validator — are mirrored one-by-one on `AudioPlayerProps` and
|
|
384
|
+
* `AudioPlayerSeekForwardButtonProps` below (each a single declaration line
|
|
385
|
+
* referencing nothing peer-owned, the same technique `seekOffset` already
|
|
386
|
+
* used). What stays narrowed to `AudioPlayerPartProps` alone are the
|
|
387
|
+
* PEER/COMPLEX-typed members (`MediaStore`, `AttributeTokenList`,
|
|
388
|
+
* `MediaTooltip`, `TooltipPlacement`, DOM-element and `HTMLMediaElement`
|
|
389
|
+
* callbacks, methods) and every member of the other eight parts — restoring
|
|
390
|
+
* those would re-import the peer type graph this fix exists to avoid. See the
|
|
391
|
+
* CHANGELOG's "Breaking (types)" entry for the exact narrowed set.
|
|
392
|
+
* `AudioPlayerPartProps` is therefore NOT a full replica of media-chrome's
|
|
393
|
+
* surface, only the base every part actually uses and re-exports (the same
|
|
394
|
+
* scoping `TerminalColorTheme` uses for xterm's `ITheme` in
|
|
395
|
+
* `packages/terminal/src/interactive-terminal.tsx`, also issue #101). The ten
|
|
396
|
+
* conformance assertions at the bottom of `_audio-player-media-chrome.tsx`
|
|
397
|
+
* (which still imports the real peer types — that module is reached only
|
|
398
|
+
* through `lazy()` and never sits in the barrel's declaration graph) prove
|
|
399
|
+
* every owned type here stays assignable to its real media-chrome counterpart;
|
|
400
|
+
* a peer version bump that narrows a prop incompatibly fails
|
|
401
|
+
* `pnpm --filter @elabs-ai/components-ai typecheck` locally instead of
|
|
402
|
+
* reaching a consumer as silent drift.
|
|
403
|
+
*
|
|
404
|
+
* Deliberately no `ref` field: `ComponentProps<typeof MediaController>` (and
|
|
405
|
+
* its nine siblings) included one via `RefAttributes<I>`, but `RefObject<T>`'s
|
|
406
|
+
* mutable `current` makes ref types INVARIANT in `T` — a `Ref<HTMLElement>`
|
|
407
|
+
* can never be assignable to a real element's own `Ref<MediaController>` (the
|
|
408
|
+
* custom element subclass carries private/extra members `HTMLElement` lacks),
|
|
409
|
+
* so keeping it would make every owned type fail its own conformance
|
|
410
|
+
* assertion below. This IS a real-world break for a React 19 consumer: none
|
|
411
|
+
* of the ten parts this package renders is wrapped in `forwardRef`, but
|
|
412
|
+
* `MediaController` (and its siblings) are genuine `forwardRef` components,
|
|
413
|
+
* and React 19's ref-as-prop carries a `ref` straight through an ordinary
|
|
414
|
+
* function component's `{...props}` spread to the real underlying element —
|
|
415
|
+
* see the CHANGELOG's "Breaking (types)" entry for the measured detail. It is
|
|
416
|
+
* inert only under React 18.
|
|
417
|
+
*/
|
|
418
|
+
type AudioPlayerPartProps = HTMLAttributes<HTMLElement>;
|
|
419
|
+
/**
|
|
420
|
+
* The primitive-typed (`string`/`boolean`/`number`) extra instance members of
|
|
421
|
+
* `media-chrome/react`'s `MediaController` — restored per issue #101's round-2
|
|
422
|
+
* validation (R2): each is a single declaration line mirroring the real peer
|
|
423
|
+
* type's name and shape, referencing nothing peer-owned, so it costs nothing
|
|
424
|
+
* against the `.d.ts` leak this fix exists to prevent. Deliberately EXCLUDED:
|
|
425
|
+
* `audio` (already narrowed out — `_audio-player-media-chrome.tsx`'s
|
|
426
|
+
* conformance assertion Omits it from the real `ComponentProps`, since this
|
|
427
|
+
* package renders its own `<AudioPlayerElement>` instead of passing one
|
|
428
|
+
* through), and every PEER/COMPLEX-typed member (`mediaStore`, `hotkeys`
|
|
429
|
+
* (`AttributeTokenList`), `media`/`fullscreenElement` (DOM elements),
|
|
430
|
+
* `mediaStateReceivers`, `associatedElementSubscriptions`, every
|
|
431
|
+
* `HTMLMediaElement` callback and every method) — those stay narrowed to
|
|
432
|
+
* `AudioPlayerPartProps` alone; restoring them would re-import the peer type
|
|
433
|
+
* graph. See `_audio-player-media-chrome.tsx`'s
|
|
434
|
+
* `_AudioPlayerPropsConformance` assertion, which fails typecheck if this
|
|
435
|
+
* interface ever drifts wider than the real element's own props.
|
|
436
|
+
*
|
|
437
|
+
* Doc comments below are inferred from each member's name and media-chrome's
|
|
438
|
+
* public attribute-naming convention (`no*` = boolean opt-out of the
|
|
439
|
+
* corresponding default-on behavior) — media-chrome ships no per-property doc
|
|
440
|
+
* comments in its own `.d.ts` or README to copy from. Treat them as a reading
|
|
441
|
+
* aid, not an authoritative spec; verify against media-chrome's source before
|
|
442
|
+
* relying on exact semantics.
|
|
443
|
+
*/
|
|
444
|
+
interface AudioPlayerProps extends AudioPlayerPartProps {
|
|
445
|
+
/** Seconds of inactivity before controls hide; a string because it mirrors the HTML attribute value. */
|
|
446
|
+
autohide?: string;
|
|
447
|
+
/** Also autohide while the pointer is over the control elements themselves, not just the media. */
|
|
448
|
+
autohideOverControls?: boolean;
|
|
449
|
+
/** Breakpoint definitions (space-separated `name:width` pairs) driving `breakpointsComputed`. */
|
|
450
|
+
breakpoints?: string;
|
|
451
|
+
/** Whether the controller has computed its current breakpoint(s) at least once. */
|
|
452
|
+
breakpointsComputed?: boolean;
|
|
453
|
+
/** Fallback duration (seconds) to display before the real media duration is known. */
|
|
454
|
+
defaultDuration?: number;
|
|
455
|
+
/** Default stream type ("on-demand" or "live") before the media has resolved its own. */
|
|
456
|
+
defaultStreamType?: string;
|
|
457
|
+
/** Whether subtitles/captions are enabled by default. */
|
|
458
|
+
defaultSubtitles?: boolean;
|
|
459
|
+
/** Disables the controller's built-in tap/gesture handling (e.g. tap-to-play, double-tap-to-seek). */
|
|
460
|
+
gesturesDisabled?: boolean;
|
|
461
|
+
/** Whether hotkey keyboard control is currently active on the controller. */
|
|
462
|
+
keyboardControl?: boolean;
|
|
463
|
+
/** Space-separated list of hotkey names currently in use, for conflict detection with other listeners. */
|
|
464
|
+
keysUsed?: string;
|
|
465
|
+
/** Seconds behind the live edge still considered "at" live, for a live stream's seek range. */
|
|
466
|
+
liveEdgeOffset?: number;
|
|
467
|
+
/** Disables the controller's autohide-controls-on-inactivity behavior entirely. */
|
|
468
|
+
noAutohide?: boolean;
|
|
469
|
+
/** Disables automatically seeking back to the live edge after a manual seek on a live stream. */
|
|
470
|
+
noAutoSeekToLive?: boolean;
|
|
471
|
+
/** Opts out of the controller creating its own default internal media store. */
|
|
472
|
+
noDefaultStore?: boolean;
|
|
473
|
+
/** Disables the controller's built-in keyboard hotkeys entirely. */
|
|
474
|
+
noHotkeys?: boolean;
|
|
475
|
+
/** Opts out of remembering the user's mute preference across sessions. */
|
|
476
|
+
noMutedPref?: boolean;
|
|
477
|
+
/** Opts out of remembering the user's subtitles-language preference across sessions. */
|
|
478
|
+
noSubtitlesLangPref?: boolean;
|
|
479
|
+
/** Opts out of remembering the user's volume preference across sessions. */
|
|
480
|
+
noVolumePref?: boolean;
|
|
481
|
+
/** The language the controller resolved for its UI text, after applying any language preference. */
|
|
482
|
+
resolvedLang?: string;
|
|
483
|
+
/** Whether the user has interacted with the controller yet (affects autoplay-adjacent UI). */
|
|
484
|
+
userInteractive?: boolean;
|
|
485
|
+
}
|
|
340
486
|
declare const AudioPlayer: ({ className, ...props }: AudioPlayerProps) => react.JSX.Element;
|
|
341
487
|
type AudioPlayerElementProps = Omit<ComponentProps<"audio">, "src"> & ({
|
|
342
488
|
data: Experimental_SpeechResult["audio"];
|
|
@@ -344,25 +490,104 @@ type AudioPlayerElementProps = Omit<ComponentProps<"audio">, "src"> & ({
|
|
|
344
490
|
src: string;
|
|
345
491
|
});
|
|
346
492
|
declare const AudioPlayerElement: ({ ...props }: AudioPlayerElementProps) => react.JSX.Element;
|
|
347
|
-
type AudioPlayerControlBarProps =
|
|
493
|
+
type AudioPlayerControlBarProps = AudioPlayerPartProps;
|
|
348
494
|
declare const AudioPlayerControlBar: (props: AudioPlayerControlBarProps) => react.JSX.Element;
|
|
349
|
-
type AudioPlayerPlayButtonProps =
|
|
495
|
+
type AudioPlayerPlayButtonProps = AudioPlayerPartProps;
|
|
350
496
|
declare const AudioPlayerPlayButton: (props: AudioPlayerPlayButtonProps) => react.JSX.Element;
|
|
351
|
-
|
|
497
|
+
interface AudioPlayerSeekBackwardButtonProps extends AudioPlayerPartProps {
|
|
498
|
+
/** Skip distance in seconds. Mirrors the element's own default (10). */
|
|
499
|
+
seekOffset?: number;
|
|
500
|
+
}
|
|
352
501
|
declare const AudioPlayerSeekBackwardButton: (props: AudioPlayerSeekBackwardButtonProps) => react.JSX.Element;
|
|
353
|
-
|
|
502
|
+
/**
|
|
503
|
+
* Primitive-typed extra members restored per issue #101's round-2 validation
|
|
504
|
+
* (R2) — same technique and same inferred-from-naming caveat as
|
|
505
|
+
* `AudioPlayerProps` above. Deliberately still narrowed out:
|
|
506
|
+
* `keysUsed` (here typed `string[]`, unlike the controller's own `string`
|
|
507
|
+
* member of the same name — an array is not primitive) and the DOM/method
|
|
508
|
+
* members `disable`/`enable`/`handleClick`/`tooltipEl`/`tooltipPlacement`.
|
|
509
|
+
*/
|
|
510
|
+
interface AudioPlayerSeekForwardButtonProps extends AudioPlayerPartProps {
|
|
511
|
+
/** Whether the button is disabled. */
|
|
512
|
+
disabled?: boolean;
|
|
513
|
+
/** ID of the `<media-controller>` element this button controls, when it is not an ancestor. */
|
|
514
|
+
mediaController?: string;
|
|
515
|
+
/** The media's current playback time (seconds), as reflected by the controller's media store. */
|
|
516
|
+
mediaCurrentTime?: number;
|
|
517
|
+
/** Skip distance in seconds. Mirrors the element's own default (10). */
|
|
518
|
+
seekOffset?: number;
|
|
519
|
+
/** Suppresses the built-in hover tooltip on this button. */
|
|
520
|
+
noTooltip?: boolean;
|
|
521
|
+
/** Prevents the button's default click handling (for a consumer that wants to fully own the behavior). */
|
|
522
|
+
preventClick?: boolean;
|
|
523
|
+
}
|
|
354
524
|
declare const AudioPlayerSeekForwardButton: (props: AudioPlayerSeekForwardButtonProps) => react.JSX.Element;
|
|
355
|
-
type AudioPlayerTimeDisplayProps =
|
|
525
|
+
type AudioPlayerTimeDisplayProps = AudioPlayerPartProps;
|
|
356
526
|
declare const AudioPlayerTimeDisplay: (props: AudioPlayerTimeDisplayProps) => react.JSX.Element;
|
|
357
|
-
type AudioPlayerTimeRangeProps =
|
|
527
|
+
type AudioPlayerTimeRangeProps = AudioPlayerPartProps;
|
|
358
528
|
declare const AudioPlayerTimeRange: (props: AudioPlayerTimeRangeProps) => react.JSX.Element;
|
|
359
|
-
type AudioPlayerDurationDisplayProps =
|
|
529
|
+
type AudioPlayerDurationDisplayProps = AudioPlayerPartProps;
|
|
360
530
|
declare const AudioPlayerDurationDisplay: (props: AudioPlayerDurationDisplayProps) => react.JSX.Element;
|
|
361
|
-
type AudioPlayerMuteButtonProps =
|
|
531
|
+
type AudioPlayerMuteButtonProps = AudioPlayerPartProps;
|
|
362
532
|
declare const AudioPlayerMuteButton: (props: AudioPlayerMuteButtonProps) => react.JSX.Element;
|
|
363
|
-
type AudioPlayerVolumeRangeProps =
|
|
533
|
+
type AudioPlayerVolumeRangeProps = AudioPlayerPartProps;
|
|
364
534
|
declare const AudioPlayerVolumeRange: (props: AudioPlayerVolumeRangeProps) => react.JSX.Element;
|
|
365
535
|
|
|
536
|
+
/**
|
|
537
|
+
* brand-ui is a presentation layer (D5, docs/DECISIONS.md §D5): this component
|
|
538
|
+
* never calls `getUserMedia`, never owns an `AudioContext`, and starts nothing
|
|
539
|
+
* on mount. It draws whatever `levels` a parent — who already has a
|
|
540
|
+
* `MediaStream`/`AnalyserNode` — passes it, frame by frame. The analyser
|
|
541
|
+
* plumbing, when a consumer genuinely wants it, is the separate, opt-in
|
|
542
|
+
* `useAudioLevel` export in `./use-audio-level` — never something this
|
|
543
|
+
* component reaches for itself. See issue #21.
|
|
544
|
+
*/
|
|
545
|
+
type AudioVisualizerVariant = "bars" | "wave";
|
|
546
|
+
type AudioVisualizerLevelState = "idle" | "silent" | "active";
|
|
547
|
+
interface AudioVisualizerProps extends Omit<ComponentProps<"div">, "children"> {
|
|
548
|
+
/**
|
|
549
|
+
* Normalized 0–1 amplitude samples for the CURRENT frame — one per bar (or
|
|
550
|
+
* per sample point for `variant="wave"`). Update this from your own
|
|
551
|
+
* analyser polling loop (or the opt-in `useAudioLevel` hook) on every frame
|
|
552
|
+
* you want reflected; the component never touches the microphone itself.
|
|
553
|
+
* Any length works — samples are resampled to `barCount`.
|
|
554
|
+
*/
|
|
555
|
+
levels?: number[];
|
|
556
|
+
/** No stream connected yet — renders the idle baseline instead of `levels`. */
|
|
557
|
+
loading?: boolean;
|
|
558
|
+
/** `"bars"` (default) — a bar chart. `"wave"` — a filled envelope through the
|
|
559
|
+
* current samples. Both encode level as HEIGHT, never as hue alone. */
|
|
560
|
+
variant?: AudioVisualizerVariant;
|
|
561
|
+
/** Multiplies each level before clamping to [0, 1] — turn up for a quiet input. */
|
|
562
|
+
sensitivity?: number;
|
|
563
|
+
/** Number of bars/points drawn. */
|
|
564
|
+
barCount?: number;
|
|
565
|
+
/** Average level, 0–1, at/above which the status text reads "active". */
|
|
566
|
+
silenceThreshold?: number;
|
|
567
|
+
/**
|
|
568
|
+
* Visually-hidden text announced when the discretized level state changes.
|
|
569
|
+
* Defaults to a localized label ("No input detected" / "Microphone
|
|
570
|
+
* active" / …). Pass `null` when the consuming surface already renders its
|
|
571
|
+
* own live region, so assistive tech is not told twice.
|
|
572
|
+
*/
|
|
573
|
+
statusLabel?: ReactNode | null;
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Live mic-level / waveform meter. Canvas-drawn (one element, no per-bar DOM,
|
|
577
|
+
* so a `levels` prop updating every frame never costs React a 32-element
|
|
578
|
+
* reconciliation) and driven entirely by the `levels` prop — see the module
|
|
579
|
+
* doc comment for the presentation-layer boundary this enforces.
|
|
580
|
+
*
|
|
581
|
+
* The canvas is decorative (`aria-hidden`); the level itself is announced
|
|
582
|
+
* through a throttled `role="status"` text alternative — see `statusLabel`.
|
|
583
|
+
*
|
|
584
|
+
* Reduced motion: under `prefers-reduced-motion` (or while `loading`) the
|
|
585
|
+
* component skips its internal smoothing animation entirely and paints the
|
|
586
|
+
* raw `levels` directly on every prop change — a static bar chart of the
|
|
587
|
+
* current levels, never a freeze mid-interpolation.
|
|
588
|
+
*/
|
|
589
|
+
declare const AudioVisualizer: react.ForwardRefExoticComponent<Omit<AudioVisualizerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
590
|
+
|
|
366
591
|
type CanvasProps = ReactFlowProps & {
|
|
367
592
|
children?: ReactNode;
|
|
368
593
|
};
|
|
@@ -477,7 +702,7 @@ interface TokenizedCode {
|
|
|
477
702
|
fg: string;
|
|
478
703
|
bg: string;
|
|
479
704
|
}
|
|
480
|
-
declare const highlightCode: (code: string, language: BundledLanguage, callback?: (result: TokenizedCode) => void, el?: Element | null) => TokenizedCode | null;
|
|
705
|
+
declare const highlightCode: (code: string, language: BundledLanguage, callback?: (result: TokenizedCode) => void, el?: Element | null, skipCache?: boolean) => TokenizedCode | null;
|
|
481
706
|
declare const CodeBlockContainer: ({ className, language, style, ...props }: HTMLAttributes<HTMLDivElement> & {
|
|
482
707
|
language: string;
|
|
483
708
|
}) => react.JSX.Element;
|
|
@@ -485,11 +710,12 @@ declare const CodeBlockHeader: ({ children, className, ...props }: HTMLAttribute
|
|
|
485
710
|
declare const CodeBlockTitle: ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => react.JSX.Element;
|
|
486
711
|
declare const CodeBlockFilename: ({ children, className, ...props }: HTMLAttributes<HTMLSpanElement>) => react.JSX.Element;
|
|
487
712
|
declare const CodeBlockActions: ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => react.JSX.Element;
|
|
488
|
-
declare const CodeBlockContent: ({ code, language, showLineNumbers, wrap, }: {
|
|
713
|
+
declare const CodeBlockContent: ({ code, language, showLineNumbers, wrap, isStreaming, }: {
|
|
489
714
|
code: string;
|
|
490
715
|
language: BundledLanguage;
|
|
491
716
|
showLineNumbers?: boolean;
|
|
492
717
|
wrap?: boolean;
|
|
718
|
+
isStreaming?: boolean;
|
|
493
719
|
}) => react.JSX.Element;
|
|
494
720
|
declare const CodeBlock: ({ code, language, showLineNumbers, wrap, isStreaming, className, children, ...props }: CodeBlockProps) => react.JSX.Element;
|
|
495
721
|
type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {
|
|
@@ -541,7 +767,7 @@ type CommitCopyButtonProps = ComponentProps<typeof Button> & {
|
|
|
541
767
|
onError?: (error: Error) => void;
|
|
542
768
|
timeout?: number;
|
|
543
769
|
};
|
|
544
|
-
declare const CommitCopyButton: ({ hash, onCopy, onError, timeout, children, className, ...props }: CommitCopyButtonProps) => react.JSX.Element;
|
|
770
|
+
declare const CommitCopyButton: ({ hash, onCopy, onError, timeout, children, className, "aria-label": ariaLabel, ...props }: CommitCopyButtonProps) => react.JSX.Element;
|
|
545
771
|
type CommitContentProps = ComponentProps<typeof CollapsibleContent>;
|
|
546
772
|
declare const CommitContent: ({ className, children, ...props }: CommitContentProps) => react.JSX.Element;
|
|
547
773
|
type CommitFilesProps = HTMLAttributes<HTMLDivElement>;
|
|
@@ -799,6 +1025,189 @@ declare const PromptInputCommandItem: ({ className, ...props }: PromptInputComma
|
|
|
799
1025
|
type PromptInputCommandSeparatorProps = ComponentProps<typeof CommandSeparator>;
|
|
800
1026
|
declare const PromptInputCommandSeparator: ({ className, ...props }: PromptInputCommandSeparatorProps) => react.JSX.Element;
|
|
801
1027
|
|
|
1028
|
+
type PromptInputEffortProps = Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
1029
|
+
/** Ordered low → high. The order IS the semantics — render in this order. */
|
|
1030
|
+
levels: EffortLevel[];
|
|
1031
|
+
/** Controlled selected level id. Omit for the uncontrolled default (`levels[0]`). */
|
|
1032
|
+
value?: string;
|
|
1033
|
+
/** Fires with the chosen level's id. */
|
|
1034
|
+
onValueChange?: (id: string) => void;
|
|
1035
|
+
/**
|
|
1036
|
+
* Accessible name for the whole scale (e.g. "Reasoning effort", "Thinking
|
|
1037
|
+
* budget") — required because the NAME of the scale is as much the
|
|
1038
|
+
* consumer's vocabulary as its levels are; this component has no default
|
|
1039
|
+
* to fall back to.
|
|
1040
|
+
*/
|
|
1041
|
+
"aria-label": string;
|
|
1042
|
+
};
|
|
1043
|
+
/**
|
|
1044
|
+
* PromptInputEffort — an ORDERED reasoning-effort/budget control.
|
|
1045
|
+
*
|
|
1046
|
+
* Renders `levels` as a row of same-shape squares that GROW in size, low to
|
|
1047
|
+
* high — the size ramp encodes the order on its own, before any selection is
|
|
1048
|
+
* made. Selecting a level fills every square up to and including it (solid
|
|
1049
|
+
* fill + coloured border) and leaves the rest hollow (outline only): the
|
|
1050
|
+
* indicator's FILL is the second, non-colour channel required by a
|
|
1051
|
+
* greyscale-legibility read — the size ramp and the solid/hollow shape both
|
|
1052
|
+
* survive a greyscale render, so the level is recoverable without colour.
|
|
1053
|
+
* The current level's name is additionally rendered as text.
|
|
1054
|
+
*
|
|
1055
|
+
* Built on Radix (`RadioGroup`/`RadioGroupItem` from `@elabs-ai/components-ui`,
|
|
1056
|
+
* `role="radiogroup"` of `role="radio"`s) for arrow-key navigation, roving
|
|
1057
|
+
* focus and an accessible-name announcement on the checked item — no
|
|
1058
|
+
* hand-rolled key handling.
|
|
1059
|
+
*/
|
|
1060
|
+
declare const PromptInputEffort: react.ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
1061
|
+
/** Ordered low → high. The order IS the semantics — render in this order. */
|
|
1062
|
+
levels: EffortLevel[];
|
|
1063
|
+
/** Controlled selected level id. Omit for the uncontrolled default (`levels[0]`). */
|
|
1064
|
+
value?: string;
|
|
1065
|
+
/** Fires with the chosen level's id. */
|
|
1066
|
+
onValueChange?: (id: string) => void;
|
|
1067
|
+
/**
|
|
1068
|
+
* Accessible name for the whole scale (e.g. "Reasoning effort", "Thinking
|
|
1069
|
+
* budget") — required because the NAME of the scale is as much the
|
|
1070
|
+
* consumer's vocabulary as its levels are; this component has no default
|
|
1071
|
+
* to fall back to.
|
|
1072
|
+
*/
|
|
1073
|
+
"aria-label": string;
|
|
1074
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
1075
|
+
|
|
1076
|
+
type PromptInputModeProps = Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
1077
|
+
/** The app's own operating modes, low to high ceremony or however it orders them. */
|
|
1078
|
+
modes: OperatingMode[];
|
|
1079
|
+
/** Controlled selected mode id. Omit for the uncontrolled default (`modes[0]`). */
|
|
1080
|
+
value?: string;
|
|
1081
|
+
/** Fires with the chosen mode's id. */
|
|
1082
|
+
onValueChange?: (id: string) => void;
|
|
1083
|
+
/**
|
|
1084
|
+
* Accessible name for the trigger control, read alongside the current
|
|
1085
|
+
* mode's label. Optional — the trigger already carries the current mode's
|
|
1086
|
+
* visible text as its name, so this only adds context (e.g. "Operating
|
|
1087
|
+
* mode: Auto" instead of just "Auto").
|
|
1088
|
+
*/
|
|
1089
|
+
"aria-label"?: string;
|
|
1090
|
+
};
|
|
1091
|
+
/**
|
|
1092
|
+
* PromptInputMode — a composer control for an app-defined operating mode
|
|
1093
|
+
* (how autonomously the agent may act on the next turn).
|
|
1094
|
+
*
|
|
1095
|
+
* A `DropdownMenu` of `modes`, radio-selected so exactly one is active at a
|
|
1096
|
+
* time; the trigger shows the current mode's icon + label. Ships no mode
|
|
1097
|
+
* vocabulary — `modes` is entirely prop-driven, so `auto`/`plan`/whatever a
|
|
1098
|
+
* given agent calls its modes lives in the consuming app, not here.
|
|
1099
|
+
*
|
|
1100
|
+
* Built on Radix (`DropdownMenu` + `DropdownMenuRadioGroup`/`RadioItem` from
|
|
1101
|
+
* `@elabs-ai/components-ui`) for keyboard navigation, roving focus and a
|
|
1102
|
+
* `menuitemradio` role whose `aria-checked` announces the current selection —
|
|
1103
|
+
* no hand-rolled key handling.
|
|
1104
|
+
*/
|
|
1105
|
+
declare const PromptInputMode: react.ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
1106
|
+
/** The app's own operating modes, low to high ceremony or however it orders them. */
|
|
1107
|
+
modes: OperatingMode[];
|
|
1108
|
+
/** Controlled selected mode id. Omit for the uncontrolled default (`modes[0]`). */
|
|
1109
|
+
value?: string;
|
|
1110
|
+
/** Fires with the chosen mode's id. */
|
|
1111
|
+
onValueChange?: (id: string) => void;
|
|
1112
|
+
/**
|
|
1113
|
+
* Accessible name for the trigger control, read alongside the current
|
|
1114
|
+
* mode's label. Optional — the trigger already carries the current mode's
|
|
1115
|
+
* visible text as its name, so this only adds context (e.g. "Operating
|
|
1116
|
+
* mode: Auto" instead of just "Auto").
|
|
1117
|
+
*/
|
|
1118
|
+
"aria-label"?: string;
|
|
1119
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
1120
|
+
|
|
1121
|
+
interface PromptInputSlashProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect" | "children"> {
|
|
1122
|
+
/** The registered commands the palette offers. */
|
|
1123
|
+
commands: SlashCommand[];
|
|
1124
|
+
/** The composer's current text — must match what the wrapped textarea renders. */
|
|
1125
|
+
value: string;
|
|
1126
|
+
/** Ref to the composer's `<textarea>` (usually the one `PromptInputSlashTextarea` renders). */
|
|
1127
|
+
textareaRef: RefObject<HTMLTextAreaElement | null>;
|
|
1128
|
+
/**
|
|
1129
|
+
* Only trigger at the start of a line (index 0, or right after `"\n"`).
|
|
1130
|
+
* `false` falls back to `MentionInput`'s word-boundary rule.
|
|
1131
|
+
* @default true
|
|
1132
|
+
*/
|
|
1133
|
+
lineStartOnly?: boolean;
|
|
1134
|
+
/** Which commands survive the current query. @default defaultSlashCommandFilter */
|
|
1135
|
+
filter?: (command: SlashCommand, query: string) => boolean;
|
|
1136
|
+
/**
|
|
1137
|
+
* A command was chosen — apply the spliced `{ text, caret }` to your own
|
|
1138
|
+
* controlled value (the same shape `replaceTriggerRun` returns). The
|
|
1139
|
+
* splice inserts `"/" + command.name + " "` in place of the typed query.
|
|
1140
|
+
*/
|
|
1141
|
+
onValueChange: (next: {
|
|
1142
|
+
text: string;
|
|
1143
|
+
caret: number;
|
|
1144
|
+
}) => void;
|
|
1145
|
+
/** A command was chosen (fires alongside, not instead of, `onValueChange`). */
|
|
1146
|
+
onSelect?: (command: SlashCommand) => void;
|
|
1147
|
+
/** The popup opened or closed. */
|
|
1148
|
+
onOpenChange?: (open: boolean) => void;
|
|
1149
|
+
children: ReactNode;
|
|
1150
|
+
}
|
|
1151
|
+
/**
|
|
1152
|
+
* PromptInputSlash — wrap the composer's textarea (rendered via
|
|
1153
|
+
* `PromptInputSlashTextarea`) to add a `/`-triggered command palette.
|
|
1154
|
+
*
|
|
1155
|
+
* ```tsx
|
|
1156
|
+
* const textareaRef = useRef<HTMLTextAreaElement>(null);
|
|
1157
|
+
* const [text, setText] = useState("");
|
|
1158
|
+
*
|
|
1159
|
+
* <PromptInputSlash
|
|
1160
|
+
* commands={commands}
|
|
1161
|
+
* value={text}
|
|
1162
|
+
* textareaRef={textareaRef}
|
|
1163
|
+
* onValueChange={({ text }) => setText(text)}
|
|
1164
|
+
* >
|
|
1165
|
+
* <PromptInputSlashTextarea value={text} onChange={(e) => setText(e.target.value)} />
|
|
1166
|
+
* </PromptInputSlash>
|
|
1167
|
+
* ```
|
|
1168
|
+
*/
|
|
1169
|
+
declare const PromptInputSlash: react.ForwardRefExoticComponent<PromptInputSlashProps & react.RefAttributes<HTMLDivElement>>;
|
|
1170
|
+
type PromptInputSlashTextareaProps = PromptInputTextareaProps;
|
|
1171
|
+
/**
|
|
1172
|
+
* The composer's `<textarea>`, carrying the combobox semantics the palette
|
|
1173
|
+
* needs. A thin wrapper around `PromptInputTextarea` — every prop you'd pass
|
|
1174
|
+
* that component still works; this one additionally merges in the palette's
|
|
1175
|
+
* `ref`, caret tracking and `aria-activedescendant`.
|
|
1176
|
+
*
|
|
1177
|
+
* Must be rendered inside a `<PromptInputSlash>`.
|
|
1178
|
+
*/
|
|
1179
|
+
declare const PromptInputSlashTextarea: react.ForwardRefExoticComponent<Omit<Omit<_elabs_ai_components_ui.TextareaProps & react.RefAttributes<HTMLTextAreaElement>, "ref"> & react.RefAttributes<HTMLTextAreaElement>, "ref"> & react.RefAttributes<HTMLTextAreaElement>>;
|
|
1180
|
+
|
|
1181
|
+
/**
|
|
1182
|
+
* The slice of `PromptInputModeProps` a `Composer` owns — the vocabulary and
|
|
1183
|
+
* the controlled/uncontrolled seam, never the DOM props of the wrapper div.
|
|
1184
|
+
*
|
|
1185
|
+
* `defaultValue` is deliberately absent: `PromptInputMode` has no uncontrolled
|
|
1186
|
+
* initial-value seam (its uncontrolled default is `modes[0]`), and the
|
|
1187
|
+
* `defaultValue` it inherits from `HTMLAttributes<HTMLDivElement>` is the DOM
|
|
1188
|
+
* attribute, which would type-check and then do nothing. Omit `value` for the
|
|
1189
|
+
* uncontrolled default; pass `value` + `onValueChange` to drive it.
|
|
1190
|
+
*/
|
|
1191
|
+
type ComposerModeProps = Pick<PromptInputModeProps, "modes" | "value" | "onValueChange" | "aria-label">;
|
|
1192
|
+
/**
|
|
1193
|
+
* The slice of `PromptInputEffortProps` a `Composer` owns. `aria-label` stays
|
|
1194
|
+
* REQUIRED, exactly as on the primitive: the name of the scale ("Reasoning
|
|
1195
|
+
* effort", "Thinking budget") is as much the consumer's vocabulary as its
|
|
1196
|
+
* levels are, so `Composer` has no default to invent either. `defaultValue` is
|
|
1197
|
+
* absent for the same reason it is on `ComposerModeProps`.
|
|
1198
|
+
*/
|
|
1199
|
+
type ComposerEffortProps = Pick<PromptInputEffortProps, "levels" | "value" | "onValueChange" | "aria-label">;
|
|
1200
|
+
/**
|
|
1201
|
+
* One shortcut-hint row entry: the physical key(s) plus what they do, shown
|
|
1202
|
+
* as a `Kbd` chip beside a plain-text label — never inside a control's own
|
|
1203
|
+
* name (see `ComposerProps.shortcuts`).
|
|
1204
|
+
*/
|
|
1205
|
+
interface ComposerShortcut {
|
|
1206
|
+
/** Rendered inside a `Kbd` chip, e.g. `"Enter"`, `"Shift+Enter"`. */
|
|
1207
|
+
keys: string;
|
|
1208
|
+
/** What the key does, in a word or two, e.g. `"send"`, `"newline"`. */
|
|
1209
|
+
label: string;
|
|
1210
|
+
}
|
|
802
1211
|
interface ComposerProps {
|
|
803
1212
|
/** Submit handler — receives the assembled message (text + attachments). */
|
|
804
1213
|
onSubmit?: PromptInputProps["onSubmit"];
|
|
@@ -810,18 +1219,72 @@ interface ComposerProps {
|
|
|
810
1219
|
* `null` to hide the strip entirely.
|
|
811
1220
|
*/
|
|
812
1221
|
status?: ReactNode;
|
|
813
|
-
/** Model-selector pill label. Default `"Claude Opus 4"`; pass `null` to hide it. */
|
|
814
|
-
model?: ReactNode;
|
|
815
1222
|
/**
|
|
816
|
-
*
|
|
817
|
-
*
|
|
818
|
-
*
|
|
1223
|
+
* The model control, rendered first in the tools cluster after `attach`.
|
|
1224
|
+
* Pass a `<ModelPicker>` from `@elabs-ai/components-ui` (it is sized to sit
|
|
1225
|
+
* in a composer footer) — or anything else. Default: nothing renders.
|
|
1226
|
+
*
|
|
1227
|
+
* This replaces the old `model` prop, which rendered a static, non-interactive
|
|
1228
|
+
* pill defaulted to a hard-coded model name. A composer that shows a model
|
|
1229
|
+
* name it cannot change is a lie about what the control does; the slot now
|
|
1230
|
+
* takes the real picker instead.
|
|
1231
|
+
*/
|
|
1232
|
+
modelPicker?: ReactNode;
|
|
1233
|
+
/**
|
|
1234
|
+
* App-defined operating mode control — renders a `PromptInputMode` in the
|
|
1235
|
+
* tools cluster. Omitted, nothing renders. `brand-ui` ships no mode
|
|
1236
|
+
* vocabulary: `modes` is entirely yours.
|
|
1237
|
+
*/
|
|
1238
|
+
mode?: ComposerModeProps;
|
|
1239
|
+
/**
|
|
1240
|
+
* Ordered reasoning-effort control — renders a `PromptInputEffort` in the
|
|
1241
|
+
* tools cluster. Omitted, nothing renders. `levels` is ordered low → high
|
|
1242
|
+
* and is entirely yours; `aria-label` names the scale.
|
|
1243
|
+
*/
|
|
1244
|
+
effort?: ComposerEffortProps;
|
|
1245
|
+
/**
|
|
1246
|
+
* Slash-command palette. When set (and non-empty) the textarea becomes a
|
|
1247
|
+
* `PromptInputSlashTextarea` wrapped in a `PromptInputSlash`, so typing `/`
|
|
1248
|
+
* at the start of a line opens a filtered command list — nothing else about
|
|
1249
|
+
* the composer changes.
|
|
1250
|
+
*
|
|
1251
|
+
* Note this makes the textarea REACT-CONTROLLED (the palette needs to read
|
|
1252
|
+
* and splice the text), which is why `Composer` clears its own copy of the
|
|
1253
|
+
* text on submit: `PromptInput`'s `form.reset()` reaches the DOM node, not
|
|
1254
|
+
* React state.
|
|
1255
|
+
*/
|
|
1256
|
+
slashCommands?: PromptInputSlashProps["commands"];
|
|
1257
|
+
/** Fires with the chosen slash command (alongside the text splice). */
|
|
1258
|
+
onSlashCommand?: PromptInputSlashProps["onSelect"];
|
|
1259
|
+
/**
|
|
1260
|
+
* Override the DEFAULT tool buttons (today: the attach button) — e.g. to add
|
|
1261
|
+
* a web-search or connect-data control. Render `PromptInputButton`s /
|
|
1262
|
+
* `PromptInputActionMenu` here; when set, `showAttach` is ignored.
|
|
1263
|
+
*
|
|
1264
|
+
* The explicit `modelPicker` / `mode` / `effort` slots are NOT part of this
|
|
1265
|
+
* override — they render after whatever this puts in the cluster, so passing
|
|
1266
|
+
* `tools` can never silently swallow a control you asked for by name.
|
|
819
1267
|
*/
|
|
820
1268
|
tools?: ReactNode;
|
|
821
1269
|
/** Send-button state, forwarded to `PromptInputSubmit` (ready/submitted/streaming/error). */
|
|
822
1270
|
sendStatus?: ComponentProps<typeof PromptInputSubmit>["status"];
|
|
823
1271
|
/** Stop handler used while the send button shows the generating state. */
|
|
824
1272
|
onStop?: ComponentProps<typeof PromptInputSubmit>["onStop"];
|
|
1273
|
+
/**
|
|
1274
|
+
* Keyboard-shortcut hints shown as a row beneath the input well — plain
|
|
1275
|
+
* `Kbd` + label pairs, e.g. `[{ keys: "Enter", label: "send" }]`. Omitted,
|
|
1276
|
+
* nothing renders (opt-in, like every other Composer slot); the row is
|
|
1277
|
+
* never invented, since the real bindings are the host app's.
|
|
1278
|
+
*/
|
|
1279
|
+
shortcuts?: ComposerShortcut[];
|
|
1280
|
+
/**
|
|
1281
|
+
* A second, busy-only hint appended to `shortcuts` (#107) — shown ONLY
|
|
1282
|
+
* once the composer is actually generating (`sendStatus` is `"submitted"`
|
|
1283
|
+
* or `"streaming"`) AND a real `onStop` handler is set, so the hint never
|
|
1284
|
+
* describes an affordance that isn't there. Mirrors
|
|
1285
|
+
* `TerminalComposer`'s `canCancel = busy && Boolean(onStop)` shape.
|
|
1286
|
+
*/
|
|
1287
|
+
cancelShortcut?: ComposerShortcut;
|
|
825
1288
|
/**
|
|
826
1289
|
* Extra props spread onto the send button — `disabled`, `aria-label`,
|
|
827
1290
|
* `variant`, `id`, `className`. `status` and `onStop` are excluded because
|
|
@@ -837,7 +1300,8 @@ interface ComposerProps {
|
|
|
837
1300
|
* user's text destroyed, with nothing to restore from. Disabling the control
|
|
838
1301
|
* is what actually prevents it: `PromptInputTextarea`'s Enter handler checks
|
|
839
1302
|
* `submitControl?.disabled` and bails before `requestSubmit()`, so the Enter
|
|
840
|
-
* path is closed too, not just the click.
|
|
1303
|
+
* path is closed too, not just the click. It holds with a slash palette open
|
|
1304
|
+
* as well — the palette's own Enter handling only ever inserts a command.
|
|
841
1305
|
*
|
|
842
1306
|
* Leave it UNSET rather than passing `false` when you have no opinion —
|
|
843
1307
|
* `PromptInputSubmit` resolves `disabled ?? autoDisabled`, so a literal
|
|
@@ -870,9 +1334,9 @@ interface ComposerProps {
|
|
|
870
1334
|
* Composer — the standard brand-ui AI chat input.
|
|
871
1335
|
*
|
|
872
1336
|
* A rounded two-tone "double card": a status strip wrapping a recessed
|
|
873
|
-
* `PromptInput` well (sharp top, theme-rounded bottom), a
|
|
874
|
-
* and a circular send. Built on the real `PromptInput`, so it drops
|
|
875
|
-
* `ChatShell` footer or stands alone as an empty-state composer. `tone`
|
|
1337
|
+
* `PromptInput` well (sharp top, theme-rounded bottom), a tools cluster,
|
|
1338
|
+
* voice, and a circular send. Built on the real `PromptInput`, so it drops
|
|
1339
|
+
* into a `ChatShell` footer or stands alone as an empty-state composer. `tone`
|
|
876
1340
|
* (default `"surface"`, unchanged) picks the arrangement: `"surface"` keeps
|
|
877
1341
|
* the original outer `bg-card` frame around the standard muted well;
|
|
878
1342
|
* `"card"` (#254) swaps to an outer `bg-surface-muted` frame around a
|
|
@@ -881,10 +1345,16 @@ interface ComposerProps {
|
|
|
881
1345
|
* `tone` prop doc on `PromptInput`. Semantic tokens only; theme-aware radii
|
|
882
1346
|
* (`rounded-xl` frame / `rounded-b-lg` well); reads in every theme.
|
|
883
1347
|
*
|
|
884
|
-
*
|
|
885
|
-
* `PromptInput`
|
|
1348
|
+
* **Composer is the chat input. Every control the `PromptInput` family ships
|
|
1349
|
+
* is reachable from a `Composer` prop; drop to `PromptInput` only for a
|
|
1350
|
+
* bespoke shell.** `modelPicker`, `mode`, `effort` and `slashCommands` are the
|
|
1351
|
+
* four slots that make that true — they render `ModelPicker`,
|
|
1352
|
+
* `PromptInputMode`, `PromptInputEffort` and `PromptInputSlash` respectively,
|
|
1353
|
+
* in the footer order `attach · modelPicker · mode · effort │ voice · send`
|
|
1354
|
+
* (the same left-to-right arrangement `TerminalComposer` uses, so the chat and
|
|
1355
|
+
* console skins agree).
|
|
886
1356
|
*/
|
|
887
|
-
declare function Composer({ onSubmit, placeholder, status,
|
|
1357
|
+
declare function Composer({ onSubmit, placeholder, status, modelPicker, mode, effort, slashCommands, onSlashCommand, tools, sendStatus, onStop, submitProps, shortcuts, cancelShortcut, suggestions, onSuggestionClick, showVoice, showAttach, tone, className, }: ComposerProps): react.JSX.Element;
|
|
888
1358
|
|
|
889
1359
|
type ToolUIPartApproval = {
|
|
890
1360
|
id: string;
|
|
@@ -962,50 +1432,88 @@ declare const ApprovalCardApprove: (props: ConfirmationApproveProps) => react.JS
|
|
|
962
1432
|
type ApprovalCardApproveProps = ConfirmationApproveProps;
|
|
963
1433
|
declare const ApprovalCardDeny: (props: ConfirmationDenyProps) => react.JSX.Element;
|
|
964
1434
|
type ApprovalCardDenyProps = ConfirmationDenyProps;
|
|
1435
|
+
/**
|
|
1436
|
+
* `ApprovalScope`, `ApprovalOption` and `APPROVAL_SCOPE_DESCRIPTION_KEYS`
|
|
1437
|
+
* moved to `@elabs-ai/components-ui` (`lib/approval-option.ts`) — the
|
|
1438
|
+
* terminal CLI look-alike family's own permission row (issue #117) reuses
|
|
1439
|
+
* the same model, and `@elabs-ai/components-ai`/`@elabs-ai/components-terminal`
|
|
1440
|
+
* are layer-2 DAG siblings that may not import each other (T0; see
|
|
1441
|
+
* docs/decisions/2026-09-01-brainless-adoption-architecture.md § 4). Imported
|
|
1442
|
+
* above.
|
|
1443
|
+
*/
|
|
1444
|
+
interface ApprovalCardOptionsProps extends ComponentProps<"div"> {
|
|
1445
|
+
options: ApprovalOption[];
|
|
1446
|
+
value?: string;
|
|
1447
|
+
defaultValue?: string;
|
|
1448
|
+
onValueChange?: (id: string) => void;
|
|
1449
|
+
/**
|
|
1450
|
+
* Fires when an option is selected — by click, or by ANY keyboard move
|
|
1451
|
+
* within the radio group (Home/End/arrow keys select immediately, per the
|
|
1452
|
+
* native/ARIA radiogroup pattern Radix implements; there is no separate
|
|
1453
|
+
* "highlight vs commit" step). Reports the full resolved `ApprovalOption`
|
|
1454
|
+
* plus whatever reason text is currently held by a sibling
|
|
1455
|
+
* `ApprovalCardReason` — type a reason BEFORE choosing an option to have it
|
|
1456
|
+
* included in this call.
|
|
1457
|
+
*/
|
|
1458
|
+
onConfirm?: (option: ApprovalOption, reason?: string) => void;
|
|
1459
|
+
}
|
|
1460
|
+
/**
|
|
1461
|
+
* ApprovalCardOptions — the N-option, scoped decision (#103). Renders through
|
|
1462
|
+
* `@elabs-ai/components-ui`'s `RadioGroup` (Radix) for roving focus, arrow-key
|
|
1463
|
+
* wrap, Home/End and announcement — never a hand-rolled
|
|
1464
|
+
* `parentElement.children[i]` focus walk. Composed inside `ApprovalCardRequest`,
|
|
1465
|
+
* alongside the existing `ApprovalCardTitle`/`ApprovalCardDescription`.
|
|
1466
|
+
*/
|
|
1467
|
+
declare const ApprovalCardOptions: react.ForwardRefExoticComponent<Omit<ApprovalCardOptionsProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
1468
|
+
type ApprovalCardTargetProps = ComponentProps<"div">;
|
|
1469
|
+
/**
|
|
1470
|
+
* ApprovalCardTarget — the preview slot for WHAT is being approved: a
|
|
1471
|
+
* command, a path, or a richer node such as a `DiffView` (#102). Accepts
|
|
1472
|
+
* arbitrary children — this file never imports `DiffView`, the composition
|
|
1473
|
+
* happens entirely in the consumer's tree. Ungated by state (unlike
|
|
1474
|
+
* `ApprovalCardRequest`/`Accepted`/`Rejected`): the subject of a decision
|
|
1475
|
+
* stays visible after it resolves, not only while pending.
|
|
1476
|
+
*/
|
|
1477
|
+
declare const ApprovalCardTarget: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
1478
|
+
type ApprovalCardReasonProps = Omit<ComponentProps<typeof Textarea>, "value" | "defaultValue" | "onChange">;
|
|
1479
|
+
/**
|
|
1480
|
+
* ApprovalCardReason — the deny-with-reason input, wired to the `reason`
|
|
1481
|
+
* field that already exists on `ToolUIPartApproval` and was previously
|
|
1482
|
+
* unreachable from the UI. Shares its value with `ApprovalCardOptions`
|
|
1483
|
+
* through `Confirmation`'s own context (not a prop threaded between the two
|
|
1484
|
+
* sibling parts) — type here BEFORE choosing an option to have the text
|
|
1485
|
+
* included in that option's `onConfirm` call.
|
|
1486
|
+
*/
|
|
1487
|
+
declare const ApprovalCardReason: react.ForwardRefExoticComponent<Omit<ApprovalCardReasonProps, "ref"> & react.RefAttributes<HTMLTextAreaElement>>;
|
|
965
1488
|
|
|
966
1489
|
declare const Connection: ConnectionLineComponent;
|
|
967
1490
|
|
|
968
|
-
type ModelId = string;
|
|
969
|
-
interface ContextSchema {
|
|
970
|
-
usedTokens: number;
|
|
971
|
-
maxTokens: number;
|
|
972
|
-
usage?: LanguageModelUsage;
|
|
973
|
-
modelId?: ModelId;
|
|
974
|
-
}
|
|
975
|
-
type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;
|
|
976
|
-
declare const Context: ({ usedTokens, maxTokens, usage, modelId, ...props }: ContextProps) => react.JSX.Element;
|
|
977
|
-
type ContextTriggerProps = ComponentProps<typeof Button>;
|
|
978
|
-
declare const ContextTrigger: ({ children, ...props }: ContextTriggerProps) => react.JSX.Element;
|
|
979
|
-
type ContextContentProps = ComponentProps<typeof HoverCardContent>;
|
|
980
|
-
declare const ContextContent: ({ className, ...props }: ContextContentProps) => react.JSX.Element;
|
|
981
|
-
type ContextContentHeaderProps = ComponentProps<"div">;
|
|
982
|
-
declare const ContextContentHeader: ({ children, className, ...props }: ContextContentHeaderProps) => react.JSX.Element;
|
|
983
|
-
type ContextContentBodyProps = ComponentProps<"div">;
|
|
984
|
-
declare const ContextContentBody: ({ children, className, ...props }: ContextContentBodyProps) => react.JSX.Element;
|
|
985
|
-
type ContextContentFooterProps = ComponentProps<"div">;
|
|
986
|
-
declare const ContextContentFooter: ({ children, className, ...props }: ContextContentFooterProps) => react.JSX.Element;
|
|
987
|
-
type ContextInputUsageProps = ComponentProps<"div">;
|
|
988
|
-
declare const ContextInputUsage: ({ className, children, ...props }: ContextInputUsageProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
989
|
-
type ContextOutputUsageProps = ComponentProps<"div">;
|
|
990
|
-
declare const ContextOutputUsage: ({ className, children, ...props }: ContextOutputUsageProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
991
|
-
type ContextReasoningUsageProps = ComponentProps<"div">;
|
|
992
|
-
declare const ContextReasoningUsage: ({ className, children, ...props }: ContextReasoningUsageProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
993
|
-
type ContextCacheUsageProps = ComponentProps<"div">;
|
|
994
|
-
declare const ContextCacheUsage: ({ className, children, ...props }: ContextCacheUsageProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
995
|
-
|
|
996
1491
|
type ControlsProps = ComponentProps<typeof Controls$1>;
|
|
997
1492
|
declare const Controls: (props: ControlsProps) => react.JSX.Element;
|
|
998
1493
|
|
|
999
|
-
type ConversationProps = ComponentProps<typeof StickToBottom
|
|
1000
|
-
|
|
1494
|
+
type ConversationProps = ComponentProps<typeof StickToBottom> & {
|
|
1495
|
+
/**
|
|
1496
|
+
* The assistant response is still arriving (loading-states.md
|
|
1497
|
+
* `isStreaming`). `role="log"` otherwise announces every incoming token to
|
|
1498
|
+
* assistive tech as it streams in — deafening. While `true`, `aria-live`
|
|
1499
|
+
* is suppressed (`"off"`) and `aria-busy` is set; once streaming ends,
|
|
1500
|
+
* `aria-live` returns to `"polite"` so the settled content is what
|
|
1501
|
+
* actually gets announced.
|
|
1502
|
+
* @default false
|
|
1503
|
+
*/
|
|
1504
|
+
isStreaming?: boolean;
|
|
1505
|
+
};
|
|
1506
|
+
declare const Conversation: ({ className, isStreaming, ...props }: ConversationProps) => react.JSX.Element;
|
|
1001
1507
|
type ConversationContentProps = ComponentProps<typeof StickToBottom.Content>;
|
|
1002
|
-
declare const ConversationContent: ({ className, ...props }: ConversationContentProps) => react.JSX.Element;
|
|
1508
|
+
declare const ConversationContent: ({ className, scrollClassName, ...props }: ConversationContentProps) => react.JSX.Element;
|
|
1003
1509
|
type ConversationEmptyStateProps = ComponentProps<"div"> & {
|
|
1004
1510
|
title?: string;
|
|
1005
1511
|
description?: string;
|
|
1006
1512
|
icon?: React.ReactNode;
|
|
1513
|
+
/** Primary / secondary action(s) below the description (e.g. suggested prompts). */
|
|
1514
|
+
actions?: React.ReactNode;
|
|
1007
1515
|
};
|
|
1008
|
-
declare const ConversationEmptyState: ({ className, title, description, icon, children, ...props }: ConversationEmptyStateProps) => react.JSX.Element;
|
|
1516
|
+
declare const ConversationEmptyState: ({ className, title, description, icon, actions, children, ...props }: ConversationEmptyStateProps) => react.JSX.Element;
|
|
1009
1517
|
type ConversationScrollButtonProps = ComponentProps<typeof Button>;
|
|
1010
1518
|
declare const ConversationScrollButton: ({ className, ...props }: ConversationScrollButtonProps) => false | react.JSX.Element;
|
|
1011
1519
|
type ConversationDownloadProps = Omit<ComponentProps<typeof Button>, "onClick"> & {
|
|
@@ -1016,6 +1524,48 @@ type ConversationDownloadProps = Omit<ComponentProps<typeof Button>, "onClick">
|
|
|
1016
1524
|
declare const messagesToMarkdown: (messages: UIMessage[], formatMessage?: (message: UIMessage, index: number) => string) => string;
|
|
1017
1525
|
declare const ConversationDownload: ({ messages, filename, formatMessage, className, children, ...props }: ConversationDownloadProps) => react.JSX.Element;
|
|
1018
1526
|
|
|
1527
|
+
interface DiffViewProps extends Omit<ComponentProps<"div">, "children"> {
|
|
1528
|
+
/** The diff, as a flat, ordered line list. */
|
|
1529
|
+
lines: DiffLine[];
|
|
1530
|
+
/** File path shown in the header. */
|
|
1531
|
+
file?: string;
|
|
1532
|
+
/** One-line summary shown beside the file name. */
|
|
1533
|
+
summary?: string;
|
|
1534
|
+
/** Added / removed line counts shown in the header. */
|
|
1535
|
+
stats?: {
|
|
1536
|
+
additions: number;
|
|
1537
|
+
deletions: number;
|
|
1538
|
+
};
|
|
1539
|
+
/** `inline` = unified single column; `split` = side-by-side. @default "inline" */
|
|
1540
|
+
variant?: "inline" | "split";
|
|
1541
|
+
/**
|
|
1542
|
+
* Full-screen reading surface: a scrollable region with a scroll-position
|
|
1543
|
+
* indicator, a key legend (↑/↓, Page Up/Down, Home/End), and a named
|
|
1544
|
+
* `role="region"`. Absorbs the upstream `CodexDiff` pager shape — this
|
|
1545
|
+
* prop, not a second component.
|
|
1546
|
+
*/
|
|
1547
|
+
pager?: boolean;
|
|
1548
|
+
/** Shiki language id for intra-line syntax colour. Omit to render plain text. */
|
|
1549
|
+
language?: BundledLanguage;
|
|
1550
|
+
/** Collapse a run of consecutive `context` lines longer than this behind a "show more" control. */
|
|
1551
|
+
contextLines?: number;
|
|
1552
|
+
/** Hard cap on rendered lines. Extra lines are simply not rendered. */
|
|
1553
|
+
maxLines?: number;
|
|
1554
|
+
/** No renderable diff yet (loading-states.md) — layout-shaped skeleton rows at the real row height. */
|
|
1555
|
+
loading?: boolean;
|
|
1556
|
+
/** Lines are still arriving (loading-states.md) — render what exists; never an error surface. */
|
|
1557
|
+
isStreaming?: boolean;
|
|
1558
|
+
}
|
|
1559
|
+
/**
|
|
1560
|
+
* The row's fill-rung tint — the THIRD, redundant cue (accessibility.md /
|
|
1561
|
+
* styling-and-tokens.md). Never the only signal: every `add`/`del` row also
|
|
1562
|
+
* carries a marker glyph (shape) and an `sr-only` polarity word (name).
|
|
1563
|
+
*/
|
|
1564
|
+
declare const diffRowVariants: (props?: ({
|
|
1565
|
+
type?: "meta" | "del" | "add" | "context" | "hunk" | null | undefined;
|
|
1566
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1567
|
+
declare const DiffView: react.ForwardRefExoticComponent<Omit<DiffViewProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
1568
|
+
|
|
1019
1569
|
declare const Edge: {
|
|
1020
1570
|
Animated: (props: EdgeProps) => react.JSX.Element;
|
|
1021
1571
|
Temporary: (props: EdgeProps) => react.JSX.Element;
|
|
@@ -1052,7 +1602,7 @@ type EnvironmentVariableCopyButtonProps = ComponentProps<typeof Button> & {
|
|
|
1052
1602
|
timeout?: number;
|
|
1053
1603
|
copyFormat?: "name" | "value" | "export";
|
|
1054
1604
|
};
|
|
1055
|
-
declare const EnvironmentVariableCopyButton: ({ onCopy, onError, timeout, copyFormat, children, className, ...props }: EnvironmentVariableCopyButtonProps) => react.JSX.Element;
|
|
1605
|
+
declare const EnvironmentVariableCopyButton: ({ onCopy, onError, timeout, copyFormat, children, className, "aria-label": ariaLabel, ...props }: EnvironmentVariableCopyButtonProps) => react.JSX.Element;
|
|
1056
1606
|
type EnvironmentVariableRequiredProps = ComponentProps<typeof Badge>;
|
|
1057
1607
|
declare const EnvironmentVariableRequired: ({ className, children, ...props }: EnvironmentVariableRequiredProps) => react.JSX.Element;
|
|
1058
1608
|
|
|
@@ -1319,7 +1869,7 @@ type ImageProps = Experimental_GeneratedImage & Omit<ImgHTMLAttributes<HTMLImage
|
|
|
1319
1869
|
showSkeleton?: boolean;
|
|
1320
1870
|
};
|
|
1321
1871
|
/** `<img>` wrapper for an AI-SDK generated image, with a decode-aware skeleton. */
|
|
1322
|
-
declare const Image: react.ForwardRefExoticComponent<
|
|
1872
|
+
declare const Image: react.ForwardRefExoticComponent<ai.GeneratedFile & Omit<ImgHTMLAttributes<HTMLImageElement>, "src"> & {
|
|
1323
1873
|
/**
|
|
1324
1874
|
* Show a Skeleton placeholder (loading-states.md) until the img element
|
|
1325
1875
|
* finishes decoding, so the base64 payload does not pop in. Requires
|
|
@@ -1396,78 +1946,6 @@ declare const InlineCitationSource: ({ title, url, description, className, child
|
|
|
1396
1946
|
type InlineCitationQuoteProps = ComponentProps<"blockquote">;
|
|
1397
1947
|
declare const InlineCitationQuote: ({ children, className, ...props }: InlineCitationQuoteProps) => react.JSX.Element;
|
|
1398
1948
|
|
|
1399
|
-
interface InteractiveTerminalHandle {
|
|
1400
|
-
/** Process → screen. ANSI passthrough (colors, cursor movement, clears, …). */
|
|
1401
|
-
write(data: string): void;
|
|
1402
|
-
/** Clears the viewport + scrollback. */
|
|
1403
|
-
clear(): void;
|
|
1404
|
-
/** Re-fits cols/rows to the current container size. */
|
|
1405
|
-
fit(): void;
|
|
1406
|
-
/** Focuses the terminal's input surface. */
|
|
1407
|
-
focus(): void;
|
|
1408
|
-
}
|
|
1409
|
-
interface InteractiveTerminalProps extends Omit<HTMLAttributes<HTMLDivElement>, "onResize"> {
|
|
1410
|
-
/** Keystrokes + paste → process. The PTY/process stays consumer-owned. */
|
|
1411
|
-
onData?: (data: string) => void;
|
|
1412
|
-
/** Fires whenever the container resizes and cols/rows are refit. */
|
|
1413
|
-
onResize?: (size: {
|
|
1414
|
-
cols: number;
|
|
1415
|
-
rows: number;
|
|
1416
|
-
}) => void;
|
|
1417
|
-
/** Degrades to a read-only log: writes still render, stdin is disabled. */
|
|
1418
|
-
readOnly?: boolean;
|
|
1419
|
-
/** Terminal font size in px. Defaults to `13` (matches `CodeEditor`). */
|
|
1420
|
-
fontSize?: number;
|
|
1421
|
-
/** Accessible name for the terminal's real focusable surface. Required. */
|
|
1422
|
-
"aria-label": string;
|
|
1423
|
-
}
|
|
1424
|
-
/**
|
|
1425
|
-
* Builds xterm's `ITheme` from the active theme's semantic tokens, resolved
|
|
1426
|
-
* off `rootEl` (defaults to `<html>`, where `data-theme` lives).
|
|
1427
|
-
*
|
|
1428
|
-
* ANSI mapping (documented so the intent is auditable, not guessed at):
|
|
1429
|
-
* - background/foreground → `--card`/`--foreground` (the terminal reads as a
|
|
1430
|
-
* raised panel, matching the existing `Terminal` log's bordered-box look).
|
|
1431
|
-
* - cursor → `--primary`; cursorAccent → the background, so glyphs stay
|
|
1432
|
-
* legible under a solid block cursor.
|
|
1433
|
-
* - selectionBackground → a low-alpha `--primary` wash.
|
|
1434
|
-
* - red/green/yellow/blue → the AA-tuned `-text` variants (`--destructive-text`,
|
|
1435
|
-
* `--success-text`, `--warning-text`, `--info-text`) — these are the ones
|
|
1436
|
-
* tuned to read as TEXT on a surface, which is exactly what ANSI color codes
|
|
1437
|
-
* paint. `bright*` variants use the more saturated fill tokens
|
|
1438
|
-
* (`--destructive`, `--success`, `--warning`, `--info`).
|
|
1439
|
-
* - magenta/cyan → `--chart-4`/`--chart-2` (no dedicated fill/text pair, so the
|
|
1440
|
-
* `bright*` siblings are the same hue pushed AWAY from the background).
|
|
1441
|
-
* - black/white are `background`/`foreground` RUNGS, not the tokens
|
|
1442
|
-
* themselves: `black` = the terminal's own background (the common "ANSI
|
|
1443
|
-
* black" convention — invisible ink), `brightBlack` = `--border-strong`
|
|
1444
|
-
* (a dim ink for comments/hashes), `white` = `--muted-foreground` (a dimmer
|
|
1445
|
-
* ink), `brightWhite` = `--foreground` (full ink).
|
|
1446
|
-
*
|
|
1447
|
-
* EVERY slot above except `black` then passes through `readableInk()` — the AA
|
|
1448
|
-
* floor (#386). The mapping picks the token that carries the right MEANING; the
|
|
1449
|
-
* floor guarantees the resulting ink is legible on this terminal's actual
|
|
1450
|
-
* background. Several of these tokens are mark/fill rungs (≥3:1 only), so
|
|
1451
|
-
* without the floor EVERY palette this repo ships had sub-AA ANSI slots —
|
|
1452
|
-
* measured from `themes.css`: `:root` 7 (worst 2.39:1), `light` 4 (worst
|
|
1453
|
-
* 2.91:1), `dark` 1 (3.16:1). Re-derived on every
|
|
1454
|
-
* run by `interactive-terminal.test.tsx`, which parses those palettes out of
|
|
1455
|
-
* `themes.css` rather than hard-coding them. Keep new slots inside `ink(...)`;
|
|
1456
|
-
* a raw token assigned straight to an ANSI slot is the bug.
|
|
1457
|
-
*/
|
|
1458
|
-
declare function buildInteractiveTerminalTheme(rootEl?: Element | null): ITheme;
|
|
1459
|
-
/**
|
|
1460
|
-
* A token-themed, PTY-ready terminal emulator wrapped as a brand-ui component.
|
|
1461
|
-
* Wraps xterm.js + `FitAddon`; the process itself is consumer-owned — this
|
|
1462
|
-
* component only renders ANSI output and emits `onData`/`onResize`.
|
|
1463
|
-
*
|
|
1464
|
-
* Keyboard: the terminal's real focusable surface is xterm's own input
|
|
1465
|
-
* textarea (reachable by Tab like any control). Tab/Shift-Tab and Escape are
|
|
1466
|
-
* explicitly let through (`attachCustomKeyEventHandler`) so focus can always
|
|
1467
|
-
* leave the terminal — there is no keyboard trap.
|
|
1468
|
-
*/
|
|
1469
|
-
declare const InteractiveTerminal: react.ForwardRefExoticComponent<InteractiveTerminalProps & react.RefAttributes<InteractiveTerminalHandle>>;
|
|
1470
|
-
|
|
1471
1949
|
/**
|
|
1472
1950
|
* The readiness of the preview, derived from the input (see loading-states.md):
|
|
1473
1951
|
* - `idle` — nothing requested yet (empty input, never rendered). Renders nothing.
|
|
@@ -1577,15 +2055,103 @@ declare const createLazyMermaidPlugin: (options?: {
|
|
|
1577
2055
|
*/
|
|
1578
2056
|
declare const lazyMermaid: DiagramPlugin;
|
|
1579
2057
|
|
|
1580
|
-
|
|
2058
|
+
type StreamdownComponents = NonNullable<ComponentProps<typeof Streamdown>["components"]>;
|
|
2059
|
+
type StreamdownPlugins = ComponentProps<typeof Streamdown>["plugins"];
|
|
2060
|
+
interface MarkdownViewProps extends Omit<ComponentProps<typeof Streamdown>, "components" | "plugins" | "rehypePlugins"> {
|
|
1581
2061
|
/**
|
|
1582
2062
|
* The prose level a markdown `#` maps to; deeper headings shift with it
|
|
1583
2063
|
* (capped at 6). Default `1` (the full reading scale). Pass `2` in narrow
|
|
1584
2064
|
* embeds (a context rail) so headings stay on the constrained rung.
|
|
1585
2065
|
*/
|
|
1586
2066
|
baseHeadingLevel?: ProseHeadingLevel;
|
|
2067
|
+
/**
|
|
2068
|
+
* Per-element renderer overrides, MERGED over the internal Prose* map
|
|
2069
|
+
* (#10) — a consumer entry wins for its key; every key the consumer does
|
|
2070
|
+
* NOT set keeps rendering through `buildProseComponents()`. This is the
|
|
2071
|
+
* seam for rendering inline citations: override `a` (or a custom node
|
|
2072
|
+
* type) to swap a `[1](url)`-style marker for an `InlineCitation` chip
|
|
2073
|
+
* while headings/lists/etc. keep the branded prose styling.
|
|
2074
|
+
*
|
|
2075
|
+
* Deliberately a MERGE, not a replace: sanitisation is unaffected either
|
|
2076
|
+
* way (see `plugins` below), but a wholesale replace would silently drop
|
|
2077
|
+
* the branded styling from every element the consumer didn't think to
|
|
2078
|
+
* re-declare — a citation override should not have to also re-implement
|
|
2079
|
+
* headings/lists/code to keep them on-brand.
|
|
2080
|
+
*
|
|
2081
|
+
* **Known constraint: a `components` change alone does not force a
|
|
2082
|
+
* re-render of already-rendered markdown (#10).** Streamdown memoizes on
|
|
2083
|
+
* `children`/`plugins`/theme/etc but NOT on `components`
|
|
2084
|
+
* (`streamdown@2.5.0`'s top-level `memo` comparator omits it), so if the
|
|
2085
|
+
* SAME markdown string is still current when an override's closed-over
|
|
2086
|
+
* data changes — e.g. an inline-citation chip that resolves its title
|
|
2087
|
+
* asynchronously — the new render function is captured but nothing
|
|
2088
|
+
* schedules Streamdown to call it again. Don't rely on a `components`
|
|
2089
|
+
* closure to reflect state that arrives after the initial render; instead
|
|
2090
|
+
* have the overriding component read that state itself (a shared context,
|
|
2091
|
+
* a store keyed by citation id, or an internal `useState`/subscription
|
|
2092
|
+
* inside the override) so IT re-renders independently of `MarkdownView`'s
|
|
2093
|
+
* own render pass — the pattern `InlineCitation`/`InlineCitationCard`
|
|
2094
|
+
* already use.
|
|
2095
|
+
*/
|
|
2096
|
+
components?: StreamdownComponents;
|
|
2097
|
+
/**
|
|
2098
|
+
* Streamdown plugin-slot overrides (`cjk`/`code`/`math`/`mermaid`/
|
|
2099
|
+
* `renderers`), MERGED per key over the internal defaults (the reactive,
|
|
2100
|
+
* brand-token-derived `code` plugin and i18n-aware `cjk`/`math`/`mermaid`
|
|
2101
|
+
* set — see `_streamdown-i18n.ts`).
|
|
2102
|
+
*
|
|
2103
|
+
* **This narrow `plugins` prop can only APPEND — it can never displace
|
|
2104
|
+
* Streamdown's default `rehypePlugins` chain** (`rehype-raw` →
|
|
2105
|
+
* `rehype-sanitize` → `rehype-harden`). `MarkdownView` never sets
|
|
2106
|
+
* `rehypePlugins` itself, and nothing in `PluginConfig` removes or replaces
|
|
2107
|
+
* a member of that pipeline, so the sanitiser cannot be turned off through
|
|
2108
|
+
* this prop. But two of the five slots are **not** upstream of it and must
|
|
2109
|
+
* be treated as trusted code:
|
|
2110
|
+
* - **`math.rehypePlugin` runs AFTER `rehype-sanitize`/`rehype-harden`**
|
|
2111
|
+
* (appended to the end of the rehype pipeline, verified against
|
|
2112
|
+
* `streamdown@2.5.0`'s `dist/chunk-BO2N2NFS.js`) — its output is never
|
|
2113
|
+
* re-sanitised.
|
|
2114
|
+
* - **`mermaid` never enters the rehype/remark pipeline at all.** Its
|
|
2115
|
+
* `getMermaid().render()` result is written via
|
|
2116
|
+
* `dangerouslySetInnerHTML` (streamdown's only such sink). brand-ui's own
|
|
2117
|
+
* `useStreamdownPlugins()` default pins `securityLevel: "strict"`
|
|
2118
|
+
* (`_lazy-mermaid.ts`); a replacement `mermaid` plugin must sanitise its
|
|
2119
|
+
* own SVG output the same way.
|
|
2120
|
+
* - `cjk` (remark-stage only — its output is re-sanitised downstream by
|
|
2121
|
+
* the rehype pipeline like any other remark result), `code` (feeds only
|
|
2122
|
+
* `shikiTheme`, no HTML injection) and `renderers` (ordinary React
|
|
2123
|
+
* components rendered with the fenced block's raw `code` string as a
|
|
2124
|
+
* `string` prop, the same trusted-component boundary as a `components`
|
|
2125
|
+
* override) do not bypass sanitisation.
|
|
2126
|
+
*
|
|
2127
|
+
* **`rehypePlugins` is NOT exposed on this component (#36, fixed).** Unlike
|
|
2128
|
+
* `plugins`, a caller-supplied `rehypePlugins` array would REPLACE
|
|
2129
|
+
* Streamdown's default rehype pipeline wholesale rather than extending it,
|
|
2130
|
+
* silently dropping `rehype-raw`/`rehype-sanitize`/`rehype-harden` and
|
|
2131
|
+
* letting a plain markdown string execute script in the host page — so
|
|
2132
|
+
* `MarkdownViewProps` `Omit`s it at the type level AND
|
|
2133
|
+
* `stripSanitizerOverrides()` deletes it at runtime before the `{...props}`
|
|
2134
|
+
* spread below, even if a JS consumer or a cast reaches this component with
|
|
2135
|
+
* it set. If you need to widen sanitisation, use
|
|
2136
|
+
* `allowedTags`/`literalTagContent`, which MERGE into the sanitize schema
|
|
2137
|
+
* instead of replacing the pipeline. See
|
|
2138
|
+
* `packages/ai/src/_streamdown-safety.ts`.
|
|
2139
|
+
*
|
|
2140
|
+
* **`remarkPlugins` IS supported** (PR #74 review, round 1 — the original
|
|
2141
|
+
* #36 fix over-reached and removed it too). The remark stage runs strictly
|
|
2142
|
+
* upstream of the rehype chain, and Streamdown builds its rehype list
|
|
2143
|
+
* without reading `remarkPlugins`, so everything a remark plugin emits is
|
|
2144
|
+
* still sanitised downstream — measured across raw-`html` mdast nodes,
|
|
2145
|
+
* `data.hName`/`hChildren` hast elements, `hProperties` event handlers,
|
|
2146
|
+
* `javascript:` link URLs and smuggled `raw` hast children. Note the
|
|
2147
|
+
* ordinary (non-security) footgun: your array REPLACES Streamdown's own
|
|
2148
|
+
* remark defaults (`remark-gfm`, `codeMeta`), so spread
|
|
2149
|
+
* `Object.values(defaultRemarkPlugins)` from `streamdown` back in if you
|
|
2150
|
+
* want to keep GFM tables/strikethrough.
|
|
2151
|
+
*/
|
|
2152
|
+
plugins?: StreamdownPlugins;
|
|
1587
2153
|
}
|
|
1588
|
-
declare const MarkdownView: ({ baseHeadingLevel, className, children, ...props }: MarkdownViewProps) => react.JSX.Element;
|
|
2154
|
+
declare const MarkdownView: ({ baseHeadingLevel, className, children, components: componentOverrides, plugins: pluginOverrides, ...props }: MarkdownViewProps) => react.JSX.Element;
|
|
1589
2155
|
|
|
1590
2156
|
type MessageProps = HTMLAttributes<HTMLDivElement> & {
|
|
1591
2157
|
from: UIMessage["role"];
|
|
@@ -1685,7 +2251,7 @@ type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
1685
2251
|
};
|
|
1686
2252
|
declare const MessageBranch: ({ branch: branchProp, defaultBranch, onBranchChange, className, ...props }: MessageBranchProps) => react.JSX.Element;
|
|
1687
2253
|
type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;
|
|
1688
|
-
declare const MessageBranchContent: ({ children, ...props }: MessageBranchContentProps) => react.JSX.Element[];
|
|
2254
|
+
declare const MessageBranchContent: ({ children, id, ...props }: MessageBranchContentProps) => react.JSX.Element[];
|
|
1689
2255
|
type MessageBranchSelectorProps = ComponentProps<typeof ButtonGroup>;
|
|
1690
2256
|
declare const MessageBranchSelector: ({ className, ...props }: MessageBranchSelectorProps) => react.JSX.Element | null;
|
|
1691
2257
|
type MessageBranchPreviousProps = ComponentProps<typeof Button>;
|
|
@@ -1694,7 +2260,19 @@ type MessageBranchNextProps = ComponentProps<typeof Button>;
|
|
|
1694
2260
|
declare const MessageBranchNext: ({ children, ...props }: MessageBranchNextProps) => react.JSX.Element;
|
|
1695
2261
|
type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;
|
|
1696
2262
|
declare const MessageBranchPage: ({ className, ...props }: MessageBranchPageProps) => react.JSX.Element;
|
|
1697
|
-
|
|
2263
|
+
/**
|
|
2264
|
+
* `rehypePlugins` is NOT exposed on `MessageResponse` (#36, fixed). This
|
|
2265
|
+
* renders untrusted, streamed model output — the type-level `Omit` below plus
|
|
2266
|
+
* a runtime `stripSanitizerOverrides()` call before the `{...props}` spread
|
|
2267
|
+
* onto `<Streamdown>` keep Streamdown's default sanitiser chain (rehype-raw →
|
|
2268
|
+
* rehype-sanitize → rehype-harden) non-overridable, even through a JS consumer
|
|
2269
|
+
* or a force-cast.
|
|
2270
|
+
*
|
|
2271
|
+
* `remarkPlugins` IS supported: the remark stage runs upstream of that chain
|
|
2272
|
+
* and cannot bypass it (PR #74 review, round 1). See `MarkdownView`'s TSDoc and
|
|
2273
|
+
* `packages/ai/src/_streamdown-safety.ts` for the full security model.
|
|
2274
|
+
*/
|
|
2275
|
+
type MessageResponseProps = Omit<ComponentProps<typeof Streamdown>, "rehypePlugins"> & {
|
|
1698
2276
|
/**
|
|
1699
2277
|
* No content has arrived yet (loading-states.md `loading`) — renders
|
|
1700
2278
|
* skeleton lines at the body line-height instead of `<Streamdown>`, so the
|
|
@@ -1702,11 +2280,112 @@ type MessageResponseProps = ComponentProps<typeof Streamdown> & {
|
|
|
1702
2280
|
* @default false
|
|
1703
2281
|
*/
|
|
1704
2282
|
loading?: boolean;
|
|
2283
|
+
/**
|
|
2284
|
+
* Custom renderers for markdown elements. **Semantics differ from
|
|
2285
|
+
* `MarkdownView`:** `components` here REPLACES (not merges) per key against
|
|
2286
|
+
* Streamdown's own defaults, since `MessageResponse` has no internal
|
|
2287
|
+
* component map to merge with. See `MarkdownView` for merge-over-defaults
|
|
2288
|
+
* semantics and `#10` for details.
|
|
2289
|
+
*/
|
|
2290
|
+
components?: ComponentProps<typeof Streamdown>["components"];
|
|
2291
|
+
/**
|
|
2292
|
+
* Streamdown plugin-slot overrides (`cjk`/`code`/`math`/`mermaid`/
|
|
2293
|
+
* `renderers`), **merged** per key over the internal defaults, so a
|
|
2294
|
+
* consumer's entry wins for its key; every key the consumer does not set
|
|
2295
|
+
* keeps the reactive, i18n-aware internal default. Same semantics as
|
|
2296
|
+
* `MarkdownView` (#10 fix round).
|
|
2297
|
+
*
|
|
2298
|
+
* **This narrow `plugins` prop can only APPEND — it can never displace
|
|
2299
|
+
* Streamdown's default `rehypePlugins` chain** (`rehype-raw` →
|
|
2300
|
+
* `rehype-sanitize` → `rehype-harden`). `MessageResponse` never sets
|
|
2301
|
+
* `rehypePlugins` itself, and nothing in `PluginConfig` removes a member of
|
|
2302
|
+
* that pipeline. But two of the five slots are **not** upstream of it and
|
|
2303
|
+
* must be treated as TRUSTED CODE (#76):
|
|
2304
|
+
* - **`math.rehypePlugin` runs AFTER `rehype-sanitize`/`rehype-harden`** —
|
|
2305
|
+
* it is appended to the end of the rehype pipeline (verified against
|
|
2306
|
+
* `streamdown@2.5.0`'s `dist/chunk-BO2N2NFS.js`), so its output is never
|
|
2307
|
+
* re-sanitised. Replacing it emits a dev-only `console.warn`; the plugin
|
|
2308
|
+
* still runs (the seam is deliberate, not a hole to close). The sharp
|
|
2309
|
+
* edge in practice is KaTeX's `trust` option — it disables KaTeX's own
|
|
2310
|
+
* sanitisation, so leave it off for model-authored content.
|
|
2311
|
+
* - **`mermaid` never enters the rehype/remark pipeline at all.** Its
|
|
2312
|
+
* render output is written via `dangerouslySetInnerHTML` (streamdown's
|
|
2313
|
+
* only such sink); brand-ui's default pins mermaid's strict security
|
|
2314
|
+
* level, and a replacement must sanitise its own SVG. Also dev-warned.
|
|
2315
|
+
* - `cjk` (remark-stage, re-sanitised downstream), `code` (feeds
|
|
2316
|
+
* `shikiTheme` only) and `renderers` (ordinary React components) do not
|
|
2317
|
+
* bypass sanitisation and are never warned about.
|
|
2318
|
+
*
|
|
2319
|
+
* See `docs/CSP-AND-NETWORK.md` §1 and
|
|
2320
|
+
* `packages/ai/src/_streamdown-safety.ts`; `MarkdownView`'s TSDoc carries
|
|
2321
|
+
* the same model for the sibling surface.
|
|
2322
|
+
*/
|
|
2323
|
+
plugins?: ComponentProps<typeof Streamdown>["plugins"];
|
|
1705
2324
|
};
|
|
1706
|
-
declare const MessageResponse: react.MemoExoticComponent<({ className, loading, ...props }: MessageResponseProps) => react.JSX.Element>;
|
|
2325
|
+
declare const MessageResponse: react.MemoExoticComponent<({ className, loading, plugins: pluginOverrides, ...props }: MessageResponseProps) => react.JSX.Element>;
|
|
1707
2326
|
type MessageToolbarProps = ComponentProps<"div">;
|
|
1708
2327
|
declare const MessageToolbar: ({ className, children, ...props }: MessageToolbarProps) => react.JSX.Element;
|
|
1709
2328
|
|
|
2329
|
+
/** The minimum a column needs to identify itself — mainly its accessible name. */
|
|
2330
|
+
interface MessageCompareModel {
|
|
2331
|
+
/** Rendered in the column header AND used as the region's `aria-label`. */
|
|
2332
|
+
name: string;
|
|
2333
|
+
/** Optional stable id, e.g. for analytics — not used for layout or a11y. */
|
|
2334
|
+
id?: string;
|
|
2335
|
+
}
|
|
2336
|
+
/** `MessageCompare` supports 2-4 side-by-side responses (issue #23). */
|
|
2337
|
+
type MessageCompareColumnsCount = 2 | 3 | 4;
|
|
2338
|
+
type MessageCompareProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
2339
|
+
/** `MessageCompareColumn` elements — 2 to 4. */
|
|
2340
|
+
children: ReactNode;
|
|
2341
|
+
columns: MessageCompareColumnsCount;
|
|
2342
|
+
/** Controlled sync-scroll flag. Omit for the uncontrolled default (off). */
|
|
2343
|
+
syncScroll?: boolean;
|
|
2344
|
+
/** Uncontrolled initial value. @default false */
|
|
2345
|
+
defaultSyncScroll?: boolean;
|
|
2346
|
+
onSyncScrollChange?: (value: boolean) => void;
|
|
2347
|
+
/** aria-label for the narrow-viewport tab strip. Defaults to microcopy. */
|
|
2348
|
+
tabsLabel?: string;
|
|
2349
|
+
};
|
|
2350
|
+
/**
|
|
2351
|
+
* Responsive side-by-side comparison of 2-4 `MessageCompareColumn`s. Desktop:
|
|
2352
|
+
* resizable columns (`ResizablePanelGroup`). Under `md`: a `Tabs` strip, per
|
|
2353
|
+
* the issue's named narrow-viewport treatment.
|
|
2354
|
+
*/
|
|
2355
|
+
declare const MessageCompare: react.ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
2356
|
+
/** `MessageCompareColumn` elements — 2 to 4. */
|
|
2357
|
+
children: ReactNode;
|
|
2358
|
+
columns: MessageCompareColumnsCount;
|
|
2359
|
+
/** Controlled sync-scroll flag. Omit for the uncontrolled default (off). */
|
|
2360
|
+
syncScroll?: boolean;
|
|
2361
|
+
/** Uncontrolled initial value. @default false */
|
|
2362
|
+
defaultSyncScroll?: boolean;
|
|
2363
|
+
onSyncScrollChange?: (value: boolean) => void;
|
|
2364
|
+
/** aria-label for the narrow-viewport tab strip. Defaults to microcopy. */
|
|
2365
|
+
tabsLabel?: string;
|
|
2366
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
2367
|
+
type MessageCompareColumnProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
2368
|
+
/** Identifies the column — its `name` becomes the region's accessible name. */
|
|
2369
|
+
model: MessageCompareModel;
|
|
2370
|
+
/** In-flight state for this column's OWN response, independent of siblings. */
|
|
2371
|
+
status?: ChatStatus;
|
|
2372
|
+
/** The consumer's own `Message`/`MessageResponse` composition for this column. */
|
|
2373
|
+
children?: ReactNode;
|
|
2374
|
+
};
|
|
2375
|
+
/**
|
|
2376
|
+
* One labelled, independently-scrolling response column. `role="region"` +
|
|
2377
|
+
* `aria-label={model.name}` so a screen-reader user can tell which answer
|
|
2378
|
+
* they're in (issue #23 a11y requirement).
|
|
2379
|
+
*/
|
|
2380
|
+
declare const MessageCompareColumn: react.ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
2381
|
+
/** Identifies the column — its `name` becomes the region's accessible name. */
|
|
2382
|
+
model: MessageCompareModel;
|
|
2383
|
+
/** In-flight state for this column's OWN response, independent of siblings. */
|
|
2384
|
+
status?: ChatStatus;
|
|
2385
|
+
/** The consumer's own `Message`/`MessageResponse` composition for this column. */
|
|
2386
|
+
children?: ReactNode;
|
|
2387
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
2388
|
+
|
|
1710
2389
|
interface MessageEditContextValue {
|
|
1711
2390
|
editing: boolean;
|
|
1712
2391
|
draft: string;
|
|
@@ -2522,7 +3201,6 @@ declare const formSpecSchema: z.ZodObject<{
|
|
|
2522
3201
|
/** Submit button label. @default "Submit" */
|
|
2523
3202
|
submitLabel: z.ZodOptional<z.ZodString>;
|
|
2524
3203
|
}, "strip", z.ZodTypeAny, {
|
|
2525
|
-
formName: string;
|
|
2526
3204
|
fields: ({
|
|
2527
3205
|
name: string;
|
|
2528
3206
|
type: "string";
|
|
@@ -2583,11 +3261,11 @@ declare const formSpecSchema: z.ZodObject<{
|
|
|
2583
3261
|
required?: boolean | undefined;
|
|
2584
3262
|
description?: string | undefined;
|
|
2585
3263
|
})[];
|
|
3264
|
+
formName: string;
|
|
2586
3265
|
title?: string | undefined;
|
|
2587
3266
|
description?: string | undefined;
|
|
2588
3267
|
submitLabel?: string | undefined;
|
|
2589
3268
|
}, {
|
|
2590
|
-
formName: string;
|
|
2591
3269
|
fields: ({
|
|
2592
3270
|
name: string;
|
|
2593
3271
|
type: "string";
|
|
@@ -2648,6 +3326,7 @@ declare const formSpecSchema: z.ZodObject<{
|
|
|
2648
3326
|
required?: boolean | undefined;
|
|
2649
3327
|
description?: string | undefined;
|
|
2650
3328
|
})[];
|
|
3329
|
+
formName: string;
|
|
2651
3330
|
title?: string | undefined;
|
|
2652
3331
|
description?: string | undefined;
|
|
2653
3332
|
submitLabel?: string | undefined;
|
|
@@ -2719,6 +3398,8 @@ interface MessageFormProviderProps {
|
|
|
2719
3398
|
/** In-flight submit: controls disabled, the submit button shows a spinner. */
|
|
2720
3399
|
submitting?: boolean;
|
|
2721
3400
|
/** The spec is still streaming in (renders a skeleton when no fields yet). */
|
|
3401
|
+
isStreaming?: boolean;
|
|
3402
|
+
/** @deprecated Use `isStreaming`. */
|
|
2722
3403
|
streaming?: boolean;
|
|
2723
3404
|
children: ReactNode;
|
|
2724
3405
|
}
|
|
@@ -2726,7 +3407,7 @@ interface MessageFormProviderProps {
|
|
|
2726
3407
|
* Lifts the form values. Controlled (pass `values`) or uncontrolled.
|
|
2727
3408
|
* Derives `isControlled = values !== undefined` and never flips modes.
|
|
2728
3409
|
*/
|
|
2729
|
-
declare function MessageFormProvider({ spec, values: valuesProp, onChange, onSubmit, disabled, submitted, submitting, streaming, children, }: MessageFormProviderProps): react.JSX.Element;
|
|
3410
|
+
declare function MessageFormProvider({ spec, values: valuesProp, onChange, onSubmit, disabled, submitted, submitting, isStreaming, streaming, children, }: MessageFormProviderProps): react.JSX.Element;
|
|
2730
3411
|
interface MessageFormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
2731
3412
|
/** The field's `name` (its key in the spec + values). */
|
|
2732
3413
|
name: string;
|
|
@@ -2788,6 +3469,8 @@ interface MessageFormProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSubmi
|
|
|
2788
3469
|
/** In-flight submit: controls disabled, spinner on submit. */
|
|
2789
3470
|
submitting?: boolean;
|
|
2790
3471
|
/** The spec is still streaming (renders a skeleton when no fields yet). */
|
|
3472
|
+
isStreaming?: boolean;
|
|
3473
|
+
/** @deprecated Use `isStreaming`. */
|
|
2791
3474
|
streaming?: boolean;
|
|
2792
3475
|
}
|
|
2793
3476
|
/**
|
|
@@ -2830,11 +3513,11 @@ declare const columnSpecSchema: z.ZodObject<{
|
|
|
2830
3513
|
}, "strip", z.ZodTypeAny, {
|
|
2831
3514
|
key: string;
|
|
2832
3515
|
label?: string | undefined;
|
|
2833
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3516
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2834
3517
|
}, {
|
|
2835
3518
|
key: string;
|
|
2836
3519
|
label?: string | undefined;
|
|
2837
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3520
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2838
3521
|
}>;
|
|
2839
3522
|
type ColumnSpec = z.infer<typeof columnSpecSchema>;
|
|
2840
3523
|
/** A single row: an object keyed by column `key`. */
|
|
@@ -2857,11 +3540,11 @@ declare const tableSpecSchema: z.ZodObject<{
|
|
|
2857
3540
|
}, "strip", z.ZodTypeAny, {
|
|
2858
3541
|
key: string;
|
|
2859
3542
|
label?: string | undefined;
|
|
2860
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3543
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2861
3544
|
}, {
|
|
2862
3545
|
key: string;
|
|
2863
3546
|
label?: string | undefined;
|
|
2864
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3547
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2865
3548
|
}>, "many">;
|
|
2866
3549
|
/** Row objects keyed by column `key`. */
|
|
2867
3550
|
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
|
|
@@ -2871,7 +3554,7 @@ declare const tableSpecSchema: z.ZodObject<{
|
|
|
2871
3554
|
columns: {
|
|
2872
3555
|
key: string;
|
|
2873
3556
|
label?: string | undefined;
|
|
2874
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3557
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2875
3558
|
}[];
|
|
2876
3559
|
rows: Record<string, unknown>[];
|
|
2877
3560
|
title?: string | undefined;
|
|
@@ -2880,7 +3563,7 @@ declare const tableSpecSchema: z.ZodObject<{
|
|
|
2880
3563
|
columns: {
|
|
2881
3564
|
key: string;
|
|
2882
3565
|
label?: string | undefined;
|
|
2883
|
-
format?: "number" | "text" | "percent" | "currency" | "
|
|
3566
|
+
format?: "number" | "text" | "percent" | "currency" | "badge" | "date" | undefined;
|
|
2884
3567
|
}[];
|
|
2885
3568
|
rows: Record<string, unknown>[];
|
|
2886
3569
|
title?: string | undefined;
|
|
@@ -2960,6 +3643,8 @@ interface MessageTableProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"
|
|
|
2960
3643
|
/** Per-cell render override for custom composition. */
|
|
2961
3644
|
renderCell?: RenderCell;
|
|
2962
3645
|
/** The spec is still streaming (columns-but-no-rows shows skeleton rows). */
|
|
3646
|
+
isStreaming?: boolean;
|
|
3647
|
+
/** @deprecated Use `isStreaming`. */
|
|
2963
3648
|
streaming?: boolean;
|
|
2964
3649
|
}
|
|
2965
3650
|
/**
|
|
@@ -3023,30 +3708,6 @@ declare const MicSelectorLabel: ({ device, className, ...props }: MicSelectorLab
|
|
|
3023
3708
|
type MicSelectorValueProps = ComponentProps<"span">;
|
|
3024
3709
|
declare const MicSelectorValue: ({ className, ...props }: MicSelectorValueProps) => react.JSX.Element;
|
|
3025
3710
|
|
|
3026
|
-
type ModelSelectorProps = ComponentProps<typeof Dialog>;
|
|
3027
|
-
declare const ModelSelector: (props: ModelSelectorProps) => react.JSX.Element;
|
|
3028
|
-
type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;
|
|
3029
|
-
declare const ModelSelectorTrigger: (props: ModelSelectorTriggerProps) => react.JSX.Element;
|
|
3030
|
-
type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {
|
|
3031
|
-
title?: ReactNode;
|
|
3032
|
-
};
|
|
3033
|
-
declare const ModelSelectorContent: ({ className, children, title, ...props }: ModelSelectorContentProps) => react.JSX.Element;
|
|
3034
|
-
type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;
|
|
3035
|
-
declare const ModelSelectorDialog: (props: ModelSelectorDialogProps) => react.JSX.Element;
|
|
3036
|
-
type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;
|
|
3037
|
-
declare const ModelSelectorInput: ({ className, ...props }: ModelSelectorInputProps) => react.JSX.Element;
|
|
3038
|
-
type ModelSelectorListProps = ComponentProps<typeof CommandList>;
|
|
3039
|
-
declare const ModelSelectorList: (props: ModelSelectorListProps) => react.JSX.Element;
|
|
3040
|
-
type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;
|
|
3041
|
-
declare const ModelSelectorEmpty: (props: ModelSelectorEmptyProps) => react.JSX.Element;
|
|
3042
|
-
type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;
|
|
3043
|
-
declare const ModelSelectorGroup: (props: ModelSelectorGroupProps) => react.JSX.Element;
|
|
3044
|
-
type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;
|
|
3045
|
-
declare const ModelSelectorItem: (props: ModelSelectorItemProps) => react.JSX.Element;
|
|
3046
|
-
type ModelSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;
|
|
3047
|
-
declare const ModelSelectorShortcut: (props: ModelSelectorShortcutProps) => react.JSX.Element;
|
|
3048
|
-
type ModelSelectorSeparatorProps = ComponentProps<typeof CommandSeparator>;
|
|
3049
|
-
declare const ModelSelectorSeparator: (props: ModelSelectorSeparatorProps) => react.JSX.Element;
|
|
3050
3711
|
/**
|
|
3051
3712
|
* Where provider logos are fetched from by default.
|
|
3052
3713
|
*
|
|
@@ -3054,11 +3715,11 @@ declare const ModelSelectorSeparator: (props: ModelSelectorSeparatorProps) => re
|
|
|
3054
3715
|
* Self-host the SVGs and pass `src` (or set a `fallback`) — see
|
|
3055
3716
|
* `docs/CSP-AND-NETWORK.md`.
|
|
3056
3717
|
*/
|
|
3057
|
-
declare const
|
|
3058
|
-
type
|
|
3718
|
+
declare const MODEL_PROVIDER_LOGO_BASE_URL = "https://models.dev/logos";
|
|
3719
|
+
type ModelProviderLogoProps = Omit<ComponentProps<"img">, "alt"> & {
|
|
3059
3720
|
/**
|
|
3060
3721
|
* Override the logo URL — point at a self-hosted or bundled asset when a CSP
|
|
3061
|
-
* blocks `models.dev`. Defaults to `${
|
|
3722
|
+
* blocks `models.dev`. Defaults to `${MODEL_PROVIDER_LOGO_BASE_URL}/<provider>.svg`.
|
|
3062
3723
|
*/
|
|
3063
3724
|
src?: string;
|
|
3064
3725
|
/**
|
|
@@ -3069,11 +3730,21 @@ type ModelSelectorLogoProps = Omit<ComponentProps<"img">, "alt"> & {
|
|
|
3069
3730
|
fallback?: ReactNode;
|
|
3070
3731
|
provider: "moonshotai-cn" | "lucidquery" | "moonshotai" | "zai-coding-plan" | "alibaba" | "xai" | "vultr" | "nvidia" | "upstage" | "groq" | "github-copilot" | "mistral" | "vercel" | "nebius" | "deepseek" | "alibaba-cn" | "google-vertex-anthropic" | "venice" | "chutes" | "cortecs" | "github-models" | "togetherai" | "azure" | "baseten" | "huggingface" | "opencode" | "fastrouter" | "google" | "google-vertex" | "cloudflare-workers-ai" | "inception" | "wandb" | "openai" | "zhipuai-coding-plan" | "perplexity" | "openrouter" | "zenmux" | "v0" | "iflowcn" | "synthetic" | "deepinfra" | "zhipuai" | "submodel" | "zai" | "inference" | "requesty" | "morph" | "lmstudio" | "anthropic" | "aihubmix" | "fireworks-ai" | "modelscope" | "llama" | "scaleway" | "amazon-bedrock" | "cerebras" | (string & {});
|
|
3071
3732
|
};
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3733
|
+
/**
|
|
3734
|
+
* The mark of an AI model provider (`anthropic`, `openai`, `google`, …), sized
|
|
3735
|
+
* for a row in a model list.
|
|
3736
|
+
*
|
|
3737
|
+
* **`ModelProviderLogo` vs `ServiceLogo` (`@elabs-ai/components-icons`).** An AI
|
|
3738
|
+
* provider mark with a zero-config remote default — name the provider and a logo
|
|
3739
|
+
* appears, no registration step — is this component. Any other third-party
|
|
3740
|
+
* service mark, resolved from a registry the app supplies and never fetched, is
|
|
3741
|
+
* `ServiceLogo`. The two are not interchangeable: `ServiceLogo` has no
|
|
3742
|
+
* per-instance `src` and no `onError`, and this one reaches a remote origin by
|
|
3743
|
+
* default (see `docs/CSP-AND-NETWORK.md`).
|
|
3744
|
+
*/
|
|
3745
|
+
declare const ModelProviderLogo: ({ provider, className, src, fallback, onError, ...props }: ModelProviderLogoProps) => react.JSX.Element;
|
|
3746
|
+
type ModelProviderLogoGroupProps = ComponentProps<"div">;
|
|
3747
|
+
declare const ModelProviderLogoGroup: ({ className, ...props }: ModelProviderLogoGroupProps) => react.JSX.Element;
|
|
3077
3748
|
|
|
3078
3749
|
interface BrandMotionConfigProps {
|
|
3079
3750
|
children: ReactNode;
|
|
@@ -3175,6 +3846,47 @@ declare const PackageInfoDependency: ({ name, version, className, children, ...p
|
|
|
3175
3846
|
type PanelProps = ComponentProps<typeof Panel$1>;
|
|
3176
3847
|
declare const Panel: (props: PanelProps) => react.JSX.Element;
|
|
3177
3848
|
|
|
3849
|
+
/**
|
|
3850
|
+
* PermissionModeSelect — the standing-permission-policy chooser (#104).
|
|
3851
|
+
*
|
|
3852
|
+
* Distinct from `Confirmation`/`ApprovalCard` (#103): those render ONE
|
|
3853
|
+
* per-call decision ("may I run this command?"). This renders the POLICY
|
|
3854
|
+
* that governs how many of those per-call decisions ever occur ("how much
|
|
3855
|
+
* may you do without asking?"). The two stay separate components with a
|
|
3856
|
+
* documented relationship rather than one growing a boolean "policy mode"
|
|
3857
|
+
* prop — see `.claude/rules/component-api.md` ("Avoid boolean-prop
|
|
3858
|
+
* proliferation").
|
|
3859
|
+
*
|
|
3860
|
+
* The mode vocabulary is entirely app-defined: no agent's mode names are
|
|
3861
|
+
* hardcoded in this file or in `PermissionMode`/`PermissionModeSelectProps`.
|
|
3862
|
+
* `consequence` is a REQUIRED field — a mode whose effect is unstated is
|
|
3863
|
+
* exactly the failure this component exists to prevent (three unlabelled
|
|
3864
|
+
* radio buttons).
|
|
3865
|
+
*
|
|
3866
|
+
* Built on `@elabs-ai/components-ui`'s `RadioGroup` (Radix) for roving
|
|
3867
|
+
* focus / arrow-key navigation / Space-Enter selection / announcement — this
|
|
3868
|
+
* component does not hand-roll any of that. The in-force mode is marked in
|
|
3869
|
+
* TEXT: a "Current" badge lives inside the `<Label>` associated with that
|
|
3870
|
+
* mode's radio input, so it is part of the control's accessible name and
|
|
3871
|
+
* recoverable in greyscale — never colour alone (WCAG 1.4.1).
|
|
3872
|
+
*/
|
|
3873
|
+
interface PermissionMode {
|
|
3874
|
+
id: string;
|
|
3875
|
+
label: string;
|
|
3876
|
+
/** What this mode actually permits — required, not optional. */
|
|
3877
|
+
consequence: string;
|
|
3878
|
+
keyHint?: string;
|
|
3879
|
+
}
|
|
3880
|
+
interface PermissionModeSelectProps extends ComponentProps<"div"> {
|
|
3881
|
+
modes: PermissionMode[];
|
|
3882
|
+
value?: string;
|
|
3883
|
+
defaultValue?: string;
|
|
3884
|
+
onValueChange?: (id: string) => void;
|
|
3885
|
+
/** The mode currently in force, marked distinctly from the highlighted one. */
|
|
3886
|
+
currentId?: string;
|
|
3887
|
+
}
|
|
3888
|
+
declare const PermissionModeSelect: react.ForwardRefExoticComponent<Omit<PermissionModeSelectProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
3889
|
+
|
|
3178
3890
|
/**
|
|
3179
3891
|
* Persona artwork sources — a plain data module shared by `persona.tsx` (the
|
|
3180
3892
|
* public shell) and `_persona-rive.tsx` (the lazily-loaded Rive half), so
|
|
@@ -3223,6 +3935,21 @@ declare const PERSONA_SOURCES: {
|
|
|
3223
3935
|
};
|
|
3224
3936
|
type PersonaVariant = keyof typeof PERSONA_SOURCES;
|
|
3225
3937
|
|
|
3938
|
+
/**
|
|
3939
|
+
* Owned mirror of `@rive-app/webgl2`'s `Event` (the parameter type every
|
|
3940
|
+
* `RiveParameters` callback receives) — see the module doc comment above.
|
|
3941
|
+
* `data` is deliberately widened to `unknown` rather than replicating Rive's
|
|
3942
|
+
* `RiveEventPayload`/`LoopEvent`/`RiveFile` union: no callback in this package
|
|
3943
|
+
* (or, realistically, a consumer's) narrows it, and `unknown` remains a safe,
|
|
3944
|
+
* structurally-compatible supertype of the real union for the conformance
|
|
3945
|
+
* assertion in `_persona-rive.tsx`.
|
|
3946
|
+
*/
|
|
3947
|
+
interface PersonaRiveEvent {
|
|
3948
|
+
type: string;
|
|
3949
|
+
data?: unknown;
|
|
3950
|
+
}
|
|
3951
|
+
/** Owned mirror of `@rive-app/webgl2`'s `EventCallback`. */
|
|
3952
|
+
type PersonaRiveEventCallback = (event: PersonaRiveEvent) => void;
|
|
3226
3953
|
interface PersonaProps {
|
|
3227
3954
|
className?: string;
|
|
3228
3955
|
/**
|
|
@@ -3231,12 +3958,12 @@ interface PersonaProps {
|
|
|
3231
3958
|
* so a blocked fetch never leaves an empty box.
|
|
3232
3959
|
*/
|
|
3233
3960
|
fallback?: ReactNode;
|
|
3234
|
-
onLoad?:
|
|
3235
|
-
onLoadError?:
|
|
3236
|
-
onPause?:
|
|
3237
|
-
onPlay?:
|
|
3961
|
+
onLoad?: PersonaRiveEventCallback;
|
|
3962
|
+
onLoadError?: PersonaRiveEventCallback;
|
|
3963
|
+
onPause?: PersonaRiveEventCallback;
|
|
3964
|
+
onPlay?: PersonaRiveEventCallback;
|
|
3238
3965
|
onReady?: () => void;
|
|
3239
|
-
onStop?:
|
|
3966
|
+
onStop?: PersonaRiveEventCallback;
|
|
3240
3967
|
/**
|
|
3241
3968
|
* Override the `.riv` artwork URL — point at a self-hosted copy when a CSP
|
|
3242
3969
|
* blocks the default origin. Defaults to `PERSONA_SOURCES[variant].source`.
|
|
@@ -3255,21 +3982,35 @@ interface PersonaProps {
|
|
|
3255
3982
|
}
|
|
3256
3983
|
declare const Persona: FC<PersonaProps>;
|
|
3257
3984
|
|
|
3985
|
+
/**
|
|
3986
|
+
* The plan's decision status (#108). Additive: a `Plan` rendered with no
|
|
3987
|
+
* `status` behaves exactly as before (no ARIA region, no rail, no status
|
|
3988
|
+
* line) — every prop below this point is opt-in.
|
|
3989
|
+
*/
|
|
3990
|
+
type PlanStatus = "streaming" | "awaiting" | "approved" | "changes-requested";
|
|
3258
3991
|
type PlanProps = ComponentProps<typeof Collapsible> & {
|
|
3259
3992
|
isStreaming?: boolean;
|
|
3993
|
+
/**
|
|
3994
|
+
* The plan's decision status. Omit it to keep today's display-only
|
|
3995
|
+
* behaviour. When both `status` and `isStreaming` are given, `status`
|
|
3996
|
+
* wins (a `status="approved"` plan never shimmers, even if `isStreaming`
|
|
3997
|
+
* is still `true`).
|
|
3998
|
+
*/
|
|
3999
|
+
status?: PlanStatus;
|
|
3260
4000
|
};
|
|
3261
|
-
declare const Plan: ({ className, isStreaming, children, ...props }: PlanProps) => react.JSX.Element;
|
|
4001
|
+
declare const Plan: ({ className, isStreaming, status, role, children, ...props }: PlanProps) => react.JSX.Element;
|
|
3262
4002
|
type PlanHeaderProps = ComponentProps<typeof CardHeader>;
|
|
3263
4003
|
declare const PlanHeader: ({ className, ...props }: PlanHeaderProps) => react.JSX.Element;
|
|
3264
4004
|
type PlanTitleProps = Omit<ComponentProps<typeof CardTitle>, "children"> & {
|
|
3265
4005
|
children: string;
|
|
3266
4006
|
};
|
|
3267
|
-
declare const PlanTitle: ({ children, ...props }: PlanTitleProps) => react.JSX.Element;
|
|
4007
|
+
declare const PlanTitle: ({ id, children, ...props }: PlanTitleProps) => react.JSX.Element;
|
|
3268
4008
|
type PlanDescriptionProps = Omit<ComponentProps<typeof CardDescription>, "children"> & {
|
|
3269
4009
|
children: string;
|
|
3270
4010
|
};
|
|
3271
4011
|
declare const PlanDescription: ({ className, children, ...props }: PlanDescriptionProps) => react.JSX.Element;
|
|
3272
4012
|
type PlanActionProps = ComponentProps<typeof CardAction>;
|
|
4013
|
+
/** The header's layout slot (e.g. a menu trigger) — unrelated to the decision actions below. */
|
|
3273
4014
|
declare const PlanAction: (props: PlanActionProps) => react.JSX.Element;
|
|
3274
4015
|
type PlanContentProps = ComponentProps<typeof CardContent>;
|
|
3275
4016
|
declare const PlanContent: ({ className, ...props }: PlanContentProps) => react.JSX.Element;
|
|
@@ -3277,6 +4018,29 @@ type PlanFooterProps = ComponentProps<"div">;
|
|
|
3277
4018
|
declare const PlanFooter: (props: PlanFooterProps) => react.JSX.Element;
|
|
3278
4019
|
type PlanTriggerProps = ComponentProps<typeof CollapsibleTrigger>;
|
|
3279
4020
|
declare const PlanTrigger: ({ className, ...props }: PlanTriggerProps) => react.JSX.Element;
|
|
4021
|
+
type PlanStatusLineProps = Omit<ComponentProps<typeof StatusBadge>, "status"> & {
|
|
4022
|
+
children?: ReactNode;
|
|
4023
|
+
};
|
|
4024
|
+
/**
|
|
4025
|
+
* The decision status line (#108) — text + glyph, never rail colour alone.
|
|
4026
|
+
* Renders nothing while `status` is unset or `"streaming"` (nothing has been
|
|
4027
|
+
* decided yet); shows the outcome once the plan is awaiting a decision or
|
|
4028
|
+
* settled.
|
|
4029
|
+
*/
|
|
4030
|
+
declare const PlanStatusLine: ({ className, children, ...props }: PlanStatusLineProps) => react.JSX.Element | null;
|
|
4031
|
+
type PlanDecisionActionProps = ComponentProps<typeof Button>;
|
|
4032
|
+
type PlanApproveProps = PlanDecisionActionProps;
|
|
4033
|
+
/**
|
|
4034
|
+
* The proceed action — presets the filled primary variant so the primary path
|
|
4035
|
+
* can't drift to a quieter variant (same reasoning as `ConfirmationApprove`).
|
|
4036
|
+
*/
|
|
4037
|
+
declare const PlanApprove: (props: PlanApproveProps) => react.JSX.Element;
|
|
4038
|
+
type PlanRequestChangesProps = PlanDecisionActionProps;
|
|
4039
|
+
/** Sends the plan back for revision — a quieter, non-primary action. */
|
|
4040
|
+
declare const PlanRequestChanges: (props: PlanRequestChangesProps) => react.JSX.Element;
|
|
4041
|
+
type PlanCommentProps = PlanDecisionActionProps;
|
|
4042
|
+
/** Leaves feedback without settling the decision — the quietest action. */
|
|
4043
|
+
declare const PlanComment: (props: PlanCommentProps) => react.JSX.Element;
|
|
3280
4044
|
|
|
3281
4045
|
interface QueueMessagePart {
|
|
3282
4046
|
type: string;
|
|
@@ -3490,6 +4254,85 @@ interface SelectionToolbarProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
3490
4254
|
*/
|
|
3491
4255
|
declare const SelectionToolbar: react.ForwardRefExoticComponent<SelectionToolbarProps & react.RefAttributes<HTMLDivElement>>;
|
|
3492
4256
|
|
|
4257
|
+
interface SessionHeaderProps extends ComponentProps<"div"> {
|
|
4258
|
+
/**
|
|
4259
|
+
* Session/agent name, e.g. "Codex". Anchors the card — every other section
|
|
4260
|
+
* is independently optional and renders nothing when omitted.
|
|
4261
|
+
*/
|
|
4262
|
+
title?: string;
|
|
4263
|
+
/** Active model, e.g. "gpt-5.1-codex". */
|
|
4264
|
+
model?: string;
|
|
4265
|
+
/** Working directory / project path. Truncates instead of overflowing. */
|
|
4266
|
+
workspace?: string;
|
|
4267
|
+
/** Build/version string, e.g. "v2.4.0". */
|
|
4268
|
+
version?: string;
|
|
4269
|
+
/** What this session can reach. */
|
|
4270
|
+
capabilities?: SessionCapability[];
|
|
4271
|
+
/** Recent changes, shown as a short list. */
|
|
4272
|
+
whatsNew?: SessionWhatsNewItem[];
|
|
4273
|
+
/** Shortcut actions, rendered as real buttons with optional shortcut hints. */
|
|
4274
|
+
quickActions?: SessionQuickAction[];
|
|
4275
|
+
/**
|
|
4276
|
+
* Semantic heading level for `title`. Default `2` (a session header
|
|
4277
|
+
* typically sits above a `ChatGreeting`'s level-1 headline, or inside a
|
|
4278
|
+
* page that already owns its own `<h1>`).
|
|
4279
|
+
*/
|
|
4280
|
+
level?: HeadingLevel;
|
|
4281
|
+
}
|
|
4282
|
+
/**
|
|
4283
|
+
* SessionHeader — the launch card for an empty agent session: model,
|
|
4284
|
+
* workspace, version, capabilities, what's new, and quick actions with
|
|
4285
|
+
* shortcut hints. Pair it above `ChatGreeting` (or inside `ChatShell`'s
|
|
4286
|
+
* `header` slot) for the standard first-run agent session state.
|
|
4287
|
+
*
|
|
4288
|
+
* Distinct from `ChatGreeting`, which is the centered display-scale greeting
|
|
4289
|
+
* for a general assistant chat — `SessionHeader` answers different questions
|
|
4290
|
+
* (what workspace am I in, what model, what can this thing reach, what
|
|
4291
|
+
* changed) that a greeting has no home for.
|
|
4292
|
+
*
|
|
4293
|
+
* **Every section is independently optional.** With only `title` supplied,
|
|
4294
|
+
* the card renders the identity row alone — no empty section scaffolding,
|
|
4295
|
+
* no stray separators.
|
|
4296
|
+
*/
|
|
4297
|
+
declare const SessionHeader: react.ForwardRefExoticComponent<Omit<SessionHeaderProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
4298
|
+
|
|
4299
|
+
interface SessionStatusBarConnections {
|
|
4300
|
+
/** Number of integrations/MCP servers currently connected. */
|
|
4301
|
+
connected: number;
|
|
4302
|
+
/** Total number of configured integrations/MCP servers. */
|
|
4303
|
+
total: number;
|
|
4304
|
+
/** Renders a spinner in place of the connection icon while establishing. */
|
|
4305
|
+
connecting?: boolean;
|
|
4306
|
+
}
|
|
4307
|
+
interface SessionStatusBarProps extends ComponentProps<"div"> {
|
|
4308
|
+
/** Current workspace/project name. */
|
|
4309
|
+
workspace?: string;
|
|
4310
|
+
/** Current git branch. */
|
|
4311
|
+
branch?: string;
|
|
4312
|
+
/** Active model id/label. */
|
|
4313
|
+
model?: string;
|
|
4314
|
+
/** Integration/MCP connection progress; renders a spinner while connecting. */
|
|
4315
|
+
connections?: SessionStatusBarConnections;
|
|
4316
|
+
/**
|
|
4317
|
+
* Docks another component alongside the ambient segments — most often
|
|
4318
|
+
* `<TokenUsage />` (`@elabs-ai/components-ai`), so token usage/cost keeps
|
|
4319
|
+
* its one owner (`token-usage.tsx`, tokenlens) instead of being re-implemented
|
|
4320
|
+
* here. Rendered flush to the end of the bar.
|
|
4321
|
+
*/
|
|
4322
|
+
children?: ReactNode;
|
|
4323
|
+
}
|
|
4324
|
+
/**
|
|
4325
|
+
* SessionStatusBar — the ambient session row: workspace, branch, model, and
|
|
4326
|
+
* integration-connection progress (#105). Every segment is independently
|
|
4327
|
+
* optional and renders only when its prop is supplied; with nothing supplied
|
|
4328
|
+
* the bar renders nothing at all, not an empty shell.
|
|
4329
|
+
*
|
|
4330
|
+
* Docks `Context` (or any other node) via `children` rather than
|
|
4331
|
+
* re-implementing token-usage/cost maths — `context.tsx` stays the one owner
|
|
4332
|
+
* of that calculation (tokenlens).
|
|
4333
|
+
*/
|
|
4334
|
+
declare const SessionStatusBar: react.ForwardRefExoticComponent<Omit<SessionStatusBarProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
4335
|
+
|
|
3493
4336
|
interface TextShimmerProps {
|
|
3494
4337
|
children: string;
|
|
3495
4338
|
as?: ElementType;
|
|
@@ -3618,7 +4461,7 @@ type StackTraceCopyButtonProps = ComponentProps<typeof Button> & {
|
|
|
3618
4461
|
onError?: (error: Error) => void;
|
|
3619
4462
|
timeout?: number;
|
|
3620
4463
|
};
|
|
3621
|
-
declare const StackTraceCopyButton: react.MemoExoticComponent<({ onCopy, onError, timeout, className, children, ...props }: StackTraceCopyButtonProps) => react.JSX.Element>;
|
|
4464
|
+
declare const StackTraceCopyButton: react.MemoExoticComponent<({ onCopy, onError, timeout, className, children, "aria-label": ariaLabel, ...props }: StackTraceCopyButtonProps) => react.JSX.Element>;
|
|
3622
4465
|
type StackTraceExpandButtonProps = ComponentProps<"div">;
|
|
3623
4466
|
declare const StackTraceExpandButton: react.MemoExoticComponent<({ className, ...props }: StackTraceExpandButtonProps) => react.JSX.Element>;
|
|
3624
4467
|
type StackTraceContentProps = ComponentProps<typeof CollapsibleContent> & {
|
|
@@ -3691,32 +4534,6 @@ declare const TaskTrigger: ({ children, className, title, ...props }: TaskTrigge
|
|
|
3691
4534
|
type TaskContentProps = ComponentProps<typeof CollapsibleContent>;
|
|
3692
4535
|
declare const TaskContent: ({ children, className, ...props }: TaskContentProps) => react.JSX.Element;
|
|
3693
4536
|
|
|
3694
|
-
type TerminalHeaderProps = HTMLAttributes<HTMLDivElement>;
|
|
3695
|
-
declare const TerminalHeader: ({ className, children, ...props }: TerminalHeaderProps) => react.JSX.Element;
|
|
3696
|
-
type TerminalTitleProps = HTMLAttributes<HTMLDivElement>;
|
|
3697
|
-
declare const TerminalTitle: ({ className, children, ...props }: TerminalTitleProps) => react.JSX.Element;
|
|
3698
|
-
type TerminalStatusProps = HTMLAttributes<HTMLDivElement>;
|
|
3699
|
-
declare const TerminalStatus: ({ className, children, ...props }: TerminalStatusProps) => react.JSX.Element | null;
|
|
3700
|
-
type TerminalActionsProps = HTMLAttributes<HTMLDivElement>;
|
|
3701
|
-
declare const TerminalActions: ({ className, children, ...props }: TerminalActionsProps) => react.JSX.Element;
|
|
3702
|
-
type TerminalCopyButtonProps = ComponentProps<typeof Button> & {
|
|
3703
|
-
onCopy?: () => void;
|
|
3704
|
-
onError?: (error: Error) => void;
|
|
3705
|
-
timeout?: number;
|
|
3706
|
-
};
|
|
3707
|
-
declare const TerminalCopyButton: ({ onCopy, onError, timeout, children, className, ...props }: TerminalCopyButtonProps) => react.JSX.Element;
|
|
3708
|
-
type TerminalClearButtonProps = ComponentProps<typeof Button>;
|
|
3709
|
-
declare const TerminalClearButton: ({ children, className, ...props }: TerminalClearButtonProps) => react.JSX.Element | null;
|
|
3710
|
-
type TerminalContentProps = HTMLAttributes<HTMLDivElement>;
|
|
3711
|
-
declare const TerminalContent: ({ className, children, ...props }: TerminalContentProps) => react.JSX.Element;
|
|
3712
|
-
type TerminalProps = HTMLAttributes<HTMLDivElement> & {
|
|
3713
|
-
output: string;
|
|
3714
|
-
isStreaming?: boolean;
|
|
3715
|
-
autoScroll?: boolean;
|
|
3716
|
-
onClear?: () => void;
|
|
3717
|
-
};
|
|
3718
|
-
declare const Terminal: ({ output, isStreaming, autoScroll, onClear, className, children, ...props }: TerminalProps) => react.JSX.Element;
|
|
3719
|
-
|
|
3720
4537
|
type TestResultsHeaderProps = HTMLAttributes<HTMLDivElement>;
|
|
3721
4538
|
declare const TestResultsHeader: ({ className, children, ...props }: TestResultsHeaderProps) => react.JSX.Element;
|
|
3722
4539
|
type TestResultsDurationProps = HTMLAttributes<HTMLSpanElement>;
|
|
@@ -3801,6 +4618,34 @@ declare const TestErrorMessage: ({ className, children, ...props }: TestErrorMes
|
|
|
3801
4618
|
type TestErrorStackProps = HTMLAttributes<HTMLPreElement>;
|
|
3802
4619
|
declare const TestErrorStack: ({ className, children, ...props }: TestErrorStackProps) => react.JSX.Element;
|
|
3803
4620
|
|
|
4621
|
+
type ModelId = string;
|
|
4622
|
+
interface TokenUsageSchema {
|
|
4623
|
+
usedTokens: number;
|
|
4624
|
+
maxTokens: number;
|
|
4625
|
+
usage?: LanguageModelUsage;
|
|
4626
|
+
modelId?: ModelId;
|
|
4627
|
+
}
|
|
4628
|
+
type TokenUsageProps = ComponentProps<typeof HoverCard> & TokenUsageSchema;
|
|
4629
|
+
declare const TokenUsage: ({ usedTokens, maxTokens, usage, modelId, ...props }: TokenUsageProps) => react.JSX.Element;
|
|
4630
|
+
type TokenUsageTriggerProps = ComponentProps<typeof Button>;
|
|
4631
|
+
declare const TokenUsageTrigger: ({ children, ...props }: TokenUsageTriggerProps) => react.JSX.Element;
|
|
4632
|
+
type TokenUsageContentProps = ComponentProps<typeof HoverCardContent>;
|
|
4633
|
+
declare const TokenUsageContent: ({ className, ...props }: TokenUsageContentProps) => react.JSX.Element;
|
|
4634
|
+
type TokenUsageContentHeaderProps = ComponentProps<"div">;
|
|
4635
|
+
declare const TokenUsageContentHeader: ({ children, className, ...props }: TokenUsageContentHeaderProps) => react.JSX.Element;
|
|
4636
|
+
type TokenUsageContentBodyProps = ComponentProps<"div">;
|
|
4637
|
+
declare const TokenUsageContentBody: ({ children, className, ...props }: TokenUsageContentBodyProps) => react.JSX.Element;
|
|
4638
|
+
type TokenUsageContentFooterProps = ComponentProps<"div">;
|
|
4639
|
+
declare const TokenUsageContentFooter: ({ children, className, ...props }: TokenUsageContentFooterProps) => react.JSX.Element;
|
|
4640
|
+
type TokenUsageInputProps = ComponentProps<"div">;
|
|
4641
|
+
declare const TokenUsageInput: ({ className, children, ...props }: TokenUsageInputProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
4642
|
+
type TokenUsageOutputProps = ComponentProps<"div">;
|
|
4643
|
+
declare const TokenUsageOutput: ({ className, children, ...props }: TokenUsageOutputProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
4644
|
+
type TokenUsageReasoningProps = ComponentProps<"div">;
|
|
4645
|
+
declare const TokenUsageReasoning: ({ className, children, ...props }: TokenUsageReasoningProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
4646
|
+
type TokenUsageCacheProps = ComponentProps<"div">;
|
|
4647
|
+
declare const TokenUsageCache: ({ className, children, ...props }: TokenUsageCacheProps) => string | number | bigint | true | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
4648
|
+
|
|
3804
4649
|
type ToolProps = ComponentProps<typeof Collapsible>;
|
|
3805
4650
|
declare const Tool: ({ className, ...props }: ToolProps) => react.JSX.Element;
|
|
3806
4651
|
type ToolPart = ToolUIPart | DynamicToolUIPart;
|
|
@@ -3939,6 +4784,86 @@ type TranscriptionSegmentProps = ComponentProps<"button"> & {
|
|
|
3939
4784
|
type TranscriptionSegment = Experimental_TranscriptionResult["segments"][number];
|
|
3940
4785
|
declare const TranscriptionSegment: ({ segment, index, className, onClick, ...props }: TranscriptionSegmentProps) => react.JSX.Element;
|
|
3941
4786
|
|
|
4787
|
+
interface TurnStatusTokens {
|
|
4788
|
+
input?: number;
|
|
4789
|
+
output?: number;
|
|
4790
|
+
}
|
|
4791
|
+
interface TurnStatusProps extends Omit<ComponentProps<"div">, "children"> {
|
|
4792
|
+
/**
|
|
4793
|
+
* What the turn is doing right now, e.g. `"Working…"`, `"Editing files…"`.
|
|
4794
|
+
* Caller-supplied and rendered verbatim — `TurnStatus` never invents this
|
|
4795
|
+
* text, so it carries no default and needs no translation key of its own.
|
|
4796
|
+
*/
|
|
4797
|
+
label?: string;
|
|
4798
|
+
/** Elapsed time in the current turn, in milliseconds. Rendered via `formatElapsed`. */
|
|
4799
|
+
elapsedMs?: number;
|
|
4800
|
+
/** Token counts for the turn so far. */
|
|
4801
|
+
tokens?: TurnStatusTokens;
|
|
4802
|
+
/** 1-based index of the current turn. */
|
|
4803
|
+
turn?: number;
|
|
4804
|
+
/** Total number of turns, when known. */
|
|
4805
|
+
turnTotal?: number;
|
|
4806
|
+
/**
|
|
4807
|
+
* `"working"` (default) renders the live stats + stop control and keeps
|
|
4808
|
+
* announcing `label` changes. `"settled"` renders the completed-turn line
|
|
4809
|
+
* instead and stops announcing (the elapsed/tokens/turn stats and the stop
|
|
4810
|
+
* control are hidden — the turn is over).
|
|
4811
|
+
*/
|
|
4812
|
+
status?: "working" | "settled";
|
|
4813
|
+
/** Renders a focusable stop button, reachable by keyboard, while `status="working"`. */
|
|
4814
|
+
onStop?: () => void;
|
|
4815
|
+
/** Renders a "scroll to bottom" affordance. */
|
|
4816
|
+
showScrollToBottom?: boolean;
|
|
4817
|
+
onScrollToBottom?: () => void;
|
|
4818
|
+
}
|
|
4819
|
+
/**
|
|
4820
|
+
* TurnStatus — the in-turn footer: a working/settled label, elapsed time,
|
|
4821
|
+
* token counts, turn progress, and a stop affordance, all in one place (#105).
|
|
4822
|
+
*
|
|
4823
|
+
* Exactly ONE `role="status" aria-live="polite"` region is rendered — a
|
|
4824
|
+
* visually-hidden node that announces `label` while working and the
|
|
4825
|
+
* completed-turn line once `status="settled"`. The ticking elapsed time and
|
|
4826
|
+
* token/turn counts are plain (non-live) visible text: they update every
|
|
4827
|
+
* render without re-announcing on every tick, which would flood assistive
|
|
4828
|
+
* tech (see `.claude/rules/loading-states.md`). This mirrors `Persona`'s
|
|
4829
|
+
* visible-content/`sr-only`-announcement split.
|
|
4830
|
+
*/
|
|
4831
|
+
declare const TurnStatus: react.ForwardRefExoticComponent<Omit<TurnStatusProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
4832
|
+
|
|
4833
|
+
/**
|
|
4834
|
+
* The OPT-IN analyser-plumbing hook for `AudioVisualizer` (issue #21). It is a
|
|
4835
|
+
* separate export a consumer may ignore entirely — `AudioVisualizer` itself
|
|
4836
|
+
* never imports or calls this. brand-ui is a presentation layer (D5): this
|
|
4837
|
+
* hook never calls `getUserMedia` and never creates an `AudioContext` until a
|
|
4838
|
+
* `MediaStream` the CONSUMER already obtained is actually passed in.
|
|
4839
|
+
*/
|
|
4840
|
+
interface UseAudioLevelOptions {
|
|
4841
|
+
/** `AnalyserNode.fftSize` — controls how many frequency bins `levels` has
|
|
4842
|
+
* (`fftSize / 2`). Must be a power of two in [32, 32768]. */
|
|
4843
|
+
fftSize?: number;
|
|
4844
|
+
/** `AnalyserNode.smoothingTimeConstant` (0–1) — the analyser's OWN frame-to-frame
|
|
4845
|
+
* smoothing, independent of `AudioVisualizer`'s reduced-motion smoothing. */
|
|
4846
|
+
smoothingTimeConstant?: number;
|
|
4847
|
+
}
|
|
4848
|
+
interface UseAudioLevelResult {
|
|
4849
|
+
/** Normalized 0–1 frequency-bin samples for the current frame — feed this
|
|
4850
|
+
* directly to `<AudioVisualizer levels={levels} />`. Empty while `stream`
|
|
4851
|
+
* is `null`/`undefined` or the Web Audio API is unavailable. */
|
|
4852
|
+
levels: number[];
|
|
4853
|
+
/** The mean of `levels` — a single 0–1 scalar for a simple level meter. */
|
|
4854
|
+
level: number;
|
|
4855
|
+
}
|
|
4856
|
+
/**
|
|
4857
|
+
* Polls a `MediaStream` the caller already obtained (their own `getUserMedia`
|
|
4858
|
+
* call — this hook never requests one) via a Web Audio `AnalyserNode`, on a
|
|
4859
|
+
* `requestAnimationFrame` loop, and returns normalized levels.
|
|
4860
|
+
*
|
|
4861
|
+
* Pass `null`/`undefined` for `stream` (e.g. before the user grants mic
|
|
4862
|
+
* permission) and the hook is a no-op returning empty levels — safe to call
|
|
4863
|
+
* unconditionally, including with no stream ever provided at all.
|
|
4864
|
+
*/
|
|
4865
|
+
declare function useAudioLevel(stream: MediaStream | null | undefined, options?: UseAudioLevelOptions): UseAudioLevelResult;
|
|
4866
|
+
|
|
3942
4867
|
interface VoiceSelectorContextValue {
|
|
3943
4868
|
value: string | undefined;
|
|
3944
4869
|
setValue: (value: string | undefined) => void;
|
|
@@ -4030,8 +4955,17 @@ type WebPreviewBodyProps = Omit<ComponentProps<"iframe">, "loading"> & {
|
|
|
4030
4955
|
* @default false
|
|
4031
4956
|
*/
|
|
4032
4957
|
loading?: boolean | ReactNode;
|
|
4958
|
+
/**
|
|
4959
|
+
* Adds `allow-same-origin` to the iframe sandbox. **Opt-in, off by
|
|
4960
|
+
* default**: combined with `allow-scripts`, a same-origin previewed page
|
|
4961
|
+
* can script its way out of the sandbox restrictions entirely (its own
|
|
4962
|
+
* `<iframe>` reads as unsandboxed once it shares the origin). Only enable
|
|
4963
|
+
* this for content you trust to be same-origin-safe.
|
|
4964
|
+
* @default false
|
|
4965
|
+
*/
|
|
4966
|
+
allowSameOrigin?: boolean;
|
|
4033
4967
|
};
|
|
4034
|
-
declare const WebPreviewBody: ({ className, loading, src, ...props }: WebPreviewBodyProps) => react.JSX.Element;
|
|
4968
|
+
declare const WebPreviewBody: ({ className, loading, src, allowSameOrigin, ...props }: WebPreviewBodyProps) => react.JSX.Element;
|
|
4035
4969
|
type WebPreviewConsoleProps = ComponentProps<"div"> & {
|
|
4036
4970
|
logs?: {
|
|
4037
4971
|
level: "log" | "warn" | "error";
|
|
@@ -4076,4 +5010,4 @@ interface ChatShellProps {
|
|
|
4076
5010
|
*/
|
|
4077
5011
|
declare function ChatShell({ children, composer, header, aside, variant, className, }: ChatShellProps): react.JSX.Element;
|
|
4078
5012
|
|
|
4079
|
-
export { Agent, AgentContent, type AgentContentProps, AgentHeader, type AgentHeaderProps, AgentInstructions, type AgentInstructionsProps, AgentMessage, type AgentMessageEmphasis, type AgentMessageProps, AgentOutput, type AgentOutputProps, type AgentProps, AgentStep, type AgentStepProps, AgentTimeline, type AgentTimelineProps, AgentTool, type AgentToolProps, AgentTools, type AgentToolsProps, ApprovalCard, ApprovalCardAccepted, type ApprovalCardAcceptedProps, ApprovalCardAction, type ApprovalCardActionProps, ApprovalCardActions, type ApprovalCardActionsProps, ApprovalCardApprove, type ApprovalCardApproveProps, ApprovalCardDeny, type ApprovalCardDenyProps, ApprovalCardDescription, type ApprovalCardDescriptionProps, type ApprovalCardProps, ApprovalCardRejected, type ApprovalCardRejectedProps, ApprovalCardRequest, type ApprovalCardRequestProps, ApprovalCardTitle, type ApprovalCardTitleProps, Artifact, ArtifactAction, type ArtifactActionProps, ArtifactActions, type ArtifactActionsProps, ArtifactClose, type ArtifactCloseProps, ArtifactContent, type ArtifactContentProps, ArtifactDescription, type ArtifactDescriptionProps, ArtifactHeader, type ArtifactHeaderProps, type ArtifactProps, ArtifactTitle, type ArtifactTitleProps, AssetPreview, type AssetPreviewMode, type AssetPreviewProps, type AssetPreviewRenderer, Attachment, type AttachmentData, AttachmentEmpty, type AttachmentEmptyProps, AttachmentHoverCard, AttachmentHoverCardContent, type AttachmentHoverCardContentProps, type AttachmentHoverCardProps, AttachmentHoverCardTrigger, type AttachmentHoverCardTriggerProps, AttachmentInfo, type AttachmentInfoProps, type AttachmentMediaCategory, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, type AttachmentVariant, Attachments, type AttachmentsContext, type AttachmentsProps, AudioPlayer, AudioPlayerControlBar, type AudioPlayerControlBarProps, AudioPlayerDurationDisplay, type AudioPlayerDurationDisplayProps, AudioPlayerElement, type AudioPlayerElementProps, AudioPlayerMuteButton, type AudioPlayerMuteButtonProps, AudioPlayerPlayButton, type AudioPlayerPlayButtonProps, type AudioPlayerProps, AudioPlayerSeekBackwardButton, type AudioPlayerSeekBackwardButtonProps, AudioPlayerSeekForwardButton, type AudioPlayerSeekForwardButtonProps, AudioPlayerTimeDisplay, type AudioPlayerTimeDisplayProps, AudioPlayerTimeRange, type AudioPlayerTimeRangeProps, AudioPlayerVolumeRange, type AudioPlayerVolumeRangeProps, type BadgeTone, type BooleanFieldSpec, BrandMotionConfig, type BrandMotionConfigProps, Canvas, type CanvasProps, type CellFormat, ChainOfThought, ChainOfThoughtContent, type ChainOfThoughtContentProps, ChainOfThoughtHeader, type ChainOfThoughtHeaderProps, ChainOfThoughtImage, type ChainOfThoughtImageProps, type ChainOfThoughtProps, ChainOfThoughtSearchResult, type ChainOfThoughtSearchResultProps, ChainOfThoughtSearchResults, type ChainOfThoughtSearchResultsProps, ChainOfThoughtStep, type ChainOfThoughtStepProps, ChatGreeting, type ChatGreetingProps, ChatShell, type ChatShellProps, Checkpoint, CheckpointIcon, type CheckpointIconProps, type CheckpointProps, CheckpointTrigger, type CheckpointTriggerProps, CodeBlock, CodeBlockActions, CodeBlockContainer, CodeBlockContent, CodeBlockCopyButton, type CodeBlockCopyButtonProps, CodeBlockFilename, CodeBlockHeader, CodeBlockLanguageSelector, CodeBlockLanguageSelectorContent, type CodeBlockLanguageSelectorContentProps, CodeBlockLanguageSelectorItem, type CodeBlockLanguageSelectorItemProps, type CodeBlockLanguageSelectorProps, CodeBlockLanguageSelectorTrigger, type CodeBlockLanguageSelectorTriggerProps, CodeBlockLanguageSelectorValue, type CodeBlockLanguageSelectorValueProps, type CodeBlockProps, CodeBlockTitle, type ColumnSpec, Commit, CommitActions, type CommitActionsProps, CommitAuthor, CommitAuthorAvatar, type CommitAuthorAvatarProps, type CommitAuthorProps, CommitContent, type CommitContentProps, CommitCopyButton, type CommitCopyButtonProps, CommitFile, CommitFileAdditions, type CommitFileAdditionsProps, CommitFileChanges, type CommitFileChangesProps, CommitFileDeletions, type CommitFileDeletionsProps, CommitFileIcon, type CommitFileIconProps, CommitFileInfo, type CommitFileInfoProps, CommitFilePath, type CommitFilePathProps, type CommitFileProps, CommitFileStatus, type CommitFileStatusProps, CommitFiles, type CommitFilesProps, CommitHash, type CommitHashProps, CommitHeader, type CommitHeaderProps, CommitInfo, type CommitInfoProps, CommitMessage, type CommitMessageProps, CommitMetadata, type CommitMetadataProps, type CommitProps, CommitSeparator, type CommitSeparatorProps, CommitTimestamp, type CommitTimestampProps, Composer, type ComposerProps, Confirmation, ConfirmationAccepted, type ConfirmationAcceptedProps, ConfirmationAction, type ConfirmationActionProps, ConfirmationActions, type ConfirmationActionsProps, ConfirmationApprove, type ConfirmationApproveProps, ConfirmationDeny, type ConfirmationDenyProps, ConfirmationDescription, type ConfirmationDescriptionProps, type ConfirmationProps, ConfirmationRejected, type ConfirmationRejectedProps, ConfirmationRequest, type ConfirmationRequestProps, ConfirmationTitle, type ConfirmationTitleProps, Connection, Context, type ContextAsset, type ContextAssetType, ContextCacheUsage, type ContextCacheUsageProps, ContextContent, ContextContentBody, type ContextContentBodyProps, ContextContentFooter, type ContextContentFooterProps, ContextContentHeader, type ContextContentHeaderProps, type ContextContentProps, ContextInputUsage, type ContextInputUsageProps, ContextOutputUsage, type ContextOutputUsageProps, ContextPanel, ContextPanelBody, type ContextPanelBodyProps, type ContextPanelContextValue, ContextPanelDetail, type ContextPanelDetailProps, ContextPanelHeader, type ContextPanelHeaderProps, type ContextPanelProps, ContextPanelProvider, type ContextPanelProviderProps, ContextPanelSection, type ContextPanelSectionProps, ContextPanelTrigger, type ContextPanelTriggerProps, type ContextPanelView, type ContextProps, ContextReasoningUsage, type ContextReasoningUsageProps, ContextTrigger, type ContextTriggerProps, Controls, type ControlsProps, Conversation, ConversationContent, type ConversationContentProps, ConversationDownload, type ConversationDownloadProps, ConversationEmptyState, type ConversationEmptyStateProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, EMPTY_CELL, Edge, type EnumFieldSpec, type EnumOption, EnvironmentVariable, EnvironmentVariableCopyButton, type EnvironmentVariableCopyButtonProps, EnvironmentVariableGroup, type EnvironmentVariableGroupProps, EnvironmentVariableName, type EnvironmentVariableNameProps, type EnvironmentVariableProps, EnvironmentVariableRequired, type EnvironmentVariableRequiredProps, EnvironmentVariableValue, type EnvironmentVariableValueProps, EnvironmentVariables, EnvironmentVariablesContent, type EnvironmentVariablesContentProps, EnvironmentVariablesHeader, type EnvironmentVariablesHeaderProps, type EnvironmentVariablesProps, EnvironmentVariablesTitle, type EnvironmentVariablesTitleProps, EnvironmentVariablesToggle, type EnvironmentVariablesToggleProps, EvidenceChip, type EvidenceChipProps, type FeedbackType, type FieldSpec, FileTree, FileTreeActions, type FileTreeActionsProps, FileTreeFile, type FileTreeFileProps, FileTreeFolder, type FileTreeFolderProps, FileTreeIcon, type FileTreeIconProps, FileTreeName, type FileTreeNameProps, type FileTreeProps, type FileTreeVariant, type FormSpec, type FormSubmitState, type FormValue, type FormValues, Gallery, type GalleryImage, type GalleryMetaItem, type GalleryProps, type GetPartStatus, type GroupBy, type GroupByContext, type GroupKey, type GroupPartByTypeOptions, type GroupStatus, type GroupablePart, type GroupedNode, type GroupedPartRenderArgs, type GroupedPartRenderer, GroupedParts, type GroupedPartsProps, Image, type ImageProps, InlineCitation, InlineCitationCard, InlineCitationCardBody, type InlineCitationCardBodyProps, type InlineCitationCardProps, InlineCitationCardTrigger, type InlineCitationCardTriggerProps, InlineCitationCarousel, InlineCitationCarouselContent, type InlineCitationCarouselContentProps, InlineCitationCarouselHeader, type InlineCitationCarouselHeaderProps, InlineCitationCarouselIndex, type InlineCitationCarouselIndexProps, InlineCitationCarouselItem, type InlineCitationCarouselItemProps, InlineCitationCarouselNext, type InlineCitationCarouselNextProps, InlineCitationCarouselPrev, type InlineCitationCarouselPrevProps, type InlineCitationCarouselProps, type InlineCitationProps, InlineCitationQuote, type InlineCitationQuoteProps, InlineCitationSource, type InlineCitationSourceProps, type InlineCitationSourceRef, InlineCitationText, type InlineCitationTextProps, type IntegerFieldSpec, InteractiveTerminal, type InteractiveTerminalHandle, type InteractiveTerminalProps, JSXPreview, JSXPreviewContent, type JSXPreviewContentProps, JSXPreviewError, type JSXPreviewErrorProps, type JSXPreviewProps, JSXPreviewSkeleton, type JSXPreviewSkeletonProps, type JSXPreviewStatus, LocalReferencedSourcesContext, MODEL_SELECTOR_LOGO_BASE_URL, MarkdownView, type MarkdownViewProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageBranch, MessageBranchContent, type MessageBranchContentProps, MessageBranchNext, type MessageBranchNextProps, MessageBranchPage, type MessageBranchPageProps, MessageBranchPrevious, type MessageBranchPreviousProps, type MessageBranchProps, MessageBranchSelector, type MessageBranchSelectorProps, MessageContent, type MessageContentProps, MessageEdit, MessageEditContent, type MessageEditContentProps, MessageEditForm, type MessageEditFormProps, type MessageEditProps, MessageEditProvider, type MessageEditProviderProps, MessageEditTrigger, type MessageEditTriggerProps, MessageFeedback, type MessageFeedbackProps, MessageForm, MessageFormDescription, type MessageFormDescriptionProps, MessageFormFallback, type MessageFormFallbackProps, MessageFormField, type MessageFormFieldProps, MessageFormFields, type MessageFormFieldsProps, type MessageFormProps, MessageFormProvider, type MessageFormProviderProps, MessageFormRoot, type MessageFormRootProps, MessageFormSubmit, type MessageFormSubmitProps, MessageFormTitle, type MessageFormTitleProps, MessageHeader, type MessageHeaderProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageTable, MessageTableFallback, type MessageTableFallbackProps, type MessageTableProps, MessageToolbar, type MessageToolbarProps, MicSelector, MicSelectorContent, type MicSelectorContentProps, MicSelectorEmpty, type MicSelectorEmptyProps, MicSelectorInput, type MicSelectorInputProps, MicSelectorItem, type MicSelectorItemProps, MicSelectorLabel, type MicSelectorLabelProps, MicSelectorList, type MicSelectorListProps, type MicSelectorProps, MicSelectorTrigger, type MicSelectorTriggerProps, MicSelectorValue, type MicSelectorValueProps, ModelSelector, ModelSelectorContent, type ModelSelectorContentProps, ModelSelectorDialog, type ModelSelectorDialogProps, ModelSelectorEmpty, type ModelSelectorEmptyProps, ModelSelectorGroup, type ModelSelectorGroupProps, ModelSelectorInput, type ModelSelectorInputProps, ModelSelectorItem, type ModelSelectorItemProps, ModelSelectorList, type ModelSelectorListProps, ModelSelectorLogo, ModelSelectorLogoGroup, type ModelSelectorLogoGroupProps, type ModelSelectorLogoProps, ModelSelectorName, type ModelSelectorNameProps, type ModelSelectorProps, ModelSelectorSeparator, type ModelSelectorSeparatorProps, ModelSelectorShortcut, type ModelSelectorShortcutProps, ModelSelectorTrigger, type ModelSelectorTriggerProps, type MultiEnumFieldSpec, Node, NodeAction, type NodeActionProps, NodeContent, type NodeContentProps, NodeDescription, type NodeDescriptionProps, NodeFooter, type NodeFooterProps, NodeHeader, type NodeHeaderProps, type NodeProps, NodeTitle, type NodeTitleProps, NodeToolbar, type NodeToolbarProps, type NormalizedFormSpec, type NormalizedTableSpec, type NumberFieldSpec, OpenIn, OpenInChatGPT, type OpenInChatGPTProps, OpenInClaude, type OpenInClaudeProps, OpenInContent, type OpenInContentProps, OpenInCursor, type OpenInCursorProps, OpenInItem, type OpenInItemProps, OpenInLabel, type OpenInLabelProps, type OpenInProps, OpenInScira, type OpenInSciraProps, OpenInSeparator, type OpenInSeparatorProps, OpenInT3, type OpenInT3Props, OpenInTrigger, type OpenInTriggerProps, OpenInv0, type OpenInv0Props, PERSONA_SOURCES, PRODUCED_ASSET_ICONS, PackageInfo, PackageInfoChangeType, type PackageInfoChangeTypeProps, PackageInfoContent, type PackageInfoContentProps, PackageInfoDependencies, type PackageInfoDependenciesProps, PackageInfoDependency, type PackageInfoDependencyProps, PackageInfoDescription, type PackageInfoDescriptionProps, PackageInfoHeader, type PackageInfoHeaderProps, PackageInfoName, type PackageInfoNameProps, type PackageInfoProps, PackageInfoVersion, type PackageInfoVersionProps, Panel, type PanelProps, type PartDisplay, type PartGroupNode, Persona, type PersonaProps, type PersonaState, type PersonaVariant, Plan, PlanAction, type PlanActionProps, PlanContent, type PlanContentProps, PlanDescription, type PlanDescriptionProps, PlanFooter, type PlanFooterProps, PlanHeader, type PlanHeaderProps, type PlanProps, PlanTitle, type PlanTitleProps, PlanTrigger, type PlanTriggerProps, ProducedAssetTree, type ProducedAssetTreeProps, PromptInput, PromptInputActionAddAttachments, type PromptInputActionAddAttachmentsProps, PromptInputActionAddScreenshot, type PromptInputActionAddScreenshotProps, PromptInputActionMenu, PromptInputActionMenuContent, type PromptInputActionMenuContentProps, PromptInputActionMenuItem, type PromptInputActionMenuItemProps, type PromptInputActionMenuProps, PromptInputActionMenuTrigger, type PromptInputActionMenuTriggerProps, PromptInputBody, type PromptInputBodyProps, PromptInputButton, type PromptInputButtonProps, type PromptInputButtonTooltip, PromptInputCommand, PromptInputCommandEmpty, type PromptInputCommandEmptyProps, PromptInputCommandGroup, type PromptInputCommandGroupProps, PromptInputCommandInput, type PromptInputCommandInputProps, PromptInputCommandItem, type PromptInputCommandItemProps, PromptInputCommandList, type PromptInputCommandListProps, type PromptInputCommandProps, PromptInputCommandSeparator, type PromptInputCommandSeparatorProps, type PromptInputControllerProps, PromptInputFooter, type PromptInputFooterProps, PromptInputHeader, type PromptInputHeaderProps, PromptInputHoverCard, PromptInputHoverCardContent, type PromptInputHoverCardContentProps, type PromptInputHoverCardProps, PromptInputHoverCardTrigger, type PromptInputHoverCardTriggerProps, type PromptInputMessage, type PromptInputProps, PromptInputProvider, type PromptInputProviderProps, PromptInputSelect, PromptInputSelectContent, type PromptInputSelectContentProps, PromptInputSelectItem, type PromptInputSelectItemProps, type PromptInputSelectProps, PromptInputSelectTrigger, type PromptInputSelectTriggerProps, PromptInputSelectValue, type PromptInputSelectValueProps, PromptInputStop, type PromptInputStopProps, PromptInputSubmit, type PromptInputSubmitAction, type PromptInputSubmitProps, PromptInputTab, PromptInputTabBody, type PromptInputTabBodyProps, PromptInputTabItem, type PromptInputTabItemProps, PromptInputTabLabel, type PromptInputTabLabelProps, type PromptInputTabProps, PromptInputTabsList, type PromptInputTabsListProps, PromptInputTextarea, type PromptInputTextareaProps, PromptInputTools, type PromptInputToolsProps, Queue, QueueItem, QueueItemAction, type QueueItemActionProps, QueueItemActions, type QueueItemActionsProps, QueueItemAttachment, type QueueItemAttachmentProps, QueueItemContent, type QueueItemContentProps, QueueItemDescription, type QueueItemDescriptionProps, QueueItemFile, type QueueItemFileProps, QueueItemImage, type QueueItemImageProps, QueueItemIndicator, type QueueItemIndicatorProps, type QueueItemProps, QueueList, type QueueListProps, type QueueMessage, type QueueMessagePart, type QueueProps, QueueSection, QueueSectionContent, type QueueSectionContentProps, QueueSectionLabel, type QueueSectionLabelProps, type QueueSectionProps, QueueSectionTrigger, type QueueSectionTriggerProps, type QueueTodo, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, type ReferencedSourcesContext, type RenderCell, Sandbox, SandboxContent, type SandboxContentProps, SandboxHeader, type SandboxHeaderProps, type SandboxProps, type SandboxRootProps, SandboxTabContent, type SandboxTabContentProps, SandboxTabs, SandboxTabsBar, type SandboxTabsBarProps, SandboxTabsList, type SandboxTabsListProps, type SandboxTabsProps, SandboxTabsTrigger, type SandboxTabsTriggerProps, SchemaDisplay, SchemaDisplayBody, type SchemaDisplayBodyProps, SchemaDisplayContent, type SchemaDisplayContentProps, SchemaDisplayDescription, type SchemaDisplayDescriptionProps, SchemaDisplayExample, type SchemaDisplayExampleProps, SchemaDisplayHeader, type SchemaDisplayHeaderProps, SchemaDisplayMethod, type SchemaDisplayMethodProps, SchemaDisplayParameter, type SchemaDisplayParameterProps, SchemaDisplayParameters, type SchemaDisplayParametersProps, SchemaDisplayPath, type SchemaDisplayPathProps, SchemaDisplayProperty, type SchemaDisplayPropertyProps, type SchemaDisplayProps, SchemaDisplayRequest, type SchemaDisplayRequestProps, SchemaDisplayResponse, type SchemaDisplayResponseProps, type SelectionSnapshot, SelectionToolbar, type SelectionToolbarProps, Shimmer, Snippet, SnippetAddon, type SnippetAddonProps, SnippetCopyButton, type SnippetCopyButtonProps, SnippetInput, type SnippetInputProps, type SnippetProps, SnippetText, type SnippetTextProps, Source, SourceList, type SourceListItem, type SourceListProps, type SourceProps, Sources, SourcesContent, type SourcesContentProps, type SourcesProps, SourcesTrigger, type SourcesTriggerProps, SpeechInput, type SpeechInputProps, StackTrace, StackTraceActions, type StackTraceActionsProps, StackTraceContent, type StackTraceContentProps, StackTraceCopyButton, type StackTraceCopyButtonProps, StackTraceError, StackTraceErrorMessage, type StackTraceErrorMessageProps, type StackTraceErrorProps, StackTraceErrorType, type StackTraceErrorTypeProps, StackTraceExpandButton, type StackTraceExpandButtonProps, StackTraceFrames, type StackTraceFramesProps, StackTraceHeader, type StackTraceHeaderProps, type StackTraceProps, StreamingSuggestions, type StreamingSuggestionsProps, type StringFieldSpec, Suggestion, SuggestionLoading, type SuggestionLoadingProps, type SuggestionProps, Suggestions, type SuggestionsProps, type TableRowData, type TableSort, type TableSpec, Task, TaskContent, type TaskContentProps, TaskItem, TaskItemFile, type TaskItemFileProps, type TaskItemProps, type TaskProps, TaskTrigger, type TaskTriggerProps, Terminal, TerminalActions, type TerminalActionsProps, TerminalClearButton, type TerminalClearButtonProps, TerminalContent, type TerminalContentProps, TerminalCopyButton, type TerminalCopyButtonProps, TerminalHeader, type TerminalHeaderProps, type TerminalProps, TerminalStatus, type TerminalStatusProps, TerminalTitle, type TerminalTitleProps, Test, TestDuration, type TestDurationProps, TestError, TestErrorMessage, type TestErrorMessageProps, type TestErrorProps, TestErrorStack, type TestErrorStackProps, TestName, type TestNameProps, type TestProps, TestResults, TestResultsContent, type TestResultsContentProps, TestResultsDuration, type TestResultsDurationProps, TestResultsHeader, type TestResultsHeaderProps, TestResultsMeta, type TestResultsMetaProps, TestResultsProgress, type TestResultsProgressProps, type TestResultsProps, TestResultsSummary, type TestResultsSummaryProps, TestStatus, type TestStatusProps, TestSuite, TestSuiteContent, type TestSuiteContentProps, TestSuiteName, type TestSuiteNameProps, type TestSuiteProps, TestSuiteStats, type TestSuiteStatsProps, type TextInputContext, type TextShimmerProps, Tool, ToolContent, type ToolContentProps, ToolDetails, type ToolDetailsProps, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolOutput, type ToolOutputProps, type ToolPart, type ToolProps, ToolResultCard, type ToolResultCardProps, Toolbar, type ToolbarProps, Transcription, type TranscriptionProps, TranscriptionSegment, type TranscriptionSegmentProps, UserMessage, type UserMessageProps, VoiceSelector, VoiceSelectorAccent, type VoiceSelectorAccentProps, VoiceSelectorAge, type VoiceSelectorAgeProps, VoiceSelectorAttributes, type VoiceSelectorAttributesProps, VoiceSelectorBullet, type VoiceSelectorBulletProps, VoiceSelectorContent, type VoiceSelectorContentProps, VoiceSelectorDescription, type VoiceSelectorDescriptionProps, VoiceSelectorDialog, type VoiceSelectorDialogProps, VoiceSelectorEmpty, type VoiceSelectorEmptyProps, VoiceSelectorGender, type VoiceSelectorGenderProps, VoiceSelectorGroup, type VoiceSelectorGroupProps, VoiceSelectorInput, type VoiceSelectorInputProps, VoiceSelectorItem, type VoiceSelectorItemProps, VoiceSelectorList, type VoiceSelectorListProps, VoiceSelectorName, type VoiceSelectorNameProps, VoiceSelectorPreview, type VoiceSelectorPreviewProps, type VoiceSelectorProps, VoiceSelectorSeparator, type VoiceSelectorSeparatorProps, VoiceSelectorShortcut, type VoiceSelectorShortcutProps, VoiceSelectorTrigger, type VoiceSelectorTriggerProps, WebPreview, WebPreviewBody, type WebPreviewBodyProps, WebPreviewConsole, type WebPreviewConsoleProps, type WebPreviewContextValue, WebPreviewNavigation, WebPreviewNavigationButton, type WebPreviewNavigationButtonProps, type WebPreviewNavigationProps, type WebPreviewProps, WebPreviewUrl, type WebPreviewUrlProps, agentMessageVariants, badgeToneForValue, booleanFieldSchema, buildInteractiveTerminalTheme, buildPartGroups, cellFormatSchema, columnSpecSchema, compareCellValues, createLazyMermaidPlugin, defaultPartStatus, enumFieldSchema, enumOptionSchema, fieldLabel, fieldSpecSchema, formSpecSchema, formatCellValue, getAttachmentLabel, getMediaCategory, getStatusBadge, groupPartByType, highlightCode, initialFormValues, inlineCitationSourceLabel, integerFieldSchema, isEmptyCell, isGroupNode, isNumericFormat, lazyMermaid, messageActionsVariants, messageFeedbackVariants, messagesToMarkdown, multiEnumFieldSchema, normalizeFormSpec, normalizeTableSpec, numberFieldSchema, optionLabel, optionValue, partsFingerprint, preloadMermaid, readSelectionWithin, rollupStatus, statusFromToolState, stringFieldSchema, tableSpecSchema, useAssetPreviewRenderer, useAttachmentContext, useAttachmentsContext, useAudioDevices, useContextPanel, useJSXPreview, useMessageEdit, usePromptInputAttachments, usePromptInputController, usePromptInputReferencedSources, useProviderAttachments, useReasoning, useVoiceSelector, validateField, validateForm };
|
|
5013
|
+
export { Agent, AgentContent, type AgentContentProps, AgentEvent, type AgentEventProps, AgentHeader, type AgentHeaderProps, AgentInstructions, type AgentInstructionsProps, AgentMessage, type AgentMessageEmphasis, type AgentMessageProps, AgentOutput, type AgentOutputProps, type AgentProps, AgentStep, type AgentStepProps, AgentTimeline, type AgentTimelineProps, AgentTool, type AgentToolProps, AgentTools, type AgentToolsProps, ApprovalCard, ApprovalCardAccepted, type ApprovalCardAcceptedProps, ApprovalCardAction, type ApprovalCardActionProps, ApprovalCardActions, type ApprovalCardActionsProps, ApprovalCardApprove, type ApprovalCardApproveProps, ApprovalCardDeny, type ApprovalCardDenyProps, ApprovalCardDescription, type ApprovalCardDescriptionProps, ApprovalCardOptions, type ApprovalCardOptionsProps, type ApprovalCardProps, ApprovalCardReason, type ApprovalCardReasonProps, ApprovalCardRejected, type ApprovalCardRejectedProps, ApprovalCardRequest, type ApprovalCardRequestProps, ApprovalCardTarget, type ApprovalCardTargetProps, ApprovalCardTitle, type ApprovalCardTitleProps, Artifact, ArtifactAction, type ArtifactActionProps, ArtifactActions, type ArtifactActionsProps, ArtifactClose, type ArtifactCloseProps, ArtifactContent, type ArtifactContentProps, ArtifactDescription, type ArtifactDescriptionProps, ArtifactHeader, type ArtifactHeaderProps, type ArtifactProps, ArtifactTitle, type ArtifactTitleProps, AssetPreview, type AssetPreviewMode, type AssetPreviewProps, type AssetPreviewRenderer, Attachment, type AttachmentData, AttachmentEmpty, type AttachmentEmptyProps, AttachmentHoverCard, AttachmentHoverCardContent, type AttachmentHoverCardContentProps, type AttachmentHoverCardProps, AttachmentHoverCardTrigger, type AttachmentHoverCardTriggerProps, AttachmentInfo, type AttachmentInfoProps, type AttachmentMediaCategory, AttachmentPreview, type AttachmentPreviewProps, type AttachmentProps, AttachmentRemove, type AttachmentRemoveProps, type AttachmentVariant, Attachments, type AttachmentsContext, type AttachmentsProps, AudioPlayer, AudioPlayerControlBar, type AudioPlayerControlBarProps, AudioPlayerDurationDisplay, type AudioPlayerDurationDisplayProps, AudioPlayerElement, type AudioPlayerElementProps, AudioPlayerMuteButton, type AudioPlayerMuteButtonProps, type AudioPlayerPartProps, AudioPlayerPlayButton, type AudioPlayerPlayButtonProps, type AudioPlayerProps, AudioPlayerSeekBackwardButton, type AudioPlayerSeekBackwardButtonProps, AudioPlayerSeekForwardButton, type AudioPlayerSeekForwardButtonProps, AudioPlayerTimeDisplay, type AudioPlayerTimeDisplayProps, AudioPlayerTimeRange, type AudioPlayerTimeRangeProps, AudioPlayerVolumeRange, type AudioPlayerVolumeRangeProps, AudioVisualizer, type AudioVisualizerLevelState, type AudioVisualizerProps, type AudioVisualizerVariant, type BadgeTone, type BooleanFieldSpec, BrandMotionConfig, type BrandMotionConfigProps, Canvas, type CanvasProps, type CellFormat, ChainOfThought, ChainOfThoughtContent, type ChainOfThoughtContentProps, ChainOfThoughtHeader, type ChainOfThoughtHeaderProps, ChainOfThoughtImage, type ChainOfThoughtImageProps, type ChainOfThoughtProps, ChainOfThoughtSearchResult, type ChainOfThoughtSearchResultProps, ChainOfThoughtSearchResults, type ChainOfThoughtSearchResultsProps, ChainOfThoughtStep, type ChainOfThoughtStepProps, ChatGreeting, type ChatGreetingProps, ChatShell, type ChatShellProps, Checkpoint, CheckpointIcon, type CheckpointIconProps, type CheckpointProps, CheckpointTrigger, type CheckpointTriggerProps, CodeBlock, CodeBlockActions, CodeBlockContainer, CodeBlockContent, CodeBlockCopyButton, type CodeBlockCopyButtonProps, CodeBlockFilename, CodeBlockHeader, CodeBlockLanguageSelector, CodeBlockLanguageSelectorContent, type CodeBlockLanguageSelectorContentProps, CodeBlockLanguageSelectorItem, type CodeBlockLanguageSelectorItemProps, type CodeBlockLanguageSelectorProps, CodeBlockLanguageSelectorTrigger, type CodeBlockLanguageSelectorTriggerProps, CodeBlockLanguageSelectorValue, type CodeBlockLanguageSelectorValueProps, type CodeBlockProps, CodeBlockTitle, type ColumnSpec, Commit, CommitActions, type CommitActionsProps, CommitAuthor, CommitAuthorAvatar, type CommitAuthorAvatarProps, type CommitAuthorProps, CommitContent, type CommitContentProps, CommitCopyButton, type CommitCopyButtonProps, CommitFile, CommitFileAdditions, type CommitFileAdditionsProps, CommitFileChanges, type CommitFileChangesProps, CommitFileDeletions, type CommitFileDeletionsProps, CommitFileIcon, type CommitFileIconProps, CommitFileInfo, type CommitFileInfoProps, CommitFilePath, type CommitFilePathProps, type CommitFileProps, CommitFileStatus, type CommitFileStatusProps, CommitFiles, type CommitFilesProps, CommitHash, type CommitHashProps, CommitHeader, type CommitHeaderProps, CommitInfo, type CommitInfoProps, CommitMessage, type CommitMessageProps, CommitMetadata, type CommitMetadataProps, type CommitProps, CommitSeparator, type CommitSeparatorProps, CommitTimestamp, type CommitTimestampProps, Composer, type ComposerEffortProps, type ComposerModeProps, type ComposerProps, type ComposerShortcut, Confirmation, ConfirmationAccepted, type ConfirmationAcceptedProps, ConfirmationAction, type ConfirmationActionProps, ConfirmationActions, type ConfirmationActionsProps, ConfirmationApprove, type ConfirmationApproveProps, ConfirmationDeny, type ConfirmationDenyProps, ConfirmationDescription, type ConfirmationDescriptionProps, type ConfirmationProps, ConfirmationRejected, type ConfirmationRejectedProps, ConfirmationRequest, type ConfirmationRequestProps, ConfirmationTitle, type ConfirmationTitleProps, Connection, type ContextAsset, type ContextAssetType, ContextPanel, ContextPanelBody, type ContextPanelBodyProps, type ContextPanelContextValue, ContextPanelDetail, type ContextPanelDetailProps, ContextPanelHeader, type ContextPanelHeaderProps, type ContextPanelProps, ContextPanelProvider, type ContextPanelProviderProps, ContextPanelSection, type ContextPanelSectionProps, ContextPanelTrigger, type ContextPanelTriggerProps, type ContextPanelView, Controls, type ControlsProps, Conversation, ConversationContent, type ConversationContentProps, ConversationDownload, type ConversationDownloadProps, ConversationEmptyState, type ConversationEmptyStateProps, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, DiffView, type DiffViewProps, EMPTY_CELL, Edge, type EnumFieldSpec, type EnumOption, EnvironmentVariable, EnvironmentVariableCopyButton, type EnvironmentVariableCopyButtonProps, EnvironmentVariableGroup, type EnvironmentVariableGroupProps, EnvironmentVariableName, type EnvironmentVariableNameProps, type EnvironmentVariableProps, EnvironmentVariableRequired, type EnvironmentVariableRequiredProps, EnvironmentVariableValue, type EnvironmentVariableValueProps, EnvironmentVariables, EnvironmentVariablesContent, type EnvironmentVariablesContentProps, EnvironmentVariablesHeader, type EnvironmentVariablesHeaderProps, type EnvironmentVariablesProps, EnvironmentVariablesTitle, type EnvironmentVariablesTitleProps, EnvironmentVariablesToggle, type EnvironmentVariablesToggleProps, EvidenceChip, type EvidenceChipProps, type FeedbackType, type FieldSpec, FileTree, FileTreeActions, type FileTreeActionsProps, FileTreeFile, type FileTreeFileProps, FileTreeFolder, type FileTreeFolderProps, FileTreeIcon, type FileTreeIconProps, FileTreeName, type FileTreeNameProps, type FileTreeProps, type FileTreeVariant, type FormSpec, type FormSubmitState, type FormValue, type FormValues, Gallery, type GalleryImage, type GalleryMetaItem, type GalleryProps, type GetPartStatus, type GroupBy, type GroupByContext, type GroupKey, type GroupPartByTypeOptions, type GroupStatus, type GroupablePart, type GroupedNode, type GroupedPartRenderArgs, type GroupedPartRenderer, GroupedParts, type GroupedPartsProps, Image, type ImageProps, InlineCitation, InlineCitationCard, InlineCitationCardBody, type InlineCitationCardBodyProps, type InlineCitationCardProps, InlineCitationCardTrigger, type InlineCitationCardTriggerProps, InlineCitationCarousel, InlineCitationCarouselContent, type InlineCitationCarouselContentProps, InlineCitationCarouselHeader, type InlineCitationCarouselHeaderProps, InlineCitationCarouselIndex, type InlineCitationCarouselIndexProps, InlineCitationCarouselItem, type InlineCitationCarouselItemProps, InlineCitationCarouselNext, type InlineCitationCarouselNextProps, InlineCitationCarouselPrev, type InlineCitationCarouselPrevProps, type InlineCitationCarouselProps, type InlineCitationProps, InlineCitationQuote, type InlineCitationQuoteProps, InlineCitationSource, type InlineCitationSourceProps, type InlineCitationSourceRef, InlineCitationText, type InlineCitationTextProps, type IntegerFieldSpec, JSXPreview, JSXPreviewContent, type JSXPreviewContentProps, JSXPreviewError, type JSXPreviewErrorProps, type JSXPreviewProps, JSXPreviewSkeleton, type JSXPreviewSkeletonProps, type JSXPreviewStatus, LocalReferencedSourcesContext, MODEL_PROVIDER_LOGO_BASE_URL, MarkdownView, type MarkdownViewProps, Message, MessageAction, type MessageActionProps, MessageActions, type MessageActionsProps, MessageAvatar, type MessageAvatarProps, MessageBranch, MessageBranchContent, type MessageBranchContentProps, MessageBranchNext, type MessageBranchNextProps, MessageBranchPage, type MessageBranchPageProps, MessageBranchPrevious, type MessageBranchPreviousProps, type MessageBranchProps, MessageBranchSelector, type MessageBranchSelectorProps, MessageCompare, MessageCompareColumn, type MessageCompareColumnProps, type MessageCompareColumnsCount, type MessageCompareModel, type MessageCompareProps, MessageContent, type MessageContentProps, MessageEdit, MessageEditContent, type MessageEditContentProps, MessageEditForm, type MessageEditFormProps, type MessageEditProps, MessageEditProvider, type MessageEditProviderProps, MessageEditTrigger, type MessageEditTriggerProps, MessageFeedback, type MessageFeedbackProps, MessageForm, MessageFormDescription, type MessageFormDescriptionProps, MessageFormFallback, type MessageFormFallbackProps, MessageFormField, type MessageFormFieldProps, MessageFormFields, type MessageFormFieldsProps, type MessageFormProps, MessageFormProvider, type MessageFormProviderProps, MessageFormRoot, type MessageFormRootProps, MessageFormSubmit, type MessageFormSubmitProps, MessageFormTitle, type MessageFormTitleProps, MessageHeader, type MessageHeaderProps, type MessageProps, MessageResponse, type MessageResponseProps, MessageTable, MessageTableFallback, type MessageTableFallbackProps, type MessageTableProps, MessageToolbar, type MessageToolbarProps, MicSelector, MicSelectorContent, type MicSelectorContentProps, MicSelectorEmpty, type MicSelectorEmptyProps, MicSelectorInput, type MicSelectorInputProps, MicSelectorItem, type MicSelectorItemProps, MicSelectorLabel, type MicSelectorLabelProps, MicSelectorList, type MicSelectorListProps, type MicSelectorProps, MicSelectorTrigger, type MicSelectorTriggerProps, MicSelectorValue, type MicSelectorValueProps, ModelProviderLogo, ModelProviderLogoGroup, type ModelProviderLogoGroupProps, type ModelProviderLogoProps, type MultiEnumFieldSpec, Node, NodeAction, type NodeActionProps, NodeContent, type NodeContentProps, NodeDescription, type NodeDescriptionProps, NodeFooter, type NodeFooterProps, NodeHeader, type NodeHeaderProps, type NodeProps, NodeTitle, type NodeTitleProps, NodeToolbar, type NodeToolbarProps, type NormalizedFormSpec, type NormalizedTableSpec, type NumberFieldSpec, OpenIn, OpenInChatGPT, type OpenInChatGPTProps, OpenInClaude, type OpenInClaudeProps, OpenInContent, type OpenInContentProps, OpenInCursor, type OpenInCursorProps, OpenInItem, type OpenInItemProps, OpenInLabel, type OpenInLabelProps, type OpenInProps, OpenInScira, type OpenInSciraProps, OpenInSeparator, type OpenInSeparatorProps, OpenInT3, type OpenInT3Props, OpenInTrigger, type OpenInTriggerProps, OpenInv0, type OpenInv0Props, PERSONA_SOURCES, PRODUCED_ASSET_ICONS, PackageInfo, PackageInfoChangeType, type PackageInfoChangeTypeProps, PackageInfoContent, type PackageInfoContentProps, PackageInfoDependencies, type PackageInfoDependenciesProps, PackageInfoDependency, type PackageInfoDependencyProps, PackageInfoDescription, type PackageInfoDescriptionProps, PackageInfoHeader, type PackageInfoHeaderProps, PackageInfoName, type PackageInfoNameProps, type PackageInfoProps, PackageInfoVersion, type PackageInfoVersionProps, Panel, type PanelProps, type PartDisplay, type PartGroupNode, type PermissionMode, PermissionModeSelect, type PermissionModeSelectProps, Persona, type PersonaProps, type PersonaRiveEvent, type PersonaRiveEventCallback, type PersonaState, type PersonaVariant, Plan, PlanAction, type PlanActionProps, PlanApprove, type PlanApproveProps, PlanComment, type PlanCommentProps, PlanContent, type PlanContentProps, type PlanDecisionActionProps, PlanDescription, type PlanDescriptionProps, PlanFooter, type PlanFooterProps, PlanHeader, type PlanHeaderProps, type PlanProps, PlanRequestChanges, type PlanRequestChangesProps, type PlanStatus, PlanStatusLine, type PlanStatusLineProps, PlanTitle, type PlanTitleProps, PlanTrigger, type PlanTriggerProps, ProducedAssetTree, type ProducedAssetTreeProps, PromptInput, PromptInputActionAddAttachments, type PromptInputActionAddAttachmentsProps, PromptInputActionAddScreenshot, type PromptInputActionAddScreenshotProps, PromptInputActionMenu, PromptInputActionMenuContent, type PromptInputActionMenuContentProps, PromptInputActionMenuItem, type PromptInputActionMenuItemProps, type PromptInputActionMenuProps, PromptInputActionMenuTrigger, type PromptInputActionMenuTriggerProps, PromptInputBody, type PromptInputBodyProps, PromptInputButton, type PromptInputButtonProps, type PromptInputButtonTooltip, PromptInputCommand, PromptInputCommandEmpty, type PromptInputCommandEmptyProps, PromptInputCommandGroup, type PromptInputCommandGroupProps, PromptInputCommandInput, type PromptInputCommandInputProps, PromptInputCommandItem, type PromptInputCommandItemProps, PromptInputCommandList, type PromptInputCommandListProps, type PromptInputCommandProps, PromptInputCommandSeparator, type PromptInputCommandSeparatorProps, type PromptInputControllerProps, PromptInputEffort, type PromptInputEffortProps, PromptInputFooter, type PromptInputFooterProps, PromptInputHeader, type PromptInputHeaderProps, PromptInputHoverCard, PromptInputHoverCardContent, type PromptInputHoverCardContentProps, type PromptInputHoverCardProps, PromptInputHoverCardTrigger, type PromptInputHoverCardTriggerProps, type PromptInputMessage, PromptInputMode, type PromptInputModeProps, type PromptInputProps, PromptInputProvider, type PromptInputProviderProps, PromptInputSelect, PromptInputSelectContent, type PromptInputSelectContentProps, PromptInputSelectItem, type PromptInputSelectItemProps, type PromptInputSelectProps, PromptInputSelectTrigger, type PromptInputSelectTriggerProps, PromptInputSelectValue, type PromptInputSelectValueProps, PromptInputSlash, type PromptInputSlashProps, PromptInputSlashTextarea, type PromptInputSlashTextareaProps, PromptInputStop, type PromptInputStopProps, PromptInputSubmit, type PromptInputSubmitAction, type PromptInputSubmitProps, PromptInputTab, PromptInputTabBody, type PromptInputTabBodyProps, PromptInputTabItem, type PromptInputTabItemProps, PromptInputTabLabel, type PromptInputTabLabelProps, type PromptInputTabProps, PromptInputTabsList, type PromptInputTabsListProps, PromptInputTextarea, type PromptInputTextareaProps, PromptInputTools, type PromptInputToolsProps, Queue, QueueItem, QueueItemAction, type QueueItemActionProps, QueueItemActions, type QueueItemActionsProps, QueueItemAttachment, type QueueItemAttachmentProps, QueueItemContent, type QueueItemContentProps, QueueItemDescription, type QueueItemDescriptionProps, QueueItemFile, type QueueItemFileProps, QueueItemImage, type QueueItemImageProps, QueueItemIndicator, type QueueItemIndicatorProps, type QueueItemProps, QueueList, type QueueListProps, type QueueMessage, type QueueMessagePart, type QueueProps, QueueSection, QueueSectionContent, type QueueSectionContentProps, QueueSectionLabel, type QueueSectionLabelProps, type QueueSectionProps, QueueSectionTrigger, type QueueSectionTriggerProps, type QueueTodo, Reasoning, ReasoningContent, type ReasoningContentProps, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, type ReferencedSourcesContext, type RenderCell, Sandbox, SandboxContent, type SandboxContentProps, SandboxHeader, type SandboxHeaderProps, type SandboxProps, type SandboxRootProps, SandboxTabContent, type SandboxTabContentProps, SandboxTabs, SandboxTabsBar, type SandboxTabsBarProps, SandboxTabsList, type SandboxTabsListProps, type SandboxTabsProps, SandboxTabsTrigger, type SandboxTabsTriggerProps, SchemaDisplay, SchemaDisplayBody, type SchemaDisplayBodyProps, SchemaDisplayContent, type SchemaDisplayContentProps, SchemaDisplayDescription, type SchemaDisplayDescriptionProps, SchemaDisplayExample, type SchemaDisplayExampleProps, SchemaDisplayHeader, type SchemaDisplayHeaderProps, SchemaDisplayMethod, type SchemaDisplayMethodProps, SchemaDisplayParameter, type SchemaDisplayParameterProps, SchemaDisplayParameters, type SchemaDisplayParametersProps, SchemaDisplayPath, type SchemaDisplayPathProps, SchemaDisplayProperty, type SchemaDisplayPropertyProps, type SchemaDisplayProps, SchemaDisplayRequest, type SchemaDisplayRequestProps, SchemaDisplayResponse, type SchemaDisplayResponseProps, type SelectionSnapshot, SelectionToolbar, type SelectionToolbarProps, SessionHeader, type SessionHeaderProps, SessionStatusBar, type SessionStatusBarConnections, type SessionStatusBarProps, Shimmer, Snippet, SnippetAddon, type SnippetAddonProps, SnippetCopyButton, type SnippetCopyButtonProps, SnippetInput, type SnippetInputProps, type SnippetProps, SnippetText, type SnippetTextProps, Source, SourceList, type SourceListItem, type SourceListProps, type SourceProps, Sources, SourcesContent, type SourcesContentProps, type SourcesProps, SourcesTrigger, type SourcesTriggerProps, SpeechInput, type SpeechInputProps, StackTrace, StackTraceActions, type StackTraceActionsProps, StackTraceContent, type StackTraceContentProps, StackTraceCopyButton, type StackTraceCopyButtonProps, StackTraceError, StackTraceErrorMessage, type StackTraceErrorMessageProps, type StackTraceErrorProps, StackTraceErrorType, type StackTraceErrorTypeProps, StackTraceExpandButton, type StackTraceExpandButtonProps, StackTraceFrames, type StackTraceFramesProps, StackTraceHeader, type StackTraceHeaderProps, type StackTraceProps, StreamingSuggestions, type StreamingSuggestionsProps, type StringFieldSpec, Suggestion, SuggestionLoading, type SuggestionLoadingProps, type SuggestionProps, Suggestions, type SuggestionsProps, type TableRowData, type TableSort, type TableSpec, Task, TaskContent, type TaskContentProps, TaskItem, TaskItemFile, type TaskItemFileProps, type TaskItemProps, type TaskProps, TaskTrigger, type TaskTriggerProps, Test, TestDuration, type TestDurationProps, TestError, TestErrorMessage, type TestErrorMessageProps, type TestErrorProps, TestErrorStack, type TestErrorStackProps, TestName, type TestNameProps, type TestProps, TestResults, TestResultsContent, type TestResultsContentProps, TestResultsDuration, type TestResultsDurationProps, TestResultsHeader, type TestResultsHeaderProps, TestResultsMeta, type TestResultsMetaProps, TestResultsProgress, type TestResultsProgressProps, type TestResultsProps, TestResultsSummary, type TestResultsSummaryProps, TestStatus, type TestStatusProps, TestSuite, TestSuiteContent, type TestSuiteContentProps, TestSuiteName, type TestSuiteNameProps, type TestSuiteProps, TestSuiteStats, type TestSuiteStatsProps, type TextInputContext, type TextShimmerProps, TokenUsage, TokenUsageCache, type TokenUsageCacheProps, TokenUsageContent, TokenUsageContentBody, type TokenUsageContentBodyProps, TokenUsageContentFooter, type TokenUsageContentFooterProps, TokenUsageContentHeader, type TokenUsageContentHeaderProps, type TokenUsageContentProps, TokenUsageInput, type TokenUsageInputProps, TokenUsageOutput, type TokenUsageOutputProps, type TokenUsageProps, TokenUsageReasoning, type TokenUsageReasoningProps, TokenUsageTrigger, type TokenUsageTriggerProps, Tool, ToolContent, type ToolContentProps, ToolDetails, type ToolDetailsProps, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolOutput, type ToolOutputProps, type ToolPart, type ToolProps, ToolResultCard, type ToolResultCardProps, Toolbar, type ToolbarProps, Transcription, type TranscriptionProps, TranscriptionSegment, type TranscriptionSegmentProps, TurnStatus, type TurnStatusProps, type TurnStatusTokens, type UseAudioLevelOptions, type UseAudioLevelResult, UserMessage, type UserMessageProps, VoiceSelector, VoiceSelectorAccent, type VoiceSelectorAccentProps, VoiceSelectorAge, type VoiceSelectorAgeProps, VoiceSelectorAttributes, type VoiceSelectorAttributesProps, VoiceSelectorBullet, type VoiceSelectorBulletProps, VoiceSelectorContent, type VoiceSelectorContentProps, VoiceSelectorDescription, type VoiceSelectorDescriptionProps, VoiceSelectorDialog, type VoiceSelectorDialogProps, VoiceSelectorEmpty, type VoiceSelectorEmptyProps, VoiceSelectorGender, type VoiceSelectorGenderProps, VoiceSelectorGroup, type VoiceSelectorGroupProps, VoiceSelectorInput, type VoiceSelectorInputProps, VoiceSelectorItem, type VoiceSelectorItemProps, VoiceSelectorList, type VoiceSelectorListProps, VoiceSelectorName, type VoiceSelectorNameProps, VoiceSelectorPreview, type VoiceSelectorPreviewProps, type VoiceSelectorProps, VoiceSelectorSeparator, type VoiceSelectorSeparatorProps, VoiceSelectorShortcut, type VoiceSelectorShortcutProps, VoiceSelectorTrigger, type VoiceSelectorTriggerProps, WebPreview, WebPreviewBody, type WebPreviewBodyProps, WebPreviewConsole, type WebPreviewConsoleProps, type WebPreviewContextValue, WebPreviewNavigation, WebPreviewNavigationButton, type WebPreviewNavigationButtonProps, type WebPreviewNavigationProps, type WebPreviewProps, WebPreviewUrl, type WebPreviewUrlProps, agentMessageVariants, badgeToneForValue, booleanFieldSchema, buildPartGroups, cellFormatSchema, columnSpecSchema, compareCellValues, createLazyMermaidPlugin, defaultPartStatus, diffRowVariants, enumFieldSchema, enumOptionSchema, fieldLabel, fieldSpecSchema, formSpecSchema, formatCellValue, getAttachmentLabel, getMediaCategory, getStatusBadge, groupPartByType, highlightCode, initialFormValues, inlineCitationSourceLabel, integerFieldSchema, isEmptyCell, isGroupNode, isNumericFormat, lazyMermaid, messageActionsVariants, messageFeedbackVariants, messagesToMarkdown, multiEnumFieldSchema, normalizeFormSpec, normalizeTableSpec, numberFieldSchema, optionLabel, optionValue, partsFingerprint, preloadMermaid, readSelectionWithin, rollupStatus, statusFromToolState, stringFieldSchema, tableSpecSchema, useAssetPreviewRenderer, useAttachmentContext, useAttachmentsContext, useAudioDevices, useAudioLevel, useContextPanel, useJSXPreview, useMessageEdit, usePromptInputAttachments, usePromptInputController, usePromptInputReferencedSources, useProviderAttachments, useReasoning, useVoiceSelector, validateField, validateForm };
|