@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/dist/styles.css
CHANGED
|
@@ -17,14 +17,15 @@
|
|
|
17
17
|
/* ---- Shadows ---- */
|
|
18
18
|
--shadow-dark: rgba(163, 177, 198, 0.55);
|
|
19
19
|
--shadow-light: rgba(255, 255, 255, 0.95);
|
|
20
|
-
--shadow-blur: 16px;
|
|
21
|
-
--shadow-offset: 6px;
|
|
22
|
-
--shadow-inset-blur: 10px;
|
|
23
|
-
--shadow-inset-offset: 4px;
|
|
24
20
|
|
|
25
|
-
/* Distance multiplier (
|
|
21
|
+
/* Distance multiplier — driven by ThemeProvider `intensity` (1..10 → 0.4..1.6). */
|
|
26
22
|
--d: 1;
|
|
27
23
|
|
|
24
|
+
--shadow-blur: calc(16px * var(--d));
|
|
25
|
+
--shadow-offset: calc(6px * var(--d));
|
|
26
|
+
--shadow-inset-blur: calc(10px * var(--d));
|
|
27
|
+
--shadow-inset-offset: calc(4px * var(--d));
|
|
28
|
+
|
|
28
29
|
--neu-out:
|
|
29
30
|
var(--shadow-offset) var(--shadow-offset) var(--shadow-blur) var(--shadow-dark),
|
|
30
31
|
calc(var(--shadow-offset) * -1) calc(var(--shadow-offset) * -1) var(--shadow-blur) var(--shadow-light);
|
|
@@ -49,6 +50,13 @@
|
|
|
49
50
|
1px 1px 2px var(--shadow-dark),
|
|
50
51
|
-1px -1px 2px var(--shadow-light);
|
|
51
52
|
|
|
53
|
+
/* Floating-overlay elevation.
|
|
54
|
+
No top-left highlight — there's no continuous surface beneath an overlay
|
|
55
|
+
panel, so the neumorphic light-reflection metaphor would read as a halo. */
|
|
56
|
+
--neu-float:
|
|
57
|
+
0 calc(var(--shadow-offset) * 1.8) calc(var(--shadow-blur) * 2.2) var(--shadow-dark),
|
|
58
|
+
0 calc(var(--shadow-offset) * 0.4) calc(var(--shadow-blur) * 0.7) var(--shadow-dark);
|
|
59
|
+
|
|
52
60
|
/* ---- Accent (default sky) ---- */
|
|
53
61
|
--accent: oklch(68% 0.14 235);
|
|
54
62
|
--accent-ink: oklch(42% 0.12 235);
|
|
@@ -114,10 +122,10 @@
|
|
|
114
122
|
--shadow-dark: rgba(0, 0, 0, 0.55);
|
|
115
123
|
--shadow-light: rgba(130, 145, 180, 0.06);
|
|
116
124
|
/* 同时收紧阴影尺寸,深色模式下拟态更内敛 */
|
|
117
|
-
--shadow-offset: 4px;
|
|
118
|
-
--shadow-blur: 10px;
|
|
119
|
-
--shadow-inset-offset: 3px;
|
|
120
|
-
--shadow-inset-blur: 7px;
|
|
125
|
+
--shadow-offset: calc(4px * var(--d));
|
|
126
|
+
--shadow-blur: calc(10px * var(--d));
|
|
127
|
+
--shadow-inset-offset: calc(3px * var(--d));
|
|
128
|
+
--shadow-inset-blur: calc(7px * var(--d));
|
|
121
129
|
--accent-soft: oklch(35% 0.06 235);
|
|
122
130
|
--accent-ink: oklch(82% 0.09 235);
|
|
123
131
|
--accent-glow: oklch(68% 0.14 235 / 0.18);
|
|
@@ -1084,7 +1092,6 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1084
1092
|
color: var(--fg-muted);
|
|
1085
1093
|
font-size: 13px;
|
|
1086
1094
|
}
|
|
1087
|
-
.accordion-item.open .accordion-body { max-height: 320px; }
|
|
1088
1095
|
.accordion-body-inner { padding: 0 18px 16px; }
|
|
1089
1096
|
.accordion-chev {
|
|
1090
1097
|
transition: transform var(--dur) var(--ease), color var(--dur) var(--ease);
|
|
@@ -1311,7 +1318,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1311
1318
|
.menu {
|
|
1312
1319
|
background: var(--bg);
|
|
1313
1320
|
border-radius: var(--r-md);
|
|
1314
|
-
box-shadow: var(--neu-
|
|
1321
|
+
box-shadow: var(--neu-float);
|
|
1315
1322
|
padding: 6px;
|
|
1316
1323
|
min-width: 180px;
|
|
1317
1324
|
z-index: 1000;
|
|
@@ -1366,7 +1373,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1366
1373
|
.modal {
|
|
1367
1374
|
background: var(--bg);
|
|
1368
1375
|
border-radius: var(--r-xl);
|
|
1369
|
-
box-shadow: var(--neu-
|
|
1376
|
+
box-shadow: var(--neu-float);
|
|
1370
1377
|
padding: var(--gap-6);
|
|
1371
1378
|
width: min(480px, 92vw);
|
|
1372
1379
|
animation: modalIn var(--dur-slow) var(--ease);
|
|
@@ -1553,7 +1560,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1553
1560
|
.toast {
|
|
1554
1561
|
background: var(--bg);
|
|
1555
1562
|
border-radius: var(--r-md);
|
|
1556
|
-
box-shadow: var(--neu-
|
|
1563
|
+
box-shadow: var(--neu-float);
|
|
1557
1564
|
padding: 12px 16px;
|
|
1558
1565
|
min-width: 240px;
|
|
1559
1566
|
display: flex; align-items: flex-start; gap: 10px;
|
|
@@ -1588,7 +1595,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1588
1595
|
border-radius: var(--r-md);
|
|
1589
1596
|
padding: var(--gap-3);
|
|
1590
1597
|
min-width: 220px;
|
|
1591
|
-
box-shadow: var(--neu-
|
|
1598
|
+
box-shadow: var(--neu-float);
|
|
1592
1599
|
animation: menuIn var(--dur) var(--ease);
|
|
1593
1600
|
}
|
|
1594
1601
|
/* ============ Alert ============ */
|
|
@@ -1757,7 +1764,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1757
1764
|
.expand-btn.open { transform: rotate(90deg); color: var(--accent-ink); box-shadow: var(--neu-in-sm); }
|
|
1758
1765
|
/* Expanded row panel */
|
|
1759
1766
|
.table tbody tr.expanded-row td {
|
|
1760
|
-
padding:
|
|
1767
|
+
padding: 14px 18px;
|
|
1761
1768
|
border-bottom: 1px solid var(--divider);
|
|
1762
1769
|
background: color-mix(in oklch, var(--bg-sunken) 25%, transparent);
|
|
1763
1770
|
}
|
|
@@ -1819,7 +1826,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
1819
1826
|
max-width: 260px;
|
|
1820
1827
|
background: var(--bg);
|
|
1821
1828
|
border-radius: var(--r-md);
|
|
1822
|
-
box-shadow: var(--neu-
|
|
1829
|
+
box-shadow: var(--neu-float);
|
|
1823
1830
|
padding: 10px;
|
|
1824
1831
|
animation: menuIn var(--dur) var(--ease);
|
|
1825
1832
|
}
|
|
@@ -2333,7 +2340,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
2333
2340
|
max-width: 80vw;
|
|
2334
2341
|
max-height: 80vh;
|
|
2335
2342
|
border-radius: var(--r-lg);
|
|
2336
|
-
box-shadow: var(--neu-
|
|
2343
|
+
box-shadow: var(--neu-float);
|
|
2337
2344
|
}
|
|
2338
2345
|
/* ============ Cascader ============ */
|
|
2339
2346
|
.cascader {
|
|
@@ -2366,7 +2373,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
2366
2373
|
display: flex;
|
|
2367
2374
|
background: var(--bg);
|
|
2368
2375
|
border-radius: var(--r-md);
|
|
2369
|
-
box-shadow: var(--neu-
|
|
2376
|
+
box-shadow: var(--neu-float);
|
|
2370
2377
|
padding: 6px;
|
|
2371
2378
|
animation: menuIn var(--dur) var(--ease);
|
|
2372
2379
|
gap: 4px;
|
|
@@ -2695,7 +2702,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
2695
2702
|
padding: 12px;
|
|
2696
2703
|
background: var(--bg);
|
|
2697
2704
|
border-radius: var(--r-md);
|
|
2698
|
-
box-shadow: var(--neu-
|
|
2705
|
+
box-shadow: var(--neu-float);
|
|
2699
2706
|
display: flex;
|
|
2700
2707
|
flex-direction: column;
|
|
2701
2708
|
gap: 10px;
|
|
@@ -17,14 +17,15 @@
|
|
|
17
17
|
/* ---- Shadows ---- */
|
|
18
18
|
--shadow-dark: rgba(163, 177, 198, 0.55);
|
|
19
19
|
--shadow-light: rgba(255, 255, 255, 0.95);
|
|
20
|
-
--shadow-blur: 16px;
|
|
21
|
-
--shadow-offset: 6px;
|
|
22
|
-
--shadow-inset-blur: 10px;
|
|
23
|
-
--shadow-inset-offset: 4px;
|
|
24
20
|
|
|
25
|
-
/* Distance multiplier (
|
|
21
|
+
/* Distance multiplier — driven by ThemeProvider `intensity` (1..10 → 0.4..1.6). */
|
|
26
22
|
--d: 1;
|
|
27
23
|
|
|
24
|
+
--shadow-blur: calc(16px * var(--d));
|
|
25
|
+
--shadow-offset: calc(6px * var(--d));
|
|
26
|
+
--shadow-inset-blur: calc(10px * var(--d));
|
|
27
|
+
--shadow-inset-offset: calc(4px * var(--d));
|
|
28
|
+
|
|
28
29
|
--neu-out:
|
|
29
30
|
var(--shadow-offset) var(--shadow-offset) var(--shadow-blur) var(--shadow-dark),
|
|
30
31
|
calc(var(--shadow-offset) * -1) calc(var(--shadow-offset) * -1) var(--shadow-blur) var(--shadow-light);
|
|
@@ -49,6 +50,13 @@
|
|
|
49
50
|
1px 1px 2px var(--shadow-dark),
|
|
50
51
|
-1px -1px 2px var(--shadow-light);
|
|
51
52
|
|
|
53
|
+
/* Floating-overlay elevation.
|
|
54
|
+
No top-left highlight — there's no continuous surface beneath an overlay
|
|
55
|
+
panel, so the neumorphic light-reflection metaphor would read as a halo. */
|
|
56
|
+
--neu-float:
|
|
57
|
+
0 calc(var(--shadow-offset) * 1.8) calc(var(--shadow-blur) * 2.2) var(--shadow-dark),
|
|
58
|
+
0 calc(var(--shadow-offset) * 0.4) calc(var(--shadow-blur) * 0.7) var(--shadow-dark);
|
|
59
|
+
|
|
52
60
|
/* ---- Accent (default sky) ---- */
|
|
53
61
|
--accent: oklch(68% 0.14 235);
|
|
54
62
|
--accent-ink: oklch(42% 0.12 235);
|
|
@@ -115,10 +123,10 @@
|
|
|
115
123
|
--shadow-dark: rgba(0, 0, 0, 0.55);
|
|
116
124
|
--shadow-light: rgba(130, 145, 180, 0.06);
|
|
117
125
|
/* 同时收紧阴影尺寸,深色模式下拟态更内敛 */
|
|
118
|
-
--shadow-offset: 4px;
|
|
119
|
-
--shadow-blur: 10px;
|
|
120
|
-
--shadow-inset-offset: 3px;
|
|
121
|
-
--shadow-inset-blur: 7px;
|
|
126
|
+
--shadow-offset: calc(4px * var(--d));
|
|
127
|
+
--shadow-blur: calc(10px * var(--d));
|
|
128
|
+
--shadow-inset-offset: calc(3px * var(--d));
|
|
129
|
+
--shadow-inset-blur: calc(7px * var(--d));
|
|
122
130
|
--accent-soft: oklch(35% 0.06 235);
|
|
123
131
|
--accent-ink: oklch(82% 0.09 235);
|
|
124
132
|
--accent-glow: oklch(68% 0.14 235 / 0.18);
|
package/dist/tokens.css
CHANGED
|
@@ -17,14 +17,15 @@
|
|
|
17
17
|
/* ---- Shadows ---- */
|
|
18
18
|
--shadow-dark: rgba(163, 177, 198, 0.55);
|
|
19
19
|
--shadow-light: rgba(255, 255, 255, 0.95);
|
|
20
|
-
--shadow-blur: 16px;
|
|
21
|
-
--shadow-offset: 6px;
|
|
22
|
-
--shadow-inset-blur: 10px;
|
|
23
|
-
--shadow-inset-offset: 4px;
|
|
24
20
|
|
|
25
|
-
/* Distance multiplier (
|
|
21
|
+
/* Distance multiplier — driven by ThemeProvider `intensity` (1..10 → 0.4..1.6). */
|
|
26
22
|
--d: 1;
|
|
27
23
|
|
|
24
|
+
--shadow-blur: calc(16px * var(--d));
|
|
25
|
+
--shadow-offset: calc(6px * var(--d));
|
|
26
|
+
--shadow-inset-blur: calc(10px * var(--d));
|
|
27
|
+
--shadow-inset-offset: calc(4px * var(--d));
|
|
28
|
+
|
|
28
29
|
--neu-out:
|
|
29
30
|
var(--shadow-offset) var(--shadow-offset) var(--shadow-blur) var(--shadow-dark),
|
|
30
31
|
calc(var(--shadow-offset) * -1) calc(var(--shadow-offset) * -1) var(--shadow-blur) var(--shadow-light);
|
|
@@ -49,6 +50,13 @@
|
|
|
49
50
|
1px 1px 2px var(--shadow-dark),
|
|
50
51
|
-1px -1px 2px var(--shadow-light);
|
|
51
52
|
|
|
53
|
+
/* Floating-overlay elevation.
|
|
54
|
+
No top-left highlight — there's no continuous surface beneath an overlay
|
|
55
|
+
panel, so the neumorphic light-reflection metaphor would read as a halo. */
|
|
56
|
+
--neu-float:
|
|
57
|
+
0 calc(var(--shadow-offset) * 1.8) calc(var(--shadow-blur) * 2.2) var(--shadow-dark),
|
|
58
|
+
0 calc(var(--shadow-offset) * 0.4) calc(var(--shadow-blur) * 0.7) var(--shadow-dark);
|
|
59
|
+
|
|
52
60
|
/* ---- Accent (default sky) ---- */
|
|
53
61
|
--accent: oklch(68% 0.14 235);
|
|
54
62
|
--accent-ink: oklch(42% 0.12 235);
|
|
@@ -115,10 +123,10 @@
|
|
|
115
123
|
--shadow-dark: rgba(0, 0, 0, 0.55);
|
|
116
124
|
--shadow-light: rgba(130, 145, 180, 0.06);
|
|
117
125
|
/* 同时收紧阴影尺寸,深色模式下拟态更内敛 */
|
|
118
|
-
--shadow-offset: 4px;
|
|
119
|
-
--shadow-blur: 10px;
|
|
120
|
-
--shadow-inset-offset: 3px;
|
|
121
|
-
--shadow-inset-blur: 7px;
|
|
126
|
+
--shadow-offset: calc(4px * var(--d));
|
|
127
|
+
--shadow-blur: calc(10px * var(--d));
|
|
128
|
+
--shadow-inset-offset: calc(3px * var(--d));
|
|
129
|
+
--shadow-inset-blur: calc(7px * var(--d));
|
|
122
130
|
--accent-soft: oklch(35% 0.06 235);
|
|
123
131
|
--accent-ink: oklch(82% 0.09 235);
|
|
124
132
|
--accent-glow: oklch(68% 0.14 235 / 0.18);
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Accordion 折叠面板
|
|
2
|
+
|
|
3
|
+
> 纵向折叠面板。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Accordion } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Accordion items={[{ key, title, content }]} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 多项展开
|
|
20
|
+
|
|
21
|
+
multiple 允许同时展开多个面板。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Accordion multiple defaultActiveKeys={["1", "2"]} ... />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 手风琴模式
|
|
28
|
+
|
|
29
|
+
accordion={true} 同一时刻最多只展开一项;与 multiple 同时传入时 accordion 优先。
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Accordion accordion defaultActiveKeys={["1"]} ... />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 仅图标可点
|
|
36
|
+
|
|
37
|
+
collapsible="icon" 将展开触发限制在右侧箭头图标上,标题区域不再响应。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<Accordion collapsible="icon" ... />
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 禁用展开
|
|
44
|
+
|
|
45
|
+
collapsible="disabled" 会禁用所有项的展开交互。
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<Accordion collapsible="disabled" defaultActiveKeys={["1"]} ... />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## API
|
|
52
|
+
|
|
53
|
+
**Accordion**
|
|
54
|
+
|
|
55
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
56
|
+
| --- | --- | --- | --- |
|
|
57
|
+
| items \* | `AccordionItem[]` | — | 面板数据 |
|
|
58
|
+
| multiple | `boolean` | `false` | 可同时展开多个 |
|
|
59
|
+
| accordion | `boolean` | `false` | 手风琴模式(同一时刻最多一项) |
|
|
60
|
+
| collapsible | `"header" | "icon" | "disabled"` | `"header"` | 展开触发区域 |
|
|
61
|
+
| activeKeys / defaultActiveKeys | `string[]` | — | 受控/初始展开 |
|
|
62
|
+
| onChange | `(keys: string[]) => void` | — | 展开变更 |
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Alert 警告提示
|
|
2
|
+
|
|
3
|
+
> 页面中嵌入的警告/提示。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Alert } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 四种语义
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Alert tone="info" title="标题">内容</Alert>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 无标题 / 可关闭
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Alert tone="info" closable>仅一行的简短提示</Alert>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 隐藏图标
|
|
26
|
+
|
|
27
|
+
showIcon={false} 可隐藏左侧语义图标,文本更紧凑。
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<Alert tone="info" showIcon={false}>纯文本提示</Alert>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 自定义操作区
|
|
34
|
+
|
|
35
|
+
action 插槽可以放置按钮等操作元素,位于内容与关闭按钮之间。
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<Alert
|
|
39
|
+
tone="warning"
|
|
40
|
+
title="新版本可用"
|
|
41
|
+
action={<Button size="sm" variant="primary">立即更新</Button>}
|
|
42
|
+
closable
|
|
43
|
+
>
|
|
44
|
+
v1.2.0 已发布。
|
|
45
|
+
</Alert>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
**Alert**
|
|
51
|
+
|
|
52
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
53
|
+
| --- | --- | --- | --- |
|
|
54
|
+
| tone | `"info" | "success" | "warning" | "danger"` | `"info"` | 语气 |
|
|
55
|
+
| title | `ReactNode` | — | 标题 |
|
|
56
|
+
| icon | `IconName` | — | 自定义图标 |
|
|
57
|
+
| showIcon | `boolean` | `true` | 是否显示语义图标 |
|
|
58
|
+
| action | `ReactNode` | — | 右侧操作区(如按钮) |
|
|
59
|
+
| closable | `boolean` | `false` | 可关闭 |
|
|
60
|
+
| onClose | `() => void` | — | 关闭回调 |
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Avatar 头像
|
|
2
|
+
|
|
3
|
+
> 用图像、首字母代表用户或事物。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Avatar } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础
|
|
14
|
+
|
|
15
|
+
通过 alt 自动生成首字母。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<Avatar alt="金伟" />
|
|
19
|
+
<Avatar alt="陆" size="lg" />
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 方形头像
|
|
23
|
+
|
|
24
|
+
shape="square" 使用圆角方形,尺寸变化时圆角跟随变化。
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<Avatar alt="金" shape="square" />
|
|
28
|
+
<Avatar alt="陆" shape="square" size="lg" />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 状态
|
|
32
|
+
|
|
33
|
+
在右下角显示状态点。
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<Avatar alt="金" status="online" />
|
|
37
|
+
<Avatar alt="陆" status="busy" />
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## API
|
|
41
|
+
|
|
42
|
+
**Avatar**
|
|
43
|
+
|
|
44
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
| src | `string` | — | 图片 URL |
|
|
47
|
+
| alt | `string` | — | 替代文本/首字母来源 |
|
|
48
|
+
| initials | `string` | — | 自定义首字母 |
|
|
49
|
+
| size | `number | "sm" | "md" | "lg" | "xl"` | `"md"` | 尺寸 |
|
|
50
|
+
| shape | `"circle" | "square"` | `"circle"` | 形状 |
|
|
51
|
+
| status | `"online" | "busy" | "away" | "offline"` | — | 状态点 |
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Badge 徽标数
|
|
2
|
+
|
|
3
|
+
> 右上角的小型计数或状态指示器。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Badge } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 数字徽标
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Badge count={3}><IconButton icon="bell" /></Badge>
|
|
17
|
+
<Badge count={128} max={99}><IconButton icon="mail" /></Badge>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 圆点
|
|
21
|
+
|
|
22
|
+
dot 模式不显示数字,只是状态指示。
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
<Badge dot><IconButton icon="user" /></Badge>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## API
|
|
29
|
+
|
|
30
|
+
**Badge**
|
|
31
|
+
|
|
32
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| count | `number` | — | 显示数字 |
|
|
35
|
+
| dot | `boolean` | `false` | 圆点模式 |
|
|
36
|
+
| max | `number` | `99` | 超过显示 max+ |
|
|
37
|
+
| tone | `"neutral" | "accent" | ...` | `"danger"` | 色调 |
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Button 按钮
|
|
2
|
+
|
|
3
|
+
> 标记一个操作命令,响应用户点击行为,触发相应业务逻辑。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Button, IconButton, Segmented } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础按钮
|
|
14
|
+
|
|
15
|
+
四种风格:主要、默认、幽灵、危险。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<Button variant="primary">主按钮</Button>
|
|
19
|
+
<Button>默认按钮</Button>
|
|
20
|
+
<Button variant="ghost">幽灵按钮</Button>
|
|
21
|
+
<Button variant="danger">删除</Button>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 图标按钮
|
|
25
|
+
|
|
26
|
+
icon 在前,trailingIcon 在后。
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<Button variant="primary" icon="sparkle">新建</Button>
|
|
30
|
+
<Button icon="download">下载</Button>
|
|
31
|
+
<Button trailingIcon="arrowRight">下一步</Button>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 加载与禁用
|
|
35
|
+
|
|
36
|
+
loading 期间禁用并显示 spinner。
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<Button loading={loading} variant="primary" onClick={...}>点我加载</Button>
|
|
40
|
+
<Button disabled>已禁用</Button>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 尺寸
|
|
44
|
+
|
|
45
|
+
提供 sm / md / lg 三种高度。
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<Button size="sm">Small</Button>
|
|
49
|
+
<Button>Medium</Button>
|
|
50
|
+
<Button size="lg">Large</Button>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 块级按钮
|
|
54
|
+
|
|
55
|
+
block 让按钮撑满容器宽度,常用于底部主操作或表单提交。
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<Button block variant="primary" icon="send">提交表单</Button>
|
|
59
|
+
<Button block>取消</Button>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 纯图标按钮
|
|
63
|
+
|
|
64
|
+
IconButton 是只含图标的方形按钮,常配合 tip 使用。
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
<IconButton icon="heart" tip="收藏" />
|
|
68
|
+
<IconButton icon="bell" tip="通知" />
|
|
69
|
+
<IconButton icon="settings" tip="设置" />
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 分段控制器
|
|
73
|
+
|
|
74
|
+
互斥多选项切换。
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<Segmented
|
|
78
|
+
options={[
|
|
79
|
+
{ value: "grid", label: "网格" },
|
|
80
|
+
{ value: "list", label: "列表" },
|
|
81
|
+
{ value: "card", label: "卡片" },
|
|
82
|
+
]}
|
|
83
|
+
defaultValue="grid"
|
|
84
|
+
/>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## API
|
|
88
|
+
|
|
89
|
+
**Button**
|
|
90
|
+
|
|
91
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
92
|
+
| --- | --- | --- | --- |
|
|
93
|
+
| variant | `"default" | "primary" | "ghost" | "danger"` | `"default"` | 按钮风格 |
|
|
94
|
+
| size | `"sm" | "md" | "lg"` | `"md"` | 按钮尺寸 |
|
|
95
|
+
| icon | `IconName` | — | 前置图标 |
|
|
96
|
+
| trailingIcon | `IconName` | — | 后置图标 |
|
|
97
|
+
| loading | `boolean` | `false` | 加载态 |
|
|
98
|
+
| block | `boolean` | `false` | 撑满父容器宽度 |
|
|
99
|
+
| disabled | `boolean` | `false` | 禁用 |
|
|
100
|
+
| onClick | `(e: MouseEvent) => void` | — | 点击回调 |
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
**IconButton**
|
|
104
|
+
|
|
105
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
106
|
+
| --- | --- | --- | --- |
|
|
107
|
+
| icon \* | `IconName` | — | 图标名 |
|
|
108
|
+
| tip | `string` | — | 悬浮提示 |
|
|
109
|
+
| size / variant | `—` | — | 继承自 Button |
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
**Segmented**
|
|
113
|
+
|
|
114
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
115
|
+
| --- | --- | --- | --- |
|
|
116
|
+
| options \* | `{ value, label, disabled? }[]` | — | 选项数组 |
|
|
117
|
+
| value / defaultValue | `T` | — | 受控/初始选中值 |
|
|
118
|
+
| onChange | `(value: T) => void` | — | 切换回调 |
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Calendar 日历
|
|
2
|
+
|
|
3
|
+
> 查看与选择日期。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Calendar } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 基础用法
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Calendar value={date} onChange={setDate} />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 禁用日期
|
|
20
|
+
|
|
21
|
+
通过 disabledDate 将周末标灰并禁止点击;与 min/max 可叠加使用。
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<Calendar
|
|
25
|
+
value={workDate}
|
|
26
|
+
onChange={setWorkDate}
|
|
27
|
+
disabledDate={(d) => d.getDay() === 0 || d.getDay() === 6}
|
|
28
|
+
/>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## API
|
|
32
|
+
|
|
33
|
+
**Calendar**
|
|
34
|
+
|
|
35
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| value / defaultValue | `Date` | — | 受控/初始日期 |
|
|
38
|
+
| onChange | `(date: Date) => void` | — | 选择回调 |
|
|
39
|
+
| min / max | `Date` | — | 可选范围 |
|
|
40
|
+
| disabledDate | `(date: Date) => boolean` | — | 自定义禁用判断,返回 true 的日期不可选 |
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
[← 回到索引](../llms.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Card 卡片
|
|
2
|
+
|
|
3
|
+
> 信息分组容器,提供 raised / flat / sunken 三种视觉变体。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Card, Panel } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 三种变体
|
|
14
|
+
|
|
15
|
+
raised(默认凸起)、flat(扁平)、sunken(凹陷)。
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<Card>raised</Card>
|
|
19
|
+
<Card variant="flat">flat</Card>
|
|
20
|
+
<Card variant="sunken">sunken</Card>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 悬浮抬起
|
|
24
|
+
|
|
25
|
+
hoverable 在鼠标悬浮时轻微上移并加强阴影,适合可点击的卡片列表。
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
<Card hoverable>可点击卡片</Card>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Panel
|
|
32
|
+
|
|
33
|
+
带标题、描述、操作区。
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<Panel title="月度营收" description="2026 年 4 月" actions={...}>
|
|
37
|
+
¥ 12,480
|
|
38
|
+
</Panel>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Panel 带操作
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
<Panel title="..." actions={<Button size="sm" icon="plus">邀请</Button>}>...</Panel>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## API
|
|
48
|
+
|
|
49
|
+
**Card**
|
|
50
|
+
|
|
51
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| variant | `"raised" | "flat" | "sunken"` | `"raised"` | 视觉变体 |
|
|
54
|
+
| padding | `"none" | "sm" | "md" | "lg"` | `"md"` | 内边距 |
|
|
55
|
+
| hoverable | `boolean` | `false` | 悬浮时抬起 |
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
**Panel**
|
|
59
|
+
|
|
60
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
61
|
+
| --- | --- | --- | --- |
|
|
62
|
+
| title | `ReactNode` | — | 标题 |
|
|
63
|
+
| description | `ReactNode` | — | 副标题 |
|
|
64
|
+
| actions | `ReactNode` | — | 右上操作区 |
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
[← 回到索引](../llms.md)
|