@fangxinyan/lumina 0.2.0 → 0.3.0
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-3TQPKNN3.css → Accordion-REMDCQUD.css} +0 -1
- package/dist/Accordion.cjs +2 -2
- package/dist/Accordion.js +1 -1
- package/dist/Alert.cjs +2 -2
- package/dist/Alert.js +1 -1
- package/dist/AppShell.cjs +5 -5
- package/dist/AppShell.js +1 -1
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.js +1 -1
- package/dist/Button.cjs +3 -3
- package/dist/Button.js +1 -1
- package/dist/Calendar.cjs +2 -2
- package/dist/Calendar.js +1 -1
- package/dist/Card.cjs +3 -3
- package/dist/Card.js +1 -1
- package/dist/{Cascader-DTRTTXC2.css → Cascader-VSYEKQCG.css} +1 -1
- package/dist/Cascader.cjs +2 -2
- package/dist/Cascader.js +1 -1
- package/dist/Checkbox.cjs +3 -3
- package/dist/Checkbox.js +1 -1
- package/dist/{ColorPicker-GP7AQYUU.css → ColorPicker-SDDQGHCM.css} +1 -1
- package/dist/ColorPicker.cjs +2 -2
- package/dist/ColorPicker.js +1 -1
- package/dist/CommandPalette-T45DBMPY.css +139 -0
- package/dist/CommandPalette.cjs +14 -0
- package/dist/CommandPalette.cjs.map +1 -0
- package/dist/CommandPalette.d.cts +65 -0
- package/dist/CommandPalette.d.ts +65 -0
- package/dist/CommandPalette.js +5 -0
- package/dist/CommandPalette.js.map +1 -0
- package/dist/ContextMenu-FKW6CQW4.css +76 -0
- package/dist/ContextMenu.cjs +12 -0
- package/dist/ContextMenu.cjs.map +1 -0
- package/dist/ContextMenu.d.cts +50 -0
- package/dist/ContextMenu.d.ts +50 -0
- package/dist/ContextMenu.js +3 -0
- package/dist/ContextMenu.js.map +1 -0
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.js +1 -1
- package/dist/Drawer.cjs +2 -2
- package/dist/Drawer.js +1 -1
- package/dist/Empty.cjs +4 -4
- package/dist/Empty.js +1 -1
- package/dist/{Image-WYWORJT4.css → Image-4MN34O6P.css} +1 -1
- package/dist/Image.cjs +3 -3
- package/dist/Image.js +1 -1
- package/dist/Input.cjs +3 -3
- package/dist/Input.js +1 -1
- package/dist/List.cjs +2 -2
- package/dist/List.js +1 -1
- package/dist/{Modal-N4YVLEWW.css → Modal-XSDMU4XJ.css} +1 -1
- package/dist/Modal.cjs +3 -3
- package/dist/Modal.js +2 -2
- package/dist/Pagination.cjs +4 -4
- package/dist/Pagination.js +3 -3
- package/dist/{Popover-MGCMOXYP.css → Popover-NYEKT5CQ.css} +1 -1
- package/dist/Popover.cjs +2 -2
- package/dist/Popover.js +1 -1
- package/dist/Progress.cjs +3 -3
- package/dist/Progress.js +1 -1
- package/dist/{Select-EDG37C37.css → Select-J3CCVFJ7.css} +1 -1
- package/dist/Select.cjs +3 -3
- package/dist/Select.js +2 -2
- package/dist/Slider.cjs +2 -2
- package/dist/Slider.js +1 -1
- package/dist/Splitter-DHNOY4NC.css +66 -0
- package/dist/Splitter.cjs +12 -0
- package/dist/Splitter.cjs.map +1 -0
- package/dist/Splitter.d.cts +44 -0
- package/dist/Splitter.d.ts +44 -0
- package/dist/Splitter.js +3 -0
- package/dist/Splitter.js.map +1 -0
- package/dist/StatusBar-CDS2GPSI.css +58 -0
- package/dist/StatusBar.cjs +16 -0
- package/dist/StatusBar.cjs.map +1 -0
- package/dist/StatusBar.d.cts +39 -0
- package/dist/StatusBar.d.ts +39 -0
- package/dist/StatusBar.js +3 -0
- package/dist/StatusBar.js.map +1 -0
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.js +1 -1
- package/dist/{Table-ADVN6LXP.css → Table-2LPTOUIR.css} +2 -2
- package/dist/Table.cjs +7 -7
- package/dist/Table.js +5 -5
- package/dist/Tabs.cjs +3 -3
- package/dist/Tabs.js +1 -1
- package/dist/Tag.cjs +3 -3
- package/dist/Tag.js +1 -1
- package/dist/Theme.cjs +10 -10
- package/dist/Theme.js +1 -1
- package/dist/{Toast-ERHDN3WG.css → Toast-6PVSAXQ5.css} +1 -1
- package/dist/Toast.cjs +3 -3
- package/dist/Toast.js +1 -1
- package/dist/Tooltip.cjs +2 -2
- package/dist/Tooltip.js +1 -1
- package/dist/Typography.cjs +6 -6
- package/dist/Typography.js +1 -1
- package/dist/{chunk-5WF6M47X.cjs → chunk-24FAK7QU.cjs} +3 -3
- package/dist/{chunk-5WF6M47X.cjs.map → chunk-24FAK7QU.cjs.map} +1 -1
- package/dist/{chunk-AJZKESHB.js → chunk-276NALYW.js} +3 -3
- package/dist/{chunk-AJZKESHB.js.map → chunk-276NALYW.js.map} +1 -1
- package/dist/{chunk-FI7QO3I5.cjs → chunk-33TIL25B.cjs} +3 -3
- package/dist/{chunk-FI7QO3I5.cjs.map → chunk-33TIL25B.cjs.map} +1 -1
- package/dist/{chunk-RDLPX7RK.cjs → chunk-3HNRKO3M.cjs} +31 -5
- package/dist/chunk-3HNRKO3M.cjs.map +1 -0
- package/dist/{chunk-GZGZR4FT.js → chunk-3LI6QH2Q.js} +3 -3
- package/dist/{chunk-GZGZR4FT.js.map → chunk-3LI6QH2Q.js.map} +1 -1
- package/dist/{chunk-NE4YEBFH.js → chunk-3UU2PUK4.js} +4 -4
- package/dist/{chunk-NE4YEBFH.js.map → chunk-3UU2PUK4.js.map} +1 -1
- package/dist/chunk-47Z4NIU4.js +118 -0
- package/dist/chunk-47Z4NIU4.js.map +1 -0
- package/dist/{chunk-4U4OY5RA.js → chunk-4SCDDSXY.js} +3 -3
- package/dist/{chunk-4U4OY5RA.js.map → chunk-4SCDDSXY.js.map} +1 -1
- package/dist/{chunk-NXOAYNG2.cjs → chunk-5BFETKVP.cjs} +3 -3
- package/dist/{chunk-NXOAYNG2.cjs.map → chunk-5BFETKVP.cjs.map} +1 -1
- package/dist/{chunk-VICGQC6G.cjs → chunk-5EAVXFFD.cjs} +3 -3
- package/dist/{chunk-VICGQC6G.cjs.map → chunk-5EAVXFFD.cjs.map} +1 -1
- package/dist/{chunk-OYGFMXAA.js → chunk-5N7347MI.js} +3 -3
- package/dist/{chunk-OYGFMXAA.js.map → chunk-5N7347MI.js.map} +1 -1
- package/dist/{chunk-VJN637MT.js → chunk-5PREWYTB.js} +3 -3
- package/dist/{chunk-VJN637MT.js.map → chunk-5PREWYTB.js.map} +1 -1
- package/dist/{chunk-77BVQNAQ.js → chunk-5UOBYRYJ.js} +3 -3
- package/dist/{chunk-77BVQNAQ.js.map → chunk-5UOBYRYJ.js.map} +1 -1
- package/dist/{chunk-BBPNQ44M.js → chunk-6GNFRP2H.js} +3 -3
- package/dist/{chunk-BBPNQ44M.js.map → chunk-6GNFRP2H.js.map} +1 -1
- package/dist/{chunk-TZSWDH5T.cjs → chunk-7JYI5THC.cjs} +3 -3
- package/dist/{chunk-TZSWDH5T.cjs.map → chunk-7JYI5THC.cjs.map} +1 -1
- package/dist/chunk-7T2SLRNL.cjs +140 -0
- package/dist/chunk-7T2SLRNL.cjs.map +1 -0
- package/dist/chunk-7YQWG7HR.cjs +45 -0
- package/dist/chunk-7YQWG7HR.cjs.map +1 -0
- package/dist/chunk-AGN3JSUH.cjs +209 -0
- package/dist/chunk-AGN3JSUH.cjs.map +1 -0
- package/dist/{chunk-CCBHZYE6.cjs → chunk-AR4M7QGF.cjs} +7 -7
- package/dist/{chunk-CCBHZYE6.cjs.map → chunk-AR4M7QGF.cjs.map} +1 -1
- package/dist/{chunk-K7PVJLW4.cjs → chunk-AWLBLRQX.cjs} +5 -5
- package/dist/{chunk-K7PVJLW4.cjs.map → chunk-AWLBLRQX.cjs.map} +1 -1
- package/dist/{chunk-PBBHUUXU.cjs → chunk-B5JH7NRZ.cjs} +3 -3
- package/dist/{chunk-PBBHUUXU.cjs.map → chunk-B5JH7NRZ.cjs.map} +1 -1
- package/dist/{chunk-Z5X5AMLA.cjs → chunk-CALRTZZ7.cjs} +3 -3
- package/dist/{chunk-Z5X5AMLA.cjs.map → chunk-CALRTZZ7.cjs.map} +1 -1
- package/dist/{chunk-H6FCIJOP.js → chunk-DBJIK4JE.js} +3 -3
- package/dist/{chunk-H6FCIJOP.js.map → chunk-DBJIK4JE.js.map} +1 -1
- package/dist/{chunk-QESLHLTG.cjs → chunk-EHO2JH2L.cjs} +4 -4
- package/dist/{chunk-QESLHLTG.cjs.map → chunk-EHO2JH2L.cjs.map} +1 -1
- package/dist/{chunk-WNGG25QX.js → chunk-FFZLSY2N.js} +3 -3
- package/dist/{chunk-WNGG25QX.js.map → chunk-FFZLSY2N.js.map} +1 -1
- package/dist/{chunk-AEJJGUEN.cjs → chunk-GOIQR4OH.cjs} +3 -3
- package/dist/{chunk-AEJJGUEN.cjs.map → chunk-GOIQR4OH.cjs.map} +1 -1
- package/dist/{chunk-Z7P6QGMT.js → chunk-GR5STMOA.js} +3 -3
- package/dist/{chunk-Z7P6QGMT.js.map → chunk-GR5STMOA.js.map} +1 -1
- package/dist/{chunk-URF6RBW6.cjs → chunk-HNVRMOL3.cjs} +3 -3
- package/dist/{chunk-URF6RBW6.cjs.map → chunk-HNVRMOL3.cjs.map} +1 -1
- package/dist/{chunk-RPD2OIIP.js → chunk-I2HHC6QW.js} +4 -4
- package/dist/{chunk-RPD2OIIP.js.map → chunk-I2HHC6QW.js.map} +1 -1
- package/dist/{chunk-AXMEZGEG.cjs → chunk-IZDJCEMF.cjs} +3 -3
- package/dist/{chunk-AXMEZGEG.cjs.map → chunk-IZDJCEMF.cjs.map} +1 -1
- package/dist/{chunk-V34OPWKZ.js → chunk-JSDQVVQB.js} +3 -3
- package/dist/{chunk-V34OPWKZ.js.map → chunk-JSDQVVQB.js.map} +1 -1
- package/dist/{chunk-QTGDYQOT.cjs → chunk-LLNEDEST.cjs} +4 -4
- package/dist/{chunk-QTGDYQOT.cjs.map → chunk-LLNEDEST.cjs.map} +1 -1
- package/dist/{chunk-C5TGQ7CV.cjs → chunk-MFWOBALK.cjs} +3 -3
- package/dist/{chunk-C5TGQ7CV.cjs.map → chunk-MFWOBALK.cjs.map} +1 -1
- package/dist/{chunk-LDENBYRC.cjs → chunk-MKR4X57L.cjs} +3 -3
- package/dist/{chunk-LDENBYRC.cjs.map → chunk-MKR4X57L.cjs.map} +1 -1
- package/dist/{chunk-LSLYY5FN.js → chunk-MTCLJHXU.js} +5 -5
- package/dist/{chunk-LSLYY5FN.js.map → chunk-MTCLJHXU.js.map} +1 -1
- package/dist/{chunk-JKLQOB2F.cjs → chunk-MUFMJPRT.cjs} +3 -3
- package/dist/{chunk-JKLQOB2F.cjs.map → chunk-MUFMJPRT.cjs.map} +1 -1
- package/dist/{chunk-OEHCA5IV.js → chunk-NGQDVJH3.js} +4 -4
- package/dist/{chunk-OEHCA5IV.js.map → chunk-NGQDVJH3.js.map} +1 -1
- package/dist/{chunk-7H453VPW.cjs → chunk-NQQWCIE6.cjs} +3 -3
- package/dist/{chunk-7H453VPW.cjs.map → chunk-NQQWCIE6.cjs.map} +1 -1
- package/dist/{chunk-ZWP4LSS3.js → chunk-NS3C2ZSE.js} +3 -3
- package/dist/{chunk-ZWP4LSS3.js.map → chunk-NS3C2ZSE.js.map} +1 -1
- package/dist/{chunk-HKAQILD2.cjs → chunk-O2HMH5BI.cjs} +4 -4
- package/dist/{chunk-HKAQILD2.cjs.map → chunk-O2HMH5BI.cjs.map} +1 -1
- package/dist/chunk-OWNVDXRQ.js +42 -0
- package/dist/chunk-OWNVDXRQ.js.map +1 -0
- package/dist/{chunk-3UFU63X7.cjs → chunk-OZVPJWXO.cjs} +3 -3
- package/dist/{chunk-3UFU63X7.cjs.map → chunk-OZVPJWXO.cjs.map} +1 -1
- package/dist/{chunk-M6CGYGEO.js → chunk-Q2EXOT4B.js} +3 -3
- package/dist/{chunk-M6CGYGEO.js.map → chunk-Q2EXOT4B.js.map} +1 -1
- package/dist/{chunk-7U6I44RV.cjs → chunk-Q7CDWNM6.cjs} +3 -3
- package/dist/{chunk-7U6I44RV.cjs.map → chunk-Q7CDWNM6.cjs.map} +1 -1
- package/dist/{chunk-437LB2V4.js → chunk-QJGKI2BD.js} +3 -3
- package/dist/{chunk-437LB2V4.js.map → chunk-QJGKI2BD.js.map} +1 -1
- package/dist/chunk-RFU5HN4E.js +149 -0
- package/dist/chunk-RFU5HN4E.js.map +1 -0
- package/dist/{chunk-IKI5CS4L.cjs → chunk-RIDCBNCM.cjs} +4 -4
- package/dist/{chunk-IKI5CS4L.cjs.map → chunk-RIDCBNCM.cjs.map} +1 -1
- package/dist/{chunk-OPTTHURA.cjs → chunk-RSZNFKCQ.cjs} +3 -3
- package/dist/{chunk-OPTTHURA.cjs.map → chunk-RSZNFKCQ.cjs.map} +1 -1
- package/dist/{chunk-EPFYIR63.cjs → chunk-RVSWH4RH.cjs} +7 -7
- package/dist/{chunk-EPFYIR63.cjs.map → chunk-RVSWH4RH.cjs.map} +1 -1
- package/dist/{chunk-TWBJCFEJ.cjs → chunk-SVVB6POY.cjs} +4 -4
- package/dist/{chunk-TWBJCFEJ.cjs.map → chunk-SVVB6POY.cjs.map} +1 -1
- package/dist/{chunk-QPZZNSRB.js → chunk-TMZVX6NO.js} +4 -4
- package/dist/{chunk-QPZZNSRB.js.map → chunk-TMZVX6NO.js.map} +1 -1
- package/dist/{chunk-YEOARJKR.cjs → chunk-TQLCIXCK.cjs} +3 -3
- package/dist/{chunk-YEOARJKR.cjs.map → chunk-TQLCIXCK.cjs.map} +1 -1
- package/dist/{chunk-GIVMKGZN.js → chunk-TY5EAKEI.js} +3 -3
- package/dist/{chunk-GIVMKGZN.js.map → chunk-TY5EAKEI.js.map} +1 -1
- package/dist/{chunk-4MR4GVTD.js → chunk-U4K7HOMW.js} +31 -5
- package/dist/chunk-U4K7HOMW.js.map +1 -0
- package/dist/{chunk-IWVKITPN.js → chunk-U5BZ7E3F.js} +3 -3
- package/dist/{chunk-IWVKITPN.js.map → chunk-U5BZ7E3F.js.map} +1 -1
- package/dist/{chunk-3WAFIUDQ.js → chunk-UQB5OHMO.js} +3 -3
- package/dist/{chunk-3WAFIUDQ.js.map → chunk-UQB5OHMO.js.map} +1 -1
- package/dist/{chunk-ZVCMXDTP.js → chunk-URLSZPS5.js} +5 -5
- package/dist/{chunk-ZVCMXDTP.js.map → chunk-URLSZPS5.js.map} +1 -1
- package/dist/{chunk-I7SSCSFH.js → chunk-W6I67HQQ.js} +3 -3
- package/dist/{chunk-I7SSCSFH.js.map → chunk-W6I67HQQ.js.map} +1 -1
- package/dist/{chunk-NSUD5B22.js → chunk-WBMF7WM3.js} +3 -3
- package/dist/{chunk-NSUD5B22.js.map → chunk-WBMF7WM3.js.map} +1 -1
- package/dist/{chunk-4GT5TOHP.js → chunk-WDBJVKSR.js} +3 -3
- package/dist/{chunk-4GT5TOHP.js.map → chunk-WDBJVKSR.js.map} +1 -1
- package/dist/{chunk-TYQ5CN2C.js → chunk-WQFC5EMC.js} +4 -4
- package/dist/{chunk-TYQ5CN2C.js.map → chunk-WQFC5EMC.js.map} +1 -1
- package/dist/{chunk-IFERLHCL.cjs → chunk-WREHBIJ5.cjs} +10 -10
- package/dist/{chunk-IFERLHCL.cjs.map → chunk-WREHBIJ5.cjs.map} +1 -1
- package/dist/chunk-WZ73TWB2.cjs +174 -0
- package/dist/chunk-WZ73TWB2.cjs.map +1 -0
- package/dist/chunk-XDFZRV3V.js +184 -0
- package/dist/chunk-XDFZRV3V.js.map +1 -0
- package/dist/{chunk-F7HW2PYR.cjs → chunk-XUT2Z2L6.cjs} +3 -3
- package/dist/{chunk-F7HW2PYR.cjs.map → chunk-XUT2Z2L6.cjs.map} +1 -1
- package/dist/{chunk-55NTFU7Y.js → chunk-XZ22B3NW.js} +6 -6
- package/dist/{chunk-55NTFU7Y.js.map → chunk-XZ22B3NW.js.map} +1 -1
- package/dist/{chunk-K5MHL732.js → chunk-YXKJOPYT.js} +4 -4
- package/dist/{chunk-K5MHL732.js.map → chunk-YXKJOPYT.js.map} +1 -1
- package/dist/{chunk-IDM6JJLP.cjs → chunk-YZ2I7CDF.cjs} +3 -3
- package/dist/{chunk-IDM6JJLP.cjs.map → chunk-YZ2I7CDF.cjs.map} +1 -1
- package/dist/index.cjs +142 -118
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +35 -31
- package/dist/index.js.map +1 -1
- package/dist/styles.css +26 -19
- package/dist/{tokens-HWQ7KWPG.css → tokens-BIIUTPKN.css} +17 -9
- package/dist/tokens.css +17 -9
- 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/commandpalette.md +58 -0
- package/docs/llms/contextmenu.md +55 -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/splitter.md +63 -0
- package/docs/llms/statusbar.md +53 -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 +101 -0
- package/package.json +8 -2
- package/dist/chunk-4MR4GVTD.js.map +0 -1
- package/dist/chunk-RDLPX7RK.cjs.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Cascader 级联选择
|
|
2
|
+
|
|
3
|
+
> 层级关联数据集合中的多级选择。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Cascader } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Cascader options={regions} value={addr} onChange={setAddr} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
**Cascader**
|
|
22
|
+
|
|
23
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| options \* | `CascaderOption[]` | — | 层级选项树 |
|
|
26
|
+
| value / defaultValue | `string[]` | — | 受控/初始路径 |
|
|
27
|
+
| onChange | `(path: string[]) => void` | — | 选择叶子时触发 |
|
|
28
|
+
| placeholder | `string` | — | 占位文案 |
|
|
29
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Checkbox 复选框
|
|
2
|
+
|
|
3
|
+
> 在一组选项中进行多项选择,或独立切换某个开关项。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Checkbox } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Checkbox checked={v} onChange={setV} label="同意协议" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 全选/半选
|
|
20
|
+
|
|
21
|
+
indeterminate 用来表示部分选中。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Checkbox indeterminate={some} checked={all} onChange={...} label="全选" />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## API
|
|
28
|
+
|
|
29
|
+
**Checkbox**
|
|
30
|
+
|
|
31
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| checked / defaultChecked | `boolean` | — | 受控/初始 |
|
|
34
|
+
| indeterminate | `boolean` | `false` | 半选态 |
|
|
35
|
+
| onChange | `(checked: boolean) => void` | — | 变更 |
|
|
36
|
+
| label | `ReactNode` | — | 右侧文案 |
|
|
37
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# ColorPicker 颜色选择
|
|
2
|
+
|
|
3
|
+
> 拟态风格的颜色选择器:HSV 色域、色相、hex 输入、预设调色板。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { ColorPicker } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
非受控用法,点击色块弹出面板。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<ColorPicker defaultValue="#ff6b6b" onChange={setColor} />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 受控
|
|
22
|
+
|
|
23
|
+
实时同步 value,失焦 / 拖拽结束时再调用 onChangeComplete。
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
<ColorPicker value={color} onChange={setColor} showText />
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 尺寸
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<ColorPicker size="sm" />
|
|
33
|
+
<ColorPicker />
|
|
34
|
+
<ColorPicker size="lg" />
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 禁用
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<ColorPicker disabled defaultValue="#868e96" />
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 自定义预设
|
|
44
|
+
|
|
45
|
+
presets 传入十六进制数组,面板底部会渲染一排色块。
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<ColorPicker
|
|
49
|
+
presets={["#ff6b6b", "#ffd43b", "#51cf66", "#339af0", "#845ef7"]}
|
|
50
|
+
/>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 自定义触发器
|
|
54
|
+
|
|
55
|
+
将 children 作为触发器;色块容器会继承传入的交互元素。
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<ColorPicker value={brand} onChange={setBrand}>
|
|
59
|
+
<Button icon="palette">品牌色 · {brand}</Button>
|
|
60
|
+
</ColorPicker>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## API
|
|
64
|
+
|
|
65
|
+
**ColorPicker**
|
|
66
|
+
|
|
67
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
68
|
+
| --- | --- | --- | --- |
|
|
69
|
+
| value / defaultValue | `string` | `"#845ef7"` | 十六进制颜色 |
|
|
70
|
+
| onChange | `(hex: string) => void` | — | 每次变化触发(拖拽 / 输入 / 预设点击) |
|
|
71
|
+
| onChangeComplete | `(hex: string) => void` | — | 拖拽/输入结束触发 |
|
|
72
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 触发器尺寸 |
|
|
73
|
+
| placement | `"top" | "bottom" | "left" | "right"` | `"bottom"` | 面板位置 |
|
|
74
|
+
| presets | `string[]` | — | 预设色数组 |
|
|
75
|
+
| showText | `boolean` | `false` | 触发器右侧显示 hex |
|
|
76
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
77
|
+
| open / defaultOpen / onOpenChange | `—` | — | 受控面板显隐 |
|
|
78
|
+
| children | `ReactNode` | — | 自定义触发器 |
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# CommandPalette ⌘K 命令面板
|
|
2
|
+
|
|
3
|
+
> 全局命令搜索与执行入口。
|
|
4
|
+
|
|
5
|
+
## 示例
|
|
6
|
+
|
|
7
|
+
### 基础 + 快捷键
|
|
8
|
+
|
|
9
|
+
在当前页面按 ⌘K / Ctrl+K 打开。分组、快捷键提示、键盘导航都已内置。
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
const [open, setOpen] = useState(false);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const h = (e: KeyboardEvent) => {
|
|
15
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
setOpen(o => !o);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
window.addEventListener("keydown", h);
|
|
21
|
+
return () => window.removeEventListener("keydown", h);
|
|
22
|
+
}, []);
|
|
23
|
+
|
|
24
|
+
<CommandPalette open={open} onOpenChange={setOpen} items={[...]} />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## API
|
|
28
|
+
|
|
29
|
+
**CommandPalette**
|
|
30
|
+
|
|
31
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| open / onOpenChange \* | `boolean / (open: boolean) => void` | — | 受控开关 |
|
|
34
|
+
| items \* | `CommandItem[]` | — | 所有命令项 |
|
|
35
|
+
| placeholder | `string` | `"搜索命令…"` | 搜索框占位文本 |
|
|
36
|
+
| filter | `(item, query) => boolean` | `子序列匹配` | 自定义过滤函数 |
|
|
37
|
+
| emptyText | `ReactNode` | — | 无结果占位 |
|
|
38
|
+
| resetOnOpen | `boolean` | `true` | 打开时清空输入 |
|
|
39
|
+
| footer | `ReactNode` | — | 底部区;null 隐藏 |
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
**CommandItem**
|
|
43
|
+
|
|
44
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
| key \* | `string` | — | 唯一键 |
|
|
47
|
+
| label \* | `string` | — | 主文案(也参与搜索) |
|
|
48
|
+
| description | `ReactNode` | — | 副标题 |
|
|
49
|
+
| icon | `ReactNode` | — | 前置图标 |
|
|
50
|
+
| shortcut | `ReactNode` | — | 右侧快捷键 |
|
|
51
|
+
| keywords | `string[]` | — | 额外搜索关键词 |
|
|
52
|
+
| group | `string` | — | 分组标题 |
|
|
53
|
+
| disabled | `boolean` | — | 禁用 |
|
|
54
|
+
| onSelect | `() => void` | — | 选中回调(会自动关闭面板) |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ContextMenu 右键菜单
|
|
2
|
+
|
|
3
|
+
> 桌面应用风格的右键上下文菜单。
|
|
4
|
+
|
|
5
|
+
## 示例
|
|
6
|
+
|
|
7
|
+
### 基础
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<ContextMenu items={[
|
|
11
|
+
{ key: "copy", label: "复制", shortcut: "⌘C", onSelect: () => {} },
|
|
12
|
+
{ key: "cut", label: "剪切", shortcut: "⌘X", onSelect: () => {} },
|
|
13
|
+
{ key: "d", type: "divider" },
|
|
14
|
+
{ key: "del", label: "删除", danger: true, onSelect: () => {} },
|
|
15
|
+
]}>
|
|
16
|
+
<div>右键点击我</div>
|
|
17
|
+
</ContextMenu>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 文件管理器示例
|
|
21
|
+
|
|
22
|
+
典型的文件右键菜单,带图标、快捷键、分组分隔、危险操作高亮。
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
<ContextMenu items={[...]}>...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## API
|
|
29
|
+
|
|
30
|
+
**ContextMenu**
|
|
31
|
+
|
|
32
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| items \* | `ContextMenuItem[]` | — | 菜单项 |
|
|
35
|
+
| children \* | `ReactElement` | — | 触发元素(恰好一个) |
|
|
36
|
+
| disabled | `boolean` | — | 禁用,恢复浏览器原生菜单 |
|
|
37
|
+
| minWidth | `number` | `180` | 面板最小宽度 |
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
**ContextMenuItem**
|
|
41
|
+
|
|
42
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
43
|
+
| --- | --- | --- | --- |
|
|
44
|
+
| key \* | `string` | — | 唯一键 |
|
|
45
|
+
| label | `ReactNode` | — | 文案 |
|
|
46
|
+
| icon | `ReactNode` | — | 前置图标 |
|
|
47
|
+
| shortcut | `ReactNode` | — | 右侧快捷键提示 |
|
|
48
|
+
| disabled | `boolean` | — | 禁用 |
|
|
49
|
+
| danger | `boolean` | — | 危险态(红色) |
|
|
50
|
+
| type | `"divider"` | — | 置为 "divider" 渲染分隔线 |
|
|
51
|
+
| onSelect | `() => void` | — | 选中回调 |
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
[← 回到索引](../llms.md)
|
|
@@ -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)
|