@fangxinyan/lumina 0.1.6 → 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/{Accordion-GSBY5T5U.css → Accordion-3TQPKNN3.css} +8 -1
- package/dist/Accordion.cjs +2 -2
- package/dist/Accordion.d.cts +12 -0
- package/dist/Accordion.d.ts +12 -0
- package/dist/Accordion.js +1 -1
- package/dist/{Alert-LSKBYDRI.css → Alert-JJ7GB3UU.css} +11 -0
- package/dist/Alert.cjs +2 -2
- package/dist/Alert.d.cts +4 -0
- package/dist/Alert.d.ts +4 -0
- package/dist/Alert.js +1 -1
- package/dist/{Avatar-OXDSG5Q6.css → Avatar-R5A4AFKZ.css} +4 -0
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.d.cts +2 -0
- package/dist/Avatar.d.ts +2 -0
- package/dist/Avatar.js +1 -1
- package/dist/{Button-5UI7QXGU.css → Button-SDQD25AG.css} +2 -0
- package/dist/Button.cjs +3 -3
- package/dist/Button.d.cts +2 -0
- package/dist/Button.d.ts +2 -0
- package/dist/Button.js +1 -1
- package/dist/Calendar.cjs +2 -2
- package/dist/Calendar.d.cts +8 -0
- package/dist/Calendar.d.ts +8 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Card-2CHHFD4Y.css → Card-RG7ECXL2.css} +11 -0
- package/dist/Card.cjs +3 -3
- package/dist/Card.d.cts +2 -0
- package/dist/Card.d.ts +2 -0
- package/dist/Card.js +1 -1
- package/dist/{Divider-Z37INS5E.css → Divider-OEE4Q2KS.css} +31 -0
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.d.cts +7 -0
- package/dist/Divider.d.ts +7 -0
- package/dist/Divider.js +1 -1
- package/dist/{Empty-VM23UNLQ.css → Empty-NQ72W3D7.css} +22 -0
- package/dist/Empty.cjs +4 -4
- package/dist/Empty.d.cts +42 -2
- package/dist/Empty.d.ts +42 -2
- package/dist/Empty.js +1 -1
- package/dist/Input-33CAH4O6.css +134 -0
- package/dist/Input.cjs +3 -3
- package/dist/Input.d.cts +17 -1
- package/dist/Input.d.ts +17 -1
- package/dist/Input.js +1 -1
- package/dist/Modal.cjs +3 -3
- package/dist/Modal.js +2 -2
- package/dist/{Pagination-6FFOI4NM.css → Pagination-YIRYJUXP.css} +33 -0
- package/dist/Pagination.cjs +5 -2
- package/dist/Pagination.d.cts +14 -0
- package/dist/Pagination.d.ts +14 -0
- package/dist/Pagination.js +4 -1
- package/dist/Select.cjs +3 -3
- package/dist/Select.js +2 -2
- package/dist/{Slider-RE4HZQKF.css → Slider-X4PVA65R.css} +51 -2
- package/dist/Slider.cjs +2 -2
- package/dist/Slider.d.cts +20 -5
- package/dist/Slider.d.ts +20 -5
- package/dist/Slider.js +1 -1
- package/dist/Switch-36KJNDXM.css +92 -0
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.d.cts +4 -0
- package/dist/Switch.d.ts +4 -0
- package/dist/Switch.js +1 -1
- package/dist/Table-YKVM42SW.css +295 -0
- package/dist/Table.cjs +7 -3
- package/dist/Table.d.cts +103 -7
- package/dist/Table.d.ts +103 -7
- package/dist/Table.js +5 -1
- package/dist/{Tabs-A27TSZOP.css → Tabs-RHK6XAFF.css} +7 -0
- package/dist/Tabs.cjs +3 -3
- package/dist/Tabs.d.cts +2 -0
- package/dist/Tabs.d.ts +2 -0
- package/dist/Tabs.js +1 -1
- package/dist/{Tag-EYOY3UWG.css → Tag-FGDY3W7E.css} +2 -0
- package/dist/Tag.cjs +3 -3
- package/dist/Tag.d.cts +5 -0
- package/dist/Tag.d.ts +5 -0
- package/dist/Tag.js +1 -1
- package/dist/chunk-437LB2V4.js +111 -0
- package/dist/chunk-437LB2V4.js.map +1 -0
- package/dist/chunk-4MR4GVTD.js +73 -0
- package/dist/chunk-4MR4GVTD.js.map +1 -0
- package/dist/{chunk-OXYFB2ZI.js → chunk-4U4OY5RA.js} +11 -5
- package/dist/chunk-4U4OY5RA.js.map +1 -0
- package/dist/{chunk-5EYI27B6.js → chunk-77BVQNAQ.js} +5 -3
- package/dist/chunk-77BVQNAQ.js.map +1 -0
- package/dist/{chunk-3QWHDCHJ.js → chunk-AJZKESHB.js} +13 -4
- package/dist/chunk-AJZKESHB.js.map +1 -0
- package/dist/{chunk-NZPJ7BUB.cjs → chunk-AXMEZGEG.cjs} +13 -4
- package/dist/chunk-AXMEZGEG.cjs.map +1 -0
- package/dist/{chunk-HTP6UEVR.js → chunk-BBPNQ44M.js} +22 -6
- package/dist/chunk-BBPNQ44M.js.map +1 -0
- package/dist/{chunk-QQXIWOI3.cjs → chunk-CCBHZYE6.cjs} +5 -5
- package/dist/{chunk-QQXIWOI3.cjs.map → chunk-CCBHZYE6.cjs.map} +1 -1
- package/dist/chunk-E6R63QOL.js +476 -0
- package/dist/chunk-E6R63QOL.js.map +1 -0
- package/dist/{chunk-KGYLUZOU.cjs → chunk-EPFYIR63.cjs} +5 -5
- package/dist/{chunk-KGYLUZOU.cjs.map → chunk-EPFYIR63.cjs.map} +1 -1
- package/dist/chunk-F7HW2PYR.cjs +119 -0
- package/dist/chunk-F7HW2PYR.cjs.map +1 -0
- package/dist/chunk-GIVMKGZN.js +39 -0
- package/dist/chunk-GIVMKGZN.js.map +1 -0
- package/dist/{chunk-FMG3ZPGK.js → chunk-H6FCIJOP.js} +5 -3
- package/dist/chunk-H6FCIJOP.js.map +1 -0
- package/dist/{chunk-ALFDP5WX.cjs → chunk-IDM6JJLP.cjs} +22 -6
- package/dist/chunk-IDM6JJLP.cjs.map +1 -0
- package/dist/{chunk-I2ERCHFV.cjs → chunk-JKLQOB2F.cjs} +11 -5
- package/dist/chunk-JKLQOB2F.cjs.map +1 -0
- package/dist/{chunk-IGHLSNXT.cjs → chunk-K7PVJLW4.cjs} +51 -4
- package/dist/chunk-K7PVJLW4.cjs.map +1 -0
- package/dist/chunk-LDENBYRC.cjs +210 -0
- package/dist/chunk-LDENBYRC.cjs.map +1 -0
- package/dist/{chunk-OOBSH7EL.js → chunk-LSLYY5FN.js} +3 -3
- package/dist/{chunk-OOBSH7EL.js.map → chunk-LSLYY5FN.js.map} +1 -1
- package/dist/chunk-NSUD5B22.js +187 -0
- package/dist/chunk-NSUD5B22.js.map +1 -0
- package/dist/{chunk-AAMYURWQ.cjs → chunk-OPTTHURA.cjs} +5 -3
- package/dist/chunk-OPTTHURA.cjs.map +1 -0
- package/dist/{chunk-F3NHM4GX.js → chunk-OYGFMXAA.js} +13 -4
- package/dist/chunk-OYGFMXAA.js.map +1 -0
- package/dist/chunk-PBBHUUXU.cjs +133 -0
- package/dist/chunk-PBBHUUXU.cjs.map +1 -0
- package/dist/chunk-RDLPX7RK.cjs +95 -0
- package/dist/chunk-RDLPX7RK.cjs.map +1 -0
- package/dist/chunk-SBMOIE5C.cjs +499 -0
- package/dist/chunk-SBMOIE5C.cjs.map +1 -0
- package/dist/{chunk-XFRP2MBR.js → chunk-TYQ5CN2C.js} +51 -4
- package/dist/chunk-TYQ5CN2C.js.map +1 -0
- package/dist/{chunk-7CKHWCEA.cjs → chunk-TZSWDH5T.cjs} +5 -3
- package/dist/chunk-TZSWDH5T.cjs.map +1 -0
- package/dist/{chunk-VMHNKD3N.cjs → chunk-URF6RBW6.cjs} +13 -4
- package/dist/chunk-URF6RBW6.cjs.map +1 -0
- package/dist/{chunk-G3UWXSNQ.js → chunk-V34OPWKZ.js} +5 -4
- package/dist/chunk-V34OPWKZ.js.map +1 -0
- package/dist/{chunk-ITGCHU3Y.cjs → chunk-VICGQC6G.cjs} +5 -4
- package/dist/chunk-VICGQC6G.cjs.map +1 -0
- package/dist/chunk-YEOARJKR.cjs +40 -0
- package/dist/chunk-YEOARJKR.cjs.map +1 -0
- package/dist/chunk-Z5X5AMLA.cjs +41 -0
- package/dist/chunk-Z5X5AMLA.cjs.map +1 -0
- package/dist/chunk-Z7P6QGMT.js +115 -0
- package/dist/chunk-Z7P6QGMT.js.map +1 -0
- package/dist/{chunk-OYH6A7IQ.js → chunk-ZVCMXDTP.js} +3 -3
- package/dist/{chunk-OYH6A7IQ.js.map → chunk-ZVCMXDTP.js.map} +1 -1
- package/dist/chunk-ZWP4LSS3.js +38 -0
- package/dist/chunk-ZWP4LSS3.js.map +1 -0
- package/dist/index.cjs +43 -43
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +18 -18
- package/dist/index.js.map +1 -1
- package/dist/styles.css +455 -30
- 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
- package/dist/Input-Z526ARZP.css +0 -66
- package/dist/Switch-NP7KKJOX.css +0 -44
- package/dist/Table-ZDPGWLH3.css +0 -139
- package/dist/chunk-2VA2HSL4.cjs +0 -121
- package/dist/chunk-2VA2HSL4.cjs.map +0 -1
- package/dist/chunk-2W2AJUZW.js +0 -118
- package/dist/chunk-2W2AJUZW.js.map +0 -1
- package/dist/chunk-3QWHDCHJ.js.map +0 -1
- package/dist/chunk-4AA22BOG.js +0 -63
- package/dist/chunk-4AA22BOG.js.map +0 -1
- package/dist/chunk-5EYI27B6.js.map +0 -1
- package/dist/chunk-77NP67ML.cjs +0 -70
- package/dist/chunk-77NP67ML.cjs.map +0 -1
- package/dist/chunk-7CKHWCEA.cjs.map +0 -1
- package/dist/chunk-7NM5BRUX.js +0 -91
- package/dist/chunk-7NM5BRUX.js.map +0 -1
- package/dist/chunk-7UJI437T.js +0 -49
- package/dist/chunk-7UJI437T.js.map +0 -1
- package/dist/chunk-AAMYURWQ.cjs.map +0 -1
- package/dist/chunk-ALFDP5WX.cjs.map +0 -1
- package/dist/chunk-F3NHM4GX.js.map +0 -1
- package/dist/chunk-FMG3ZPGK.js.map +0 -1
- package/dist/chunk-G3UWXSNQ.js.map +0 -1
- package/dist/chunk-HTP6UEVR.js.map +0 -1
- package/dist/chunk-I2ERCHFV.cjs.map +0 -1
- package/dist/chunk-IBZAGURN.cjs +0 -71
- package/dist/chunk-IBZAGURN.cjs.map +0 -1
- package/dist/chunk-IGHLSNXT.cjs.map +0 -1
- package/dist/chunk-ITGCHU3Y.cjs.map +0 -1
- package/dist/chunk-JNFCTYJT.cjs +0 -31
- package/dist/chunk-JNFCTYJT.cjs.map +0 -1
- package/dist/chunk-JWFVSBVX.cjs +0 -30
- package/dist/chunk-JWFVSBVX.cjs.map +0 -1
- package/dist/chunk-K67KIKX4.cjs +0 -67
- package/dist/chunk-K67KIKX4.cjs.map +0 -1
- package/dist/chunk-M6OTFXZA.js +0 -48
- package/dist/chunk-M6OTFXZA.js.map +0 -1
- package/dist/chunk-NWJW5KLN.js +0 -29
- package/dist/chunk-NWJW5KLN.js.map +0 -1
- package/dist/chunk-NZPJ7BUB.cjs.map +0 -1
- package/dist/chunk-OXYFB2ZI.js.map +0 -1
- package/dist/chunk-QT7SJITQ.cjs +0 -114
- package/dist/chunk-QT7SJITQ.cjs.map +0 -1
- package/dist/chunk-VMHNKD3N.cjs.map +0 -1
- package/dist/chunk-VXITDXLW.js +0 -28
- package/dist/chunk-VXITDXLW.js.map +0 -1
- package/dist/chunk-XFRP2MBR.js.map +0 -1
|
@@ -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)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Radio 单选
|
|
2
|
+
|
|
3
|
+
> 在多个互斥选项中进行单项选择。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { RadioGroup } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<RadioGroup value={v} onChange={setV} options={[
|
|
17
|
+
{ value: "daily", label: "每日" },
|
|
18
|
+
{ value: "weekly", label: "每周" },
|
|
19
|
+
]} />
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 水平排列
|
|
23
|
+
|
|
24
|
+
direction='horizontal'。
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<RadioGroup direction="horizontal" ... />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## API
|
|
31
|
+
|
|
32
|
+
**RadioGroup**
|
|
33
|
+
|
|
34
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
35
|
+
| --- | --- | --- | --- |
|
|
36
|
+
| options \* | `{ value, label, disabled? }[]` | — | 选项数组 |
|
|
37
|
+
| value / defaultValue | `T` | — | 受控/初始 |
|
|
38
|
+
| onChange | `(value: T) => void` | — | 变更 |
|
|
39
|
+
| direction | `"vertical" | "horizontal"` | `"vertical"` | 方向 |
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
[← 回到索引](../llms.md)
|