@kb-labs/studio-ui-kit 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +270 -0
- package/dist/index.css +169 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +2249 -0
- package/dist/index.js +2029 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2249 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import { spacing } from '@kb-labs/studio-ui-core';
|
|
4
|
+
import { TextProps } from 'antd/es/typography/Text';
|
|
5
|
+
import { ParagraphProps } from 'antd/es/typography/Paragraph';
|
|
6
|
+
import { LinkProps } from 'antd/es/typography/Link';
|
|
7
|
+
import { SpaceProps, Space, RowProps, ColProps, DividerProps, BadgeProps, ButtonProps, CardProps, TagProps, AvatarProps, Avatar, GlobalToken, theme, StatisticProps, Statistic, ProgressProps, DescriptionsProps, Descriptions, TimelineProps, Timeline, TreeProps, Tree, ListProps, List, InputProps, Input, SelectProps, FormProps, FormItemProps, Form, SwitchProps, DatePickerProps, TimePickerProps, DatePicker, InputNumberProps, RadioProps, RadioGroupProps, UploadProps, Upload, SliderSingleProps, DropdownProps, Dropdown, SegmentedProps, StepsProps, MenuProps, Skeleton, SpinProps, ResultProps, MessageArgsProps, DrawerProps, PopconfirmProps, PopoverProps } from 'antd';
|
|
8
|
+
import { ColumnType } from 'antd/es/table';
|
|
9
|
+
import { ExpandableConfig } from 'antd/es/table/interface';
|
|
10
|
+
import { LineConfig, ColumnConfig, AreaConfig, PieConfig, BarConfig } from '@ant-design/charts';
|
|
11
|
+
import * as antd_es_form_Form from 'antd/es/form/Form';
|
|
12
|
+
import { Dayjs } from 'dayjs';
|
|
13
|
+
import * as antd_es_message_interface from 'antd/es/message/interface';
|
|
14
|
+
import * as antd_es_notification_interface from 'antd/es/notification/interface';
|
|
15
|
+
import * as antd_es_modal_confirm from 'antd/es/modal/confirm';
|
|
16
|
+
|
|
17
|
+
type UITextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl';
|
|
18
|
+
type UITextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
|
|
19
|
+
type UITextColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
20
|
+
interface UITextProps {
|
|
21
|
+
/** Text content */
|
|
22
|
+
children: React$1.ReactNode;
|
|
23
|
+
/** Typography size from design tokens */
|
|
24
|
+
size?: UITextSize;
|
|
25
|
+
/** Font weight from design tokens */
|
|
26
|
+
weight?: UITextWeight;
|
|
27
|
+
/** Semantic color using Ant Design tokens */
|
|
28
|
+
color?: UITextColor;
|
|
29
|
+
/** HTML element to render */
|
|
30
|
+
as?: 'span' | 'p' | 'div' | 'label' | 'pre';
|
|
31
|
+
/** Additional CSS class */
|
|
32
|
+
className?: string;
|
|
33
|
+
/** Additional styles (use sparingly) */
|
|
34
|
+
style?: React$1.CSSProperties;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* UIText component with design system tokens
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <UIText size="sm" color="secondary">Label text</UIText>
|
|
42
|
+
* <UIText size="2xl" weight="bold">Heading</UIText>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function UIText({ children, size, weight, color, as: Component, className, style: customStyle, }: UITextProps): react_jsx_runtime.JSX.Element;
|
|
46
|
+
|
|
47
|
+
type UIBoxSpacingValue = keyof typeof spacing;
|
|
48
|
+
interface UIBoxProps {
|
|
49
|
+
/** Box content */
|
|
50
|
+
children: React$1.ReactNode;
|
|
51
|
+
/** Padding from design tokens */
|
|
52
|
+
p?: UIBoxSpacingValue;
|
|
53
|
+
/** Padding top */
|
|
54
|
+
pt?: UIBoxSpacingValue;
|
|
55
|
+
/** Padding right */
|
|
56
|
+
pr?: UIBoxSpacingValue;
|
|
57
|
+
/** Padding bottom */
|
|
58
|
+
pb?: UIBoxSpacingValue;
|
|
59
|
+
/** Padding left */
|
|
60
|
+
pl?: UIBoxSpacingValue;
|
|
61
|
+
/** Margin from design tokens */
|
|
62
|
+
m?: UIBoxSpacingValue;
|
|
63
|
+
/** Margin top */
|
|
64
|
+
mt?: UIBoxSpacingValue;
|
|
65
|
+
/** Margin right */
|
|
66
|
+
mr?: UIBoxSpacingValue;
|
|
67
|
+
/** Margin bottom */
|
|
68
|
+
mb?: UIBoxSpacingValue;
|
|
69
|
+
/** Margin left */
|
|
70
|
+
ml?: UIBoxSpacingValue;
|
|
71
|
+
/** HTML element to render */
|
|
72
|
+
as?: keyof JSX.IntrinsicElements;
|
|
73
|
+
/** Additional CSS class */
|
|
74
|
+
className?: string;
|
|
75
|
+
/** Additional styles (use sparingly) */
|
|
76
|
+
style?: React$1.CSSProperties;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Box component with spacing tokens
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```tsx
|
|
83
|
+
* <Box p={4} mb={2}>Content</Box>
|
|
84
|
+
* <Box pt={2} pb={3}>Asymmetric padding</Box>
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
declare function UIBox({ children, p, pt, pr, pb, pl, m, mt, mr, mb, ml, as: Component, className, style: customStyle, }: UIBoxProps): react_jsx_runtime.JSX.Element;
|
|
88
|
+
|
|
89
|
+
type UIFlexSpacingValue = UIBoxSpacingValue;
|
|
90
|
+
interface UIFlexProps {
|
|
91
|
+
/** Flex content */
|
|
92
|
+
children: React$1.ReactNode;
|
|
93
|
+
/** Flex direction */
|
|
94
|
+
direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
|
|
95
|
+
/** Justify content */
|
|
96
|
+
justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
|
|
97
|
+
/** Align items */
|
|
98
|
+
align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
|
|
99
|
+
/** Gap from design tokens */
|
|
100
|
+
gap?: UIFlexSpacingValue;
|
|
101
|
+
/** Wrap behavior */
|
|
102
|
+
wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
103
|
+
/** HTML element to render */
|
|
104
|
+
as?: keyof JSX.IntrinsicElements;
|
|
105
|
+
/** Additional CSS class */
|
|
106
|
+
className?: string;
|
|
107
|
+
/** Additional styles */
|
|
108
|
+
style?: React$1.CSSProperties;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Flex layout component
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```tsx
|
|
115
|
+
* <Flex direction="row" gap={2} align="center">
|
|
116
|
+
* <Text>Item 1</Text>
|
|
117
|
+
* <Text>Item 2</Text>
|
|
118
|
+
* </Flex>
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
declare function UIFlex({ children, direction, justify, align, gap, wrap, as: Component, className, style: customStyle, }: UIFlexProps): react_jsx_runtime.JSX.Element;
|
|
122
|
+
|
|
123
|
+
interface UITypographyTextProps extends TextProps {
|
|
124
|
+
}
|
|
125
|
+
interface UITypographyParagraphProps extends ParagraphProps {
|
|
126
|
+
}
|
|
127
|
+
interface UITypographyLinkProps extends LinkProps {
|
|
128
|
+
}
|
|
129
|
+
declare function UITypographyText(props: UITypographyTextProps): react_jsx_runtime.JSX.Element;
|
|
130
|
+
declare function UITypographyParagraph(props: UITypographyParagraphProps): react_jsx_runtime.JSX.Element;
|
|
131
|
+
declare function UITypographyLink(props: UITypographyLinkProps): react_jsx_runtime.JSX.Element;
|
|
132
|
+
|
|
133
|
+
type UIStackDirection = 'vertical' | 'horizontal';
|
|
134
|
+
type UIStackSpacing = UIBoxSpacingValue;
|
|
135
|
+
type UIStackAlign = 'start' | 'end' | 'center' | 'stretch';
|
|
136
|
+
interface UIStackProps {
|
|
137
|
+
/** Stack direction */
|
|
138
|
+
direction?: UIStackDirection;
|
|
139
|
+
/** Spacing between items (from design tokens) */
|
|
140
|
+
spacing?: UIStackSpacing;
|
|
141
|
+
/** Align items */
|
|
142
|
+
align?: UIStackAlign;
|
|
143
|
+
/** Stack content */
|
|
144
|
+
children: React$1.ReactNode;
|
|
145
|
+
/** HTML element to render */
|
|
146
|
+
as?: keyof JSX.IntrinsicElements;
|
|
147
|
+
/** Additional CSS class */
|
|
148
|
+
className?: string;
|
|
149
|
+
/** Additional styles */
|
|
150
|
+
style?: React$1.CSSProperties;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* UIStack - Consistent spacing layout
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```tsx
|
|
157
|
+
* <UIStack direction="vertical" spacing={4}>
|
|
158
|
+
* <Card>Item 1</Card>
|
|
159
|
+
* <Card>Item 2</Card>
|
|
160
|
+
* <Card>Item 3</Card>
|
|
161
|
+
* </UIStack>
|
|
162
|
+
*
|
|
163
|
+
* <UIStack direction="horizontal" spacing={2} align="center">
|
|
164
|
+
* <Button>Cancel</Button>
|
|
165
|
+
* <Button>Submit</Button>
|
|
166
|
+
* </UIStack>
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
declare function UIStack({ direction, spacing, align, children, as, className, style, }: UIStackProps): react_jsx_runtime.JSX.Element;
|
|
170
|
+
|
|
171
|
+
interface UISpaceProps extends SpaceProps {
|
|
172
|
+
}
|
|
173
|
+
declare function UISpace(props: UISpaceProps): react_jsx_runtime.JSX.Element;
|
|
174
|
+
declare function UISpaceCompact(props: React$1.ComponentProps<typeof Space.Compact>): react_jsx_runtime.JSX.Element;
|
|
175
|
+
|
|
176
|
+
interface UIRowProps extends RowProps {
|
|
177
|
+
}
|
|
178
|
+
interface UIColProps extends ColProps {
|
|
179
|
+
}
|
|
180
|
+
declare function UIRow(props: UIRowProps): react_jsx_runtime.JSX.Element;
|
|
181
|
+
declare function UICol(props: UIColProps): react_jsx_runtime.JSX.Element;
|
|
182
|
+
|
|
183
|
+
interface UIDividerProps extends DividerProps {
|
|
184
|
+
}
|
|
185
|
+
declare function UIDivider(props: UIDividerProps): react_jsx_runtime.JSX.Element;
|
|
186
|
+
|
|
187
|
+
type UIBadgeVariant = 'success' | 'warning' | 'error' | 'info' | 'default';
|
|
188
|
+
interface UIBadgeProps extends Omit<BadgeProps, 'status' | 'color'> {
|
|
189
|
+
/** Semantic variant */
|
|
190
|
+
variant?: UIBadgeVariant;
|
|
191
|
+
/** Badge text */
|
|
192
|
+
children?: React$1.ReactNode;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Badge component with semantic colors
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```tsx
|
|
199
|
+
* <Badge variant="success">Active</Badge>
|
|
200
|
+
* <Badge variant="error">Failed</Badge>
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
declare function UIBadge({ variant, children, ...props }: UIBadgeProps): react_jsx_runtime.JSX.Element;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* UIButton component - Action button with semantic variants
|
|
207
|
+
*
|
|
208
|
+
* Wraps Ant Design Button with consistent styling and proper SVG icon theming.
|
|
209
|
+
* NO hardcoded colors, uses Ant Design theme tokens + CSS variables.
|
|
210
|
+
*
|
|
211
|
+
* IMPORTANT: This component ensures all SVG icons (lucide-react, etc.)
|
|
212
|
+
* inherit colors correctly in both light and dark themes through CSS.
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
type UIButtonVariant = 'primary' | 'default' | 'dashed' | 'text' | 'link';
|
|
216
|
+
interface UIButtonProps extends Omit<ButtonProps, 'type' | 'variant'> {
|
|
217
|
+
/** Button variant (maps to Ant Design 'type' prop) */
|
|
218
|
+
variant?: UIButtonVariant;
|
|
219
|
+
/** Additional CSS class */
|
|
220
|
+
className?: string;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* UIButton - Action button with proper icon theming
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```tsx
|
|
227
|
+
* import { X, Check } from 'lucide-react';
|
|
228
|
+
*
|
|
229
|
+
* <UIButton variant="primary">Submit</UIButton>
|
|
230
|
+
* <UIButton variant="default" icon={<Check />}>Confirm</UIButton>
|
|
231
|
+
* <UIButton variant="text" danger icon={<X />}>Delete</UIButton>
|
|
232
|
+
* <UIButton variant="text" icon={<X />} /> // Icon-only close button
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
declare const UIButton: React$1.ForwardRefExoticComponent<UIButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
236
|
+
|
|
237
|
+
type UICardVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
238
|
+
interface UICardProps extends Omit<CardProps, 'title' | 'bordered'> {
|
|
239
|
+
/** Card title */
|
|
240
|
+
title?: React$1.ReactNode;
|
|
241
|
+
/** Subtitle (below title) */
|
|
242
|
+
subtitle?: string;
|
|
243
|
+
/** Extra content (top-right corner) */
|
|
244
|
+
extra?: React$1.ReactNode;
|
|
245
|
+
/** Footer content */
|
|
246
|
+
footer?: React$1.ReactNode;
|
|
247
|
+
/** Card content */
|
|
248
|
+
children: React$1.ReactNode;
|
|
249
|
+
/** Card size */
|
|
250
|
+
size?: 'small' | 'default';
|
|
251
|
+
/** Show border — false maps to variant="borderless" */
|
|
252
|
+
bordered?: boolean;
|
|
253
|
+
/** Hoverable effect */
|
|
254
|
+
hoverable?: boolean;
|
|
255
|
+
/** Loading state */
|
|
256
|
+
loading?: boolean;
|
|
257
|
+
/** Status variant — adds colored top border + tinted background */
|
|
258
|
+
status?: UICardVariant;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* UICard - Container with optional header/footer
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```tsx
|
|
265
|
+
* <UICard title="User Profile" subtitle="Last updated today">
|
|
266
|
+
* <p>Card content</p>
|
|
267
|
+
* </UICard>
|
|
268
|
+
*
|
|
269
|
+
* <UICard
|
|
270
|
+
* title="Analytics"
|
|
271
|
+
* extra={<Button>View All</Button>}
|
|
272
|
+
* footer={<p>Last 7 days</p>}
|
|
273
|
+
* >
|
|
274
|
+
* <MetricChart />
|
|
275
|
+
* </UICard>
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
declare function UICard({ title, subtitle, extra, footer, children, size, bordered, hoverable, loading, status, ...rest }: UICardProps): react_jsx_runtime.JSX.Element;
|
|
279
|
+
|
|
280
|
+
type UITagVariant = 'success' | 'warning' | 'error' | 'info' | 'default' | 'neutral';
|
|
281
|
+
interface UITagProps extends Omit<TagProps, 'color'> {
|
|
282
|
+
/** Semantic variant */
|
|
283
|
+
variant?: UITagVariant;
|
|
284
|
+
/** Direct color override (Ant Design color name or hex) */
|
|
285
|
+
color?: string;
|
|
286
|
+
/** Tag content */
|
|
287
|
+
children: React$1.ReactNode;
|
|
288
|
+
/** Closable tag */
|
|
289
|
+
closable?: boolean;
|
|
290
|
+
/** Close handler */
|
|
291
|
+
onClose?: () => void;
|
|
292
|
+
/** Icon element */
|
|
293
|
+
icon?: React$1.ReactNode;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* UITag - Label or category indicator
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```tsx
|
|
300
|
+
* <UITag variant="success">Active</UITag>
|
|
301
|
+
* <UITag variant="warning" closable onClose={() => {}}>Pending</UITag>
|
|
302
|
+
* <UITag variant="error">Failed</UITag>
|
|
303
|
+
* <UITag variant="info" icon={<InfoIcon />}>Info</UITag>
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
declare function UITag({ variant, color, children, closable, onClose, icon, ...rest }: UITagProps): react_jsx_runtime.JSX.Element;
|
|
307
|
+
|
|
308
|
+
type UITitleLevel = 1 | 2 | 3 | 4 | 5;
|
|
309
|
+
interface UITitleProps {
|
|
310
|
+
/** Title level (h1-h5) */
|
|
311
|
+
level?: UITitleLevel;
|
|
312
|
+
/** Title content */
|
|
313
|
+
children: React$1.ReactNode;
|
|
314
|
+
/** Optional subtitle */
|
|
315
|
+
subtitle?: string;
|
|
316
|
+
/** Additional CSS class */
|
|
317
|
+
className?: string;
|
|
318
|
+
/** Additional styles */
|
|
319
|
+
style?: React$1.CSSProperties;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* UITitle - Page or section title
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```tsx
|
|
326
|
+
* <UITitle level={1}>Dashboard</UITitle>
|
|
327
|
+
* <UITitle level={2} subtitle="Manage your settings">Settings</UITitle>
|
|
328
|
+
* <UITitle level={3}>Section Title</UITitle>
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
declare function UITitle({ level, children, subtitle, className, style, }: UITitleProps): react_jsx_runtime.JSX.Element;
|
|
332
|
+
|
|
333
|
+
type UIIconSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl';
|
|
334
|
+
type UIIconColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'inherit';
|
|
335
|
+
interface UIIconProps {
|
|
336
|
+
/** Icon component or icon name (e.g., 'HomeOutlined') */
|
|
337
|
+
icon?: React$1.ReactNode | string;
|
|
338
|
+
/** Icon name (alternative to icon prop) */
|
|
339
|
+
name?: string;
|
|
340
|
+
/** Icon size */
|
|
341
|
+
size?: UIIconSize;
|
|
342
|
+
/** Icon color */
|
|
343
|
+
color?: UIIconColor;
|
|
344
|
+
/** Spin animation */
|
|
345
|
+
spin?: boolean;
|
|
346
|
+
/** Click handler */
|
|
347
|
+
onClick?: () => void;
|
|
348
|
+
/** Additional CSS class */
|
|
349
|
+
className?: string;
|
|
350
|
+
/** Additional styles */
|
|
351
|
+
style?: React$1.CSSProperties;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Icon resolver registry — call registerIconRenderer() once at app startup
|
|
355
|
+
* to wire up the icon lookup (e.g. from @/components/ui/icons renderIcon).
|
|
356
|
+
*/
|
|
357
|
+
type IconRenderer = (name: string) => React$1.ReactNode | null;
|
|
358
|
+
declare function registerIconRenderer(renderer: IconRenderer): void;
|
|
359
|
+
/**
|
|
360
|
+
* UIIcon - Icon wrapper with CSS-based theming
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```tsx
|
|
364
|
+
* import { CheckCircleOutlined } from '@ant-design/icons';
|
|
365
|
+
* import { Check } from 'lucide-react';
|
|
366
|
+
*
|
|
367
|
+
* // Ant Design icon
|
|
368
|
+
* <UIIcon icon={<CheckCircleOutlined />} color="success" />
|
|
369
|
+
*
|
|
370
|
+
* // lucide-react icon
|
|
371
|
+
* <UIIcon icon={<Check />} color="success" size="lg" />
|
|
372
|
+
*
|
|
373
|
+
* // Using icon name (from AVAILABLE_ICONS)
|
|
374
|
+
* <UIIcon name="HomeOutlined" size="lg" />
|
|
375
|
+
* <UIIcon icon="SettingOutlined" color="primary" />
|
|
376
|
+
*
|
|
377
|
+
* <UIIcon icon={<LoadingOutlined />} spin />
|
|
378
|
+
*
|
|
379
|
+
* <UIIcon
|
|
380
|
+
* name="SettingOutlined"
|
|
381
|
+
* size="lg"
|
|
382
|
+
* onClick={handleSettings}
|
|
383
|
+
* />
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
declare function UIIcon({ icon, name, size, color, spin, onClick, className, style: customStyle, }: UIIconProps): react_jsx_runtime.JSX.Element | null;
|
|
387
|
+
/**
|
|
388
|
+
* Icon helper for common use cases
|
|
389
|
+
*/
|
|
390
|
+
declare const UIIconButton: ({ icon, name, onClick, size, color, ...props }: UIIconProps) => react_jsx_runtime.JSX.Element;
|
|
391
|
+
|
|
392
|
+
interface UIAvatarProps extends AvatarProps {
|
|
393
|
+
}
|
|
394
|
+
declare function UIAvatar(props: UIAvatarProps): react_jsx_runtime.JSX.Element;
|
|
395
|
+
declare function UIAvatarGroup(props: React$1.ComponentProps<typeof Avatar.Group>): react_jsx_runtime.JSX.Element;
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* useUITheme - Access design tokens from the current theme
|
|
399
|
+
*
|
|
400
|
+
* Wraps antd's theme.useToken() to decouple app from antd internals.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```tsx
|
|
404
|
+
* import { useUITheme } from '@kb-labs/studio-ui-kit';
|
|
405
|
+
*
|
|
406
|
+
* function MyComponent() {
|
|
407
|
+
* const { token } = useUITheme();
|
|
408
|
+
* return <div style={{ color: token.colorPrimary }}>Themed text</div>;
|
|
409
|
+
* }
|
|
410
|
+
* ```
|
|
411
|
+
*/
|
|
412
|
+
|
|
413
|
+
interface UIThemeResult {
|
|
414
|
+
token: GlobalToken;
|
|
415
|
+
hashId: string;
|
|
416
|
+
theme: ReturnType<typeof theme.useToken>['theme'];
|
|
417
|
+
}
|
|
418
|
+
declare function useUITheme(): UIThemeResult;
|
|
419
|
+
|
|
420
|
+
interface UIShimmerTextProps {
|
|
421
|
+
/** Text to display with shimmer effect */
|
|
422
|
+
children: React$1.ReactNode;
|
|
423
|
+
/**
|
|
424
|
+
* Base text color (the "dim" parts of the gradient).
|
|
425
|
+
* Defaults to current text color via CSS variable.
|
|
426
|
+
* @default 'var(--text-secondary, #6B7280)'
|
|
427
|
+
*/
|
|
428
|
+
color?: string;
|
|
429
|
+
/**
|
|
430
|
+
* Highlight color that sweeps across.
|
|
431
|
+
* @default 'var(--text-primary, #111827)'
|
|
432
|
+
*/
|
|
433
|
+
highlight?: string;
|
|
434
|
+
/**
|
|
435
|
+
* Animation duration.
|
|
436
|
+
* @default '2s'
|
|
437
|
+
*/
|
|
438
|
+
duration?: string;
|
|
439
|
+
/** Additional CSS class */
|
|
440
|
+
className?: string;
|
|
441
|
+
/** Additional styles */
|
|
442
|
+
style?: React$1.CSSProperties;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* UIShimmerText - Text with animated shimmer sweep
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* // Basic
|
|
449
|
+
* <UIShimmerText>Initializing plugins and widgets</UIShimmerText>
|
|
450
|
+
*
|
|
451
|
+
* // Custom colors
|
|
452
|
+
* <UIShimmerText highlight="#6366f1" color="#c7d2fe">
|
|
453
|
+
* Loading workspace...
|
|
454
|
+
* </UIShimmerText>
|
|
455
|
+
*
|
|
456
|
+
* // Faster sweep
|
|
457
|
+
* <UIShimmerText duration="1.2s">Processing...</UIShimmerText>
|
|
458
|
+
*/
|
|
459
|
+
declare function UIShimmerText({ children, color, highlight, duration, className, style, }: UIShimmerTextProps): react_jsx_runtime.JSX.Element;
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* MetricCard component - Display metric with trend
|
|
463
|
+
*
|
|
464
|
+
* Professional UI component using design tokens.
|
|
465
|
+
* NO inline styles, NO hardcoded colors.
|
|
466
|
+
*/
|
|
467
|
+
interface UIMetricCardProps {
|
|
468
|
+
/** Metric label */
|
|
469
|
+
label: string;
|
|
470
|
+
/** Metric value */
|
|
471
|
+
value: string | number;
|
|
472
|
+
/** Trend direction */
|
|
473
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
474
|
+
/** Change delta (percentage or absolute) */
|
|
475
|
+
delta?: number;
|
|
476
|
+
/** Value unit (e.g., '%', 'ms', '$') */
|
|
477
|
+
unit?: string;
|
|
478
|
+
/** Card size */
|
|
479
|
+
size?: 'small' | 'default';
|
|
480
|
+
/** Show/hide delta */
|
|
481
|
+
showDelta?: boolean;
|
|
482
|
+
/** Loading state */
|
|
483
|
+
loading?: boolean;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* MetricCard - Display single metric with optional trend indicator
|
|
487
|
+
*
|
|
488
|
+
* Uses Ant Design tokens for all colors.
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* ```tsx
|
|
492
|
+
* <MetricCard
|
|
493
|
+
* label="Active Users"
|
|
494
|
+
* value={1234}
|
|
495
|
+
* trend="up"
|
|
496
|
+
* delta={15.3}
|
|
497
|
+
* unit="users"
|
|
498
|
+
* />
|
|
499
|
+
* ```
|
|
500
|
+
*/
|
|
501
|
+
declare function UIMetricCard({ label, value, trend, delta, unit, size, showDelta, loading, }: UIMetricCardProps): react_jsx_runtime.JSX.Element;
|
|
502
|
+
|
|
503
|
+
interface UITableColumn<T = any> extends ColumnType<T> {
|
|
504
|
+
/** Column key */
|
|
505
|
+
key: string;
|
|
506
|
+
/** Column title */
|
|
507
|
+
title: string;
|
|
508
|
+
/** Data index (object key) */
|
|
509
|
+
dataIndex?: string;
|
|
510
|
+
/** Custom render function */
|
|
511
|
+
render?: (value: any, record: T, index: number) => React$1.ReactNode;
|
|
512
|
+
/** Column width */
|
|
513
|
+
width?: number | string;
|
|
514
|
+
/** Sortable column */
|
|
515
|
+
sorter?: boolean | ((a: T, b: T) => number);
|
|
516
|
+
/** Filterable column */
|
|
517
|
+
filters?: {
|
|
518
|
+
text: string;
|
|
519
|
+
value: any;
|
|
520
|
+
}[];
|
|
521
|
+
/** Default filter value */
|
|
522
|
+
defaultFilteredValue?: any[];
|
|
523
|
+
/** Custom filter function */
|
|
524
|
+
onFilter?: (value: any, record: T) => boolean;
|
|
525
|
+
/** Fixed column */
|
|
526
|
+
fixed?: 'left' | 'right';
|
|
527
|
+
/** Ellipsis text */
|
|
528
|
+
ellipsis?: boolean;
|
|
529
|
+
}
|
|
530
|
+
interface UITableProps<T = any> {
|
|
531
|
+
/** Table columns */
|
|
532
|
+
columns: UITableColumn<T>[];
|
|
533
|
+
/** Table data */
|
|
534
|
+
dataSource: T[];
|
|
535
|
+
/** Row key field */
|
|
536
|
+
rowKey?: string | ((record: T) => string);
|
|
537
|
+
/** Loading state */
|
|
538
|
+
loading?: boolean;
|
|
539
|
+
/** Show pagination */
|
|
540
|
+
pagination?: false | {
|
|
541
|
+
pageSize?: number;
|
|
542
|
+
current?: number;
|
|
543
|
+
total?: number;
|
|
544
|
+
};
|
|
545
|
+
/** Row selection */
|
|
546
|
+
rowSelection?: {
|
|
547
|
+
selectedRowKeys?: React$1.Key[];
|
|
548
|
+
onChange?: (selectedRowKeys: React$1.Key[], selectedRows: T[]) => void;
|
|
549
|
+
};
|
|
550
|
+
/** Row click handler */
|
|
551
|
+
onRow?: (record: T) => {
|
|
552
|
+
onClick?: () => void;
|
|
553
|
+
onDoubleClick?: () => void;
|
|
554
|
+
};
|
|
555
|
+
/** Table size */
|
|
556
|
+
size?: 'small' | 'middle' | 'large';
|
|
557
|
+
/** Show border */
|
|
558
|
+
bordered?: boolean;
|
|
559
|
+
/** Expandable row config */
|
|
560
|
+
expandable?: ExpandableConfig<T>;
|
|
561
|
+
/** Additional CSS class */
|
|
562
|
+
className?: string;
|
|
563
|
+
/** Additional styles */
|
|
564
|
+
style?: React$1.CSSProperties;
|
|
565
|
+
/** Scroll config */
|
|
566
|
+
scroll?: {
|
|
567
|
+
x?: number | string | true;
|
|
568
|
+
y?: number | string;
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* UITable - Data table
|
|
573
|
+
*
|
|
574
|
+
* @example
|
|
575
|
+
* ```tsx
|
|
576
|
+
* <UITable
|
|
577
|
+
* columns={[
|
|
578
|
+
* { key: 'name', title: 'Name', dataIndex: 'name', sorter: true },
|
|
579
|
+
* { key: 'age', title: 'Age', dataIndex: 'age', width: 100 },
|
|
580
|
+
* { key: 'status', title: 'Status', dataIndex: 'status',
|
|
581
|
+
* render: (status) => <UIBadge variant={status}>{status}</UIBadge>
|
|
582
|
+
* },
|
|
583
|
+
* ]}
|
|
584
|
+
* dataSource={data}
|
|
585
|
+
* rowKey="id"
|
|
586
|
+
* loading={isLoading}
|
|
587
|
+
* />
|
|
588
|
+
*
|
|
589
|
+
* <UITable
|
|
590
|
+
* columns={columns}
|
|
591
|
+
* dataSource={workflows}
|
|
592
|
+
* rowKey="workflowId"
|
|
593
|
+
* rowSelection={{
|
|
594
|
+
* selectedRowKeys,
|
|
595
|
+
* onChange: setSelectedRowKeys,
|
|
596
|
+
* }}
|
|
597
|
+
* onRow={(record) => ({
|
|
598
|
+
* onClick: () => handleRowClick(record),
|
|
599
|
+
* })}
|
|
600
|
+
* />
|
|
601
|
+
* ```
|
|
602
|
+
*/
|
|
603
|
+
declare function UITable<T extends Record<string, any> = any>({ columns, dataSource, rowKey, loading, pagination, rowSelection, onRow, size, bordered, expandable, className, style, scroll, }: UITableProps<T>): react_jsx_runtime.JSX.Element;
|
|
604
|
+
|
|
605
|
+
interface UILineChartProps extends Omit<LineConfig, 'theme'> {
|
|
606
|
+
/**
|
|
607
|
+
* Custom colors to override theme colors
|
|
608
|
+
* If not provided, automatic color palette will be used
|
|
609
|
+
*/
|
|
610
|
+
colors?: string[];
|
|
611
|
+
/**
|
|
612
|
+
* Disable automatic color mapping
|
|
613
|
+
* Set to true if you want to handle colors manually via style.fill
|
|
614
|
+
*/
|
|
615
|
+
disableAutoColors?: boolean;
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* UILineChart - Line chart with automatic theming and color mapping
|
|
619
|
+
*
|
|
620
|
+
* Wrapper around @ant-design/charts Line component that uses theme tokens
|
|
621
|
+
* for automatic light/dark mode support and automatic color mapping.
|
|
622
|
+
*
|
|
623
|
+
* @example
|
|
624
|
+
* ```tsx
|
|
625
|
+
* // Automatic color mapping (recommended)
|
|
626
|
+
* <UILineChart
|
|
627
|
+
* data={data}
|
|
628
|
+
* xField="date"
|
|
629
|
+
* yField="value"
|
|
630
|
+
* colorField="category"
|
|
631
|
+
* />
|
|
632
|
+
*
|
|
633
|
+
* // Custom colors
|
|
634
|
+
* <UILineChart
|
|
635
|
+
* data={data}
|
|
636
|
+
* xField="date"
|
|
637
|
+
* yField="value"
|
|
638
|
+
* colorField="category"
|
|
639
|
+
* colors={['#ff0000', '#00ff00']}
|
|
640
|
+
* />
|
|
641
|
+
*
|
|
642
|
+
* // Manual color control via scale
|
|
643
|
+
* <UILineChart
|
|
644
|
+
* data={data}
|
|
645
|
+
* xField="date"
|
|
646
|
+
* yField="value"
|
|
647
|
+
* colorField="category"
|
|
648
|
+
* disableAutoColors
|
|
649
|
+
* scale={{
|
|
650
|
+
* color: {
|
|
651
|
+
* range: ['#ff0000', '#00ff00']
|
|
652
|
+
* }
|
|
653
|
+
* }}
|
|
654
|
+
* />
|
|
655
|
+
* ```
|
|
656
|
+
*/
|
|
657
|
+
declare function UILineChart({ colors, disableAutoColors, ...props }: UILineChartProps): react_jsx_runtime.JSX.Element;
|
|
658
|
+
|
|
659
|
+
interface UIColumnChartProps extends Omit<ColumnConfig, 'theme'> {
|
|
660
|
+
/**
|
|
661
|
+
* Custom colors to override theme colors
|
|
662
|
+
*/
|
|
663
|
+
colors?: string[];
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* UIColumnChart - Column chart with automatic theming
|
|
667
|
+
*
|
|
668
|
+
* Wrapper around @ant-design/charts Column component that uses theme tokens
|
|
669
|
+
* for automatic light/dark mode support.
|
|
670
|
+
*
|
|
671
|
+
* @example
|
|
672
|
+
* ```tsx
|
|
673
|
+
* <UIColumnChart
|
|
674
|
+
* data={data}
|
|
675
|
+
* xField="category"
|
|
676
|
+
* yField="value"
|
|
677
|
+
* colorField="type"
|
|
678
|
+
* />
|
|
679
|
+
* ```
|
|
680
|
+
*/
|
|
681
|
+
declare function UIColumnChart({ colors, ...props }: UIColumnChartProps): react_jsx_runtime.JSX.Element;
|
|
682
|
+
|
|
683
|
+
interface UIAreaChartProps extends Omit<AreaConfig, 'theme'> {
|
|
684
|
+
/**
|
|
685
|
+
* Custom colors to override theme colors
|
|
686
|
+
* If not provided, automatic color palette will be used
|
|
687
|
+
*/
|
|
688
|
+
colors?: string[];
|
|
689
|
+
/**
|
|
690
|
+
* Disable automatic color mapping
|
|
691
|
+
* Set to true if you want to handle colors manually via style.fill
|
|
692
|
+
*/
|
|
693
|
+
disableAutoColors?: boolean;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* UIAreaChart - Area chart with automatic theming and color mapping
|
|
697
|
+
*
|
|
698
|
+
* Wrapper around @ant-design/charts Area component that uses theme tokens
|
|
699
|
+
* for automatic light/dark mode support and automatic color mapping.
|
|
700
|
+
*
|
|
701
|
+
* @example
|
|
702
|
+
* ```tsx
|
|
703
|
+
* // Automatic color mapping (recommended)
|
|
704
|
+
* <UIAreaChart
|
|
705
|
+
* data={data}
|
|
706
|
+
* xField="date"
|
|
707
|
+
* yField="value"
|
|
708
|
+
* colorField="category"
|
|
709
|
+
* />
|
|
710
|
+
*
|
|
711
|
+
* // Custom colors
|
|
712
|
+
* <UIAreaChart
|
|
713
|
+
* data={data}
|
|
714
|
+
* xField="date"
|
|
715
|
+
* yField="value"
|
|
716
|
+
* colorField="category"
|
|
717
|
+
* colors={['#ff0000', '#00ff00']}
|
|
718
|
+
* />
|
|
719
|
+
*
|
|
720
|
+
* // Manual color control via scale
|
|
721
|
+
* <UIAreaChart
|
|
722
|
+
* data={data}
|
|
723
|
+
* xField="date"
|
|
724
|
+
* yField="value"
|
|
725
|
+
* colorField="category"
|
|
726
|
+
* disableAutoColors
|
|
727
|
+
* scale={{
|
|
728
|
+
* color: {
|
|
729
|
+
* range: ['#ff0000', '#00ff00']
|
|
730
|
+
* }
|
|
731
|
+
* }}
|
|
732
|
+
* />
|
|
733
|
+
* ```
|
|
734
|
+
*/
|
|
735
|
+
declare function UIAreaChart({ colors, disableAutoColors, ...props }: UIAreaChartProps): react_jsx_runtime.JSX.Element;
|
|
736
|
+
|
|
737
|
+
interface UIPieChartProps extends Omit<PieConfig, 'theme'> {
|
|
738
|
+
/**
|
|
739
|
+
* Custom colors to override theme colors
|
|
740
|
+
* If not provided, automatic color palette will be used
|
|
741
|
+
*/
|
|
742
|
+
colors?: string[];
|
|
743
|
+
/**
|
|
744
|
+
* Disable automatic color mapping
|
|
745
|
+
* Set to true if you want to handle colors manually
|
|
746
|
+
*/
|
|
747
|
+
disableAutoColors?: boolean;
|
|
748
|
+
}
|
|
749
|
+
/**
|
|
750
|
+
* UIPieChart - Pie/Donut chart with automatic theming and color mapping
|
|
751
|
+
*
|
|
752
|
+
* Wrapper around @ant-design/charts Pie component that uses theme tokens
|
|
753
|
+
* for automatic light/dark mode support and automatic color mapping.
|
|
754
|
+
*
|
|
755
|
+
* @example
|
|
756
|
+
* ```tsx
|
|
757
|
+
* // Automatic color mapping (recommended)
|
|
758
|
+
* <UIPieChart
|
|
759
|
+
* data={data}
|
|
760
|
+
* angleField="value"
|
|
761
|
+
* colorField="category"
|
|
762
|
+
* />
|
|
763
|
+
* ```
|
|
764
|
+
*
|
|
765
|
+
* @example Donut chart
|
|
766
|
+
* ```tsx
|
|
767
|
+
* <UIPieChart
|
|
768
|
+
* data={data}
|
|
769
|
+
* angleField="value"
|
|
770
|
+
* colorField="category"
|
|
771
|
+
* innerRadius={0.6}
|
|
772
|
+
* />
|
|
773
|
+
* ```
|
|
774
|
+
*/
|
|
775
|
+
declare function UIPieChart({ colors, disableAutoColors, ...props }: UIPieChartProps): react_jsx_runtime.JSX.Element;
|
|
776
|
+
|
|
777
|
+
interface UIBarChartProps extends Omit<BarConfig, 'theme'> {
|
|
778
|
+
/**
|
|
779
|
+
* Custom colors to override theme colors
|
|
780
|
+
* If not provided, automatic color palette will be used
|
|
781
|
+
*/
|
|
782
|
+
colors?: string[];
|
|
783
|
+
/**
|
|
784
|
+
* Disable automatic color mapping
|
|
785
|
+
* Set to true if you want to handle colors manually
|
|
786
|
+
*/
|
|
787
|
+
disableAutoColors?: boolean;
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* UIBarChart - Horizontal bar chart with automatic theming and color mapping
|
|
791
|
+
*
|
|
792
|
+
* Wrapper around @ant-design/charts Bar component that uses theme tokens
|
|
793
|
+
* for automatic light/dark mode support and automatic color mapping.
|
|
794
|
+
*
|
|
795
|
+
* @example
|
|
796
|
+
* ```tsx
|
|
797
|
+
* // Automatic color mapping (recommended)
|
|
798
|
+
* <UIBarChart
|
|
799
|
+
* data={data}
|
|
800
|
+
* xField="value"
|
|
801
|
+
* yField="category"
|
|
802
|
+
* seriesField="type"
|
|
803
|
+
* />
|
|
804
|
+
*
|
|
805
|
+
* // Custom colors
|
|
806
|
+
* <UIBarChart
|
|
807
|
+
* data={data}
|
|
808
|
+
* xField="value"
|
|
809
|
+
* yField="category"
|
|
810
|
+
* seriesField="type"
|
|
811
|
+
* colors={['#ff0000', '#00ff00']}
|
|
812
|
+
* />
|
|
813
|
+
* ```
|
|
814
|
+
*/
|
|
815
|
+
declare function UIBarChart({ colors, disableAutoColors, ...props }: UIBarChartProps): react_jsx_runtime.JSX.Element;
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* Configuration for chart metrics
|
|
819
|
+
*/
|
|
820
|
+
interface ChartMetricConfig {
|
|
821
|
+
/**
|
|
822
|
+
* Metric key from data object
|
|
823
|
+
* - For top-level fields: use the field name directly (e.g., 'count')
|
|
824
|
+
* - For nested fields: data will be extracted from record.metrics[key] if metrics object exists
|
|
825
|
+
*/
|
|
826
|
+
key: string;
|
|
827
|
+
/**
|
|
828
|
+
* Display label for the metric
|
|
829
|
+
*/
|
|
830
|
+
label: string;
|
|
831
|
+
/**
|
|
832
|
+
* Optional transformer function to convert raw value to display value
|
|
833
|
+
* Example: (v) => v / 1000 to convert tokens to K tokens
|
|
834
|
+
*/
|
|
835
|
+
transform?: (value: number) => number;
|
|
836
|
+
/**
|
|
837
|
+
* Optional formatter for tooltip
|
|
838
|
+
*/
|
|
839
|
+
format?: (value: number) => string;
|
|
840
|
+
}
|
|
841
|
+
interface UIStatisticsChartProps {
|
|
842
|
+
/**
|
|
843
|
+
* Chart data - can be either:
|
|
844
|
+
* 1. Pre-transformed: Array<{ [xField]: string, [yField]: number, [colorField]: string }>
|
|
845
|
+
* 2. Raw DailyStats: Array<{ date: string, count: number, metrics: { [key]: number } }>
|
|
846
|
+
*/
|
|
847
|
+
data: any[] | undefined;
|
|
848
|
+
/**
|
|
849
|
+
* Loading state
|
|
850
|
+
*/
|
|
851
|
+
loading?: boolean;
|
|
852
|
+
/**
|
|
853
|
+
* Chart title
|
|
854
|
+
*/
|
|
855
|
+
title?: string;
|
|
856
|
+
/**
|
|
857
|
+
* Metrics to display on the chart
|
|
858
|
+
* Each metric will be shown as a separate line
|
|
859
|
+
*
|
|
860
|
+
* Only used when data transformation is needed (raw DailyStats format)
|
|
861
|
+
*/
|
|
862
|
+
metrics?: ChartMetricConfig[];
|
|
863
|
+
/**
|
|
864
|
+
* X-axis field name (default: 'date')
|
|
865
|
+
*/
|
|
866
|
+
xField?: string;
|
|
867
|
+
/**
|
|
868
|
+
* Y-axis field name (default: 'value')
|
|
869
|
+
*/
|
|
870
|
+
yField?: string;
|
|
871
|
+
/**
|
|
872
|
+
* Color field name (default: 'category')
|
|
873
|
+
*/
|
|
874
|
+
colorField?: string;
|
|
875
|
+
/**
|
|
876
|
+
* Optional card style
|
|
877
|
+
*/
|
|
878
|
+
style?: React$1.CSSProperties;
|
|
879
|
+
/**
|
|
880
|
+
* Chart height in pixels
|
|
881
|
+
*/
|
|
882
|
+
height?: number;
|
|
883
|
+
/**
|
|
884
|
+
* Show legend (default: true)
|
|
885
|
+
*/
|
|
886
|
+
showLegend?: boolean;
|
|
887
|
+
/**
|
|
888
|
+
* Additional LineChart props
|
|
889
|
+
*/
|
|
890
|
+
chartProps?: Partial<LineConfig>;
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* UIStatisticsChart - Reusable statistics chart with legend and loading states
|
|
894
|
+
*
|
|
895
|
+
* Specialized chart component for displaying time-series statistics with automatic theming.
|
|
896
|
+
* Includes built-in legend, loading states, and empty states.
|
|
897
|
+
*
|
|
898
|
+
* Supports two data formats:
|
|
899
|
+
* 1. Pre-transformed chart data (simple array of objects with xField, yField, colorField)
|
|
900
|
+
* 2. Raw DailyStats format (automatically transforms using metrics config)
|
|
901
|
+
*
|
|
902
|
+
* @example Pre-transformed data
|
|
903
|
+
* ```tsx
|
|
904
|
+
* <UIStatisticsChart
|
|
905
|
+
* data={[
|
|
906
|
+
* { date: '2024-01-01', value: 100, category: 'Requests' },
|
|
907
|
+
* { date: '2024-01-01', value: 5000, category: 'Tokens' },
|
|
908
|
+
* ]}
|
|
909
|
+
* loading={isLoading}
|
|
910
|
+
* title="Daily Usage"
|
|
911
|
+
* />
|
|
912
|
+
* ```
|
|
913
|
+
*
|
|
914
|
+
* @example Raw DailyStats with transformation
|
|
915
|
+
* ```tsx
|
|
916
|
+
* <UIStatisticsChart
|
|
917
|
+
* data={dailyStats}
|
|
918
|
+
* loading={isLoading}
|
|
919
|
+
* title="Daily Usage Trend"
|
|
920
|
+
* metrics={[
|
|
921
|
+
* { key: 'count', label: 'Requests' },
|
|
922
|
+
* { key: 'totalTokens', label: 'Tokens (K)', transform: (v) => v / 1000 },
|
|
923
|
+
* { key: 'totalCost', label: 'Cost ($)', format: (v) => `$${v.toFixed(2)}` },
|
|
924
|
+
* ]}
|
|
925
|
+
* />
|
|
926
|
+
* ```
|
|
927
|
+
*/
|
|
928
|
+
declare function UIStatisticsChart({ data, loading, title, metrics, xField, yField, colorField, style, height, showLegend, chartProps, }: UIStatisticsChartProps): react_jsx_runtime.JSX.Element;
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* Chart color palette configuration
|
|
932
|
+
*
|
|
933
|
+
* Provides a consistent color palette for charts based on Ant Design tokens.
|
|
934
|
+
* Colors are optimized for data visualization with good contrast and accessibility.
|
|
935
|
+
*/
|
|
936
|
+
interface ChartColorPalette {
|
|
937
|
+
/** Primary colors for main data series (10 colors) */
|
|
938
|
+
colors: string[];
|
|
939
|
+
/** Extended palette for complex charts (20 colors) */
|
|
940
|
+
extendedColors: string[];
|
|
941
|
+
/** Get color by index with automatic wrapping */
|
|
942
|
+
getColor: (index: number) => string;
|
|
943
|
+
/** Map data series to colors by field value */
|
|
944
|
+
mapColors: (data: any[], colorField: string) => Record<string, string>;
|
|
945
|
+
}
|
|
946
|
+
/**
|
|
947
|
+
* Hook to get chart color palette based on current theme
|
|
948
|
+
*
|
|
949
|
+
* Returns a palette of 10 primary colors and 20 extended colors,
|
|
950
|
+
* plus helper functions for color mapping.
|
|
951
|
+
*
|
|
952
|
+
* @example
|
|
953
|
+
* ```tsx
|
|
954
|
+
* const palette = useChartColors();
|
|
955
|
+
*
|
|
956
|
+
* // Get color by index
|
|
957
|
+
* const color = palette.getColor(0); // First color
|
|
958
|
+
*
|
|
959
|
+
* // Map data to colors
|
|
960
|
+
* const colorMap = palette.mapColors(data, 'category');
|
|
961
|
+
* // { 'Category A': '#1890ff', 'Category B': '#52c41a', ... }
|
|
962
|
+
* ```
|
|
963
|
+
*/
|
|
964
|
+
declare function useChartColors(): ChartColorPalette;
|
|
965
|
+
/**
|
|
966
|
+
* Create style.fill function for @ant-design/charts
|
|
967
|
+
*
|
|
968
|
+
* @param colorMap - Map of field values to colors
|
|
969
|
+
* @param colorField - Name of the field to use for color mapping
|
|
970
|
+
*
|
|
971
|
+
* @example
|
|
972
|
+
* ```tsx
|
|
973
|
+
* const palette = useChartColors();
|
|
974
|
+
* const colorMap = palette.mapColors(data, 'type');
|
|
975
|
+
*
|
|
976
|
+
* const config = {
|
|
977
|
+
* colorField: 'type',
|
|
978
|
+
* style: {
|
|
979
|
+
* fill: createFillFunction(colorMap, 'type'),
|
|
980
|
+
* },
|
|
981
|
+
* };
|
|
982
|
+
* ```
|
|
983
|
+
*/
|
|
984
|
+
declare function createFillFunction(colorMap: Record<string, string>, colorField: string): (datum: any) => string;
|
|
985
|
+
|
|
986
|
+
interface UIStatisticProps extends StatisticProps {
|
|
987
|
+
}
|
|
988
|
+
declare function UIStatistic(props: UIStatisticProps): react_jsx_runtime.JSX.Element;
|
|
989
|
+
declare function UIStatisticCountdown(props: React$1.ComponentProps<typeof Statistic.Countdown>): react_jsx_runtime.JSX.Element;
|
|
990
|
+
|
|
991
|
+
interface UIProgressProps extends ProgressProps {
|
|
992
|
+
}
|
|
993
|
+
declare function UIProgress(props: UIProgressProps): react_jsx_runtime.JSX.Element;
|
|
994
|
+
|
|
995
|
+
interface UIDescriptionsProps extends DescriptionsProps {
|
|
996
|
+
}
|
|
997
|
+
declare function UIDescriptions(props: UIDescriptionsProps): react_jsx_runtime.JSX.Element;
|
|
998
|
+
declare function UIDescriptionsItem(props: React$1.ComponentProps<typeof Descriptions.Item>): react_jsx_runtime.JSX.Element;
|
|
999
|
+
|
|
1000
|
+
interface UITimelineProps extends TimelineProps {
|
|
1001
|
+
}
|
|
1002
|
+
declare function UITimeline(props: UITimelineProps): react_jsx_runtime.JSX.Element;
|
|
1003
|
+
declare function UITimelineItem(props: React$1.ComponentProps<typeof Timeline.Item>): react_jsx_runtime.JSX.Element;
|
|
1004
|
+
|
|
1005
|
+
interface UITreeProps extends TreeProps {
|
|
1006
|
+
}
|
|
1007
|
+
declare function UITree(props: UITreeProps): react_jsx_runtime.JSX.Element;
|
|
1008
|
+
declare function UITreeDirectoryTree(props: React$1.ComponentProps<typeof Tree.DirectoryTree>): react_jsx_runtime.JSX.Element;
|
|
1009
|
+
declare function UITreeNode(props: React$1.ComponentProps<typeof Tree.TreeNode>): react_jsx_runtime.JSX.Element;
|
|
1010
|
+
|
|
1011
|
+
interface UIListProps<T> extends ListProps<T> {
|
|
1012
|
+
}
|
|
1013
|
+
declare function UIList<T>(props: UIListProps<T>): react_jsx_runtime.JSX.Element;
|
|
1014
|
+
declare function UIListItem(props: React$1.ComponentProps<typeof List.Item>): react_jsx_runtime.JSX.Element;
|
|
1015
|
+
declare function UIListItemMeta(props: React$1.ComponentProps<typeof List.Item.Meta>): react_jsx_runtime.JSX.Element;
|
|
1016
|
+
|
|
1017
|
+
interface UIInputProps extends Omit<InputProps, 'onChange'> {
|
|
1018
|
+
/** Input value */
|
|
1019
|
+
value?: string;
|
|
1020
|
+
/** Default value */
|
|
1021
|
+
defaultValue?: string;
|
|
1022
|
+
/** Placeholder text */
|
|
1023
|
+
placeholder?: string;
|
|
1024
|
+
/** Disabled state */
|
|
1025
|
+
disabled?: boolean;
|
|
1026
|
+
/** Prefix icon/element */
|
|
1027
|
+
prefix?: React$1.ReactNode;
|
|
1028
|
+
/** Suffix icon/element */
|
|
1029
|
+
suffix?: React$1.ReactNode;
|
|
1030
|
+
/** Max length */
|
|
1031
|
+
maxLength?: number;
|
|
1032
|
+
/** Show character count */
|
|
1033
|
+
showCount?: boolean;
|
|
1034
|
+
/** Allow clear */
|
|
1035
|
+
allowClear?: boolean;
|
|
1036
|
+
/** Change handler (returns value string, not event) */
|
|
1037
|
+
onChange?: (value: string) => void;
|
|
1038
|
+
/** Enter key handler */
|
|
1039
|
+
onPressEnter?: () => void;
|
|
1040
|
+
}
|
|
1041
|
+
/**
|
|
1042
|
+
* UIInput - Text input
|
|
1043
|
+
*
|
|
1044
|
+
* @example
|
|
1045
|
+
* ```tsx
|
|
1046
|
+
* <UIInput placeholder="Enter name" />
|
|
1047
|
+
* <UIInput prefix={<SearchIcon />} placeholder="Search..." />
|
|
1048
|
+
* <UIInput allowClear showCount maxLength={100} />
|
|
1049
|
+
* ```
|
|
1050
|
+
*/
|
|
1051
|
+
declare function UIInput({ value, defaultValue, placeholder, disabled, prefix, suffix, maxLength, showCount, allowClear, onChange, onPressEnter, ...rest }: UIInputProps): react_jsx_runtime.JSX.Element;
|
|
1052
|
+
/**
|
|
1053
|
+
* UIInputPassword - Password input with toggle visibility
|
|
1054
|
+
*/
|
|
1055
|
+
declare function UIInputPassword(props: React$1.ComponentProps<typeof Input.Password>): react_jsx_runtime.JSX.Element;
|
|
1056
|
+
/**
|
|
1057
|
+
* UIInputTextArea - Multiline text input
|
|
1058
|
+
*/
|
|
1059
|
+
declare function UIInputTextArea(props: React$1.ComponentProps<typeof Input.TextArea>): react_jsx_runtime.JSX.Element;
|
|
1060
|
+
/**
|
|
1061
|
+
* UIInputSearch - Search input with search button
|
|
1062
|
+
*/
|
|
1063
|
+
declare function UIInputSearch(props: React$1.ComponentProps<typeof Input.Search>): react_jsx_runtime.JSX.Element;
|
|
1064
|
+
|
|
1065
|
+
interface UISelectOption {
|
|
1066
|
+
/** Option label */
|
|
1067
|
+
label: string;
|
|
1068
|
+
/** Option value */
|
|
1069
|
+
value: string | number;
|
|
1070
|
+
/** Optional icon */
|
|
1071
|
+
icon?: React$1.ReactNode;
|
|
1072
|
+
/** Disabled option */
|
|
1073
|
+
disabled?: boolean;
|
|
1074
|
+
/** Option description */
|
|
1075
|
+
description?: string;
|
|
1076
|
+
}
|
|
1077
|
+
interface UISelectProps extends Omit<SelectProps, 'options' | 'onChange'> {
|
|
1078
|
+
/** Select options */
|
|
1079
|
+
options: UISelectOption[];
|
|
1080
|
+
/** Selected value */
|
|
1081
|
+
value?: string | number | (string | number)[];
|
|
1082
|
+
/** Default value */
|
|
1083
|
+
defaultValue?: string | number | (string | number)[];
|
|
1084
|
+
/** Placeholder */
|
|
1085
|
+
placeholder?: string;
|
|
1086
|
+
/** Disabled state */
|
|
1087
|
+
disabled?: boolean;
|
|
1088
|
+
/** Loading state */
|
|
1089
|
+
loading?: boolean;
|
|
1090
|
+
/** Allow clear */
|
|
1091
|
+
allowClear?: boolean;
|
|
1092
|
+
/** Enable search */
|
|
1093
|
+
showSearch?: boolean;
|
|
1094
|
+
/** Multiple selection */
|
|
1095
|
+
mode?: 'multiple' | 'tags';
|
|
1096
|
+
/** Change handler (returns value, not event) */
|
|
1097
|
+
onChange?: (value: string | number | (string | number)[]) => void;
|
|
1098
|
+
}
|
|
1099
|
+
/**
|
|
1100
|
+
* UISelect - Dropdown select
|
|
1101
|
+
*
|
|
1102
|
+
* @example
|
|
1103
|
+
* ```tsx
|
|
1104
|
+
* <UISelect
|
|
1105
|
+
* options={[
|
|
1106
|
+
* { label: 'Option 1', value: 1 },
|
|
1107
|
+
* { label: 'Option 2', value: 2, icon: <Icon /> },
|
|
1108
|
+
* ]}
|
|
1109
|
+
* placeholder="Select option"
|
|
1110
|
+
* />
|
|
1111
|
+
*
|
|
1112
|
+
* <UISelect
|
|
1113
|
+
* mode="multiple"
|
|
1114
|
+
* options={options}
|
|
1115
|
+
* showSearch
|
|
1116
|
+
* allowClear
|
|
1117
|
+
* />
|
|
1118
|
+
* ```
|
|
1119
|
+
*/
|
|
1120
|
+
declare function UISelect({ options, value, defaultValue, placeholder, disabled, loading, allowClear, showSearch, mode, onChange, ...rest }: UISelectProps): react_jsx_runtime.JSX.Element;
|
|
1121
|
+
|
|
1122
|
+
type UIFormLayout = 'horizontal' | 'vertical' | 'inline';
|
|
1123
|
+
interface UIFormProps extends FormProps {
|
|
1124
|
+
/** Form layout */
|
|
1125
|
+
layout?: UIFormLayout;
|
|
1126
|
+
/** Submit handler */
|
|
1127
|
+
onFinish?: (values: any) => void;
|
|
1128
|
+
/** Failed submit handler */
|
|
1129
|
+
onFinishFailed?: (errorInfo: any) => void;
|
|
1130
|
+
/** Initial form values */
|
|
1131
|
+
initialValues?: Record<string, any>;
|
|
1132
|
+
/** Form content */
|
|
1133
|
+
children: React$1.ReactNode;
|
|
1134
|
+
}
|
|
1135
|
+
/**
|
|
1136
|
+
* UIForm - Form wrapper
|
|
1137
|
+
*
|
|
1138
|
+
* @example
|
|
1139
|
+
* ```tsx
|
|
1140
|
+
* <UIForm layout="vertical" onFinish={handleSubmit}>
|
|
1141
|
+
* <UIFormItem label="Username" name="username" rules={[{ required: true }]}>
|
|
1142
|
+
* <UIInput />
|
|
1143
|
+
* </UIFormItem>
|
|
1144
|
+
* <UIFormItem>
|
|
1145
|
+
* <UIButton variant="primary" htmlType="submit">Submit</UIButton>
|
|
1146
|
+
* </UIFormItem>
|
|
1147
|
+
* </UIForm>
|
|
1148
|
+
* ```
|
|
1149
|
+
*/
|
|
1150
|
+
declare function UIForm({ layout, onFinish, onFinishFailed, initialValues, children, ...rest }: UIFormProps): react_jsx_runtime.JSX.Element;
|
|
1151
|
+
/**
|
|
1152
|
+
* UIFormItem - Form field wrapper
|
|
1153
|
+
*
|
|
1154
|
+
* @example
|
|
1155
|
+
* ```tsx
|
|
1156
|
+
* <UIFormItem
|
|
1157
|
+
* label="Email"
|
|
1158
|
+
* name="email"
|
|
1159
|
+
* rules={[
|
|
1160
|
+
* { required: true, message: 'Please enter email' },
|
|
1161
|
+
* { type: 'email', message: 'Please enter valid email' }
|
|
1162
|
+
* ]}
|
|
1163
|
+
* >
|
|
1164
|
+
* <UIInput type="email" />
|
|
1165
|
+
* </UIFormItem>
|
|
1166
|
+
* ```
|
|
1167
|
+
*/
|
|
1168
|
+
declare function UIFormItem(props: FormItemProps): react_jsx_runtime.JSX.Element;
|
|
1169
|
+
/**
|
|
1170
|
+
* useForm hook - Form instance hook
|
|
1171
|
+
*/
|
|
1172
|
+
declare const useUIForm: typeof antd_es_form_Form.useForm;
|
|
1173
|
+
/**
|
|
1174
|
+
* UIFormList - Dynamic form list
|
|
1175
|
+
*/
|
|
1176
|
+
declare function UIFormList(props: React$1.ComponentProps<typeof Form.List>): react_jsx_runtime.JSX.Element;
|
|
1177
|
+
|
|
1178
|
+
interface UICheckboxOption {
|
|
1179
|
+
/** Option label */
|
|
1180
|
+
label: string;
|
|
1181
|
+
/** Option value */
|
|
1182
|
+
value: string | number;
|
|
1183
|
+
/** Disabled option */
|
|
1184
|
+
disabled?: boolean;
|
|
1185
|
+
/** Option description */
|
|
1186
|
+
description?: string;
|
|
1187
|
+
}
|
|
1188
|
+
interface UICheckboxProps {
|
|
1189
|
+
/** Checkbox label */
|
|
1190
|
+
children?: React$1.ReactNode;
|
|
1191
|
+
/** Checked state */
|
|
1192
|
+
checked?: boolean;
|
|
1193
|
+
/** Default checked state */
|
|
1194
|
+
defaultChecked?: boolean;
|
|
1195
|
+
/** Disabled state */
|
|
1196
|
+
disabled?: boolean;
|
|
1197
|
+
/** Indeterminate state */
|
|
1198
|
+
indeterminate?: boolean;
|
|
1199
|
+
/** Change handler (returns checked boolean) */
|
|
1200
|
+
onChange?: (checked: boolean) => void;
|
|
1201
|
+
}
|
|
1202
|
+
interface UICheckboxGroupProps {
|
|
1203
|
+
/** Checkbox options */
|
|
1204
|
+
options: UICheckboxOption[];
|
|
1205
|
+
/** Selected values */
|
|
1206
|
+
value?: (string | number)[];
|
|
1207
|
+
/** Default selected values */
|
|
1208
|
+
defaultValue?: (string | number)[];
|
|
1209
|
+
/** Disabled state */
|
|
1210
|
+
disabled?: boolean;
|
|
1211
|
+
/** Gap between checkboxes (spacing token) */
|
|
1212
|
+
gap?: UIBoxSpacingValue;
|
|
1213
|
+
/** Change handler (returns array of values) */
|
|
1214
|
+
onChange?: (values: (string | number)[]) => void;
|
|
1215
|
+
}
|
|
1216
|
+
/**
|
|
1217
|
+
* UICheckbox - Single checkbox
|
|
1218
|
+
*
|
|
1219
|
+
* @example
|
|
1220
|
+
* ```tsx
|
|
1221
|
+
* <UICheckbox checked onChange={(checked) => console.log(checked)}>
|
|
1222
|
+
* Accept terms
|
|
1223
|
+
* </UICheckbox>
|
|
1224
|
+
*
|
|
1225
|
+
* <UICheckbox indeterminate>Select all</UICheckbox>
|
|
1226
|
+
* ```
|
|
1227
|
+
*/
|
|
1228
|
+
declare function UICheckbox({ children, checked, defaultChecked, disabled, indeterminate, onChange, ...rest }: UICheckboxProps): react_jsx_runtime.JSX.Element;
|
|
1229
|
+
/**
|
|
1230
|
+
* UICheckboxGroup - Checkbox group
|
|
1231
|
+
*
|
|
1232
|
+
* @example
|
|
1233
|
+
* ```tsx
|
|
1234
|
+
* <UICheckboxGroup
|
|
1235
|
+
* options={[
|
|
1236
|
+
* { label: 'Option 1', value: 1 },
|
|
1237
|
+
* { label: 'Option 2', value: 2, description: 'With description' },
|
|
1238
|
+
* ]}
|
|
1239
|
+
* gap={3}
|
|
1240
|
+
* onChange={(values) => console.log(values)}
|
|
1241
|
+
* />
|
|
1242
|
+
* ```
|
|
1243
|
+
*/
|
|
1244
|
+
declare function UICheckboxGroup({ options, value, defaultValue, disabled, gap, onChange, }: UICheckboxGroupProps): react_jsx_runtime.JSX.Element;
|
|
1245
|
+
|
|
1246
|
+
type UISwitchSize = 'small' | 'default';
|
|
1247
|
+
type UISwitchLabelPosition = 'left' | 'right';
|
|
1248
|
+
interface UISwitchProps extends Omit<SwitchProps, 'onChange'> {
|
|
1249
|
+
/** Checked state */
|
|
1250
|
+
checked?: boolean;
|
|
1251
|
+
/** Default checked state */
|
|
1252
|
+
defaultChecked?: boolean;
|
|
1253
|
+
/** Disabled state */
|
|
1254
|
+
disabled?: boolean;
|
|
1255
|
+
/** Loading state */
|
|
1256
|
+
loading?: boolean;
|
|
1257
|
+
/** Switch size */
|
|
1258
|
+
size?: UISwitchSize;
|
|
1259
|
+
/** Label text */
|
|
1260
|
+
label?: string;
|
|
1261
|
+
/** Label position */
|
|
1262
|
+
labelPosition?: UISwitchLabelPosition;
|
|
1263
|
+
/** Checked children (text inside switch when on) */
|
|
1264
|
+
checkedChildren?: React$1.ReactNode;
|
|
1265
|
+
/** Unchecked children (text inside switch when off) */
|
|
1266
|
+
unCheckedChildren?: React$1.ReactNode;
|
|
1267
|
+
/** Change handler (returns checked boolean) */
|
|
1268
|
+
onChange?: (checked: boolean) => void;
|
|
1269
|
+
}
|
|
1270
|
+
/**
|
|
1271
|
+
* UISwitch - Toggle switch
|
|
1272
|
+
*
|
|
1273
|
+
* @example
|
|
1274
|
+
* ```tsx
|
|
1275
|
+
* <UISwitch label="Enable notifications" />
|
|
1276
|
+
* <UISwitch label="Dark mode" labelPosition="left" />
|
|
1277
|
+
* <UISwitch
|
|
1278
|
+
* checkedChildren="ON"
|
|
1279
|
+
* unCheckedChildren="OFF"
|
|
1280
|
+
* defaultChecked
|
|
1281
|
+
* />
|
|
1282
|
+
* ```
|
|
1283
|
+
*/
|
|
1284
|
+
declare function UISwitch({ checked, defaultChecked, disabled, loading, size, label, labelPosition, checkedChildren, unCheckedChildren, onChange, ...rest }: UISwitchProps): react_jsx_runtime.JSX.Element;
|
|
1285
|
+
|
|
1286
|
+
interface UIDatePickerProps extends Omit<DatePickerProps, 'onChange'> {
|
|
1287
|
+
/** Selected date */
|
|
1288
|
+
value?: Dayjs | null;
|
|
1289
|
+
/** Default date */
|
|
1290
|
+
defaultValue?: Dayjs;
|
|
1291
|
+
/** Placeholder */
|
|
1292
|
+
placeholder?: string;
|
|
1293
|
+
/** Disabled state */
|
|
1294
|
+
disabled?: boolean;
|
|
1295
|
+
/** Date format */
|
|
1296
|
+
format?: string;
|
|
1297
|
+
/** Allow clear */
|
|
1298
|
+
allowClear?: boolean;
|
|
1299
|
+
/** Show time picker */
|
|
1300
|
+
showTime?: boolean;
|
|
1301
|
+
/** Change handler (returns Dayjs or null) */
|
|
1302
|
+
onChange?: (date: Dayjs | null) => void;
|
|
1303
|
+
}
|
|
1304
|
+
interface UITimePickerProps extends Omit<TimePickerProps, 'onChange'> {
|
|
1305
|
+
/** Selected time */
|
|
1306
|
+
value?: Dayjs | null;
|
|
1307
|
+
/** Default time */
|
|
1308
|
+
defaultValue?: Dayjs;
|
|
1309
|
+
/** Placeholder */
|
|
1310
|
+
placeholder?: string;
|
|
1311
|
+
/** Disabled state */
|
|
1312
|
+
disabled?: boolean;
|
|
1313
|
+
/** Time format */
|
|
1314
|
+
format?: string;
|
|
1315
|
+
/** Allow clear */
|
|
1316
|
+
allowClear?: boolean;
|
|
1317
|
+
/** Change handler (returns Dayjs or null) */
|
|
1318
|
+
onChange?: (time: Dayjs | null) => void;
|
|
1319
|
+
}
|
|
1320
|
+
/**
|
|
1321
|
+
* UIDatePicker - Date picker
|
|
1322
|
+
*
|
|
1323
|
+
* @example
|
|
1324
|
+
* ```tsx
|
|
1325
|
+
* <UIDatePicker placeholder="Select date" />
|
|
1326
|
+
* <UIDatePicker showTime format="YYYY-MM-DD HH:mm:ss" />
|
|
1327
|
+
* <UIDatePicker
|
|
1328
|
+
* onChange={(date) => console.log(date?.format('YYYY-MM-DD'))}
|
|
1329
|
+
* />
|
|
1330
|
+
* ```
|
|
1331
|
+
*/
|
|
1332
|
+
declare function UIDatePicker({ value, defaultValue, placeholder, disabled, format, allowClear, showTime, onChange, ...rest }: UIDatePickerProps): react_jsx_runtime.JSX.Element;
|
|
1333
|
+
/**
|
|
1334
|
+
* UITimePicker - Time picker
|
|
1335
|
+
*
|
|
1336
|
+
* @example
|
|
1337
|
+
* ```tsx
|
|
1338
|
+
* <UITimePicker placeholder="Select time" />
|
|
1339
|
+
* <UITimePicker format="HH:mm" />
|
|
1340
|
+
* ```
|
|
1341
|
+
*/
|
|
1342
|
+
declare function UITimePicker({ value, defaultValue, placeholder, disabled, format, allowClear, onChange, ...rest }: UITimePickerProps): react_jsx_runtime.JSX.Element;
|
|
1343
|
+
/**
|
|
1344
|
+
* UIRangePicker - Date range picker
|
|
1345
|
+
*/
|
|
1346
|
+
declare function UIRangePicker(props: React$1.ComponentProps<typeof DatePicker.RangePicker>): react_jsx_runtime.JSX.Element;
|
|
1347
|
+
|
|
1348
|
+
interface UIInputNumberProps extends InputNumberProps {
|
|
1349
|
+
}
|
|
1350
|
+
declare function UIInputNumber(props: UIInputNumberProps): react_jsx_runtime.JSX.Element;
|
|
1351
|
+
|
|
1352
|
+
interface UIRadioProps extends RadioProps {
|
|
1353
|
+
}
|
|
1354
|
+
interface UIRadioGroupProps extends RadioGroupProps {
|
|
1355
|
+
}
|
|
1356
|
+
declare function UIRadio(props: UIRadioProps): react_jsx_runtime.JSX.Element;
|
|
1357
|
+
declare function UIRadioGroup(props: UIRadioGroupProps): react_jsx_runtime.JSX.Element;
|
|
1358
|
+
|
|
1359
|
+
interface UIUploadProps extends UploadProps {
|
|
1360
|
+
}
|
|
1361
|
+
declare function UIUpload(props: UIUploadProps): react_jsx_runtime.JSX.Element;
|
|
1362
|
+
declare function UIUploadDragger(props: React$1.ComponentProps<typeof Upload.Dragger>): react_jsx_runtime.JSX.Element;
|
|
1363
|
+
|
|
1364
|
+
interface UISliderProps extends SliderSingleProps {
|
|
1365
|
+
}
|
|
1366
|
+
declare function UISlider(props: UISliderProps): react_jsx_runtime.JSX.Element;
|
|
1367
|
+
|
|
1368
|
+
interface UIBreadcrumbItem {
|
|
1369
|
+
/** Breadcrumb text */
|
|
1370
|
+
title: string;
|
|
1371
|
+
/** Optional link href */
|
|
1372
|
+
href?: string;
|
|
1373
|
+
/** Optional icon */
|
|
1374
|
+
icon?: React$1.ReactNode;
|
|
1375
|
+
/** Click handler (if no href) */
|
|
1376
|
+
onClick?: () => void;
|
|
1377
|
+
}
|
|
1378
|
+
interface UIBreadcrumbProps {
|
|
1379
|
+
/** Breadcrumb items */
|
|
1380
|
+
items: UIBreadcrumbItem[];
|
|
1381
|
+
/** Custom separator */
|
|
1382
|
+
separator?: React$1.ReactNode;
|
|
1383
|
+
/** Additional CSS class */
|
|
1384
|
+
className?: string;
|
|
1385
|
+
}
|
|
1386
|
+
/**
|
|
1387
|
+
* UIBreadcrumb - Navigation breadcrumb
|
|
1388
|
+
*
|
|
1389
|
+
* @example
|
|
1390
|
+
* ```tsx
|
|
1391
|
+
* <UIBreadcrumb
|
|
1392
|
+
* items={[
|
|
1393
|
+
* { title: 'Home', href: '/' },
|
|
1394
|
+
* { title: 'Workflows', href: '/workflows' },
|
|
1395
|
+
* { title: 'Details' },
|
|
1396
|
+
* ]}
|
|
1397
|
+
* />
|
|
1398
|
+
*
|
|
1399
|
+
* <UIBreadcrumb
|
|
1400
|
+
* items={[
|
|
1401
|
+
* { title: 'Dashboard', icon: <HomeIcon /> },
|
|
1402
|
+
* { title: 'Settings', onClick: () => navigate('/settings') },
|
|
1403
|
+
* ]}
|
|
1404
|
+
* separator=">"
|
|
1405
|
+
* />
|
|
1406
|
+
* ```
|
|
1407
|
+
*/
|
|
1408
|
+
declare function UIBreadcrumb({ items, separator, className, }: UIBreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
1409
|
+
|
|
1410
|
+
interface UITabItem {
|
|
1411
|
+
/** Tab key */
|
|
1412
|
+
key: string;
|
|
1413
|
+
/** Tab label */
|
|
1414
|
+
label: string;
|
|
1415
|
+
/** Tab icon */
|
|
1416
|
+
icon?: React$1.ReactNode;
|
|
1417
|
+
/** Tab content */
|
|
1418
|
+
children: React$1.ReactNode;
|
|
1419
|
+
/** Disabled tab */
|
|
1420
|
+
disabled?: boolean;
|
|
1421
|
+
/** Closable tab */
|
|
1422
|
+
closable?: boolean;
|
|
1423
|
+
}
|
|
1424
|
+
interface UITabsProps {
|
|
1425
|
+
/** Tab items */
|
|
1426
|
+
items: UITabItem[];
|
|
1427
|
+
/**
|
|
1428
|
+
* Sync active tab with URL automatically.
|
|
1429
|
+
* - true / "search" — uses ?tab= query param, default tab = first item (clean URL)
|
|
1430
|
+
* - { mode: "path", basePath } — uses /:tab path segment (e.g. "/settings")
|
|
1431
|
+
*/
|
|
1432
|
+
syncUrl?: boolean | 'search' | {
|
|
1433
|
+
mode: 'path';
|
|
1434
|
+
basePath: string;
|
|
1435
|
+
};
|
|
1436
|
+
/** Controlled active tab key (ignored when syncUrl is set) */
|
|
1437
|
+
activeKey?: string;
|
|
1438
|
+
/** Default active tab key */
|
|
1439
|
+
defaultActiveKey?: string;
|
|
1440
|
+
/** Tab position */
|
|
1441
|
+
tabPosition?: 'top' | 'right' | 'bottom' | 'left';
|
|
1442
|
+
/** Tab type */
|
|
1443
|
+
type?: 'line' | 'card';
|
|
1444
|
+
/** Tab size */
|
|
1445
|
+
size?: 'small' | 'middle' | 'large';
|
|
1446
|
+
/** Change handler (called in addition to URL sync) */
|
|
1447
|
+
onChange?: (activeKey: string) => void;
|
|
1448
|
+
/** Tab edit handler (for closable tabs) */
|
|
1449
|
+
onEdit?: (targetKey: string, action: 'add' | 'remove') => void;
|
|
1450
|
+
/** Additional CSS class */
|
|
1451
|
+
className?: string;
|
|
1452
|
+
/** Additional styles */
|
|
1453
|
+
style?: React$1.CSSProperties;
|
|
1454
|
+
}
|
|
1455
|
+
declare function UITabs(props: UITabsProps): react_jsx_runtime.JSX.Element;
|
|
1456
|
+
|
|
1457
|
+
interface UIAccordionItem {
|
|
1458
|
+
/** Panel key */
|
|
1459
|
+
key: string;
|
|
1460
|
+
/** Panel header/title */
|
|
1461
|
+
label: string;
|
|
1462
|
+
/** Panel content */
|
|
1463
|
+
children: React$1.ReactNode;
|
|
1464
|
+
/** Extra content in header */
|
|
1465
|
+
extra?: React$1.ReactNode;
|
|
1466
|
+
/** Show arrow */
|
|
1467
|
+
showArrow?: boolean;
|
|
1468
|
+
/** Collapsible trigger */
|
|
1469
|
+
collapsible?: 'header' | 'icon' | 'disabled';
|
|
1470
|
+
}
|
|
1471
|
+
interface UIAccordionProps {
|
|
1472
|
+
/** Accordion items */
|
|
1473
|
+
items: UIAccordionItem[];
|
|
1474
|
+
/** Active panel keys */
|
|
1475
|
+
activeKey?: string | string[];
|
|
1476
|
+
/** Default active panel keys */
|
|
1477
|
+
defaultActiveKey?: string | string[];
|
|
1478
|
+
/** Accordion mode (allow multiple open) */
|
|
1479
|
+
accordion?: boolean;
|
|
1480
|
+
/** Bordered style */
|
|
1481
|
+
bordered?: boolean;
|
|
1482
|
+
/** Ghost style (no border, no background) */
|
|
1483
|
+
ghost?: boolean;
|
|
1484
|
+
/** Size */
|
|
1485
|
+
size?: 'small' | 'middle' | 'large';
|
|
1486
|
+
/** Change handler */
|
|
1487
|
+
onChange?: (keys: string | string[]) => void;
|
|
1488
|
+
/** Additional CSS class */
|
|
1489
|
+
className?: string;
|
|
1490
|
+
/** Additional styles */
|
|
1491
|
+
style?: React$1.CSSProperties;
|
|
1492
|
+
}
|
|
1493
|
+
/**
|
|
1494
|
+
* UIAccordion - Collapsible panels
|
|
1495
|
+
*
|
|
1496
|
+
* @example
|
|
1497
|
+
* ```tsx
|
|
1498
|
+
* <UIAccordion
|
|
1499
|
+
* items={[
|
|
1500
|
+
* {
|
|
1501
|
+
* key: '1',
|
|
1502
|
+
* label: 'Section 1',
|
|
1503
|
+
* children: <div>Content 1</div>,
|
|
1504
|
+
* },
|
|
1505
|
+
* {
|
|
1506
|
+
* key: '2',
|
|
1507
|
+
* label: 'Section 2',
|
|
1508
|
+
* children: <div>Content 2</div>,
|
|
1509
|
+
* },
|
|
1510
|
+
* ]}
|
|
1511
|
+
* defaultActiveKey={['1']}
|
|
1512
|
+
* />
|
|
1513
|
+
*
|
|
1514
|
+
* <UIAccordion
|
|
1515
|
+
* accordion
|
|
1516
|
+
* items={sections}
|
|
1517
|
+
* onChange={(key) => console.log('Active:', key)}
|
|
1518
|
+
* />
|
|
1519
|
+
*
|
|
1520
|
+
* <UIAccordion
|
|
1521
|
+
* ghost
|
|
1522
|
+
* items={[
|
|
1523
|
+
* {
|
|
1524
|
+
* key: 'advanced',
|
|
1525
|
+
* label: 'Advanced Options',
|
|
1526
|
+
* children: <AdvancedForm />,
|
|
1527
|
+
* extra: <UIBadge>New</UIBadge>,
|
|
1528
|
+
* },
|
|
1529
|
+
* ]}
|
|
1530
|
+
* />
|
|
1531
|
+
* ```
|
|
1532
|
+
*/
|
|
1533
|
+
declare function UIAccordion({ items, activeKey, defaultActiveKey, accordion, bordered, ghost, size, onChange, className, style, }: UIAccordionProps): react_jsx_runtime.JSX.Element;
|
|
1534
|
+
|
|
1535
|
+
interface UIDropdownProps extends DropdownProps {
|
|
1536
|
+
}
|
|
1537
|
+
declare function UIDropdown(props: UIDropdownProps): react_jsx_runtime.JSX.Element;
|
|
1538
|
+
declare function UIDropdownButton(props: React$1.ComponentProps<typeof Dropdown.Button>): react_jsx_runtime.JSX.Element;
|
|
1539
|
+
|
|
1540
|
+
interface UISegmentedProps extends SegmentedProps {
|
|
1541
|
+
}
|
|
1542
|
+
declare function UISegmented(props: UISegmentedProps): react_jsx_runtime.JSX.Element;
|
|
1543
|
+
|
|
1544
|
+
interface UIStepsProps extends StepsProps {
|
|
1545
|
+
}
|
|
1546
|
+
declare function UISteps(props: UIStepsProps): react_jsx_runtime.JSX.Element;
|
|
1547
|
+
|
|
1548
|
+
interface UIMenuProps extends MenuProps {
|
|
1549
|
+
}
|
|
1550
|
+
declare function UIMenu(props: UIMenuProps): react_jsx_runtime.JSX.Element;
|
|
1551
|
+
|
|
1552
|
+
type UIPageWidth = 'default' | 'wide' | 'full';
|
|
1553
|
+
interface UIPageProps {
|
|
1554
|
+
/** Page content */
|
|
1555
|
+
children: React$1.ReactNode;
|
|
1556
|
+
/** Max width mode */
|
|
1557
|
+
width?: UIPageWidth;
|
|
1558
|
+
/**
|
|
1559
|
+
* Page variant:
|
|
1560
|
+
* - 'default' — transparent background, cards float on grey (dashboard, lists)
|
|
1561
|
+
* - 'document' — white card wrapping all content (settings, detail pages)
|
|
1562
|
+
*/
|
|
1563
|
+
variant?: 'default' | 'document';
|
|
1564
|
+
/** Additional CSS class */
|
|
1565
|
+
className?: string;
|
|
1566
|
+
/** Additional styles */
|
|
1567
|
+
style?: React$1.CSSProperties;
|
|
1568
|
+
}
|
|
1569
|
+
/**
|
|
1570
|
+
* UIPage - Page container
|
|
1571
|
+
*
|
|
1572
|
+
* @example
|
|
1573
|
+
* ```tsx
|
|
1574
|
+
* <UIPage>
|
|
1575
|
+
* <UIHeader title="Dashboard" />
|
|
1576
|
+
* <div>Content here</div>
|
|
1577
|
+
* </UIPage>
|
|
1578
|
+
*
|
|
1579
|
+
* <UIPage width="wide">
|
|
1580
|
+
* <div>Wider content area</div>
|
|
1581
|
+
* </UIPage>
|
|
1582
|
+
*
|
|
1583
|
+
* <UIPage width="full">
|
|
1584
|
+
* <div>Full width, no max-width constraint</div>
|
|
1585
|
+
* </UIPage>
|
|
1586
|
+
* ```
|
|
1587
|
+
*/
|
|
1588
|
+
declare function UIPage({ children, width, variant, className, style: customStyle, }: UIPageProps): react_jsx_runtime.JSX.Element;
|
|
1589
|
+
|
|
1590
|
+
interface UIHeaderProps {
|
|
1591
|
+
/** Page title */
|
|
1592
|
+
title: string;
|
|
1593
|
+
/** Optional subtitle/description */
|
|
1594
|
+
subtitle?: string;
|
|
1595
|
+
/** Breadcrumb component */
|
|
1596
|
+
breadcrumb?: React$1.ReactNode;
|
|
1597
|
+
/** Action buttons (right side) */
|
|
1598
|
+
actions?: React$1.ReactNode;
|
|
1599
|
+
/** Additional CSS class */
|
|
1600
|
+
className?: string;
|
|
1601
|
+
/** Additional styles */
|
|
1602
|
+
style?: React$1.CSSProperties;
|
|
1603
|
+
}
|
|
1604
|
+
/**
|
|
1605
|
+
* UIHeader - Page header
|
|
1606
|
+
*
|
|
1607
|
+
* @example
|
|
1608
|
+
* ```tsx
|
|
1609
|
+
* <UIHeader
|
|
1610
|
+
* title="Dashboard"
|
|
1611
|
+
* subtitle="Overview of your workspace"
|
|
1612
|
+
* />
|
|
1613
|
+
*
|
|
1614
|
+
* <UIHeader
|
|
1615
|
+
* title="Workflows"
|
|
1616
|
+
* breadcrumb={<UIBreadcrumb items={[{ title: 'Home' }, { title: 'Workflows' }]} />}
|
|
1617
|
+
* actions={<UIButton variant="primary">Create Workflow</UIButton>}
|
|
1618
|
+
* />
|
|
1619
|
+
* ```
|
|
1620
|
+
*/
|
|
1621
|
+
declare function UIHeader({ title, subtitle, breadcrumb, actions, className, style: customStyle, }: UIHeaderProps): react_jsx_runtime.JSX.Element;
|
|
1622
|
+
|
|
1623
|
+
interface UIPageBreadcrumbItem {
|
|
1624
|
+
title: string;
|
|
1625
|
+
href?: string;
|
|
1626
|
+
}
|
|
1627
|
+
interface UIPageHeaderProps {
|
|
1628
|
+
/** Page title */
|
|
1629
|
+
title: string | React$1.ReactNode;
|
|
1630
|
+
/** Subtitle below title */
|
|
1631
|
+
description?: string | React$1.ReactNode;
|
|
1632
|
+
/** Icon displayed left of title */
|
|
1633
|
+
icon?: React$1.ReactNode;
|
|
1634
|
+
/** Breadcrumb trail above title */
|
|
1635
|
+
breadcrumbs?: UIPageBreadcrumbItem[];
|
|
1636
|
+
/** Actions slot — right side (buttons, menus, etc.) */
|
|
1637
|
+
actions?: React$1.ReactNode;
|
|
1638
|
+
/** Tabs slot — rendered below divider */
|
|
1639
|
+
tabs?: React$1.ReactNode;
|
|
1640
|
+
/** Back button handler — renders ← button */
|
|
1641
|
+
onBack?: () => void;
|
|
1642
|
+
/** Escape hatch for custom content below description */
|
|
1643
|
+
children?: React$1.ReactNode;
|
|
1644
|
+
}
|
|
1645
|
+
/**
|
|
1646
|
+
* UIPageHeader - Standard page header for Studio and plugins
|
|
1647
|
+
*
|
|
1648
|
+
* @example
|
|
1649
|
+
* ```tsx
|
|
1650
|
+
* <UIPageHeader
|
|
1651
|
+
* title="Release Manager"
|
|
1652
|
+
* description="Manage deployments and releases"
|
|
1653
|
+
* breadcrumbs={[{ title: 'Plugins' }, { title: 'Release Manager' }]}
|
|
1654
|
+
* actions={<UIButton variant="primary">Deploy</UIButton>}
|
|
1655
|
+
* onBack={() => navigate(-1)}
|
|
1656
|
+
* />
|
|
1657
|
+
*
|
|
1658
|
+
* <UIPageHeader
|
|
1659
|
+
* title="Settings"
|
|
1660
|
+
* tabs={<UITabs items={tabItems} />}
|
|
1661
|
+
* />
|
|
1662
|
+
* ```
|
|
1663
|
+
*/
|
|
1664
|
+
declare function UIPageHeader({ title, description, icon, breadcrumbs, actions, tabs, onBack, children, }: UIPageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
1665
|
+
|
|
1666
|
+
interface UIPageSectionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1667
|
+
children: React$1.ReactNode;
|
|
1668
|
+
/** Bottom margin in px, default 24 */
|
|
1669
|
+
gap?: number;
|
|
1670
|
+
}
|
|
1671
|
+
declare function UIPageSection({ children, gap, style, ...rest }: UIPageSectionProps): react_jsx_runtime.JSX.Element;
|
|
1672
|
+
|
|
1673
|
+
type UIAlertVariant = 'success' | 'info' | 'warning' | 'error';
|
|
1674
|
+
interface UIAlertProps {
|
|
1675
|
+
/** Alert variant */
|
|
1676
|
+
variant?: UIAlertVariant;
|
|
1677
|
+
/** Alert title */
|
|
1678
|
+
title?: string;
|
|
1679
|
+
/** Alert message */
|
|
1680
|
+
message: React$1.ReactNode;
|
|
1681
|
+
/** Alert description */
|
|
1682
|
+
description?: React$1.ReactNode;
|
|
1683
|
+
/** Show icon */
|
|
1684
|
+
showIcon?: boolean;
|
|
1685
|
+
/** Closable alert */
|
|
1686
|
+
closable?: boolean;
|
|
1687
|
+
/** Close handler */
|
|
1688
|
+
onClose?: () => void;
|
|
1689
|
+
/** Action button */
|
|
1690
|
+
action?: React$1.ReactNode;
|
|
1691
|
+
/** Custom icon */
|
|
1692
|
+
icon?: React$1.ReactNode;
|
|
1693
|
+
/** Additional CSS class */
|
|
1694
|
+
className?: string;
|
|
1695
|
+
/** Additional styles */
|
|
1696
|
+
style?: React$1.CSSProperties;
|
|
1697
|
+
}
|
|
1698
|
+
/**
|
|
1699
|
+
* UIAlert - Alert message
|
|
1700
|
+
*
|
|
1701
|
+
* @example
|
|
1702
|
+
* ```tsx
|
|
1703
|
+
* <UIAlert variant="success" message="Success message" />
|
|
1704
|
+
*
|
|
1705
|
+
* <UIAlert
|
|
1706
|
+
* variant="error"
|
|
1707
|
+
* title="Error"
|
|
1708
|
+
* message="Something went wrong"
|
|
1709
|
+
* description="Please try again later"
|
|
1710
|
+
* showIcon
|
|
1711
|
+
* closable
|
|
1712
|
+
* />
|
|
1713
|
+
*
|
|
1714
|
+
* <UIAlert
|
|
1715
|
+
* variant="warning"
|
|
1716
|
+
* message="Warning"
|
|
1717
|
+
* action={<UIButton size="small">Action</UIButton>}
|
|
1718
|
+
* />
|
|
1719
|
+
* ```
|
|
1720
|
+
*/
|
|
1721
|
+
declare function UIAlert({ variant, title, message, description, showIcon, closable, onClose, action, icon, className, style, }: UIAlertProps): react_jsx_runtime.JSX.Element;
|
|
1722
|
+
|
|
1723
|
+
interface UIEmptyStateProps {
|
|
1724
|
+
/** Empty state icon */
|
|
1725
|
+
icon?: React$1.ReactNode;
|
|
1726
|
+
/** Empty state title */
|
|
1727
|
+
title?: string;
|
|
1728
|
+
/** Empty state description */
|
|
1729
|
+
description?: string;
|
|
1730
|
+
/** Action button */
|
|
1731
|
+
action?: React$1.ReactNode;
|
|
1732
|
+
/** Children rendered below description/action (alias for action) */
|
|
1733
|
+
children?: React$1.ReactNode;
|
|
1734
|
+
/** Use default Ant Design empty image */
|
|
1735
|
+
useDefaultImage?: boolean;
|
|
1736
|
+
/** Additional CSS class */
|
|
1737
|
+
className?: string;
|
|
1738
|
+
/** Additional styles */
|
|
1739
|
+
style?: React$1.CSSProperties;
|
|
1740
|
+
/** Ant Design image prop (e.g. Empty.PRESENTED_IMAGE_SIMPLE) */
|
|
1741
|
+
image?: React$1.ReactNode;
|
|
1742
|
+
}
|
|
1743
|
+
/**
|
|
1744
|
+
* UIEmptyState - Empty state placeholder
|
|
1745
|
+
*
|
|
1746
|
+
* @example
|
|
1747
|
+
* ```tsx
|
|
1748
|
+
* <UIEmptyState
|
|
1749
|
+
* title="No workflows"
|
|
1750
|
+
* description="Get started by creating your first workflow"
|
|
1751
|
+
* action={<UIButton variant="primary">Create Workflow</UIButton>}
|
|
1752
|
+
* />
|
|
1753
|
+
*
|
|
1754
|
+
* <UIEmptyState
|
|
1755
|
+
* icon={<SearchIcon />}
|
|
1756
|
+
* title="No results found"
|
|
1757
|
+
* description="Try adjusting your search criteria"
|
|
1758
|
+
* />
|
|
1759
|
+
*
|
|
1760
|
+
* <UIEmptyState useDefaultImage />
|
|
1761
|
+
* ```
|
|
1762
|
+
*/
|
|
1763
|
+
declare function UIEmptyState({ icon, title, description, action, children, useDefaultImage, image, className, style: customStyle, }: UIEmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
1764
|
+
declare namespace UIEmptyState {
|
|
1765
|
+
var PRESENTED_IMAGE_SIMPLE: React$1.ReactNode;
|
|
1766
|
+
var PRESENTED_IMAGE_DEFAULT: React$1.ReactNode;
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
interface UIErrorStateProps {
|
|
1770
|
+
/** Error icon */
|
|
1771
|
+
icon?: React$1.ReactNode;
|
|
1772
|
+
/** Error title */
|
|
1773
|
+
title?: string;
|
|
1774
|
+
/** Error description */
|
|
1775
|
+
description?: string;
|
|
1776
|
+
/** Error details (technical message) */
|
|
1777
|
+
details?: string;
|
|
1778
|
+
/** Show retry button */
|
|
1779
|
+
showRetry?: boolean;
|
|
1780
|
+
/** Retry button text */
|
|
1781
|
+
retryText?: string;
|
|
1782
|
+
/** Retry handler */
|
|
1783
|
+
onRetry?: () => void;
|
|
1784
|
+
/** Custom action (instead of retry) */
|
|
1785
|
+
action?: React$1.ReactNode;
|
|
1786
|
+
/** Additional CSS class */
|
|
1787
|
+
className?: string;
|
|
1788
|
+
/** Additional styles */
|
|
1789
|
+
style?: React$1.CSSProperties;
|
|
1790
|
+
}
|
|
1791
|
+
/**
|
|
1792
|
+
* UIErrorState - Error state display
|
|
1793
|
+
*
|
|
1794
|
+
* @example
|
|
1795
|
+
* ```tsx
|
|
1796
|
+
* <UIErrorState
|
|
1797
|
+
* title="Failed to load data"
|
|
1798
|
+
* description="Something went wrong"
|
|
1799
|
+
* showRetry
|
|
1800
|
+
* onRetry={() => refetch()}
|
|
1801
|
+
* />
|
|
1802
|
+
*
|
|
1803
|
+
* <UIErrorState
|
|
1804
|
+
* icon={<ErrorIcon />}
|
|
1805
|
+
* title="Connection error"
|
|
1806
|
+
* description="Unable to connect to server"
|
|
1807
|
+
* details="Error: ECONNREFUSED 127.0.0.1:5000"
|
|
1808
|
+
* retryText="Reconnect"
|
|
1809
|
+
* onRetry={handleReconnect}
|
|
1810
|
+
* />
|
|
1811
|
+
*
|
|
1812
|
+
* <UIErrorState
|
|
1813
|
+
* title="Access denied"
|
|
1814
|
+
* description="You don't have permission to view this resource"
|
|
1815
|
+
* action={<UIButton>Go Back</UIButton>}
|
|
1816
|
+
* />
|
|
1817
|
+
* ```
|
|
1818
|
+
*/
|
|
1819
|
+
declare function UIErrorState({ icon, title, description, details, showRetry, retryText, onRetry, action, className, style: customStyle, }: UIErrorStateProps): react_jsx_runtime.JSX.Element;
|
|
1820
|
+
|
|
1821
|
+
interface UISkeletonProps {
|
|
1822
|
+
/** Show loading state */
|
|
1823
|
+
loading?: boolean;
|
|
1824
|
+
/** Content to show when not loading */
|
|
1825
|
+
children?: React$1.ReactNode;
|
|
1826
|
+
/** Show avatar */
|
|
1827
|
+
avatar?: boolean;
|
|
1828
|
+
/** Avatar shape */
|
|
1829
|
+
avatarShape?: 'circle' | 'square';
|
|
1830
|
+
/** Number of paragraph lines */
|
|
1831
|
+
lines?: number;
|
|
1832
|
+
/** Show title */
|
|
1833
|
+
title?: boolean;
|
|
1834
|
+
/** Active animation */
|
|
1835
|
+
active?: boolean;
|
|
1836
|
+
/** Additional CSS class */
|
|
1837
|
+
className?: string;
|
|
1838
|
+
/** Additional styles */
|
|
1839
|
+
style?: React$1.CSSProperties;
|
|
1840
|
+
}
|
|
1841
|
+
/**
|
|
1842
|
+
* UISkeleton - Loading skeleton
|
|
1843
|
+
*
|
|
1844
|
+
* @example
|
|
1845
|
+
* ```tsx
|
|
1846
|
+
* <UISkeleton loading={isLoading}>
|
|
1847
|
+
* <div>Content</div>
|
|
1848
|
+
* </UISkeleton>
|
|
1849
|
+
*
|
|
1850
|
+
* <UISkeleton avatar lines={3} active />
|
|
1851
|
+
*
|
|
1852
|
+
* <UISkeleton
|
|
1853
|
+
* loading={isLoading}
|
|
1854
|
+
* avatar
|
|
1855
|
+
* avatarShape="circle"
|
|
1856
|
+
* title
|
|
1857
|
+
* lines={2}
|
|
1858
|
+
* >
|
|
1859
|
+
* <ProfileCard />
|
|
1860
|
+
* </UISkeleton>
|
|
1861
|
+
* ```
|
|
1862
|
+
*/
|
|
1863
|
+
declare function UISkeleton({ loading, children, avatar, avatarShape, lines, title, active, className, style, }: UISkeletonProps): react_jsx_runtime.JSX.Element;
|
|
1864
|
+
/**
|
|
1865
|
+
* UISkeletonButton - Button skeleton
|
|
1866
|
+
*/
|
|
1867
|
+
declare function UISkeletonButton(props: React$1.ComponentProps<typeof Skeleton.Button>): react_jsx_runtime.JSX.Element;
|
|
1868
|
+
/**
|
|
1869
|
+
* UISkeletonInput - Input skeleton
|
|
1870
|
+
*/
|
|
1871
|
+
declare function UISkeletonInput(props: React$1.ComponentProps<typeof Skeleton.Input>): react_jsx_runtime.JSX.Element;
|
|
1872
|
+
/**
|
|
1873
|
+
* UISkeletonImage - Image skeleton
|
|
1874
|
+
*/
|
|
1875
|
+
declare function UISkeletonImage(props: React$1.ComponentProps<typeof Skeleton.Image>): react_jsx_runtime.JSX.Element;
|
|
1876
|
+
/**
|
|
1877
|
+
* UISkeletonNode - Custom node skeleton
|
|
1878
|
+
*/
|
|
1879
|
+
declare function UISkeletonNode(props: React$1.ComponentProps<typeof Skeleton.Node>): react_jsx_runtime.JSX.Element;
|
|
1880
|
+
interface UISkeletonTextProps {
|
|
1881
|
+
/**
|
|
1882
|
+
* Width of the text line(s). Can be a number (px), string ('100%', '8ch'), or
|
|
1883
|
+
* an array to render multiple lines with different widths.
|
|
1884
|
+
* @default '100%'
|
|
1885
|
+
*/
|
|
1886
|
+
width?: number | string | Array<number | string>;
|
|
1887
|
+
/**
|
|
1888
|
+
* Height / font-size of the shimmer block — matches the surrounding text size.
|
|
1889
|
+
* @default '1em'
|
|
1890
|
+
*/
|
|
1891
|
+
height?: number | string;
|
|
1892
|
+
/** Gap between lines when width is an array */
|
|
1893
|
+
gap?: number | string;
|
|
1894
|
+
/** Additional CSS class */
|
|
1895
|
+
className?: string;
|
|
1896
|
+
/** Additional styles applied to the wrapper */
|
|
1897
|
+
style?: React$1.CSSProperties;
|
|
1898
|
+
}
|
|
1899
|
+
/**
|
|
1900
|
+
* UISkeletonText - Inline text shimmer placeholder
|
|
1901
|
+
*
|
|
1902
|
+
* Renders a shimmer block that matches the height of surrounding text.
|
|
1903
|
+
* Uses Ant Design's native skeleton animation so it respects the theme.
|
|
1904
|
+
*
|
|
1905
|
+
* @example
|
|
1906
|
+
* // Single line, full width
|
|
1907
|
+
* <UISkeletonText />
|
|
1908
|
+
*
|
|
1909
|
+
* // Single line, fixed width
|
|
1910
|
+
* <UISkeletonText width={120} height="1em" />
|
|
1911
|
+
*
|
|
1912
|
+
* // Multiple lines with varying widths (like a paragraph)
|
|
1913
|
+
* <UISkeletonText width={['100%', '85%', '60%']} height="14px" gap={8} />
|
|
1914
|
+
*
|
|
1915
|
+
* // Match a specific font size
|
|
1916
|
+
* <UISkeletonText width="8ch" height="20px" />
|
|
1917
|
+
*/
|
|
1918
|
+
declare function UISkeletonText({ width, height, gap, className, style, }: UISkeletonTextProps): react_jsx_runtime.JSX.Element;
|
|
1919
|
+
|
|
1920
|
+
interface UISpinProps extends SpinProps {
|
|
1921
|
+
}
|
|
1922
|
+
declare function UISpin(props: UISpinProps): react_jsx_runtime.JSX.Element;
|
|
1923
|
+
|
|
1924
|
+
interface UIResultProps extends ResultProps {
|
|
1925
|
+
}
|
|
1926
|
+
declare function UIResult(props: UIResultProps): react_jsx_runtime.JSX.Element;
|
|
1927
|
+
|
|
1928
|
+
type MessageFunc = (content: React.ReactNode | MessageArgsProps, duration?: number, onClose?: () => void) => Promise<boolean>;
|
|
1929
|
+
interface UIMessageAPI {
|
|
1930
|
+
success: MessageFunc;
|
|
1931
|
+
error: MessageFunc;
|
|
1932
|
+
info: MessageFunc;
|
|
1933
|
+
warning: MessageFunc;
|
|
1934
|
+
loading: MessageFunc;
|
|
1935
|
+
open: (args: MessageArgsProps) => Promise<boolean>;
|
|
1936
|
+
destroy: (key?: React.Key) => void;
|
|
1937
|
+
}
|
|
1938
|
+
declare const UIMessage: UIMessageAPI;
|
|
1939
|
+
declare function useUIMessage(): readonly [antd_es_message_interface.MessageInstance, React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>];
|
|
1940
|
+
|
|
1941
|
+
/**
|
|
1942
|
+
* UINotification - Imperative notification API
|
|
1943
|
+
*
|
|
1944
|
+
* Wraps antd's notification API to decouple app from antd internals.
|
|
1945
|
+
*
|
|
1946
|
+
* @example
|
|
1947
|
+
* ```tsx
|
|
1948
|
+
* import { UINotification } from '@kb-labs/studio-ui-kit';
|
|
1949
|
+
*
|
|
1950
|
+
* UINotification.success({ message: 'Done', description: 'Task completed.' });
|
|
1951
|
+
* ```
|
|
1952
|
+
*/
|
|
1953
|
+
interface UINotificationArgs {
|
|
1954
|
+
message: React.ReactNode;
|
|
1955
|
+
description?: React.ReactNode;
|
|
1956
|
+
key?: React.Key;
|
|
1957
|
+
duration?: number | null;
|
|
1958
|
+
placement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';
|
|
1959
|
+
icon?: React.ReactNode;
|
|
1960
|
+
btn?: React.ReactNode;
|
|
1961
|
+
className?: string;
|
|
1962
|
+
style?: React.CSSProperties;
|
|
1963
|
+
onClick?: () => void;
|
|
1964
|
+
onClose?: () => void;
|
|
1965
|
+
}
|
|
1966
|
+
type NotifyFunc = (args: UINotificationArgs) => void;
|
|
1967
|
+
interface UINotificationAPI {
|
|
1968
|
+
success: NotifyFunc;
|
|
1969
|
+
error: NotifyFunc;
|
|
1970
|
+
info: NotifyFunc;
|
|
1971
|
+
warning: NotifyFunc;
|
|
1972
|
+
open: NotifyFunc;
|
|
1973
|
+
destroy: (key?: React.Key) => void;
|
|
1974
|
+
}
|
|
1975
|
+
declare const UINotification: UINotificationAPI;
|
|
1976
|
+
declare function useUINotification(): readonly [antd_es_notification_interface.NotificationInstance, React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>];
|
|
1977
|
+
|
|
1978
|
+
type UIModalWidth = 'small' | 'default' | 'large' | 'full';
|
|
1979
|
+
interface UIModalProps {
|
|
1980
|
+
/** Modal open state */
|
|
1981
|
+
open: boolean;
|
|
1982
|
+
/** Modal title */
|
|
1983
|
+
title?: React$1.ReactNode;
|
|
1984
|
+
/** Modal content */
|
|
1985
|
+
children: React$1.ReactNode;
|
|
1986
|
+
/** Modal width preset */
|
|
1987
|
+
width?: UIModalWidth | number;
|
|
1988
|
+
/** Show close button */
|
|
1989
|
+
closable?: boolean;
|
|
1990
|
+
/** Mask closable (click outside to close) */
|
|
1991
|
+
maskClosable?: boolean;
|
|
1992
|
+
/** Show footer */
|
|
1993
|
+
footer?: React$1.ReactNode | null;
|
|
1994
|
+
/** OK button text */
|
|
1995
|
+
okText?: string;
|
|
1996
|
+
/** Cancel button text */
|
|
1997
|
+
cancelText?: string;
|
|
1998
|
+
/** OK button loading */
|
|
1999
|
+
confirmLoading?: boolean;
|
|
2000
|
+
/** OK button handler */
|
|
2001
|
+
onOk?: () => void;
|
|
2002
|
+
/** Cancel button handler */
|
|
2003
|
+
onCancel?: () => void;
|
|
2004
|
+
/** Close handler */
|
|
2005
|
+
onClose?: () => void;
|
|
2006
|
+
/** Additional CSS class */
|
|
2007
|
+
className?: string;
|
|
2008
|
+
/** Additional styles */
|
|
2009
|
+
style?: React$1.CSSProperties;
|
|
2010
|
+
}
|
|
2011
|
+
/**
|
|
2012
|
+
* UIModal - Modal dialog
|
|
2013
|
+
*
|
|
2014
|
+
* @example
|
|
2015
|
+
* ```tsx
|
|
2016
|
+
* <UIModal
|
|
2017
|
+
* open={isOpen}
|
|
2018
|
+
* title="Confirm Action"
|
|
2019
|
+
* onOk={handleOk}
|
|
2020
|
+
* onCancel={handleCancel}
|
|
2021
|
+
* >
|
|
2022
|
+
* Are you sure you want to proceed?
|
|
2023
|
+
* </UIModal>
|
|
2024
|
+
*
|
|
2025
|
+
* <UIModal
|
|
2026
|
+
* open={isOpen}
|
|
2027
|
+
* title="Create Workflow"
|
|
2028
|
+
* width="large"
|
|
2029
|
+
* confirmLoading={isSubmitting}
|
|
2030
|
+
* onOk={handleSubmit}
|
|
2031
|
+
* onCancel={() => setIsOpen(false)}
|
|
2032
|
+
* >
|
|
2033
|
+
* <WorkflowForm />
|
|
2034
|
+
* </UIModal>
|
|
2035
|
+
*
|
|
2036
|
+
* <UIModal
|
|
2037
|
+
* open={isOpen}
|
|
2038
|
+
* title="Details"
|
|
2039
|
+
* footer={null}
|
|
2040
|
+
* onCancel={() => setIsOpen(false)}
|
|
2041
|
+
* >
|
|
2042
|
+
* <DetailsView />
|
|
2043
|
+
* </UIModal>
|
|
2044
|
+
* ```
|
|
2045
|
+
*/
|
|
2046
|
+
declare function UIModal({ open, title, children, width, closable, maskClosable, footer, okText, cancelText, confirmLoading, onOk, onCancel, onClose, className, style, }: UIModalProps): react_jsx_runtime.JSX.Element;
|
|
2047
|
+
/**
|
|
2048
|
+
* UIModalConfirm - Confirmation modal shorthand
|
|
2049
|
+
*/
|
|
2050
|
+
declare const UIModalConfirm: antd_es_modal_confirm.ModalFunc;
|
|
2051
|
+
/**
|
|
2052
|
+
* UIModalInfo - Info modal shorthand
|
|
2053
|
+
*/
|
|
2054
|
+
declare const UIModalInfo: antd_es_modal_confirm.ModalFunc;
|
|
2055
|
+
/**
|
|
2056
|
+
* UIModalSuccess - Success modal shorthand
|
|
2057
|
+
*/
|
|
2058
|
+
declare const UIModalSuccess: antd_es_modal_confirm.ModalFunc;
|
|
2059
|
+
/**
|
|
2060
|
+
* UIModalError - Error modal shorthand
|
|
2061
|
+
*/
|
|
2062
|
+
declare const UIModalError: antd_es_modal_confirm.ModalFunc;
|
|
2063
|
+
/**
|
|
2064
|
+
* UIModalWarning - Warning modal shorthand
|
|
2065
|
+
*/
|
|
2066
|
+
declare const UIModalWarning: antd_es_modal_confirm.ModalFunc;
|
|
2067
|
+
|
|
2068
|
+
type UITooltipPlacement = 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom';
|
|
2069
|
+
interface UITooltipProps {
|
|
2070
|
+
/** Tooltip content */
|
|
2071
|
+
title: React$1.ReactNode;
|
|
2072
|
+
/** Element to attach tooltip to */
|
|
2073
|
+
children: React$1.ReactNode;
|
|
2074
|
+
/** Tooltip placement */
|
|
2075
|
+
placement?: UITooltipPlacement;
|
|
2076
|
+
/** Show arrow */
|
|
2077
|
+
arrow?: boolean;
|
|
2078
|
+
/** Trigger mode */
|
|
2079
|
+
trigger?: 'hover' | 'focus' | 'click';
|
|
2080
|
+
/** Show/hide controlled */
|
|
2081
|
+
open?: boolean;
|
|
2082
|
+
/** Additional CSS class */
|
|
2083
|
+
className?: string;
|
|
2084
|
+
}
|
|
2085
|
+
/**
|
|
2086
|
+
* UITooltip - Tooltip overlay
|
|
2087
|
+
*
|
|
2088
|
+
* @example
|
|
2089
|
+
* ```tsx
|
|
2090
|
+
* <UITooltip title="Click to save">
|
|
2091
|
+
* <UIButton>Save</UIButton>
|
|
2092
|
+
* </UITooltip>
|
|
2093
|
+
*
|
|
2094
|
+
* <UITooltip title="Additional information" placement="right">
|
|
2095
|
+
* <InfoIcon />
|
|
2096
|
+
* </UITooltip>
|
|
2097
|
+
*
|
|
2098
|
+
* <UITooltip title="Detailed help text" trigger="click">
|
|
2099
|
+
* <HelpIcon />
|
|
2100
|
+
* </UITooltip>
|
|
2101
|
+
* ```
|
|
2102
|
+
*/
|
|
2103
|
+
declare function UITooltip({ title, children, placement, arrow, trigger, open, className, }: UITooltipProps): react_jsx_runtime.JSX.Element;
|
|
2104
|
+
|
|
2105
|
+
interface UIDrawerProps extends DrawerProps {
|
|
2106
|
+
}
|
|
2107
|
+
declare function UIDrawer(props: UIDrawerProps): react_jsx_runtime.JSX.Element;
|
|
2108
|
+
|
|
2109
|
+
interface UIPopconfirmProps extends PopconfirmProps {
|
|
2110
|
+
}
|
|
2111
|
+
declare function UIPopconfirm(props: UIPopconfirmProps): react_jsx_runtime.JSX.Element;
|
|
2112
|
+
|
|
2113
|
+
interface UIPopoverProps extends PopoverProps {
|
|
2114
|
+
}
|
|
2115
|
+
declare function UIPopover(props: UIPopoverProps): react_jsx_runtime.JSX.Element;
|
|
2116
|
+
|
|
2117
|
+
interface UIMarkdownViewerProps {
|
|
2118
|
+
/** Markdown content */
|
|
2119
|
+
content: string;
|
|
2120
|
+
/** Additional CSS class */
|
|
2121
|
+
className?: string;
|
|
2122
|
+
/** Additional styles */
|
|
2123
|
+
style?: React$1.CSSProperties;
|
|
2124
|
+
}
|
|
2125
|
+
/**
|
|
2126
|
+
* UIMarkdownViewer - Markdown content viewer
|
|
2127
|
+
*
|
|
2128
|
+
* Note: This is a basic implementation. For production use, consider:
|
|
2129
|
+
* - react-markdown for full markdown parsing
|
|
2130
|
+
* - rehype-highlight for syntax highlighting
|
|
2131
|
+
* - rehype-sanitize for XSS protection
|
|
2132
|
+
*
|
|
2133
|
+
* @example
|
|
2134
|
+
* ```tsx
|
|
2135
|
+
* <UIMarkdownViewer content={markdownText} />
|
|
2136
|
+
*
|
|
2137
|
+
* <UIMarkdownViewer
|
|
2138
|
+
* content="# Hello World\n\nThis is **bold** text"
|
|
2139
|
+
* />
|
|
2140
|
+
* ```
|
|
2141
|
+
*/
|
|
2142
|
+
declare function UIMarkdownViewer({ content, className, style: customStyle, }: UIMarkdownViewerProps): react_jsx_runtime.JSX.Element;
|
|
2143
|
+
|
|
2144
|
+
interface UIJsonViewerProps {
|
|
2145
|
+
/** JSON data to display */
|
|
2146
|
+
data: any;
|
|
2147
|
+
/** Collapsed by default */
|
|
2148
|
+
collapsed?: boolean;
|
|
2149
|
+
/** Indentation size */
|
|
2150
|
+
indent?: number;
|
|
2151
|
+
/** Show line numbers */
|
|
2152
|
+
showLineNumbers?: boolean;
|
|
2153
|
+
/** Additional CSS class */
|
|
2154
|
+
className?: string;
|
|
2155
|
+
/** Additional styles */
|
|
2156
|
+
style?: React$1.CSSProperties;
|
|
2157
|
+
}
|
|
2158
|
+
/**
|
|
2159
|
+
* UIJsonViewer - JSON content viewer
|
|
2160
|
+
*
|
|
2161
|
+
* Note: This is a basic implementation. For production use, consider:
|
|
2162
|
+
* - react-json-view for interactive JSON viewer
|
|
2163
|
+
* - @uiw/react-json-view for modern alternative
|
|
2164
|
+
*
|
|
2165
|
+
* @example
|
|
2166
|
+
* ```tsx
|
|
2167
|
+
* <UIJsonViewer data={jsonData} />
|
|
2168
|
+
*
|
|
2169
|
+
* <UIJsonViewer
|
|
2170
|
+
* data={{ name: "John", age: 30, active: true }}
|
|
2171
|
+
* collapsed={false}
|
|
2172
|
+
* showLineNumbers
|
|
2173
|
+
* />
|
|
2174
|
+
*
|
|
2175
|
+
* <UIJsonViewer
|
|
2176
|
+
* data={apiResponse}
|
|
2177
|
+
* indent={4}
|
|
2178
|
+
* />
|
|
2179
|
+
* ```
|
|
2180
|
+
*/
|
|
2181
|
+
declare function UIJsonViewer({ data, collapsed: _collapsed, indent, showLineNumbers, className, style: customStyle, }: UIJsonViewerProps): react_jsx_runtime.JSX.Element;
|
|
2182
|
+
|
|
2183
|
+
/**
|
|
2184
|
+
* UIDiffViewer — renders unified git diff with line highlighting.
|
|
2185
|
+
* Uses design tokens for theming (light/dark compatible).
|
|
2186
|
+
*/
|
|
2187
|
+
interface UIDiffViewerProps {
|
|
2188
|
+
/** Raw diff string (git diff output) */
|
|
2189
|
+
diff: string;
|
|
2190
|
+
/** Show line numbers (default: true) */
|
|
2191
|
+
showLineNumbers?: boolean;
|
|
2192
|
+
/** Max height in pixels (default: 500) */
|
|
2193
|
+
maxHeight?: number;
|
|
2194
|
+
/** Custom className */
|
|
2195
|
+
className?: string;
|
|
2196
|
+
/** Custom style */
|
|
2197
|
+
style?: React.CSSProperties;
|
|
2198
|
+
}
|
|
2199
|
+
declare function UIDiffViewer({ diff, showLineNumbers, maxHeight, className, style, }: UIDiffViewerProps): react_jsx_runtime.JSX.Element;
|
|
2200
|
+
|
|
2201
|
+
/**
|
|
2202
|
+
* Data contracts for UIKit components.
|
|
2203
|
+
*
|
|
2204
|
+
* These types define the expected data shapes for REST API responses
|
|
2205
|
+
* that feed UIKit components (UITable, UISelect, etc.).
|
|
2206
|
+
* Used by both REST handlers (producing data) and Studio UI (consuming data).
|
|
2207
|
+
*/
|
|
2208
|
+
interface TableRow {
|
|
2209
|
+
[key: string]: unknown;
|
|
2210
|
+
}
|
|
2211
|
+
interface TableData<T extends TableRow = TableRow> {
|
|
2212
|
+
rows: T[];
|
|
2213
|
+
total?: number;
|
|
2214
|
+
}
|
|
2215
|
+
interface SelectOptionItem {
|
|
2216
|
+
label: string;
|
|
2217
|
+
value: string;
|
|
2218
|
+
description?: string;
|
|
2219
|
+
icon?: string;
|
|
2220
|
+
disabled?: boolean;
|
|
2221
|
+
}
|
|
2222
|
+
interface SelectData {
|
|
2223
|
+
options: SelectOptionItem[];
|
|
2224
|
+
/** Currently selected value */
|
|
2225
|
+
value?: string;
|
|
2226
|
+
/** Error message if loading failed */
|
|
2227
|
+
error?: string;
|
|
2228
|
+
}
|
|
2229
|
+
interface MetricData {
|
|
2230
|
+
label: string;
|
|
2231
|
+
value: string | number;
|
|
2232
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
2233
|
+
delta?: string | number;
|
|
2234
|
+
unit?: string;
|
|
2235
|
+
}
|
|
2236
|
+
interface ListItem {
|
|
2237
|
+
id: string;
|
|
2238
|
+
title: string;
|
|
2239
|
+
description?: string;
|
|
2240
|
+
icon?: string;
|
|
2241
|
+
status?: string;
|
|
2242
|
+
metadata?: Record<string, unknown>;
|
|
2243
|
+
}
|
|
2244
|
+
interface ListData {
|
|
2245
|
+
items: ListItem[];
|
|
2246
|
+
total?: number;
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
export { type ChartColorPalette, type ChartMetricConfig, type ListData, type ListItem, type MetricData, type SelectData, type SelectOptionItem, type TableData, type TableRow, UIAccordion, type UIAccordionItem, type UIAccordionProps, UIAlert, type UIAlertProps, type UIAlertVariant, UIAreaChart, type UIAreaChartProps, UIAvatar, UIAvatarGroup, type UIAvatarProps, UIBadge, type UIBadgeProps, type UIBadgeVariant, UIBarChart, type UIBarChartProps, UIBox, type UIBoxProps, type UIBoxSpacingValue, UIBreadcrumb, type UIBreadcrumbItem, type UIBreadcrumbProps, UIButton, type UIButtonProps, type UIButtonVariant, UICard, type UICardProps, type UICardVariant, UICheckbox, UICheckboxGroup, type UICheckboxGroupProps, type UICheckboxOption, type UICheckboxProps, UICol, type UIColProps, UIColumnChart, type UIColumnChartProps, UIDatePicker, type UIDatePickerProps, UIDescriptions, UIDescriptionsItem, type UIDescriptionsProps, UIDiffViewer, type UIDiffViewerProps, UIDivider, type UIDividerProps, UIDrawer, type UIDrawerProps, UIDropdown, UIDropdownButton, type UIDropdownProps, UIEmptyState, type UIEmptyStateProps, UIErrorState, type UIErrorStateProps, UIFlex, type UIFlexProps, type UIFlexSpacingValue, UIForm, UIFormItem, type UIFormLayout, UIFormList, type UIFormProps, UIHeader, type UIHeaderProps, UIIcon, UIIconButton, type UIIconColor, type UIIconProps, type UIIconSize, UIInput, UIInputNumber, type UIInputNumberProps, UIInputPassword, type UIInputProps, UIInputSearch, UIInputTextArea, UIJsonViewer, type UIJsonViewerProps, UILineChart, type UILineChartProps, UIList, UIListItem, UIListItemMeta, type UIListProps, UIMarkdownViewer, type UIMarkdownViewerProps, UIMenu, type UIMenuProps, UIMessage, type UIMessageAPI, UIMetricCard, type UIMetricCardProps, UIModal, UIModalConfirm, UIModalError, UIModalInfo, type UIModalProps, UIModalSuccess, UIModalWarning, type UIModalWidth, UINotification, type UINotificationAPI, type UINotificationArgs, UIPage, type UIPageBreadcrumbItem, UIPageHeader, type UIPageHeaderProps, type UIPageProps, UIPageSection, type UIPageSectionProps, type UIPageWidth, UIPieChart, type UIPieChartProps, UIPopconfirm, type UIPopconfirmProps, UIPopover, type UIPopoverProps, UIProgress, type UIProgressProps, UIRadio, UIRadioGroup, type UIRadioGroupProps, type UIRadioProps, UIRangePicker, UIResult, type UIResultProps, UIRow, type UIRowProps, UISegmented, type UISegmentedProps, UISelect, type UISelectOption, type UISelectProps, UIShimmerText, type UIShimmerTextProps, UISkeleton, UISkeletonButton, UISkeletonImage, UISkeletonInput, UISkeletonNode, type UISkeletonProps, UISkeletonText, type UISkeletonTextProps, UISlider, type UISliderProps, UISpace, UISpaceCompact, type UISpaceProps, UISpin, type UISpinProps, UIStack, type UIStackAlign, type UIStackDirection, type UIStackProps, type UIStackSpacing, UIStatistic, UIStatisticCountdown, type UIStatisticProps, UIStatisticsChart, type UIStatisticsChartProps, UISteps, type UIStepsProps, UISwitch, type UISwitchLabelPosition, type UISwitchProps, type UISwitchSize, type UITabItem, UITable, type UITableColumn, type UITableProps, UITabs, type UITabsProps, UITag, type UITagProps, type UITagVariant, UIText, type UITextColor, type UITextProps, type UITextSize, type UITextWeight, type UIThemeResult, UITimePicker, type UITimePickerProps, UITimeline, UITimelineItem, type UITimelineProps, UITitle, type UITitleLevel, type UITitleProps, UITooltip, type UITooltipPlacement, type UITooltipProps, UITree, UITreeDirectoryTree, UITreeNode, type UITreeProps, UITypographyLink, type UITypographyLinkProps, UITypographyParagraph, type UITypographyParagraphProps, UITypographyText, type UITypographyTextProps, UIUpload, UIUploadDragger, type UIUploadProps, createFillFunction, registerIconRenderer, useChartColors, useUIForm, useUIMessage, useUINotification, useUITheme };
|