@ash-cloud/ash-ui 0.0.1

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.
@@ -0,0 +1,535 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { NormalizedToolCall, NormalizedEntry, ToolDisplayConfig, LogEntry, ToolDisplayMode, TodoItem, ToolStatus, ActionType } from './types.cjs';
3
+ export { AssistantMessageEntry, CommandRunAction, CommandRunResult, DEFAULT_DISPLAY_CONFIG, ErrorEntry, FileAttachment, FileEditAction, FileReadAction, FileWriteAction, GenericToolAction, GlobAction, LogCategory, LogLevel, McpToolAction, NormalizedEntryType, SearchAction, ThinkingEntry, TodoStatus, TodoWriteAction, ToolCallEntry, ToolExecutionGroup as ToolExecutionGroupType, ToolResult, UserMessageEntry, WebFetchAction, WebSearchAction, isCommandRunAction, isErrorEntry, isFileEditAction, isFileReadAction, isFileWriteAction, isGenericToolAction, isGlobAction, isMcpToolAction, isSearchAction, isTodoWriteAction, isToolCallEntry, isWebFetchAction, isWebSearchAction } from './types.cjs';
4
+ import { ReactNode } from 'react';
5
+ import { ParsedOption } from './utils.cjs';
6
+ export { GroupedEntry, ParsedOptionsResult, ToolUseInput, cn, createToolCall, extractTextContent, extractToolCallsFromGroup, formatFileSize, formatTimestamp, formatToolName, generateToolSummary, getActionIcon, getActionLabel, groupEntriesForCompactMode, mapToolToActionType, normalizeToolResult, parseCommandResult, parseMcpToolName, parseOptionsFromContent, truncate, updateToolCallWithResult } from './utils.cjs';
7
+ export { AlertCircleIcon, AlertTriangleIcon, BotIcon, BrainIcon, BugIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, ClipboardListIcon, CodeIcon, CopyIcon, EditIcon, FileIcon, FilePlusIcon, FolderSearchIcon, GlobeIcon, IconProps, InfoIcon, ListChecksIcon, LoaderIcon, MessageSquareIcon, MoonIcon, PaperclipIcon, PlugIcon, SearchIcon, SendIcon, SparklesIcon, StopCircleIcon, SunIcon, TerminalIcon, ToolIcon, UserIcon, XCircleIcon, XIcon } from './icons.cjs';
8
+ export { BorderRadius, Colors, Keyframes, Shadows, Spacing, Transitions, Typography, Widget, ZIndex, allKeyframesCss, borderRadius, colors, inlineStyles, keyframes, keyframesCss, shadows, spacing, tokensToCssVariables, transitions, typography, widget, zIndex } from './design-tokens.cjs';
9
+
10
+ interface ToolCallCardProps {
11
+ toolCall: NormalizedToolCall;
12
+ defaultExpanded?: boolean;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * ToolCallCard - Display a tool call with its status, arguments, and results
17
+ *
18
+ * Features:
19
+ * - Status indicator (pending/success/failed) with animated styling
20
+ * - Action-specific icon in accent-colored badge
21
+ * - Expandable details section with smooth animation
22
+ * - Glassmorphism dark theme styling
23
+ * - Execution duration display
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <ToolCallCard toolCall={normalizedToolCall} />
28
+ * <ToolCallCard toolCall={toolCall} defaultExpanded />
29
+ * ```
30
+ */
31
+ declare function ToolCallCard({ toolCall, defaultExpanded, className }: ToolCallCardProps): react_jsx_runtime.JSX.Element;
32
+
33
+ interface MessageListProps {
34
+ /** Normalized conversation entries to display */
35
+ entries: NormalizedEntry[];
36
+ /** Whether a response is currently loading */
37
+ loading?: boolean;
38
+ /** Streaming text content (displayed during real-time streaming) */
39
+ streamingContent?: string;
40
+ /** Display configuration override (uses context if not provided) */
41
+ displayConfig?: ToolDisplayConfig;
42
+ /** Callback when user selects an option from assistant message */
43
+ onOptionSelect?: (optionText: string) => void;
44
+ /** Additional class names */
45
+ className?: string;
46
+ }
47
+ /**
48
+ * MessageList - Display a list of normalized message entries
49
+ *
50
+ * Handles various entry types including user messages, assistant messages,
51
+ * tool calls, thinking, and errors. Also supports streaming content display.
52
+ *
53
+ * Supports two display modes:
54
+ * - 'inline': Each tool call rendered as individual expandable cards (default)
55
+ * - 'compact': Consecutive tool calls grouped into a single accordion with
56
+ * an animated status line showing the current tool
57
+ *
58
+ * Uses glassmorphism dark theme styling with animated entries.
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * <MessageList entries={normalizedEntries} />
63
+ * <MessageList entries={entries} loading streamingContent={text} />
64
+ * <MessageList entries={entries} displayConfig={{ mode: 'compact' }} />
65
+ * ```
66
+ */
67
+ declare function MessageList({ entries, loading, streamingContent, displayConfig: displayConfigProp, onOptionSelect, className, }: MessageListProps): react_jsx_runtime.JSX.Element;
68
+
69
+ interface UserMessageProps {
70
+ entry: NormalizedEntry;
71
+ className?: string;
72
+ }
73
+ /**
74
+ * UserMessage - Display a user message with optional file attachments
75
+ *
76
+ * Uses glassmorphism styling with animated entry.
77
+ */
78
+ declare function UserMessage({ entry, className }: UserMessageProps): react_jsx_runtime.JSX.Element;
79
+ interface AssistantMessageProps {
80
+ entry: NormalizedEntry;
81
+ /** Callback when user selects an option */
82
+ onOptionSelect?: (optionText: string) => void;
83
+ className?: string;
84
+ }
85
+ /**
86
+ * AssistantMessage - Display an assistant message with markdown rendering
87
+ *
88
+ * Uses glassmorphism styling with bot avatar and animated entry.
89
+ * Automatically detects and renders interactive options when present.
90
+ */
91
+ declare function AssistantMessage({ entry, onOptionSelect, className }: AssistantMessageProps): react_jsx_runtime.JSX.Element;
92
+ interface ThinkingMessageProps {
93
+ entry: NormalizedEntry;
94
+ className?: string;
95
+ }
96
+ /**
97
+ * ThinkingMessage - Display thinking/reasoning content (extended thinking)
98
+ *
99
+ * Uses glassmorphism styling with purple accent for thinking mode.
100
+ */
101
+ declare function ThinkingMessage({ entry, className }: ThinkingMessageProps): react_jsx_runtime.JSX.Element;
102
+ interface ToolCallMessageProps {
103
+ entry: NormalizedEntry;
104
+ defaultExpanded?: boolean;
105
+ className?: string;
106
+ }
107
+ /**
108
+ * ToolCallMessage - Display a tool call entry using ToolCallCard
109
+ *
110
+ * Uses glassmorphism styling with animated entry.
111
+ */
112
+ declare function ToolCallMessage({ entry, defaultExpanded, className }: ToolCallMessageProps): react_jsx_runtime.JSX.Element | null;
113
+ interface ErrorMessageProps {
114
+ entry: NormalizedEntry;
115
+ className?: string;
116
+ }
117
+ /**
118
+ * ErrorMessage - Display an error entry
119
+ *
120
+ * Uses glassmorphism styling with red accent for errors.
121
+ */
122
+ declare function ErrorMessage({ entry, className }: ErrorMessageProps): react_jsx_runtime.JSX.Element | null;
123
+ interface MessageEntryProps {
124
+ entry: NormalizedEntry;
125
+ /** Callback when user selects an option from assistant message */
126
+ onOptionSelect?: (optionText: string) => void;
127
+ className?: string;
128
+ }
129
+ /**
130
+ * MessageEntry - Render a normalized entry based on its type
131
+ *
132
+ * This is a convenience component that routes to the appropriate
133
+ * entry type component.
134
+ *
135
+ * @example
136
+ * ```tsx
137
+ * {entries.map(entry => (
138
+ * <MessageEntry key={entry.id} entry={entry} onOptionSelect={handleSelect} />
139
+ * ))}
140
+ * ```
141
+ */
142
+ declare function MessageEntry({ entry, onOptionSelect, className }: MessageEntryProps): react_jsx_runtime.JSX.Element | null;
143
+
144
+ interface LogsPanelProps {
145
+ logs: LogEntry[];
146
+ title?: string;
147
+ isLoading?: boolean;
148
+ defaultCollapsed?: boolean;
149
+ maxHeight?: number;
150
+ className?: string;
151
+ }
152
+ /**
153
+ * LogsPanel - Collapsible panel for displaying log entries
154
+ *
155
+ * Features:
156
+ * - Collapsible header with log count
157
+ * - Error/warning count badges
158
+ * - Level-based coloring and icons
159
+ * - Expandable entries with JSON data
160
+ *
161
+ * @example
162
+ * ```tsx
163
+ * <LogsPanel logs={logEntries} />
164
+ * <LogsPanel logs={logs} title="Execution Logs" defaultCollapsed={false} />
165
+ * ```
166
+ */
167
+ declare function LogsPanel({ logs, title, isLoading, defaultCollapsed, maxHeight, className, }: LogsPanelProps): react_jsx_runtime.JSX.Element | null;
168
+
169
+ interface ToolExecutionGroupProps {
170
+ /** Tool calls in this group */
171
+ toolCalls: NormalizedToolCall[];
172
+ /** Whether the group starts expanded */
173
+ defaultExpanded?: boolean;
174
+ /** Animation duration for status line transitions (ms) */
175
+ animationDuration?: number;
176
+ /** Additional class names */
177
+ className?: string;
178
+ }
179
+ /**
180
+ * ToolExecutionGroup - Displays multiple tool calls in a compact accordion format.
181
+ *
182
+ * In collapsed state, shows a single animated status line with the current/latest
183
+ * tool call. When expanded, shows all tool calls as individual cards.
184
+ *
185
+ * Features:
186
+ * - Animated status line that transitions between tool calls
187
+ * - Expandable accordion to see all tool call details
188
+ * - Count badge showing total tool calls
189
+ * - Overall status indicator
190
+ *
191
+ * @example
192
+ * ```tsx
193
+ * <ToolExecutionGroup
194
+ * toolCalls={consecutiveToolCalls}
195
+ * defaultExpanded={false}
196
+ * />
197
+ * ```
198
+ */
199
+ declare function ToolExecutionGroup({ toolCalls, defaultExpanded, animationDuration, className, }: ToolExecutionGroupProps): react_jsx_runtime.JSX.Element | null;
200
+
201
+ interface CompactToolStatusLineProps {
202
+ /** The current tool call to display */
203
+ toolCall: NormalizedToolCall;
204
+ /** Previous tool call (for exit animation) */
205
+ previousToolCall?: NormalizedToolCall | null;
206
+ /** Animation duration in ms */
207
+ animationDuration?: number;
208
+ /** Additional class names */
209
+ className?: string;
210
+ }
211
+ /**
212
+ * Compact status line for displaying the current tool execution.
213
+ *
214
+ * Features a smooth replace animation where the previous tool call
215
+ * slides out while the new one slides in. Similar to the homepage
216
+ * status line animation.
217
+ *
218
+ * @example
219
+ * ```tsx
220
+ * <CompactToolStatusLine
221
+ * toolCall={currentToolCall}
222
+ * previousToolCall={lastToolCall}
223
+ * />
224
+ * ```
225
+ */
226
+ declare function CompactToolStatusLine({ toolCall, previousToolCall, animationDuration, className, }: CompactToolStatusLineProps): react_jsx_runtime.JSX.Element;
227
+
228
+ /**
229
+ * Context type for display mode configuration
230
+ */
231
+ interface DisplayModeContextType {
232
+ /** Current display configuration */
233
+ config: ToolDisplayConfig;
234
+ /** Update the display mode */
235
+ setMode: (mode: ToolDisplayMode) => void;
236
+ /** Update the full configuration */
237
+ setConfig: (config: Partial<ToolDisplayConfig>) => void;
238
+ /** Toggle between 'inline' and 'compact' modes */
239
+ toggleMode: () => void;
240
+ }
241
+ interface DisplayModeProviderProps {
242
+ children: ReactNode;
243
+ /** Initial display configuration */
244
+ initialConfig?: Partial<ToolDisplayConfig>;
245
+ }
246
+ /**
247
+ * Provider for display mode configuration.
248
+ *
249
+ * Wrap your chat component with this provider to enable
250
+ * configurable tool call display modes.
251
+ *
252
+ * @example
253
+ * ```tsx
254
+ * <DisplayModeProvider initialConfig={{ mode: 'compact' }}>
255
+ * <MessageList entries={entries} />
256
+ * </DisplayModeProvider>
257
+ * ```
258
+ */
259
+ declare function DisplayModeProvider({ children, initialConfig }: DisplayModeProviderProps): react_jsx_runtime.JSX.Element;
260
+ /**
261
+ * Hook to access display mode configuration.
262
+ *
263
+ * @example
264
+ * ```tsx
265
+ * function MyComponent() {
266
+ * const { config, toggleMode } = useDisplayMode();
267
+ *
268
+ * return (
269
+ * <button onClick={toggleMode}>
270
+ * Mode: {config.mode}
271
+ * </button>
272
+ * );
273
+ * }
274
+ * ```
275
+ */
276
+ declare function useDisplayMode(): DisplayModeContextType;
277
+ /**
278
+ * Hook to get just the current config (for components that only read)
279
+ */
280
+ declare function useDisplayConfig(): ToolDisplayConfig;
281
+
282
+ interface OptionCardsProps {
283
+ /** Parsed options to display */
284
+ options: ParsedOption[];
285
+ /** Callback when an option is selected */
286
+ onSelect: (option: ParsedOption) => void;
287
+ /** Additional class names */
288
+ className?: string;
289
+ }
290
+ /**
291
+ * OptionCards - Display clickable option cards for interactive selection
292
+ *
293
+ * Renders a grid of glassmorphic cards that users can click to select an option.
294
+ * Used when assistant messages contain structured options for the user to choose from.
295
+ *
296
+ * @example
297
+ * ```tsx
298
+ * <OptionCards
299
+ * options={[
300
+ * { id: '1', label: 'Add Product', description: 'Upload a new product' },
301
+ * { id: '2', label: 'Browse Existing', description: 'View your products' },
302
+ * ]}
303
+ * onSelect={(opt) => sendMessage(opt.label)}
304
+ * />
305
+ * ```
306
+ */
307
+ declare function OptionCards({ options, onSelect, className }: OptionCardsProps): react_jsx_runtime.JSX.Element;
308
+
309
+ interface TodoPanelProps {
310
+ /** List of todo items */
311
+ todos: TodoItem[];
312
+ /** Optional title for the panel */
313
+ title?: string;
314
+ /** Show in compact mode (less padding, smaller text) */
315
+ compact?: boolean;
316
+ /** Show progress bar */
317
+ showProgress?: boolean;
318
+ /** Additional class names */
319
+ className?: string;
320
+ }
321
+ /**
322
+ * TodoPanel - Display a list of todos with status indicators
323
+ *
324
+ * Features:
325
+ * - Status icons (pending/in_progress/completed)
326
+ * - Progress bar showing completion
327
+ * - Compact mode for inline display
328
+ * - Animated transitions
329
+ *
330
+ * @example
331
+ * ```tsx
332
+ * <TodoPanel todos={todos} />
333
+ * <TodoPanel todos={todos} title="Task Progress" showProgress />
334
+ * <TodoPanel todos={todos} compact />
335
+ * ```
336
+ */
337
+ declare function TodoPanel({ todos, title, compact, showProgress, className, }: TodoPanelProps): react_jsx_runtime.JSX.Element | null;
338
+
339
+ interface StatusIndicatorProps {
340
+ status: ToolStatus;
341
+ size?: 'sm' | 'md' | 'lg';
342
+ className?: string;
343
+ }
344
+ /**
345
+ * StatusIndicator - Visual indicator for tool execution status
346
+ *
347
+ * Uses the glassmorphism theme with animated states:
348
+ * - pending: Yellow with pulse animation
349
+ * - success: Accent color (lime green)
350
+ * - failed: Red
351
+ *
352
+ * @example
353
+ * ```tsx
354
+ * <StatusIndicator status="pending" />
355
+ * <StatusIndicator status="success" size="lg" />
356
+ * <StatusIndicator status="failed" />
357
+ * ```
358
+ */
359
+ declare function StatusIndicator({ status, size, className }: StatusIndicatorProps): react_jsx_runtime.JSX.Element;
360
+
361
+ interface ActionIconProps {
362
+ actionType: ActionType;
363
+ className?: string;
364
+ }
365
+ /**
366
+ * ActionIcon - Display the appropriate icon for a tool action type
367
+ *
368
+ * @example
369
+ * ```tsx
370
+ * <ActionIcon actionType={{ action: 'command_run', command: 'ls' }} />
371
+ * <ActionIcon actionType={{ action: 'file_read', path: '/file.txt' }} className="w-5 h-5" />
372
+ * ```
373
+ */
374
+ declare function ActionIcon({ actionType, className }: ActionIconProps): react_jsx_runtime.JSX.Element;
375
+
376
+ interface CodeBlockProps {
377
+ children: string;
378
+ maxHeight?: number;
379
+ language?: string;
380
+ showLineNumbers?: boolean;
381
+ className?: string;
382
+ }
383
+ /**
384
+ * CodeBlock - Display code with syntax-aware styling and expand/collapse
385
+ *
386
+ * Uses glassmorphism dark theme styling with accent-colored expand button.
387
+ *
388
+ * @example
389
+ * ```tsx
390
+ * <CodeBlock>{`const x = 1;`}</CodeBlock>
391
+ * <CodeBlock maxHeight={200}>{longCode}</CodeBlock>
392
+ * <CodeBlock language="typescript" showLineNumbers>{code}</CodeBlock>
393
+ * ```
394
+ */
395
+ declare function CodeBlock({ children, maxHeight, language, showLineNumbers, className, }: CodeBlockProps): react_jsx_runtime.JSX.Element;
396
+
397
+ interface JsonDisplayProps {
398
+ value: unknown;
399
+ maxHeight?: number;
400
+ className?: string;
401
+ }
402
+ /**
403
+ * JsonDisplay - Display JSON data in a formatted code block
404
+ *
405
+ * @example
406
+ * ```tsx
407
+ * <JsonDisplay value={{ name: 'test', count: 42 }} />
408
+ * <JsonDisplay value={data} maxHeight={300} />
409
+ * ```
410
+ */
411
+ declare function JsonDisplay({ value, maxHeight, className }: JsonDisplayProps): react_jsx_runtime.JSX.Element;
412
+
413
+ interface StreamingTextProps {
414
+ content: string;
415
+ isStreaming?: boolean;
416
+ renderMarkdown?: boolean;
417
+ className?: string;
418
+ }
419
+ /**
420
+ * StreamingText - Display text that may be streaming, with optional markdown
421
+ *
422
+ * Shows a blinking cursor indicator when streaming is active.
423
+ * Uses glassmorphism theme styling.
424
+ *
425
+ * @example
426
+ * ```tsx
427
+ * <StreamingText content={text} isStreaming />
428
+ * <StreamingText content={markdown} renderMarkdown />
429
+ * ```
430
+ */
431
+ declare function StreamingText({ content, isStreaming, renderMarkdown, className, }: StreamingTextProps): react_jsx_runtime.JSX.Element;
432
+
433
+ interface LoadingIndicatorProps {
434
+ variant?: 'dots' | 'pulse' | 'spinner' | 'cursor';
435
+ size?: 'sm' | 'md' | 'lg';
436
+ className?: string;
437
+ }
438
+ /**
439
+ * LoadingIndicator - Display various loading states
440
+ *
441
+ * Uses the glassmorphism theme with accent-colored animations.
442
+ *
443
+ * Variants:
444
+ * - dots: Three animated dots
445
+ * - pulse: Single pulsing dot
446
+ * - spinner: Rotating spinner
447
+ * - cursor: Blinking cursor (like in the demo)
448
+ *
449
+ * @example
450
+ * ```tsx
451
+ * <LoadingIndicator />
452
+ * <LoadingIndicator variant="spinner" size="lg" />
453
+ * <LoadingIndicator variant="cursor" />
454
+ * ```
455
+ */
456
+ declare function LoadingIndicator({ variant, size, className }: LoadingIndicatorProps): react_jsx_runtime.JSX.Element;
457
+
458
+ interface TypewriterTextProps {
459
+ /** Words to cycle through */
460
+ words?: string[];
461
+ /** Typing speed in ms per character */
462
+ typeSpeed?: number;
463
+ /** Pause before erasing in ms */
464
+ pauseBeforeErase?: number;
465
+ /** Erasing speed in ms per character */
466
+ eraseSpeed?: number;
467
+ /** Pause before typing next word in ms */
468
+ pauseBeforeType?: number;
469
+ /** Whether to show a blinking cursor */
470
+ showCursor?: boolean;
471
+ /** Additional class names */
472
+ className?: string;
473
+ /** Cursor class names */
474
+ cursorClassName?: string;
475
+ }
476
+ /**
477
+ * TypewriterText - Animated typing component that cycles through words
478
+ *
479
+ * Creates a typewriter effect that types out words character by character,
480
+ * pauses, then erases them before moving to the next word.
481
+ *
482
+ * @example
483
+ * ```tsx
484
+ * // Default thinking words
485
+ * <TypewriterText />
486
+ *
487
+ * // Custom words
488
+ * <TypewriterText words={['Loading', 'Processing', 'Almost done']} />
489
+ *
490
+ * // Custom speeds
491
+ * <TypewriterText typeSpeed={30} pauseBeforeErase={1000} />
492
+ * ```
493
+ */
494
+ declare function TypewriterText({ words, typeSpeed, pauseBeforeErase, eraseSpeed, pauseBeforeType, showCursor, className, cursorClassName, }: TypewriterTextProps): react_jsx_runtime.JSX.Element;
495
+
496
+ type Theme = 'light' | 'dark';
497
+ interface ThemeContextType {
498
+ theme: Theme;
499
+ toggleTheme: () => void;
500
+ setTheme: (theme: Theme) => void;
501
+ }
502
+ interface ThemeProviderProps {
503
+ children: ReactNode;
504
+ /** Default theme to use when no stored preference exists. Defaults to system preference, then 'light'. */
505
+ defaultTheme?: Theme;
506
+ /** localStorage key for persisting theme. Defaults to 'ash-ui-theme'. */
507
+ storageKey?: string;
508
+ /** Whether to listen for system theme changes. Defaults to true. */
509
+ listenToSystemChanges?: boolean;
510
+ }
511
+ /**
512
+ * ThemeProvider - Unified theme management for agentic UIs.
513
+ *
514
+ * Features:
515
+ * - Persists theme choice to localStorage
516
+ * - Respects system preference when no stored preference exists
517
+ * - Listens for system theme changes (configurable)
518
+ * - Adds/removes 'dark' class on document root for Tailwind CSS
519
+ *
520
+ * @example
521
+ * ```tsx
522
+ * <ThemeProvider>
523
+ * <App />
524
+ * </ThemeProvider>
525
+ *
526
+ * // With custom defaults
527
+ * <ThemeProvider defaultTheme="dark" storageKey="my-theme">
528
+ * <App />
529
+ * </ThemeProvider>
530
+ * ```
531
+ */
532
+ declare function ThemeProvider({ children, defaultTheme, storageKey, listenToSystemChanges, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
533
+ declare function useTheme(): ThemeContextType;
534
+
535
+ export { ActionIcon, type ActionIconProps, ActionType, AssistantMessage, type AssistantMessageProps, CodeBlock, type CodeBlockProps, CompactToolStatusLine, type CompactToolStatusLineProps, type DisplayModeContextType, DisplayModeProvider, type DisplayModeProviderProps, ErrorMessage, type ErrorMessageProps, JsonDisplay, type JsonDisplayProps, LoadingIndicator, type LoadingIndicatorProps, LogEntry, LogsPanel, type LogsPanelProps, MessageEntry, type MessageEntryProps, MessageList, type MessageListProps, NormalizedEntry, NormalizedToolCall, OptionCards, type OptionCardsProps, ParsedOption, StatusIndicator, type StatusIndicatorProps, StreamingText, type StreamingTextProps, type Theme, type ThemeContextType, ThemeProvider, type ThemeProviderProps, ThinkingMessage, type ThinkingMessageProps, TodoItem, TodoPanel, type TodoPanelProps, ToolCallCard, type ToolCallCardProps, ToolCallMessage, type ToolCallMessageProps, ToolDisplayConfig, ToolDisplayMode, ToolExecutionGroup, type ToolExecutionGroupProps, ToolStatus, TypewriterText, type TypewriterTextProps, UserMessage, type UserMessageProps, useDisplayConfig, useDisplayMode, useTheme };