aha-components 1.2.2 → 1.3.2

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.
Files changed (102) hide show
  1. package/dist/Button.esm.js +1 -1
  2. package/dist/Button.esm.js.map +1 -1
  3. package/dist/Button.js +1 -1
  4. package/dist/Button.js.map +1 -1
  5. package/dist/Checkbox.esm.js +2 -0
  6. package/dist/Checkbox.esm.js.map +1 -0
  7. package/dist/Checkbox.js +2 -0
  8. package/dist/Checkbox.js.map +1 -0
  9. package/dist/Form.esm.js +2 -0
  10. package/dist/Form.esm.js.map +1 -0
  11. package/dist/Form.js +2 -0
  12. package/dist/Form.js.map +1 -0
  13. package/dist/Input.esm.js +1 -1
  14. package/dist/Input.esm.js.map +1 -1
  15. package/dist/Input.js +1 -1
  16. package/dist/Input.js.map +1 -1
  17. package/dist/MenuList.esm.js +2 -0
  18. package/dist/MenuList.esm.js.map +1 -0
  19. package/dist/MenuList.js +2 -0
  20. package/dist/MenuList.js.map +1 -0
  21. package/dist/Pagination.esm.js +2 -0
  22. package/dist/Pagination.esm.js.map +1 -0
  23. package/dist/Pagination.js +2 -0
  24. package/dist/Pagination.js.map +1 -0
  25. package/dist/Progress.esm.js +2 -0
  26. package/dist/Progress.esm.js.map +1 -0
  27. package/dist/Progress.js +2 -0
  28. package/dist/Progress.js.map +1 -0
  29. package/dist/Radio.esm.js +2 -0
  30. package/dist/Radio.esm.js.map +1 -0
  31. package/dist/Radio.js +2 -0
  32. package/dist/Radio.js.map +1 -0
  33. package/dist/Select.esm.js +2 -0
  34. package/dist/Select.esm.js.map +1 -0
  35. package/dist/Select.js +2 -0
  36. package/dist/Select.js.map +1 -0
  37. package/dist/Switch.esm.js +2 -0
  38. package/dist/Switch.esm.js.map +1 -0
  39. package/dist/Switch.js +2 -0
  40. package/dist/Switch.js.map +1 -0
  41. package/dist/Tab.esm.js +2 -0
  42. package/dist/Tab.esm.js.map +1 -0
  43. package/dist/Tab.js +2 -0
  44. package/dist/Tab.js.map +1 -0
  45. package/dist/Table.esm.js +2 -0
  46. package/dist/Table.esm.js.map +1 -0
  47. package/dist/Table.js +2 -0
  48. package/dist/Table.js.map +1 -0
  49. package/dist/Tag.esm.js +1 -1
  50. package/dist/Tag.esm.js.map +1 -1
  51. package/dist/Tag.js +1 -1
  52. package/dist/Tag.js.map +1 -1
  53. package/dist/Textarea.esm.js +2 -0
  54. package/dist/Textarea.esm.js.map +1 -0
  55. package/dist/Textarea.js +2 -0
  56. package/dist/Textarea.js.map +1 -0
  57. package/dist/Tooltip.esm.js +2 -0
  58. package/dist/Tooltip.esm.js.map +1 -0
  59. package/dist/Tooltip.js +2 -0
  60. package/dist/Tooltip.js.map +1 -0
  61. package/dist/components/Button/Button.stories.d.ts +8 -7
  62. package/dist/components/Button/index.d.ts +20 -5
  63. package/dist/components/Checkbox/Checkbox.stories.d.ts +12 -0
  64. package/dist/components/Checkbox/index.d.ts +12 -0
  65. package/dist/components/Form/Form.stories.d.ts +15 -0
  66. package/dist/components/Form/FormContext.d.ts +34 -0
  67. package/dist/components/Form/FormItem.d.ts +58 -0
  68. package/dist/components/Form/index.d.ts +57 -0
  69. package/dist/components/Input/Input.stories.d.ts +16 -0
  70. package/dist/components/Input/index.d.ts +36 -9
  71. package/dist/components/MenuList/MenuList.stories.d.ts +15 -0
  72. package/dist/components/MenuList/MenuList.test.d.ts +1 -0
  73. package/dist/components/MenuList/index.d.ts +76 -0
  74. package/dist/components/Pagination/Pagination.stories.d.ts +16 -0
  75. package/dist/components/Pagination/index.d.ts +27 -0
  76. package/dist/components/Progress/Progress.stories.d.ts +18 -0
  77. package/dist/components/Progress/Progress.test.d.ts +1 -0
  78. package/dist/components/Progress/index.d.ts +33 -0
  79. package/dist/components/Radio/Radio.stories.d.ts +10 -0
  80. package/dist/components/Radio/index.d.ts +13 -0
  81. package/dist/components/Select/Select.stories.d.ts +17 -0
  82. package/dist/components/Select/index.d.ts +74 -0
  83. package/dist/components/Switch/Switch.stories.d.ts +14 -0
  84. package/dist/components/Switch/index.d.ts +27 -0
  85. package/dist/components/Tab/Tab.stories.d.ts +15 -0
  86. package/dist/components/Tab/index.d.ts +25 -0
  87. package/dist/components/Table/Table.stories.d.ts +16 -0
  88. package/dist/components/Table/index.d.ts +166 -0
  89. package/dist/components/Textarea/Textarea.stories.d.ts +15 -0
  90. package/dist/components/Textarea/index.d.ts +38 -0
  91. package/dist/components/Tooltip/Tooltip.stories.d.ts +18 -0
  92. package/dist/components/Tooltip/index.d.ts +29 -0
  93. package/dist/icons/index.d.ts +33 -0
  94. package/dist/index.d.ts +697 -6
  95. package/dist/index.esm.js +1 -1
  96. package/dist/index.esm.js.map +1 -1
  97. package/dist/index.js +1 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/theme/Theme.stories.d.ts +10 -0
  100. package/dist/theme/ThemeContext.d.ts +11 -0
  101. package/dist/theme/utils.d.ts +10 -0
  102. package/package.json +28 -24
package/dist/index.d.ts CHANGED
@@ -1,15 +1,31 @@
1
1
  import React from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
3
 
3
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger' | 'icon' | 'ghost';
4
- type ButtonSize = 'default' | 'small' | 'large';
4
+ type ButtonType = 'default' | 'primary';
5
+ type ButtonSize = 'small' | 'mediumSmall' | 'medium' | 'large';
5
6
  interface ButtonProps {
7
+ /** 按钮内容 */
6
8
  children?: React.ReactNode;
7
- className?: string;
8
- variant?: ButtonVariant;
9
+ /** 按钮类型 */
10
+ type?: ButtonType;
11
+ /** 按钮尺寸 */
9
12
  size?: ButtonSize;
13
+ /** 是否禁用 */
10
14
  disabled?: boolean;
15
+ /** 是否加载中 */
16
+ loading?: boolean;
17
+ /** 点击事件 */
11
18
  onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
12
- type?: 'button' | 'submit' | 'reset';
19
+ /** 按钮原生type */
20
+ htmlType?: 'button' | 'submit' | 'reset';
21
+ /** 自定义类名 */
22
+ className?: string;
23
+ /** 自定义样式 */
24
+ style?: React.CSSProperties;
25
+ /** 图标 */
26
+ icon?: React.ReactNode;
27
+ /** 图标位置 */
28
+ iconPosition?: 'left' | 'right';
13
29
  [key: string]: any;
14
30
  }
15
31
  declare const Button: React.FC<ButtonProps>;
@@ -84,4 +100,679 @@ interface TagProps {
84
100
  }
85
101
  declare const Tag: React.FC<TagProps>;
86
102
 
87
- export { Alert, AlertProps, Button, ButtonProps, Tag, TagProps, Toast, ToastPosition, ToastProps, ToastProvider, ToastType, clearAllToasts, closeToast, debugToast, toast, toastError, toastInfo, toastQuestion, toastSuccess };
103
+ type SortOrder = 'ascend' | 'descend' | null;
104
+ type TableSize = 'small' | 'middle' | 'large';
105
+ type TableLayout = 'auto' | 'fixed';
106
+ interface SorterResult<T = any> {
107
+ column?: ColumnType<T>;
108
+ order?: SortOrder;
109
+ field?: string | string[];
110
+ columnKey?: string | string[];
111
+ }
112
+ interface TableCurrentDataSource<T = any> {
113
+ currentDataSource: T[];
114
+ action: 'paginate' | 'sort';
115
+ }
116
+ interface TableRowSelection<T = any> {
117
+ type?: 'checkbox' | 'radio';
118
+ selectedRowKeys?: (string | number)[];
119
+ defaultSelectedRowKeys?: (string | number)[];
120
+ onChange?: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;
121
+ onSelect?: (record: T, selected: boolean, selectedRows: T[], nativeEvent: Event) => void;
122
+ onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;
123
+ onSelectInvert?: (selectedRowKeys: (string | number)[]) => void;
124
+ onSelectNone?: () => void;
125
+ getCheckboxProps?: (record: T) => {
126
+ disabled?: boolean;
127
+ name?: string;
128
+ };
129
+ hideSelectAll?: boolean;
130
+ fixed?: boolean | 'left' | 'right';
131
+ columnWidth?: string | number;
132
+ columnTitle?: string | React.ReactNode;
133
+ checkStrictly?: boolean;
134
+ preserveSelectedRowKeys?: boolean;
135
+ renderCell?: (checked: boolean, record: T, index: number, node: React.ReactNode) => React.ReactNode;
136
+ }
137
+ interface ColumnType<T = any> {
138
+ title?: React.ReactNode | ((props: {
139
+ sortOrder?: SortOrder;
140
+ sortColumn?: ColumnType<T>;
141
+ }) => React.ReactNode);
142
+ key?: string;
143
+ dataIndex?: string | string[];
144
+ align?: 'left' | 'right' | 'center';
145
+ ellipsis?: boolean | {
146
+ showTitle?: boolean;
147
+ };
148
+ colSpan?: number;
149
+ width?: string | number;
150
+ minWidth?: string | number;
151
+ fixed?: boolean | 'left' | 'right';
152
+ render?: (value: any, record: T, index: number) => React.ReactNode;
153
+ sorter?: boolean | ((a: T, b: T) => number) | {
154
+ compare?: (a: T, b: T) => number;
155
+ multiple?: number;
156
+ };
157
+ sortOrder?: SortOrder | SortOrder[];
158
+ defaultSortOrder?: SortOrder;
159
+ onCell?: (record: T, index?: number) => React.HTMLAttributes<HTMLTableCellElement>;
160
+ onHeaderCell?: (column: ColumnType<T>) => React.HTMLAttributes<HTMLTableCellElement>;
161
+ className?: string;
162
+ children?: ColumnType<T>[];
163
+ onSorterChange?: (sorter: SorterResult<T>) => void;
164
+ rowSpan?: number;
165
+ rowScope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
166
+ }
167
+ interface TableProps<T = any> {
168
+ columns?: ColumnType<T>[];
169
+ dataSource?: T[];
170
+ rowKey?: string | ((record: T) => string | number);
171
+ rowSelection?: TableRowSelection<T>;
172
+ pagination?: false | {
173
+ current?: number;
174
+ pageSize?: number;
175
+ total?: number;
176
+ defaultCurrent?: number;
177
+ defaultPageSize?: number;
178
+ showSizeChanger?: boolean;
179
+ pageSizeOptions?: string[];
180
+ showQuickJumper?: boolean | {
181
+ goButton?: React.ReactNode;
182
+ };
183
+ showTotal?: (total: number, range: [number, number]) => React.ReactNode;
184
+ onChange?: (page: number, pageSize?: number) => void;
185
+ onShowSizeChange?: (current: number, size: number) => void;
186
+ position?: 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
187
+ simple?: boolean;
188
+ responsive?: boolean;
189
+ };
190
+ size?: TableSize;
191
+ bordered?: boolean;
192
+ loading?: boolean | React.ReactNode;
193
+ locale?: {
194
+ emptyText?: React.ReactNode | (() => React.ReactNode);
195
+ selectAll?: React.ReactNode;
196
+ selectInvert?: React.ReactNode;
197
+ selectNone?: React.ReactNode;
198
+ selectionAll?: React.ReactNode;
199
+ sortTitle?: string;
200
+ expand?: string;
201
+ collapse?: string;
202
+ triggerDesc?: string;
203
+ triggerAsc?: string;
204
+ cancelSort?: string;
205
+ };
206
+ showHeader?: boolean;
207
+ title?: (currentData: T[]) => React.ReactNode;
208
+ footer?: (currentData: T[]) => React.ReactNode;
209
+ summary?: (currentData: T[]) => React.ReactNode;
210
+ scroll?: {
211
+ x?: number | string | true;
212
+ y?: number | string;
213
+ scrollToFirstRowOnChange?: boolean;
214
+ };
215
+ tableLayout?: TableLayout;
216
+ onChange?: (pagination: any, filters: Record<string, any>, sorter: SorterResult<T> | SorterResult<T>[], extra: TableCurrentDataSource<T>) => void;
217
+ onSorterChange?: (sorter: SorterResult<T> | SorterResult<T>[]) => void;
218
+ onPaginationChange?: (page: number, pageSize: number) => void;
219
+ onRow?: (record: T, index?: number) => React.HTMLAttributes<HTMLTableRowElement>;
220
+ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
221
+ className?: string;
222
+ style?: React.CSSProperties;
223
+ children?: React.ReactNode;
224
+ expandable?: {
225
+ expandedRowKeys?: (string | number)[];
226
+ defaultExpandedRowKeys?: (string | number)[];
227
+ expandedRowRender?: (record: T, index: number, indent: number, expanded: boolean) => React.ReactNode;
228
+ expandRowByClick?: boolean;
229
+ onExpand?: (expanded: boolean, record: T) => void;
230
+ onExpandedRowsChange?: (expandedKeys: (string | number)[]) => void;
231
+ defaultExpandAllRows?: boolean;
232
+ indentSize?: number;
233
+ expandIcon?: (props: {
234
+ expanded: boolean;
235
+ onExpand: (record: T, e: React.MouseEvent<HTMLElement>) => void;
236
+ record: T;
237
+ }) => React.ReactNode;
238
+ rowExpandable?: (record: T) => boolean;
239
+ };
240
+ indentSize?: number;
241
+ rowClassName?: string | ((record: T, index: number) => string);
242
+ onHeaderRow?: (columns: ColumnType<T>[], index?: number) => React.HTMLAttributes<HTMLTableRowElement>;
243
+ components?: {
244
+ header?: {
245
+ cell?: React.ComponentType<any>;
246
+ row?: React.ComponentType<any>;
247
+ wrapper?: React.ComponentType<any>;
248
+ };
249
+ body?: {
250
+ cell?: React.ComponentType<any>;
251
+ row?: React.ComponentType<any>;
252
+ wrapper?: React.ComponentType<any>;
253
+ };
254
+ };
255
+ sticky?: boolean | {
256
+ offsetHeader?: number;
257
+ offsetScroll?: number;
258
+ getContainer?: () => HTMLElement;
259
+ };
260
+ }
261
+ declare const Table: <T extends Record<string, any> = any>({ columns, dataSource, rowKey, rowSelection, pagination, size, bordered, loading, locale, showHeader, title, footer, summary, scroll, tableLayout, onChange, onSorterChange, onPaginationChange, onRow, className, style, expandable, rowClassName, onHeaderRow, sticky, ...rest }: TableProps<T>) => react_jsx_runtime.JSX.Element;
262
+
263
+ interface PaginationProps {
264
+ current?: number;
265
+ defaultCurrent?: number;
266
+ total?: number;
267
+ pageSize?: number;
268
+ defaultPageSize?: number;
269
+ showSizeChanger?: boolean;
270
+ pageSizeOptions?: string[];
271
+ showQuickJumper?: boolean | {
272
+ goButton?: React.ReactNode;
273
+ };
274
+ showTotal?: (total: number, range: [number, number]) => React.ReactNode;
275
+ onChange?: (page: number, pageSize?: number) => void;
276
+ onShowSizeChange?: (current: number, size: number) => void;
277
+ simple?: boolean;
278
+ disabled?: boolean;
279
+ hideOnSinglePage?: boolean;
280
+ className?: string;
281
+ style?: React.CSSProperties;
282
+ size?: "default" | "small";
283
+ responsive?: boolean;
284
+ showLessItems?: boolean;
285
+ itemRender?: (page: number, type: "page" | "prev" | "next" | "jump-prev" | "jump-next", originalElement: React.ReactNode) => React.ReactNode;
286
+ }
287
+ declare const Pagination: React.FC<PaginationProps>;
288
+
289
+ interface CheckboxProps {
290
+ checked?: boolean;
291
+ indeterminate?: boolean;
292
+ disabled?: boolean;
293
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
294
+ className?: string;
295
+ style?: React.CSSProperties;
296
+ children?: React.ReactNode;
297
+ }
298
+ declare const Checkbox: React.FC<CheckboxProps>;
299
+
300
+ interface RadioProps {
301
+ checked?: boolean;
302
+ disabled?: boolean;
303
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
304
+ className?: string;
305
+ style?: React.CSSProperties;
306
+ children?: React.ReactNode;
307
+ value?: any;
308
+ name?: string;
309
+ }
310
+ declare const Radio: React.FC<RadioProps>;
311
+
312
+ type TabVariant = 'underline' | 'background';
313
+ type TabLayout = 'equal' | 'spaced';
314
+ interface TabItem {
315
+ key: string;
316
+ label: React.ReactNode;
317
+ icon?: React.ReactElement;
318
+ badge?: number | string;
319
+ customElement?: React.ReactNode;
320
+ disabled?: boolean;
321
+ children?: React.ReactNode;
322
+ }
323
+ interface TabProps {
324
+ items: TabItem[];
325
+ variant?: TabVariant;
326
+ layout?: TabLayout;
327
+ defaultValue?: string;
328
+ value?: string;
329
+ onChange?: (value: string) => void;
330
+ className?: string;
331
+ mode?: 'children' | 'value';
332
+ [key: string]: any;
333
+ }
334
+ declare const Tab: React.FC<TabProps>;
335
+
336
+ type ProgressType = 'circle' | 'semicircle' | string;
337
+ type ProgressStatus = 'normal' | 'success' | 'exception' | 'active';
338
+ type TitlePosition = 'inside' | 'outside';
339
+ interface ProgressProps {
340
+ /** 进度百分比,范围 0-100 */
341
+ percent?: number;
342
+ /** 进度条类型,目前支持 circle(圆形)和 semicircle(半圆) */
343
+ type?: ProgressType;
344
+ /** 进度条宽度(尺寸),单位 px */
345
+ width?: number;
346
+ /** 标题文本 */
347
+ title?: string;
348
+ /** 标题位置,圆内(inside)或圆外(outside),圆外时显示在圆下方 */
349
+ titlePosition?: TitlePosition;
350
+ /** 是否显示百分比 */
351
+ showPercent?: boolean;
352
+ /** 是否启用动画效果 */
353
+ animated?: boolean;
354
+ /** 进度条状态 */
355
+ status?: ProgressStatus;
356
+ /** 自定义类名 */
357
+ className?: string;
358
+ /** 自定义样式 */
359
+ style?: React.CSSProperties;
360
+ /** 进度条颜色,不设置则使用主题色 */
361
+ strokeColor?: string;
362
+ /** 进度条轨道颜色 */
363
+ trailColor?: string;
364
+ [key: string]: any;
365
+ }
366
+ declare const Progress: React.FC<ProgressProps>;
367
+
368
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'suffix'> {
369
+ /** 输入框大小 */
370
+ size?: 'small' | 'mediumSmall' | 'medium' | 'large';
371
+ /** 是否禁用 */
372
+ disabled?: boolean;
373
+ /** 是否显示错误状态 */
374
+ error?: boolean;
375
+ /** 是否只读 */
376
+ readOnly?: boolean;
377
+ /** 输入框前缀图标 */
378
+ prefix?: React.ReactNode;
379
+ /** 输入框后缀图标 */
380
+ suffix?: React.ReactNode;
381
+ /** 允许清除 */
382
+ allowClear?: boolean;
383
+ /** 清除回调 */
384
+ onClear?: () => void;
385
+ /** 自定义类名 */
386
+ className?: string;
387
+ /** 自定义样式 */
388
+ style?: React.CSSProperties;
389
+ /** 输入框类型 */
390
+ type?: string;
391
+ /** 占位符 */
392
+ placeholder?: string;
393
+ /** 值 */
394
+ value?: string;
395
+ /** 默认值 */
396
+ defaultValue?: string;
397
+ /** 变化回调 */
398
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
399
+ /** 聚焦回调 */
400
+ onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
401
+ /** 失焦回调 */
402
+ onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
403
+ /** 按下回车回调 */
404
+ onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
405
+ }
406
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
407
+
408
+ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
409
+ /** 是否禁用 */
410
+ disabled?: boolean;
411
+ /** 是否显示错误状态 */
412
+ error?: boolean;
413
+ /** 是否只读 */
414
+ readOnly?: boolean;
415
+ /** 是否显示字符计数 */
416
+ showCount?: boolean;
417
+ /** 最大字符数 */
418
+ maxLength?: number;
419
+ /** 自定义类名 */
420
+ className?: string;
421
+ /** 自定义样式 */
422
+ style?: React.CSSProperties;
423
+ /** 占位符 */
424
+ placeholder?: string;
425
+ /** 值 */
426
+ value?: string;
427
+ /** 默认值 */
428
+ defaultValue?: string;
429
+ /** 行数 */
430
+ rows?: number;
431
+ /** 是否自动调整高度 */
432
+ autoSize?: boolean | {
433
+ minRows?: number;
434
+ maxRows?: number;
435
+ };
436
+ /** 变化回调 */
437
+ onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
438
+ /** 聚焦回调 */
439
+ onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
440
+ /** 失焦回调 */
441
+ onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
442
+ }
443
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
444
+
445
+ interface SwitchProps {
446
+ /** 是否选中 */
447
+ checked?: boolean;
448
+ /** 默认是否选中 */
449
+ defaultChecked?: boolean;
450
+ /** 是否禁用 */
451
+ disabled?: boolean;
452
+ /** 变化回调 */
453
+ onChange?: (checked: boolean, event: React.MouseEvent) => void;
454
+ /** 点击回调 */
455
+ onClick?: (checked: boolean, event: React.MouseEvent) => void;
456
+ /** 选中时的内容 */
457
+ checkedChildren?: React.ReactNode;
458
+ /** 非选中时的内容 */
459
+ unCheckedChildren?: React.ReactNode;
460
+ /** 尺寸 */
461
+ size?: 'small' | 'default';
462
+ /** 加载状态 */
463
+ loading?: boolean;
464
+ /** 自定义类名 */
465
+ className?: string;
466
+ /** 自定义样式 */
467
+ style?: React.CSSProperties;
468
+ }
469
+ declare const Switch: React.FC<SwitchProps>;
470
+
471
+ interface SelectOption {
472
+ label: React.ReactNode;
473
+ value: string | number;
474
+ disabled?: boolean;
475
+ [key: string]: any;
476
+ }
477
+ interface SelectProps {
478
+ /** 当前选中的值 */
479
+ value?: string | number | (string | number)[];
480
+ /** 默认选中的值 */
481
+ defaultValue?: string | number | (string | number)[];
482
+ /** 选项数据 */
483
+ options?: SelectOption[];
484
+ /** 是否支持多选 */
485
+ mode?: 'multiple' | 'tags';
486
+ /** 是否禁用 */
487
+ disabled?: boolean;
488
+ /** 是否显示错误状态 */
489
+ error?: boolean;
490
+ /** 占位符 */
491
+ placeholder?: string;
492
+ /** 尺寸 */
493
+ size?: 'small' | 'mediumSmall' | 'medium' | 'large';
494
+ /** 是否可搜索 */
495
+ showSearch?: boolean;
496
+ /** 搜索过滤函数 */
497
+ filterOption?: boolean | ((input: string, option: SelectOption) => boolean);
498
+ /** 是否允许清除 */
499
+ allowClear?: boolean;
500
+ /** 变化回调 */
501
+ onChange?: (value: string | number | (string | number)[], option: SelectOption | SelectOption[]) => void;
502
+ /** 选择回调 */
503
+ onSelect?: (value: string | number, option: SelectOption) => void;
504
+ /** 取消选择回调 */
505
+ onDeselect?: (value: string | number, option: SelectOption) => void;
506
+ /** 搜索回调 */
507
+ onSearch?: (value: string) => void;
508
+ /** 聚焦回调 */
509
+ onFocus?: (e: React.FocusEvent) => void;
510
+ /** 失焦回调 */
511
+ onBlur?: (e: React.FocusEvent) => void;
512
+ /** 下拉框打开回调 */
513
+ onDropdownVisibleChange?: (open: boolean) => void;
514
+ /** 自定义类名 */
515
+ className?: string;
516
+ /** 自定义样式 */
517
+ style?: React.CSSProperties;
518
+ /** 下拉框类名 */
519
+ dropdownClassName?: string;
520
+ /** 下拉框样式 */
521
+ dropdownStyle?: React.CSSProperties;
522
+ /** 是否默认打开 */
523
+ defaultOpen?: boolean;
524
+ /** 是否打开(受控) */
525
+ open?: boolean;
526
+ /** 最大标签数量 */
527
+ maxTagCount?: number | 'responsive';
528
+ /** 标签渲染函数 */
529
+ tagRender?: (props: {
530
+ label: React.ReactNode;
531
+ value: string | number;
532
+ closable: boolean;
533
+ onClose: () => void;
534
+ }) => React.ReactNode;
535
+ /** 选项渲染函数 */
536
+ optionRender?: (option: SelectOption, info: {
537
+ selected: boolean;
538
+ focused: boolean;
539
+ disabled: boolean;
540
+ }) => React.ReactNode;
541
+ }
542
+ declare const Select: React.FC<SelectProps>;
543
+
544
+ interface FormItemProps {
545
+ /** 字段名 */
546
+ name?: string;
547
+ /** 标签 */
548
+ label?: React.ReactNode;
549
+ /** 标签的 HTML for 属性 */
550
+ htmlFor?: string;
551
+ /** 标签布局 */
552
+ labelCol?: {
553
+ span?: number;
554
+ offset?: number;
555
+ };
556
+ /** 输入控件布局 */
557
+ wrapperCol?: {
558
+ span?: number;
559
+ offset?: number;
560
+ };
561
+ /** 是否必填(显示红色星号) */
562
+ required?: boolean;
563
+ /** 校验规则 */
564
+ rules?: Array<{
565
+ required?: boolean;
566
+ message?: string;
567
+ validator?: (rule: any, value: any) => Promise<void> | void;
568
+ pattern?: RegExp;
569
+ min?: number;
570
+ max?: number;
571
+ len?: number;
572
+ type?: 'string' | 'number' | 'boolean' | 'method' | 'regexp' | 'integer' | 'float' | 'array' | 'object' | 'enum' | 'date' | 'url' | 'hex' | 'email';
573
+ whitespace?: boolean;
574
+ [key: string]: any;
575
+ }>;
576
+ /** 是否显示校验信息 */
577
+ hasFeedback?: boolean;
578
+ /** 校验状态 */
579
+ validateStatus?: 'success' | 'warning' | 'error' | 'validating';
580
+ /** 帮助信息 */
581
+ help?: React.ReactNode;
582
+ /** 额外的提示信息 */
583
+ extra?: React.ReactNode;
584
+ /** 自定义类名 */
585
+ className?: string;
586
+ /** 自定义样式 */
587
+ style?: React.CSSProperties;
588
+ /** 子元素 */
589
+ children?: React.ReactNode;
590
+ /** 标签对齐方式 */
591
+ labelAlign?: 'left' | 'right';
592
+ /** 标签宽度 */
593
+ labelWidth?: number | string;
594
+ /** 是否隐藏 */
595
+ hidden?: boolean;
596
+ /** 标签提示信息(tooltip) */
597
+ tooltip?: React.ReactNode;
598
+ }
599
+ declare const FormItem: React.FC<FormItemProps>;
600
+
601
+ interface FormProps {
602
+ /** 表单初始值 */
603
+ initialValues?: Record<string, any>;
604
+ /** 表单值变化回调 */
605
+ onValuesChange?: (changedValues: Record<string, any>, allValues: Record<string, any>) => void;
606
+ /** 表单提交回调 */
607
+ onFinish?: (values: Record<string, any>) => void;
608
+ /** 表单提交失败回调 */
609
+ onFinishFailed?: (errorInfo: {
610
+ values: Record<string, any>;
611
+ errorFields: Array<{
612
+ name: string;
613
+ errors: string[];
614
+ }>;
615
+ }) => void;
616
+ /** 标签宽度 */
617
+ labelWidth?: number | string;
618
+ /** 标签对齐方式 */
619
+ labelAlign?: 'left' | 'right';
620
+ /** 布局方式 */
621
+ layout?: 'horizontal' | 'vertical' | 'inline';
622
+ /** 尺寸 */
623
+ size?: 'small' | 'medium' | 'large';
624
+ /** 自定义类名 */
625
+ className?: string;
626
+ /** 自定义样式 */
627
+ style?: React.CSSProperties;
628
+ /** 子元素 */
629
+ children?: React.ReactNode;
630
+ }
631
+ interface FormInstance {
632
+ /** 获取字段值 */
633
+ getFieldValue: (name: string) => any;
634
+ /** 获取所有字段值 */
635
+ getFieldsValue: (nameList?: string[]) => any;
636
+ /** 设置字段值 */
637
+ setFieldValue: (name: string, value: any) => void;
638
+ /** 设置所有字段值 */
639
+ setFieldsValue: (values: Record<string, any>) => void;
640
+ /** 获取字段错误 */
641
+ getFieldError: (name: string) => string | undefined;
642
+ /** 校验字段 */
643
+ validateField: (name: string) => Promise<string | undefined>;
644
+ /** 校验所有字段 */
645
+ validateFields: (nameList?: string[]) => Promise<any>;
646
+ /** 重置字段 */
647
+ resetFields: (nameList?: string[]) => void;
648
+ /** 提交表单 */
649
+ submit: () => Promise<any>;
650
+ }
651
+ declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<FormInstance>>;
652
+ declare const FormWithItem: typeof Form & {
653
+ Item: typeof FormItem;
654
+ };
655
+
656
+ interface MenuItemType {
657
+ /** 唯一标识 */
658
+ key: string;
659
+ /** 菜单项标签 */
660
+ label: React.ReactNode;
661
+ /** 菜单项图标 */
662
+ icon?: React.ReactNode;
663
+ /** 是否禁用 */
664
+ disabled?: boolean;
665
+ /** 是否危险项(红色) */
666
+ danger?: boolean;
667
+ /** 自定义渲染函数,如果提供则完全自定义该项的渲染 */
668
+ render?: (item: MenuItemType, isSelected: boolean) => React.ReactNode;
669
+ /** 自定义类名 */
670
+ className?: string;
671
+ /** 自定义样式 */
672
+ style?: React.CSSProperties;
673
+ /** 点击事件 */
674
+ onClick?: (info: {
675
+ key: string;
676
+ keyPath: string[];
677
+ }) => void;
678
+ }
679
+ interface MenuGroupType {
680
+ /** 分组标题 */
681
+ title?: React.ReactNode;
682
+ /** 分组下的菜单项 */
683
+ children: MenuItemType[];
684
+ /** 自定义类名 */
685
+ className?: string;
686
+ }
687
+ interface UserProfileType {
688
+ /** 用户头像 */
689
+ avatar?: React.ReactNode;
690
+ /** 用户姓名 */
691
+ name: React.ReactNode;
692
+ /** 用户邮箱 */
693
+ email?: React.ReactNode;
694
+ /** 在线状态 */
695
+ online?: boolean;
696
+ /** 自定义渲染函数,如果提供则完全自定义用户资料的渲染 */
697
+ render?: (profile: UserProfileType) => React.ReactNode;
698
+ /** 点击事件 */
699
+ onClick?: () => void;
700
+ }
701
+ interface MenuListProps {
702
+ /** 菜单项数据 */
703
+ items: (MenuItemType | MenuGroupType)[];
704
+ /** 用户资料信息(显示在顶部) */
705
+ userProfile?: UserProfileType;
706
+ /** 当前选中的菜单项 key */
707
+ selectedKeys?: string[];
708
+ /** 默认选中的菜单项 key */
709
+ defaultSelectedKeys?: string[];
710
+ /** 选中项变化时的回调 */
711
+ onSelect?: (info: {
712
+ key: string;
713
+ keyPath: string[];
714
+ selectedKeys: string[];
715
+ }) => void;
716
+ /** 取消选中时的回调 */
717
+ onDeselect?: (info: {
718
+ key: string;
719
+ keyPath: string[];
720
+ selectedKeys: string[];
721
+ }) => void;
722
+ /** 自定义类名 */
723
+ className?: string;
724
+ /** 自定义样式 */
725
+ style?: React.CSSProperties;
726
+ /** 菜单宽度 */
727
+ width?: number | string;
728
+ }
729
+ declare const MenuList: React.FC<MenuListProps>;
730
+
731
+ type TooltipPosition = "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
732
+ type TooltipTrigger = "hover" | "click";
733
+ interface TooltipProps {
734
+ /** Tooltip 内容 */
735
+ content: React.ReactNode;
736
+ /** 触发元素 */
737
+ children: React.ReactNode;
738
+ /** 显示位置 */
739
+ position?: TooltipPosition;
740
+ /** 触发方式 */
741
+ trigger?: TooltipTrigger;
742
+ /** 延迟显示时间(毫秒) */
743
+ delay?: number;
744
+ /** 是否禁用 */
745
+ disabled?: boolean;
746
+ /** 自定义样式类名 */
747
+ className?: string;
748
+ /** 自定义 tooltip 样式类名 */
749
+ tooltipClassName?: string;
750
+ /** Tooltip 与触发元素的间距(像素) */
751
+ gap?: number;
752
+ /** 是否显示箭头 */
753
+ showArrow?: boolean;
754
+ /** Tooltip 内容宽度(如 "200px"、"50%" 等),不设置则使用自动计算 */
755
+ width?: string | number;
756
+ }
757
+ declare const Tooltip: React.FC<TooltipProps>;
758
+
759
+ interface ThemeConfig {
760
+ primaryColor?: string;
761
+ }
762
+ interface ThemeProviderProps {
763
+ theme?: ThemeConfig;
764
+ children: React.ReactNode;
765
+ }
766
+ declare const ThemeProvider: React.FC<ThemeProviderProps>;
767
+ declare const useTheme: () => ThemeConfig;
768
+
769
+ declare const CheckIcon: React.FC<{
770
+ className?: string;
771
+ style?: React.CSSProperties;
772
+ }>;
773
+ declare const MinusIcon: React.FC<{
774
+ className?: string;
775
+ style?: React.CSSProperties;
776
+ }>;
777
+
778
+ export { Alert, AlertProps, Button, ButtonProps, CheckIcon, Checkbox, CheckboxProps, ColumnType, FormWithItem as Form, FormInstance, FormItemProps, FormProps, Input, InputProps, MenuGroupType, MenuItemType, MenuList, MenuListProps, MinusIcon, Pagination, PaginationProps, Progress, ProgressProps, ProgressStatus, ProgressType, Radio, RadioProps, Select, SelectOption, SelectProps, SortOrder, SorterResult, Switch, SwitchProps, Tab, TabItem, TabLayout, TabProps, TabVariant, Table, TableCurrentDataSource, TableLayout, TableProps, TableRowSelection, TableSize, Tag, TagProps, Textarea, TextareaProps, ThemeConfig, ThemeProvider, ThemeProviderProps, Toast, ToastPosition, ToastProps, ToastProvider, ToastType, Tooltip, TooltipPosition, TooltipProps, UserProfileType, clearAllToasts, closeToast, debugToast, toast, toastError, toastInfo, toastQuestion, toastSuccess, useTheme };