@fangxinyan/lumina 0.2.0 → 0.2.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.
- package/README.md +18 -7
- package/dist/{Table-ADVN6LXP.css → Table-YKVM42SW.css} +1 -1
- package/dist/Table.cjs +3 -3
- package/dist/Table.js +1 -1
- package/dist/{chunk-55NTFU7Y.js → chunk-E6R63QOL.js} +3 -3
- package/dist/{chunk-55NTFU7Y.js.map → chunk-E6R63QOL.js.map} +1 -1
- package/dist/{chunk-IFERLHCL.cjs → chunk-SBMOIE5C.cjs} +3 -3
- package/dist/{chunk-IFERLHCL.cjs.map → chunk-SBMOIE5C.cjs.map} +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/docs/llms/accordion.md +66 -0
- package/docs/llms/alert.md +64 -0
- package/docs/llms/avatar.md +55 -0
- package/docs/llms/badge.md +41 -0
- package/docs/llms/button.md +122 -0
- package/docs/llms/calendar.md +44 -0
- package/docs/llms/card.md +68 -0
- package/docs/llms/cascader.md +33 -0
- package/docs/llms/checkbox.md +41 -0
- package/docs/llms/colorpicker.md +82 -0
- package/docs/llms/divider.md +69 -0
- package/docs/llms/drawer.md +70 -0
- package/docs/llms/empty.md +52 -0
- package/docs/llms/icon.md +34 -0
- package/docs/llms/image.md +39 -0
- package/docs/llms/input.md +127 -0
- package/docs/llms/intro.md +6 -0
- package/docs/llms/list.md +41 -0
- package/docs/llms/modal.md +89 -0
- package/docs/llms/pagination.md +82 -0
- package/docs/llms/popover.md +34 -0
- package/docs/llms/progress.md +58 -0
- package/docs/llms/radio.md +43 -0
- package/docs/llms/select.md +99 -0
- package/docs/llms/sidebar.md +43 -0
- package/docs/llms/skeleton.md +88 -0
- package/docs/llms/slider.md +72 -0
- package/docs/llms/spinner.md +58 -0
- package/docs/llms/switch.md +60 -0
- package/docs/llms/table.md +188 -0
- package/docs/llms/tablepro.md +56 -0
- package/docs/llms/tabs.md +50 -0
- package/docs/llms/tag.md +77 -0
- package/docs/llms/theme.md +165 -0
- package/docs/llms/titlebar.md +40 -0
- package/docs/llms/toast.md +51 -0
- package/docs/llms/tooltip.md +38 -0
- package/docs/llms/typography.md +103 -0
- package/docs/llms/windowcontrols.md +31 -0
- package/docs/llms.md +97 -0
- package/package.json +8 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Divider 分隔符
|
|
2
|
+
|
|
3
|
+
> 对内容进行分割。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Divider } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 水平分隔
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Divider />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 带文字
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Divider label="分割标题" />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 文字位置
|
|
26
|
+
|
|
27
|
+
orientation 控制文字在线上的位置。
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<Divider label="左对齐" orientation="left" />
|
|
31
|
+
<Divider label="居中" orientation="center" />
|
|
32
|
+
<Divider label="右对齐" orientation="right" />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 虚线
|
|
36
|
+
|
|
37
|
+
dashed 切换为虚线样式,也适用于带文字或垂直方向。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<Divider dashed />
|
|
41
|
+
<Divider dashed label="虚线带文字" />
|
|
42
|
+
<Row>
|
|
43
|
+
<span>左</span>
|
|
44
|
+
<Divider direction="vertical" dashed />
|
|
45
|
+
<span>右</span>
|
|
46
|
+
</Row>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 垂直分隔
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<Divider direction="vertical" />
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## API
|
|
56
|
+
|
|
57
|
+
**Divider**
|
|
58
|
+
|
|
59
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
60
|
+
| --- | --- | --- | --- |
|
|
61
|
+
| direction | `"horizontal" | "vertical"` | `"horizontal"` | 方向 |
|
|
62
|
+
| label | `ReactNode` | — | 中部文字 |
|
|
63
|
+
| orientation | `"left" | "center" | "right"` | `"center"` | 文字位置(仅水平) |
|
|
64
|
+
| dashed | `boolean` | `false` | 虚线样式 |
|
|
65
|
+
| sunken | `boolean` | `false` | 凹陷凹槽样式 |
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Drawer 抽屉
|
|
2
|
+
|
|
3
|
+
> 从屏幕边缘滑出的浮层。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Drawer } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Drawer open={d} onClose={...} title="标题">...</Drawer>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 标题右侧 extra
|
|
20
|
+
|
|
21
|
+
extra 渲染到标题右边,常用来放刷新 / 更多 / 保存按钮。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Drawer
|
|
25
|
+
title="订单详情"
|
|
26
|
+
extra={<><IconButton icon="edit" tip="编辑" /><Button variant="primary">保存</Button></>}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 四个方向
|
|
31
|
+
|
|
32
|
+
placement 控制滑出方向;top / bottom 用 size 控高度。
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
<Drawer placement="left" size={320} />
|
|
36
|
+
<Drawer placement="top" size={240} />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 无遮罩 (mask={false})
|
|
40
|
+
|
|
41
|
+
关闭遮罩的抽屉不阻塞页面其他交互,适合辅助面板。
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
<Drawer mask={false} />
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## API
|
|
48
|
+
|
|
49
|
+
**Drawer**
|
|
50
|
+
|
|
51
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| open \* | `boolean` | — | 可见 |
|
|
54
|
+
| onClose | `() => void` | — | 关闭回调 |
|
|
55
|
+
| placement | `"left" | "right" | "top" | "bottom"` | `"right"` | 出现位置 |
|
|
56
|
+
| size | `number | string` | `380` | 宽度(左右)或高度(上下) |
|
|
57
|
+
| title / footer / children | `ReactNode` | — | 头/脚/主体 |
|
|
58
|
+
| extra | `ReactNode` | — | 标题右侧的附加操作区 |
|
|
59
|
+
| mask | `boolean` | `true` | 是否渲染遮罩 |
|
|
60
|
+
| maskClosable | `boolean` | `true` | 点击遮罩关闭 |
|
|
61
|
+
| keyboard | `boolean` | `true` | Esc 关闭 |
|
|
62
|
+
| closable | `boolean` | `true` | 右上角 × |
|
|
63
|
+
| closeIcon | `ReactNode` | — | 自定义关闭图标 |
|
|
64
|
+
| destroyOnClose | `boolean` | `false` | 关闭时卸载子树 |
|
|
65
|
+
| afterOpenChange | `(open: boolean) => void` | — | 动画结束回调 |
|
|
66
|
+
| zIndex | `number` | — | 覆盖 z-index |
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Empty 空状态
|
|
2
|
+
|
|
3
|
+
> 列表、页面或容器无数据时的占位。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Empty } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Empty title="暂无项目" description="创建一个开始吧" action={<Button>新建</Button>} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Subtle 变体
|
|
20
|
+
|
|
21
|
+
去掉凹陷图标框,用于嵌入已有卡片/对话框中。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Empty variant="subtle" icon={<Icon name="search" size={28} />} title="未找到结果" />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 尺寸
|
|
28
|
+
|
|
29
|
+
sm 适合列表内嵌,md 是默认,lg 用作整页占位。
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Empty size="sm" title="暂无数据" />
|
|
33
|
+
<Empty size="md" title="暂无数据" />
|
|
34
|
+
<Empty size="lg" title="暂无数据" />
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## API
|
|
38
|
+
|
|
39
|
+
**Empty**
|
|
40
|
+
|
|
41
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
42
|
+
| --- | --- | --- | --- |
|
|
43
|
+
| title | `ReactNode` | `"暂无内容"` | 标题 |
|
|
44
|
+
| description | `ReactNode` | — | 描述 |
|
|
45
|
+
| icon | `ReactNode` | — | 图标 |
|
|
46
|
+
| action | `ReactNode` | — | 底部操作 |
|
|
47
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
|
|
48
|
+
| variant | `"default" | "subtle"` | `"default"` | 样式 |
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Icon 图标
|
|
2
|
+
|
|
3
|
+
> 线性图标集,继承当前文字颜色,可调整尺寸与描边。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Icon } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
通过 name 指定图标,size 控制尺寸,stroke 控制描边粗细。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<Icon name="search" size={16} />
|
|
19
|
+
<Icon name="heart" size={20} stroke={1.5} />
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
**Icon**
|
|
25
|
+
|
|
26
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| name \* | `IconName` | — | 图标名 |
|
|
29
|
+
| size | `number` | `16` | 尺寸 (px) |
|
|
30
|
+
| stroke | `number` | `2` | 描边粗细 |
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Image 图片
|
|
2
|
+
|
|
3
|
+
> 凹陷外框包裹的图片容器,带预览、错误占位。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Image, ImageGrid } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Image src={url} width={240} height={160} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 图片组
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<ImageGrid images={images} />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## API
|
|
26
|
+
|
|
27
|
+
**Image**
|
|
28
|
+
|
|
29
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| src | `string` | — | 图片 URL |
|
|
32
|
+
| width / height | `number | string` | — | 尺寸 |
|
|
33
|
+
| preview | `boolean` | `true` | 支持点击全屏预览 |
|
|
34
|
+
| hover | `boolean` | `true` | 悬浮放大 |
|
|
35
|
+
| placeholder | `ReactNode` | — | 占位/错误时内容 |
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Input 输入框
|
|
2
|
+
|
|
3
|
+
> 凹陷凹槽式输入域,支持前后置图标、错误态、禁用态。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Input, Textarea } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
const [v, setV] = useState("");
|
|
17
|
+
<Input placeholder="输入用户名" value={v} onChange={setV} leadingIcon="user" />
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 前后置图标
|
|
21
|
+
|
|
22
|
+
leadingIcon / trailingIcon。
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
<Input placeholder="搜索..." leadingIcon="search" />
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 密码切换
|
|
29
|
+
|
|
30
|
+
trailingIcon 可点击切换密码可见性。
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<Input
|
|
34
|
+
type={showPw ? "text" : "password"}
|
|
35
|
+
trailingIcon={showPw ? "eyeOff" : "eye"}
|
|
36
|
+
onTrailingIconClick={() => setShowPw(s => !s)}
|
|
37
|
+
/>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 校验错误
|
|
41
|
+
|
|
42
|
+
invalid 触发红色凹槽。
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
<Input invalid hint="请输入有效的邮箱" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 可清除
|
|
49
|
+
|
|
50
|
+
allowClear 在值非空时显示 × 按钮,点击即清空。
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
<Input value={v} onChange={setV} allowClear placeholder="输入后右侧会出现 ×" />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 前缀 / 后缀
|
|
57
|
+
|
|
58
|
+
prefix/suffix 在输入框内部以静态文本形式呈现,常用于单位或协议。
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<Input prefix="https://" suffix=".com" defaultValue="lumina" />
|
|
62
|
+
<Input prefix="¥" suffix="元" defaultValue="1280" />
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 字数统计 + maxLength
|
|
66
|
+
|
|
67
|
+
showCount 显示当前字数,配合 maxLength 显示 N / max。
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<Input
|
|
71
|
+
value={v}
|
|
72
|
+
onChange={setV}
|
|
73
|
+
maxLength={20}
|
|
74
|
+
showCount
|
|
75
|
+
placeholder="最多输入 20 个字"
|
|
76
|
+
/>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 多行文本
|
|
80
|
+
|
|
81
|
+
Textarea 与 Input 共享同款凹槽,也支持 allowClear / maxLength / showCount。
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<Textarea
|
|
85
|
+
placeholder="..."
|
|
86
|
+
value={msg}
|
|
87
|
+
onChange={setMsg}
|
|
88
|
+
allowClear
|
|
89
|
+
maxLength={300}
|
|
90
|
+
showCount
|
|
91
|
+
/>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## API
|
|
95
|
+
|
|
96
|
+
**Input**
|
|
97
|
+
|
|
98
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
99
|
+
| --- | --- | --- | --- |
|
|
100
|
+
| value / defaultValue | `string` | — | 受控值 / 初值 |
|
|
101
|
+
| onChange | `(value: string, e) => void` | — | 变更回调 |
|
|
102
|
+
| placeholder | `string` | — | 占位文案 |
|
|
103
|
+
| leadingIcon / trailingIcon | `IconName` | — | 前/后置图标 |
|
|
104
|
+
| prefix | `ReactNode` | — | 左侧内嵌内容(在 leadingIcon 之后) |
|
|
105
|
+
| suffix | `ReactNode` | — | 右侧内嵌内容(在 trailingIcon 之前) |
|
|
106
|
+
| allowClear | `boolean` | `false` | 显示内置的清除按钮 |
|
|
107
|
+
| maxLength | `number` | — | 最大字符数,透传至原生 input |
|
|
108
|
+
| showCount | `boolean` | `false` | 在输入框下方显示字数统计 |
|
|
109
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
|
|
110
|
+
| invalid | `boolean` | `false` | 错误态 |
|
|
111
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
**Textarea**
|
|
115
|
+
|
|
116
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
117
|
+
| --- | --- | --- | --- |
|
|
118
|
+
| value / defaultValue | `string` | — | 受控值 / 初值 |
|
|
119
|
+
| onChange | `(value: string, e) => void` | — | 变更回调 |
|
|
120
|
+
| allowClear | `boolean` | `false` | 右上角显示清除按钮 |
|
|
121
|
+
| maxLength | `number` | — | 最大字符数 |
|
|
122
|
+
| showCount | `boolean` | `false` | 显示字数统计 |
|
|
123
|
+
| invalid | `boolean` | `false` | 错误态 |
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# List 列表
|
|
2
|
+
|
|
3
|
+
> 承载一组结构化的同质化数据。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { List } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础列表
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<List items={[{ key, title, description, avatar, actions }]} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
**List**
|
|
22
|
+
|
|
23
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| items \* | `ListItem[]` | — | 数据列表 |
|
|
26
|
+
| dividers | `boolean` | `true` | 项之间显示分隔线 |
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
**ListItem**
|
|
30
|
+
|
|
31
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| key \* | `string` | — | 唯一键 |
|
|
34
|
+
| title / description | `ReactNode` | — | 标题/描述 |
|
|
35
|
+
| avatar | `ReactNode` | — | 前置图标或头像 |
|
|
36
|
+
| actions | `ReactNode` | — | 右侧操作区 |
|
|
37
|
+
| onClick | `() => void` | — | 点击回调 |
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Modal 对话框
|
|
2
|
+
|
|
3
|
+
> 在不离开当前页面的前提下处理事务。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Modal } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Modal open={m} onClose={...} title="标题">...</Modal>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 确认操作 (footer 自定义)
|
|
20
|
+
|
|
21
|
+
用 footer 自定义底部按钮。传 null 可以去掉 footer。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Modal footer={<><Button>取消</Button><Button danger>删除</Button></>}>...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### onOk / onCancel + 按钮定制
|
|
28
|
+
|
|
29
|
+
用默认 footer 的 onOk / onCancel 区分动作,okText / cancelText 改文案,okButtonProps 透传样式。
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Modal
|
|
33
|
+
onOk={handleSave}
|
|
34
|
+
onCancel={() => setOpen(false)}
|
|
35
|
+
okText="发布"
|
|
36
|
+
cancelText="不发了"
|
|
37
|
+
okButtonProps={{ icon: "send" }}
|
|
38
|
+
/>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 异步 confirmLoading
|
|
42
|
+
|
|
43
|
+
提交过程中 confirmLoading 显示按钮 spinner 并自动禁用;完成后外层再 setOpen(false)。
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
<Modal confirmLoading={submitting} onOk={async () => {
|
|
47
|
+
setSubmitting(true);
|
|
48
|
+
await api.save();
|
|
49
|
+
setSubmitting(false);
|
|
50
|
+
setOpen(false);
|
|
51
|
+
}} />
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 隐藏关闭按钮
|
|
55
|
+
|
|
56
|
+
closable={false} 隐藏右上角 ×,closeIcon 可自定义。
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<Modal closable={false} />
|
|
60
|
+
<Modal closeIcon={<Icon name="chevDown" />} />
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## API
|
|
64
|
+
|
|
65
|
+
**Modal**
|
|
66
|
+
|
|
67
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
68
|
+
| --- | --- | --- | --- |
|
|
69
|
+
| open \* | `boolean` | — | 是否可见 |
|
|
70
|
+
| onClose | `() => void` | — | 关闭回调(遮罩/Esc/关闭按钮) |
|
|
71
|
+
| onOk | `() => void` | — | 默认 OK 按钮点击 |
|
|
72
|
+
| onCancel | `() => void` | — | 默认 Cancel 按钮 / Esc / 关闭 / 遮罩触发,缺省则用 onClose |
|
|
73
|
+
| title / description | `ReactNode` | — | 标题/说明 |
|
|
74
|
+
| footer | `ReactNode` | — | 自定义底部(null 去除) |
|
|
75
|
+
| okText / cancelText | `ReactNode` | `"确定" / "取消"` | 默认按钮文案 |
|
|
76
|
+
| okButtonProps / cancelButtonProps | `Partial<ButtonProps>` | — | 透传给默认按钮 |
|
|
77
|
+
| confirmLoading | `boolean` | `false` | OK 按钮显示 spinner 并禁用 |
|
|
78
|
+
| closable | `boolean` | `true` | 显示右上角 × |
|
|
79
|
+
| closeIcon | `ReactNode` | — | 自定义关闭图标 |
|
|
80
|
+
| maskClosable | `boolean` | `true` | 点击遮罩关闭 |
|
|
81
|
+
| escClosable | `boolean` | `true` | Esc 关闭 |
|
|
82
|
+
| width | `number | string` | `440` | 宽度 |
|
|
83
|
+
| destroyOnClose | `boolean` | `false` | 关闭时卸载子树 |
|
|
84
|
+
| afterOpenChange | `(open: boolean) => void` | — | 动画结束后回调 |
|
|
85
|
+
| zIndex | `number` | — | 覆盖遮罩 z-index |
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Pagination 分页
|
|
2
|
+
|
|
3
|
+
> 分页控件,支持快速跳转与每页条数切换。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Pagination } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Pagination total={85} page={page} onChange={setPage} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 快速跳转
|
|
20
|
+
|
|
21
|
+
启用 showQuickJumper,输入页码按 Enter 跳转,超出范围会被夹紧。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Pagination
|
|
25
|
+
total={250}
|
|
26
|
+
page={jumpPage}
|
|
27
|
+
onChange={setJumpPage}
|
|
28
|
+
showQuickJumper
|
|
29
|
+
/>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 每页条数
|
|
33
|
+
|
|
34
|
+
启用 showSizeChanger,切换条数会回到第 1 页并触发 onShowSizeChange + onChange(1)。
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
<Pagination
|
|
38
|
+
total={320}
|
|
39
|
+
page={sizePage}
|
|
40
|
+
pageSize={pageSize}
|
|
41
|
+
onChange={setSizePage}
|
|
42
|
+
showSizeChanger
|
|
43
|
+
onShowSizeChange={(_cur, size) => setPageSize(size)}
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 跳转 + 条数 + 自定义选项
|
|
48
|
+
|
|
49
|
+
同时启用两项,并通过 pageSizeOptions 自定义候选条数。
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<Pagination
|
|
53
|
+
total={999}
|
|
54
|
+
page={fullPage}
|
|
55
|
+
pageSize={fullPageSize}
|
|
56
|
+
onChange={setFullPage}
|
|
57
|
+
showQuickJumper
|
|
58
|
+
showSizeChanger
|
|
59
|
+
pageSizeOptions={[20, 50, 100, 200]}
|
|
60
|
+
onShowSizeChange={(_cur, size) => setFullPageSize(size)}
|
|
61
|
+
/>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## API
|
|
65
|
+
|
|
66
|
+
**Pagination**
|
|
67
|
+
|
|
68
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
69
|
+
| --- | --- | --- | --- |
|
|
70
|
+
| total \* | `number` | — | 数据总条数 |
|
|
71
|
+
| pageSize | `number` | `10` | 每页条数 |
|
|
72
|
+
| page / defaultPage | `number` | `1` | 受控/初始页码 |
|
|
73
|
+
| onChange | `(page: number) => void` | — | 页码变化回调 |
|
|
74
|
+
| siblings | `number` | `1` | 当前页两侧可见的页码数 |
|
|
75
|
+
| showQuickJumper | `boolean` | `false` | 显示跳转输入框,按 Enter 跳转 |
|
|
76
|
+
| showSizeChanger | `boolean` | `false` | 显示每页条数选择器,切换后回到第 1 页 |
|
|
77
|
+
| pageSizeOptions | `number[]` | `[10, 20, 50, 100]` | 每页条数候选项 |
|
|
78
|
+
| onShowSizeChange | `(current: number, size: number) => void` | — | 每页条数变更回调 |
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Popover 气泡卡片
|
|
2
|
+
|
|
3
|
+
> 比 Tooltip 更丰富,可承载交互内容。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Popover } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Popover content={<>...</>}>
|
|
17
|
+
<Button>触发</Button>
|
|
18
|
+
</Popover>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## API
|
|
22
|
+
|
|
23
|
+
**Popover**
|
|
24
|
+
|
|
25
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| content \* | `ReactNode` | — | 浮层内容 |
|
|
28
|
+
| placement | `"top" | "bottom" | "left" | "right"` | `"bottom"` | 位置 |
|
|
29
|
+
| trigger | `"click" | "hover"` | `"click"` | 触发方式 |
|
|
30
|
+
| open / defaultOpen / onOpenChange | `—` | — | 受控显示 |
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Progress 进度
|
|
2
|
+
|
|
3
|
+
> 条形进度 Progress 与环形进度 Ring。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Progress, Ring } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 条形进度
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Progress value={v} label="下载中" showValue />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 尺寸
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Progress size="sm" value={60} />
|
|
23
|
+
<Progress value={60} />
|
|
24
|
+
<Progress size="lg" value={60} />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 环形进度
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<Ring value={65} />
|
|
31
|
+
<Ring value={90} tone="success" size={80}><strong>90%</strong></Ring>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## API
|
|
35
|
+
|
|
36
|
+
**Progress**
|
|
37
|
+
|
|
38
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| value \* | `number` | — | 0–max 之间 |
|
|
41
|
+
| max | `number` | `100` | 最大值 |
|
|
42
|
+
| tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
|
|
43
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
|
|
44
|
+
| label | `ReactNode` | — | 顶部文案 |
|
|
45
|
+
| showValue | `boolean` | `false` | 显示百分比 |
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
**Ring**
|
|
49
|
+
|
|
50
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| value \* | `number` | — | 0–100 |
|
|
53
|
+
| size | `number` | `72` | 直径 (px) |
|
|
54
|
+
| tone | `"accent" | "success" | ...` | `"accent"` | 色调 |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
[← 回到索引](../llms.md)
|