@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.
@@ -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 };