@twentyfirstmedia/elements 0.0.0-stage → 0.1.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/LICENSE +30 -0
- package/README.md +52 -2
- package/dist/custom-elements.json +24589 -0
- package/dist/elements.d.ts +3245 -0
- package/dist/elements.global.js +87 -0
- package/dist/elements.js +87 -0
- package/dist/vscode.html-custom-data.json +7718 -0
- package/package.json +69 -3
|
@@ -0,0 +1,3245 @@
|
|
|
1
|
+
// Generated by scripts/generate.ts from @twentyfirstmedia/ui-core. Do not edit.
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
/** Content of a slot-like prop: text, a DOM node, or a list of them. */
|
|
5
|
+
export type ReactNode = string | number | boolean | null | undefined | Node | readonly ReactNode[];
|
|
6
|
+
export type CSSProperties = { [property: string]: string | number | undefined };
|
|
7
|
+
export type ChangeEvent<T = Element> = Event & { target: T; currentTarget: T };
|
|
8
|
+
export type MouseEvent<T = Element> = globalThis.MouseEvent & { currentTarget: T };
|
|
9
|
+
export type IconName =
|
|
10
|
+
| "thumbUp"
|
|
11
|
+
| "thumbDown"
|
|
12
|
+
| "arrowUp"
|
|
13
|
+
| "heart"
|
|
14
|
+
| "tag"
|
|
15
|
+
| "cart"
|
|
16
|
+
| "package"
|
|
17
|
+
| "truck"
|
|
18
|
+
| "plus"
|
|
19
|
+
| "minus"
|
|
20
|
+
| "check"
|
|
21
|
+
| "x"
|
|
22
|
+
| "more"
|
|
23
|
+
| "search"
|
|
24
|
+
| "bell"
|
|
25
|
+
| "clock"
|
|
26
|
+
| "eye"
|
|
27
|
+
| "edit"
|
|
28
|
+
| "trash"
|
|
29
|
+
| "users"
|
|
30
|
+
| "user"
|
|
31
|
+
| "home"
|
|
32
|
+
| "chart"
|
|
33
|
+
| "mail"
|
|
34
|
+
| "grid"
|
|
35
|
+
| "share"
|
|
36
|
+
| "menu"
|
|
37
|
+
| "play"
|
|
38
|
+
| "calendar"
|
|
39
|
+
| "file"
|
|
40
|
+
| "card"
|
|
41
|
+
| "swap"
|
|
42
|
+
| "send"
|
|
43
|
+
| "download"
|
|
44
|
+
| "book"
|
|
45
|
+
| "chevronDown"
|
|
46
|
+
| "chevronLeft"
|
|
47
|
+
| "chevronRight"
|
|
48
|
+
| "arrowUpRight"
|
|
49
|
+
| "sparkle"
|
|
50
|
+
| "filter"
|
|
51
|
+
| "settings"
|
|
52
|
+
| "lock"
|
|
53
|
+
| "link"
|
|
54
|
+
| "paperclip"
|
|
55
|
+
| "star"
|
|
56
|
+
| "flag"
|
|
57
|
+
| "trend"
|
|
58
|
+
| "globe"
|
|
59
|
+
| "inbox"
|
|
60
|
+
| "logout"
|
|
61
|
+
| "moon"
|
|
62
|
+
| "bot"
|
|
63
|
+
| "code"
|
|
64
|
+
| "branch"
|
|
65
|
+
| "terminal"
|
|
66
|
+
| "server"
|
|
67
|
+
| "key"
|
|
68
|
+
| "database"
|
|
69
|
+
| "refresh"
|
|
70
|
+
| "pause"
|
|
71
|
+
| "archive"
|
|
72
|
+
| "reply"
|
|
73
|
+
| "shield"
|
|
74
|
+
| "help"
|
|
75
|
+
| "cpu"
|
|
76
|
+
| "zap"
|
|
77
|
+
| "folder"
|
|
78
|
+
| "image"
|
|
79
|
+
| "pin"
|
|
80
|
+
| "map"
|
|
81
|
+
| "upload"
|
|
82
|
+
| "copy"
|
|
83
|
+
| "bed"
|
|
84
|
+
| "ruler"
|
|
85
|
+
| "wallet"
|
|
86
|
+
| "ban"
|
|
87
|
+
| "list"
|
|
88
|
+
| "layers"
|
|
89
|
+
| "bold"
|
|
90
|
+
| "italic"
|
|
91
|
+
| "underline"
|
|
92
|
+
| "olist"
|
|
93
|
+
| "heading"
|
|
94
|
+
| "quote"
|
|
95
|
+
| "undo"
|
|
96
|
+
| "redo"
|
|
97
|
+
| "monitor"
|
|
98
|
+
| "phone"
|
|
99
|
+
| "expand"
|
|
100
|
+
| "sun"
|
|
101
|
+
| "cookie"
|
|
102
|
+
| "webhook";
|
|
103
|
+
|
|
104
|
+
export type ToastTone = "success" | "info" | "warning" | "danger";
|
|
105
|
+
export interface ToastOptions {
|
|
106
|
+
text: ReactNode;
|
|
107
|
+
tone?: ToastTone;
|
|
108
|
+
icon?: IconName;
|
|
109
|
+
/** Shows an Undo button; the toast stays 6 s instead of 4 s. */
|
|
110
|
+
undo?: () => void;
|
|
111
|
+
action?: { label: string; onClick: () => void };
|
|
112
|
+
/** Milliseconds before it closes on its own. */
|
|
113
|
+
duration?: number;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export type Kit = "halo" | "pro";
|
|
117
|
+
export type Theme = "light" | "dark" | "system";
|
|
118
|
+
export type Density = "compact" | "comfortable";
|
|
119
|
+
export interface UIProviderProps {
|
|
120
|
+
/** Which kit's CSS applies (sets `data-kit`). Only matters when both kits are loaded (`themes.css`). */
|
|
121
|
+
kit?: Kit;
|
|
122
|
+
/** Colour theme (sets `data-theme`). Omit to keep the kit's default. */
|
|
123
|
+
theme?: Theme;
|
|
124
|
+
/** Density (sets `data-density`). Omit to keep the kit's default (Halo comfortable, Pro compact). */
|
|
125
|
+
density?: Density;
|
|
126
|
+
/**
|
|
127
|
+
* Where the data attributes go. `"document"` (default) sets them on `<html>`, so portals
|
|
128
|
+
* (modals, toasts, menus) inherit the theme. `"subtree"` wraps the children in a div that carries
|
|
129
|
+
* them and hosts the portals, for previews that show several kits on one page.
|
|
130
|
+
*/
|
|
131
|
+
scope?: "document" | "subtree";
|
|
132
|
+
/**
|
|
133
|
+
* Theme colours for everything inside, like a shadcn theme: shadcn variable names without the
|
|
134
|
+
* dashes (`{ primary: "#2563eb", ring: "#2563eb" }`), or `{ light, dark, radius }` for values
|
|
135
|
+
* per mode. For a fixed theme, CSS is simpler (see `themeCss`); this is for runtime brands.
|
|
136
|
+
*/
|
|
137
|
+
tokens?: ThemeValues | ThemeInput;
|
|
138
|
+
className?: string;
|
|
139
|
+
style?: CSSProperties;
|
|
140
|
+
children?: ReactNode;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
/* Props of every component, ported from the reference (design-system/components/index.d.ts). */
|
|
146
|
+
|
|
147
|
+
/** Every component accepts an extra class and inline style on its root element. */
|
|
148
|
+
export interface BaseProps {
|
|
149
|
+
className?: string;
|
|
150
|
+
style?: CSSProperties;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export type Tint = "sky" | "mint" | "lilac" | "butter" | "blush";
|
|
154
|
+
|
|
155
|
+
export interface ButtonProps extends BaseProps {
|
|
156
|
+
variant?: "primary" | "secondary" | "soft" | "ghost" | "danger" | "danger-solid";
|
|
157
|
+
size?: "md" | "sm";
|
|
158
|
+
icon?: IconName;
|
|
159
|
+
iconRight?: IconName;
|
|
160
|
+
disabled?: boolean;
|
|
161
|
+
type?: "button" | "submit";
|
|
162
|
+
onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
163
|
+
children?: ReactNode;
|
|
164
|
+
/** Render the single child element (a link, a router Link) with the button's look instead of a <button>. */
|
|
165
|
+
asChild?: boolean;
|
|
166
|
+
}
|
|
167
|
+
export interface IconButtonProps extends BaseProps {
|
|
168
|
+
icon: IconName;
|
|
169
|
+
label: string;
|
|
170
|
+
variant?: "soft" | "solid" | "outline" | "ghost";
|
|
171
|
+
size?: "sm" | "md" | "lg";
|
|
172
|
+
onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
173
|
+
disabled?: boolean;
|
|
174
|
+
/** Render the single child element (a link) with the button's look; the icon is placed inside it. */
|
|
175
|
+
asChild?: boolean;
|
|
176
|
+
children?: ReactNode;
|
|
177
|
+
}
|
|
178
|
+
export interface ChipProps extends BaseProps {
|
|
179
|
+
selected?: boolean;
|
|
180
|
+
icon?: IconName;
|
|
181
|
+
count?: number;
|
|
182
|
+
onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
183
|
+
children?: ReactNode;
|
|
184
|
+
}
|
|
185
|
+
export interface BadgeProps extends BaseProps {
|
|
186
|
+
tone?: Tone;
|
|
187
|
+
dot?: boolean;
|
|
188
|
+
live?: boolean;
|
|
189
|
+
children?: ReactNode;
|
|
190
|
+
}
|
|
191
|
+
export interface TintIconProps extends BaseProps {
|
|
192
|
+
icon: IconName;
|
|
193
|
+
tint?: Tint | "plain";
|
|
194
|
+
label?: string;
|
|
195
|
+
size?: number;
|
|
196
|
+
}
|
|
197
|
+
export interface AvatarProps extends BaseProps {
|
|
198
|
+
name: string;
|
|
199
|
+
src?: string;
|
|
200
|
+
size?: number;
|
|
201
|
+
tint?: Tint | "surface-sunken";
|
|
202
|
+
}
|
|
203
|
+
export interface AvatarStackProps extends BaseProps {
|
|
204
|
+
names: string[];
|
|
205
|
+
max?: number;
|
|
206
|
+
size?: number;
|
|
207
|
+
}
|
|
208
|
+
export interface FieldProps extends BaseProps {
|
|
209
|
+
label?: string;
|
|
210
|
+
hint?: string;
|
|
211
|
+
error?: string;
|
|
212
|
+
/** Form field name: the value's key in `Form`, and where its validation message shows. */
|
|
213
|
+
name?: string;
|
|
214
|
+
id?: string;
|
|
215
|
+
required?: boolean;
|
|
216
|
+
}
|
|
217
|
+
export interface InputProps extends FieldProps, BaseProps {
|
|
218
|
+
type?: string;
|
|
219
|
+
placeholder?: string;
|
|
220
|
+
value?: string;
|
|
221
|
+
defaultValue?: string;
|
|
222
|
+
disabled?: boolean;
|
|
223
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
224
|
+
}
|
|
225
|
+
export interface SelectProps extends FieldProps, BaseProps {
|
|
226
|
+
options: string[];
|
|
227
|
+
value?: string;
|
|
228
|
+
defaultValue?: string;
|
|
229
|
+
onChange?: (e: ChangeEvent<HTMLSelectElement>) => void;
|
|
230
|
+
}
|
|
231
|
+
export interface TextareaProps extends FieldProps, BaseProps {
|
|
232
|
+
placeholder?: string;
|
|
233
|
+
value?: string;
|
|
234
|
+
defaultValue?: string;
|
|
235
|
+
rows?: number;
|
|
236
|
+
disabled?: boolean;
|
|
237
|
+
onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
|
|
238
|
+
}
|
|
239
|
+
export interface SearchFieldProps extends BaseProps {
|
|
240
|
+
placeholder?: string;
|
|
241
|
+
shortcut?: string;
|
|
242
|
+
value?: string;
|
|
243
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
244
|
+
}
|
|
245
|
+
export interface CheckboxProps extends BaseProps {
|
|
246
|
+
name?: string;
|
|
247
|
+
value?: string;
|
|
248
|
+
required?: boolean;
|
|
249
|
+
checked?: boolean;
|
|
250
|
+
defaultChecked?: boolean;
|
|
251
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
252
|
+
children?: ReactNode;
|
|
253
|
+
disabled?: boolean;
|
|
254
|
+
label?: string;
|
|
255
|
+
}
|
|
256
|
+
export interface SwitchProps extends BaseProps {
|
|
257
|
+
name?: string;
|
|
258
|
+
checked?: boolean;
|
|
259
|
+
defaultChecked?: boolean;
|
|
260
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
261
|
+
children?: ReactNode;
|
|
262
|
+
spread?: boolean;
|
|
263
|
+
disabled?: boolean;
|
|
264
|
+
label?: string;
|
|
265
|
+
}
|
|
266
|
+
export interface TabsProps extends BaseProps {
|
|
267
|
+
items: string[];
|
|
268
|
+
value?: string;
|
|
269
|
+
defaultValue?: string;
|
|
270
|
+
onChange?: (v: string) => void;
|
|
271
|
+
block?: boolean;
|
|
272
|
+
/** Content per tab; renders the tab panels under the bar, wired with tab/tabpanel roles. */
|
|
273
|
+
panels?: Record<string, ReactNode>;
|
|
274
|
+
/** Accessible name of the tab list. */
|
|
275
|
+
label?: string;
|
|
276
|
+
}
|
|
277
|
+
export interface StatTileProps extends BaseProps {
|
|
278
|
+
value: ReactNode;
|
|
279
|
+
label: string;
|
|
280
|
+
tint?: Tint | "surface" | "placeholder";
|
|
281
|
+
delta?: string;
|
|
282
|
+
delay?: number;
|
|
283
|
+
}
|
|
284
|
+
export interface CardProps extends BaseProps {
|
|
285
|
+
title?: string;
|
|
286
|
+
description?: string;
|
|
287
|
+
meta?: string[];
|
|
288
|
+
corner?: ReactNode;
|
|
289
|
+
status?: ReactNode;
|
|
290
|
+
actions?: ReactNode[];
|
|
291
|
+
tint?: Tint | "surface";
|
|
292
|
+
onClick?: () => void;
|
|
293
|
+
children?: ReactNode;
|
|
294
|
+
eyebrow?: ReactNode;
|
|
295
|
+
}
|
|
296
|
+
export interface EventCardProps extends BaseProps {
|
|
297
|
+
kind?: "meeting" | "deadline" | "review" | "launch" | "incident";
|
|
298
|
+
label: string;
|
|
299
|
+
date: string;
|
|
300
|
+
time: string;
|
|
301
|
+
tint?: Tint;
|
|
302
|
+
icon?: IconName;
|
|
303
|
+
actions?: boolean;
|
|
304
|
+
children?: ReactNode;
|
|
305
|
+
}
|
|
306
|
+
export interface PanelProps extends BaseProps {
|
|
307
|
+
side?: boolean;
|
|
308
|
+
title?: string;
|
|
309
|
+
subtitle?: string;
|
|
310
|
+
action?: ReactNode;
|
|
311
|
+
children?: ReactNode;
|
|
312
|
+
}
|
|
313
|
+
export interface PageHeaderProps extends BaseProps {
|
|
314
|
+
crumbs?: string[];
|
|
315
|
+
title: string;
|
|
316
|
+
subtitle?: string;
|
|
317
|
+
actions?: ReactNode[];
|
|
318
|
+
}
|
|
319
|
+
export interface NavItem {
|
|
320
|
+
label: string;
|
|
321
|
+
icon: IconName;
|
|
322
|
+
count?: number;
|
|
323
|
+
}
|
|
324
|
+
export interface TopBarProps extends BaseProps {
|
|
325
|
+
brand?: string;
|
|
326
|
+
tag?: string;
|
|
327
|
+
items: NavItem[];
|
|
328
|
+
active?: string;
|
|
329
|
+
user?: { name: string; email?: string };
|
|
330
|
+
onNavigate?: (label: string) => void;
|
|
331
|
+
extra?: ReactNode;
|
|
332
|
+
userOpen?: boolean;
|
|
333
|
+
onUser?: () => void;
|
|
334
|
+
}
|
|
335
|
+
export interface RailItem {
|
|
336
|
+
label: string;
|
|
337
|
+
icon: IconName;
|
|
338
|
+
active?: boolean;
|
|
339
|
+
count?: number;
|
|
340
|
+
onClick?: () => void;
|
|
341
|
+
}
|
|
342
|
+
export interface SideRailProps extends BaseProps {
|
|
343
|
+
top?: RailItem[];
|
|
344
|
+
bottom?: RailItem[];
|
|
345
|
+
}
|
|
346
|
+
export interface DockItem {
|
|
347
|
+
label: string;
|
|
348
|
+
icon: IconName;
|
|
349
|
+
tint?: Tint | "plain";
|
|
350
|
+
onClick?: () => void;
|
|
351
|
+
}
|
|
352
|
+
export interface DockProps extends BaseProps {
|
|
353
|
+
items: DockItem[];
|
|
354
|
+
label?: string;
|
|
355
|
+
}
|
|
356
|
+
export interface TableColumn {
|
|
357
|
+
key: string;
|
|
358
|
+
label: string;
|
|
359
|
+
align?: "left" | "right";
|
|
360
|
+
width?: number | string;
|
|
361
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- rows are app data
|
|
362
|
+
render?: (row: any) => ReactNode;
|
|
363
|
+
}
|
|
364
|
+
export interface TableProps extends BaseProps {
|
|
365
|
+
columns: TableColumn[];
|
|
366
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- rows are app data
|
|
367
|
+
rows: Record<string, any>[];
|
|
368
|
+
animate?: boolean;
|
|
369
|
+
}
|
|
370
|
+
export interface ProgressProps extends BaseProps {
|
|
371
|
+
value: number;
|
|
372
|
+
tint?: "sky" | "mint" | "butter";
|
|
373
|
+
label?: string;
|
|
374
|
+
}
|
|
375
|
+
export interface ToastProps extends BaseProps {
|
|
376
|
+
icon?: IconName;
|
|
377
|
+
tint?: Tint;
|
|
378
|
+
action?: string;
|
|
379
|
+
onAction?: () => void;
|
|
380
|
+
children?: ReactNode;
|
|
381
|
+
}
|
|
382
|
+
export interface EmptyStateProps extends BaseProps {
|
|
383
|
+
title: string;
|
|
384
|
+
text?: string;
|
|
385
|
+
icon?: IconName;
|
|
386
|
+
tint?: Tint;
|
|
387
|
+
action?: ReactNode;
|
|
388
|
+
}
|
|
389
|
+
export interface BreadcrumbProps extends BaseProps {
|
|
390
|
+
items: string[];
|
|
391
|
+
}
|
|
392
|
+
export interface PaginationProps extends BaseProps {
|
|
393
|
+
total: number;
|
|
394
|
+
page?: number;
|
|
395
|
+
}
|
|
396
|
+
export interface AppShellProps extends BaseProps {
|
|
397
|
+
active?: string;
|
|
398
|
+
brand?: string;
|
|
399
|
+
tag?: string;
|
|
400
|
+
nav?: NavItem[];
|
|
401
|
+
user?: { name: string; email?: string };
|
|
402
|
+
onNavigate?: (label: string) => void;
|
|
403
|
+
topExtra?: ReactNode;
|
|
404
|
+
sheetStyle?: CSSProperties;
|
|
405
|
+
contentKey?: string | number;
|
|
406
|
+
side?: ReactNode;
|
|
407
|
+
dock?: boolean;
|
|
408
|
+
dockItems?: DockProps["items"];
|
|
409
|
+
railTop?: RailItem[];
|
|
410
|
+
railBottom?: RailItem[];
|
|
411
|
+
children?: ReactNode;
|
|
412
|
+
}
|
|
413
|
+
export interface StaggerProps extends BaseProps {
|
|
414
|
+
as?: string;
|
|
415
|
+
className?: string;
|
|
416
|
+
style?: CSSProperties;
|
|
417
|
+
delay?: number;
|
|
418
|
+
children?: ReactNode;
|
|
419
|
+
}
|
|
420
|
+
export interface CountUpProps extends BaseProps {
|
|
421
|
+
value: string | number;
|
|
422
|
+
duration?: number;
|
|
423
|
+
delay?: number;
|
|
424
|
+
className?: string;
|
|
425
|
+
}
|
|
426
|
+
export interface ListRowProps extends BaseProps {
|
|
427
|
+
avatar?: string;
|
|
428
|
+
icon?: IconName;
|
|
429
|
+
tint?: Tint | "plain";
|
|
430
|
+
leading?: ReactNode;
|
|
431
|
+
title: ReactNode;
|
|
432
|
+
subtitle?: ReactNode;
|
|
433
|
+
meta?: ReactNode;
|
|
434
|
+
trailing?: ReactNode;
|
|
435
|
+
unread?: boolean;
|
|
436
|
+
active?: boolean;
|
|
437
|
+
onClick?: () => void;
|
|
438
|
+
}
|
|
439
|
+
export interface TimelineProps extends BaseProps {
|
|
440
|
+
items: {
|
|
441
|
+
avatar?: string;
|
|
442
|
+
icon?: IconName;
|
|
443
|
+
tint?: Tint | "plain";
|
|
444
|
+
text: ReactNode;
|
|
445
|
+
time: string;
|
|
446
|
+
}[];
|
|
447
|
+
delay?: number;
|
|
448
|
+
}
|
|
449
|
+
export interface FileRowProps extends BaseProps {
|
|
450
|
+
name: string;
|
|
451
|
+
meta: string;
|
|
452
|
+
kind?: "pdf" | "fig" | "sheet" | "doc" | "zip";
|
|
453
|
+
}
|
|
454
|
+
export interface KanbanColumnProps extends BaseProps {
|
|
455
|
+
title: string;
|
|
456
|
+
dot?: Tint;
|
|
457
|
+
delay?: number;
|
|
458
|
+
children?: ReactNode;
|
|
459
|
+
onAdd?: () => void;
|
|
460
|
+
}
|
|
461
|
+
export interface ProgressRingProps extends BaseProps {
|
|
462
|
+
value: number;
|
|
463
|
+
tint?: Tint | "ink";
|
|
464
|
+
size?: number;
|
|
465
|
+
stroke?: number;
|
|
466
|
+
caption?: string;
|
|
467
|
+
label?: string;
|
|
468
|
+
}
|
|
469
|
+
export interface BarChartProps extends BaseProps {
|
|
470
|
+
data: { label: string; value: number; tint?: Tint | "ink" }[];
|
|
471
|
+
tint?: Tint | "ink";
|
|
472
|
+
height?: number;
|
|
473
|
+
width?: number;
|
|
474
|
+
barWidth?: number;
|
|
475
|
+
format?: (v: number) => string;
|
|
476
|
+
label?: string;
|
|
477
|
+
}
|
|
478
|
+
export interface LineChartProps extends BaseProps {
|
|
479
|
+
labels: string[];
|
|
480
|
+
series: { values: number[]; tint?: Tint | "ink"; area?: boolean }[];
|
|
481
|
+
height?: number;
|
|
482
|
+
width?: number;
|
|
483
|
+
format?: (v: number) => string;
|
|
484
|
+
label?: string;
|
|
485
|
+
}
|
|
486
|
+
export interface SparklineProps extends BaseProps {
|
|
487
|
+
values: number[];
|
|
488
|
+
tint?: Tint | "ink";
|
|
489
|
+
width?: number;
|
|
490
|
+
height?: number;
|
|
491
|
+
label?: string;
|
|
492
|
+
}
|
|
493
|
+
export interface DonutProps extends BaseProps {
|
|
494
|
+
data: { label: string; value: number; tint?: Tint | "ink" }[];
|
|
495
|
+
center?: string;
|
|
496
|
+
caption?: string;
|
|
497
|
+
size?: number;
|
|
498
|
+
stroke?: number;
|
|
499
|
+
legend?: boolean;
|
|
500
|
+
label?: string;
|
|
501
|
+
}
|
|
502
|
+
export interface SkeletonProps extends BaseProps {
|
|
503
|
+
variant?: "text" | "title" | "circle" | "block";
|
|
504
|
+
width?: number | string;
|
|
505
|
+
height?: number | string;
|
|
506
|
+
}
|
|
507
|
+
export interface MenuItem {
|
|
508
|
+
label: string;
|
|
509
|
+
icon?: IconName;
|
|
510
|
+
shortcut?: string;
|
|
511
|
+
danger?: boolean;
|
|
512
|
+
disabled?: boolean;
|
|
513
|
+
/** A checkbox or radio item (shows a check or dot when `checked`). Radio items with the same `group` belong together. */
|
|
514
|
+
type?: "checkbox" | "radio";
|
|
515
|
+
checked?: boolean;
|
|
516
|
+
group?: string;
|
|
517
|
+
/** A submenu; opens on click, hover or →. */
|
|
518
|
+
items?: (MenuItem | "-")[];
|
|
519
|
+
onClick?: () => void;
|
|
520
|
+
}
|
|
521
|
+
export interface MenuProps extends BaseProps {
|
|
522
|
+
items: (MenuItem | "-")[];
|
|
523
|
+
/** Accessible name of the menu. */
|
|
524
|
+
label?: string;
|
|
525
|
+
/** Focus the first item on mount (menus opened from a button or the keyboard). */
|
|
526
|
+
autoFocus?: boolean;
|
|
527
|
+
/** Called after an item runs, and on Escape, so the owner can close the menu. */
|
|
528
|
+
onClose?: () => void;
|
|
529
|
+
}
|
|
530
|
+
export interface ModalProps extends BaseProps {
|
|
531
|
+
title: string;
|
|
532
|
+
text?: string;
|
|
533
|
+
icon?: IconName;
|
|
534
|
+
tint?: Tint;
|
|
535
|
+
actions?: ReactNode[];
|
|
536
|
+
onClose?: () => void;
|
|
537
|
+
style?: CSSProperties;
|
|
538
|
+
children?: ReactNode;
|
|
539
|
+
}
|
|
540
|
+
/** Mounts a demo page with a "Replay motion" button that re-runs every entrance. */
|
|
541
|
+
export interface SubNavItem {
|
|
542
|
+
id?: string;
|
|
543
|
+
label: string;
|
|
544
|
+
icon: IconName;
|
|
545
|
+
count?: number;
|
|
546
|
+
}
|
|
547
|
+
export interface SubNavProps extends BaseProps {
|
|
548
|
+
eyebrow?: string;
|
|
549
|
+
action?: { label: string; icon?: IconName; onClick?: () => void };
|
|
550
|
+
items: SubNavItem[];
|
|
551
|
+
current?: string;
|
|
552
|
+
onPick?: (id: string) => void;
|
|
553
|
+
children?: ReactNode;
|
|
554
|
+
}
|
|
555
|
+
export interface DrawerProps extends BaseProps, DrawerSide {
|
|
556
|
+
title: string;
|
|
557
|
+
subtitle?: ReactNode;
|
|
558
|
+
avatar?: string;
|
|
559
|
+
onClose?: () => void;
|
|
560
|
+
width?: number | string;
|
|
561
|
+
inline?: boolean;
|
|
562
|
+
children?: ReactNode;
|
|
563
|
+
}
|
|
564
|
+
export interface PaletteItem {
|
|
565
|
+
id?: string | number;
|
|
566
|
+
group?: string;
|
|
567
|
+
label: string;
|
|
568
|
+
hint?: string;
|
|
569
|
+
icon?: IconName;
|
|
570
|
+
tint?: Tint | "plain";
|
|
571
|
+
run?: () => void;
|
|
572
|
+
searchOnly?: boolean;
|
|
573
|
+
}
|
|
574
|
+
export interface CommandPaletteProps extends BaseProps {
|
|
575
|
+
items: PaletteItem[];
|
|
576
|
+
onClose?: () => void;
|
|
577
|
+
placeholder?: string;
|
|
578
|
+
inline?: boolean;
|
|
579
|
+
/** Results are on their way (async search): shows a loading row. */
|
|
580
|
+
loading?: boolean;
|
|
581
|
+
/** Shown when nothing matches (default: "Nothing matches …"). */
|
|
582
|
+
empty?: ReactNode;
|
|
583
|
+
/** Called with the query as the user types, for searching on a server. */
|
|
584
|
+
onQueryChange?: (query: string) => void;
|
|
585
|
+
}
|
|
586
|
+
export interface DrawerSide {
|
|
587
|
+
/** Edge the sheet slides in from (default right). */
|
|
588
|
+
side?: "right" | "left" | "top" | "bottom";
|
|
589
|
+
}
|
|
590
|
+
export interface NotificationItem {
|
|
591
|
+
id: string | number;
|
|
592
|
+
icon: IconName;
|
|
593
|
+
tint?: Tint | "plain";
|
|
594
|
+
title: string;
|
|
595
|
+
text?: string;
|
|
596
|
+
time?: string;
|
|
597
|
+
unread?: boolean;
|
|
598
|
+
}
|
|
599
|
+
export interface NotificationListProps extends BaseProps {
|
|
600
|
+
items: NotificationItem[];
|
|
601
|
+
onOpen?: (n: NotificationItem) => void;
|
|
602
|
+
onReadAll?: () => void;
|
|
603
|
+
}
|
|
604
|
+
export interface FlowStep {
|
|
605
|
+
kind: "trigger" | "condition" | "agent" | "approval" | "action";
|
|
606
|
+
text: string;
|
|
607
|
+
}
|
|
608
|
+
export interface FlowProps extends BaseProps {
|
|
609
|
+
steps: FlowStep[];
|
|
610
|
+
active?: number | null;
|
|
611
|
+
waiting?: boolean;
|
|
612
|
+
onApprove?: () => void;
|
|
613
|
+
onReject?: () => void;
|
|
614
|
+
tools?: (step: FlowStep, index: number) => ReactNode;
|
|
615
|
+
}
|
|
616
|
+
export type FileKind = "pdf" | "doc" | "sheet" | "fig" | "img" | "zip";
|
|
617
|
+
export interface FileCardProps extends BaseProps {
|
|
618
|
+
name: string;
|
|
619
|
+
kind: FileKind;
|
|
620
|
+
size?: string;
|
|
621
|
+
meta?: string;
|
|
622
|
+
shared?: boolean;
|
|
623
|
+
onClick?: () => void;
|
|
624
|
+
}
|
|
625
|
+
export interface FileThumbProps extends BaseProps {
|
|
626
|
+
kind: FileKind;
|
|
627
|
+
title?: string;
|
|
628
|
+
big?: boolean;
|
|
629
|
+
entries?: string[];
|
|
630
|
+
}
|
|
631
|
+
export interface WizardProps extends BaseProps {
|
|
632
|
+
steps: { id?: string; label: string; icon?: IconName }[];
|
|
633
|
+
current?: number;
|
|
634
|
+
done?: Record<string, boolean>;
|
|
635
|
+
onPick?: (i: number) => void;
|
|
636
|
+
footer?: ReactNode;
|
|
637
|
+
brand?: string;
|
|
638
|
+
label?: string;
|
|
639
|
+
children?: ReactNode;
|
|
640
|
+
}
|
|
641
|
+
export interface PermissionMatrixProps extends BaseProps {
|
|
642
|
+
roles: { name: string; people?: number; locked?: boolean; levels: (0 | 1 | 2 | 3)[] }[];
|
|
643
|
+
areas: string[];
|
|
644
|
+
onChange?: (roleIndex: number, areaIndex: number, nextLevel: number) => void;
|
|
645
|
+
}
|
|
646
|
+
export interface InvoicePreviewProps extends BaseProps {
|
|
647
|
+
number: string | number;
|
|
648
|
+
from?: string;
|
|
649
|
+
to: string;
|
|
650
|
+
issued: string;
|
|
651
|
+
due: string;
|
|
652
|
+
lines: { d: string; q: number; u: number; v: number }[];
|
|
653
|
+
note?: string;
|
|
654
|
+
kind?: string;
|
|
655
|
+
brand?: string;
|
|
656
|
+
format?: (n: number) => string;
|
|
657
|
+
}
|
|
658
|
+
export interface TransactionRowProps extends BaseProps {
|
|
659
|
+
text: string;
|
|
660
|
+
date: string;
|
|
661
|
+
amount: number;
|
|
662
|
+
matched?: boolean;
|
|
663
|
+
matchRef?: string;
|
|
664
|
+
hint?: string;
|
|
665
|
+
onMatch?: () => void;
|
|
666
|
+
}
|
|
667
|
+
/** Traps keyboard focus inside `ref` while mounted, closes on Escape, and restores focus afterwards. */
|
|
668
|
+
|
|
669
|
+
/* ── Kit 2: forms, overlays, data table, charts ── */
|
|
670
|
+
export type Tone =
|
|
671
|
+
"success" | "info" | "warning" | "danger" | "highlight" | "neutral" | Status | "error";
|
|
672
|
+
export interface Option {
|
|
673
|
+
value: string;
|
|
674
|
+
label: string;
|
|
675
|
+
hint?: string;
|
|
676
|
+
icon?: IconName;
|
|
677
|
+
avatar?: boolean;
|
|
678
|
+
disabled?: boolean;
|
|
679
|
+
}
|
|
680
|
+
export interface FormFieldProps extends BaseProps {
|
|
681
|
+
id?: string;
|
|
682
|
+
/** Field name inside a `Form`: the field shows that name's validation message. */
|
|
683
|
+
name?: string;
|
|
684
|
+
label?: ReactNode;
|
|
685
|
+
required?: boolean;
|
|
686
|
+
optional?: boolean;
|
|
687
|
+
hint?: ReactNode;
|
|
688
|
+
error?: ReactNode;
|
|
689
|
+
success?: ReactNode;
|
|
690
|
+
children?: ReactNode;
|
|
691
|
+
}
|
|
692
|
+
export interface TextFieldProps extends Omit<FormFieldProps, "children"> {
|
|
693
|
+
type?: string;
|
|
694
|
+
icon?: IconName;
|
|
695
|
+
suffix?: ReactNode;
|
|
696
|
+
value?: string;
|
|
697
|
+
defaultValue?: string;
|
|
698
|
+
placeholder?: string;
|
|
699
|
+
disabled?: boolean;
|
|
700
|
+
autoComplete?: string;
|
|
701
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
702
|
+
onBlur?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
703
|
+
}
|
|
704
|
+
export interface RadioGroupProps extends BaseProps {
|
|
705
|
+
label?: string;
|
|
706
|
+
options: (string | Option)[];
|
|
707
|
+
value?: string;
|
|
708
|
+
defaultValue?: string;
|
|
709
|
+
onChange?: (v: string) => void;
|
|
710
|
+
cards?: boolean;
|
|
711
|
+
hint?: string;
|
|
712
|
+
}
|
|
713
|
+
export interface SegmentedProps extends BaseProps {
|
|
714
|
+
options: (string | Option)[];
|
|
715
|
+
value?: string;
|
|
716
|
+
defaultValue?: string;
|
|
717
|
+
onChange?: (v: string) => void;
|
|
718
|
+
size?: "sm";
|
|
719
|
+
block?: boolean;
|
|
720
|
+
label?: string;
|
|
721
|
+
}
|
|
722
|
+
export interface ComboboxProps extends BaseProps {
|
|
723
|
+
label?: string;
|
|
724
|
+
options: (string | Option)[];
|
|
725
|
+
value?: string | string[] | null;
|
|
726
|
+
defaultValue?: string | string[];
|
|
727
|
+
onChange?: (v: string | string[] | null) => void;
|
|
728
|
+
multiple?: boolean;
|
|
729
|
+
creatable?: boolean;
|
|
730
|
+
placeholder?: string;
|
|
731
|
+
hint?: string;
|
|
732
|
+
error?: string;
|
|
733
|
+
required?: boolean;
|
|
734
|
+
}
|
|
735
|
+
export interface TagInputProps extends BaseProps {
|
|
736
|
+
label?: string;
|
|
737
|
+
value?: string[];
|
|
738
|
+
defaultValue?: string[];
|
|
739
|
+
onChange?: (v: string[]) => void;
|
|
740
|
+
placeholder?: string;
|
|
741
|
+
hint?: string;
|
|
742
|
+
error?: string;
|
|
743
|
+
}
|
|
744
|
+
export interface DateRange {
|
|
745
|
+
from: Date | null;
|
|
746
|
+
to: Date | null;
|
|
747
|
+
}
|
|
748
|
+
export interface DatePickerProps extends BaseProps {
|
|
749
|
+
label?: string;
|
|
750
|
+
range?: boolean;
|
|
751
|
+
value?: Date | DateRange | null;
|
|
752
|
+
defaultValue?: Date | DateRange;
|
|
753
|
+
onChange?: (v: Date | DateRange | null) => void;
|
|
754
|
+
presets?: boolean;
|
|
755
|
+
min?: Date;
|
|
756
|
+
max?: Date;
|
|
757
|
+
today?: Date;
|
|
758
|
+
placeholder?: string;
|
|
759
|
+
hint?: string;
|
|
760
|
+
error?: string;
|
|
761
|
+
required?: boolean;
|
|
762
|
+
}
|
|
763
|
+
export interface CalendarProps extends BaseProps {
|
|
764
|
+
range?: boolean;
|
|
765
|
+
value?: Date | DateRange | null;
|
|
766
|
+
onChange?: (v: Date | DateRange) => void;
|
|
767
|
+
today?: Date;
|
|
768
|
+
min?: Date;
|
|
769
|
+
max?: Date;
|
|
770
|
+
month?: Date;
|
|
771
|
+
}
|
|
772
|
+
export interface NumberInputProps extends BaseProps {
|
|
773
|
+
label?: string;
|
|
774
|
+
value?: number;
|
|
775
|
+
defaultValue?: number;
|
|
776
|
+
onChange?: (n: number) => void;
|
|
777
|
+
min?: number;
|
|
778
|
+
max?: number;
|
|
779
|
+
step?: number;
|
|
780
|
+
unit?: string;
|
|
781
|
+
hint?: string;
|
|
782
|
+
error?: string;
|
|
783
|
+
}
|
|
784
|
+
export interface SliderProps extends BaseProps {
|
|
785
|
+
label?: string;
|
|
786
|
+
min?: number;
|
|
787
|
+
max?: number;
|
|
788
|
+
step?: number;
|
|
789
|
+
value?: number;
|
|
790
|
+
defaultValue?: number;
|
|
791
|
+
onChange?: (n: number) => void;
|
|
792
|
+
format?: (n: number) => string;
|
|
793
|
+
marks?: boolean;
|
|
794
|
+
hint?: string;
|
|
795
|
+
}
|
|
796
|
+
export interface OtpInputProps extends BaseProps {
|
|
797
|
+
length?: number;
|
|
798
|
+
onComplete?: (code: string) => void;
|
|
799
|
+
error?: boolean;
|
|
800
|
+
label?: string;
|
|
801
|
+
}
|
|
802
|
+
export interface UploadFile {
|
|
803
|
+
id: string;
|
|
804
|
+
name: string;
|
|
805
|
+
size: number;
|
|
806
|
+
progress: number;
|
|
807
|
+
}
|
|
808
|
+
export interface FileDropProps extends BaseProps {
|
|
809
|
+
files?: UploadFile[];
|
|
810
|
+
onChange?: (f: UploadFile[]) => void;
|
|
811
|
+
title?: string;
|
|
812
|
+
hint?: string;
|
|
813
|
+
accept?: string;
|
|
814
|
+
multiple?: boolean;
|
|
815
|
+
}
|
|
816
|
+
export interface TooltipProps extends BaseProps {
|
|
817
|
+
label: ReactNode;
|
|
818
|
+
shortcut?: string;
|
|
819
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
820
|
+
/** Starts open (for demos and onboarding hints); it still closes on blur and Escape. */
|
|
821
|
+
defaultOpen?: boolean;
|
|
822
|
+
children: ReactNode;
|
|
823
|
+
}
|
|
824
|
+
export interface PopoverProps extends BaseProps {
|
|
825
|
+
trigger: ReactNode | ((s: { open: boolean; toggle: () => void }) => ReactNode);
|
|
826
|
+
open?: boolean;
|
|
827
|
+
onOpenChange?: (o: boolean) => void;
|
|
828
|
+
align?: "start" | "end";
|
|
829
|
+
side?: "top" | "bottom";
|
|
830
|
+
width?: number;
|
|
831
|
+
flush?: boolean;
|
|
832
|
+
block?: boolean;
|
|
833
|
+
role?: string;
|
|
834
|
+
children?: ReactNode | ((s: { close: () => void }) => ReactNode);
|
|
835
|
+
}
|
|
836
|
+
export interface AlertProps extends BaseProps {
|
|
837
|
+
tone?: Exclude<Tone, "neutral">;
|
|
838
|
+
title?: ReactNode;
|
|
839
|
+
icon?: IconName;
|
|
840
|
+
action?: ReactNode;
|
|
841
|
+
onDismiss?: () => void;
|
|
842
|
+
children?: ReactNode;
|
|
843
|
+
}
|
|
844
|
+
export interface ConfirmDialogProps extends BaseProps {
|
|
845
|
+
open: boolean;
|
|
846
|
+
title: string;
|
|
847
|
+
text?: string;
|
|
848
|
+
danger?: boolean;
|
|
849
|
+
icon?: IconName;
|
|
850
|
+
confirmLabel?: string;
|
|
851
|
+
cancelLabel?: string;
|
|
852
|
+
confirmText?: string;
|
|
853
|
+
onConfirm: () => void;
|
|
854
|
+
onCancel: () => void;
|
|
855
|
+
}
|
|
856
|
+
export interface ToasterProps extends BaseProps {
|
|
857
|
+
position?: "bottom" | "top";
|
|
858
|
+
}
|
|
859
|
+
export interface FilterDef {
|
|
860
|
+
key: string;
|
|
861
|
+
label: string;
|
|
862
|
+
icon?: IconName;
|
|
863
|
+
options: string[];
|
|
864
|
+
}
|
|
865
|
+
export interface FilterBarProps extends BaseProps {
|
|
866
|
+
filters: FilterDef[];
|
|
867
|
+
value: Record<string, string>;
|
|
868
|
+
onChange: (v: Record<string, string>) => void;
|
|
869
|
+
search?: string;
|
|
870
|
+
query?: string;
|
|
871
|
+
onQuery?: (q: string) => void;
|
|
872
|
+
right?: ReactNode;
|
|
873
|
+
}
|
|
874
|
+
export interface BulkAction<R> {
|
|
875
|
+
label: string;
|
|
876
|
+
icon?: IconName;
|
|
877
|
+
danger?: boolean;
|
|
878
|
+
onClick: (rows: R[], clear: () => void) => void;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- rows are app data
|
|
882
|
+
export interface DataColumn<R = any> {
|
|
883
|
+
key: string;
|
|
884
|
+
label: ReactNode;
|
|
885
|
+
render?: (row: R) => ReactNode;
|
|
886
|
+
align?: "left" | "right";
|
|
887
|
+
sortable?: boolean;
|
|
888
|
+
sortValue?: (row: R) => string | number | Date;
|
|
889
|
+
hideable?: boolean;
|
|
890
|
+
hidden?: boolean;
|
|
891
|
+
width?: number | string;
|
|
892
|
+
}
|
|
893
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- rows are app data
|
|
894
|
+
export interface DataTableProps<R = any> extends BaseProps {
|
|
895
|
+
columns: DataColumn<R>[];
|
|
896
|
+
rows: R[];
|
|
897
|
+
rowKey?: string;
|
|
898
|
+
selectable?: boolean;
|
|
899
|
+
bulkActions?: {
|
|
900
|
+
label: string;
|
|
901
|
+
icon?: IconName;
|
|
902
|
+
danger?: boolean;
|
|
903
|
+
onClick: (rows: R[], clear: () => void) => void;
|
|
904
|
+
}[];
|
|
905
|
+
renderExpanded?: (row: R) => ReactNode;
|
|
906
|
+
stickyHeader?: boolean;
|
|
907
|
+
maxHeight?: number | string;
|
|
908
|
+
defaultSort?: { key: string; dir: "asc" | "desc" };
|
|
909
|
+
toolbar?: ReactNode;
|
|
910
|
+
columnToggle?: boolean;
|
|
911
|
+
empty?: ReactNode;
|
|
912
|
+
}
|
|
913
|
+
export interface Series {
|
|
914
|
+
name: string;
|
|
915
|
+
tint?: Tint | "ink";
|
|
916
|
+
values: number[];
|
|
917
|
+
}
|
|
918
|
+
export interface StackedBarChartProps extends BaseProps {
|
|
919
|
+
labels: string[];
|
|
920
|
+
series: Series[];
|
|
921
|
+
height?: number;
|
|
922
|
+
width?: number;
|
|
923
|
+
barWidth?: number;
|
|
924
|
+
format?: (v: number) => string;
|
|
925
|
+
legend?: boolean;
|
|
926
|
+
label?: string;
|
|
927
|
+
}
|
|
928
|
+
export interface AreaChartProps extends BaseProps {
|
|
929
|
+
labels: string[];
|
|
930
|
+
series: Series[];
|
|
931
|
+
stacked?: boolean;
|
|
932
|
+
height?: number;
|
|
933
|
+
width?: number;
|
|
934
|
+
format?: (v: number) => string;
|
|
935
|
+
legend?: boolean;
|
|
936
|
+
label?: string;
|
|
937
|
+
}
|
|
938
|
+
export interface HeatmapProps extends BaseProps {
|
|
939
|
+
rows: string[];
|
|
940
|
+
cols: string[];
|
|
941
|
+
values: number[][];
|
|
942
|
+
colEvery?: number;
|
|
943
|
+
caption?: string;
|
|
944
|
+
format?: (v: number) => string;
|
|
945
|
+
label?: string;
|
|
946
|
+
}
|
|
947
|
+
export interface FunnelProps extends BaseProps {
|
|
948
|
+
steps: { label: string; value: number; tint?: Tint }[];
|
|
949
|
+
tint?: Tint;
|
|
950
|
+
format?: (v: number) => string;
|
|
951
|
+
}
|
|
952
|
+
export interface GaugeProps extends BaseProps {
|
|
953
|
+
value: number;
|
|
954
|
+
max?: number;
|
|
955
|
+
caption?: string;
|
|
956
|
+
format?: (v: number) => string;
|
|
957
|
+
tint?: Tint | "ink";
|
|
958
|
+
thresholds?: [number, number];
|
|
959
|
+
size?: number;
|
|
960
|
+
stroke?: number;
|
|
961
|
+
showRange?: boolean;
|
|
962
|
+
label?: string;
|
|
963
|
+
}
|
|
964
|
+
export interface LegendProps extends BaseProps {
|
|
965
|
+
items: { name?: string; label?: string; tint?: Tint | "ink" }[];
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/* ── Kit 3: AI chat & agents ── */
|
|
969
|
+
export interface Source {
|
|
970
|
+
title: string;
|
|
971
|
+
icon?: IconName;
|
|
972
|
+
url?: string;
|
|
973
|
+
onClick?: () => void;
|
|
974
|
+
}
|
|
975
|
+
export interface ChatMessageProps extends BaseProps {
|
|
976
|
+
role: "user" | "assistant" | "system";
|
|
977
|
+
name?: string;
|
|
978
|
+
time?: string;
|
|
979
|
+
model?: string;
|
|
980
|
+
text?: string;
|
|
981
|
+
streaming?: boolean;
|
|
982
|
+
tint?: Tint;
|
|
983
|
+
sources?: Source[];
|
|
984
|
+
attachments?: { name: string; size?: string; kind?: string }[];
|
|
985
|
+
usage?: string;
|
|
986
|
+
onRetry?: () => void;
|
|
987
|
+
onFeedback?: (v: "up" | "down") => void;
|
|
988
|
+
actions?: boolean;
|
|
989
|
+
before?: ReactNode;
|
|
990
|
+
after?: ReactNode;
|
|
991
|
+
children?: ReactNode;
|
|
992
|
+
feedback?: "up" | "down" | null;
|
|
993
|
+
}
|
|
994
|
+
export interface RichTextProps extends BaseProps {
|
|
995
|
+
text: string;
|
|
996
|
+
streaming?: boolean;
|
|
997
|
+
className?: string;
|
|
998
|
+
}
|
|
999
|
+
export interface CodeBlockProps extends BaseProps {
|
|
1000
|
+
code: string;
|
|
1001
|
+
lang?: string;
|
|
1002
|
+
open?: boolean;
|
|
1003
|
+
}
|
|
1004
|
+
export interface ToolCallProps extends BaseProps {
|
|
1005
|
+
name: string;
|
|
1006
|
+
icon?: IconName;
|
|
1007
|
+
status?: "running" | "done" | "error" | "waiting";
|
|
1008
|
+
summary?: ReactNode;
|
|
1009
|
+
duration?: string;
|
|
1010
|
+
input?: unknown;
|
|
1011
|
+
output?: unknown;
|
|
1012
|
+
defaultOpen?: boolean;
|
|
1013
|
+
}
|
|
1014
|
+
export interface ReasoningProps extends BaseProps {
|
|
1015
|
+
steps?: string[];
|
|
1016
|
+
text?: ReactNode;
|
|
1017
|
+
duration?: string;
|
|
1018
|
+
streaming?: boolean;
|
|
1019
|
+
defaultOpen?: boolean;
|
|
1020
|
+
}
|
|
1021
|
+
export interface PromptStartersProps extends BaseProps {
|
|
1022
|
+
items: { icon?: IconName; tint?: Tint; title: string; text?: string; prompt?: string }[];
|
|
1023
|
+
onPick?: (prompt: string) => void;
|
|
1024
|
+
}
|
|
1025
|
+
export interface ModelOption {
|
|
1026
|
+
id: string;
|
|
1027
|
+
label: string;
|
|
1028
|
+
hint?: string;
|
|
1029
|
+
}
|
|
1030
|
+
export interface ModelPickerProps extends BaseProps {
|
|
1031
|
+
models: ModelOption[];
|
|
1032
|
+
value?: string;
|
|
1033
|
+
onChange?: (id: string) => void;
|
|
1034
|
+
side?: "top" | "bottom";
|
|
1035
|
+
}
|
|
1036
|
+
export interface ComposerCommand {
|
|
1037
|
+
name: string;
|
|
1038
|
+
hint?: string;
|
|
1039
|
+
icon?: IconName;
|
|
1040
|
+
insert?: string;
|
|
1041
|
+
}
|
|
1042
|
+
export interface ComposerProps extends BaseProps {
|
|
1043
|
+
value?: string;
|
|
1044
|
+
onChange?: (v: string) => void;
|
|
1045
|
+
onSend?: (text: string, files: (File | { name: string })[]) => void;
|
|
1046
|
+
busy?: boolean;
|
|
1047
|
+
onStop?: () => void;
|
|
1048
|
+
placeholder?: string;
|
|
1049
|
+
label?: string;
|
|
1050
|
+
models?: ModelOption[];
|
|
1051
|
+
model?: string;
|
|
1052
|
+
onModel?: (id: string) => void;
|
|
1053
|
+
commands?: ComposerCommand[];
|
|
1054
|
+
onCommand?: (c: ComposerCommand) => void;
|
|
1055
|
+
attachments?: (File | { name: string })[];
|
|
1056
|
+
onAttach?: (files: FileList) => void;
|
|
1057
|
+
onRemoveAttachment?: (i: number) => void;
|
|
1058
|
+
hint?: string;
|
|
1059
|
+
left?: ReactNode;
|
|
1060
|
+
disabled?: boolean;
|
|
1061
|
+
}
|
|
1062
|
+
export interface AgentStatusProps extends BaseProps {
|
|
1063
|
+
status: "Running" | "Thinking" | "Waiting for approval" | "Idle" | "Paused" | "Error" | string;
|
|
1064
|
+
step?: string;
|
|
1065
|
+
}
|
|
1066
|
+
export interface AgentMarkProps extends BaseProps {
|
|
1067
|
+
tint?: Tint;
|
|
1068
|
+
icon?: IconName;
|
|
1069
|
+
size?: number;
|
|
1070
|
+
live?: boolean;
|
|
1071
|
+
}
|
|
1072
|
+
export interface TraceStep {
|
|
1073
|
+
kind?: "model" | "tool" | "search" | "memory" | "approval" | "message" | "error";
|
|
1074
|
+
label: string;
|
|
1075
|
+
meta?: string;
|
|
1076
|
+
start?: number;
|
|
1077
|
+
ms?: number;
|
|
1078
|
+
detail?: ReactNode;
|
|
1079
|
+
status?: "done" | "running" | "error";
|
|
1080
|
+
}
|
|
1081
|
+
export interface RunTraceProps extends BaseProps {
|
|
1082
|
+
steps: TraceStep[];
|
|
1083
|
+
defaultOpen?: number | null;
|
|
1084
|
+
footer?: ReactNode;
|
|
1085
|
+
}
|
|
1086
|
+
export interface UsageMeterProps extends BaseProps {
|
|
1087
|
+
used: number;
|
|
1088
|
+
limit: number;
|
|
1089
|
+
label?: string;
|
|
1090
|
+
caption?: string;
|
|
1091
|
+
format?: (v: number) => string;
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
/* ── Kit 3: commerce ── */
|
|
1095
|
+
export type ArtKind = "tee" | "mug" | "bottle" | "cap" | "tote" | "sneaker" | "watch" | "lamp";
|
|
1096
|
+
export interface ProductArtProps extends BaseProps {
|
|
1097
|
+
kind: ArtKind;
|
|
1098
|
+
tint?: Tint | "plain";
|
|
1099
|
+
size?: number;
|
|
1100
|
+
label?: string;
|
|
1101
|
+
}
|
|
1102
|
+
export interface PriceProps extends BaseProps {
|
|
1103
|
+
value: number;
|
|
1104
|
+
compareAt?: number;
|
|
1105
|
+
currency?: string;
|
|
1106
|
+
size?: "lg";
|
|
1107
|
+
showSave?: boolean;
|
|
1108
|
+
}
|
|
1109
|
+
export interface RatingProps extends BaseProps {
|
|
1110
|
+
value: number;
|
|
1111
|
+
count?: number;
|
|
1112
|
+
size?: number;
|
|
1113
|
+
}
|
|
1114
|
+
export interface StockBadgeProps extends BaseProps {
|
|
1115
|
+
stock: number;
|
|
1116
|
+
low?: number;
|
|
1117
|
+
compact?: boolean;
|
|
1118
|
+
}
|
|
1119
|
+
export interface ProductCardProps extends BaseProps {
|
|
1120
|
+
name: string;
|
|
1121
|
+
meta?: string;
|
|
1122
|
+
art: ArtKind;
|
|
1123
|
+
tint?: Tint;
|
|
1124
|
+
price: number;
|
|
1125
|
+
compareAt?: number;
|
|
1126
|
+
rating?: number;
|
|
1127
|
+
reviews?: number;
|
|
1128
|
+
badge?: string;
|
|
1129
|
+
badgeTone?: Tone;
|
|
1130
|
+
stock?: number;
|
|
1131
|
+
wished?: boolean;
|
|
1132
|
+
onWish?: () => void;
|
|
1133
|
+
added?: boolean;
|
|
1134
|
+
onAdd?: () => void;
|
|
1135
|
+
onClick?: () => void;
|
|
1136
|
+
}
|
|
1137
|
+
export interface VariantPickerProps extends BaseProps {
|
|
1138
|
+
label: string;
|
|
1139
|
+
type?: "color";
|
|
1140
|
+
options: (string | { value: string; label?: string; color?: string; disabled?: boolean })[];
|
|
1141
|
+
value?: string;
|
|
1142
|
+
defaultValue?: string;
|
|
1143
|
+
onChange?: (v: string) => void;
|
|
1144
|
+
}
|
|
1145
|
+
export interface CartLineProps extends BaseProps {
|
|
1146
|
+
name: string;
|
|
1147
|
+
variant?: string;
|
|
1148
|
+
note?: string;
|
|
1149
|
+
art: ArtKind;
|
|
1150
|
+
tint?: Tint;
|
|
1151
|
+
price: number;
|
|
1152
|
+
qty: number;
|
|
1153
|
+
onQty?: (n: number) => void;
|
|
1154
|
+
onRemove?: () => void;
|
|
1155
|
+
}
|
|
1156
|
+
export interface Discount {
|
|
1157
|
+
code: string;
|
|
1158
|
+
pct?: number;
|
|
1159
|
+
amount?: number;
|
|
1160
|
+
label?: string;
|
|
1161
|
+
}
|
|
1162
|
+
export interface OrderSummaryProps extends BaseProps {
|
|
1163
|
+
lines: {
|
|
1164
|
+
name: string;
|
|
1165
|
+
variant?: string;
|
|
1166
|
+
art: ArtKind;
|
|
1167
|
+
tint?: Tint;
|
|
1168
|
+
price: number;
|
|
1169
|
+
qty: number;
|
|
1170
|
+
}[];
|
|
1171
|
+
showLines?: boolean;
|
|
1172
|
+
discount?: Discount | null;
|
|
1173
|
+
onCoupon?: (code: string | null) => boolean | void;
|
|
1174
|
+
shipping?: number | null;
|
|
1175
|
+
freeShippingFrom?: number;
|
|
1176
|
+
vat?: number;
|
|
1177
|
+
title?: string | false;
|
|
1178
|
+
action?: ReactNode;
|
|
1179
|
+
}
|
|
1180
|
+
export interface CheckoutStepsProps extends BaseProps {
|
|
1181
|
+
steps?: string[];
|
|
1182
|
+
current?: number;
|
|
1183
|
+
onPick?: (i: number) => void;
|
|
1184
|
+
}
|
|
1185
|
+
export interface OrderTimelineProps extends BaseProps {
|
|
1186
|
+
status: "Placed" | "Paid" | "Packed" | "Shipped" | "Delivered" | "Refunded" | "Cancelled";
|
|
1187
|
+
times?: Record<string, string>;
|
|
1188
|
+
}
|
|
1189
|
+
export interface PlanCardProps extends BaseProps {
|
|
1190
|
+
name: string;
|
|
1191
|
+
text?: string;
|
|
1192
|
+
price: number | null;
|
|
1193
|
+
was?: number;
|
|
1194
|
+
per?: string;
|
|
1195
|
+
features?: string[];
|
|
1196
|
+
featured?: boolean;
|
|
1197
|
+
flag?: string;
|
|
1198
|
+
current?: boolean;
|
|
1199
|
+
cta?: string;
|
|
1200
|
+
onPick?: () => void;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
/* ── Kit 3: system screens ── */
|
|
1204
|
+
export interface StatusScreenProps extends BaseProps {
|
|
1205
|
+
code?: "404" | "500" | "403" | "maintenance" | "offline" | string;
|
|
1206
|
+
title?: string;
|
|
1207
|
+
text?: string;
|
|
1208
|
+
icon?: IconName;
|
|
1209
|
+
tint?: Tint;
|
|
1210
|
+
extra?: ReactNode;
|
|
1211
|
+
actions?: ReactNode[];
|
|
1212
|
+
onHome?: () => void;
|
|
1213
|
+
onContact?: () => void;
|
|
1214
|
+
reference?: string;
|
|
1215
|
+
}
|
|
1216
|
+
export interface AuthCardProps extends BaseProps {
|
|
1217
|
+
title: string;
|
|
1218
|
+
text?: string;
|
|
1219
|
+
icon?: IconName;
|
|
1220
|
+
tint?: Tint;
|
|
1221
|
+
brand?: string;
|
|
1222
|
+
foot?: ReactNode;
|
|
1223
|
+
children?: ReactNode;
|
|
1224
|
+
}
|
|
1225
|
+
/** Formats a number as a price: €32, €4.90. */
|
|
1226
|
+
|
|
1227
|
+
/* ── Labels and locale: the kit ships no fixed copy ── */
|
|
1228
|
+
/** Looks up a visible string. The key is the built-in English text; {placeholders} are filled from vars. */
|
|
1229
|
+
/** Like L, but placeholders may be React nodes. */
|
|
1230
|
+
/** Maps built-in English texts to yours. replace: true swaps the whole set (language switch). */
|
|
1231
|
+
/** BCP 47 tag (undefined = browser). Drives every number, money and date the kit renders. */
|
|
1232
|
+
|
|
1233
|
+
/* ── Kit 4: status, approvals, building blocks ── */
|
|
1234
|
+
export type Status = "ok" | "running" | "signal" | "warn" | "danger" | "idle";
|
|
1235
|
+
export type RiskFamily = "money" | "infra" | "comms" | "marketing" | "apps" | "legal";
|
|
1236
|
+
export interface StatusShapeProps extends BaseProps {
|
|
1237
|
+
status: Status;
|
|
1238
|
+
}
|
|
1239
|
+
export interface StatusIndicatorProps extends BaseProps {
|
|
1240
|
+
status: Status;
|
|
1241
|
+
label?: ReactNode;
|
|
1242
|
+
size?: "sm";
|
|
1243
|
+
}
|
|
1244
|
+
export type ApprovalKey = "A" | "B" | "C" | "D";
|
|
1245
|
+
export interface ApprovalOption {
|
|
1246
|
+
key: ApprovalKey;
|
|
1247
|
+
label: string;
|
|
1248
|
+
input?: string | boolean;
|
|
1249
|
+
placeholder?: string;
|
|
1250
|
+
}
|
|
1251
|
+
export interface ApprovalDecision {
|
|
1252
|
+
key: ApprovalKey;
|
|
1253
|
+
by?: string;
|
|
1254
|
+
at?: string;
|
|
1255
|
+
text?: string;
|
|
1256
|
+
}
|
|
1257
|
+
export interface ApprovalCardProps extends BaseProps {
|
|
1258
|
+
title: ReactNode;
|
|
1259
|
+
text?: ReactNode;
|
|
1260
|
+
children?: ReactNode;
|
|
1261
|
+
agent?: string;
|
|
1262
|
+
project?: string;
|
|
1263
|
+
family?: RiskFamily;
|
|
1264
|
+
familyLabel?: string;
|
|
1265
|
+
age?: string;
|
|
1266
|
+
escalation?: ReactNode;
|
|
1267
|
+
trace?: ReactNode;
|
|
1268
|
+
note?: ReactNode;
|
|
1269
|
+
heading?: string;
|
|
1270
|
+
options?: ApprovalOption[];
|
|
1271
|
+
approveLabel?: string;
|
|
1272
|
+
onDecide?: (key: ApprovalKey, text?: string) => void;
|
|
1273
|
+
decision?: ApprovalDecision | null;
|
|
1274
|
+
compact?: boolean;
|
|
1275
|
+
/** @deprecated */ onApprove?: () => void;
|
|
1276
|
+
/** @deprecated */ onDeny?: () => void;
|
|
1277
|
+
/** @deprecated */ onEdit?: (text: string) => void;
|
|
1278
|
+
/** @deprecated */ state?: "approved" | "denied";
|
|
1279
|
+
}
|
|
1280
|
+
export interface ApprovalInboxItem {
|
|
1281
|
+
id: string | number;
|
|
1282
|
+
title: string;
|
|
1283
|
+
agent?: string;
|
|
1284
|
+
project?: string;
|
|
1285
|
+
family?: RiskFamily;
|
|
1286
|
+
familyLabel?: string;
|
|
1287
|
+
age?: string;
|
|
1288
|
+
ageMin?: number;
|
|
1289
|
+
urgent?: boolean;
|
|
1290
|
+
}
|
|
1291
|
+
export interface ApprovalInboxProps extends BaseProps {
|
|
1292
|
+
items: ApprovalInboxItem[];
|
|
1293
|
+
selected?: ApprovalInboxItem["id"];
|
|
1294
|
+
onSelect?: (id: ApprovalInboxItem["id"]) => void;
|
|
1295
|
+
emptyTitle?: string;
|
|
1296
|
+
emptyText?: string;
|
|
1297
|
+
label?: string;
|
|
1298
|
+
}
|
|
1299
|
+
export interface KbdProps extends BaseProps {
|
|
1300
|
+
keys?: string[];
|
|
1301
|
+
children?: ReactNode;
|
|
1302
|
+
}
|
|
1303
|
+
export type KeyValueItem =
|
|
1304
|
+
[ReactNode, ReactNode, boolean?] | { k: ReactNode; v: ReactNode; mono?: boolean };
|
|
1305
|
+
export interface KeyValueProps extends BaseProps {
|
|
1306
|
+
items: KeyValueItem[];
|
|
1307
|
+
dense?: boolean;
|
|
1308
|
+
}
|
|
1309
|
+
export interface SpinnerProps extends BaseProps {
|
|
1310
|
+
size?: "lg";
|
|
1311
|
+
label?: string;
|
|
1312
|
+
}
|
|
1313
|
+
export interface CollapsibleProps extends BaseProps {
|
|
1314
|
+
title: ReactNode;
|
|
1315
|
+
meta?: ReactNode;
|
|
1316
|
+
defaultOpen?: boolean;
|
|
1317
|
+
open?: boolean;
|
|
1318
|
+
onOpenChange?: (open: boolean) => void;
|
|
1319
|
+
children?: ReactNode;
|
|
1320
|
+
}
|
|
1321
|
+
export interface ContextMenuProps extends BaseProps {
|
|
1322
|
+
items: (MenuItem | "-")[];
|
|
1323
|
+
children: ReactNode;
|
|
1324
|
+
}
|
|
1325
|
+
export interface SplitPaneProps extends BaseProps {
|
|
1326
|
+
left: ReactNode;
|
|
1327
|
+
right: ReactNode;
|
|
1328
|
+
defaultSize?: number;
|
|
1329
|
+
min?: number;
|
|
1330
|
+
max?: number;
|
|
1331
|
+
storageKey?: string;
|
|
1332
|
+
}
|
|
1333
|
+
export interface TreeItem {
|
|
1334
|
+
id: string;
|
|
1335
|
+
label: ReactNode;
|
|
1336
|
+
icon?: IconName;
|
|
1337
|
+
meta?: ReactNode;
|
|
1338
|
+
children?: TreeItem[];
|
|
1339
|
+
}
|
|
1340
|
+
export interface TreeViewProps extends BaseProps {
|
|
1341
|
+
items: TreeItem[];
|
|
1342
|
+
defaultOpen?: string[];
|
|
1343
|
+
selected?: string;
|
|
1344
|
+
onSelect?: (id: string) => void;
|
|
1345
|
+
label?: string;
|
|
1346
|
+
}
|
|
1347
|
+
export interface InlineEditProps extends BaseProps {
|
|
1348
|
+
value: string;
|
|
1349
|
+
onSave?: (v: string) => void;
|
|
1350
|
+
options?: string[];
|
|
1351
|
+
mono?: boolean;
|
|
1352
|
+
type?: string;
|
|
1353
|
+
display?: (v: string) => ReactNode;
|
|
1354
|
+
align?: "left" | "right";
|
|
1355
|
+
label?: string;
|
|
1356
|
+
}
|
|
1357
|
+
export type LogLine =
|
|
1358
|
+
string | { time?: string; text: string; level?: "ok" | "warn" | "err" | "hl"; fresh?: boolean };
|
|
1359
|
+
export interface LogViewProps extends BaseProps {
|
|
1360
|
+
lines: LogLine[];
|
|
1361
|
+
title?: ReactNode;
|
|
1362
|
+
right?: ReactNode;
|
|
1363
|
+
numbers?: boolean;
|
|
1364
|
+
follow?: boolean;
|
|
1365
|
+
maxHeight?: number;
|
|
1366
|
+
}
|
|
1367
|
+
export interface CodeViewerProps extends BaseProps {
|
|
1368
|
+
value: string | object;
|
|
1369
|
+
lang?: string;
|
|
1370
|
+
}
|
|
1371
|
+
export interface SecretFieldProps extends BaseProps {
|
|
1372
|
+
prefix?: string;
|
|
1373
|
+
last4?: string;
|
|
1374
|
+
value?: string;
|
|
1375
|
+
meta?: ReactNode;
|
|
1376
|
+
onReveal?: () => boolean | Promise<boolean>;
|
|
1377
|
+
onCopy?: () => void;
|
|
1378
|
+
onRotate?: () => void;
|
|
1379
|
+
}
|
|
1380
|
+
export interface MoneyInputProps extends BaseProps {
|
|
1381
|
+
label?: string;
|
|
1382
|
+
value?: number | null;
|
|
1383
|
+
onChange?: (v: number | null) => void;
|
|
1384
|
+
currency?: string;
|
|
1385
|
+
vat?: string;
|
|
1386
|
+
onVat?: (v: string) => void;
|
|
1387
|
+
vatOptions?: { value: string; label: string; rate?: number }[];
|
|
1388
|
+
showGross?: boolean;
|
|
1389
|
+
hint?: ReactNode;
|
|
1390
|
+
error?: ReactNode;
|
|
1391
|
+
defaultValue?: number | null;
|
|
1392
|
+
required?: boolean;
|
|
1393
|
+
}
|
|
1394
|
+
export interface SettingsLayoutProps extends BaseProps {
|
|
1395
|
+
sections: {
|
|
1396
|
+
id?: string;
|
|
1397
|
+
title: ReactNode;
|
|
1398
|
+
text?: ReactNode;
|
|
1399
|
+
badge?: ReactNode;
|
|
1400
|
+
children?: ReactNode;
|
|
1401
|
+
}[];
|
|
1402
|
+
footer?: ReactNode;
|
|
1403
|
+
}
|
|
1404
|
+
export interface ShortcutsOverlayProps extends BaseProps {
|
|
1405
|
+
open: boolean;
|
|
1406
|
+
onClose: () => void;
|
|
1407
|
+
title?: string;
|
|
1408
|
+
groups: { title: string; items: [string, string[]][] }[];
|
|
1409
|
+
}
|
|
1410
|
+
export interface StatCellProps extends BaseProps {
|
|
1411
|
+
label: ReactNode;
|
|
1412
|
+
value: ReactNode;
|
|
1413
|
+
delta?: number;
|
|
1414
|
+
deltaText?: string;
|
|
1415
|
+
compare?: string;
|
|
1416
|
+
invert?: boolean;
|
|
1417
|
+
spark?: number[];
|
|
1418
|
+
icon?: IconName;
|
|
1419
|
+
iconTint?: Tint;
|
|
1420
|
+
tint?: Tint;
|
|
1421
|
+
}
|
|
1422
|
+
export type UptimeDay =
|
|
1423
|
+
| "ok"
|
|
1424
|
+
| "warn"
|
|
1425
|
+
| "danger"
|
|
1426
|
+
| "none"
|
|
1427
|
+
| { status: "ok" | "warn" | "danger" | "none"; label?: string; note?: string };
|
|
1428
|
+
export interface UptimeBarProps extends BaseProps {
|
|
1429
|
+
days: UptimeDay[];
|
|
1430
|
+
uptime?: number;
|
|
1431
|
+
caption?: ReactNode;
|
|
1432
|
+
}
|
|
1433
|
+
export interface MeterProps extends BaseProps {
|
|
1434
|
+
label?: ReactNode;
|
|
1435
|
+
value: number | null;
|
|
1436
|
+
max?: number;
|
|
1437
|
+
text?: ReactNode;
|
|
1438
|
+
warn?: number;
|
|
1439
|
+
danger?: number;
|
|
1440
|
+
tone?: Tint;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
/* ── Kit 4: agents and chat ── */
|
|
1444
|
+
export interface AgentCardProps extends BaseProps {
|
|
1445
|
+
name: string;
|
|
1446
|
+
role?: string;
|
|
1447
|
+
tint?: Tint;
|
|
1448
|
+
status?: Status;
|
|
1449
|
+
statusLabel?: string;
|
|
1450
|
+
model?: string;
|
|
1451
|
+
cost?: string;
|
|
1452
|
+
last?: ReactNode;
|
|
1453
|
+
onClick?: () => void;
|
|
1454
|
+
onChat?: () => void;
|
|
1455
|
+
}
|
|
1456
|
+
export interface AgentDetailsProps extends BaseProps {
|
|
1457
|
+
name: string;
|
|
1458
|
+
role?: string;
|
|
1459
|
+
tint?: Tint;
|
|
1460
|
+
status?: Status;
|
|
1461
|
+
statusLabel?: string;
|
|
1462
|
+
sections?: {
|
|
1463
|
+
title: string;
|
|
1464
|
+
meta?: ReactNode;
|
|
1465
|
+
items?: KeyValueItem[];
|
|
1466
|
+
children?: ReactNode;
|
|
1467
|
+
open?: boolean;
|
|
1468
|
+
}[];
|
|
1469
|
+
actions?: ReactNode[];
|
|
1470
|
+
}
|
|
1471
|
+
export interface ChatListItem {
|
|
1472
|
+
id: string;
|
|
1473
|
+
name: string;
|
|
1474
|
+
sub?: ReactNode;
|
|
1475
|
+
time?: string;
|
|
1476
|
+
tint?: Tint;
|
|
1477
|
+
avatar?: boolean;
|
|
1478
|
+
status?: Status;
|
|
1479
|
+
unread?: number;
|
|
1480
|
+
pinned?: boolean;
|
|
1481
|
+
}
|
|
1482
|
+
export interface ChatListProps extends BaseProps {
|
|
1483
|
+
groups: { title: string; mark?: Tint; items: ChatListItem[] }[];
|
|
1484
|
+
selected?: string;
|
|
1485
|
+
onSelect?: (id: string) => void;
|
|
1486
|
+
onSearch?: (q: string) => void;
|
|
1487
|
+
filters?: ReactNode;
|
|
1488
|
+
searchPlaceholder?: string;
|
|
1489
|
+
}
|
|
1490
|
+
export interface ChatWorkspaceProps extends BaseProps {
|
|
1491
|
+
list: ReactNode;
|
|
1492
|
+
thread: ReactNode;
|
|
1493
|
+
details?: ReactNode;
|
|
1494
|
+
className?: string;
|
|
1495
|
+
}
|
|
1496
|
+
export interface SearchHitsProps extends BaseProps {
|
|
1497
|
+
items: { id: string | number; chat: string; time?: string; who?: string; text: string }[];
|
|
1498
|
+
query?: string;
|
|
1499
|
+
onOpen?: (item: NonNullable<SearchHitsProps["items"]>[number]) => void;
|
|
1500
|
+
emptyText?: string;
|
|
1501
|
+
}
|
|
1502
|
+
export interface ThinkingLineProps extends BaseProps {
|
|
1503
|
+
text?: string;
|
|
1504
|
+
}
|
|
1505
|
+
export interface FeedbackRatingProps extends BaseProps {
|
|
1506
|
+
value?: "up" | "down" | null;
|
|
1507
|
+
onRate?: (v: "up" | "down") => void;
|
|
1508
|
+
onSubmit?: (v: "up" | "down", comment?: string) => void;
|
|
1509
|
+
label?: string;
|
|
1510
|
+
placeholder?: string;
|
|
1511
|
+
thanks?: string;
|
|
1512
|
+
askOnUp?: boolean;
|
|
1513
|
+
}
|
|
1514
|
+
export interface ActivityItem {
|
|
1515
|
+
time?: string;
|
|
1516
|
+
status?: Status;
|
|
1517
|
+
actor?: ReactNode;
|
|
1518
|
+
text: ReactNode;
|
|
1519
|
+
link?: ReactNode;
|
|
1520
|
+
}
|
|
1521
|
+
export interface ActivityFeedProps extends BaseProps {
|
|
1522
|
+
groups?: { title?: string; items: ActivityItem[] }[];
|
|
1523
|
+
items?: ActivityItem[];
|
|
1524
|
+
}
|
|
1525
|
+
export interface DailyBriefingProps extends BaseProps {
|
|
1526
|
+
title: string;
|
|
1527
|
+
time?: string;
|
|
1528
|
+
tint?: Tint;
|
|
1529
|
+
summary: ReactNode;
|
|
1530
|
+
attention?: { text: ReactNode; status?: Status; onClick?: () => void }[];
|
|
1531
|
+
suggestions?: ReactNode[];
|
|
1532
|
+
attentionTitle?: string;
|
|
1533
|
+
suggestionsTitle?: string;
|
|
1534
|
+
}
|
|
1535
|
+
export interface BudgetStopProps extends BaseProps {
|
|
1536
|
+
spent: number;
|
|
1537
|
+
budget: number;
|
|
1538
|
+
title?: string;
|
|
1539
|
+
text?: ReactNode;
|
|
1540
|
+
paused?: ReactNode;
|
|
1541
|
+
running?: ReactNode;
|
|
1542
|
+
onRaise?: () => void;
|
|
1543
|
+
actionLabel?: string;
|
|
1544
|
+
}
|
|
1545
|
+
export interface MemoryViewerProps extends BaseProps {
|
|
1546
|
+
items: { id: string | number; scope: string; source?: string; date?: string; text: string }[];
|
|
1547
|
+
onEdit?: (item: NonNullable<MemoryViewerProps["items"]>[number]) => void;
|
|
1548
|
+
onDelete?: (item: NonNullable<MemoryViewerProps["items"]>[number]) => void;
|
|
1549
|
+
}
|
|
1550
|
+
export interface OverrideDiffProps extends BaseProps {
|
|
1551
|
+
title?: string;
|
|
1552
|
+
versions?: ReactNode;
|
|
1553
|
+
by?: ReactNode;
|
|
1554
|
+
before: string;
|
|
1555
|
+
after: string;
|
|
1556
|
+
onDiscard?: () => void;
|
|
1557
|
+
onPromote?: () => void;
|
|
1558
|
+
discardLabel?: string;
|
|
1559
|
+
promoteLabel?: string;
|
|
1560
|
+
}
|
|
1561
|
+
export interface TriggerListProps extends BaseProps {
|
|
1562
|
+
items: {
|
|
1563
|
+
id: string | number;
|
|
1564
|
+
type: "schedule" | "event" | "webhook" | "mail";
|
|
1565
|
+
rule: ReactNode;
|
|
1566
|
+
agent?: string;
|
|
1567
|
+
by?: string;
|
|
1568
|
+
next?: string;
|
|
1569
|
+
enabled?: boolean;
|
|
1570
|
+
}[];
|
|
1571
|
+
onToggle?: (item: NonNullable<TriggerListProps["items"]>[number]) => void;
|
|
1572
|
+
onRun?: (item: NonNullable<TriggerListProps["items"]>[number]) => void;
|
|
1573
|
+
}
|
|
1574
|
+
export interface ScheduleCalendarProps extends BaseProps {
|
|
1575
|
+
events: {
|
|
1576
|
+
day: number;
|
|
1577
|
+
start: number;
|
|
1578
|
+
end: number;
|
|
1579
|
+
label: string;
|
|
1580
|
+
sub?: string;
|
|
1581
|
+
tint?: Tint;
|
|
1582
|
+
self?: boolean;
|
|
1583
|
+
}[];
|
|
1584
|
+
from?: number;
|
|
1585
|
+
to?: number;
|
|
1586
|
+
days?: string[];
|
|
1587
|
+
onOpen?: (e: NonNullable<ScheduleCalendarProps["events"]>[number]) => void;
|
|
1588
|
+
}
|
|
1589
|
+
export interface OrgNode {
|
|
1590
|
+
id?: string | number;
|
|
1591
|
+
root?: boolean;
|
|
1592
|
+
name: string;
|
|
1593
|
+
role?: string;
|
|
1594
|
+
tint?: Tint;
|
|
1595
|
+
status?: Status;
|
|
1596
|
+
avatar?: boolean;
|
|
1597
|
+
children?: OrgNode[];
|
|
1598
|
+
}
|
|
1599
|
+
export interface OrgChartProps extends BaseProps {
|
|
1600
|
+
root: OrgNode;
|
|
1601
|
+
}
|
|
1602
|
+
export interface VoiceModeProps extends BaseProps {
|
|
1603
|
+
name: string;
|
|
1604
|
+
tint?: Tint;
|
|
1605
|
+
state: "listening" | "thinking" | "speaking" | "idle";
|
|
1606
|
+
stateLabel?: string;
|
|
1607
|
+
transcript?: ReactNode;
|
|
1608
|
+
muted?: boolean;
|
|
1609
|
+
onMute?: () => void;
|
|
1610
|
+
onEnd?: () => void;
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
/* ── Kit 4: operations ── */
|
|
1614
|
+
export interface ConnectionCardProps extends BaseProps {
|
|
1615
|
+
name: string;
|
|
1616
|
+
icon?: IconName;
|
|
1617
|
+
logo?: ReactNode;
|
|
1618
|
+
text?: ReactNode;
|
|
1619
|
+
status: "connected" | "expiring" | "error" | "missing";
|
|
1620
|
+
statusLabel?: string;
|
|
1621
|
+
action?: ReactNode;
|
|
1622
|
+
}
|
|
1623
|
+
export interface ConnectionBannerProps extends BaseProps {
|
|
1624
|
+
state: "reconnecting" | "offline" | "online";
|
|
1625
|
+
seconds?: number;
|
|
1626
|
+
text?: ReactNode;
|
|
1627
|
+
onRetry?: () => void;
|
|
1628
|
+
}
|
|
1629
|
+
export interface ServerCardProps extends BaseProps {
|
|
1630
|
+
name: string;
|
|
1631
|
+
provider?: string;
|
|
1632
|
+
address?: string;
|
|
1633
|
+
logo?: ReactNode;
|
|
1634
|
+
status?: Status;
|
|
1635
|
+
statusLabel?: string;
|
|
1636
|
+
meters?: {
|
|
1637
|
+
label: string;
|
|
1638
|
+
value: number | null;
|
|
1639
|
+
max?: number;
|
|
1640
|
+
text?: ReactNode;
|
|
1641
|
+
unknown?: string;
|
|
1642
|
+
}[];
|
|
1643
|
+
uptime?: UptimeBarProps;
|
|
1644
|
+
foot?: ReactNode;
|
|
1645
|
+
}
|
|
1646
|
+
export interface DeployPipelineProps extends BaseProps {
|
|
1647
|
+
stages: {
|
|
1648
|
+
name: string;
|
|
1649
|
+
status?: "done" | "running" | "signal" | "danger" | "idle";
|
|
1650
|
+
duration?: string;
|
|
1651
|
+
action?: ReactNode;
|
|
1652
|
+
}[];
|
|
1653
|
+
}
|
|
1654
|
+
export interface DnsRecord {
|
|
1655
|
+
id: string | number;
|
|
1656
|
+
type: string;
|
|
1657
|
+
name: string;
|
|
1658
|
+
content: string;
|
|
1659
|
+
ttl?: string;
|
|
1660
|
+
proxy?: boolean | null;
|
|
1661
|
+
}
|
|
1662
|
+
export interface DnsRecordTableProps extends BaseProps {
|
|
1663
|
+
records: DnsRecord[];
|
|
1664
|
+
rowMenu?: (r: DnsRecord) => (MenuItem | "-")[];
|
|
1665
|
+
selectable?: boolean;
|
|
1666
|
+
bulkActions?: BulkAction<DnsRecord>[];
|
|
1667
|
+
toolbar?: ReactNode;
|
|
1668
|
+
}
|
|
1669
|
+
export interface DomainListProps extends BaseProps {
|
|
1670
|
+
items: {
|
|
1671
|
+
name: string;
|
|
1672
|
+
registrar?: string;
|
|
1673
|
+
dns?: string;
|
|
1674
|
+
days?: number;
|
|
1675
|
+
ssl?: Status;
|
|
1676
|
+
sslLabel?: string;
|
|
1677
|
+
}[];
|
|
1678
|
+
onOpen?: (d: NonNullable<DomainListProps["items"]>[number]) => void;
|
|
1679
|
+
}
|
|
1680
|
+
export interface MailAuthStatusProps extends BaseProps {
|
|
1681
|
+
rows: {
|
|
1682
|
+
domain: string;
|
|
1683
|
+
mx?: { status: Status; label?: string };
|
|
1684
|
+
spf?: { status: Status; label?: string };
|
|
1685
|
+
dkim?: { status: Status; label?: string };
|
|
1686
|
+
dmarc?: { status: Status; label?: string };
|
|
1687
|
+
}[];
|
|
1688
|
+
columns?: string[];
|
|
1689
|
+
onOpen?: (row: NonNullable<MailAuthStatusProps["rows"]>[number], column: string) => void;
|
|
1690
|
+
}
|
|
1691
|
+
export interface LedgerRow {
|
|
1692
|
+
id: string | number;
|
|
1693
|
+
date: string;
|
|
1694
|
+
ref?: string;
|
|
1695
|
+
text: string;
|
|
1696
|
+
category?: string;
|
|
1697
|
+
project?: string;
|
|
1698
|
+
projectTint?: Tint;
|
|
1699
|
+
net: number;
|
|
1700
|
+
vat?: number;
|
|
1701
|
+
gross: number;
|
|
1702
|
+
suggested?: string;
|
|
1703
|
+
status?: Status;
|
|
1704
|
+
statusLabel?: string;
|
|
1705
|
+
}
|
|
1706
|
+
export interface LedgerTableProps extends BaseProps {
|
|
1707
|
+
rows: LedgerRow[];
|
|
1708
|
+
categories?: string[];
|
|
1709
|
+
onEdit?: (row: LedgerRow, change: Partial<LedgerRow>) => void;
|
|
1710
|
+
currency?: string;
|
|
1711
|
+
selectable?: boolean;
|
|
1712
|
+
bulkActions?: BulkAction<LedgerRow>[];
|
|
1713
|
+
toolbar?: ReactNode;
|
|
1714
|
+
maxHeight?: number;
|
|
1715
|
+
columnToggle?: boolean;
|
|
1716
|
+
}
|
|
1717
|
+
export interface PnLStatementProps extends BaseProps {
|
|
1718
|
+
columns: string[];
|
|
1719
|
+
rows: { kind?: "section" | "subtotal" | "total"; label: string; values?: number[] }[];
|
|
1720
|
+
currency?: string;
|
|
1721
|
+
total?: boolean;
|
|
1722
|
+
label?: string;
|
|
1723
|
+
}
|
|
1724
|
+
export interface ReceiptSuggestionProps extends BaseProps {
|
|
1725
|
+
file: string;
|
|
1726
|
+
source?: ReactNode;
|
|
1727
|
+
fields: { label: string; value: ReactNode; mono?: boolean; confidence?: number }[];
|
|
1728
|
+
suggestion?: ReactNode;
|
|
1729
|
+
onConfirm?: () => void;
|
|
1730
|
+
onDiscard?: () => void;
|
|
1731
|
+
confirmLabel?: string;
|
|
1732
|
+
discardLabel?: string;
|
|
1733
|
+
children?: ReactNode;
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
/* ── Kit 4: mail, mobile, platform ── */
|
|
1737
|
+
export interface AccountSwitcherProps extends BaseProps {
|
|
1738
|
+
accounts: { address: string; domain?: string; unread?: number }[];
|
|
1739
|
+
value?: string | null;
|
|
1740
|
+
onChange?: (address: string | null) => void;
|
|
1741
|
+
unread?: number;
|
|
1742
|
+
allLabel?: string;
|
|
1743
|
+
}
|
|
1744
|
+
export interface InboxListProps extends BaseProps {
|
|
1745
|
+
items: {
|
|
1746
|
+
id: string | number;
|
|
1747
|
+
from: string;
|
|
1748
|
+
time?: string;
|
|
1749
|
+
subject: string;
|
|
1750
|
+
snippet?: string;
|
|
1751
|
+
unread?: boolean;
|
|
1752
|
+
to?: string;
|
|
1753
|
+
agent?: { label: string; tone?: Tone };
|
|
1754
|
+
tags?: string[];
|
|
1755
|
+
}[];
|
|
1756
|
+
selected?: string | number;
|
|
1757
|
+
onOpen?: (m: NonNullable<InboxListProps["items"]>[number]) => void;
|
|
1758
|
+
}
|
|
1759
|
+
export interface MailThreadProps extends BaseProps {
|
|
1760
|
+
subject: string;
|
|
1761
|
+
messages: {
|
|
1762
|
+
id: string | number;
|
|
1763
|
+
from: string;
|
|
1764
|
+
to?: string;
|
|
1765
|
+
time?: string;
|
|
1766
|
+
snippet?: string;
|
|
1767
|
+
body: ReactNode;
|
|
1768
|
+
agent?: boolean;
|
|
1769
|
+
tint?: Tint;
|
|
1770
|
+
agentNote?: string;
|
|
1771
|
+
attachments?: { name: string; size?: string }[];
|
|
1772
|
+
}[];
|
|
1773
|
+
reply?: ReactNode;
|
|
1774
|
+
}
|
|
1775
|
+
export interface SignatureEditorProps extends BaseProps {
|
|
1776
|
+
value?: Record<string, string>;
|
|
1777
|
+
onChange?: (v: Record<string, string>) => void;
|
|
1778
|
+
fields?: { key: string; label: string }[];
|
|
1779
|
+
note?: ReactNode;
|
|
1780
|
+
extra?: ReactNode;
|
|
1781
|
+
defaultValue?: Record<string, string>;
|
|
1782
|
+
previewLabel?: string;
|
|
1783
|
+
}
|
|
1784
|
+
export interface AttachmentPreviewProps extends BaseProps {
|
|
1785
|
+
name: string;
|
|
1786
|
+
meta?: ReactNode;
|
|
1787
|
+
children?: ReactNode;
|
|
1788
|
+
facts?: KeyValueItem[];
|
|
1789
|
+
found?: ReactNode;
|
|
1790
|
+
actions?: ReactNode;
|
|
1791
|
+
onClose?: () => void;
|
|
1792
|
+
width?: number | string;
|
|
1793
|
+
inline?: boolean;
|
|
1794
|
+
}
|
|
1795
|
+
export interface MobileTabBarProps extends BaseProps {
|
|
1796
|
+
items: { id: string; label: string; icon: IconName; count?: number }[];
|
|
1797
|
+
active?: string;
|
|
1798
|
+
onPick?: (id: string) => void;
|
|
1799
|
+
label?: string;
|
|
1800
|
+
}
|
|
1801
|
+
export interface PushNotificationProps extends BaseProps {
|
|
1802
|
+
app?: string;
|
|
1803
|
+
time?: string;
|
|
1804
|
+
title: string;
|
|
1805
|
+
text?: ReactNode;
|
|
1806
|
+
actions?: { label: string; onClick?: () => void }[];
|
|
1807
|
+
}
|
|
1808
|
+
export interface ConfigPRSummaryProps extends BaseProps {
|
|
1809
|
+
title: string;
|
|
1810
|
+
meta?: ReactNode;
|
|
1811
|
+
status?: Status;
|
|
1812
|
+
statusLabel?: string;
|
|
1813
|
+
summary?: ReactNode;
|
|
1814
|
+
items: {
|
|
1815
|
+
kind: "project" | "team" | "agent" | "tool" | "trigger" | "file";
|
|
1816
|
+
name: string;
|
|
1817
|
+
detail?: ReactNode;
|
|
1818
|
+
op?: "add" | "change" | "remove";
|
|
1819
|
+
}[];
|
|
1820
|
+
actions?: ReactNode[];
|
|
1821
|
+
}
|
|
1822
|
+
export interface ModuleRegistryProps extends BaseProps {
|
|
1823
|
+
items: {
|
|
1824
|
+
id: string;
|
|
1825
|
+
name: string;
|
|
1826
|
+
version?: string;
|
|
1827
|
+
text?: ReactNode;
|
|
1828
|
+
icon?: IconName;
|
|
1829
|
+
core?: boolean;
|
|
1830
|
+
enabled?: boolean;
|
|
1831
|
+
adds?: string[];
|
|
1832
|
+
}[];
|
|
1833
|
+
onToggle?: (m: NonNullable<ModuleRegistryProps["items"]>[number]) => void;
|
|
1834
|
+
coreLabel?: string;
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
/* ── Kit 5: shared form and data pieces ── */
|
|
1838
|
+
export interface RangeSliderProps extends BaseProps {
|
|
1839
|
+
label?: ReactNode;
|
|
1840
|
+
min?: number;
|
|
1841
|
+
max?: number;
|
|
1842
|
+
step?: number;
|
|
1843
|
+
value?: [number, number];
|
|
1844
|
+
defaultValue?: [number, number];
|
|
1845
|
+
onChange?: (v: [number, number]) => void;
|
|
1846
|
+
unit?: string;
|
|
1847
|
+
inputs?: boolean;
|
|
1848
|
+
openEnd?: boolean;
|
|
1849
|
+
format?: (v: number) => string;
|
|
1850
|
+
hint?: ReactNode;
|
|
1851
|
+
}
|
|
1852
|
+
export interface BarListProps extends BaseProps {
|
|
1853
|
+
items: {
|
|
1854
|
+
id?: string;
|
|
1855
|
+
label: ReactNode;
|
|
1856
|
+
mark?: ReactNode;
|
|
1857
|
+
value: number;
|
|
1858
|
+
share?: number;
|
|
1859
|
+
tint?: Tint;
|
|
1860
|
+
}[];
|
|
1861
|
+
format?: (v: number) => string;
|
|
1862
|
+
onPick?: (item: NonNullable<BarListProps["items"]>[number]) => void;
|
|
1863
|
+
label?: string;
|
|
1864
|
+
}
|
|
1865
|
+
export interface StatusSelectProps extends BaseProps {
|
|
1866
|
+
options: { value: string; label: string; status?: Status }[];
|
|
1867
|
+
value?: string;
|
|
1868
|
+
defaultValue?: string;
|
|
1869
|
+
onChange?: (v: string) => void;
|
|
1870
|
+
size?: "sm";
|
|
1871
|
+
label?: string;
|
|
1872
|
+
width?: number;
|
|
1873
|
+
}
|
|
1874
|
+
export interface TilePickerProps extends BaseProps {
|
|
1875
|
+
options: {
|
|
1876
|
+
value: string;
|
|
1877
|
+
label: ReactNode;
|
|
1878
|
+
meta?: ReactNode;
|
|
1879
|
+
image?: string;
|
|
1880
|
+
icon?: IconName;
|
|
1881
|
+
art?: ReactNode;
|
|
1882
|
+
tint?: Tint;
|
|
1883
|
+
color?: string;
|
|
1884
|
+
disabled?: boolean;
|
|
1885
|
+
}[];
|
|
1886
|
+
value?: string | string[];
|
|
1887
|
+
defaultValue?: string | string[];
|
|
1888
|
+
onChange?: (v: string | string[] | null) => void;
|
|
1889
|
+
multiple?: boolean;
|
|
1890
|
+
min?: number;
|
|
1891
|
+
label?: string;
|
|
1892
|
+
}
|
|
1893
|
+
export interface ColorFieldProps extends BaseProps {
|
|
1894
|
+
label?: ReactNode;
|
|
1895
|
+
value?: string;
|
|
1896
|
+
defaultValue?: string;
|
|
1897
|
+
onChange?: (v: string) => void;
|
|
1898
|
+
against?: string | false;
|
|
1899
|
+
hint?: ReactNode;
|
|
1900
|
+
}
|
|
1901
|
+
export interface MapPoint {
|
|
1902
|
+
id: string | number;
|
|
1903
|
+
label: string;
|
|
1904
|
+
sub?: ReactNode;
|
|
1905
|
+
lat: number;
|
|
1906
|
+
lng: number;
|
|
1907
|
+
value?: number;
|
|
1908
|
+
text?: ReactNode;
|
|
1909
|
+
tint?: Tint;
|
|
1910
|
+
pulse?: boolean;
|
|
1911
|
+
}
|
|
1912
|
+
export interface MapViewProps extends BaseProps {
|
|
1913
|
+
points?: MapPoint[];
|
|
1914
|
+
bounds?: { n: number; s: number; w: number; e: number };
|
|
1915
|
+
background?: ReactNode;
|
|
1916
|
+
bubbles?: boolean;
|
|
1917
|
+
selected?: MapPoint["id"] | null;
|
|
1918
|
+
onSelect?: (id: MapPoint["id"] | null) => void;
|
|
1919
|
+
renderPopup?: (p: MapPoint) => ReactNode;
|
|
1920
|
+
legend?: ReactNode;
|
|
1921
|
+
controls?: ReactNode;
|
|
1922
|
+
height?: number;
|
|
1923
|
+
label?: string;
|
|
1924
|
+
className?: string;
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
/* ── Kit 5: admin ── */
|
|
1928
|
+
export interface LiveFeedItem {
|
|
1929
|
+
id: string | number;
|
|
1930
|
+
type?: string;
|
|
1931
|
+
icon?: IconName;
|
|
1932
|
+
tint?: Tint;
|
|
1933
|
+
title: ReactNode;
|
|
1934
|
+
text?: ReactNode;
|
|
1935
|
+
amount?: number;
|
|
1936
|
+
currency?: string;
|
|
1937
|
+
time?: string;
|
|
1938
|
+
fresh?: boolean;
|
|
1939
|
+
}
|
|
1940
|
+
export interface LiveFeedProps extends BaseProps {
|
|
1941
|
+
items: LiveFeedItem[];
|
|
1942
|
+
types?: { value: string; label: string }[];
|
|
1943
|
+
paused?: boolean;
|
|
1944
|
+
onPause?: (paused: boolean) => void;
|
|
1945
|
+
maxHeight?: number;
|
|
1946
|
+
emptyText?: string;
|
|
1947
|
+
}
|
|
1948
|
+
export interface RichTextEditorProps extends BaseProps {
|
|
1949
|
+
label?: ReactNode;
|
|
1950
|
+
defaultValue?: string;
|
|
1951
|
+
value?: string;
|
|
1952
|
+
onChange?: (html: string) => void;
|
|
1953
|
+
placeholder?: string;
|
|
1954
|
+
variables?: { key: string; label: string }[];
|
|
1955
|
+
maxLength?: number;
|
|
1956
|
+
minHeight?: number;
|
|
1957
|
+
footer?: ReactNode;
|
|
1958
|
+
hint?: ReactNode;
|
|
1959
|
+
error?: ReactNode;
|
|
1960
|
+
disabled?: boolean;
|
|
1961
|
+
}
|
|
1962
|
+
export interface EmailPreviewProps extends BaseProps {
|
|
1963
|
+
from?: string;
|
|
1964
|
+
fromName?: string;
|
|
1965
|
+
subject?: string;
|
|
1966
|
+
preheader?: string;
|
|
1967
|
+
html?: string;
|
|
1968
|
+
children?: ReactNode;
|
|
1969
|
+
device?: "desktop" | "mobile";
|
|
1970
|
+
onDevice?: (d: string) => void;
|
|
1971
|
+
checks?: { status: Status; label: ReactNode }[];
|
|
1972
|
+
}
|
|
1973
|
+
export interface SearchAdPreviewProps extends BaseProps {
|
|
1974
|
+
name?: string;
|
|
1975
|
+
domain: string;
|
|
1976
|
+
paths?: string[];
|
|
1977
|
+
headlines?: string[];
|
|
1978
|
+
descriptions?: string[];
|
|
1979
|
+
sitelinks?: string[];
|
|
1980
|
+
device?: "mobile" | "desktop";
|
|
1981
|
+
onDevice?: (d: string) => void;
|
|
1982
|
+
sponsoredLabel?: string;
|
|
1983
|
+
}
|
|
1984
|
+
export interface BalanceCardProps extends BaseProps {
|
|
1985
|
+
name: string;
|
|
1986
|
+
sub?: ReactNode;
|
|
1987
|
+
logo?: ReactNode;
|
|
1988
|
+
icon?: IconName;
|
|
1989
|
+
tint?: Tint;
|
|
1990
|
+
balance: number;
|
|
1991
|
+
currency?: string;
|
|
1992
|
+
perDay?: number;
|
|
1993
|
+
low?: number;
|
|
1994
|
+
spark?: number[];
|
|
1995
|
+
status?: Status;
|
|
1996
|
+
statusLabel?: string;
|
|
1997
|
+
onTopUp?: () => void;
|
|
1998
|
+
topUpLabel?: string;
|
|
1999
|
+
action?: ReactNode;
|
|
2000
|
+
}
|
|
2001
|
+
export interface ServiceMonitorProps extends BaseProps {
|
|
2002
|
+
items: {
|
|
2003
|
+
id?: string;
|
|
2004
|
+
name: string;
|
|
2005
|
+
status: Status;
|
|
2006
|
+
statusLabel?: string;
|
|
2007
|
+
latency?: number | null;
|
|
2008
|
+
errorRate?: number | null;
|
|
2009
|
+
checked?: string;
|
|
2010
|
+
history?: (Status | "none")[];
|
|
2011
|
+
}[];
|
|
2012
|
+
label?: string;
|
|
2013
|
+
}
|
|
2014
|
+
export interface RunHistoryProps extends BaseProps {
|
|
2015
|
+
items: {
|
|
2016
|
+
id: string | number;
|
|
2017
|
+
name: string;
|
|
2018
|
+
status: Status;
|
|
2019
|
+
started?: string;
|
|
2020
|
+
duration?: string;
|
|
2021
|
+
by?: string;
|
|
2022
|
+
counts?: { value: number; label: string; tone?: Tone }[];
|
|
2023
|
+
detail?: ReactNode;
|
|
2024
|
+
}[];
|
|
2025
|
+
label?: string;
|
|
2026
|
+
}
|
|
2027
|
+
export interface WebhookEndpointProps extends BaseProps {
|
|
2028
|
+
url: string;
|
|
2029
|
+
events?: string[];
|
|
2030
|
+
status?: Status;
|
|
2031
|
+
statusLabel?: string;
|
|
2032
|
+
successRate?: number;
|
|
2033
|
+
enabled?: boolean;
|
|
2034
|
+
onToggle?: () => void;
|
|
2035
|
+
secret?: ReactNode;
|
|
2036
|
+
deliveries?: { id: string | number; code?: number; event: string; time?: string; ms?: number }[];
|
|
2037
|
+
onRetry?: (d: NonNullable<WebhookEndpointProps["deliveries"]>[number]) => void;
|
|
2038
|
+
menu?: MenuProps["items"];
|
|
2039
|
+
defaultOpen?: boolean;
|
|
2040
|
+
}
|
|
2041
|
+
export interface BackupListProps extends BaseProps {
|
|
2042
|
+
items: {
|
|
2043
|
+
id: string | number;
|
|
2044
|
+
name?: string;
|
|
2045
|
+
time?: string;
|
|
2046
|
+
kind?: string;
|
|
2047
|
+
where?: string;
|
|
2048
|
+
retention?: string;
|
|
2049
|
+
size?: string;
|
|
2050
|
+
status?: Status;
|
|
2051
|
+
}[];
|
|
2052
|
+
onDownload?: (b: NonNullable<BackupListProps["items"]>[number]) => void;
|
|
2053
|
+
onRestore?: (b: NonNullable<BackupListProps["items"]>[number]) => void;
|
|
2054
|
+
footer?: ReactNode;
|
|
2055
|
+
label?: string;
|
|
2056
|
+
}
|
|
2057
|
+
export interface BlockListProps extends BaseProps {
|
|
2058
|
+
items: {
|
|
2059
|
+
id: string | number;
|
|
2060
|
+
value: string;
|
|
2061
|
+
kind?: string;
|
|
2062
|
+
reason?: string;
|
|
2063
|
+
by?: string;
|
|
2064
|
+
until?: string;
|
|
2065
|
+
}[];
|
|
2066
|
+
onAdd?: () => void;
|
|
2067
|
+
onRemove?: (b: NonNullable<BlockListProps["items"]>[number]) => void;
|
|
2068
|
+
addLabel?: string;
|
|
2069
|
+
removeLabel?: string;
|
|
2070
|
+
searchPlaceholder?: string;
|
|
2071
|
+
emptyText?: string;
|
|
2072
|
+
}
|
|
2073
|
+
export interface ReviewCardProps extends BaseProps {
|
|
2074
|
+
author: string;
|
|
2075
|
+
verified?: boolean;
|
|
2076
|
+
product?: string;
|
|
2077
|
+
date?: string;
|
|
2078
|
+
rating: number;
|
|
2079
|
+
title?: string;
|
|
2080
|
+
text: string;
|
|
2081
|
+
state?: "pending" | "published" | "hidden" | "flagged";
|
|
2082
|
+
stateLabel?: string;
|
|
2083
|
+
highlight?: string[];
|
|
2084
|
+
reply?: string;
|
|
2085
|
+
replyLabel?: string;
|
|
2086
|
+
onPublish?: () => void;
|
|
2087
|
+
onHide?: () => void;
|
|
2088
|
+
onReply?: (text: string) => void;
|
|
2089
|
+
}
|
|
2090
|
+
export interface CouponCardProps extends BaseProps {
|
|
2091
|
+
code: string;
|
|
2092
|
+
kind?: "percent" | "fixed";
|
|
2093
|
+
value: number;
|
|
2094
|
+
currency?: string;
|
|
2095
|
+
used?: number;
|
|
2096
|
+
limit?: number;
|
|
2097
|
+
until?: string;
|
|
2098
|
+
min?: number;
|
|
2099
|
+
revenue?: number;
|
|
2100
|
+
text?: ReactNode;
|
|
2101
|
+
status?: Status;
|
|
2102
|
+
statusLabel?: string;
|
|
2103
|
+
onCopy?: () => void;
|
|
2104
|
+
menu?: MenuProps["items"];
|
|
2105
|
+
}
|
|
2106
|
+
export interface LocaleFieldProps extends BaseProps {
|
|
2107
|
+
label?: ReactNode;
|
|
2108
|
+
locales: { code: string; label?: string; flag?: string }[];
|
|
2109
|
+
value?: Record<string, string>;
|
|
2110
|
+
defaultValue?: Record<string, string>;
|
|
2111
|
+
onChange?: (v: Record<string, string>) => void;
|
|
2112
|
+
source?: string;
|
|
2113
|
+
active?: string;
|
|
2114
|
+
multiline?: boolean;
|
|
2115
|
+
rows?: number;
|
|
2116
|
+
placeholder?: string;
|
|
2117
|
+
onTranslate?: (text: string, to: string) => string | Promise<string>;
|
|
2118
|
+
hint?: ReactNode;
|
|
2119
|
+
error?: ReactNode;
|
|
2120
|
+
}
|
|
2121
|
+
export interface LocaleSwitcherProps extends BaseProps {
|
|
2122
|
+
languages?: { code: string; label: string; short?: string; flag?: string }[];
|
|
2123
|
+
language?: string;
|
|
2124
|
+
onLanguage?: (code: string) => void;
|
|
2125
|
+
currencies?: string[];
|
|
2126
|
+
currency?: string;
|
|
2127
|
+
onCurrency?: (c: string) => void;
|
|
2128
|
+
variant?: "frame";
|
|
2129
|
+
}
|
|
2130
|
+
export interface WorkspaceSwitcherProps extends BaseProps {
|
|
2131
|
+
items: { id: string; name: string; sub?: string; tint?: Tint; logo?: ReactNode }[];
|
|
2132
|
+
value?: string;
|
|
2133
|
+
onChange?: (id: string) => void;
|
|
2134
|
+
label?: string;
|
|
2135
|
+
footer?: ReactNode;
|
|
2136
|
+
variant?: "frame";
|
|
2137
|
+
width?: number;
|
|
2138
|
+
}
|
|
2139
|
+
export interface ExportDialogProps extends BaseProps {
|
|
2140
|
+
open?: boolean;
|
|
2141
|
+
inline?: boolean;
|
|
2142
|
+
onClose?: () => void;
|
|
2143
|
+
title?: string;
|
|
2144
|
+
text?: ReactNode;
|
|
2145
|
+
count?: number;
|
|
2146
|
+
formats?: string[];
|
|
2147
|
+
format?: string;
|
|
2148
|
+
columns?: { key: string; label: string; default?: boolean }[];
|
|
2149
|
+
ranges?: boolean;
|
|
2150
|
+
range?: { from: Date | null; to: Date | null } | null;
|
|
2151
|
+
note?: ReactNode;
|
|
2152
|
+
onExport?: (
|
|
2153
|
+
o: { format: string; columns: string[]; range: DateRange | null },
|
|
2154
|
+
progress: (pct: number) => void,
|
|
2155
|
+
) => void | Promise<void>;
|
|
2156
|
+
onDownload?: () => void;
|
|
2157
|
+
download?: ReactNode;
|
|
2158
|
+
doneText?: string;
|
|
2159
|
+
}
|
|
2160
|
+
export interface TwoFactorSetupProps extends BaseProps {
|
|
2161
|
+
qr?: ReactNode;
|
|
2162
|
+
secret: string;
|
|
2163
|
+
onVerify?: (code: string) => boolean | Promise<boolean>;
|
|
2164
|
+
codes?: string[];
|
|
2165
|
+
onDownload?: () => void;
|
|
2166
|
+
onDone?: () => void;
|
|
2167
|
+
step?: 0 | 1 | 2;
|
|
2168
|
+
scanText?: string;
|
|
2169
|
+
codesText?: string;
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
/* ── Kit 5: media ── */
|
|
2173
|
+
export interface ImageVariant {
|
|
2174
|
+
id: string | number;
|
|
2175
|
+
label: string;
|
|
2176
|
+
src?: string;
|
|
2177
|
+
size?: string;
|
|
2178
|
+
format?: string;
|
|
2179
|
+
weight?: string;
|
|
2180
|
+
ratio?: string;
|
|
2181
|
+
status?: Status;
|
|
2182
|
+
}
|
|
2183
|
+
export interface ImageVariantsProps extends BaseProps {
|
|
2184
|
+
variants: ImageVariant[];
|
|
2185
|
+
selected?: string | number;
|
|
2186
|
+
onSelect?: (id: string | number) => void;
|
|
2187
|
+
alt?: string;
|
|
2188
|
+
tint?: Tint;
|
|
2189
|
+
actions?: ReactNode;
|
|
2190
|
+
}
|
|
2191
|
+
export interface GalleryItem {
|
|
2192
|
+
src?: string;
|
|
2193
|
+
alt?: string;
|
|
2194
|
+
caption?: string;
|
|
2195
|
+
art?: ReactNode;
|
|
2196
|
+
tint?: Tint;
|
|
2197
|
+
}
|
|
2198
|
+
export interface GalleryProps extends BaseProps {
|
|
2199
|
+
items: GalleryItem[];
|
|
2200
|
+
start?: number;
|
|
2201
|
+
ratio?: string;
|
|
2202
|
+
thumbs?: boolean;
|
|
2203
|
+
fullscreen?: boolean;
|
|
2204
|
+
badge?: ReactNode;
|
|
2205
|
+
}
|
|
2206
|
+
export interface MediaPane {
|
|
2207
|
+
src?: string;
|
|
2208
|
+
alt?: string;
|
|
2209
|
+
art?: ReactNode;
|
|
2210
|
+
tint?: Tint;
|
|
2211
|
+
}
|
|
2212
|
+
export interface BeforeAfterProps extends BaseProps {
|
|
2213
|
+
before: MediaPane;
|
|
2214
|
+
after: MediaPane;
|
|
2215
|
+
start?: number;
|
|
2216
|
+
ratio?: string;
|
|
2217
|
+
beforeLabel?: string;
|
|
2218
|
+
afterLabel?: string;
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
/* ── Kit 5: real estate ── */
|
|
2222
|
+
export interface Listing {
|
|
2223
|
+
id: string | number;
|
|
2224
|
+
title: string;
|
|
2225
|
+
price: number | null;
|
|
2226
|
+
rent?: boolean;
|
|
2227
|
+
currency?: string;
|
|
2228
|
+
pricePerSqm?: number;
|
|
2229
|
+
area?: number;
|
|
2230
|
+
rooms?: number;
|
|
2231
|
+
place?: string;
|
|
2232
|
+
image?: string;
|
|
2233
|
+
tint?: Tint;
|
|
2234
|
+
photos?: number;
|
|
2235
|
+
source?: string;
|
|
2236
|
+
seller?: "private" | "agent";
|
|
2237
|
+
sellerLabel?: string;
|
|
2238
|
+
phone?: boolean;
|
|
2239
|
+
isNew?: boolean;
|
|
2240
|
+
age?: string;
|
|
2241
|
+
status?: string;
|
|
2242
|
+
wished?: boolean;
|
|
2243
|
+
}
|
|
2244
|
+
export interface ListingCardProps extends BaseProps {
|
|
2245
|
+
listing: Listing;
|
|
2246
|
+
layout?: "card" | "row";
|
|
2247
|
+
selected?: boolean;
|
|
2248
|
+
onSelect?: (l: Listing) => void;
|
|
2249
|
+
onWish?: (l: Listing) => void;
|
|
2250
|
+
statusOptions?: StatusSelectProps["options"];
|
|
2251
|
+
onStatus?: (l: Listing, status: string) => void;
|
|
2252
|
+
onOpen?: (l: Listing) => void;
|
|
2253
|
+
}
|
|
2254
|
+
export interface ResultsToolbarProps extends BaseProps {
|
|
2255
|
+
title?: string;
|
|
2256
|
+
total: number;
|
|
2257
|
+
meta?: string;
|
|
2258
|
+
selected?: number;
|
|
2259
|
+
onSelectAll?: (all: boolean) => void;
|
|
2260
|
+
bulkActions?: {
|
|
2261
|
+
label: string;
|
|
2262
|
+
icon?: IconName;
|
|
2263
|
+
variant?: ButtonProps["variant"];
|
|
2264
|
+
busy?: boolean;
|
|
2265
|
+
busyLabel?: string;
|
|
2266
|
+
onClick?: () => void;
|
|
2267
|
+
}[];
|
|
2268
|
+
sortOptions?: { value: string; label: string }[];
|
|
2269
|
+
sort?: string;
|
|
2270
|
+
onSort?: (v: string) => void;
|
|
2271
|
+
views?: ("grid" | "list" | "map")[];
|
|
2272
|
+
view?: string;
|
|
2273
|
+
onView?: (v: string) => void;
|
|
2274
|
+
}
|
|
2275
|
+
export interface SavedSearchProps extends BaseProps {
|
|
2276
|
+
name: string;
|
|
2277
|
+
criteria?: ReactNode[];
|
|
2278
|
+
lastRun?: string;
|
|
2279
|
+
frequency?: string;
|
|
2280
|
+
newCount?: number;
|
|
2281
|
+
enabled?: boolean;
|
|
2282
|
+
onToggle?: () => void;
|
|
2283
|
+
onEdit?: () => void;
|
|
2284
|
+
onOpen?: () => void;
|
|
2285
|
+
openLabel?: string;
|
|
2286
|
+
icon?: IconName;
|
|
2287
|
+
tint?: Tint;
|
|
2288
|
+
}
|
|
2289
|
+
export interface ValuationCardProps extends BaseProps {
|
|
2290
|
+
value: number;
|
|
2291
|
+
low: number;
|
|
2292
|
+
high: number;
|
|
2293
|
+
asking?: number;
|
|
2294
|
+
perSqm?: number;
|
|
2295
|
+
compare?: string;
|
|
2296
|
+
currency?: string;
|
|
2297
|
+
confidence?: number;
|
|
2298
|
+
confidenceLabel?: string;
|
|
2299
|
+
facts?: KeyValueItem[];
|
|
2300
|
+
note?: ReactNode;
|
|
2301
|
+
title?: string;
|
|
2302
|
+
action?: ReactNode;
|
|
2303
|
+
}
|
|
2304
|
+
export interface EnergyClassProps extends BaseProps {
|
|
2305
|
+
value: string;
|
|
2306
|
+
kwh?: number;
|
|
2307
|
+
kind?: string;
|
|
2308
|
+
scale?: string[];
|
|
2309
|
+
}
|
|
2310
|
+
|
|
2311
|
+
/* ── Kit 5: site chrome ── */
|
|
2312
|
+
export interface ChatLauncherProps extends BaseProps {
|
|
2313
|
+
title?: string;
|
|
2314
|
+
context?: ReactNode;
|
|
2315
|
+
tint?: Tint;
|
|
2316
|
+
open?: boolean;
|
|
2317
|
+
onOpenChange?: (open: boolean) => void;
|
|
2318
|
+
unread?: number;
|
|
2319
|
+
headerAction?: ReactNode;
|
|
2320
|
+
children?: ReactNode;
|
|
2321
|
+
composer?: ReactNode;
|
|
2322
|
+
inline?: boolean;
|
|
2323
|
+
}
|
|
2324
|
+
export interface CookieConsentProps extends BaseProps {
|
|
2325
|
+
title?: string;
|
|
2326
|
+
text?: ReactNode;
|
|
2327
|
+
policy?: ReactNode;
|
|
2328
|
+
categories?: {
|
|
2329
|
+
id: string;
|
|
2330
|
+
label: string;
|
|
2331
|
+
text?: string;
|
|
2332
|
+
required?: boolean;
|
|
2333
|
+
default?: boolean;
|
|
2334
|
+
}[];
|
|
2335
|
+
onSave?: (choices: Record<string, boolean>) => void;
|
|
2336
|
+
open?: boolean;
|
|
2337
|
+
inline?: boolean;
|
|
2338
|
+
}
|
|
2339
|
+
export interface AnnouncementBarProps extends BaseProps {
|
|
2340
|
+
children: ReactNode;
|
|
2341
|
+
tint?: Tint;
|
|
2342
|
+
icon?: IconName | false;
|
|
2343
|
+
action?: ReactNode;
|
|
2344
|
+
onDismiss?: (() => void) | false;
|
|
2345
|
+
}
|
|
2346
|
+
|
|
2347
|
+
/* ── Primitives (shadcn parity) ── */
|
|
2348
|
+
export interface AccordionItem {
|
|
2349
|
+
/** Stable id (defaults to the index). */
|
|
2350
|
+
id?: string;
|
|
2351
|
+
title: ReactNode;
|
|
2352
|
+
/** Secondary text on the right of the header. */
|
|
2353
|
+
meta?: ReactNode;
|
|
2354
|
+
icon?: IconName;
|
|
2355
|
+
disabled?: boolean;
|
|
2356
|
+
content: ReactNode;
|
|
2357
|
+
}
|
|
2358
|
+
export interface AccordionProps extends BaseProps {
|
|
2359
|
+
items: AccordionItem[];
|
|
2360
|
+
/** Several sections open at once (default: one at a time). */
|
|
2361
|
+
multiple?: boolean;
|
|
2362
|
+
/** Open section ids (controlled). */
|
|
2363
|
+
value?: string[];
|
|
2364
|
+
defaultValue?: string[];
|
|
2365
|
+
onChange?: (open: string[]) => void;
|
|
2366
|
+
/** `cards`: each section is a card; `flush`: hairlines only (inside a panel). */
|
|
2367
|
+
variant?: "cards" | "flush";
|
|
2368
|
+
}
|
|
2369
|
+
export interface SeparatorProps extends BaseProps {
|
|
2370
|
+
orientation?: "horizontal" | "vertical";
|
|
2371
|
+
/** Text in the middle of the line ("or"). */
|
|
2372
|
+
label?: string;
|
|
2373
|
+
}
|
|
2374
|
+
export interface AspectRatioProps extends BaseProps {
|
|
2375
|
+
/** Width divided by height (default 16 / 9). */
|
|
2376
|
+
ratio?: number;
|
|
2377
|
+
children?: ReactNode;
|
|
2378
|
+
}
|
|
2379
|
+
export interface LabelProps extends BaseProps {
|
|
2380
|
+
htmlFor?: string;
|
|
2381
|
+
required?: boolean;
|
|
2382
|
+
/** Muted text after the label ("optional"). */
|
|
2383
|
+
hint?: ReactNode;
|
|
2384
|
+
children?: ReactNode;
|
|
2385
|
+
}
|
|
2386
|
+
export interface ToggleProps extends BaseProps {
|
|
2387
|
+
pressed?: boolean;
|
|
2388
|
+
defaultPressed?: boolean;
|
|
2389
|
+
onChange?: (pressed: boolean) => void;
|
|
2390
|
+
icon?: IconName;
|
|
2391
|
+
/** Accessible name; required when the toggle shows only an icon. */
|
|
2392
|
+
label?: string;
|
|
2393
|
+
size?: "sm" | "md";
|
|
2394
|
+
disabled?: boolean;
|
|
2395
|
+
children?: ReactNode;
|
|
2396
|
+
}
|
|
2397
|
+
export interface ToggleGroupProps extends BaseProps {
|
|
2398
|
+
items: (string | Option)[];
|
|
2399
|
+
/** `single`: at most one pressed; `multiple`: any number. */
|
|
2400
|
+
type?: "single" | "multiple";
|
|
2401
|
+
value?: string[];
|
|
2402
|
+
defaultValue?: string[];
|
|
2403
|
+
onChange?: (value: string[]) => void;
|
|
2404
|
+
/** Accessible name of the group. */
|
|
2405
|
+
label: string;
|
|
2406
|
+
size?: "sm" | "md";
|
|
2407
|
+
}
|
|
2408
|
+
export interface ButtonGroupProps extends BaseProps {
|
|
2409
|
+
/** Accessible name of the group. */
|
|
2410
|
+
label?: string;
|
|
2411
|
+
orientation?: "horizontal" | "vertical";
|
|
2412
|
+
children?: ReactNode;
|
|
2413
|
+
}
|
|
2414
|
+
export interface ScrollAreaProps extends BaseProps {
|
|
2415
|
+
/** Fixed height of the scrolling box. */
|
|
2416
|
+
height?: number | string;
|
|
2417
|
+
maxHeight?: number | string;
|
|
2418
|
+
orientation?: "vertical" | "horizontal" | "both";
|
|
2419
|
+
/** Accessible name; the box is a focusable region so it scrolls from the keyboard. */
|
|
2420
|
+
label: string;
|
|
2421
|
+
children?: ReactNode;
|
|
2422
|
+
}
|
|
2423
|
+
export interface HoverCardProps extends BaseProps {
|
|
2424
|
+
/** The element that opens the card on hover and keyboard focus. */
|
|
2425
|
+
trigger: ReactNode;
|
|
2426
|
+
children?: ReactNode;
|
|
2427
|
+
side?: "top" | "bottom";
|
|
2428
|
+
align?: "start" | "center" | "end";
|
|
2429
|
+
openDelay?: number;
|
|
2430
|
+
closeDelay?: number;
|
|
2431
|
+
width?: number;
|
|
2432
|
+
}
|
|
2433
|
+
export interface CarouselProps extends BaseProps {
|
|
2434
|
+
slides: ReactNode[];
|
|
2435
|
+
/** Accessible name of the carousel. */
|
|
2436
|
+
label: string;
|
|
2437
|
+
/** Slides visible at once on wide screens (1 on phones). */
|
|
2438
|
+
perView?: number;
|
|
2439
|
+
/** Next on the last slide goes back to the first. */
|
|
2440
|
+
loop?: boolean;
|
|
2441
|
+
/** Dots under the slides. */
|
|
2442
|
+
dots?: boolean;
|
|
2443
|
+
index?: number;
|
|
2444
|
+
defaultIndex?: number;
|
|
2445
|
+
onChange?: (index: number) => void;
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2448
|
+
/* ── Form ── */
|
|
2449
|
+
export type FormValues = Record<string, string | string[]>;
|
|
2450
|
+
export interface FormRule {
|
|
2451
|
+
/** Must not be empty; a string replaces the default message. */
|
|
2452
|
+
required?: boolean | string;
|
|
2453
|
+
/** Must look like an email address. */
|
|
2454
|
+
email?: boolean;
|
|
2455
|
+
minLength?: number;
|
|
2456
|
+
maxLength?: number;
|
|
2457
|
+
/** For numbers. */
|
|
2458
|
+
min?: number;
|
|
2459
|
+
max?: number;
|
|
2460
|
+
pattern?: RegExp;
|
|
2461
|
+
/** Message for `pattern`, `min`/`max`, `minLength`/`maxLength` and `email`. */
|
|
2462
|
+
message?: string;
|
|
2463
|
+
/** Custom check: return a message when the value is not valid. */
|
|
2464
|
+
validate?: (value: string, values: FormValues) => string | null | undefined | false;
|
|
2465
|
+
}
|
|
2466
|
+
export interface FormProps extends BaseProps {
|
|
2467
|
+
/** Rules by field `name`. Fields show their message under the input. */
|
|
2468
|
+
rules?: Record<string, FormRule>;
|
|
2469
|
+
/** Called with the values (by `name`) when every rule passes. */
|
|
2470
|
+
onSubmit?: (values: FormValues) => void;
|
|
2471
|
+
/** Called with the messages when the form is submitted with errors. */
|
|
2472
|
+
onInvalid?: (errors: Record<string, string>) => void;
|
|
2473
|
+
/** Messages from the server, by field name (for example after a failed save). */
|
|
2474
|
+
errors?: Record<string, string>;
|
|
2475
|
+
children?: ReactNode;
|
|
2476
|
+
}
|
|
2477
|
+
|
|
2478
|
+
/* ── SelectMenu ── */
|
|
2479
|
+
export interface SelectMenuOption extends Option {
|
|
2480
|
+
/** Options with the same group are listed under that heading. */
|
|
2481
|
+
group?: string;
|
|
2482
|
+
}
|
|
2483
|
+
export interface SelectMenuProps extends FieldProps, BaseProps {
|
|
2484
|
+
options: (string | SelectMenuOption)[];
|
|
2485
|
+
value?: string;
|
|
2486
|
+
defaultValue?: string;
|
|
2487
|
+
onChange?: (value: string) => void;
|
|
2488
|
+
placeholder?: string;
|
|
2489
|
+
disabled?: boolean;
|
|
2490
|
+
}
|
|
2491
|
+
|
|
2492
|
+
/* ── Navigation ── */
|
|
2493
|
+
export interface MenubarMenu {
|
|
2494
|
+
label: string;
|
|
2495
|
+
items: (MenuItem | "-")[];
|
|
2496
|
+
}
|
|
2497
|
+
export interface MenubarProps extends BaseProps {
|
|
2498
|
+
menus: MenubarMenu[];
|
|
2499
|
+
/** Accessible name of the bar. */
|
|
2500
|
+
label?: string;
|
|
2501
|
+
}
|
|
2502
|
+
export interface NavigationMenuLink {
|
|
2503
|
+
label: string;
|
|
2504
|
+
href?: string;
|
|
2505
|
+
description?: string;
|
|
2506
|
+
icon?: IconName;
|
|
2507
|
+
onClick?: () => void;
|
|
2508
|
+
}
|
|
2509
|
+
export interface NavigationMenuItem {
|
|
2510
|
+
label: string;
|
|
2511
|
+
/** A plain link (no panel). */
|
|
2512
|
+
href?: string;
|
|
2513
|
+
/** Links in the dropdown panel. */
|
|
2514
|
+
links?: NavigationMenuLink[];
|
|
2515
|
+
/** Extra content on the left of the panel (a highlighted card). */
|
|
2516
|
+
feature?: ReactNode;
|
|
2517
|
+
}
|
|
2518
|
+
export interface NavigationMenuProps extends BaseProps {
|
|
2519
|
+
items: NavigationMenuItem[];
|
|
2520
|
+
/** Accessible name of the navigation. */
|
|
2521
|
+
label?: string;
|
|
2522
|
+
}
|
|
2523
|
+
export interface SidebarItem {
|
|
2524
|
+
id?: string;
|
|
2525
|
+
label: string;
|
|
2526
|
+
icon: IconName;
|
|
2527
|
+
count?: number;
|
|
2528
|
+
/** One level of nested pages, shown when the item is open. */
|
|
2529
|
+
items?: Omit<SidebarItem, "items">[];
|
|
2530
|
+
}
|
|
2531
|
+
export interface SidebarGroup {
|
|
2532
|
+
label?: string;
|
|
2533
|
+
items: SidebarItem[];
|
|
2534
|
+
}
|
|
2535
|
+
export interface SidebarProps extends BaseProps {
|
|
2536
|
+
groups: SidebarGroup[];
|
|
2537
|
+
/** Id (or label) of the current page. */
|
|
2538
|
+
current?: string;
|
|
2539
|
+
onPick?: (id: string) => void;
|
|
2540
|
+
/** Icons only. */
|
|
2541
|
+
collapsed?: boolean;
|
|
2542
|
+
defaultCollapsed?: boolean;
|
|
2543
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
2544
|
+
/** Top of the sidebar (brand, workspace switcher). */
|
|
2545
|
+
header?: ReactNode;
|
|
2546
|
+
/** Bottom of the sidebar (account, settings). */
|
|
2547
|
+
footer?: ReactNode;
|
|
2548
|
+
/** Accessible name of the navigation. */
|
|
2549
|
+
label?: string;
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
/* ── ResizablePanels ── */
|
|
2553
|
+
export interface ResizablePanelsProps extends BaseProps {
|
|
2554
|
+
panels: ReactNode[];
|
|
2555
|
+
/** Start sizes in percent (default: equal). */
|
|
2556
|
+
defaultSizes?: number[];
|
|
2557
|
+
/** Smallest size of a panel in percent (default 10). */
|
|
2558
|
+
min?: number;
|
|
2559
|
+
orientation?: "horizontal" | "vertical";
|
|
2560
|
+
/** Remembers the sizes in localStorage under this key. */
|
|
2561
|
+
storageKey?: string;
|
|
2562
|
+
/** Accessible names of the panels, used for the resize handles. */
|
|
2563
|
+
labels?: string[];
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
export interface IconProps {
|
|
2567
|
+
name: IconName;
|
|
2568
|
+
/** Pixel size (default 16; 14 in chips and badges, 20 in navigation). */
|
|
2569
|
+
size?: number;
|
|
2570
|
+
/** Accessible name. Without it the icon is decorative and hidden from assistive tech. */
|
|
2571
|
+
label?: string;
|
|
2572
|
+
className?: string;
|
|
2573
|
+
style?: CSSProperties;
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
/** The props of a component as properties of its element (children are the element's content). */
|
|
2577
|
+
export type ElementProps<P> = {
|
|
2578
|
+
[K in keyof P as K extends "children" | "className" | "style" ? never : K]: P[K];
|
|
2579
|
+
};
|
|
2580
|
+
/** A Twentyfirst UI custom element: an HTMLElement with the component's props as properties. */
|
|
2581
|
+
export type TfElement<P> = HTMLElement & ElementProps<P>;
|
|
2582
|
+
|
|
2583
|
+
/** `<tf-provider>`: The UIProvider component as a custom element. */
|
|
2584
|
+
export type TfProviderElement = TfElement<UIProviderProps>;
|
|
2585
|
+
/** `<tf-icon>`: The Icon component as a custom element. */
|
|
2586
|
+
export type TfIconElement = TfElement<IconProps>;
|
|
2587
|
+
/** `<tf-range-slider>`: Form pieces added for search filters and admin settings: RangeSlider (two thumbs), StatusSelect (a status pill that opens a list), TilePicker (pick one or many visual options) and ColorField (hex input with contrast check). */
|
|
2588
|
+
export type TfRangeSliderElement = TfElement<RangeSliderProps>;
|
|
2589
|
+
/** `<tf-bar-list>`: The BarList component as a custom element. */
|
|
2590
|
+
export type TfBarListElement = TfElement<BarListProps>;
|
|
2591
|
+
/** `<tf-status-select>`: The StatusSelect component as a custom element. */
|
|
2592
|
+
export type TfStatusSelectElement = TfElement<StatusSelectProps>;
|
|
2593
|
+
/** `<tf-tile-picker>`: The TilePicker component as a custom element. */
|
|
2594
|
+
export type TfTilePickerElement = TfElement<TilePickerProps>;
|
|
2595
|
+
/** `<tf-live-feed>`: Real-time activity: LiveFeed (events as they happen, with pause and filters) and BarList (ranked values with inline bars, e.g. */
|
|
2596
|
+
export type TfLiveFeedElement = TfElement<LiveFeedProps>;
|
|
2597
|
+
/** `<tf-map-view>`: Points on a map: price pins for listings or bubbles for where orders come from. */
|
|
2598
|
+
export type TfMapViewElement = TfElement<MapViewProps>;
|
|
2599
|
+
/** `<tf-balance-card>`: Prepaid balances at providers and the health of the services the shop depends on: BalanceCard and ServiceMonitor. */
|
|
2600
|
+
export type TfBalanceCardElement = TfElement<BalanceCardProps>;
|
|
2601
|
+
/** `<tf-service-monitor>`: The ServiceMonitor component as a custom element. */
|
|
2602
|
+
export type TfServiceMonitorElement = TfElement<ServiceMonitorProps>;
|
|
2603
|
+
/** `<tf-run-history>`: Background work: RunHistory (scraping jobs, cron, imports) and WebhookEndpoint (an outgoing or incoming hook with its deliveries). */
|
|
2604
|
+
export type TfRunHistoryElement = TfElement<RunHistoryProps>;
|
|
2605
|
+
/** `<tf-webhook-endpoint>`: The WebhookEndpoint component as a custom element. */
|
|
2606
|
+
export type TfWebhookEndpointElement = TfElement<WebhookEndpointProps>;
|
|
2607
|
+
/** `<tf-backup-list>`: Admin safety lists: BackupList (snapshots with restore) and BlockList (blocked IPs, emails, accounts). */
|
|
2608
|
+
export type TfBackupListElement = TfElement<BackupListProps>;
|
|
2609
|
+
/** `<tf-block-list>`: The BlockList component as a custom element. */
|
|
2610
|
+
export type TfBlockListElement = TfElement<BlockListProps>;
|
|
2611
|
+
/** `<tf-review-card>`: Moderating customer reviews before and after they go live. */
|
|
2612
|
+
export type TfReviewCardElement = TfElement<ReviewCardProps>;
|
|
2613
|
+
/** `<tf-coupon-card>`: Discount codes with their usage and what they earned. */
|
|
2614
|
+
export type TfCouponCardElement = TfElement<CouponCardProps>;
|
|
2615
|
+
/** `<tf-locale-field>`: Content in several languages and switching context: LocaleField, LocaleSwitcher, WorkspaceSwitcher. */
|
|
2616
|
+
export type TfLocaleFieldElement = TfElement<LocaleFieldProps>;
|
|
2617
|
+
/** `<tf-locale-switcher>`: The LocaleSwitcher component as a custom element. */
|
|
2618
|
+
export type TfLocaleSwitcherElement = TfElement<LocaleSwitcherProps>;
|
|
2619
|
+
/** `<tf-workspace-switcher>`: The WorkspaceSwitcher component as a custom element. */
|
|
2620
|
+
export type TfWorkspaceSwitcherElement = TfElement<WorkspaceSwitcherProps>;
|
|
2621
|
+
/** `<tf-export-dialog>`: Exporting a filtered list: format, period, columns, progress and download. */
|
|
2622
|
+
export type TfExportDialogElement = TfElement<ExportDialogProps>;
|
|
2623
|
+
/** `<tf-two-factor-setup>`: Turning on two-factor sign-in: scan, confirm with a code, save recovery codes. */
|
|
2624
|
+
export type TfTwoFactorSetupElement = TfElement<TwoFactorSetupProps>;
|
|
2625
|
+
/** `<tf-color-field>`: The ColorField component as a custom element. */
|
|
2626
|
+
export type TfColorFieldElement = TfElement<ColorFieldProps>;
|
|
2627
|
+
/** `<tf-agent-card>`: One agent at a glance (AgentCard) and everything about it beside a chat (AgentDetails). */
|
|
2628
|
+
export type TfAgentCardElement = TfElement<AgentCardProps>;
|
|
2629
|
+
/** `<tf-agent-details>`: The AgentDetails component as a custom element. */
|
|
2630
|
+
export type TfAgentDetailsElement = TfElement<AgentDetailsProps>;
|
|
2631
|
+
/** `<tf-chat-list>`: The ChatList component as a custom element. */
|
|
2632
|
+
export type TfChatListElement = TfElement<ChatListProps>;
|
|
2633
|
+
/** `<tf-chat-workspace>`: Messenger-style workspace for agents and people: ChatWorkspace (list | thread | details), ChatList, SearchHits, ThinkingLine, FeedbackRating. */
|
|
2634
|
+
export type TfChatWorkspaceElement = TfElement<ChatWorkspaceProps>;
|
|
2635
|
+
/** `<tf-search-hits>`: The SearchHits component as a custom element. */
|
|
2636
|
+
export type TfSearchHitsElement = TfElement<SearchHitsProps>;
|
|
2637
|
+
/** `<tf-thinking-line>`: The ThinkingLine component as a custom element. */
|
|
2638
|
+
export type TfThinkingLineElement = TfElement<ThinkingLineProps>;
|
|
2639
|
+
/** `<tf-feedback-rating>`: The FeedbackRating component as a custom element. */
|
|
2640
|
+
export type TfFeedbackRatingElement = TfElement<FeedbackRatingProps>;
|
|
2641
|
+
/** `<tf-activity-feed>`: What happened and what needs you: ActivityFeed (timeline with status shapes) and DailyBriefing (the morning summary). */
|
|
2642
|
+
export type TfActivityFeedElement = TfElement<ActivityFeedProps>;
|
|
2643
|
+
/** `<tf-daily-briefing>`: The DailyBriefing component as a custom element. */
|
|
2644
|
+
export type TfDailyBriefingElement = TfElement<DailyBriefingProps>;
|
|
2645
|
+
/** `<tf-budget-stop>`: The BudgetStop component as a custom element. */
|
|
2646
|
+
export type TfBudgetStopElement = TfElement<BudgetStopProps>;
|
|
2647
|
+
/** `<tf-memory-viewer>`: What an agent remembers (MemoryViewer) and how its runtime settings differ from code (OverrideDiff). */
|
|
2648
|
+
export type TfMemoryViewerElement = TfElement<MemoryViewerProps>;
|
|
2649
|
+
/** `<tf-override-diff>`: The OverrideDiff component as a custom element. */
|
|
2650
|
+
export type TfOverrideDiffElement = TfElement<OverrideDiffProps>;
|
|
2651
|
+
/** `<tf-trigger-list>`: What starts agents and when: TriggerList and the week view ScheduleCalendar. */
|
|
2652
|
+
export type TfTriggerListElement = TfElement<TriggerListProps>;
|
|
2653
|
+
/** `<tf-schedule-calendar>`: The ScheduleCalendar component as a custom element. */
|
|
2654
|
+
export type TfScheduleCalendarElement = TfElement<ScheduleCalendarProps>;
|
|
2655
|
+
/** `<tf-org-chart>`: The hierarchy as a chart: orchestrator, leads per team, executing agents and people. */
|
|
2656
|
+
export type TfOrgChartElement = TfElement<OrgChartProps>;
|
|
2657
|
+
/** `<tf-voice-mode>`: Talking to an agent instead of typing: same agent, same tools, same approvals, same thread. */
|
|
2658
|
+
export type TfVoiceModeElement = TfElement<VoiceModeProps>;
|
|
2659
|
+
/** `<tf-mobile-tab-bar>`: Phone chrome: MobileTabBar (bottom navigation) and PushNotification (how an approval arrives on the lock screen). */
|
|
2660
|
+
export type TfMobileTabBarElement = TfElement<MobileTabBarProps>;
|
|
2661
|
+
/** `<tf-push-notification>`: The PushNotification component as a custom element. */
|
|
2662
|
+
export type TfPushNotificationElement = TfElement<PushNotificationProps>;
|
|
2663
|
+
/** `<tf-config-pr-summary>`: Platform structure: ConfigPRSummary (a proposed config change in plain language) and ModuleRegistry (installed modules). */
|
|
2664
|
+
export type TfConfigPRSummaryElement = TfElement<ConfigPRSummaryProps>;
|
|
2665
|
+
/** `<tf-module-registry>`: The ModuleRegistry component as a custom element. */
|
|
2666
|
+
export type TfModuleRegistryElement = TfElement<ModuleRegistryProps>;
|
|
2667
|
+
/** `<tf-approval-card>`: The human-in-the-loop decision: what an agent wants to do, the exact payload, and the four answers A–D. */
|
|
2668
|
+
export type TfApprovalCardElement = TfElement<ApprovalCardProps>;
|
|
2669
|
+
/** `<tf-approval-inbox>`: All open approvals across projects, oldest first, next to the selected ApprovalCard. */
|
|
2670
|
+
export type TfApprovalInboxElement = TfElement<ApprovalInboxProps>;
|
|
2671
|
+
/** `<tf-kbd>`: The Kbd component as a custom element. */
|
|
2672
|
+
export type TfKbdElement = TfElement<KbdProps>;
|
|
2673
|
+
/** `<tf-key-value>`: Small building blocks for detail panels: KeyValue (label/value list), Kbd (keyboard keys), Spinner, Collapsible. */
|
|
2674
|
+
export type TfKeyValueElement = TfElement<KeyValueProps>;
|
|
2675
|
+
/** `<tf-spinner>`: The Spinner component as a custom element. */
|
|
2676
|
+
export type TfSpinnerElement = TfElement<SpinnerProps>;
|
|
2677
|
+
/** `<tf-collapsible>`: The Collapsible component as a custom element. */
|
|
2678
|
+
export type TfCollapsibleElement = TfElement<CollapsibleProps>;
|
|
2679
|
+
/** `<tf-context-menu>`: The ContextMenu component as a custom element. */
|
|
2680
|
+
export type TfContextMenuElement = TfElement<ContextMenuProps>;
|
|
2681
|
+
/** `<tf-split-pane>`: Resizable list–detail layout. */
|
|
2682
|
+
export type TfSplitPaneElement = TfElement<SplitPaneProps>;
|
|
2683
|
+
/** `<tf-resizable-panels>`: Two or more panes with drag handles between them, side by side or stacked; panels can nest. */
|
|
2684
|
+
export type TfResizablePanelsElement = TfElement<ResizablePanelsProps>;
|
|
2685
|
+
/** `<tf-tree-view>`: Hierarchies, in-place editing and object menus: TreeView, InlineEdit, ContextMenu. */
|
|
2686
|
+
export type TfTreeViewElement = TfElement<TreeViewProps>;
|
|
2687
|
+
/** `<tf-inline-edit>`: The InlineEdit component as a custom element. */
|
|
2688
|
+
export type TfInlineEditElement = TfElement<InlineEditProps>;
|
|
2689
|
+
/** `<tf-bar-chart>`: The BarChart component as a custom element. */
|
|
2690
|
+
export type TfBarChartElement = TfElement<BarChartProps>;
|
|
2691
|
+
/** `<tf-line-chart>`: The LineChart component as a custom element. */
|
|
2692
|
+
export type TfLineChartElement = TfElement<LineChartProps>;
|
|
2693
|
+
/** `<tf-sparkline>`: The Sparkline component as a custom element. */
|
|
2694
|
+
export type TfSparklineElement = TfElement<SparklineProps>;
|
|
2695
|
+
/** `<tf-donut>`: The Donut component as a custom element. */
|
|
2696
|
+
export type TfDonutElement = TfElement<DonutProps>;
|
|
2697
|
+
/** `<tf-legend>`: The Legend component as a custom element. */
|
|
2698
|
+
export type TfLegendElement = TfElement<LegendProps>;
|
|
2699
|
+
/** `<tf-stacked-bar-chart>`: Bars split into parts of a whole per period, with a hover tooltip and legend. */
|
|
2700
|
+
export type TfStackedBarChartElement = TfElement<StackedBarChartProps>;
|
|
2701
|
+
/** `<tf-area-chart>`: Smooth stacked areas for volume over time, with a crosshair tooltip. */
|
|
2702
|
+
export type TfAreaChartElement = TfElement<AreaChartProps>;
|
|
2703
|
+
/** `<tf-heatmap>`: Grid of cells shaded by value, for patterns across two dimensions (weekday × hour, week × day). */
|
|
2704
|
+
export type TfHeatmapElement = TfElement<HeatmapProps>;
|
|
2705
|
+
/** `<tf-funnel>`: Horizontal funnel: each step's share of the first, plus step-to-step conversion on the right. */
|
|
2706
|
+
export type TfFunnelElement = TfElement<FunnelProps>;
|
|
2707
|
+
/** `<tf-gauge>`: Half-ring showing one value against a maximum: a goal, a budget, a quota. */
|
|
2708
|
+
export type TfGaugeElement = TfElement<GaugeProps>;
|
|
2709
|
+
/** `<tf-rich-text>`: The RichText component as a custom element. */
|
|
2710
|
+
export type TfRichTextElement = TfElement<RichTextProps>;
|
|
2711
|
+
/** `<tf-code-block>`: The CodeBlock component as a custom element. */
|
|
2712
|
+
export type TfCodeBlockElement = TfElement<CodeBlockProps>;
|
|
2713
|
+
/** `<tf-typing-dots>`: The TypingDots component as a custom element. */
|
|
2714
|
+
export type TfTypingDotsElement = TfElement<{ label?: string }>;
|
|
2715
|
+
/** `<tf-agent-mark>`: The AgentMark component as a custom element. */
|
|
2716
|
+
export type TfAgentMarkElement = TfElement<AgentMarkProps>;
|
|
2717
|
+
/** `<tf-chat-message>`: One turn in a conversation with an agent: user bubble on the right, agent reply as rich text on the left. */
|
|
2718
|
+
export type TfChatMessageElement = TfElement<ChatMessageProps>;
|
|
2719
|
+
/** `<tf-tool-call>`: Shows what an agent did between your question and its answer. */
|
|
2720
|
+
export type TfToolCallElement = TfElement<ToolCallProps>;
|
|
2721
|
+
/** `<tf-reasoning>`: The Reasoning component as a custom element. */
|
|
2722
|
+
export type TfReasoningElement = TfElement<ReasoningProps>;
|
|
2723
|
+
/** `<tf-prompt-starters>`: The PromptStarters component as a custom element. */
|
|
2724
|
+
export type TfPromptStartersElement = TfElement<PromptStartersProps>;
|
|
2725
|
+
/** `<tf-model-picker>`: The ModelPicker component as a custom element. */
|
|
2726
|
+
export type TfModelPickerElement = TfElement<ModelPickerProps>;
|
|
2727
|
+
/** `<tf-composer>`: Message input for agents: grows with the text, attachments, slash commands, a model picker, and Send that turns into Stop while the agent works. */
|
|
2728
|
+
export type TfComposerElement = TfElement<ComposerProps>;
|
|
2729
|
+
/** `<tf-agent-status>`: The AgentStatus component as a custom element. */
|
|
2730
|
+
export type TfAgentStatusElement = TfElement<AgentStatusProps>;
|
|
2731
|
+
/** `<tf-run-trace>`: Waterfall of one agent run: every model call, tool call, search and approval, with timing bars and expandable details. */
|
|
2732
|
+
export type TfRunTraceElement = TfElement<RunTraceProps>;
|
|
2733
|
+
/** `<tf-usage-meter>`: The UsageMeter component as a custom element. */
|
|
2734
|
+
export type TfUsageMeterElement = TfElement<UsageMeterProps>;
|
|
2735
|
+
/** `<tf-product-art>`: The ProductArt component as a custom element. */
|
|
2736
|
+
export type TfProductArtElement = TfElement<ProductArtProps>;
|
|
2737
|
+
/** `<tf-price>`: The Price component as a custom element. */
|
|
2738
|
+
export type TfPriceElement = TfElement<PriceProps>;
|
|
2739
|
+
/** `<tf-rating>`: The Rating component as a custom element. */
|
|
2740
|
+
export type TfRatingElement = TfElement<RatingProps>;
|
|
2741
|
+
/** `<tf-stock-badge>`: The StockBadge component as a custom element. */
|
|
2742
|
+
export type TfStockBadgeElement = TfElement<StockBadgeProps>;
|
|
2743
|
+
/** `<tf-product-card>`: Product tile for catalogs and grids, plus the pieces it is made of: Price, Rating, StockBadge and ProductArt. */
|
|
2744
|
+
export type TfProductCardElement = TfElement<ProductCardProps>;
|
|
2745
|
+
/** `<tf-variant-picker>`: Pick a product option: colour swatches or text pills (sizes, materials). */
|
|
2746
|
+
export type TfVariantPickerElement = TfElement<VariantPickerProps>;
|
|
2747
|
+
/** `<tf-cart-line>`: The CartLine component as a custom element. */
|
|
2748
|
+
export type TfCartLineElement = TfElement<CartLineProps>;
|
|
2749
|
+
/** `<tf-order-summary>`: Cart and checkout pieces: CartLine rows, the OrderSummary with discount code and free-shipping progress, and CheckoutSteps. */
|
|
2750
|
+
export type TfOrderSummaryElement = TfElement<OrderSummaryProps>;
|
|
2751
|
+
/** `<tf-checkout-steps>`: The CheckoutSteps component as a custom element. */
|
|
2752
|
+
export type TfCheckoutStepsElement = TfElement<CheckoutStepsProps>;
|
|
2753
|
+
/** `<tf-order-timeline>`: Five-step fulfilment progress for an order: Placed, Paid, Packed, Shipped, Delivered. */
|
|
2754
|
+
export type TfOrderTimelineElement = TfElement<OrderTimelineProps>;
|
|
2755
|
+
/** `<tf-plan-card>`: Pricing tier for plan pages and upgrade dialogs. */
|
|
2756
|
+
export type TfPlanCardElement = TfElement<PlanCardProps>;
|
|
2757
|
+
/** `<tf-count-up>`: The CountUp component as a custom element. */
|
|
2758
|
+
export type TfCountUpElement = TfElement<CountUpProps>;
|
|
2759
|
+
/** `<tf-stat-tile>`: The StatTile component as a custom element. */
|
|
2760
|
+
export type TfStatTileElement = TfElement<StatTileProps>;
|
|
2761
|
+
/** `<tf-card>`: The Card component as a custom element. */
|
|
2762
|
+
export type TfCardElement = TfElement<CardProps>;
|
|
2763
|
+
/** `<tf-event-card>`: The EventCard component as a custom element. */
|
|
2764
|
+
export type TfEventCardElement = TfElement<EventCardProps>;
|
|
2765
|
+
/** `<tf-panel>`: The Panel component as a custom element. */
|
|
2766
|
+
export type TfPanelElement = TfElement<PanelProps>;
|
|
2767
|
+
/** `<tf-page-header>`: The PageHeader component as a custom element. */
|
|
2768
|
+
export type TfPageHeaderElement = TfElement<PageHeaderProps>;
|
|
2769
|
+
/** `<tf-stagger>`: The Stagger component as a custom element. */
|
|
2770
|
+
export type TfStaggerElement = TfElement<StaggerProps>;
|
|
2771
|
+
/** `<tf-table>`: Quiet data table: uppercase captions, hairline rows, right-aligned tabular numbers. */
|
|
2772
|
+
export type TfTableElement = TfElement<TableProps>;
|
|
2773
|
+
/** `<tf-list-row>`: The ListRow component as a custom element. */
|
|
2774
|
+
export type TfListRowElement = TfElement<ListRowProps>;
|
|
2775
|
+
/** `<tf-timeline>`: The Timeline component as a custom element. */
|
|
2776
|
+
export type TfTimelineElement = TfElement<TimelineProps>;
|
|
2777
|
+
/** `<tf-file-row>`: The FileRow component as a custom element. */
|
|
2778
|
+
export type TfFileRowElement = TfElement<FileRowProps>;
|
|
2779
|
+
/** `<tf-kanban-column>`: The KanbanColumn component as a custom element. */
|
|
2780
|
+
export type TfKanbanColumnElement = TfElement<KanbanColumnProps>;
|
|
2781
|
+
/** `<tf-progress>`: The Progress component as a custom element. */
|
|
2782
|
+
export type TfProgressElement = TfElement<ProgressProps>;
|
|
2783
|
+
/** `<tf-progress-ring>`: The ProgressRing component as a custom element. */
|
|
2784
|
+
export type TfProgressRingElement = TfElement<ProgressRingProps>;
|
|
2785
|
+
/** `<tf-filter-bar>`: The FilterBar component as a custom element. */
|
|
2786
|
+
export type TfFilterBarElement = TfElement<FilterBarProps>;
|
|
2787
|
+
/** `<tf-data-table>`: Table with the features list pages need: sorting, row selection with a bulk action bar, column toggles, sticky header and expandable rows. */
|
|
2788
|
+
export type TfDataTableElement = TfElement<DataTableProps<R>>;
|
|
2789
|
+
/** `<tf-log-view>`: Monospace output: LogView for logs with line numbers and levels, CodeViewer for JSON, YAML and code. */
|
|
2790
|
+
export type TfLogViewElement = TfElement<LogViewProps>;
|
|
2791
|
+
/** `<tf-code-viewer>`: The CodeViewer component as a custom element. */
|
|
2792
|
+
export type TfCodeViewerElement = TfElement<CodeViewerProps>;
|
|
2793
|
+
/** `<tf-secret-field>`: SecretField shows a stored credential without exposing it; MoneyInput takes amounts in the locale's format with a VAT rate. */
|
|
2794
|
+
export type TfSecretFieldElement = TfElement<SecretFieldProps>;
|
|
2795
|
+
/** `<tf-money-input>`: The MoneyInput component as a custom element. */
|
|
2796
|
+
export type TfMoneyInputElement = TfElement<MoneyInputProps>;
|
|
2797
|
+
/** `<tf-settings-layout>`: Standard settings page: a label column with one sentence on what it does, controls on the right, one row per topic. */
|
|
2798
|
+
export type TfSettingsLayoutElement = TfElement<SettingsLayoutProps>;
|
|
2799
|
+
/** `<tf-shortcuts-overlay>`: The "?" overlay listing every keyboard shortcut, grouped by area. */
|
|
2800
|
+
export type TfShortcutsOverlayElement = TfElement<ShortcutsOverlayProps>;
|
|
2801
|
+
/** `<tf-stat-cell>`: A KPI with its comparison: label, value, ▲/▼ delta that names what it compares to, optional sparkline. */
|
|
2802
|
+
export type TfStatCellElement = TfElement<StatCellProps>;
|
|
2803
|
+
/** `<tf-uptime-bar>`: Health at a glance: UptimeBar (a bar per day), Meter (usage against a limit), ServerCard, DeployPipeline. */
|
|
2804
|
+
export type TfUptimeBarElement = TfElement<UptimeBarProps>;
|
|
2805
|
+
/** `<tf-meter>`: The Meter component as a custom element. */
|
|
2806
|
+
export type TfMeterElement = TfElement<MeterProps>;
|
|
2807
|
+
/** `<tf-skeleton>`: The Skeleton component as a custom element. */
|
|
2808
|
+
export type TfSkeletonElement = TfElement<SkeletonProps>;
|
|
2809
|
+
/** `<tf-menu>`: The Menu component as a custom element. */
|
|
2810
|
+
export type TfMenuElement = TfElement<MenuProps>;
|
|
2811
|
+
/** `<tf-modal>`: The Modal component as a custom element. */
|
|
2812
|
+
export type TfModalElement = TfElement<ModalProps>;
|
|
2813
|
+
/** `<tf-toast>`: The Toast component as a custom element. */
|
|
2814
|
+
export type TfToastElement = TfElement<ToastProps>;
|
|
2815
|
+
/** `<tf-empty-state>`: The EmptyState component as a custom element. */
|
|
2816
|
+
export type TfEmptyStateElement = TfElement<EmptyStateProps>;
|
|
2817
|
+
/** `<tf-alert>`: Inline banner for a state the page is in: a warning, a failure, a note. */
|
|
2818
|
+
export type TfAlertElement = TfElement<AlertProps>;
|
|
2819
|
+
/** `<tf-confirm-dialog>`: Asks before a destructive or hard-to-undo action. */
|
|
2820
|
+
export type TfConfirmDialogElement = TfElement<ConfirmDialogProps>;
|
|
2821
|
+
/** `<tf-toaster>`: Short confirmation that something happened, with optional Undo. */
|
|
2822
|
+
export type TfToasterElement = TfElement<ToasterProps>;
|
|
2823
|
+
/** `<tf-form-field>`: The FormField component as a custom element. */
|
|
2824
|
+
export type TfFormFieldElement = TfElement<FormFieldProps>;
|
|
2825
|
+
/** `<tf-text-field>`: Text input with label, required or optional mark, hint, and inline validation (error or success). */
|
|
2826
|
+
export type TfTextFieldElement = TfElement<TextFieldProps>;
|
|
2827
|
+
/** `<tf-radio-group>`: One choice out of a few, always visible. */
|
|
2828
|
+
export type TfRadioGroupElement = TfElement<RadioGroupProps>;
|
|
2829
|
+
/** `<tf-segmented>`: The Segmented component as a custom element. */
|
|
2830
|
+
export type TfSegmentedElement = TfElement<SegmentedProps>;
|
|
2831
|
+
/** `<tf-combobox>`: Searchable select for long lists, single or multiple, with optional create. */
|
|
2832
|
+
export type TfComboboxElement = TfElement<ComboboxProps>;
|
|
2833
|
+
/** `<tf-tag-input>`: The TagInput component as a custom element. */
|
|
2834
|
+
export type TfTagInputElement = TfElement<TagInputProps>;
|
|
2835
|
+
/** `<tf-calendar>`: The Calendar component as a custom element. */
|
|
2836
|
+
export type TfCalendarElement = TfElement<CalendarProps>;
|
|
2837
|
+
/** `<tf-date-picker>`: Date field that opens a month calendar in a Popover. */
|
|
2838
|
+
export type TfDatePickerElement = TfElement<DatePickerProps>;
|
|
2839
|
+
/** `<tf-number-input>`: Number entry three ways: NumberInput with − / + steppers, Slider for a value on a known scale, OtpInput for one-time codes. */
|
|
2840
|
+
export type TfNumberInputElement = TfElement<NumberInputProps>;
|
|
2841
|
+
/** `<tf-slider>`: The Slider component as a custom element. */
|
|
2842
|
+
export type TfSliderElement = TfElement<SliderProps>;
|
|
2843
|
+
/** `<tf-otp-input>`: The OtpInput component as a custom element. */
|
|
2844
|
+
export type TfOtpInputElement = TfElement<OtpInputProps>;
|
|
2845
|
+
/** `<tf-file-drop>`: Dashed drop zone plus an upload list with progress. */
|
|
2846
|
+
export type TfFileDropElement = TfElement<FileDropProps>;
|
|
2847
|
+
/** `<tf-button>`: The Button component as a custom element. */
|
|
2848
|
+
export type TfButtonElement = TfElement<ButtonProps>;
|
|
2849
|
+
/** `<tf-icon-button>`: The IconButton component as a custom element. */
|
|
2850
|
+
export type TfIconButtonElement = TfElement<IconButtonProps>;
|
|
2851
|
+
/** `<tf-chip>`: The Chip component as a custom element. */
|
|
2852
|
+
export type TfChipElement = TfElement<ChipProps>;
|
|
2853
|
+
/** `<tf-badge>`: The Badge component as a custom element. */
|
|
2854
|
+
export type TfBadgeElement = TfElement<BadgeProps>;
|
|
2855
|
+
/** `<tf-tint-icon>`: The TintIcon component as a custom element. */
|
|
2856
|
+
export type TfTintIconElement = TfElement<TintIconProps>;
|
|
2857
|
+
/** `<tf-avatar>`: The Avatar component as a custom element. */
|
|
2858
|
+
export type TfAvatarElement = TfElement<AvatarProps>;
|
|
2859
|
+
/** `<tf-avatar-stack>`: The AvatarStack component as a custom element. */
|
|
2860
|
+
export type TfAvatarStackElement = TfElement<AvatarStackProps>;
|
|
2861
|
+
/** `<tf-input>`: The Input component as a custom element. */
|
|
2862
|
+
export type TfInputElement = TfElement<InputProps>;
|
|
2863
|
+
/** `<tf-select>`: The Select component as a custom element. */
|
|
2864
|
+
export type TfSelectElement = TfElement<SelectProps>;
|
|
2865
|
+
/** `<tf-textarea>`: The Textarea component as a custom element. */
|
|
2866
|
+
export type TfTextareaElement = TfElement<TextareaProps>;
|
|
2867
|
+
/** `<tf-search-field>`: The SearchField component as a custom element. */
|
|
2868
|
+
export type TfSearchFieldElement = TfElement<SearchFieldProps>;
|
|
2869
|
+
/** `<tf-checkbox>`: The Checkbox component as a custom element. */
|
|
2870
|
+
export type TfCheckboxElement = TfElement<CheckboxProps>;
|
|
2871
|
+
/** `<tf-switch>`: The Switch component as a custom element. */
|
|
2872
|
+
export type TfSwitchElement = TfElement<SwitchProps>;
|
|
2873
|
+
/** `<tf-form>`: Validation for native forms. */
|
|
2874
|
+
export type TfFormElement = TfElement<FormProps>;
|
|
2875
|
+
/** `<tf-select-menu>`: A styled select: the button shows the choice, the list opens below it with groups, icons, hints and disabled options. */
|
|
2876
|
+
export type TfSelectMenuElement = TfElement<SelectMenuProps>;
|
|
2877
|
+
/** `<tf-account-switcher>`: The AccountSwitcher component as a custom element. */
|
|
2878
|
+
export type TfAccountSwitcherElement = TfElement<AccountSwitcherProps>;
|
|
2879
|
+
/** `<tf-inbox-list>`: Webmail pieces: AccountSwitcher (one login, every address), InboxList (with agent state per mail), MailThread, SignatureEditor, AttachmentPreview. */
|
|
2880
|
+
export type TfInboxListElement = TfElement<InboxListProps>;
|
|
2881
|
+
/** `<tf-mail-thread>`: The MailThread component as a custom element. */
|
|
2882
|
+
export type TfMailThreadElement = TfElement<MailThreadProps>;
|
|
2883
|
+
/** `<tf-signature-editor>`: The SignatureEditor component as a custom element. */
|
|
2884
|
+
export type TfSignatureEditorElement = TfElement<SignatureEditorProps>;
|
|
2885
|
+
/** `<tf-attachment-preview>`: The AttachmentPreview component as a custom element. */
|
|
2886
|
+
export type TfAttachmentPreviewElement = TfElement<AttachmentPreviewProps>;
|
|
2887
|
+
/** `<tf-image-variants>`: The ImageVariants component as a custom element. */
|
|
2888
|
+
export type TfImageVariantsElement = TfElement<ImageVariantsProps>;
|
|
2889
|
+
/** `<tf-gallery>`: Images: Gallery (photos with thumbnails and full screen), BeforeAfter (drag to compare, e.g. */
|
|
2890
|
+
export type TfGalleryElement = TfElement<GalleryProps>;
|
|
2891
|
+
/** `<tf-before-after>`: The BeforeAfter component as a custom element. */
|
|
2892
|
+
export type TfBeforeAfterElement = TfElement<BeforeAfterProps>;
|
|
2893
|
+
/** `<tf-tabs>`: A tab bar that switches views. */
|
|
2894
|
+
export type TfTabsElement = TfElement<TabsProps>;
|
|
2895
|
+
/** `<tf-breadcrumb>`: The Breadcrumb component as a custom element. */
|
|
2896
|
+
export type TfBreadcrumbElement = TfElement<BreadcrumbProps>;
|
|
2897
|
+
/** `<tf-pagination>`: The Pagination component as a custom element. */
|
|
2898
|
+
export type TfPaginationElement = TfElement<PaginationProps>;
|
|
2899
|
+
/** `<tf-menubar>`: A desktop-style row of menus (File, Edit, View). */
|
|
2900
|
+
export type TfMenubarElement = TfElement<MenubarProps>;
|
|
2901
|
+
/** `<tf-navigation-menu>`: Site navigation for marketing pages: plain links and items that open a panel of links with icons and descriptions, optionally with a highlighted card. */
|
|
2902
|
+
export type TfNavigationMenuElement = TfElement<NavigationMenuProps>;
|
|
2903
|
+
/** `<tf-sidebar>`: App navigation down the side: groups with headings, counts, one level of nested pages and a collapsed mode with icons only. */
|
|
2904
|
+
export type TfSidebarElement = TfElement<SidebarProps>;
|
|
2905
|
+
/** `<tf-connection-card>`: Connected services and the live connection: ConnectionCard and ConnectionBanner. */
|
|
2906
|
+
export type TfConnectionCardElement = TfElement<ConnectionCardProps>;
|
|
2907
|
+
/** `<tf-connection-banner>`: The ConnectionBanner component as a custom element. */
|
|
2908
|
+
export type TfConnectionBannerElement = TfElement<ConnectionBannerProps>;
|
|
2909
|
+
/** `<tf-server-card>`: The ServerCard component as a custom element. */
|
|
2910
|
+
export type TfServerCardElement = TfElement<ServerCardProps>;
|
|
2911
|
+
/** `<tf-deploy-pipeline>`: The DeployPipeline component as a custom element. */
|
|
2912
|
+
export type TfDeployPipelineElement = TfElement<DeployPipelineProps>;
|
|
2913
|
+
/** `<tf-dns-record-table>`: Domains and DNS: DnsRecordTable, DomainList (sorted by what needs attention) and MailAuthStatus (MX, SPF, DKIM, DMARC lights). */
|
|
2914
|
+
export type TfDnsRecordTableElement = TfElement<DnsRecordTableProps>;
|
|
2915
|
+
/** `<tf-domain-list>`: The DomainList component as a custom element. */
|
|
2916
|
+
export type TfDomainListElement = TfElement<DomainListProps>;
|
|
2917
|
+
/** `<tf-mail-auth-status>`: The MailAuthStatus component as a custom element. */
|
|
2918
|
+
export type TfMailAuthStatusElement = TfElement<MailAuthStatusProps>;
|
|
2919
|
+
/** `<tf-ledger-table>`: Bookkeeping: LedgerTable (bookings with project and agent suggestions), PnLStatement and ReceiptSuggestion. */
|
|
2920
|
+
export type TfLedgerTableElement = TfElement<LedgerTableProps>;
|
|
2921
|
+
/** `<tf-pnl-statement>`: The PnLStatement component as a custom element. */
|
|
2922
|
+
export type TfPnLStatementElement = TfElement<PnLStatementProps>;
|
|
2923
|
+
/** `<tf-receipt-suggestion>`: The ReceiptSuggestion component as a custom element. */
|
|
2924
|
+
export type TfReceiptSuggestionElement = TfElement<ReceiptSuggestionProps>;
|
|
2925
|
+
/** `<tf-popover>`: The Popover component as a custom element. */
|
|
2926
|
+
export type TfPopoverElement = TfElement<PopoverProps>;
|
|
2927
|
+
/** `<tf-tooltip>`: Tooltip names an icon-only control on hover or focus; Popover holds a small interactive panel anchored to a trigger. */
|
|
2928
|
+
export type TfTooltipElement = TfElement<TooltipProps>;
|
|
2929
|
+
/** `<tf-email-preview>`: How a mail will look in the inbox and when opened, on desktop and phone. */
|
|
2930
|
+
export type TfEmailPreviewElement = TfElement<EmailPreviewProps>;
|
|
2931
|
+
/** `<tf-search-ad-preview>`: A text ad as it appears in search results, on phone and desktop, with the length limits checked live. */
|
|
2932
|
+
export type TfSearchAdPreviewElement = TfElement<SearchAdPreviewProps>;
|
|
2933
|
+
/** `<tf-accordion>`: Stacked sections that open and close. */
|
|
2934
|
+
export type TfAccordionElement = TfElement<AccordionProps>;
|
|
2935
|
+
/** `<tf-separator>`: Small layout primitives. */
|
|
2936
|
+
export type TfSeparatorElement = TfElement<SeparatorProps>;
|
|
2937
|
+
/** `<tf-aspect-ratio>`: The AspectRatio component as a custom element. */
|
|
2938
|
+
export type TfAspectRatioElement = TfElement<AspectRatioProps>;
|
|
2939
|
+
/** `<tf-label>`: The Label component as a custom element. */
|
|
2940
|
+
export type TfLabelElement = TfElement<LabelProps>;
|
|
2941
|
+
/** `<tf-toggle>`: The Toggle component as a custom element. */
|
|
2942
|
+
export type TfToggleElement = TfElement<ToggleProps>;
|
|
2943
|
+
/** `<tf-toggle-group>`: On/off buttons. */
|
|
2944
|
+
export type TfToggleGroupElement = TfElement<ToggleGroupProps>;
|
|
2945
|
+
/** `<tf-button-group>`: Attached buttons that act as one control: undo/redo, zoom, or a split button whose arrow opens a menu. */
|
|
2946
|
+
export type TfButtonGroupElement = TfElement<ButtonGroupProps>;
|
|
2947
|
+
/** `<tf-scroll-area>`: A scrolling box with thin scrollbars in the kit's colours, vertical, horizontal or both. */
|
|
2948
|
+
export type TfScrollAreaElement = TfElement<ScrollAreaProps>;
|
|
2949
|
+
/** `<tf-hover-card>`: A preview card that opens when the pointer rests on a trigger (a name, a link) or when it gets keyboard focus, and closes when the pointer or focus leaves or on Escape. */
|
|
2950
|
+
export type TfHoverCardElement = TfElement<HoverCardProps>;
|
|
2951
|
+
/** `<tf-carousel>`: A row of slides with previous/next buttons and dots. */
|
|
2952
|
+
export type TfCarouselElement = TfElement<CarouselProps>;
|
|
2953
|
+
/** `<tf-listing-card>`: Property listings from portals or your own stock: ListingCard (grid card or list row) and ResultsToolbar (count, selection, bulk actions, sort, view). */
|
|
2954
|
+
export type TfListingCardElement = TfElement<ListingCardProps>;
|
|
2955
|
+
/** `<tf-results-toolbar>`: The ResultsToolbar component as a custom element. */
|
|
2956
|
+
export type TfResultsToolbarElement = TfElement<ResultsToolbarProps>;
|
|
2957
|
+
/** `<tf-saved-search>`: The SavedSearch component as a custom element. */
|
|
2958
|
+
export type TfSavedSearchElement = TfElement<SavedSearchProps>;
|
|
2959
|
+
/** `<tf-valuation-card>`: Real-estate figures: ValuationCard (estimate with range and asking price), SavedSearch (a search that runs on its own and reports new hits) and EnergyClass (the energy label scale). */
|
|
2960
|
+
export type TfValuationCardElement = TfElement<ValuationCardProps>;
|
|
2961
|
+
/** `<tf-energy-class>`: The EnergyClass component as a custom element. */
|
|
2962
|
+
export type TfEnergyClassElement = TfElement<EnergyClassProps>;
|
|
2963
|
+
/** `<tf-rich-text-editor>`: Formatted text for newsletters, product descriptions, legal pages and canned replies: toolbar, placeholder fields and a character count. */
|
|
2964
|
+
export type TfRichTextEditorElement = TfElement<RichTextEditorProps>;
|
|
2965
|
+
/** `<tf-top-bar>`: The TopBar component as a custom element. */
|
|
2966
|
+
export type TfTopBarElement = TfElement<TopBarProps>;
|
|
2967
|
+
/** `<tf-side-rail>`: The SideRail component as a custom element. */
|
|
2968
|
+
export type TfSideRailElement = TfElement<SideRailProps>;
|
|
2969
|
+
/** `<tf-dock>`: The Dock component as a custom element. */
|
|
2970
|
+
export type TfDockElement = TfElement<DockProps>;
|
|
2971
|
+
/** `<tf-app-shell>`: The AppShell component as a custom element. */
|
|
2972
|
+
export type TfAppShellElement = TfElement<AppShellProps>;
|
|
2973
|
+
/** `<tf-chat-launcher>`: Site-wide chrome for customer-facing apps: ChatLauncher (floating assistant with page context), CookieConsent and AnnouncementBar. */
|
|
2974
|
+
export type TfChatLauncherElement = TfElement<ChatLauncherProps>;
|
|
2975
|
+
/** `<tf-cookie-consent>`: The CookieConsent component as a custom element. */
|
|
2976
|
+
export type TfCookieConsentElement = TfElement<CookieConsentProps>;
|
|
2977
|
+
/** `<tf-announcement-bar>`: The AnnouncementBar component as a custom element. */
|
|
2978
|
+
export type TfAnnouncementBarElement = TfElement<AnnouncementBarProps>;
|
|
2979
|
+
/** `<tf-status-shape>`: The StatusShape component as a custom element. */
|
|
2980
|
+
export type TfStatusShapeElement = TfElement<StatusShapeProps>;
|
|
2981
|
+
/** `<tf-status-indicator>`: State as shape and colour together, so it reads at a glance and without colour vision. */
|
|
2982
|
+
export type TfStatusIndicatorElement = TfElement<StatusIndicatorProps>;
|
|
2983
|
+
/** `<tf-status-screen>`: Full-page states for errors and interruptions: code "404", "500", "403", "maintenance", "offline", or your own title / text / icon / tint. */
|
|
2984
|
+
export type TfStatusScreenElement = TfElement<StatusScreenProps>;
|
|
2985
|
+
/** `<tf-auth-card>`: Centered card for sign-in, sign-up, password reset, two-step codes and invites. */
|
|
2986
|
+
export type TfAuthCardElement = TfElement<AuthCardProps>;
|
|
2987
|
+
/** `<tf-sub-nav>`: The SubNav component as a custom element. */
|
|
2988
|
+
export type TfSubNavElement = TfElement<SubNavProps>;
|
|
2989
|
+
/** `<tf-drawer>`: Right-side sheet for a record's details, sliding in over the page. */
|
|
2990
|
+
export type TfDrawerElement = TfElement<DrawerProps>;
|
|
2991
|
+
/** `<tf-command-palette>`: The CommandPalette component as a custom element. */
|
|
2992
|
+
export type TfCommandPaletteElement = TfElement<CommandPaletteProps>;
|
|
2993
|
+
/** `<tf-notification-list>`: The NotificationList component as a custom element. */
|
|
2994
|
+
export type TfNotificationListElement = TfElement<NotificationListProps>;
|
|
2995
|
+
/** `<tf-flow>`: The Flow component as a custom element. */
|
|
2996
|
+
export type TfFlowElement = TfElement<FlowProps>;
|
|
2997
|
+
/** `<tf-file-thumb>`: The FileThumb component as a custom element. */
|
|
2998
|
+
export type TfFileThumbElement = TfElement<FileThumbProps>;
|
|
2999
|
+
/** `<tf-file-card>`: The FileCard component as a custom element. */
|
|
3000
|
+
export type TfFileCardElement = TfElement<FileCardProps>;
|
|
3001
|
+
/** `<tf-wizard>`: The Wizard component as a custom element. */
|
|
3002
|
+
export type TfWizardElement = TfElement<WizardProps>;
|
|
3003
|
+
/** `<tf-permission-matrix>`: The PermissionMatrix component as a custom element. */
|
|
3004
|
+
export type TfPermissionMatrixElement = TfElement<PermissionMatrixProps>;
|
|
3005
|
+
/** `<tf-invoice-preview>`: The InvoicePreview component as a custom element. */
|
|
3006
|
+
export type TfInvoicePreviewElement = TfElement<InvoicePreviewProps>;
|
|
3007
|
+
/** `<tf-transaction-row>`: The TransactionRow component as a custom element. */
|
|
3008
|
+
export type TfTransactionRowElement = TfElement<TransactionRowProps>;
|
|
3009
|
+
|
|
3010
|
+
declare global {
|
|
3011
|
+
interface HTMLElementTagNameMap {
|
|
3012
|
+
"tf-provider": TfProviderElement;
|
|
3013
|
+
"tf-icon": TfIconElement;
|
|
3014
|
+
"tf-range-slider": TfRangeSliderElement;
|
|
3015
|
+
"tf-bar-list": TfBarListElement;
|
|
3016
|
+
"tf-status-select": TfStatusSelectElement;
|
|
3017
|
+
"tf-tile-picker": TfTilePickerElement;
|
|
3018
|
+
"tf-live-feed": TfLiveFeedElement;
|
|
3019
|
+
"tf-map-view": TfMapViewElement;
|
|
3020
|
+
"tf-balance-card": TfBalanceCardElement;
|
|
3021
|
+
"tf-service-monitor": TfServiceMonitorElement;
|
|
3022
|
+
"tf-run-history": TfRunHistoryElement;
|
|
3023
|
+
"tf-webhook-endpoint": TfWebhookEndpointElement;
|
|
3024
|
+
"tf-backup-list": TfBackupListElement;
|
|
3025
|
+
"tf-block-list": TfBlockListElement;
|
|
3026
|
+
"tf-review-card": TfReviewCardElement;
|
|
3027
|
+
"tf-coupon-card": TfCouponCardElement;
|
|
3028
|
+
"tf-locale-field": TfLocaleFieldElement;
|
|
3029
|
+
"tf-locale-switcher": TfLocaleSwitcherElement;
|
|
3030
|
+
"tf-workspace-switcher": TfWorkspaceSwitcherElement;
|
|
3031
|
+
"tf-export-dialog": TfExportDialogElement;
|
|
3032
|
+
"tf-two-factor-setup": TfTwoFactorSetupElement;
|
|
3033
|
+
"tf-color-field": TfColorFieldElement;
|
|
3034
|
+
"tf-agent-card": TfAgentCardElement;
|
|
3035
|
+
"tf-agent-details": TfAgentDetailsElement;
|
|
3036
|
+
"tf-chat-list": TfChatListElement;
|
|
3037
|
+
"tf-chat-workspace": TfChatWorkspaceElement;
|
|
3038
|
+
"tf-search-hits": TfSearchHitsElement;
|
|
3039
|
+
"tf-thinking-line": TfThinkingLineElement;
|
|
3040
|
+
"tf-feedback-rating": TfFeedbackRatingElement;
|
|
3041
|
+
"tf-activity-feed": TfActivityFeedElement;
|
|
3042
|
+
"tf-daily-briefing": TfDailyBriefingElement;
|
|
3043
|
+
"tf-budget-stop": TfBudgetStopElement;
|
|
3044
|
+
"tf-memory-viewer": TfMemoryViewerElement;
|
|
3045
|
+
"tf-override-diff": TfOverrideDiffElement;
|
|
3046
|
+
"tf-trigger-list": TfTriggerListElement;
|
|
3047
|
+
"tf-schedule-calendar": TfScheduleCalendarElement;
|
|
3048
|
+
"tf-org-chart": TfOrgChartElement;
|
|
3049
|
+
"tf-voice-mode": TfVoiceModeElement;
|
|
3050
|
+
"tf-mobile-tab-bar": TfMobileTabBarElement;
|
|
3051
|
+
"tf-push-notification": TfPushNotificationElement;
|
|
3052
|
+
"tf-config-pr-summary": TfConfigPRSummaryElement;
|
|
3053
|
+
"tf-module-registry": TfModuleRegistryElement;
|
|
3054
|
+
"tf-approval-card": TfApprovalCardElement;
|
|
3055
|
+
"tf-approval-inbox": TfApprovalInboxElement;
|
|
3056
|
+
"tf-kbd": TfKbdElement;
|
|
3057
|
+
"tf-key-value": TfKeyValueElement;
|
|
3058
|
+
"tf-spinner": TfSpinnerElement;
|
|
3059
|
+
"tf-collapsible": TfCollapsibleElement;
|
|
3060
|
+
"tf-context-menu": TfContextMenuElement;
|
|
3061
|
+
"tf-split-pane": TfSplitPaneElement;
|
|
3062
|
+
"tf-resizable-panels": TfResizablePanelsElement;
|
|
3063
|
+
"tf-tree-view": TfTreeViewElement;
|
|
3064
|
+
"tf-inline-edit": TfInlineEditElement;
|
|
3065
|
+
"tf-bar-chart": TfBarChartElement;
|
|
3066
|
+
"tf-line-chart": TfLineChartElement;
|
|
3067
|
+
"tf-sparkline": TfSparklineElement;
|
|
3068
|
+
"tf-donut": TfDonutElement;
|
|
3069
|
+
"tf-legend": TfLegendElement;
|
|
3070
|
+
"tf-stacked-bar-chart": TfStackedBarChartElement;
|
|
3071
|
+
"tf-area-chart": TfAreaChartElement;
|
|
3072
|
+
"tf-heatmap": TfHeatmapElement;
|
|
3073
|
+
"tf-funnel": TfFunnelElement;
|
|
3074
|
+
"tf-gauge": TfGaugeElement;
|
|
3075
|
+
"tf-rich-text": TfRichTextElement;
|
|
3076
|
+
"tf-code-block": TfCodeBlockElement;
|
|
3077
|
+
"tf-typing-dots": TfTypingDotsElement;
|
|
3078
|
+
"tf-agent-mark": TfAgentMarkElement;
|
|
3079
|
+
"tf-chat-message": TfChatMessageElement;
|
|
3080
|
+
"tf-tool-call": TfToolCallElement;
|
|
3081
|
+
"tf-reasoning": TfReasoningElement;
|
|
3082
|
+
"tf-prompt-starters": TfPromptStartersElement;
|
|
3083
|
+
"tf-model-picker": TfModelPickerElement;
|
|
3084
|
+
"tf-composer": TfComposerElement;
|
|
3085
|
+
"tf-agent-status": TfAgentStatusElement;
|
|
3086
|
+
"tf-run-trace": TfRunTraceElement;
|
|
3087
|
+
"tf-usage-meter": TfUsageMeterElement;
|
|
3088
|
+
"tf-product-art": TfProductArtElement;
|
|
3089
|
+
"tf-price": TfPriceElement;
|
|
3090
|
+
"tf-rating": TfRatingElement;
|
|
3091
|
+
"tf-stock-badge": TfStockBadgeElement;
|
|
3092
|
+
"tf-product-card": TfProductCardElement;
|
|
3093
|
+
"tf-variant-picker": TfVariantPickerElement;
|
|
3094
|
+
"tf-cart-line": TfCartLineElement;
|
|
3095
|
+
"tf-order-summary": TfOrderSummaryElement;
|
|
3096
|
+
"tf-checkout-steps": TfCheckoutStepsElement;
|
|
3097
|
+
"tf-order-timeline": TfOrderTimelineElement;
|
|
3098
|
+
"tf-plan-card": TfPlanCardElement;
|
|
3099
|
+
"tf-count-up": TfCountUpElement;
|
|
3100
|
+
"tf-stat-tile": TfStatTileElement;
|
|
3101
|
+
"tf-card": TfCardElement;
|
|
3102
|
+
"tf-event-card": TfEventCardElement;
|
|
3103
|
+
"tf-panel": TfPanelElement;
|
|
3104
|
+
"tf-page-header": TfPageHeaderElement;
|
|
3105
|
+
"tf-stagger": TfStaggerElement;
|
|
3106
|
+
"tf-table": TfTableElement;
|
|
3107
|
+
"tf-list-row": TfListRowElement;
|
|
3108
|
+
"tf-timeline": TfTimelineElement;
|
|
3109
|
+
"tf-file-row": TfFileRowElement;
|
|
3110
|
+
"tf-kanban-column": TfKanbanColumnElement;
|
|
3111
|
+
"tf-progress": TfProgressElement;
|
|
3112
|
+
"tf-progress-ring": TfProgressRingElement;
|
|
3113
|
+
"tf-filter-bar": TfFilterBarElement;
|
|
3114
|
+
"tf-data-table": TfDataTableElement;
|
|
3115
|
+
"tf-log-view": TfLogViewElement;
|
|
3116
|
+
"tf-code-viewer": TfCodeViewerElement;
|
|
3117
|
+
"tf-secret-field": TfSecretFieldElement;
|
|
3118
|
+
"tf-money-input": TfMoneyInputElement;
|
|
3119
|
+
"tf-settings-layout": TfSettingsLayoutElement;
|
|
3120
|
+
"tf-shortcuts-overlay": TfShortcutsOverlayElement;
|
|
3121
|
+
"tf-stat-cell": TfStatCellElement;
|
|
3122
|
+
"tf-uptime-bar": TfUptimeBarElement;
|
|
3123
|
+
"tf-meter": TfMeterElement;
|
|
3124
|
+
"tf-skeleton": TfSkeletonElement;
|
|
3125
|
+
"tf-menu": TfMenuElement;
|
|
3126
|
+
"tf-modal": TfModalElement;
|
|
3127
|
+
"tf-toast": TfToastElement;
|
|
3128
|
+
"tf-empty-state": TfEmptyStateElement;
|
|
3129
|
+
"tf-alert": TfAlertElement;
|
|
3130
|
+
"tf-confirm-dialog": TfConfirmDialogElement;
|
|
3131
|
+
"tf-toaster": TfToasterElement;
|
|
3132
|
+
"tf-form-field": TfFormFieldElement;
|
|
3133
|
+
"tf-text-field": TfTextFieldElement;
|
|
3134
|
+
"tf-radio-group": TfRadioGroupElement;
|
|
3135
|
+
"tf-segmented": TfSegmentedElement;
|
|
3136
|
+
"tf-combobox": TfComboboxElement;
|
|
3137
|
+
"tf-tag-input": TfTagInputElement;
|
|
3138
|
+
"tf-calendar": TfCalendarElement;
|
|
3139
|
+
"tf-date-picker": TfDatePickerElement;
|
|
3140
|
+
"tf-number-input": TfNumberInputElement;
|
|
3141
|
+
"tf-slider": TfSliderElement;
|
|
3142
|
+
"tf-otp-input": TfOtpInputElement;
|
|
3143
|
+
"tf-file-drop": TfFileDropElement;
|
|
3144
|
+
"tf-button": TfButtonElement;
|
|
3145
|
+
"tf-icon-button": TfIconButtonElement;
|
|
3146
|
+
"tf-chip": TfChipElement;
|
|
3147
|
+
"tf-badge": TfBadgeElement;
|
|
3148
|
+
"tf-tint-icon": TfTintIconElement;
|
|
3149
|
+
"tf-avatar": TfAvatarElement;
|
|
3150
|
+
"tf-avatar-stack": TfAvatarStackElement;
|
|
3151
|
+
"tf-input": TfInputElement;
|
|
3152
|
+
"tf-select": TfSelectElement;
|
|
3153
|
+
"tf-textarea": TfTextareaElement;
|
|
3154
|
+
"tf-search-field": TfSearchFieldElement;
|
|
3155
|
+
"tf-checkbox": TfCheckboxElement;
|
|
3156
|
+
"tf-switch": TfSwitchElement;
|
|
3157
|
+
"tf-form": TfFormElement;
|
|
3158
|
+
"tf-select-menu": TfSelectMenuElement;
|
|
3159
|
+
"tf-account-switcher": TfAccountSwitcherElement;
|
|
3160
|
+
"tf-inbox-list": TfInboxListElement;
|
|
3161
|
+
"tf-mail-thread": TfMailThreadElement;
|
|
3162
|
+
"tf-signature-editor": TfSignatureEditorElement;
|
|
3163
|
+
"tf-attachment-preview": TfAttachmentPreviewElement;
|
|
3164
|
+
"tf-image-variants": TfImageVariantsElement;
|
|
3165
|
+
"tf-gallery": TfGalleryElement;
|
|
3166
|
+
"tf-before-after": TfBeforeAfterElement;
|
|
3167
|
+
"tf-tabs": TfTabsElement;
|
|
3168
|
+
"tf-breadcrumb": TfBreadcrumbElement;
|
|
3169
|
+
"tf-pagination": TfPaginationElement;
|
|
3170
|
+
"tf-menubar": TfMenubarElement;
|
|
3171
|
+
"tf-navigation-menu": TfNavigationMenuElement;
|
|
3172
|
+
"tf-sidebar": TfSidebarElement;
|
|
3173
|
+
"tf-connection-card": TfConnectionCardElement;
|
|
3174
|
+
"tf-connection-banner": TfConnectionBannerElement;
|
|
3175
|
+
"tf-server-card": TfServerCardElement;
|
|
3176
|
+
"tf-deploy-pipeline": TfDeployPipelineElement;
|
|
3177
|
+
"tf-dns-record-table": TfDnsRecordTableElement;
|
|
3178
|
+
"tf-domain-list": TfDomainListElement;
|
|
3179
|
+
"tf-mail-auth-status": TfMailAuthStatusElement;
|
|
3180
|
+
"tf-ledger-table": TfLedgerTableElement;
|
|
3181
|
+
"tf-pnl-statement": TfPnLStatementElement;
|
|
3182
|
+
"tf-receipt-suggestion": TfReceiptSuggestionElement;
|
|
3183
|
+
"tf-popover": TfPopoverElement;
|
|
3184
|
+
"tf-tooltip": TfTooltipElement;
|
|
3185
|
+
"tf-email-preview": TfEmailPreviewElement;
|
|
3186
|
+
"tf-search-ad-preview": TfSearchAdPreviewElement;
|
|
3187
|
+
"tf-accordion": TfAccordionElement;
|
|
3188
|
+
"tf-separator": TfSeparatorElement;
|
|
3189
|
+
"tf-aspect-ratio": TfAspectRatioElement;
|
|
3190
|
+
"tf-label": TfLabelElement;
|
|
3191
|
+
"tf-toggle": TfToggleElement;
|
|
3192
|
+
"tf-toggle-group": TfToggleGroupElement;
|
|
3193
|
+
"tf-button-group": TfButtonGroupElement;
|
|
3194
|
+
"tf-scroll-area": TfScrollAreaElement;
|
|
3195
|
+
"tf-hover-card": TfHoverCardElement;
|
|
3196
|
+
"tf-carousel": TfCarouselElement;
|
|
3197
|
+
"tf-listing-card": TfListingCardElement;
|
|
3198
|
+
"tf-results-toolbar": TfResultsToolbarElement;
|
|
3199
|
+
"tf-saved-search": TfSavedSearchElement;
|
|
3200
|
+
"tf-valuation-card": TfValuationCardElement;
|
|
3201
|
+
"tf-energy-class": TfEnergyClassElement;
|
|
3202
|
+
"tf-rich-text-editor": TfRichTextEditorElement;
|
|
3203
|
+
"tf-top-bar": TfTopBarElement;
|
|
3204
|
+
"tf-side-rail": TfSideRailElement;
|
|
3205
|
+
"tf-dock": TfDockElement;
|
|
3206
|
+
"tf-app-shell": TfAppShellElement;
|
|
3207
|
+
"tf-chat-launcher": TfChatLauncherElement;
|
|
3208
|
+
"tf-cookie-consent": TfCookieConsentElement;
|
|
3209
|
+
"tf-announcement-bar": TfAnnouncementBarElement;
|
|
3210
|
+
"tf-status-shape": TfStatusShapeElement;
|
|
3211
|
+
"tf-status-indicator": TfStatusIndicatorElement;
|
|
3212
|
+
"tf-status-screen": TfStatusScreenElement;
|
|
3213
|
+
"tf-auth-card": TfAuthCardElement;
|
|
3214
|
+
"tf-sub-nav": TfSubNavElement;
|
|
3215
|
+
"tf-drawer": TfDrawerElement;
|
|
3216
|
+
"tf-command-palette": TfCommandPaletteElement;
|
|
3217
|
+
"tf-notification-list": TfNotificationListElement;
|
|
3218
|
+
"tf-flow": TfFlowElement;
|
|
3219
|
+
"tf-file-thumb": TfFileThumbElement;
|
|
3220
|
+
"tf-file-card": TfFileCardElement;
|
|
3221
|
+
"tf-wizard": TfWizardElement;
|
|
3222
|
+
"tf-permission-matrix": TfPermissionMatrixElement;
|
|
3223
|
+
"tf-invoice-preview": TfInvoicePreviewElement;
|
|
3224
|
+
"tf-transaction-row": TfTransactionRowElement;
|
|
3225
|
+
}
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3228
|
+
/** The detail of every event a tf-* element dispatches. */
|
|
3229
|
+
export type TfEvent<D = unknown> = CustomEvent<D>;
|
|
3230
|
+
|
|
3231
|
+
/** Shows a toast in `<tf-toaster>`; at most three are visible. Returns its id. */
|
|
3232
|
+
export declare const toast: {
|
|
3233
|
+
(o: ToastOptions | string): string;
|
|
3234
|
+
dismiss(id: string): void;
|
|
3235
|
+
clear(): void;
|
|
3236
|
+
};
|
|
3237
|
+
/** Defines every tf-* element (runs on import; safe to call again). */
|
|
3238
|
+
export declare function defineElements(): void;
|
|
3239
|
+
/** Tag name → component name, for every element. */
|
|
3240
|
+
export declare const ELEMENTS: Readonly<Record<string, string>>;
|
|
3241
|
+
export declare const VERSION: string;
|
|
3242
|
+
export declare function formatNumber(n: number, opts?: Intl.NumberFormatOptions): string;
|
|
3243
|
+
export declare function formatMoney(n: number, currency?: string | null, opts?: Intl.NumberFormatOptions): string;
|
|
3244
|
+
export declare function formatPercent(n: number, opts?: Intl.NumberFormatOptions): string;
|
|
3245
|
+
export declare function formatDate(d: Date | string | number, opts?: Intl.DateTimeFormatOptions): string;
|