aha-components 1.2.1 → 1.3.1

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 (104) 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/Tag/Tag.stories.d.ts +1 -0
  90. package/dist/components/Tag/index.d.ts +1 -1
  91. package/dist/components/Textarea/Textarea.stories.d.ts +15 -0
  92. package/dist/components/Textarea/index.d.ts +38 -0
  93. package/dist/components/Tooltip/Tooltip.stories.d.ts +18 -0
  94. package/dist/components/Tooltip/index.d.ts +27 -0
  95. package/dist/icons/index.d.ts +33 -0
  96. package/dist/index.d.ts +696 -7
  97. package/dist/index.esm.js +1 -1
  98. package/dist/index.esm.js.map +1 -1
  99. package/dist/index.js +1 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/theme/Theme.stories.d.ts +10 -0
  102. package/dist/theme/ThemeContext.d.ts +11 -0
  103. package/dist/theme/utils.d.ts +10 -0
  104. package/package.json +28 -24
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import MenuList from './index';
3
+ declare const meta: Meta<typeof MenuList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof MenuList>;
6
+ export declare const Basic: Story;
7
+ export declare const WithoutIcons: Story;
8
+ export declare const MixedIcons: Story;
9
+ export declare const FullExample: Story;
10
+ export declare const WithUserProfile: Story;
11
+ export declare const WithDisabled: Story;
12
+ export declare const WithDanger: Story;
13
+ export declare const Controlled: Story;
14
+ export declare const CustomRender: Story;
15
+ export declare const CustomUserProfile: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,76 @@
1
+ import React from 'react';
2
+ export interface MenuItemType {
3
+ /** 唯一标识 */
4
+ key: string;
5
+ /** 菜单项标签 */
6
+ label: React.ReactNode;
7
+ /** 菜单项图标 */
8
+ icon?: React.ReactNode;
9
+ /** 是否禁用 */
10
+ disabled?: boolean;
11
+ /** 是否危险项(红色) */
12
+ danger?: boolean;
13
+ /** 自定义渲染函数,如果提供则完全自定义该项的渲染 */
14
+ render?: (item: MenuItemType, isSelected: boolean) => React.ReactNode;
15
+ /** 自定义类名 */
16
+ className?: string;
17
+ /** 自定义样式 */
18
+ style?: React.CSSProperties;
19
+ /** 点击事件 */
20
+ onClick?: (info: {
21
+ key: string;
22
+ keyPath: string[];
23
+ }) => void;
24
+ }
25
+ export interface MenuGroupType {
26
+ /** 分组标题 */
27
+ title?: React.ReactNode;
28
+ /** 分组下的菜单项 */
29
+ children: MenuItemType[];
30
+ /** 自定义类名 */
31
+ className?: string;
32
+ }
33
+ export interface UserProfileType {
34
+ /** 用户头像 */
35
+ avatar?: React.ReactNode;
36
+ /** 用户姓名 */
37
+ name: React.ReactNode;
38
+ /** 用户邮箱 */
39
+ email?: React.ReactNode;
40
+ /** 在线状态 */
41
+ online?: boolean;
42
+ /** 自定义渲染函数,如果提供则完全自定义用户资料的渲染 */
43
+ render?: (profile: UserProfileType) => React.ReactNode;
44
+ /** 点击事件 */
45
+ onClick?: () => void;
46
+ }
47
+ export interface MenuListProps {
48
+ /** 菜单项数据 */
49
+ items: (MenuItemType | MenuGroupType)[];
50
+ /** 用户资料信息(显示在顶部) */
51
+ userProfile?: UserProfileType;
52
+ /** 当前选中的菜单项 key */
53
+ selectedKeys?: string[];
54
+ /** 默认选中的菜单项 key */
55
+ defaultSelectedKeys?: string[];
56
+ /** 选中项变化时的回调 */
57
+ onSelect?: (info: {
58
+ key: string;
59
+ keyPath: string[];
60
+ selectedKeys: string[];
61
+ }) => void;
62
+ /** 取消选中时的回调 */
63
+ onDeselect?: (info: {
64
+ key: string;
65
+ keyPath: string[];
66
+ selectedKeys: string[];
67
+ }) => void;
68
+ /** 自定义类名 */
69
+ className?: string;
70
+ /** 自定义样式 */
71
+ style?: React.CSSProperties;
72
+ /** 菜单宽度 */
73
+ width?: number | string;
74
+ }
75
+ declare const MenuList: React.FC<MenuListProps>;
76
+ export default MenuList;
@@ -0,0 +1,16 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Pagination from './index';
3
+ declare const meta: Meta<typeof Pagination>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Pagination>;
6
+ export declare const Basic: Story;
7
+ export declare const Controlled: Story;
8
+ export declare const WithTotal: Story;
9
+ export declare const WithSizeChanger: Story;
10
+ export declare const WithQuickJumper: Story;
11
+ export declare const FullFeatures: Story;
12
+ export declare const Simple: Story;
13
+ export declare const Sizes: Story;
14
+ export declare const LargeTotal: Story;
15
+ export declare const CustomGoButton: Story;
16
+ export declare const Responsive: Story;
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ export interface PaginationProps {
3
+ current?: number;
4
+ defaultCurrent?: number;
5
+ total?: number;
6
+ pageSize?: number;
7
+ defaultPageSize?: number;
8
+ showSizeChanger?: boolean;
9
+ pageSizeOptions?: string[];
10
+ showQuickJumper?: boolean | {
11
+ goButton?: React.ReactNode;
12
+ };
13
+ showTotal?: (total: number, range: [number, number]) => React.ReactNode;
14
+ onChange?: (page: number, pageSize?: number) => void;
15
+ onShowSizeChange?: (current: number, size: number) => void;
16
+ simple?: boolean;
17
+ disabled?: boolean;
18
+ hideOnSinglePage?: boolean;
19
+ className?: string;
20
+ style?: React.CSSProperties;
21
+ size?: "default" | "small";
22
+ responsive?: boolean;
23
+ showLessItems?: boolean;
24
+ itemRender?: (page: number, type: "page" | "prev" | "next" | "jump-prev" | "jump-next", originalElement: React.ReactNode) => React.ReactNode;
25
+ }
26
+ declare const Pagination: React.FC<PaginationProps>;
27
+ export default Pagination;
@@ -0,0 +1,18 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Progress from './index';
3
+ import '../../index.css';
4
+ declare const meta: Meta<typeof Progress>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof Progress>;
7
+ export declare const Circle: Story;
8
+ export declare const Semicircle: Story;
9
+ export declare const WithTitle: Story;
10
+ export declare const WithoutPercent: Story;
11
+ export declare const DifferentSizes: Story;
12
+ export declare const SemicircleSizes: Story;
13
+ export declare const WithTitleAndPercent: Story;
14
+ export declare const TitlePositionInside: Story;
15
+ export declare const TitlePositionOutside: Story;
16
+ export declare const StatusVariants: Story;
17
+ export declare const AnimatedProgress: Story;
18
+ export declare const CustomColors: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ export type ProgressType = 'circle' | 'semicircle' | string;
3
+ export type ProgressStatus = 'normal' | 'success' | 'exception' | 'active';
4
+ export type TitlePosition = 'inside' | 'outside';
5
+ export interface ProgressProps {
6
+ /** 进度百分比,范围 0-100 */
7
+ percent?: number;
8
+ /** 进度条类型,目前支持 circle(圆形)和 semicircle(半圆) */
9
+ type?: ProgressType;
10
+ /** 进度条宽度(尺寸),单位 px */
11
+ width?: number;
12
+ /** 标题文本 */
13
+ title?: string;
14
+ /** 标题位置,圆内(inside)或圆外(outside),圆外时显示在圆下方 */
15
+ titlePosition?: TitlePosition;
16
+ /** 是否显示百分比 */
17
+ showPercent?: boolean;
18
+ /** 是否启用动画效果 */
19
+ animated?: boolean;
20
+ /** 进度条状态 */
21
+ status?: ProgressStatus;
22
+ /** 自定义类名 */
23
+ className?: string;
24
+ /** 自定义样式 */
25
+ style?: React.CSSProperties;
26
+ /** 进度条颜色,不设置则使用主题色 */
27
+ strokeColor?: string;
28
+ /** 进度条轨道颜色 */
29
+ trailColor?: string;
30
+ [key: string]: any;
31
+ }
32
+ declare const Progress: React.FC<ProgressProps>;
33
+ export default Progress;
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Radio from './index';
3
+ declare const meta: Meta<typeof Radio>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Radio>;
6
+ export declare const Basic: Story;
7
+ export declare const Checked: Story;
8
+ export declare const Disabled: Story;
9
+ export declare const RadioGroup: Story;
10
+ export declare const Sizes: Story;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export interface RadioProps {
3
+ checked?: boolean;
4
+ disabled?: boolean;
5
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
6
+ className?: string;
7
+ style?: React.CSSProperties;
8
+ children?: React.ReactNode;
9
+ value?: any;
10
+ name?: string;
11
+ }
12
+ declare const Radio: React.FC<RadioProps>;
13
+ export default Radio;
@@ -0,0 +1,17 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Select from './index';
3
+ declare const meta: Meta<typeof Select>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Select>;
6
+ export declare const Basic: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Disabled: Story;
9
+ export declare const Error: Story;
10
+ export declare const Searchable: Story;
11
+ export declare const Multiple: Story;
12
+ export declare const MultipleWithMaxTag: Story;
13
+ export declare const WithClear: Story;
14
+ export declare const Controlled: Story;
15
+ export declare const WithDisabledOption: Story;
16
+ export declare const LongList: Story;
17
+ export declare const AllStates: Story;
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ export interface SelectOption {
3
+ label: React.ReactNode;
4
+ value: string | number;
5
+ disabled?: boolean;
6
+ [key: string]: any;
7
+ }
8
+ export interface SelectProps {
9
+ /** 当前选中的值 */
10
+ value?: string | number | (string | number)[];
11
+ /** 默认选中的值 */
12
+ defaultValue?: string | number | (string | number)[];
13
+ /** 选项数据 */
14
+ options?: SelectOption[];
15
+ /** 是否支持多选 */
16
+ mode?: 'multiple' | 'tags';
17
+ /** 是否禁用 */
18
+ disabled?: boolean;
19
+ /** 是否显示错误状态 */
20
+ error?: boolean;
21
+ /** 占位符 */
22
+ placeholder?: string;
23
+ /** 尺寸 */
24
+ size?: 'small' | 'mediumSmall' | 'medium' | 'large';
25
+ /** 是否可搜索 */
26
+ showSearch?: boolean;
27
+ /** 搜索过滤函数 */
28
+ filterOption?: boolean | ((input: string, option: SelectOption) => boolean);
29
+ /** 是否允许清除 */
30
+ allowClear?: boolean;
31
+ /** 变化回调 */
32
+ onChange?: (value: string | number | (string | number)[], option: SelectOption | SelectOption[]) => void;
33
+ /** 选择回调 */
34
+ onSelect?: (value: string | number, option: SelectOption) => void;
35
+ /** 取消选择回调 */
36
+ onDeselect?: (value: string | number, option: SelectOption) => void;
37
+ /** 搜索回调 */
38
+ onSearch?: (value: string) => void;
39
+ /** 聚焦回调 */
40
+ onFocus?: (e: React.FocusEvent) => void;
41
+ /** 失焦回调 */
42
+ onBlur?: (e: React.FocusEvent) => void;
43
+ /** 下拉框打开回调 */
44
+ onDropdownVisibleChange?: (open: boolean) => void;
45
+ /** 自定义类名 */
46
+ className?: string;
47
+ /** 自定义样式 */
48
+ style?: React.CSSProperties;
49
+ /** 下拉框类名 */
50
+ dropdownClassName?: string;
51
+ /** 下拉框样式 */
52
+ dropdownStyle?: React.CSSProperties;
53
+ /** 是否默认打开 */
54
+ defaultOpen?: boolean;
55
+ /** 是否打开(受控) */
56
+ open?: boolean;
57
+ /** 最大标签数量 */
58
+ maxTagCount?: number | 'responsive';
59
+ /** 标签渲染函数 */
60
+ tagRender?: (props: {
61
+ label: React.ReactNode;
62
+ value: string | number;
63
+ closable: boolean;
64
+ onClose: () => void;
65
+ }) => React.ReactNode;
66
+ /** 选项渲染函数 */
67
+ optionRender?: (option: SelectOption, info: {
68
+ selected: boolean;
69
+ focused: boolean;
70
+ disabled: boolean;
71
+ }) => React.ReactNode;
72
+ }
73
+ declare const Select: React.FC<SelectProps>;
74
+ export default Select;
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Switch from './index';
3
+ declare const meta: Meta<typeof Switch>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Switch>;
6
+ export declare const Basic: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Checked: Story;
9
+ export declare const Unchecked: Story;
10
+ export declare const Disabled: Story;
11
+ export declare const Loading: Story;
12
+ export declare const WithChildren: Story;
13
+ export declare const Controlled: Story;
14
+ export declare const AllStates: Story;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export interface SwitchProps {
3
+ /** 是否选中 */
4
+ checked?: boolean;
5
+ /** 默认是否选中 */
6
+ defaultChecked?: boolean;
7
+ /** 是否禁用 */
8
+ disabled?: boolean;
9
+ /** 变化回调 */
10
+ onChange?: (checked: boolean, event: React.MouseEvent) => void;
11
+ /** 点击回调 */
12
+ onClick?: (checked: boolean, event: React.MouseEvent) => void;
13
+ /** 选中时的内容 */
14
+ checkedChildren?: React.ReactNode;
15
+ /** 非选中时的内容 */
16
+ unCheckedChildren?: React.ReactNode;
17
+ /** 尺寸 */
18
+ size?: 'small' | 'default';
19
+ /** 加载状态 */
20
+ loading?: boolean;
21
+ /** 自定义类名 */
22
+ className?: string;
23
+ /** 自定义样式 */
24
+ style?: React.CSSProperties;
25
+ }
26
+ declare const Switch: React.FC<SwitchProps>;
27
+ export default Switch;
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Tab from './index';
3
+ declare const meta: Meta<typeof Tab>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Tab>;
6
+ export declare const Underline: Story;
7
+ export declare const UnderlineWithBadge: Story;
8
+ export declare const UnderlineWithIcon: Story;
9
+ export declare const BackgroundEqual: Story;
10
+ export declare const BackgroundSpaced: Story;
11
+ export declare const BackgroundWithIconAndBadge: Story;
12
+ export declare const WithCustomElement: Story;
13
+ export declare const ValueMode: Story;
14
+ export declare const WithDisabled: Story;
15
+ export declare const FullExample: Story;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ export type TabVariant = 'underline' | 'background';
3
+ export type TabLayout = 'equal' | 'spaced';
4
+ export interface TabItem {
5
+ key: string;
6
+ label: React.ReactNode;
7
+ icon?: React.ReactElement;
8
+ badge?: number | string;
9
+ customElement?: React.ReactNode;
10
+ disabled?: boolean;
11
+ children?: React.ReactNode;
12
+ }
13
+ export interface TabProps {
14
+ items: TabItem[];
15
+ variant?: TabVariant;
16
+ layout?: TabLayout;
17
+ defaultValue?: string;
18
+ value?: string;
19
+ onChange?: (value: string) => void;
20
+ className?: string;
21
+ mode?: 'children' | 'value';
22
+ [key: string]: any;
23
+ }
24
+ declare const Tab: React.FC<TabProps>;
25
+ export default Tab;
@@ -0,0 +1,16 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Table from './index';
3
+ declare const meta: Meta<typeof Table>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Table>;
6
+ export declare const Basic: Story;
7
+ export declare const WithPagination: Story;
8
+ export declare const WithRowSelection: Story;
9
+ export declare const WithSorting: Story;
10
+ export declare const WithSorterChange: Story;
11
+ export declare const WithFixedColumns: Story;
12
+ export declare const WithColumnWidth: Story;
13
+ export declare const WithRowSelectionDisabled: Story;
14
+ export declare const WithCustomRender: Story;
15
+ export declare const WithAlign: Story;
16
+ export declare const WithPaginationChange: Story;
@@ -0,0 +1,166 @@
1
+ import React from 'react';
2
+ export type SortOrder = 'ascend' | 'descend' | null;
3
+ export type TableSize = 'small' | 'middle' | 'large';
4
+ export type TableLayout = 'auto' | 'fixed';
5
+ export interface SorterResult<T = any> {
6
+ column?: ColumnType<T>;
7
+ order?: SortOrder;
8
+ field?: string | string[];
9
+ columnKey?: string | string[];
10
+ }
11
+ export interface TableCurrentDataSource<T = any> {
12
+ currentDataSource: T[];
13
+ action: 'paginate' | 'sort';
14
+ }
15
+ export interface SelectionItem {
16
+ key: string | number;
17
+ text: React.ReactNode;
18
+ onSelect?: (changeableRowKeys: (string | number)[]) => void;
19
+ }
20
+ export interface TableRowSelection<T = any> {
21
+ type?: 'checkbox' | 'radio';
22
+ selectedRowKeys?: (string | number)[];
23
+ defaultSelectedRowKeys?: (string | number)[];
24
+ onChange?: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;
25
+ onSelect?: (record: T, selected: boolean, selectedRows: T[], nativeEvent: Event) => void;
26
+ onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;
27
+ onSelectInvert?: (selectedRowKeys: (string | number)[]) => void;
28
+ onSelectNone?: () => void;
29
+ getCheckboxProps?: (record: T) => {
30
+ disabled?: boolean;
31
+ name?: string;
32
+ };
33
+ hideSelectAll?: boolean;
34
+ fixed?: boolean | 'left' | 'right';
35
+ columnWidth?: string | number;
36
+ columnTitle?: string | React.ReactNode;
37
+ checkStrictly?: boolean;
38
+ preserveSelectedRowKeys?: boolean;
39
+ renderCell?: (checked: boolean, record: T, index: number, node: React.ReactNode) => React.ReactNode;
40
+ }
41
+ export interface ColumnType<T = any> {
42
+ title?: React.ReactNode | ((props: {
43
+ sortOrder?: SortOrder;
44
+ sortColumn?: ColumnType<T>;
45
+ }) => React.ReactNode);
46
+ key?: string;
47
+ dataIndex?: string | string[];
48
+ align?: 'left' | 'right' | 'center';
49
+ ellipsis?: boolean | {
50
+ showTitle?: boolean;
51
+ };
52
+ colSpan?: number;
53
+ width?: string | number;
54
+ minWidth?: string | number;
55
+ fixed?: boolean | 'left' | 'right';
56
+ render?: (value: any, record: T, index: number) => React.ReactNode;
57
+ sorter?: boolean | ((a: T, b: T) => number) | {
58
+ compare?: (a: T, b: T) => number;
59
+ multiple?: number;
60
+ };
61
+ sortOrder?: SortOrder | SortOrder[];
62
+ defaultSortOrder?: SortOrder;
63
+ onCell?: (record: T, index?: number) => React.HTMLAttributes<HTMLTableCellElement>;
64
+ onHeaderCell?: (column: ColumnType<T>) => React.HTMLAttributes<HTMLTableCellElement>;
65
+ className?: string;
66
+ children?: ColumnType<T>[];
67
+ onSorterChange?: (sorter: SorterResult<T>) => void;
68
+ rowSpan?: number;
69
+ rowScope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
70
+ }
71
+ export interface TableProps<T = any> {
72
+ columns?: ColumnType<T>[];
73
+ dataSource?: T[];
74
+ rowKey?: string | ((record: T) => string | number);
75
+ rowSelection?: TableRowSelection<T>;
76
+ pagination?: false | {
77
+ current?: number;
78
+ pageSize?: number;
79
+ total?: number;
80
+ defaultCurrent?: number;
81
+ defaultPageSize?: number;
82
+ showSizeChanger?: boolean;
83
+ pageSizeOptions?: string[];
84
+ showQuickJumper?: boolean | {
85
+ goButton?: React.ReactNode;
86
+ };
87
+ showTotal?: (total: number, range: [number, number]) => React.ReactNode;
88
+ onChange?: (page: number, pageSize?: number) => void;
89
+ onShowSizeChange?: (current: number, size: number) => void;
90
+ position?: 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
91
+ simple?: boolean;
92
+ responsive?: boolean;
93
+ };
94
+ size?: TableSize;
95
+ bordered?: boolean;
96
+ loading?: boolean | React.ReactNode;
97
+ locale?: {
98
+ emptyText?: React.ReactNode | (() => React.ReactNode);
99
+ selectAll?: React.ReactNode;
100
+ selectInvert?: React.ReactNode;
101
+ selectNone?: React.ReactNode;
102
+ selectionAll?: React.ReactNode;
103
+ sortTitle?: string;
104
+ expand?: string;
105
+ collapse?: string;
106
+ triggerDesc?: string;
107
+ triggerAsc?: string;
108
+ cancelSort?: string;
109
+ };
110
+ showHeader?: boolean;
111
+ title?: (currentData: T[]) => React.ReactNode;
112
+ footer?: (currentData: T[]) => React.ReactNode;
113
+ summary?: (currentData: T[]) => React.ReactNode;
114
+ scroll?: {
115
+ x?: number | string | true;
116
+ y?: number | string;
117
+ scrollToFirstRowOnChange?: boolean;
118
+ };
119
+ tableLayout?: TableLayout;
120
+ onChange?: (pagination: any, filters: Record<string, any>, sorter: SorterResult<T> | SorterResult<T>[], extra: TableCurrentDataSource<T>) => void;
121
+ onSorterChange?: (sorter: SorterResult<T> | SorterResult<T>[]) => void;
122
+ onPaginationChange?: (page: number, pageSize: number) => void;
123
+ onRow?: (record: T, index?: number) => React.HTMLAttributes<HTMLTableRowElement>;
124
+ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
125
+ className?: string;
126
+ style?: React.CSSProperties;
127
+ children?: React.ReactNode;
128
+ expandable?: {
129
+ expandedRowKeys?: (string | number)[];
130
+ defaultExpandedRowKeys?: (string | number)[];
131
+ expandedRowRender?: (record: T, index: number, indent: number, expanded: boolean) => React.ReactNode;
132
+ expandRowByClick?: boolean;
133
+ onExpand?: (expanded: boolean, record: T) => void;
134
+ onExpandedRowsChange?: (expandedKeys: (string | number)[]) => void;
135
+ defaultExpandAllRows?: boolean;
136
+ indentSize?: number;
137
+ expandIcon?: (props: {
138
+ expanded: boolean;
139
+ onExpand: (record: T, e: React.MouseEvent<HTMLElement>) => void;
140
+ record: T;
141
+ }) => React.ReactNode;
142
+ rowExpandable?: (record: T) => boolean;
143
+ };
144
+ indentSize?: number;
145
+ rowClassName?: string | ((record: T, index: number) => string);
146
+ onHeaderRow?: (columns: ColumnType<T>[], index?: number) => React.HTMLAttributes<HTMLTableRowElement>;
147
+ components?: {
148
+ header?: {
149
+ cell?: React.ComponentType<any>;
150
+ row?: React.ComponentType<any>;
151
+ wrapper?: React.ComponentType<any>;
152
+ };
153
+ body?: {
154
+ cell?: React.ComponentType<any>;
155
+ row?: React.ComponentType<any>;
156
+ wrapper?: React.ComponentType<any>;
157
+ };
158
+ };
159
+ sticky?: boolean | {
160
+ offsetHeader?: number;
161
+ offsetScroll?: number;
162
+ getContainer?: () => HTMLElement;
163
+ };
164
+ }
165
+ 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>) => import("react/jsx-runtime").JSX.Element;
166
+ export default Table;
@@ -10,4 +10,5 @@ export declare const WithStroke: Story;
10
10
  export declare const Sizes: Story;
11
11
  export declare const WithIcons: Story;
12
12
  export declare const Clickable: Story;
13
+ export declare const CustomColors: Story;
13
14
  export declare const ComplexExample: Story;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export type TagColor = 'Green' | 'Red' | 'Orange' | 'Cyan' | 'Violet' | 'Pink' | 'Gray' | 'Yellow' | 'Blue';
2
+ export type TagColor = 'Green' | 'Red' | 'Orange' | 'Cyan' | 'Violet' | 'Pink' | 'Gray' | 'Yellow' | 'Blue' | string;
3
3
  export type TagVariant = 'light' | 'fill';
4
4
  export type TagSize = 'large' | 'small';
5
5
  export type IconPosition = 'leading' | 'after' | 'none';
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import Textarea from './index';
3
+ declare const meta: Meta<typeof Textarea>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Textarea>;
6
+ export declare const Basic: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Disabled: Story;
9
+ export declare const Error: Story;
10
+ export declare const ReadOnly: Story;
11
+ export declare const WithCount: Story;
12
+ export declare const WithMaxLength: Story;
13
+ export declare const AutoSize: Story;
14
+ export declare const Controlled: Story;
15
+ export declare const AllStates: Story;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
3
+ /** 是否禁用 */
4
+ disabled?: boolean;
5
+ /** 是否显示错误状态 */
6
+ error?: boolean;
7
+ /** 是否只读 */
8
+ readOnly?: boolean;
9
+ /** 是否显示字符计数 */
10
+ showCount?: boolean;
11
+ /** 最大字符数 */
12
+ maxLength?: number;
13
+ /** 自定义类名 */
14
+ className?: string;
15
+ /** 自定义样式 */
16
+ style?: React.CSSProperties;
17
+ /** 占位符 */
18
+ placeholder?: string;
19
+ /** 值 */
20
+ value?: string;
21
+ /** 默认值 */
22
+ defaultValue?: string;
23
+ /** 行数 */
24
+ rows?: number;
25
+ /** 是否自动调整高度 */
26
+ autoSize?: boolean | {
27
+ minRows?: number;
28
+ maxRows?: number;
29
+ };
30
+ /** 变化回调 */
31
+ onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
32
+ /** 聚焦回调 */
33
+ onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
34
+ /** 失焦回调 */
35
+ onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
36
+ }
37
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
38
+ export default Textarea;