@kingsoft-ai/design 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -0
- package/dist/index.cjs +2485 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +9638 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types/__tests__/setup.d.ts +1 -0
- package/dist/types/__tests__/test-utils.d.ts +26 -0
- package/dist/types/button/Button.d.ts +56 -0
- package/dist/types/button/Button.style.d.ts +69 -0
- package/dist/types/button/IconButton.d.ts +47 -0
- package/dist/types/button/IconButton.style.d.ts +32 -0
- package/dist/types/button/__tests__/Button.test.d.ts +14 -0
- package/dist/types/button/__tests__/IconButton.test.d.ts +1 -0
- package/dist/types/button/index.d.ts +4 -0
- package/dist/types/button/tokens.d.ts +4 -0
- package/dist/types/checkbox/Checkbox.d.ts +42 -0
- package/dist/types/checkbox/Checkbox.style.d.ts +9 -0
- package/dist/types/checkbox/CheckboxButton.d.ts +52 -0
- package/dist/types/checkbox/CheckboxButton.style.d.ts +26 -0
- package/dist/types/checkbox/__tests__/Checkbox.test.d.ts +4 -0
- package/dist/types/checkbox/__tests__/CheckboxButton.test.d.ts +4 -0
- package/dist/types/checkbox/index.d.ts +7 -0
- package/dist/types/checkbox/tokens.d.ts +3 -0
- package/dist/types/collapse/Collapse.d.ts +50 -0
- package/dist/types/collapse/Collapse.style.d.ts +153 -0
- package/dist/types/collapse/CollapseItem.d.ts +46 -0
- package/dist/types/collapse/__tests__/Collapse.test.d.ts +14 -0
- package/dist/types/collapse/index.d.ts +4 -0
- package/dist/types/collapse/tokens.d.ts +3 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/input/Input.d.ts +73 -0
- package/dist/types/input/Input.style.d.ts +96 -0
- package/dist/types/input/__tests__/Input.test.d.ts +17 -0
- package/dist/types/input/index.d.ts +2 -0
- package/dist/types/input/tokens.d.ts +3 -0
- package/dist/types/menu/Menu.d.ts +37 -0
- package/dist/types/menu/Menu.style.d.ts +122 -0
- package/dist/types/menu/MenuFooter.d.ts +32 -0
- package/dist/types/menu/MenuGroup.d.ts +26 -0
- package/dist/types/menu/MenuHeader.d.ts +32 -0
- package/dist/types/menu/MenuItem.d.ts +40 -0
- package/dist/types/menu/SubMenuItem.d.ts +26 -0
- package/dist/types/menu/SubMenuPopover.d.ts +29 -0
- package/dist/types/menu/__tests__/Menu.test.d.ts +1 -0
- package/dist/types/menu/index.d.ts +13 -0
- package/dist/types/menu/tokens.d.ts +3 -0
- package/dist/types/numberInput/NumberInput.d.ts +59 -0
- package/dist/types/numberInput/NumberInput.style.d.ts +44 -0
- package/dist/types/numberInput/__tests__/NumberInput.test.d.ts +1 -0
- package/dist/types/numberInput/index.d.ts +2 -0
- package/dist/types/numberInput/tokens.d.ts +3 -0
- package/dist/types/progress/Progress.d.ts +64 -0
- package/dist/types/progress/Progress.style.d.ts +117 -0
- package/dist/types/progress/__tests__/Progress.test.d.ts +1 -0
- package/dist/types/progress/index.d.ts +3 -0
- package/dist/types/radio/Radio.d.ts +9 -0
- package/dist/types/radio/Radio.style.d.ts +36 -0
- package/dist/types/radio/__tests__/Radio.test.d.ts +13 -0
- package/dist/types/radio/index.d.ts +2 -0
- package/dist/types/radio/tokens.d.ts +3 -0
- package/dist/types/select/ListBox.d.ts +11 -0
- package/dist/types/select/Popover.d.ts +10 -0
- package/dist/types/select/Select.d.ts +140 -0
- package/dist/types/select/Select.style.d.ts +73 -0
- package/dist/types/select/__tests__/Select.test.d.ts +1 -0
- package/dist/types/select/index.d.ts +3 -0
- package/dist/types/select/tokens.d.ts +3 -0
- package/dist/types/skeleton/Skeleton.d.ts +23 -0
- package/dist/types/skeleton/Skeleton.style.d.ts +32 -0
- package/dist/types/skeleton/index.d.ts +3 -0
- package/dist/types/skeleton/tokens.d.ts +3 -0
- package/dist/types/stepper/Step.d.ts +24 -0
- package/dist/types/stepper/Stepper.d.ts +20 -0
- package/dist/types/stepper/Stepper.style.d.ts +57 -0
- package/dist/types/stepper/index.d.ts +3 -0
- package/dist/types/stepper/tokens.d.ts +3 -0
- package/dist/types/switch/Switch.d.ts +68 -0
- package/dist/types/switch/Switch.style.d.ts +100 -0
- package/dist/types/switch/__tests__/Switch.test.d.ts +14 -0
- package/dist/types/switch/index.d.ts +6 -0
- package/dist/types/switch/tokens.d.ts +3 -0
- package/dist/types/table/Table.d.ts +88 -0
- package/dist/types/table/Table.style.d.ts +97 -0
- package/dist/types/table/index.d.ts +2 -0
- package/dist/types/tag/Tag.d.ts +80 -0
- package/dist/types/tag/Tag.style.d.ts +83 -0
- package/dist/types/tag/__tests__/Tag.test.d.ts +14 -0
- package/dist/types/tag/index.d.ts +2 -0
- package/dist/types/tag/tokens.d.ts +3 -0
- package/dist/types/theme.d.ts +14 -0
- package/dist/types/types/component-tokens.types.d.ts +765 -0
- package/dist/types/types/theme-utils.d.ts +20 -0
- package/dist/types/upload/Upload.d.ts +80 -0
- package/dist/types/upload/Upload.style.d.ts +158 -0
- package/dist/types/upload/__tests__/Upload.test.d.ts +16 -0
- package/dist/types/upload/index.d.ts +3 -0
- package/package.json +73 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const NumberRoot: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
5
|
+
export declare const Label: import("@emotion/styled").StyledComponent<{
|
|
6
|
+
theme?: import("@emotion/react").Theme;
|
|
7
|
+
as?: React.ElementType;
|
|
8
|
+
}, import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {}>;
|
|
9
|
+
export declare const NumberGroup: import("@emotion/styled").StyledComponent<{
|
|
10
|
+
theme?: import("@emotion/react").Theme;
|
|
11
|
+
as?: React.ElementType;
|
|
12
|
+
} & {
|
|
13
|
+
size?: "md" | "lg";
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
controls?: "buttons" | "arrows";
|
|
16
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
17
|
+
export declare const NumberField: import("@emotion/styled").StyledComponent<{
|
|
18
|
+
theme?: import("@emotion/react").Theme;
|
|
19
|
+
as?: React.ElementType;
|
|
20
|
+
}, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
|
|
21
|
+
export declare const Description: import("@emotion/styled").StyledComponent<{
|
|
22
|
+
theme?: import("@emotion/react").Theme;
|
|
23
|
+
as?: React.ElementType;
|
|
24
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
25
|
+
/** 竖直箭头控件(展示在输入右侧) */
|
|
26
|
+
export declare const ArrowGroup: import("@emotion/styled").StyledComponent<{
|
|
27
|
+
theme?: import("@emotion/react").Theme;
|
|
28
|
+
as?: React.ElementType;
|
|
29
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
30
|
+
export declare const ArrowButton: import("@emotion/styled").StyledComponent<{
|
|
31
|
+
theme?: import("@emotion/react").Theme;
|
|
32
|
+
as?: React.ElementType;
|
|
33
|
+
} & {
|
|
34
|
+
direction: "up" | "down";
|
|
35
|
+
size?: "md" | "lg";
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
38
|
+
export declare const SideButton: import("@emotion/styled").StyledComponent<{
|
|
39
|
+
theme?: import("@emotion/react").Theme;
|
|
40
|
+
as?: React.ElementType;
|
|
41
|
+
} & {
|
|
42
|
+
pos?: "left" | "right";
|
|
43
|
+
size?: "md" | "lg";
|
|
44
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress 进度条组件
|
|
3
|
+
*
|
|
4
|
+
* 基于 react-aria 实现无障碍访问的进度条组件
|
|
5
|
+
* 完全符合 Figma 设计稿规范
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* // 线型进度条
|
|
10
|
+
* <Progress value={60} />
|
|
11
|
+
*
|
|
12
|
+
* // 环形进度条
|
|
13
|
+
* <Progress type="circle" value={80} />
|
|
14
|
+
*
|
|
15
|
+
* // 带状态的进度条
|
|
16
|
+
* <Progress value={100} status="success" />
|
|
17
|
+
*
|
|
18
|
+
* // 不显示百分比
|
|
19
|
+
* <Progress value={60} showPercent={false} />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import type { AriaProgressBarProps } from 'react-aria';
|
|
23
|
+
import { type ProgressType, type ProgressSize, type ProgressStatus } from './Progress.style';
|
|
24
|
+
export declare const TYPES: readonly ["line", "circle"];
|
|
25
|
+
export declare const SIZES: readonly ["sm", "md", "lg"];
|
|
26
|
+
export declare const STATUSES: readonly ["normal", "error", "warning", "success"];
|
|
27
|
+
export type ProgressProps = Omit<AriaProgressBarProps, 'value'> & {
|
|
28
|
+
/** 进度条类型:线型、环形 */
|
|
29
|
+
type?: ProgressType;
|
|
30
|
+
/** 进度条尺寸:小号、中号、大号 */
|
|
31
|
+
size?: ProgressSize;
|
|
32
|
+
/** 进度状态:进行中、失败、警示、成功 */
|
|
33
|
+
status?: ProgressStatus;
|
|
34
|
+
/** 当前进度值(0-100) */
|
|
35
|
+
value?: number;
|
|
36
|
+
/** 是否显示百分比文字 */
|
|
37
|
+
showPercent?: boolean;
|
|
38
|
+
/** 是否显示状态图标(仅线型进度条) */
|
|
39
|
+
showIcon?: boolean;
|
|
40
|
+
/** 自定义类名 */
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Progress 进度条组件
|
|
45
|
+
*
|
|
46
|
+
* 基于 Figma 设计规范实现的进度条组件,支持线型和环形两种类型
|
|
47
|
+
* 使用 react-aria 保证无障碍访问性
|
|
48
|
+
*/
|
|
49
|
+
export declare const Progress: import("react").ForwardRefExoticComponent<Omit<AriaProgressBarProps, "value"> & {
|
|
50
|
+
/** 进度条类型:线型、环形 */
|
|
51
|
+
type?: ProgressType;
|
|
52
|
+
/** 进度条尺寸:小号、中号、大号 */
|
|
53
|
+
size?: ProgressSize;
|
|
54
|
+
/** 进度状态:进行中、失败、警示、成功 */
|
|
55
|
+
status?: ProgressStatus;
|
|
56
|
+
/** 当前进度值(0-100) */
|
|
57
|
+
value?: number;
|
|
58
|
+
/** 是否显示百分比文字 */
|
|
59
|
+
showPercent?: boolean;
|
|
60
|
+
/** 是否显示状态图标(仅线型进度条) */
|
|
61
|
+
showIcon?: boolean;
|
|
62
|
+
/** 自定义类名 */
|
|
63
|
+
className?: string;
|
|
64
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress 进度条样式
|
|
3
|
+
*
|
|
4
|
+
* 基于三层 Token 体系:
|
|
5
|
+
* - Tier 1 (Global): 全局基础值
|
|
6
|
+
* - Tier 2 (Semantic): 语义化映射
|
|
7
|
+
* - Tier 3 (Component): 组件专用 Token
|
|
8
|
+
*
|
|
9
|
+
* 完全还原 Figma 设计稿规范
|
|
10
|
+
*/
|
|
11
|
+
export declare const progressTypes: readonly ["line", "circle"];
|
|
12
|
+
export declare const progressSizes: readonly ["sm", "md", "lg"];
|
|
13
|
+
export declare const progressStatuses: readonly ["normal", "error", "warning", "success"];
|
|
14
|
+
export type ProgressType = (typeof progressTypes)[number];
|
|
15
|
+
export type ProgressSize = (typeof progressSizes)[number];
|
|
16
|
+
export type ProgressStatus = (typeof progressStatuses)[number];
|
|
17
|
+
/**
|
|
18
|
+
* 线型进度条容器
|
|
19
|
+
*/
|
|
20
|
+
export declare const LineProgressRoot: import("@emotion/styled").StyledComponent<{
|
|
21
|
+
theme?: import("@emotion/react").Theme;
|
|
22
|
+
as?: React.ElementType;
|
|
23
|
+
} & {
|
|
24
|
+
size: ProgressSize;
|
|
25
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
26
|
+
/**
|
|
27
|
+
* 线型进度条轨道
|
|
28
|
+
*/
|
|
29
|
+
export declare const LineProgressTrack: import("@emotion/styled").StyledComponent<{
|
|
30
|
+
theme?: import("@emotion/react").Theme;
|
|
31
|
+
as?: React.ElementType;
|
|
32
|
+
} & {
|
|
33
|
+
size: ProgressSize;
|
|
34
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
35
|
+
/**
|
|
36
|
+
* 线型进度条填充
|
|
37
|
+
*/
|
|
38
|
+
export declare const LineProgressBar: import("@emotion/styled").StyledComponent<{
|
|
39
|
+
theme?: import("@emotion/react").Theme;
|
|
40
|
+
as?: React.ElementType;
|
|
41
|
+
} & {
|
|
42
|
+
status: ProgressStatus;
|
|
43
|
+
percent: number;
|
|
44
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
45
|
+
/**
|
|
46
|
+
* 进度百分比文字
|
|
47
|
+
*/
|
|
48
|
+
export declare const ProgressText: import("@emotion/styled").StyledComponent<{
|
|
49
|
+
theme?: import("@emotion/react").Theme;
|
|
50
|
+
as?: React.ElementType;
|
|
51
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
52
|
+
/**
|
|
53
|
+
* 状态图标容器
|
|
54
|
+
*/
|
|
55
|
+
export declare const StatusIcon: import("@emotion/styled").StyledComponent<{
|
|
56
|
+
theme?: import("@emotion/react").Theme;
|
|
57
|
+
as?: React.ElementType;
|
|
58
|
+
} & {
|
|
59
|
+
status: ProgressStatus;
|
|
60
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
61
|
+
/**
|
|
62
|
+
* 线型进度条信息区域(百分比+图标)
|
|
63
|
+
*/
|
|
64
|
+
export declare const LineProgressInfo: import("@emotion/styled").StyledComponent<{
|
|
65
|
+
theme?: import("@emotion/react").Theme;
|
|
66
|
+
as?: React.ElementType;
|
|
67
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
68
|
+
/**
|
|
69
|
+
* 环形进度条容器
|
|
70
|
+
*/
|
|
71
|
+
export declare const CircleProgressRoot: import("@emotion/styled").StyledComponent<{
|
|
72
|
+
theme?: import("@emotion/react").Theme;
|
|
73
|
+
as?: React.ElementType;
|
|
74
|
+
} & {
|
|
75
|
+
size: ProgressSize;
|
|
76
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
77
|
+
/**
|
|
78
|
+
* 环形进度条 SVG
|
|
79
|
+
*/
|
|
80
|
+
export declare const CircleProgressSvg: import("@emotion/styled").StyledComponent<{
|
|
81
|
+
theme?: import("@emotion/react").Theme;
|
|
82
|
+
as?: React.ElementType;
|
|
83
|
+
}, import("react").SVGProps<SVGSVGElement>, {}>;
|
|
84
|
+
/**
|
|
85
|
+
* 环形进度条轨道圆
|
|
86
|
+
*/
|
|
87
|
+
export declare const CircleProgressTrack: import("@emotion/styled").StyledComponent<{
|
|
88
|
+
theme?: import("@emotion/react").Theme;
|
|
89
|
+
as?: React.ElementType;
|
|
90
|
+
}, import("react").SVGProps<SVGCircleElement>, {}>;
|
|
91
|
+
/**
|
|
92
|
+
* 环形进度条填充圆
|
|
93
|
+
*/
|
|
94
|
+
export declare const CircleProgressBar: import("@emotion/styled").StyledComponent<{
|
|
95
|
+
theme?: import("@emotion/react").Theme;
|
|
96
|
+
as?: React.ElementType;
|
|
97
|
+
} & {
|
|
98
|
+
status: ProgressStatus;
|
|
99
|
+
}, import("react").SVGProps<SVGCircleElement>, {}>;
|
|
100
|
+
/**
|
|
101
|
+
* 环形进度条内容(百分比文字或图标)
|
|
102
|
+
*/
|
|
103
|
+
export declare const CircleProgressContent: import("@emotion/styled").StyledComponent<{
|
|
104
|
+
theme?: import("@emotion/react").Theme;
|
|
105
|
+
as?: React.ElementType;
|
|
106
|
+
} & {
|
|
107
|
+
size: ProgressSize;
|
|
108
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
109
|
+
/**
|
|
110
|
+
* 小号环形进度条的图标
|
|
111
|
+
*/
|
|
112
|
+
export declare const CircleProgressIcon: import("@emotion/styled").StyledComponent<{
|
|
113
|
+
theme?: import("@emotion/react").Theme;
|
|
114
|
+
as?: React.ElementType;
|
|
115
|
+
} & {
|
|
116
|
+
status: ProgressStatus;
|
|
117
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
|
|
3
|
+
label?: ReactNode;
|
|
4
|
+
description?: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export declare const Radio: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
|
|
7
|
+
label?: ReactNode;
|
|
8
|
+
description?: ReactNode;
|
|
9
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const RadioWrapper: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
} & {
|
|
5
|
+
disabled: boolean;
|
|
6
|
+
}, import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {}>;
|
|
7
|
+
export declare const RadioRoot: import("@emotion/styled").StyledComponent<{
|
|
8
|
+
theme?: import("@emotion/react").Theme;
|
|
9
|
+
as?: React.ElementType;
|
|
10
|
+
} & {
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
13
|
+
export declare const RadioNative: import("@emotion/styled").StyledComponent<{
|
|
14
|
+
theme?: import("@emotion/react").Theme;
|
|
15
|
+
as?: React.ElementType;
|
|
16
|
+
}, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
|
|
17
|
+
export declare const RadioIndicator: import("@emotion/styled").StyledComponent<{
|
|
18
|
+
theme?: import("@emotion/react").Theme;
|
|
19
|
+
as?: React.ElementType;
|
|
20
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
21
|
+
export declare const RadioText: import("@emotion/styled").StyledComponent<{
|
|
22
|
+
theme?: import("@emotion/react").Theme;
|
|
23
|
+
as?: React.ElementType;
|
|
24
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
25
|
+
export declare const RadioLabel: import("@emotion/styled").StyledComponent<{
|
|
26
|
+
theme?: import("@emotion/react").Theme;
|
|
27
|
+
as?: React.ElementType;
|
|
28
|
+
} & {
|
|
29
|
+
disabled: boolean;
|
|
30
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
31
|
+
export declare const RadioDescription: import("@emotion/styled").StyledComponent<{
|
|
32
|
+
theme?: import("@emotion/react").Theme;
|
|
33
|
+
as?: React.ElementType;
|
|
34
|
+
} & {
|
|
35
|
+
disabled: boolean;
|
|
36
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AriaListBoxProps } from 'react-aria';
|
|
2
|
+
import type { ListState } from '@react-stately/list';
|
|
3
|
+
interface ListBoxProps extends Omit<AriaListBoxProps<unknown>, 'children'> {
|
|
4
|
+
state: ListState<unknown>;
|
|
5
|
+
}
|
|
6
|
+
export declare function ListBox({ state, ...props }: ListBoxProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface MultiListBoxProps {
|
|
8
|
+
state: ListState<unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare function MultiListBox({ state }: MultiListBoxProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
2
|
+
import { type AriaPopoverProps } from 'react-aria';
|
|
3
|
+
interface PopoverProps extends Omit<AriaPopoverProps, 'popoverRef'> {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
state: any;
|
|
6
|
+
triggerRef: RefObject<Element>;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Popover({ children, state, offset, triggerRef, placement, ...props }: PopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type AriaSelectProps } from 'react-aria';
|
|
3
|
+
import { Item, Section } from '@react-stately/collections';
|
|
4
|
+
import type { Selection as SelectionType } from '@react-types/shared';
|
|
5
|
+
export type { Selection } from '@react-types/shared';
|
|
6
|
+
import type { SelectSize } from './Select.style';
|
|
7
|
+
export type SelectionMode = 'single' | 'multiple';
|
|
8
|
+
/**
|
|
9
|
+
* 选项类型定义
|
|
10
|
+
* 推荐使用 options 属性传入选项数据
|
|
11
|
+
*/
|
|
12
|
+
export interface SelectOptionType {
|
|
13
|
+
/** 选项值,作为唯一标识 */
|
|
14
|
+
value: string | number;
|
|
15
|
+
/** 选项显示文本 */
|
|
16
|
+
label: React.ReactNode;
|
|
17
|
+
/** 是否禁用该选项 */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface SelectProps<T> extends Omit<AriaSelectProps<T>, 'errorMessage' | 'selectedKey' | 'defaultSelectedKey' | 'onSelectionChange' | 'selectionMode' | 'children' | 'isDisabled'> {
|
|
21
|
+
/** 选择模式:single 单选 | multiple 多选 */
|
|
22
|
+
selectionMode?: SelectionMode;
|
|
23
|
+
/** 是否正在加载 */
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
/** 是否禁用 */
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
/** 尺寸 */
|
|
28
|
+
size?: SelectSize;
|
|
29
|
+
/** 是否全宽 */
|
|
30
|
+
fullWidth?: boolean;
|
|
31
|
+
/** 自定义类名 */
|
|
32
|
+
className?: string;
|
|
33
|
+
/** 自定义样式 */
|
|
34
|
+
style?: React.CSSProperties;
|
|
35
|
+
/** 占位符 */
|
|
36
|
+
placeholder?: string;
|
|
37
|
+
/** 错误信息 */
|
|
38
|
+
errorMessage?: React.ReactNode;
|
|
39
|
+
/** 多选时最大展示的 Tag 数量 */
|
|
40
|
+
maxTagCount?: number;
|
|
41
|
+
/** 单选时选中的 key */
|
|
42
|
+
selectedKey?: React.Key | null;
|
|
43
|
+
/** 单选时默认选中的 key */
|
|
44
|
+
defaultSelectedKey?: React.Key;
|
|
45
|
+
/** 多选时选中的 keys */
|
|
46
|
+
selectedKeys?: Iterable<React.Key>;
|
|
47
|
+
/** 多选时默认选中的 keys */
|
|
48
|
+
defaultSelectedKeys?: Iterable<React.Key>;
|
|
49
|
+
/** 选择变化回调(单选返回 key,多选返回 Set) */
|
|
50
|
+
onSelectionChange?: (keys: SelectionType) => void;
|
|
51
|
+
/**
|
|
52
|
+
* 选项数据(推荐使用)
|
|
53
|
+
*
|
|
54
|
+
* 提供 options 时会自动渲染选项列表,无需手动编写 <Select.Item>
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```tsx
|
|
58
|
+
* <Select
|
|
59
|
+
* options={[
|
|
60
|
+
* { value: 'apple', label: '苹果' },
|
|
61
|
+
* { value: 'banana', label: '香蕉' },
|
|
62
|
+
* { value: 'orange', label: '橙子', disabled: true },
|
|
63
|
+
* ]}
|
|
64
|
+
* />
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
options?: SelectOptionType[];
|
|
68
|
+
/**
|
|
69
|
+
* 子元素(手动编写选项时使用)
|
|
70
|
+
*
|
|
71
|
+
* 推荐使用 options 属性代替 children
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* <Select>
|
|
76
|
+
* <Select.Item key="apple">苹果</Select.Item>
|
|
77
|
+
* <Select.Item key="banana">香蕉</Select.Item>
|
|
78
|
+
* </Select>
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
children?: React.ReactNode;
|
|
82
|
+
}
|
|
83
|
+
interface SelectComponent {
|
|
84
|
+
<T extends object>(props: SelectProps<T> & {
|
|
85
|
+
ref?: React.Ref<HTMLButtonElement>;
|
|
86
|
+
}): React.ReactElement;
|
|
87
|
+
/**
|
|
88
|
+
* 选项组件
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```tsx
|
|
92
|
+
* <Select>
|
|
93
|
+
* <Select.Item key="apple">苹果</Select.Item>
|
|
94
|
+
* <Select.Item key="banana">香蕉</Select.Item>
|
|
95
|
+
* </Select>
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
Item: typeof Item;
|
|
99
|
+
/**
|
|
100
|
+
* 分组组件
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```tsx
|
|
104
|
+
* <Select>
|
|
105
|
+
* <Select.Section title="水果">
|
|
106
|
+
* <Select.Item key="apple">苹果</Select.Item>
|
|
107
|
+
* </Select.Section>
|
|
108
|
+
* </Select>
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
Section: typeof Section;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Select 选择器组件
|
|
115
|
+
*
|
|
116
|
+
* 基于 react-aria 实现的无障碍选择器
|
|
117
|
+
* 支持单选和多选模式
|
|
118
|
+
*
|
|
119
|
+
* @example 使用 options(推荐)
|
|
120
|
+
* ```tsx
|
|
121
|
+
* <Select
|
|
122
|
+
* options={[
|
|
123
|
+
* { value: 'apple', label: '苹果' },
|
|
124
|
+
* { value: 'banana', label: '香蕉' },
|
|
125
|
+
* ]}
|
|
126
|
+
* onSelectionChange={(key) => console.log(key)}
|
|
127
|
+
* />
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @example 使用 Select.Item
|
|
131
|
+
* ```tsx
|
|
132
|
+
* const { Item } = Select
|
|
133
|
+
*
|
|
134
|
+
* <Select>
|
|
135
|
+
* <Item key="apple">苹果</Item>
|
|
136
|
+
* <Item key="banana">香蕉</Item>
|
|
137
|
+
* </Select>
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare const Select: SelectComponent;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select 样式组件
|
|
3
|
+
*
|
|
4
|
+
* 基于三层 Token 体系
|
|
5
|
+
*/
|
|
6
|
+
export declare const selectSizes: readonly ["sm", "md", "lg"];
|
|
7
|
+
export type SelectSize = (typeof selectSizes)[number];
|
|
8
|
+
export declare const SelectTrigger: import("@emotion/styled").StyledComponent<{
|
|
9
|
+
theme?: import("@emotion/react").Theme;
|
|
10
|
+
as?: React.ElementType;
|
|
11
|
+
} & {
|
|
12
|
+
size: SelectSize;
|
|
13
|
+
fullWidth?: boolean;
|
|
14
|
+
isFocused?: boolean;
|
|
15
|
+
isError?: boolean;
|
|
16
|
+
isDisabled?: boolean;
|
|
17
|
+
isHovered?: boolean;
|
|
18
|
+
isOpen?: boolean;
|
|
19
|
+
isMultiple?: boolean;
|
|
20
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
21
|
+
export declare const SelectValue: import("@emotion/styled").StyledComponent<{
|
|
22
|
+
theme?: import("@emotion/react").Theme;
|
|
23
|
+
as?: React.ElementType;
|
|
24
|
+
} & {
|
|
25
|
+
isPlaceholder?: boolean;
|
|
26
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
27
|
+
export declare const SelectIcon: import("@emotion/styled").StyledComponent<{
|
|
28
|
+
theme?: import("@emotion/react").Theme;
|
|
29
|
+
as?: React.ElementType;
|
|
30
|
+
} & {
|
|
31
|
+
isOpen?: boolean;
|
|
32
|
+
size?: SelectSize;
|
|
33
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
34
|
+
export declare const ListBoxPopup: import("@emotion/styled").StyledComponent<{
|
|
35
|
+
theme?: import("@emotion/react").Theme;
|
|
36
|
+
as?: React.ElementType;
|
|
37
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
38
|
+
export declare const ListBoxContent: import("@emotion/styled").StyledComponent<{
|
|
39
|
+
theme?: import("@emotion/react").Theme;
|
|
40
|
+
as?: React.ElementType;
|
|
41
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, {}>;
|
|
42
|
+
export declare const OptionItem: import("@emotion/styled").StyledComponent<{
|
|
43
|
+
theme?: import("@emotion/react").Theme;
|
|
44
|
+
as?: React.ElementType;
|
|
45
|
+
} & {
|
|
46
|
+
isSelected?: boolean;
|
|
47
|
+
isFocused?: boolean;
|
|
48
|
+
isDisabled?: boolean;
|
|
49
|
+
}, import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, {}>;
|
|
50
|
+
export declare const OptionText: import("@emotion/styled").StyledComponent<{
|
|
51
|
+
theme?: import("@emotion/react").Theme;
|
|
52
|
+
as?: React.ElementType;
|
|
53
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
54
|
+
export declare const OptionIcon: import("@emotion/styled").StyledComponent<{
|
|
55
|
+
theme?: import("@emotion/react").Theme;
|
|
56
|
+
as?: React.ElementType;
|
|
57
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
58
|
+
export declare const LoadingWrapper: import("@emotion/styled").StyledComponent<{
|
|
59
|
+
theme?: import("@emotion/react").Theme;
|
|
60
|
+
as?: React.ElementType;
|
|
61
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
62
|
+
export declare const EmptyState: import("@emotion/styled").StyledComponent<{
|
|
63
|
+
theme?: import("@emotion/react").Theme;
|
|
64
|
+
as?: React.ElementType;
|
|
65
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
66
|
+
export declare const TagsContainer: import("@emotion/styled").StyledComponent<{
|
|
67
|
+
theme?: import("@emotion/react").Theme;
|
|
68
|
+
as?: React.ElementType;
|
|
69
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
70
|
+
export declare const CheckboxWrapper: import("@emotion/styled").StyledComponent<{
|
|
71
|
+
theme?: import("@emotion/react").Theme;
|
|
72
|
+
as?: React.ElementType;
|
|
73
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { skeletonVariants, skeletonRadii, type SkeletonVariant, type SkeletonRadius } from './Skeleton.style';
|
|
3
|
+
export interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** Skeleton 展示形态 */
|
|
5
|
+
variant?: SkeletonVariant;
|
|
6
|
+
/** 自定义宽度,支持 number(px) 或 string */
|
|
7
|
+
width?: number | string;
|
|
8
|
+
/** 自定义高度,支持 number(px) 或 string */
|
|
9
|
+
height?: number | string;
|
|
10
|
+
/** 文本模式下的行数 */
|
|
11
|
+
lines?: number;
|
|
12
|
+
/** 是否展示骨架动画 */
|
|
13
|
+
animate?: boolean;
|
|
14
|
+
/** 方形/矩形骨架的圆角尺寸 */
|
|
15
|
+
radius?: SkeletonRadius;
|
|
16
|
+
/** 加载完成后展示真实内容 */
|
|
17
|
+
loaded?: boolean;
|
|
18
|
+
/** 加载完成后展示的真实内容 */
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
22
|
+
export { skeletonVariants, skeletonRadii };
|
|
23
|
+
export type { SkeletonVariant, SkeletonRadius };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const skeletonVariants: readonly ["rect", "text", "circle"];
|
|
2
|
+
export type SkeletonVariant = (typeof skeletonVariants)[number];
|
|
3
|
+
export declare const skeletonRadii: readonly ["sm", "md", "lg", "pill"];
|
|
4
|
+
export type SkeletonRadius = (typeof skeletonRadii)[number];
|
|
5
|
+
type SkeletonRootProps = {
|
|
6
|
+
$variant: SkeletonVariant;
|
|
7
|
+
$animate: boolean;
|
|
8
|
+
$radius: SkeletonRadius;
|
|
9
|
+
$width?: string;
|
|
10
|
+
$height?: string;
|
|
11
|
+
};
|
|
12
|
+
type SkeletonLineProps = {
|
|
13
|
+
$animate: boolean;
|
|
14
|
+
$isLast: boolean;
|
|
15
|
+
$customWidth?: string;
|
|
16
|
+
};
|
|
17
|
+
type SkeletonStackProps = {
|
|
18
|
+
$width?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare const SkeletonRoot: import("@emotion/styled").StyledComponent<{
|
|
21
|
+
theme?: import("@emotion/react").Theme;
|
|
22
|
+
as?: React.ElementType;
|
|
23
|
+
} & SkeletonRootProps, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
24
|
+
export declare const SkeletonStack: import("@emotion/styled").StyledComponent<{
|
|
25
|
+
theme?: import("@emotion/react").Theme;
|
|
26
|
+
as?: React.ElementType;
|
|
27
|
+
} & SkeletonStackProps, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
28
|
+
export declare const SkeletonLine: import("@emotion/styled").StyledComponent<{
|
|
29
|
+
theme?: import("@emotion/react").Theme;
|
|
30
|
+
as?: React.ElementType;
|
|
31
|
+
} & SkeletonLineProps, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
32
|
+
export {};
|