@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,99 @@
|
|
|
1
|
+
# Select 下拉选择
|
|
2
|
+
|
|
3
|
+
> 下拉选择,支持单/多选、搜索、分组、加载态。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Select } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 单选
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Select value={lang} onChange={setLang} options={[
|
|
17
|
+
{ value: "zh", label: "简体中文" },
|
|
18
|
+
{ value: "en", label: "English" },
|
|
19
|
+
]} />
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 多选
|
|
23
|
+
|
|
24
|
+
multiple + Tag 形式呈现已选项。
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<Select multiple clearable value={tags} onChange={setTags} options={...} />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 搜索过滤
|
|
31
|
+
|
|
32
|
+
searchable + clearable + 选项 icon/description。
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
<Select searchable clearable
|
|
36
|
+
options={[{ value, label, icon, description }]}
|
|
37
|
+
/>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 分组
|
|
41
|
+
|
|
42
|
+
options 接受 { label, options } 表示分组。
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
options={[
|
|
46
|
+
{ label: "前端", options: [...] },
|
|
47
|
+
{ label: "后端", options: [...] },
|
|
48
|
+
]}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 加载态
|
|
52
|
+
|
|
53
|
+
loading 时显示 spinner,emptyContent 自定义空态。
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
<Select searchable loading={loading} options={asyncOpts} />
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 尺寸 / 状态
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<Select size="sm" /> <Select /> <Select size="lg" />
|
|
63
|
+
<Select invalid /> <Select disabled />
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## API
|
|
67
|
+
|
|
68
|
+
**Select**
|
|
69
|
+
|
|
70
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| options \* | `SelectItem<T>[]` | — | 选项,可含 { label, options } 分组 |
|
|
73
|
+
| value / defaultValue | `T | T[]` | — | 受控/初始 |
|
|
74
|
+
| onChange | `(value) => void` | — | 变更 |
|
|
75
|
+
| multiple | `boolean` | `false` | 多选 |
|
|
76
|
+
| maxTagCount | `number` | — | 多选时显示的标签数(超出折叠 +N) |
|
|
77
|
+
| searchable | `boolean` | `false` | 可搜索 |
|
|
78
|
+
| filterOption | `(input, option) => boolean` | — | 自定义过滤 |
|
|
79
|
+
| clearable | `boolean` | `false` | 可清除 |
|
|
80
|
+
| loading | `boolean` | `false` | 加载态 |
|
|
81
|
+
| emptyContent | `ReactNode` | — | 空态文案 |
|
|
82
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
|
|
83
|
+
| invalid | `boolean` | `false` | 错误态 |
|
|
84
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
**SelectOption**
|
|
88
|
+
|
|
89
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
90
|
+
| --- | --- | --- | --- |
|
|
91
|
+
| value \* | `T` | — | 值 |
|
|
92
|
+
| label | `ReactNode` | — | 显示 |
|
|
93
|
+
| icon | `IconName` | — | 前置图标 |
|
|
94
|
+
| description | `ReactNode` | — | 次要描述 |
|
|
95
|
+
| disabled | `boolean` | `false` | 禁用项 |
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Sidebar 侧边栏
|
|
2
|
+
|
|
3
|
+
> 应用主导航,沿屏幕左侧垂直排列。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Sidebar } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Sidebar items={[{ key, label, icon, badge }]} activeKey={active} onSelect={setActive} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
**Sidebar**
|
|
22
|
+
|
|
23
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| items \* | `SidebarItem[]` | — | 导航项 |
|
|
26
|
+
| activeKey | `string` | — | 当前激活项 |
|
|
27
|
+
| onSelect | `(key: string) => void` | — | 选择回调 |
|
|
28
|
+
| collapsed | `boolean` | `false` | 折叠为图标 |
|
|
29
|
+
| header / footer | `ReactNode` | — | 头/尾内容 |
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
**SidebarItem**
|
|
33
|
+
|
|
34
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
35
|
+
| --- | --- | --- | --- |
|
|
36
|
+
| key \* | `string` | — | 唯一键 |
|
|
37
|
+
| label | `ReactNode` | — | 文案 |
|
|
38
|
+
| icon | `ReactNode` | — | 前置图标 |
|
|
39
|
+
| badge | `ReactNode` | — | 尾部徽标 |
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Skeleton 骨架屏
|
|
2
|
+
|
|
3
|
+
> 数据加载前展示页面结构轮廓。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Skeleton } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Skeleton height={16} width="40%" />
|
|
17
|
+
<Skeleton height={12} />
|
|
18
|
+
<Skeleton height={12} width="80%" />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 手动组合:头像 + 文本
|
|
22
|
+
|
|
23
|
+
使用原语 Skeleton 手动拼装 — 更灵活但需要自己写布局。
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
<Skeleton circle height={48} width={48} />
|
|
27
|
+
<Skeleton height={12} width="50%" />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 组合模式 (avatar + title + paragraph)
|
|
31
|
+
|
|
32
|
+
设置 avatar / title / paragraph 任一即切换到组合模式,自动拼装布局。
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
<Skeleton avatar title paragraph />
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 组合:自定义头像形状、段落行数
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
<Skeleton
|
|
42
|
+
avatar={{ shape: "square", size: "lg" }}
|
|
43
|
+
title={{ width: "30%" }}
|
|
44
|
+
paragraph={{ rows: 4, width: ["100%", "90%", "70%", "40%"] }}
|
|
45
|
+
/>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 组合:仅 title + paragraph
|
|
49
|
+
|
|
50
|
+
关闭 avatar 只渲染标题与段落,其余布局自动调整。
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
<Skeleton title paragraph={{ rows: 2 }} />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 动画
|
|
57
|
+
|
|
58
|
+
wave 是闪光流动,pulse 是透明度脉动,none 是静态占位。
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<Skeleton animation="wave" />
|
|
62
|
+
<Skeleton animation="pulse" />
|
|
63
|
+
<Skeleton animation="none" />
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## API
|
|
67
|
+
|
|
68
|
+
**Skeleton (原语模式)**
|
|
69
|
+
|
|
70
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| width | `number | string` | `"100%"` | 宽度 |
|
|
73
|
+
| height | `number | string` | `16` | 高度 |
|
|
74
|
+
| circle | `boolean` | `false` | 圆形 |
|
|
75
|
+
| animation | `"wave" | "pulse" | "none"` | `"wave"` | 动画 |
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
**Skeleton (组合模式)**
|
|
79
|
+
|
|
80
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
81
|
+
| --- | --- | --- | --- |
|
|
82
|
+
| avatar | `boolean | { shape?: "circle" | "square"; size?: "sm" | "md" | "lg" }` | `false` | 左侧头像骨架。为对象时可定制 shape / size |
|
|
83
|
+
| title | `boolean | { width?: number | string }` | `true (composite)` | 标题行骨架。组合模式下默认 true |
|
|
84
|
+
| paragraph | `boolean | { rows?: number; width?: (number | string)[] }` | `{ rows: 3 }` | 段落行骨架。可指定 rows 与每行宽度(最后一行默认 60%) |
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Slider 滑块
|
|
2
|
+
|
|
3
|
+
> 在连续数值区间内取值。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Slider } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Slider value={v} onChange={setV} showValue />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 步进 / 范围
|
|
20
|
+
|
|
21
|
+
min/max/step 控制取值范围与步进。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Slider min={0} max={10} step={1} defaultValue={5} showValue />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 色调
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<Slider tone="success" defaultValue={70} />
|
|
31
|
+
<Slider tone="warning" defaultValue={50} />
|
|
32
|
+
<Slider tone="danger" defaultValue={88} />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 双滑块区间
|
|
36
|
+
|
|
37
|
+
range 模式下 value / onChange 采用 [min, max] 元组。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
const [v, setV] = useState<[number, number]>([20, 70]);
|
|
41
|
+
<Slider range value={v} onChange={setV} showValue />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 刻度标记
|
|
45
|
+
|
|
46
|
+
marks 提供可点击刻度,点击即可跳到该值。
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
<Slider
|
|
50
|
+
defaultValue={37}
|
|
51
|
+
marks={{ 0: "0°C", 26: "冷", 37: "正常", 100: "100°C" }}
|
|
52
|
+
/>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## API
|
|
56
|
+
|
|
57
|
+
**Slider**
|
|
58
|
+
|
|
59
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
60
|
+
| --- | --- | --- | --- |
|
|
61
|
+
| value / defaultValue | `number | [number, number]` | — | 受控/初始;range 模式下为 [number, number] |
|
|
62
|
+
| onChange | `(value) => void` | — | 变更回调,range 模式返回元组 |
|
|
63
|
+
| min / max / step | `number` | — | 区间与步进 |
|
|
64
|
+
| range | `boolean` | `false` | 是否为双滑块区间模式 |
|
|
65
|
+
| marks | `Record<number, ReactNode>` | — | 刻度,点击可跳到对应值 |
|
|
66
|
+
| tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
|
|
67
|
+
| showValue | `boolean` | `false` | 显示数值 |
|
|
68
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Spinner 加载
|
|
2
|
+
|
|
3
|
+
> 表示任务正在进行,提示用户等待。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Spinner } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Spinner />
|
|
17
|
+
<Spinner size={28} />
|
|
18
|
+
<Spinner size={40} />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 色调
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Spinner tone="accent" />
|
|
25
|
+
<Spinner tone="success" />
|
|
26
|
+
<Spinner tone="warning" />
|
|
27
|
+
<Spinner tone="danger" />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Dots 变体
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<Spinner variant="dots" />
|
|
34
|
+
<Spinner variant="dots" size={24} />
|
|
35
|
+
<Spinner variant="dots" size={32} />
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 带文案
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
<Spinner label="加载中…" />
|
|
42
|
+
<Spinner variant="dots" tone="accent" label="正在同步" />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## API
|
|
46
|
+
|
|
47
|
+
**Spinner**
|
|
48
|
+
|
|
49
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
50
|
+
| --- | --- | --- | --- |
|
|
51
|
+
| size | `number` | `20` | 尺寸 (px) |
|
|
52
|
+
| tone | `"accent" | "success" | "warning" | "danger" | "current"` | `"accent"` | 色调 |
|
|
53
|
+
| variant | `"ring" | "dots"` | `"ring"` | 样式 |
|
|
54
|
+
| label | `ReactNode` | — | 文案 |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Switch 开关
|
|
2
|
+
|
|
3
|
+
> 二元状态切换器。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Switch } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Switch checked={v} onChange={setV} label="开启通知" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 尺寸
|
|
20
|
+
|
|
21
|
+
提供 sm / md 两档。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Switch size="sm" defaultChecked />
|
|
25
|
+
<Switch defaultChecked />
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 禁用
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
<Switch disabled label="不可用" />
|
|
32
|
+
<Switch disabled defaultChecked label="禁用且开启" />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 轨道内文本
|
|
36
|
+
|
|
37
|
+
checkedChildren / unCheckedChildren 在轨道内显示简短文字(如 ON/OFF)。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<Switch defaultChecked checkedChildren="ON" unCheckedChildren="OFF" />
|
|
41
|
+
<Switch defaultChecked checkedChildren="1" unCheckedChildren="0" />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## API
|
|
45
|
+
|
|
46
|
+
**Switch**
|
|
47
|
+
|
|
48
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| checked / defaultChecked | `boolean` | — | 受控/初始 |
|
|
51
|
+
| onChange | `(checked: boolean) => void` | — | 状态变更 |
|
|
52
|
+
| label | `ReactNode` | — | 右侧文案 |
|
|
53
|
+
| checkedChildren | `ReactNode` | — | 轨道内选中状态文本/图标 |
|
|
54
|
+
| unCheckedChildren | `ReactNode` | — | 轨道内未选中状态文本/图标 |
|
|
55
|
+
| size | `"sm" | "md"` | `"md"` | 尺寸 |
|
|
56
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Table 表格
|
|
2
|
+
|
|
3
|
+
> 结构化数据展示。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Table } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础表格
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Table rowKey="id" columns={[...]} data={data} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 样式变体
|
|
20
|
+
|
|
21
|
+
三种视觉变体:striped (条纹)、embossed (凸起)、cards (卡片行)。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Table variant="striped" ... />
|
|
25
|
+
<Table variant="embossed" ... />
|
|
26
|
+
<Table variant="cards" ... />
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 内置分页
|
|
30
|
+
|
|
31
|
+
传入 pagination 即可自动分页;data 会按当前页切片。传 false 关闭。
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
<Table
|
|
35
|
+
rowKey="id"
|
|
36
|
+
columns={[...]}
|
|
37
|
+
data={data} // 24 rows
|
|
38
|
+
pagination={{ pageSize: 6 }}
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 固定表头 / 横向滚动
|
|
43
|
+
|
|
44
|
+
scroll.y 固定表头并限制表体最大高度;scroll.x 设置内容最小宽度。
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
<Table
|
|
48
|
+
scroll={{ y: 220, x: 900 }}
|
|
49
|
+
columns={[...]}
|
|
50
|
+
data={data}
|
|
51
|
+
/>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 行选择 (rowSelection)
|
|
55
|
+
|
|
56
|
+
antd 风格的 rowSelection。表头多选框支持 indeterminate;可通过 getCheckboxProps 禁用指定行。
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<Table
|
|
60
|
+
rowSelection={{
|
|
61
|
+
selectedRowKeys,
|
|
62
|
+
onChange: (keys, rows) => setSelectedKeys(keys),
|
|
63
|
+
getCheckboxProps: (row) => ({ disabled: row.status === "离线" }),
|
|
64
|
+
}}
|
|
65
|
+
columns={[...]}
|
|
66
|
+
data={data}
|
|
67
|
+
/>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 行选择 · 单选
|
|
71
|
+
|
|
72
|
+
设置 rowSelection.type = 'radio' 变成单选模式。
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
<Table
|
|
76
|
+
rowSelection={{ type: "radio", defaultSelectedRowKeys: [1] }}
|
|
77
|
+
columns={[...]}
|
|
78
|
+
data={data}
|
|
79
|
+
/>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 可展开行
|
|
83
|
+
|
|
84
|
+
点击左侧箭头按钮展开/收起,在行下方渲染自定义内容。
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
<Table
|
|
88
|
+
expandable={{
|
|
89
|
+
expandedRowRender: (row) => <div>…详情…</div>,
|
|
90
|
+
rowExpandable: (row) => row.status !== "离线",
|
|
91
|
+
}}
|
|
92
|
+
columns={[...]}
|
|
93
|
+
data={data}
|
|
94
|
+
/>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 列筛选
|
|
98
|
+
|
|
99
|
+
在列上配置 filters 即可在列头显示漏斗图标;点击弹出勾选面板,勾选后过滤数据。
|
|
100
|
+
|
|
101
|
+
```tsx
|
|
102
|
+
<Table
|
|
103
|
+
columns={[
|
|
104
|
+
{
|
|
105
|
+
key: "role", title: "部门", dataIndex: "role",
|
|
106
|
+
filters: [
|
|
107
|
+
{ text: "设计", value: "设计" },
|
|
108
|
+
{ text: "研发", value: "研发" },
|
|
109
|
+
],
|
|
110
|
+
onFilter: (value, row) => row.role === value,
|
|
111
|
+
},
|
|
112
|
+
]}
|
|
113
|
+
data={data}
|
|
114
|
+
/>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## API
|
|
118
|
+
|
|
119
|
+
**Table**
|
|
120
|
+
|
|
121
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
122
|
+
| --- | --- | --- | --- |
|
|
123
|
+
| columns \* | `TableColumn[]` | — | 列定义 |
|
|
124
|
+
| data \* | `Row[]` | — | 数据数组 |
|
|
125
|
+
| rowKey | `string | (row) => key` | — | 行键 |
|
|
126
|
+
| variant | `"default" | "striped" | "embossed" | "cards"` | `"default"` | 视觉变体 |
|
|
127
|
+
| pagination | `false | PaginationConfig` | — | 分页配置;false 关闭 |
|
|
128
|
+
| scroll | `TableScrollConfig` | — | 滚动配置:{ x?, y? } |
|
|
129
|
+
| rowSelection | `RowSelectionConfig` | — | 行选择配置 (antd 风格) |
|
|
130
|
+
| expandable | `ExpandableConfig` | — | 可展开行配置 |
|
|
131
|
+
| sortKey / sortDir / onSort | `—` | — | 受控排序 |
|
|
132
|
+
| onRowClick | `(row, i) => void` | — | 点击行 |
|
|
133
|
+
| selectable / selected / onSelect | `—` | — | 旧版多选 API (保留兼容,优先使用 rowSelection) |
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
**TableColumn**
|
|
137
|
+
|
|
138
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
139
|
+
| --- | --- | --- | --- |
|
|
140
|
+
| key \* | `string` | — | 列唯一键 |
|
|
141
|
+
| title \* | `ReactNode` | — | 表头 |
|
|
142
|
+
| dataIndex | `keyof Row` | — | 取值字段 |
|
|
143
|
+
| render | `(value, row, index) => ReactNode` | — | 单元格渲染 |
|
|
144
|
+
| width | `number | string` | — | 列宽 |
|
|
145
|
+
| align | `"left" | "center" | "right"` | — | 对齐 |
|
|
146
|
+
| sortable | `boolean` | — | 是否可排序 |
|
|
147
|
+
| filters | `{ text, value }[]` | — | 筛选项 |
|
|
148
|
+
| onFilter | `(value, row) => boolean` | — | 筛选判定函数 |
|
|
149
|
+
| defaultFilteredValue | `(string | number)[]` | — | 非受控初始筛选 |
|
|
150
|
+
| filteredValue | `(string | number)[]` | — | 受控筛选值 |
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
**PaginationConfig**
|
|
154
|
+
|
|
155
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
156
|
+
| --- | --- | --- | --- |
|
|
157
|
+
| current | `number` | — | 当前页 (1-indexed),受控 |
|
|
158
|
+
| defaultCurrent | `number` | `1` | 非受控初始页 |
|
|
159
|
+
| pageSize | `number` | `10` | 每页条数 |
|
|
160
|
+
| defaultPageSize | `number` | — | 非受控初始每页条数 |
|
|
161
|
+
| total | `number` | — | 数据总量;默认为 data.length |
|
|
162
|
+
| onChange | `(page, pageSize) => void` | — | 切页回调 |
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
**RowSelectionConfig**
|
|
166
|
+
|
|
167
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
168
|
+
| --- | --- | --- | --- |
|
|
169
|
+
| type | `"checkbox" | "radio"` | `"checkbox"` | 多选或单选 |
|
|
170
|
+
| selectedRowKeys | `(string | number)[]` | — | 受控选中 key |
|
|
171
|
+
| defaultSelectedRowKeys | `(string | number)[]` | — | 非受控初始选中 |
|
|
172
|
+
| onChange | `(keys, rows) => void` | — | 选中变化 |
|
|
173
|
+
| getCheckboxProps | `(row) => { disabled? }` | — | 每行勾选框属性 |
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
**ExpandableConfig**
|
|
177
|
+
|
|
178
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
179
|
+
| --- | --- | --- | --- |
|
|
180
|
+
| expandedRowKeys | `(string | number)[]` | — | 受控已展开 key |
|
|
181
|
+
| defaultExpandedRowKeys | `(string | number)[]` | — | 非受控初始展开 |
|
|
182
|
+
| onExpand | `(expanded, row) => void` | — | 展开/收起回调 |
|
|
183
|
+
| expandedRowRender | `(row, i) => ReactNode` | — | 展开面板渲染 |
|
|
184
|
+
| rowExpandable | `(row) => boolean` | — | 该行是否可展开 |
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Table Pro
|
|
2
|
+
|
|
3
|
+
> 带工具栏 / 搜索 / 筛选 / 排序 / 多选 / 分页的全功能表格。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { TablePro } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 全功能
|
|
14
|
+
|
|
15
|
+
工具栏 + 排序 + 新版 rowSelection + 内置分页。相比旧版,Table 自己切片 data,不必外部 slice。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<TablePro
|
|
19
|
+
rowKey="id" data={filtered} columns={...}
|
|
20
|
+
rowSelection={{ selectedRowKeys, onChange }}
|
|
21
|
+
sortKey={sortKey} sortDir={sortDir} onSort={...}
|
|
22
|
+
pagination={{ pageSize: 4 }}
|
|
23
|
+
toolbar={<Input ... /> <Select ... />}
|
|
24
|
+
actions={<Button>新增</Button>}
|
|
25
|
+
/>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 带可展开行
|
|
29
|
+
|
|
30
|
+
TablePro 直接透传 expandable 到 Table。
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<TablePro
|
|
34
|
+
title="成员详情"
|
|
35
|
+
expandable={{
|
|
36
|
+
expandedRowRender: (row) => <div>...展开内容...</div>,
|
|
37
|
+
}}
|
|
38
|
+
...
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## API
|
|
43
|
+
|
|
44
|
+
**TablePro**
|
|
45
|
+
|
|
46
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
47
|
+
| --- | --- | --- | --- |
|
|
48
|
+
| ... | `TableProps` | — | 继承自 Table 全部 props (包括新的 pagination / scroll / rowSelection / expandable / filters) |
|
|
49
|
+
| toolbar | `ReactNode` | — | 工具栏内容 |
|
|
50
|
+
| actions | `ReactNode` | — | 工具栏右侧操作 |
|
|
51
|
+
| footer | `ReactNode` | — | 底部 (可选,传了会渲染在分页下方) |
|
|
52
|
+
| title | `ReactNode` | — | 工具栏标题 |
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
[← 回到索引](../llms.md)
|