@timbal-ai/timbal-react 0.6.0 → 0.7.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/CHANGELOG.md +37 -0
- package/README.md +24 -5
- package/dist/app.cjs +2282 -738
- package/dist/app.d.cts +4 -1
- package/dist/app.d.ts +4 -1
- package/dist/app.esm.js +58 -5
- package/dist/button-CIKzUrJI.d.cts +18 -0
- package/dist/button-CIKzUrJI.d.ts +18 -0
- package/dist/chart-artifact-BFDz8Tf9.d.ts +756 -0
- package/dist/chart-artifact-bWUa-iSG.d.cts +756 -0
- package/dist/chat.cjs +872 -562
- package/dist/chat.d.cts +2 -2
- package/dist/chat.d.ts +2 -2
- package/dist/chat.esm.js +3 -3
- package/dist/{chunk-4TCJQSIX.esm.js → chunk-2XZ3S4OP.esm.js} +14 -3
- package/dist/chunk-533MK5EA.esm.js +2294 -0
- package/dist/{chunk-OVHR7J3J.esm.js → chunk-7O5VY3TP.esm.js} +38 -11
- package/dist/{chunk-WLTW56MC.esm.js → chunk-N3PYVTY5.esm.js} +2 -2
- package/dist/{chunk-IYENDIRY.esm.js → chunk-TDIJHV4I.esm.js} +1 -1
- package/dist/{chunk-YJQLLFKP.esm.js → chunk-TLUF2RUL.esm.js} +813 -507
- package/dist/{chunk-OFHLFNJH.esm.js → chunk-Z27GBSOT.esm.js} +3 -1
- package/dist/index.cjs +2587 -1016
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.esm.js +57 -7
- package/dist/{layout-CQWngNQ7.d.ts → layout-BTJyU8wd.d.ts} +1 -1
- package/dist/{layout-B9VayJhZ.d.cts → layout-C2G-FcER.d.cts} +1 -1
- package/dist/studio.cjs +1127 -788
- package/dist/studio.d.cts +1 -1
- package/dist/studio.d.ts +1 -1
- package/dist/studio.esm.js +6 -6
- package/dist/{timbal-v2-button-F4-z7m33.d.ts → timbal-v2-button-CNfdwGq4.d.cts} +1 -1
- package/dist/{timbal-v2-button-F4-z7m33.d.cts → timbal-v2-button-CNfdwGq4.d.ts} +1 -1
- package/dist/ui.cjs +12 -3
- package/dist/ui.d.cts +5 -16
- package/dist/ui.d.ts +5 -16
- package/dist/ui.esm.js +2 -2
- package/dist/{welcome-BOizSp5h.d.ts → welcome-BBmB3tl7.d.ts} +4 -3
- package/dist/{welcome--80i_O0p.d.cts → welcome-C89Mgdaw.d.cts} +4 -3
- package/package.json +2 -1
- package/vite/local-dev.mjs +91 -5
- package/dist/chart-artifact-C71dk4xI.d.ts +0 -329
- package/dist/chart-artifact-CPEpOmtV.d.cts +0 -329
- package/dist/chunk-M4V6Q6XO.esm.js +0 -1082
|
@@ -0,0 +1,756 @@
|
|
|
1
|
+
import { FC, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes } from 'react';
|
|
2
|
+
import { w as TimbalRuntimeProviderProps, q as ThreadProps, C as ChartArtifact } from './chat-CWtQWDtJ.js';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Copy-paste into a workforce agent system prompt (or codegen tool context) so the
|
|
7
|
+
* model knows which app-kit components exist and how to compose them — without
|
|
8
|
+
* copying a single reference layout.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { APP_KIT_AGENT_INSTRUCTIONS } from "@timbal-ai/timbal-react/app";
|
|
13
|
+
*
|
|
14
|
+
* const systemPrompt = `${basePrompt}\n\n${APP_KIT_AGENT_INSTRUCTIONS}`;
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare const APP_KIT_AGENT_INSTRUCTIONS: string;
|
|
18
|
+
|
|
19
|
+
interface AppShellProps {
|
|
20
|
+
/** Primary navigation (e.g. StudioSidebar or custom rail). */
|
|
21
|
+
sidebar?: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Global top bar (login, theme, account) — spans the full shell width (not
|
|
24
|
+
* the page `max-w-6xl` column). Use `<AppShellTopbar start actions />`.
|
|
25
|
+
*/
|
|
26
|
+
topbar?: ReactNode;
|
|
27
|
+
/** @deprecated Use `topbar`. */
|
|
28
|
+
header?: ReactNode;
|
|
29
|
+
/** Main routed content. */
|
|
30
|
+
children: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Floating copilot panel (e.g. `<AppChatPanel />`). Overlays the dashboard;
|
|
33
|
+
* does not shrink the main column.
|
|
34
|
+
*/
|
|
35
|
+
chat?: ReactNode;
|
|
36
|
+
/** Floating panel width. Default: `24rem`. */
|
|
37
|
+
chatWidth?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Floating panel height. Omit to stretch between vertical shell insets
|
|
40
|
+
* (full page height with `top` / `bottom` margins).
|
|
41
|
+
*/
|
|
42
|
+
chatHeight?: string;
|
|
43
|
+
/** Controlled open state for the floating panel. */
|
|
44
|
+
chatOpen?: boolean;
|
|
45
|
+
/** Uncontrolled initial open state. Default: `false`. */
|
|
46
|
+
defaultChatOpen?: boolean;
|
|
47
|
+
onChatOpenChange?: (open: boolean) => void;
|
|
48
|
+
/** Show floating open/close control. Default: `true`. */
|
|
49
|
+
chatCollapsible?: boolean;
|
|
50
|
+
/** Label on the floating open trigger. Default: `Assistant`. */
|
|
51
|
+
chatTriggerLabel?: string;
|
|
52
|
+
/** Hide the built-in floating trigger (use your own + `useAppShellChat`). */
|
|
53
|
+
hideChatTrigger?: boolean;
|
|
54
|
+
className?: string;
|
|
55
|
+
mainClassName?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* App-first layout: sidebar + topbar + main, with optional **floating** copilot.
|
|
59
|
+
*/
|
|
60
|
+
declare const AppShell: FC<AppShellProps>;
|
|
61
|
+
|
|
62
|
+
interface AppShellTopbarProps {
|
|
63
|
+
/** Leading cluster — mobile menu, product mark, org switcher. */
|
|
64
|
+
start?: ReactNode;
|
|
65
|
+
/** Trailing cluster — theme toggle, login, account menu. */
|
|
66
|
+
actions?: ReactNode;
|
|
67
|
+
/** Optional center content between start and actions. */
|
|
68
|
+
children?: ReactNode;
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Global app chrome row inside `AppShell` — auth, theme, and account actions.
|
|
73
|
+
* Spans the full shell width via the shell’s `topbar` slot (wider than `<Page />`).
|
|
74
|
+
*/
|
|
75
|
+
declare const AppShellTopbar: FC<AppShellTopbarProps>;
|
|
76
|
+
|
|
77
|
+
interface AppShellChatTriggerProps {
|
|
78
|
+
className?: string;
|
|
79
|
+
label?: string;
|
|
80
|
+
/**
|
|
81
|
+
* `floating` — primary pill fixed bottom-right (matches shell default).
|
|
82
|
+
* `inline` — for topbar/actions rows; text only, no icons.
|
|
83
|
+
*/
|
|
84
|
+
placement?: "floating" | "inline";
|
|
85
|
+
}
|
|
86
|
+
/** Opens the floating copilot. Text only — no icons. */
|
|
87
|
+
declare const AppShellChatTrigger: FC<AppShellChatTriggerProps>;
|
|
88
|
+
|
|
89
|
+
interface AppShellChatControls {
|
|
90
|
+
open: boolean;
|
|
91
|
+
setOpen: (open: boolean) => void;
|
|
92
|
+
toggle: () => void;
|
|
93
|
+
collapsible: boolean;
|
|
94
|
+
}
|
|
95
|
+
declare function useAppShellChat(): AppShellChatControls | null;
|
|
96
|
+
|
|
97
|
+
interface PageHeaderProps {
|
|
98
|
+
title: ReactNode;
|
|
99
|
+
description?: ReactNode;
|
|
100
|
+
actions?: ReactNode;
|
|
101
|
+
className?: string;
|
|
102
|
+
}
|
|
103
|
+
declare const PageHeader: FC<PageHeaderProps>;
|
|
104
|
+
|
|
105
|
+
interface PageProps extends PageHeaderProps {
|
|
106
|
+
children: ReactNode;
|
|
107
|
+
/** Slot above the title (breadcrumbs). */
|
|
108
|
+
breadcrumbs?: ReactNode;
|
|
109
|
+
className?: string;
|
|
110
|
+
}
|
|
111
|
+
declare const Page: FC<PageProps>;
|
|
112
|
+
|
|
113
|
+
interface SectionProps {
|
|
114
|
+
title?: ReactNode;
|
|
115
|
+
description?: ReactNode;
|
|
116
|
+
children: ReactNode;
|
|
117
|
+
className?: string;
|
|
118
|
+
}
|
|
119
|
+
declare const Section: FC<SectionProps>;
|
|
120
|
+
|
|
121
|
+
type AppCopilotContextValue = Record<string, unknown>;
|
|
122
|
+
interface AppCopilotProviderProps {
|
|
123
|
+
value: AppCopilotContextValue;
|
|
124
|
+
children: ReactNode;
|
|
125
|
+
}
|
|
126
|
+
/** Supplies page/dashboard context for `AppChatPanel` and agent tools. */
|
|
127
|
+
declare const AppCopilotProvider: FC<AppCopilotProviderProps>;
|
|
128
|
+
declare function useAppCopilotContext(): AppCopilotContextValue;
|
|
129
|
+
|
|
130
|
+
interface AppChatPanelProps extends Omit<TimbalRuntimeProviderProps, "children">, Omit<ThreadProps, "variant" | "maxWidth"> {
|
|
131
|
+
className?: string;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Floating copilot body — `TimbalRuntimeProvider` + compact `Thread`.
|
|
135
|
+
* Render inside `AppShell` `chat`; open/close via shell trigger or `useAppShellChat`.
|
|
136
|
+
*/
|
|
137
|
+
declare const AppChatPanel: FC<AppChatPanelProps>;
|
|
138
|
+
|
|
139
|
+
interface SurfaceCardProps {
|
|
140
|
+
children: ReactNode;
|
|
141
|
+
className?: string;
|
|
142
|
+
}
|
|
143
|
+
declare const SurfaceCard: FC<SurfaceCardProps>;
|
|
144
|
+
|
|
145
|
+
interface StatTileProps {
|
|
146
|
+
label: ReactNode;
|
|
147
|
+
value: ReactNode;
|
|
148
|
+
hint?: ReactNode;
|
|
149
|
+
className?: string;
|
|
150
|
+
}
|
|
151
|
+
declare const StatTile: FC<StatTileProps>;
|
|
152
|
+
|
|
153
|
+
interface EmptyStateProps {
|
|
154
|
+
title: ReactNode;
|
|
155
|
+
description?: ReactNode;
|
|
156
|
+
action?: ReactNode;
|
|
157
|
+
className?: string;
|
|
158
|
+
}
|
|
159
|
+
declare const EmptyState: FC<EmptyStateProps>;
|
|
160
|
+
|
|
161
|
+
declare const statusBadgeToneClass: {
|
|
162
|
+
readonly default: "bg-muted text-foreground";
|
|
163
|
+
readonly primary: "bg-primary/10 text-primary";
|
|
164
|
+
readonly success: "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400";
|
|
165
|
+
readonly warn: "bg-amber-500/10 text-amber-600 dark:text-amber-400";
|
|
166
|
+
readonly muted: "bg-muted/80 text-muted-foreground";
|
|
167
|
+
};
|
|
168
|
+
type StatusBadgeTone = keyof typeof statusBadgeToneClass;
|
|
169
|
+
interface StatusBadgeProps {
|
|
170
|
+
children: ReactNode;
|
|
171
|
+
tone?: StatusBadgeTone;
|
|
172
|
+
className?: string;
|
|
173
|
+
}
|
|
174
|
+
declare const StatusBadge: FC<StatusBadgeProps>;
|
|
175
|
+
|
|
176
|
+
interface AppConfirmDialogProps {
|
|
177
|
+
open: boolean;
|
|
178
|
+
onOpenChange: (open: boolean) => void;
|
|
179
|
+
title: ReactNode;
|
|
180
|
+
description?: ReactNode;
|
|
181
|
+
confirmLabel?: string;
|
|
182
|
+
cancelLabel?: string;
|
|
183
|
+
onConfirm: () => void;
|
|
184
|
+
destructive?: boolean;
|
|
185
|
+
className?: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Confirm/cancel dialog for app flows (delete row, discard changes, etc.).
|
|
189
|
+
*/
|
|
190
|
+
declare const AppConfirmDialog: FC<AppConfirmDialogProps>;
|
|
191
|
+
|
|
192
|
+
type InfoCardTone = "neutral" | "info" | "success" | "warn" | "danger";
|
|
193
|
+
interface InfoCardProps {
|
|
194
|
+
title?: ReactNode;
|
|
195
|
+
children?: ReactNode;
|
|
196
|
+
/** Leading icon node. */
|
|
197
|
+
icon?: ReactNode;
|
|
198
|
+
/** Trailing CTA / action. */
|
|
199
|
+
action?: ReactNode;
|
|
200
|
+
tone?: InfoCardTone;
|
|
201
|
+
className?: string;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Soft info / callout panel with optional icon, title, body and CTA. For tips,
|
|
205
|
+
* empty hints, upsell nudges, and read-only notices.
|
|
206
|
+
*/
|
|
207
|
+
declare const InfoCard: FC<InfoCardProps>;
|
|
208
|
+
|
|
209
|
+
type StatusDotTone = "online" | "busy" | "offline" | "error" | "neutral";
|
|
210
|
+
interface StatusDotProps {
|
|
211
|
+
tone?: StatusDotTone;
|
|
212
|
+
/** Optional label rendered to the right of the dot. */
|
|
213
|
+
label?: ReactNode;
|
|
214
|
+
/** Soft pulse halo for live/online states. */
|
|
215
|
+
pulse?: boolean;
|
|
216
|
+
className?: string;
|
|
217
|
+
}
|
|
218
|
+
/** Tiny status indicator dot, optionally labeled and pulsing. */
|
|
219
|
+
declare const StatusDot: FC<StatusDotProps>;
|
|
220
|
+
|
|
221
|
+
interface DescriptionItem {
|
|
222
|
+
label: ReactNode;
|
|
223
|
+
value: ReactNode;
|
|
224
|
+
}
|
|
225
|
+
interface DescriptionListProps {
|
|
226
|
+
items: DescriptionItem[];
|
|
227
|
+
/** Stack label above value instead of two columns. */
|
|
228
|
+
stacked?: boolean;
|
|
229
|
+
className?: string;
|
|
230
|
+
}
|
|
231
|
+
/** Read-only key/value metadata list (resource details, settings summaries). */
|
|
232
|
+
declare const DescriptionList: FC<DescriptionListProps>;
|
|
233
|
+
|
|
234
|
+
interface ExpandableSectionProps {
|
|
235
|
+
title: ReactNode;
|
|
236
|
+
/** Leading icon node. */
|
|
237
|
+
icon?: ReactNode;
|
|
238
|
+
/** Small count / badge after the title. */
|
|
239
|
+
count?: ReactNode;
|
|
240
|
+
children: ReactNode;
|
|
241
|
+
/** Controlled open state. */
|
|
242
|
+
open?: boolean;
|
|
243
|
+
defaultOpen?: boolean;
|
|
244
|
+
onOpenChange?: (open: boolean) => void;
|
|
245
|
+
className?: string;
|
|
246
|
+
}
|
|
247
|
+
/** Collapsible section with an animated body. Controlled or uncontrolled. */
|
|
248
|
+
declare const ExpandableSection: FC<ExpandableSectionProps>;
|
|
249
|
+
|
|
250
|
+
interface ResourceCardProps {
|
|
251
|
+
title: ReactNode;
|
|
252
|
+
subtitle?: ReactNode;
|
|
253
|
+
/** Logo / icon node, rendered in a rounded tile. */
|
|
254
|
+
media?: ReactNode;
|
|
255
|
+
/** Status pill or badge (top-right). */
|
|
256
|
+
badge?: ReactNode;
|
|
257
|
+
/** Footer metadata (e.g. last updated, owner). */
|
|
258
|
+
footer?: ReactNode;
|
|
259
|
+
/** Trailing action in the footer (e.g. sparkline, menu). */
|
|
260
|
+
action?: ReactNode;
|
|
261
|
+
/** Whole-card click — makes the card a button. */
|
|
262
|
+
onClick?: () => void;
|
|
263
|
+
/** Accessible name when `title` is not plain text. */
|
|
264
|
+
ariaLabel?: string;
|
|
265
|
+
className?: string;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Project / agent / dataset card — same elevated surface as integration catalog tiles.
|
|
269
|
+
*/
|
|
270
|
+
declare const ResourceCard: FC<ResourceCardProps>;
|
|
271
|
+
|
|
272
|
+
interface SettingsSectionHeaderProps {
|
|
273
|
+
title: ReactNode;
|
|
274
|
+
description?: ReactNode;
|
|
275
|
+
className?: string;
|
|
276
|
+
}
|
|
277
|
+
/** Title + description block shared across settings pages. */
|
|
278
|
+
declare const SettingsSectionHeader: FC<SettingsSectionHeaderProps>;
|
|
279
|
+
interface SettingsSectionProps {
|
|
280
|
+
title: ReactNode;
|
|
281
|
+
description?: ReactNode;
|
|
282
|
+
/** Rendered under the description in the left rail (e.g. a primary CTA). */
|
|
283
|
+
descriptionFooter?: ReactNode;
|
|
284
|
+
children: ReactNode;
|
|
285
|
+
/** Drop the top divider (first section in a stack). */
|
|
286
|
+
noBorderTop?: boolean;
|
|
287
|
+
className?: string;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Two-column settings block: a compact title/description rail on the left and
|
|
291
|
+
* the controls on the right. Stacks on small screens. The canonical settings
|
|
292
|
+
* page grammar from the platform — purely presentational.
|
|
293
|
+
*/
|
|
294
|
+
declare const SettingsSection: FC<SettingsSectionProps>;
|
|
295
|
+
|
|
296
|
+
interface FieldRowProps {
|
|
297
|
+
label: ReactNode;
|
|
298
|
+
/** The control(s) — input, switch, select, button, etc. */
|
|
299
|
+
children: ReactNode;
|
|
300
|
+
description?: ReactNode;
|
|
301
|
+
/** Place the control inline to the right of the label (good for switches). */
|
|
302
|
+
inline?: boolean;
|
|
303
|
+
htmlFor?: string;
|
|
304
|
+
className?: string;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Labeled settings row: label + optional description on one side, control(s)
|
|
308
|
+
* on the other. `inline` puts the control to the right (toggles); stacked
|
|
309
|
+
* otherwise (inputs/textareas).
|
|
310
|
+
*/
|
|
311
|
+
declare const FieldRow: FC<FieldRowProps>;
|
|
312
|
+
|
|
313
|
+
interface FloatingUnsavedChangesBarProps {
|
|
314
|
+
visible: boolean;
|
|
315
|
+
/** Message on the left (e.g. "Unsaved changes"). */
|
|
316
|
+
message?: ReactNode;
|
|
317
|
+
discardLabel?: ReactNode;
|
|
318
|
+
saveLabel?: ReactNode;
|
|
319
|
+
isSaving?: boolean;
|
|
320
|
+
saveDisabled?: boolean;
|
|
321
|
+
onDiscard?: () => void;
|
|
322
|
+
onSave?: () => void;
|
|
323
|
+
ariaLabel?: string;
|
|
324
|
+
className?: string;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Viewport-fixed discard/save pill, portaled to `document.body` so parent
|
|
328
|
+
* transforms and overflow scrollers never clip it. Springs in from the bottom.
|
|
329
|
+
*/
|
|
330
|
+
declare const FloatingUnsavedChangesBar: FC<FloatingUnsavedChangesBarProps>;
|
|
331
|
+
|
|
332
|
+
interface DangerZoneActionProps {
|
|
333
|
+
title: ReactNode;
|
|
334
|
+
description?: ReactNode;
|
|
335
|
+
/** The destructive control (e.g. a delete Button). */
|
|
336
|
+
action: ReactNode;
|
|
337
|
+
className?: string;
|
|
338
|
+
}
|
|
339
|
+
/** A single destructive row inside `DangerZone`. */
|
|
340
|
+
declare const DangerZoneAction: FC<DangerZoneActionProps>;
|
|
341
|
+
interface DangerZoneProps {
|
|
342
|
+
title?: ReactNode;
|
|
343
|
+
description?: ReactNode;
|
|
344
|
+
children: ReactNode;
|
|
345
|
+
className?: string;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Destructive-actions container with a destructive-tinted border. Wrap one or
|
|
349
|
+
* more `DangerZoneAction` rows (delete project, transfer ownership, etc.).
|
|
350
|
+
*/
|
|
351
|
+
declare const DangerZone: FC<DangerZoneProps>;
|
|
352
|
+
|
|
353
|
+
type IntegrationCardStatus = "available" | "connected" | "disabled" | "locked";
|
|
354
|
+
/** Catalog grid height — matches timbal-platform `INTEGRATION_CATALOG_CARD_HEIGHT_CLASS`. */
|
|
355
|
+
declare const INTEGRATION_CATALOG_CARD_HEIGHT_CLASS = "h-[12.25rem] min-h-[12.25rem] max-h-[12.25rem]";
|
|
356
|
+
interface IntegrationCardProps {
|
|
357
|
+
name: ReactNode;
|
|
358
|
+
description?: ReactNode;
|
|
359
|
+
/** Logo node — an <img>, icon, or lettermark. Rendered in a rounded tile. */
|
|
360
|
+
logo?: ReactNode;
|
|
361
|
+
/** Trailing header slot (e.g. a `PlanBadge`). */
|
|
362
|
+
badge?: ReactNode;
|
|
363
|
+
status?: IntegrationCardStatus;
|
|
364
|
+
/** Footer action — use `<Button variant="secondary" size="sm">` for platform parity. */
|
|
365
|
+
action?: ReactNode;
|
|
366
|
+
/** Whole-card click — makes the card a button (omit when using `action`). */
|
|
367
|
+
onClick?: () => void;
|
|
368
|
+
/** Accessible name when `name` is not plain text, or for whole-card buttons. */
|
|
369
|
+
ariaLabel?: string;
|
|
370
|
+
className?: string;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Catalog card for an integration / connector — elevated secondary chrome (same
|
|
374
|
+
* surface as bordered buttons), logo tile, and optional footer CTA.
|
|
375
|
+
*/
|
|
376
|
+
declare const IntegrationCard: FC<IntegrationCardProps>;
|
|
377
|
+
|
|
378
|
+
interface IntegrationsEmptyStateProps {
|
|
379
|
+
title?: ReactNode;
|
|
380
|
+
description?: ReactNode;
|
|
381
|
+
/** Decorative icon / illustration node. */
|
|
382
|
+
icon?: ReactNode;
|
|
383
|
+
/** Primary CTA (e.g. a "Browse catalog" button). */
|
|
384
|
+
action?: ReactNode;
|
|
385
|
+
className?: string;
|
|
386
|
+
}
|
|
387
|
+
/** Centered empty hero — same elevated chrome as catalog cards. */
|
|
388
|
+
declare const IntegrationsEmptyState: FC<IntegrationsEmptyStateProps>;
|
|
389
|
+
|
|
390
|
+
type PlanBadgeTone = "free" | "pro" | "enterprise" | "beta" | "soon";
|
|
391
|
+
interface PlanBadgeProps {
|
|
392
|
+
/** Kept for API compatibility; styling is neutral for all tiers. */
|
|
393
|
+
tone?: PlanBadgeTone;
|
|
394
|
+
children: ReactNode;
|
|
395
|
+
className?: string;
|
|
396
|
+
}
|
|
397
|
+
/** Small plan / tier chip on integration catalog cards. */
|
|
398
|
+
declare const PlanBadge: FC<PlanBadgeProps>;
|
|
399
|
+
|
|
400
|
+
interface ConnectionRowProps {
|
|
401
|
+
name: ReactNode;
|
|
402
|
+
/** Logo / icon node, rendered in a small rounded tile. */
|
|
403
|
+
logo?: ReactNode;
|
|
404
|
+
/** Secondary line under the name (account, scope, last sync…). */
|
|
405
|
+
meta?: ReactNode;
|
|
406
|
+
/** Status / type pill on the right (e.g. a `StatusBadge` or `PlanBadge`). */
|
|
407
|
+
badge?: ReactNode;
|
|
408
|
+
/** Trailing action(s) — manage, disconnect, overflow menu. */
|
|
409
|
+
action?: ReactNode;
|
|
410
|
+
onClick?: () => void;
|
|
411
|
+
/** Accessible name when `name` is not plain text. */
|
|
412
|
+
ariaLabel?: string;
|
|
413
|
+
className?: string;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* One connected provider as a horizontal row. Wrap rows in a container with
|
|
417
|
+
* `TIMBAL_V2_SECONDARY_CHROME` + `divide-y divide-border` for a single elevated panel.
|
|
418
|
+
*/
|
|
419
|
+
declare const ConnectionRow: FC<ConnectionRowProps>;
|
|
420
|
+
/** List shell for stacked `ConnectionRow`s — one elevated secondary surface. */
|
|
421
|
+
declare const connectionRowListClass: string;
|
|
422
|
+
|
|
423
|
+
interface ConnectionRowListProps {
|
|
424
|
+
children: ReactNode;
|
|
425
|
+
/** Accessible name for the list region. */
|
|
426
|
+
"aria-label"?: string;
|
|
427
|
+
className?: string;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Elevated panel for stacked `ConnectionRow`s — prefer this over hand-rolling
|
|
431
|
+
* `connectionRowListClass` + dividers.
|
|
432
|
+
*/
|
|
433
|
+
declare const ConnectionRowList: FC<ConnectionRowListProps>;
|
|
434
|
+
|
|
435
|
+
interface SubNavItem {
|
|
436
|
+
id: string;
|
|
437
|
+
label: ReactNode;
|
|
438
|
+
}
|
|
439
|
+
interface SubNavProps {
|
|
440
|
+
items: SubNavItem[];
|
|
441
|
+
activeId: string;
|
|
442
|
+
onChange: (id: string) => void;
|
|
443
|
+
className?: string;
|
|
444
|
+
"aria-label"?: string;
|
|
445
|
+
/** Passed to the underlying pill control for shared-layout animation. */
|
|
446
|
+
layoutId?: string;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Section tabs using the same pill segmented control as timbal-platform
|
|
450
|
+
* (Build/Manage, dashboard section bars).
|
|
451
|
+
*/
|
|
452
|
+
declare const SubNav: FC<SubNavProps>;
|
|
453
|
+
|
|
454
|
+
interface BreadcrumbItem {
|
|
455
|
+
label: ReactNode;
|
|
456
|
+
href?: string;
|
|
457
|
+
onClick?: () => void;
|
|
458
|
+
}
|
|
459
|
+
interface BreadcrumbsProps {
|
|
460
|
+
items: BreadcrumbItem[];
|
|
461
|
+
className?: string;
|
|
462
|
+
}
|
|
463
|
+
declare const Breadcrumbs: FC<BreadcrumbsProps>;
|
|
464
|
+
|
|
465
|
+
interface FieldProps {
|
|
466
|
+
label: ReactNode;
|
|
467
|
+
hint?: ReactNode;
|
|
468
|
+
error?: ReactNode;
|
|
469
|
+
children?: ReactNode;
|
|
470
|
+
className?: string;
|
|
471
|
+
htmlFor?: string;
|
|
472
|
+
}
|
|
473
|
+
declare const Field: FC<FieldProps>;
|
|
474
|
+
interface FieldInputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
475
|
+
label: ReactNode;
|
|
476
|
+
hint?: ReactNode;
|
|
477
|
+
error?: ReactNode;
|
|
478
|
+
fieldClassName?: string;
|
|
479
|
+
}
|
|
480
|
+
declare const FieldInput: FC<FieldInputProps>;
|
|
481
|
+
|
|
482
|
+
interface FieldTextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
483
|
+
label: FieldProps["label"];
|
|
484
|
+
hint?: FieldProps["hint"];
|
|
485
|
+
error?: FieldProps["error"];
|
|
486
|
+
fieldClassName?: string;
|
|
487
|
+
}
|
|
488
|
+
declare const FieldTextarea: FC<FieldTextareaProps>;
|
|
489
|
+
|
|
490
|
+
interface FieldSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
491
|
+
label: FieldProps["label"];
|
|
492
|
+
hint?: FieldProps["hint"];
|
|
493
|
+
error?: FieldProps["error"];
|
|
494
|
+
fieldClassName?: string;
|
|
495
|
+
children: ReactNode;
|
|
496
|
+
}
|
|
497
|
+
declare const FieldSelect: FC<FieldSelectProps>;
|
|
498
|
+
|
|
499
|
+
interface FieldSwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
|
|
500
|
+
label: ReactNode;
|
|
501
|
+
description?: ReactNode;
|
|
502
|
+
className?: string;
|
|
503
|
+
}
|
|
504
|
+
declare const FieldSwitch: FC<FieldSwitchProps>;
|
|
505
|
+
|
|
506
|
+
interface SearchInputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
507
|
+
className?: string;
|
|
508
|
+
}
|
|
509
|
+
declare const SearchInput: FC<SearchInputProps>;
|
|
510
|
+
|
|
511
|
+
interface FormSectionProps {
|
|
512
|
+
title?: ReactNode;
|
|
513
|
+
children: ReactNode;
|
|
514
|
+
className?: string;
|
|
515
|
+
}
|
|
516
|
+
declare const FormSection: FC<FormSectionProps>;
|
|
517
|
+
|
|
518
|
+
interface FilterBarProps {
|
|
519
|
+
children: ReactNode;
|
|
520
|
+
className?: string;
|
|
521
|
+
}
|
|
522
|
+
declare const FilterBar: FC<FilterBarProps>;
|
|
523
|
+
|
|
524
|
+
type DataTableSortDirection = "asc" | "desc";
|
|
525
|
+
interface DataTableSort {
|
|
526
|
+
columnId: string;
|
|
527
|
+
direction: DataTableSortDirection;
|
|
528
|
+
}
|
|
529
|
+
interface DataTableColumn<T> {
|
|
530
|
+
id: string;
|
|
531
|
+
header: ReactNode;
|
|
532
|
+
cell: (row: T) => ReactNode;
|
|
533
|
+
className?: string;
|
|
534
|
+
headerClassName?: string;
|
|
535
|
+
align?: "left" | "center" | "right";
|
|
536
|
+
sortable?: boolean;
|
|
537
|
+
/** Value used when sorting; defaults to stringifying `cell(row)`. */
|
|
538
|
+
sortValue?: (row: T) => string | number | boolean | Date | null | undefined;
|
|
539
|
+
}
|
|
540
|
+
interface DataTableProps<T> {
|
|
541
|
+
columns: DataTableColumn<T>[];
|
|
542
|
+
rows: T[];
|
|
543
|
+
getRowKey: (row: T) => string;
|
|
544
|
+
emptyTitle?: ReactNode;
|
|
545
|
+
emptyDescription?: ReactNode;
|
|
546
|
+
/** When `inline`, keeps the table chrome and shows an in-body empty message. */
|
|
547
|
+
emptyMode?: "replace" | "inline";
|
|
548
|
+
className?: string;
|
|
549
|
+
sort?: DataTableSort | null;
|
|
550
|
+
defaultSort?: DataTableSort | null;
|
|
551
|
+
onSortChange?: (sort: DataTableSort | null) => void;
|
|
552
|
+
showRowCount?: boolean;
|
|
553
|
+
rowCountLabel?: (count: number) => ReactNode;
|
|
554
|
+
footer?: ReactNode;
|
|
555
|
+
onRowClick?: (row: T) => void;
|
|
556
|
+
stickyHeader?: boolean;
|
|
557
|
+
dense?: boolean;
|
|
558
|
+
caption?: string;
|
|
559
|
+
}
|
|
560
|
+
declare function DataTable<T>({ columns, rows, getRowKey, emptyTitle, emptyDescription, emptyMode, className, sort: sortProp, defaultSort, onSortChange, showRowCount, rowCountLabel, footer, onRowClick, stickyHeader, dense, caption, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
561
|
+
|
|
562
|
+
interface ChartPanelProps {
|
|
563
|
+
title?: ReactNode;
|
|
564
|
+
description?: ReactNode;
|
|
565
|
+
/** Built-in SVG chart — alternative to custom `children`. */
|
|
566
|
+
artifact?: ChartArtifact;
|
|
567
|
+
children?: ReactNode;
|
|
568
|
+
actions?: ReactNode;
|
|
569
|
+
/** Plot height in px. Default 300 (same as `MetricChartCard`). */
|
|
570
|
+
height?: number;
|
|
571
|
+
className?: string;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Chart shell matching `MetricChartCard` — title row with side padding, flush
|
|
575
|
+
* plot edge-to-edge with only top inset on the chart region.
|
|
576
|
+
*/
|
|
577
|
+
declare const ChartPanel: FC<ChartPanelProps>;
|
|
578
|
+
|
|
579
|
+
interface MetricTileProps {
|
|
580
|
+
label: ReactNode;
|
|
581
|
+
value: ReactNode;
|
|
582
|
+
/** Small unit suffix next to the value (e.g. "ms", "%"). */
|
|
583
|
+
unit?: ReactNode;
|
|
584
|
+
/** Optional trend pill (e.g. "+8%"). */
|
|
585
|
+
trend?: ReactNode;
|
|
586
|
+
trendTone?: "up" | "down" | "neutral";
|
|
587
|
+
/** Selected state — draws the bottom accent bar (for selectable rows). */
|
|
588
|
+
active?: boolean;
|
|
589
|
+
/** Right divider between cells in a metrics row. */
|
|
590
|
+
showDivider?: boolean;
|
|
591
|
+
/** Makes the tile a button. Omit for a static tile. */
|
|
592
|
+
onSelect?: () => void;
|
|
593
|
+
/** Override the default accessible name (use when `label` is not plain text). */
|
|
594
|
+
ariaLabel?: string;
|
|
595
|
+
className?: string;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Single KPI cell — matches timbal-platform `MetricsRowCard` / `MetricCell`.
|
|
599
|
+
* Use inside `MetricRow` or `MetricChartCard`, or standalone.
|
|
600
|
+
*/
|
|
601
|
+
declare const MetricTile: FC<MetricTileProps>;
|
|
602
|
+
|
|
603
|
+
interface MetricCardHeaderProps {
|
|
604
|
+
title?: ReactNode;
|
|
605
|
+
/** Hook for `aria-labelledby` on the parent card `<section>`. */
|
|
606
|
+
titleId?: string;
|
|
607
|
+
description?: ReactNode;
|
|
608
|
+
actions?: ReactNode;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
interface MetricRowItem {
|
|
612
|
+
id: string;
|
|
613
|
+
label: MetricTileProps["label"];
|
|
614
|
+
value: MetricTileProps["value"];
|
|
615
|
+
unit?: MetricTileProps["unit"];
|
|
616
|
+
trend?: MetricTileProps["trend"];
|
|
617
|
+
trendTone?: MetricTileProps["trendTone"];
|
|
618
|
+
}
|
|
619
|
+
interface MetricRowProps extends MetricCardHeaderProps {
|
|
620
|
+
metrics: MetricRowItem[];
|
|
621
|
+
/** When set, tiles are selectable and call `onMetricChange`. */
|
|
622
|
+
activeMetricId?: string;
|
|
623
|
+
defaultActiveMetricId?: string;
|
|
624
|
+
onMetricChange?: (id: string) => void;
|
|
625
|
+
/** Accessible name for the KPI tile group (when tiles are selectable). */
|
|
626
|
+
metricsAriaLabel?: string;
|
|
627
|
+
className?: string;
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* Platform-style KPI strip in one elevated card — no chart.
|
|
631
|
+
* Use for overview rows; pair with `MetricChartCard` when you need the plot below.
|
|
632
|
+
*/
|
|
633
|
+
declare const MetricRow: FC<MetricRowProps>;
|
|
634
|
+
|
|
635
|
+
/** Theme-aware default series palette. Primary uses the app's `--primary` token. */
|
|
636
|
+
declare const CHART_PALETTE: readonly ["var(--primary, #6366f1)", "#10b981", "#f59e0b", "#06b6d4", "#a855f7", "#ef4444"];
|
|
637
|
+
interface ChartSeries {
|
|
638
|
+
dataKey: string;
|
|
639
|
+
label?: string;
|
|
640
|
+
/** CSS color (token or literal). Defaults to the palette by index. */
|
|
641
|
+
color?: string;
|
|
642
|
+
}
|
|
643
|
+
type ChartVariant = "area" | "line" | "bar";
|
|
644
|
+
/** `flush` — plot edge-to-edge (no side/bottom inset); axes/legend off by default. */
|
|
645
|
+
type ChartLayout = "default" | "flush";
|
|
646
|
+
interface LineAreaChartProps {
|
|
647
|
+
data: Array<Record<string, unknown>>;
|
|
648
|
+
/** Category / x-axis key. Inferred from the first non-numeric field if omitted. */
|
|
649
|
+
xKey?: string;
|
|
650
|
+
/** Series to plot. Strings are shorthand for `{ dataKey }`. Inferred if omitted. */
|
|
651
|
+
series?: Array<ChartSeries | string>;
|
|
652
|
+
variant?: ChartVariant;
|
|
653
|
+
/** Plot height in px (width is responsive). Default 240. */
|
|
654
|
+
height?: number;
|
|
655
|
+
/** Appended to axis ticks and tooltip values (e.g. "ms", "%"). */
|
|
656
|
+
unit?: string;
|
|
657
|
+
/** Fix the y-domain max (e.g. 100 for percentages). */
|
|
658
|
+
yMax?: number;
|
|
659
|
+
/** `flush` fills the container width/height except top inset (for `MetricChartCard`). */
|
|
660
|
+
layout?: ChartLayout;
|
|
661
|
+
showGrid?: boolean;
|
|
662
|
+
showXAxis?: boolean;
|
|
663
|
+
showYAxis?: boolean;
|
|
664
|
+
/** Series legend below the plot. Default: on when `layout` is `default` and multiple series. */
|
|
665
|
+
showLegend?: boolean;
|
|
666
|
+
showTooltip?: boolean;
|
|
667
|
+
formatValue?: (value: number) => string;
|
|
668
|
+
formatX?: (raw: unknown, index: number) => string;
|
|
669
|
+
className?: string;
|
|
670
|
+
/** Accessible label for the chart image. */
|
|
671
|
+
ariaLabel?: string;
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Polished, dependency-free chart: smooth monotone curves, gradient area fill,
|
|
675
|
+
* faded dashed gridlines, hover crosshair + floating tooltip, and a cheap
|
|
676
|
+
* clip-path grow-in animation. Renders crisp at the container's pixel width.
|
|
677
|
+
*/
|
|
678
|
+
declare const LineAreaChart: FC<LineAreaChartProps>;
|
|
679
|
+
|
|
680
|
+
interface MetricChartMetric {
|
|
681
|
+
id: string;
|
|
682
|
+
label: ReactNode;
|
|
683
|
+
value: ReactNode;
|
|
684
|
+
unit?: ReactNode;
|
|
685
|
+
trend?: ReactNode;
|
|
686
|
+
trendTone?: MetricTileProps["trendTone"];
|
|
687
|
+
/** Time-series for this metric, shown in the chart when selected. */
|
|
688
|
+
data?: Array<Record<string, unknown>>;
|
|
689
|
+
/** Value field within `data`. Default "value". */
|
|
690
|
+
dataKey?: string;
|
|
691
|
+
/** Line/area color for this metric. Defaults to the chart palette. */
|
|
692
|
+
color?: string;
|
|
693
|
+
}
|
|
694
|
+
interface MetricChartCardProps {
|
|
695
|
+
title?: ReactNode;
|
|
696
|
+
description?: ReactNode;
|
|
697
|
+
/** Trailing header control (e.g. a "See detail" link/button). */
|
|
698
|
+
actions?: ReactNode;
|
|
699
|
+
metrics: MetricChartMetric[];
|
|
700
|
+
/** Controlled selected metric id. */
|
|
701
|
+
activeMetricId?: string;
|
|
702
|
+
defaultActiveMetricId?: string;
|
|
703
|
+
onMetricChange?: (id: string) => void;
|
|
704
|
+
/** x-axis key shared across metric series. Default "date". */
|
|
705
|
+
xKey?: string;
|
|
706
|
+
variant?: ChartVariant;
|
|
707
|
+
/** Chart plot height in px. Default 300 (platform overview). */
|
|
708
|
+
height?: number;
|
|
709
|
+
formatX?: (raw: unknown, index: number) => string;
|
|
710
|
+
formatValue?: (value: number) => string;
|
|
711
|
+
/** Shown when the active metric has no data. */
|
|
712
|
+
emptyLabel?: ReactNode;
|
|
713
|
+
/** Accessible name for the selectable KPI tile group. */
|
|
714
|
+
metricsAriaLabel?: string;
|
|
715
|
+
className?: string;
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* Analytics card: selectable KPI row over a flush area chart —
|
|
719
|
+
* timbal-platform `MetricsRowCard` / Studio analytics pattern.
|
|
720
|
+
*/
|
|
721
|
+
declare const MetricChartCard: FC<MetricChartCardProps>;
|
|
722
|
+
|
|
723
|
+
interface SparklineProps {
|
|
724
|
+
/** Numeric values, or objects from which `dataKey` is read. */
|
|
725
|
+
data: Array<number | Record<string, unknown>>;
|
|
726
|
+
dataKey?: string;
|
|
727
|
+
color?: string;
|
|
728
|
+
/** Show a soft gradient fill under the line. Default true. */
|
|
729
|
+
area?: boolean;
|
|
730
|
+
width?: number;
|
|
731
|
+
height?: number;
|
|
732
|
+
strokeWidth?: number;
|
|
733
|
+
className?: string;
|
|
734
|
+
ariaLabel?: string;
|
|
735
|
+
}
|
|
736
|
+
/** Tiny inline trend line — no axes, no chrome. For table cells and stat tiles. */
|
|
737
|
+
declare const Sparkline: FC<SparklineProps>;
|
|
738
|
+
|
|
739
|
+
interface ChartArtifactViewProps {
|
|
740
|
+
artifact: ChartArtifact;
|
|
741
|
+
/**
|
|
742
|
+
* Skip `ArtifactCard` chrome — used by `ChartPanel` which supplies the
|
|
743
|
+
* analytics-style shell (title row + flush plot).
|
|
744
|
+
*/
|
|
745
|
+
embedded?: boolean;
|
|
746
|
+
/** Plot height when `embedded`. Default 300 (matches `MetricChartCard`). */
|
|
747
|
+
height?: number;
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* Renders a `chart` artifact. Bar / line / area go through the shared
|
|
751
|
+
* `LineAreaChart` engine (smooth curves, gradient fill, hover tooltip); pie
|
|
752
|
+
* stays a small inline SVG.
|
|
753
|
+
*/
|
|
754
|
+
declare const ChartArtifactView: FC<ChartArtifactViewProps>;
|
|
755
|
+
|
|
756
|
+
export { FieldSwitch as $, APP_KIT_AGENT_INSTRUCTIONS as A, type BreadcrumbItem as B, CHART_PALETTE as C, DangerZone as D, DangerZoneAction as E, type DangerZoneActionProps as F, type DangerZoneProps as G, DataTable as H, type DataTableColumn as I, type DataTableProps as J, type DataTableSort as K, type DataTableSortDirection as L, type DescriptionItem as M, DescriptionList as N, type DescriptionListProps as O, EmptyState as P, type EmptyStateProps as Q, ExpandableSection as R, type ExpandableSectionProps as S, Field as T, FieldInput as U, type FieldInputProps as V, type FieldProps as W, FieldRow as X, type FieldRowProps as Y, FieldSelect as Z, type FieldSelectProps as _, AppChatPanel as a, type FieldSwitchProps as a0, FieldTextarea as a1, type FieldTextareaProps as a2, FilterBar as a3, type FilterBarProps as a4, FloatingUnsavedChangesBar as a5, type FloatingUnsavedChangesBarProps as a6, FormSection as a7, type FormSectionProps as a8, INTEGRATION_CATALOG_CARD_HEIGHT_CLASS as a9, type ResourceCardProps as aA, SearchInput as aB, type SearchInputProps as aC, Section as aD, type SectionProps as aE, SettingsSection as aF, SettingsSectionHeader as aG, type SettingsSectionHeaderProps as aH, type SettingsSectionProps as aI, Sparkline as aJ, type SparklineProps as aK, StatTile as aL, type StatTileProps as aM, StatusBadge as aN, type StatusBadgeProps as aO, type StatusBadgeTone as aP, StatusDot as aQ, type StatusDotProps as aR, type StatusDotTone as aS, SubNav as aT, type SubNavItem as aU, type SubNavProps as aV, SurfaceCard as aW, type SurfaceCardProps as aX, connectionRowListClass as aY, useAppCopilotContext as aZ, useAppShellChat as a_, InfoCard as aa, type InfoCardProps as ab, type InfoCardTone as ac, IntegrationCard as ad, type IntegrationCardProps as ae, type IntegrationCardStatus as af, IntegrationsEmptyState as ag, type IntegrationsEmptyStateProps as ah, LineAreaChart as ai, type LineAreaChartProps as aj, MetricChartCard as ak, type MetricChartCardProps as al, type MetricChartMetric as am, MetricRow as an, type MetricRowItem as ao, type MetricRowProps as ap, MetricTile as aq, type MetricTileProps as ar, Page as as, PageHeader as at, type PageHeaderProps as au, type PageProps as av, PlanBadge as aw, type PlanBadgeProps as ax, type PlanBadgeTone as ay, ResourceCard as az, type AppChatPanelProps as b, AppConfirmDialog as c, type AppConfirmDialogProps as d, type AppCopilotContextValue as e, AppCopilotProvider as f, type AppCopilotProviderProps as g, AppShell as h, type AppShellChatControls as i, AppShellChatTrigger as j, type AppShellChatTriggerProps as k, type AppShellProps as l, AppShellTopbar as m, type AppShellTopbarProps as n, Breadcrumbs as o, type BreadcrumbsProps as p, ChartArtifactView as q, type ChartLayout as r, ChartPanel as s, type ChartPanelProps as t, type ChartSeries as u, type ChartVariant as v, ConnectionRow as w, ConnectionRowList as x, type ConnectionRowListProps as y, type ConnectionRowProps as z };
|