@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
package/README.md
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
柔和、温润的拟态(Neumorphism)风格组件库,使用 **React 18** + **TypeScript**,开箱即用地适配 **Electron** 桌面应用场景 —— 包含窗口标题栏、侧边栏、抽屉、弹窗等桌面级组件。
|
|
6
6
|
|
|
7
|
+
> **🤖 AI coding assistants**: this package ships a **per-component LLM reference** designed for on-demand reading, so you don't have to pull the full API dump every time.
|
|
8
|
+
>
|
|
9
|
+
> - **Index** (global conventions + component list): `node_modules/@fangxinyan/lumina/docs/llms.md`
|
|
10
|
+
> — subpath export `@fangxinyan/lumina/llms.md`
|
|
11
|
+
> - **Per-component docs** (import / runnable examples / full props table): `node_modules/@fangxinyan/lumina/docs/llms/<id>.md`
|
|
12
|
+
> — subpath export `@fangxinyan/lumina/llms/<id>.md` (e.g. `.../llms/button.md`, `.../llms/table.md`)
|
|
13
|
+
>
|
|
14
|
+
> Online raw URLs:
|
|
15
|
+
> <https://raw.githubusercontent.com/LHorTL/lumina/main/docs/llms.md>
|
|
16
|
+
> <https://raw.githubusercontent.com/LHorTL/lumina/main/docs/llms/button.md>
|
|
17
|
+
|
|
7
18
|
## ✨ 特性
|
|
8
19
|
|
|
9
20
|
- **TypeScript 优先** — 全量类型定义,IDE 智能提示完善
|
|
@@ -16,11 +27,11 @@
|
|
|
16
27
|
## 📦 安装
|
|
17
28
|
|
|
18
29
|
```bash
|
|
19
|
-
npm install lumina
|
|
30
|
+
npm install @fangxinyan/lumina
|
|
20
31
|
# 或
|
|
21
|
-
pnpm add lumina
|
|
32
|
+
pnpm add @fangxinyan/lumina
|
|
22
33
|
# 或
|
|
23
|
-
yarn add lumina
|
|
34
|
+
yarn add @fangxinyan/lumina
|
|
24
35
|
```
|
|
25
36
|
|
|
26
37
|
Peer deps: `react@>=18`, `react-dom@>=18`.
|
|
@@ -28,8 +39,8 @@ Peer deps: `react@>=18`, `react-dom@>=18`.
|
|
|
28
39
|
## 🚀 快速上手
|
|
29
40
|
|
|
30
41
|
```tsx
|
|
31
|
-
import { Button, Card, toast, ToastContainer } from "lumina";
|
|
32
|
-
import "lumina/styles"; // 全局样式 + 设计令牌
|
|
42
|
+
import { Button, Card, toast, ToastContainer } from "@fangxinyan/lumina";
|
|
43
|
+
import "@fangxinyan/lumina/styles"; // 全局样式 + 设计令牌
|
|
33
44
|
|
|
34
45
|
export default function App() {
|
|
35
46
|
return (
|
|
@@ -100,8 +111,8 @@ package/
|
|
|
100
111
|
|
|
101
112
|
## 📚 文档
|
|
102
113
|
|
|
103
|
-
- [
|
|
104
|
-
- [
|
|
114
|
+
- **[🤖 AI / LLM 组件参考(索引)](./docs/llms.md)** — 全局约定 + 39 个组件的链接
|
|
115
|
+
- **[单组件文档](./docs/llms/)** — 每个组件一份 `.md`,AI 按需读取(例如 [`llms/button.md`](./docs/llms/button.md))
|
|
105
116
|
- [设计令牌](./docs/tokens.md)
|
|
106
117
|
- [Electron 集成](./docs/electron.md)
|
|
107
118
|
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
color: var(--fg-muted);
|
|
32
32
|
font-size: 13px;
|
|
33
33
|
}
|
|
34
|
-
.accordion-item.open .accordion-body { max-height: 320px; }
|
|
35
34
|
.accordion-body-inner { padding: 0 18px 16px; }
|
|
36
35
|
.accordion-chev {
|
|
37
36
|
transition: transform var(--dur) var(--ease), color var(--dur) var(--ease);
|
package/dist/Accordion.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3HNRKO3M_cjs = require('./chunk-3HNRKO3M.cjs');
|
|
4
4
|
require('./chunk-YVO7XO4W.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Accordion", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk3HNRKO3M_cjs.Accordion; }
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=Accordion.cjs.map
|
|
13
13
|
//# sourceMappingURL=Accordion.cjs.map
|
package/dist/Accordion.js
CHANGED
package/dist/Alert.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCALRTZZ7_cjs = require('./chunk-CALRTZZ7.cjs');
|
|
4
4
|
require('./chunk-YVO7XO4W.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Alert", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkCALRTZZ7_cjs.Alert; }
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=Alert.cjs.map
|
|
13
13
|
//# sourceMappingURL=Alert.cjs.map
|
package/dist/Alert.js
CHANGED
package/dist/AppShell.cjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk33TIL25B_cjs = require('./chunk-33TIL25B.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "AppShell", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunk33TIL25B_cjs.AppShell; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "Sidebar", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunk33TIL25B_cjs.Sidebar; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "TitleBar", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunk33TIL25B_cjs.TitleBar; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "WindowControls", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunk33TIL25B_cjs.WindowControls; }
|
|
22
22
|
});
|
|
23
23
|
//# sourceMappingURL=AppShell.cjs.map
|
|
24
24
|
//# sourceMappingURL=AppShell.cjs.map
|
package/dist/AppShell.js
CHANGED
package/dist/Avatar.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkTQLCIXCK_cjs = require('./chunk-TQLCIXCK.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "Avatar", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkTQLCIXCK_cjs.Avatar; }
|
|
10
10
|
});
|
|
11
11
|
//# sourceMappingURL=Avatar.cjs.map
|
|
12
12
|
//# sourceMappingURL=Avatar.cjs.map
|
package/dist/Avatar.js
CHANGED
package/dist/Button.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkRSZNFKCQ_cjs = require('./chunk-RSZNFKCQ.cjs');
|
|
4
4
|
require('./chunk-YVO7XO4W.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Button", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkRSZNFKCQ_cjs.Button; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "IconButton", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkRSZNFKCQ_cjs.IconButton; }
|
|
15
15
|
});
|
|
16
16
|
//# sourceMappingURL=Button.cjs.map
|
|
17
17
|
//# sourceMappingURL=Button.cjs.map
|
package/dist/Button.js
CHANGED
package/dist/Calendar.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk7JYI5THC_cjs = require('./chunk-7JYI5THC.cjs');
|
|
4
4
|
require('./chunk-YVO7XO4W.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Calendar", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk7JYI5THC_cjs.Calendar; }
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=Calendar.cjs.map
|
|
13
13
|
//# sourceMappingURL=Calendar.cjs.map
|
package/dist/Calendar.js
CHANGED
package/dist/Card.cjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMUFMJPRT_cjs = require('./chunk-MUFMJPRT.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "Card", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkMUFMJPRT_cjs.Card; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "Panel", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkMUFMJPRT_cjs.Panel; }
|
|
14
14
|
});
|
|
15
15
|
//# sourceMappingURL=Card.cjs.map
|
|
16
16
|
//# sourceMappingURL=Card.cjs.map
|
package/dist/Card.js
CHANGED
package/dist/Cascader.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkSVVB6POY_cjs = require('./chunk-SVVB6POY.cjs');
|
|
4
4
|
require('./chunk-RZ2E3XEU.cjs');
|
|
5
5
|
require('./chunk-YVO7XO4W.cjs');
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ require('./chunk-YVO7XO4W.cjs');
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "Cascader", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkSVVB6POY_cjs.Cascader; }
|
|
12
12
|
});
|
|
13
13
|
//# sourceMappingURL=Cascader.cjs.map
|
|
14
14
|
//# sourceMappingURL=Cascader.cjs.map
|
package/dist/Cascader.js
CHANGED
package/dist/Checkbox.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMFWOBALK_cjs = require('./chunk-MFWOBALK.cjs');
|
|
4
4
|
require('./chunk-YVO7XO4W.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Checkbox", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkMFWOBALK_cjs.Checkbox; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "RadioGroup", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkMFWOBALK_cjs.RadioGroup; }
|
|
15
15
|
});
|
|
16
16
|
//# sourceMappingURL=Checkbox.cjs.map
|
|
17
17
|
//# sourceMappingURL=Checkbox.cjs.map
|
package/dist/Checkbox.js
CHANGED
package/dist/ColorPicker.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkLLNEDEST_cjs = require('./chunk-LLNEDEST.cjs');
|
|
4
4
|
require('./chunk-RZ2E3XEU.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "ColorPicker", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkLLNEDEST_cjs.ColorPicker; }
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=ColorPicker.cjs.map
|
|
13
13
|
//# sourceMappingURL=ColorPicker.cjs.map
|
package/dist/ColorPicker.js
CHANGED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* ============ CommandPalette ============ */
|
|
2
|
+
.cmdp-overlay {
|
|
3
|
+
position: fixed;
|
|
4
|
+
inset: 0;
|
|
5
|
+
z-index: 4000;
|
|
6
|
+
background: color-mix(in oklch, var(--fg) 22%, transparent);
|
|
7
|
+
display: flex;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
align-items: flex-start;
|
|
10
|
+
padding-top: 14vh;
|
|
11
|
+
animation: fadeIn 160ms var(--ease);
|
|
12
|
+
}
|
|
13
|
+
[data-theme="dark"] .cmdp-overlay { background: color-mix(in oklch, black 55%, transparent); }
|
|
14
|
+
|
|
15
|
+
.cmdp-panel {
|
|
16
|
+
width: min(560px, calc(100vw - 48px));
|
|
17
|
+
max-height: 60vh;
|
|
18
|
+
background: var(--bg);
|
|
19
|
+
border-radius: var(--r-lg);
|
|
20
|
+
box-shadow: var(--neu-float);
|
|
21
|
+
border: 1px solid var(--divider);
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
animation: cmdpIn 220ms var(--ease);
|
|
26
|
+
}
|
|
27
|
+
@keyframes cmdpIn {
|
|
28
|
+
from { opacity: 0; transform: translateY(-12px) scale(0.98); }
|
|
29
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.cmdp-search {
|
|
33
|
+
padding: 12px 12px 10px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.cmdp-list {
|
|
37
|
+
overflow-y: auto;
|
|
38
|
+
padding: 6px;
|
|
39
|
+
flex: 1;
|
|
40
|
+
min-height: 60px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.cmdp-group + .cmdp-group { margin-top: 4px; }
|
|
44
|
+
.cmdp-group-head {
|
|
45
|
+
font-size: 11px;
|
|
46
|
+
text-transform: uppercase;
|
|
47
|
+
letter-spacing: 0.06em;
|
|
48
|
+
color: var(--fg-subtle);
|
|
49
|
+
padding: 8px 10px 4px;
|
|
50
|
+
font-weight: 600;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.cmdp-item {
|
|
54
|
+
display: grid;
|
|
55
|
+
grid-template-columns: 20px 1fr auto;
|
|
56
|
+
align-items: center;
|
|
57
|
+
gap: 10px;
|
|
58
|
+
width: 100%;
|
|
59
|
+
padding: 9px 10px;
|
|
60
|
+
border: none;
|
|
61
|
+
background: transparent;
|
|
62
|
+
box-shadow: none;
|
|
63
|
+
color: var(--fg);
|
|
64
|
+
font: inherit;
|
|
65
|
+
font-size: 13px;
|
|
66
|
+
text-align: left;
|
|
67
|
+
border-radius: var(--r-sm);
|
|
68
|
+
cursor: pointer;
|
|
69
|
+
transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease),
|
|
70
|
+
box-shadow var(--dur-fast) var(--ease);
|
|
71
|
+
}
|
|
72
|
+
.cmdp-item:disabled { color: var(--fg-subtle); cursor: not-allowed; }
|
|
73
|
+
.cmdp-item.active:not(:disabled) {
|
|
74
|
+
background: var(--bg);
|
|
75
|
+
color: var(--accent-ink);
|
|
76
|
+
box-shadow: var(--neu-in-sm);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.cmdp-icon {
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
color: var(--fg-muted);
|
|
84
|
+
}
|
|
85
|
+
.cmdp-item.active:not(:disabled) .cmdp-icon { color: inherit; }
|
|
86
|
+
|
|
87
|
+
.cmdp-labels { display: flex; flex-direction: column; min-width: 0; }
|
|
88
|
+
.cmdp-label {
|
|
89
|
+
overflow: hidden;
|
|
90
|
+
text-overflow: ellipsis;
|
|
91
|
+
white-space: nowrap;
|
|
92
|
+
}
|
|
93
|
+
.cmdp-desc {
|
|
94
|
+
font-size: 11.5px;
|
|
95
|
+
color: var(--fg-subtle);
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
white-space: nowrap;
|
|
99
|
+
}
|
|
100
|
+
.cmdp-item.active:not(:disabled) .cmdp-desc { color: inherit; opacity: 0.75; }
|
|
101
|
+
|
|
102
|
+
.cmdp-shortcut {
|
|
103
|
+
font-family: var(--font-mono);
|
|
104
|
+
font-size: 11px;
|
|
105
|
+
color: var(--fg-subtle);
|
|
106
|
+
}
|
|
107
|
+
.cmdp-item.active:not(:disabled) .cmdp-shortcut { color: inherit; opacity: 0.8; }
|
|
108
|
+
|
|
109
|
+
.cmdp-empty {
|
|
110
|
+
padding: 28px 16px;
|
|
111
|
+
text-align: center;
|
|
112
|
+
color: var(--fg-subtle);
|
|
113
|
+
font-size: 13px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.cmdp-footer {
|
|
117
|
+
display: flex;
|
|
118
|
+
gap: 16px;
|
|
119
|
+
padding: 8px 14px;
|
|
120
|
+
border-top: 1px solid var(--divider);
|
|
121
|
+
background: var(--bg-sunken);
|
|
122
|
+
font-size: 11.5px;
|
|
123
|
+
color: var(--fg-subtle);
|
|
124
|
+
}
|
|
125
|
+
.cmdp-footer span { display: inline-flex; align-items: center; gap: 4px; }
|
|
126
|
+
|
|
127
|
+
.cmdp-kbd {
|
|
128
|
+
display: inline-grid;
|
|
129
|
+
place-items: center;
|
|
130
|
+
min-width: 18px;
|
|
131
|
+
height: 18px;
|
|
132
|
+
padding: 0 5px;
|
|
133
|
+
border-radius: 5px;
|
|
134
|
+
background: var(--bg);
|
|
135
|
+
box-shadow: var(--neu-flat);
|
|
136
|
+
font-family: var(--font-mono);
|
|
137
|
+
font-size: 10.5px;
|
|
138
|
+
color: var(--fg-muted);
|
|
139
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkAGN3JSUH_cjs = require('./chunk-AGN3JSUH.cjs');
|
|
4
|
+
require('./chunk-MKR4X57L.cjs');
|
|
5
|
+
require('./chunk-YVO7XO4W.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "CommandPalette", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkAGN3JSUH_cjs.CommandPalette; }
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=CommandPalette.cjs.map
|
|
14
|
+
//# sourceMappingURL=CommandPalette.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CommandPalette.cjs"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface CommandItem {
|
|
4
|
+
key: string;
|
|
5
|
+
/** Displayed label; also matched against the search query by default. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Optional secondary line — e.g. "Open recent". */
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
/** Leading icon. */
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
/** Right-aligned shortcut hint, e.g. `"⌘P"`. */
|
|
12
|
+
shortcut?: React.ReactNode;
|
|
13
|
+
/** Extra search terms beyond `label`. */
|
|
14
|
+
keywords?: string[];
|
|
15
|
+
/** Group heading. Items sharing a `group` appear under one heading. */
|
|
16
|
+
group?: string;
|
|
17
|
+
/** Ignored by default filter — still shown. */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
onSelect?: () => void;
|
|
20
|
+
}
|
|
21
|
+
interface CommandPaletteProps {
|
|
22
|
+
open: boolean;
|
|
23
|
+
onOpenChange?: (open: boolean) => void;
|
|
24
|
+
items: CommandItem[];
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
/** Custom matcher. Return true to keep the item. */
|
|
27
|
+
filter?: (item: CommandItem, query: string) => boolean;
|
|
28
|
+
/** Shown when no item matches the query. */
|
|
29
|
+
emptyText?: React.ReactNode;
|
|
30
|
+
/** Reset the query to empty whenever the palette opens. Default true. */
|
|
31
|
+
resetOnOpen?: boolean;
|
|
32
|
+
/** Footer node. Pass `null` to hide. */
|
|
33
|
+
footer?: React.ReactNode;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* `CommandPalette` — ⌘K-style action launcher. Search + grouped items +
|
|
38
|
+
* keyboard nav. Rendered into `document.body`.
|
|
39
|
+
*
|
|
40
|
+
* The parent controls `open` via state — wire `Cmd/Ctrl+K` to toggle.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* const [open, setOpen] = React.useState(false);
|
|
45
|
+
* React.useEffect(() => {
|
|
46
|
+
* const h = (e: KeyboardEvent) => {
|
|
47
|
+
* if ((e.metaKey || e.ctrlKey) && e.key === "k") { e.preventDefault(); setOpen(o => !o); }
|
|
48
|
+
* };
|
|
49
|
+
* window.addEventListener("keydown", h);
|
|
50
|
+
* return () => window.removeEventListener("keydown", h);
|
|
51
|
+
* }, []);
|
|
52
|
+
*
|
|
53
|
+
* <CommandPalette
|
|
54
|
+
* open={open}
|
|
55
|
+
* onOpenChange={setOpen}
|
|
56
|
+
* items={[
|
|
57
|
+
* { key: "new", label: "新建文件", icon: <Icon name="plus" size={14} />, group: "文件", shortcut: "⌘N", onSelect: () => {} },
|
|
58
|
+
* ...
|
|
59
|
+
* ]}
|
|
60
|
+
* />
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare const CommandPalette: React.FC<CommandPaletteProps>;
|
|
64
|
+
|
|
65
|
+
export { type CommandItem, CommandPalette, type CommandPaletteProps };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface CommandItem {
|
|
4
|
+
key: string;
|
|
5
|
+
/** Displayed label; also matched against the search query by default. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Optional secondary line — e.g. "Open recent". */
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
/** Leading icon. */
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
/** Right-aligned shortcut hint, e.g. `"⌘P"`. */
|
|
12
|
+
shortcut?: React.ReactNode;
|
|
13
|
+
/** Extra search terms beyond `label`. */
|
|
14
|
+
keywords?: string[];
|
|
15
|
+
/** Group heading. Items sharing a `group` appear under one heading. */
|
|
16
|
+
group?: string;
|
|
17
|
+
/** Ignored by default filter — still shown. */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
onSelect?: () => void;
|
|
20
|
+
}
|
|
21
|
+
interface CommandPaletteProps {
|
|
22
|
+
open: boolean;
|
|
23
|
+
onOpenChange?: (open: boolean) => void;
|
|
24
|
+
items: CommandItem[];
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
/** Custom matcher. Return true to keep the item. */
|
|
27
|
+
filter?: (item: CommandItem, query: string) => boolean;
|
|
28
|
+
/** Shown when no item matches the query. */
|
|
29
|
+
emptyText?: React.ReactNode;
|
|
30
|
+
/** Reset the query to empty whenever the palette opens. Default true. */
|
|
31
|
+
resetOnOpen?: boolean;
|
|
32
|
+
/** Footer node. Pass `null` to hide. */
|
|
33
|
+
footer?: React.ReactNode;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* `CommandPalette` — ⌘K-style action launcher. Search + grouped items +
|
|
38
|
+
* keyboard nav. Rendered into `document.body`.
|
|
39
|
+
*
|
|
40
|
+
* The parent controls `open` via state — wire `Cmd/Ctrl+K` to toggle.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* const [open, setOpen] = React.useState(false);
|
|
45
|
+
* React.useEffect(() => {
|
|
46
|
+
* const h = (e: KeyboardEvent) => {
|
|
47
|
+
* if ((e.metaKey || e.ctrlKey) && e.key === "k") { e.preventDefault(); setOpen(o => !o); }
|
|
48
|
+
* };
|
|
49
|
+
* window.addEventListener("keydown", h);
|
|
50
|
+
* return () => window.removeEventListener("keydown", h);
|
|
51
|
+
* }, []);
|
|
52
|
+
*
|
|
53
|
+
* <CommandPalette
|
|
54
|
+
* open={open}
|
|
55
|
+
* onOpenChange={setOpen}
|
|
56
|
+
* items={[
|
|
57
|
+
* { key: "new", label: "新建文件", icon: <Icon name="plus" size={14} />, group: "文件", shortcut: "⌘N", onSelect: () => {} },
|
|
58
|
+
* ...
|
|
59
|
+
* ]}
|
|
60
|
+
* />
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare const CommandPalette: React.FC<CommandPaletteProps>;
|
|
64
|
+
|
|
65
|
+
export { type CommandItem, CommandPalette, type CommandPaletteProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CommandPalette.js"}
|