@fangxinyan/lumina 0.5.1 → 0.6.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/dist/Accordion.cjs +3 -3
- package/dist/Accordion.d.cts +2 -2
- package/dist/Accordion.d.ts +2 -2
- package/dist/Accordion.js +2 -2
- package/dist/Alert.cjs +3 -3
- package/dist/Alert.d.cts +2 -2
- package/dist/Alert.d.ts +2 -2
- package/dist/Alert.js +2 -2
- package/dist/AppShell.cjs +5 -5
- package/dist/AppShell.d.cts +8 -8
- package/dist/AppShell.d.ts +8 -8
- package/dist/AppShell.js +1 -1
- package/dist/AutoComplete.cjs +4 -4
- package/dist/AutoComplete.d.cts +1 -4
- package/dist/AutoComplete.d.ts +1 -4
- package/dist/AutoComplete.js +3 -3
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.d.cts +1 -1
- package/dist/Avatar.d.ts +1 -1
- package/dist/Avatar.js +1 -1
- package/dist/Button.cjs +4 -4
- package/dist/Button.js +2 -2
- package/dist/Calendar.cjs +3 -3
- package/dist/Calendar.d.cts +2 -2
- package/dist/Calendar.d.ts +2 -2
- package/dist/Calendar.js +2 -2
- package/dist/Cascader.cjs +3 -3
- package/dist/Cascader.d.cts +2 -2
- package/dist/Cascader.d.ts +2 -2
- package/dist/Cascader.js +2 -2
- package/dist/Checkbox.cjs +4 -4
- package/dist/Checkbox.d.cts +5 -5
- package/dist/Checkbox.d.ts +5 -5
- package/dist/Checkbox.js +2 -2
- package/dist/ColorPicker.cjs +2 -2
- package/dist/ColorPicker.d.cts +1 -3
- package/dist/ColorPicker.d.ts +1 -3
- package/dist/ColorPicker.js +1 -1
- package/dist/CommandPalette.cjs +4 -4
- package/dist/CommandPalette.d.cts +2 -2
- package/dist/CommandPalette.d.ts +2 -2
- package/dist/CommandPalette.js +3 -3
- package/dist/ContextMenu.cjs +2 -2
- package/dist/ContextMenu.d.cts +2 -2
- package/dist/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu.js +1 -1
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.d.cts +1 -1
- package/dist/Divider.d.ts +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Drawer.cjs +3 -3
- package/dist/Drawer.d.cts +2 -2
- package/dist/Drawer.d.ts +2 -2
- package/dist/Drawer.js +2 -2
- package/dist/Empty.cjs +4 -4
- package/dist/Empty.d.cts +6 -6
- package/dist/Empty.d.ts +6 -6
- package/dist/Empty.js +1 -1
- package/dist/Form.cjs +4 -4
- package/dist/Form.d.cts +2 -2
- package/dist/Form.d.ts +2 -2
- package/dist/Form.js +1 -1
- package/dist/Icon.cjs +3 -3
- package/dist/Icon.d.cts +1 -1
- package/dist/Icon.d.ts +1 -1
- package/dist/Icon.js +1 -1
- package/dist/Image.cjs +4 -4
- package/dist/Image.d.cts +4 -4
- package/dist/Image.d.ts +4 -4
- package/dist/Image.js +2 -2
- package/dist/Input.cjs +4 -4
- package/dist/Input.js +2 -2
- package/dist/InputNumber.cjs +4 -4
- package/dist/InputNumber.d.cts +1 -5
- package/dist/InputNumber.d.ts +1 -5
- package/dist/InputNumber.js +3 -3
- package/dist/List.cjs +2 -2
- package/dist/List.d.cts +2 -2
- package/dist/List.d.ts +2 -2
- package/dist/List.js +1 -1
- package/dist/Modal.cjs +4 -4
- package/dist/Modal.d.cts +2 -2
- package/dist/Modal.d.ts +2 -2
- package/dist/Modal.js +3 -3
- package/dist/Pagination.cjs +5 -5
- package/dist/Pagination.d.cts +2 -2
- package/dist/Pagination.d.ts +2 -2
- package/dist/Pagination.js +4 -4
- package/dist/Popover.cjs +2 -2
- package/dist/Popover.d.cts +2 -2
- package/dist/Popover.d.ts +2 -2
- package/dist/Popover.js +1 -1
- package/dist/Progress-CHV7DN6Y.css +80 -0
- package/dist/Progress.cjs +2 -6
- package/dist/Progress.d.cts +5 -13
- package/dist/Progress.d.ts +5 -13
- package/dist/Progress.js +1 -1
- package/dist/Select.cjs +4 -4
- package/dist/Select.d.cts +6 -3
- package/dist/Select.d.ts +6 -3
- package/dist/Select.js +3 -3
- package/dist/Splitter.cjs +2 -2
- package/dist/Splitter.d.cts +2 -2
- package/dist/Splitter.d.ts +2 -2
- package/dist/Splitter.js +1 -1
- package/dist/StatusBar.cjs +3 -3
- package/dist/StatusBar.d.cts +3 -2
- package/dist/StatusBar.d.ts +3 -2
- package/dist/StatusBar.js +1 -1
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.d.cts +2 -2
- package/dist/Switch.d.ts +2 -2
- package/dist/Switch.js +1 -1
- package/dist/Table.cjs +8 -8
- package/dist/Table.d.cts +4 -3
- package/dist/Table.d.ts +4 -3
- package/dist/Table.js +6 -6
- package/dist/Tabs.cjs +3 -3
- package/dist/Tabs.d.cts +5 -5
- package/dist/Tabs.d.ts +5 -5
- package/dist/Tabs.js +1 -1
- package/dist/Tag.cjs +4 -4
- package/dist/Tag.d.cts +2 -2
- package/dist/Tag.d.ts +2 -2
- package/dist/Tag.js +2 -2
- package/dist/Timeline.cjs +3 -3
- package/dist/Timeline.js +2 -2
- package/dist/Toast.cjs +4 -4
- package/dist/Toast.d.cts +2 -2
- package/dist/Toast.d.ts +2 -2
- package/dist/Toast.js +2 -2
- package/dist/Tooltip.cjs +2 -2
- package/dist/Tooltip.d.cts +2 -2
- package/dist/Tooltip.d.ts +2 -2
- package/dist/Tooltip.js +1 -1
- package/dist/Typography.cjs +7 -7
- package/dist/Typography.js +2 -2
- package/dist/{chunk-QVFEKGKI.cjs → chunk-2K5HZLXW.cjs} +6 -3
- package/dist/chunk-2K5HZLXW.cjs.map +1 -0
- package/dist/chunk-2LIX7ZHX.js +29 -0
- package/dist/chunk-2LIX7ZHX.js.map +1 -0
- package/dist/{chunk-3ES5QPAF.cjs → chunk-2TNJ7TC4.cjs} +22 -12
- package/dist/chunk-2TNJ7TC4.cjs.map +1 -0
- package/dist/chunk-3EGZ6TBF.cjs +65 -0
- package/dist/chunk-3EGZ6TBF.cjs.map +1 -0
- package/dist/{chunk-RFU5HN4E.js → chunk-3LJO33HI.js} +25 -7
- package/dist/chunk-3LJO33HI.js.map +1 -0
- package/dist/{chunk-UQB5OHMO.js → chunk-44AVDO3T.js} +27 -19
- package/dist/chunk-44AVDO3T.js.map +1 -0
- package/dist/{chunk-TAYFI4RG.cjs → chunk-474MXYO5.cjs} +4 -4
- package/dist/{chunk-TAYFI4RG.cjs.map → chunk-474MXYO5.cjs.map} +1 -1
- package/dist/{chunk-TMRSI543.js → chunk-4DNHASZU.js} +10 -8
- package/dist/chunk-4DNHASZU.js.map +1 -0
- package/dist/{chunk-UXABXEWT.js → chunk-4JHFGSNH.js} +24 -13
- package/dist/chunk-4JHFGSNH.js.map +1 -0
- package/dist/{chunk-E7UQSFKF.js → chunk-4XSP4HHZ.js} +18 -8
- package/dist/chunk-4XSP4HHZ.js.map +1 -0
- package/dist/{chunk-JQZFOIX6.js → chunk-5VIOJW6M.js} +141 -128
- package/dist/chunk-5VIOJW6M.js.map +1 -0
- package/dist/{chunk-WBL7LOIH.js → chunk-6CAEGNCK.js} +10 -8
- package/dist/chunk-6CAEGNCK.js.map +1 -0
- package/dist/{chunk-JELHUUM5.js → chunk-6FSOJLY6.js} +3 -3
- package/dist/{chunk-JELHUUM5.js.map → chunk-6FSOJLY6.js.map} +1 -1
- package/dist/{chunk-2OBQOEFD.cjs → chunk-6TRVGFFX.cjs} +16 -5
- package/dist/chunk-6TRVGFFX.cjs.map +1 -0
- package/dist/{chunk-7T2SLRNL.cjs → chunk-74VZZAUT.cjs} +14 -7
- package/dist/chunk-74VZZAUT.cjs.map +1 -0
- package/dist/{chunk-GR5STMOA.js → chunk-A3IJM7IX.js} +76 -50
- package/dist/chunk-A3IJM7IX.js.map +1 -0
- package/dist/{chunk-WZ73TWB2.cjs → chunk-AXRABZLY.cjs} +25 -7
- package/dist/chunk-AXRABZLY.cjs.map +1 -0
- package/dist/{chunk-X3JG3IR6.js → chunk-BSHHQOFY.js} +23 -18
- package/dist/chunk-BSHHQOFY.js.map +1 -0
- package/dist/{chunk-JSDQVVQB.js → chunk-CVEGVB2C.js} +17 -12
- package/dist/chunk-CVEGVB2C.js.map +1 -0
- package/dist/{chunk-ILVNMES2.js → chunk-D242UJZO.js} +14 -11
- package/dist/chunk-D242UJZO.js.map +1 -0
- package/dist/{chunk-RJNGXR5Y.js → chunk-DB5JMXOI.js} +11 -9
- package/dist/chunk-DB5JMXOI.js.map +1 -0
- package/dist/{chunk-OWNVDXRQ.js → chunk-DCX36FYD.js} +23 -10
- package/dist/chunk-DCX36FYD.js.map +1 -0
- package/dist/{chunk-3KQKEE5O.cjs → chunk-DH4NYYJP.cjs} +43 -18
- package/dist/chunk-DH4NYYJP.cjs.map +1 -0
- package/dist/{chunk-P4XPESR2.js → chunk-DUNQNSVK.js} +20 -10
- package/dist/chunk-DUNQNSVK.js.map +1 -0
- package/dist/{chunk-5PREWYTB.js → chunk-E6K6GYUC.js} +21 -27
- package/dist/chunk-E6K6GYUC.js.map +1 -0
- package/dist/{chunk-IHACXMOI.js → chunk-EARCKSI7.js} +6 -3
- package/dist/chunk-EARCKSI7.js.map +1 -0
- package/dist/chunk-EHZXEZI2.cjs +78 -0
- package/dist/chunk-EHZXEZI2.cjs.map +1 -0
- package/dist/{chunk-S7RFIMA3.cjs → chunk-FBQLNAUI.cjs} +11 -9
- package/dist/chunk-FBQLNAUI.cjs.map +1 -0
- package/dist/chunk-FCIPCZAK.cjs +53 -0
- package/dist/chunk-FCIPCZAK.cjs.map +1 -0
- package/dist/{chunk-DLGFIRVW.js → chunk-FSOJHDXH.js} +7 -6
- package/dist/chunk-FSOJHDXH.js.map +1 -0
- package/dist/{chunk-2D5VCIJZ.cjs → chunk-HHSVGNJA.cjs} +7 -7
- package/dist/chunk-HHSVGNJA.cjs.map +1 -0
- package/dist/{chunk-ZSR5JSYZ.cjs → chunk-HQO7EZNQ.cjs} +23 -13
- package/dist/chunk-HQO7EZNQ.cjs.map +1 -0
- package/dist/{chunk-V6466VMN.cjs → chunk-IL523MTN.cjs} +144 -131
- package/dist/chunk-IL523MTN.cjs.map +1 -0
- package/dist/{chunk-GT45MQAK.cjs → chunk-JAGJQDAV.cjs} +22 -13
- package/dist/chunk-JAGJQDAV.cjs.map +1 -0
- package/dist/{chunk-U7TAQLPN.cjs → chunk-JF2WNLPF.cjs} +6 -6
- package/dist/{chunk-U7TAQLPN.cjs.map → chunk-JF2WNLPF.cjs.map} +1 -1
- package/dist/{chunk-S3NIRNWM.js → chunk-JS6U7UQS.js} +3 -3
- package/dist/{chunk-S3NIRNWM.js.map → chunk-JS6U7UQS.js.map} +1 -1
- package/dist/{chunk-H2QTLV5T.cjs → chunk-KA3XLPQJ.cjs} +34 -9
- package/dist/chunk-KA3XLPQJ.cjs.map +1 -0
- package/dist/{chunk-NS3C2ZSE.js → chunk-KWE2PXJQ.js} +8 -5
- package/dist/chunk-KWE2PXJQ.js.map +1 -0
- package/dist/{chunk-TGUDT3GK.js → chunk-LSQD2GFA.js} +4 -4
- package/dist/chunk-LSQD2GFA.js.map +1 -0
- package/dist/{chunk-D26YHP2Y.cjs → chunk-MU4GGX6C.cjs} +14 -12
- package/dist/chunk-MU4GGX6C.cjs.map +1 -0
- package/dist/{chunk-3YYOYDKI.js → chunk-MXIWTYNC.js} +16 -6
- package/dist/chunk-MXIWTYNC.js.map +1 -0
- package/dist/{chunk-5EAVXFFD.cjs → chunk-NRP3X3PE.cjs} +17 -12
- package/dist/chunk-NRP3X3PE.cjs.map +1 -0
- package/dist/{chunk-DF5K2BZ2.cjs → chunk-P4CGE5C7.cjs} +17 -7
- package/dist/chunk-P4CGE5C7.cjs.map +1 -0
- package/dist/{chunk-5SJJI3HL.js → chunk-PX5ABNKV.js} +19 -10
- package/dist/chunk-PX5ABNKV.js.map +1 -0
- package/dist/{chunk-WKNVNN2K.cjs → chunk-QCNHDDSD.cjs} +36 -13
- package/dist/chunk-QCNHDDSD.cjs.map +1 -0
- package/dist/{chunk-5N7347MI.js → chunk-QRSPBK3X.js} +8 -6
- package/dist/chunk-QRSPBK3X.js.map +1 -0
- package/dist/{chunk-XT7RXXOE.js → chunk-RHZOBQON.js} +35 -13
- package/dist/chunk-RHZOBQON.js.map +1 -0
- package/dist/{chunk-P2AV5BD7.cjs → chunk-RNVE2LMJ.cjs} +33 -8
- package/dist/chunk-RNVE2LMJ.cjs.map +1 -0
- package/dist/{chunk-TQLCIXCK.cjs → chunk-RXL26GSI.cjs} +28 -5
- package/dist/chunk-RXL26GSI.cjs.map +1 -0
- package/dist/{chunk-UUY7EDVJ.cjs → chunk-S3OSBW7R.cjs} +19 -14
- package/dist/chunk-S3OSBW7R.cjs.map +1 -0
- package/dist/{chunk-33TIL25B.cjs → chunk-SREMTSVI.cjs} +47 -19
- package/dist/chunk-SREMTSVI.cjs.map +1 -0
- package/dist/{chunk-6GNFRP2H.js → chunk-SWB57EA2.js} +9 -7
- package/dist/chunk-SWB57EA2.js.map +1 -0
- package/dist/{chunk-FLPHVK45.js → chunk-T7ZBJJC4.js} +12 -7
- package/dist/chunk-T7ZBJJC4.js.map +1 -0
- package/dist/chunk-TC5ZL2OS.cjs +165 -0
- package/dist/chunk-TC5ZL2OS.cjs.map +1 -0
- package/dist/{chunk-I7UJA6RM.cjs → chunk-V24B7KWT.cjs} +12 -10
- package/dist/chunk-V24B7KWT.cjs.map +1 -0
- package/dist/{chunk-BIXW4ZYW.cjs → chunk-V5KSJITO.cjs} +7 -7
- package/dist/{chunk-BIXW4ZYW.cjs.map → chunk-V5KSJITO.cjs.map} +1 -1
- package/dist/{chunk-IJIQ4H6C.cjs → chunk-WFFWVQK4.cjs} +7 -7
- package/dist/{chunk-IJIQ4H6C.cjs.map → chunk-WFFWVQK4.cjs.map} +1 -1
- package/dist/{chunk-LWN2PXW7.js → chunk-WLFMOWUY.js} +3 -3
- package/dist/{chunk-LWN2PXW7.js.map → chunk-WLFMOWUY.js.map} +1 -1
- package/dist/{chunk-N5W6XJI2.js → chunk-X3QINITU.js} +16 -5
- package/dist/chunk-X3QINITU.js.map +1 -0
- package/dist/{chunk-AJEF2ZB7.cjs → chunk-XMFVAYBP.cjs} +9 -8
- package/dist/chunk-XMFVAYBP.cjs.map +1 -0
- package/dist/{chunk-WR3FML2W.cjs → chunk-XMINE4TN.cjs} +28 -17
- package/dist/chunk-XMINE4TN.cjs.map +1 -0
- package/dist/{chunk-YZ2I7CDF.cjs → chunk-XXE5TQ7I.cjs} +9 -7
- package/dist/chunk-XXE5TQ7I.cjs.map +1 -0
- package/dist/{chunk-UEHONGPZ.js → chunk-XYGRVPUA.js} +33 -8
- package/dist/chunk-XYGRVPUA.js.map +1 -0
- package/dist/chunk-Y7BZMMAV.cjs +51 -0
- package/dist/chunk-Y7BZMMAV.cjs.map +1 -0
- package/dist/{chunk-HHPYY4LH.js → chunk-YRAQRENN.js} +38 -11
- package/dist/chunk-YRAQRENN.js.map +1 -0
- package/dist/{chunk-BPDWBY6Y.cjs → chunk-YVSZLQTQ.cjs} +19 -9
- package/dist/chunk-YVSZLQTQ.cjs.map +1 -0
- package/dist/{chunk-TCPTBLDV.cjs → chunk-ZA36BJIY.cjs} +38 -11
- package/dist/chunk-ZA36BJIY.cjs.map +1 -0
- package/dist/{chunk-47Z4NIU4.js → chunk-ZHCQEJ2Z.js} +14 -7
- package/dist/chunk-ZHCQEJ2Z.js.map +1 -0
- package/dist/{chunk-D3GZSL2B.cjs → chunk-ZM4P6ELG.cjs} +45 -23
- package/dist/chunk-ZM4P6ELG.cjs.map +1 -0
- package/dist/{chunk-4ADDAZK3.js → chunk-ZN6VS6SO.js} +18 -13
- package/dist/chunk-ZN6VS6SO.js.map +1 -0
- package/dist/{chunk-AZRJZM7W.js → chunk-ZPDMAMWC.js} +21 -11
- package/dist/chunk-ZPDMAMWC.js.map +1 -0
- package/dist/{chunk-GB5NAXBP.js → chunk-ZZXNHPF3.js} +3 -3
- package/dist/{chunk-GB5NAXBP.js.map → chunk-ZZXNHPF3.js.map} +1 -1
- package/dist/index.cjs +94 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +37 -37
- package/dist/index.js.map +1 -1
- package/dist/styles.css +50 -32
- package/docs/llms/appshell.md +36 -0
- package/docs/llms/progress.md +10 -18
- package/docs/llms.md +7 -5
- package/package.json +76 -1
- package/dist/Progress-IXRSO5TW.css +0 -63
- package/dist/chunk-2D5VCIJZ.cjs.map +0 -1
- package/dist/chunk-2OBQOEFD.cjs.map +0 -1
- package/dist/chunk-33TIL25B.cjs.map +0 -1
- package/dist/chunk-3ES5QPAF.cjs.map +0 -1
- package/dist/chunk-3KQKEE5O.cjs.map +0 -1
- package/dist/chunk-3YYOYDKI.js.map +0 -1
- package/dist/chunk-47Z4NIU4.js.map +0 -1
- package/dist/chunk-4ADDAZK3.js.map +0 -1
- package/dist/chunk-5BFETKVP.cjs +0 -52
- package/dist/chunk-5BFETKVP.cjs.map +0 -1
- package/dist/chunk-5EAVXFFD.cjs.map +0 -1
- package/dist/chunk-5N7347MI.js.map +0 -1
- package/dist/chunk-5PREWYTB.js.map +0 -1
- package/dist/chunk-5SJJI3HL.js.map +0 -1
- package/dist/chunk-6GNFRP2H.js.map +0 -1
- package/dist/chunk-7T2SLRNL.cjs.map +0 -1
- package/dist/chunk-7YQWG7HR.cjs +0 -45
- package/dist/chunk-7YQWG7HR.cjs.map +0 -1
- package/dist/chunk-AJEF2ZB7.cjs.map +0 -1
- package/dist/chunk-AZRJZM7W.js.map +0 -1
- package/dist/chunk-BPDWBY6Y.cjs.map +0 -1
- package/dist/chunk-D26YHP2Y.cjs.map +0 -1
- package/dist/chunk-D3GZSL2B.cjs.map +0 -1
- package/dist/chunk-DF5K2BZ2.cjs.map +0 -1
- package/dist/chunk-DLGFIRVW.js.map +0 -1
- package/dist/chunk-E7UQSFKF.js.map +0 -1
- package/dist/chunk-FLPHVK45.js.map +0 -1
- package/dist/chunk-GR5STMOA.js.map +0 -1
- package/dist/chunk-GT45MQAK.cjs.map +0 -1
- package/dist/chunk-H2QTLV5T.cjs.map +0 -1
- package/dist/chunk-HHPYY4LH.js.map +0 -1
- package/dist/chunk-I7UJA6RM.cjs.map +0 -1
- package/dist/chunk-IHACXMOI.js.map +0 -1
- package/dist/chunk-ILVNMES2.js.map +0 -1
- package/dist/chunk-IZDJCEMF.cjs +0 -31
- package/dist/chunk-IZDJCEMF.cjs.map +0 -1
- package/dist/chunk-JQZFOIX6.js.map +0 -1
- package/dist/chunk-JSDQVVQB.js.map +0 -1
- package/dist/chunk-N5W6XJI2.js.map +0 -1
- package/dist/chunk-NQQWCIE6.cjs +0 -20
- package/dist/chunk-NQQWCIE6.cjs.map +0 -1
- package/dist/chunk-NS3C2ZSE.js.map +0 -1
- package/dist/chunk-OWNVDXRQ.js.map +0 -1
- package/dist/chunk-P2AV5BD7.cjs.map +0 -1
- package/dist/chunk-P4XPESR2.js.map +0 -1
- package/dist/chunk-QVFEKGKI.cjs.map +0 -1
- package/dist/chunk-RFU5HN4E.js.map +0 -1
- package/dist/chunk-RJNGXR5Y.js.map +0 -1
- package/dist/chunk-S7RFIMA3.cjs.map +0 -1
- package/dist/chunk-TCPTBLDV.cjs.map +0 -1
- package/dist/chunk-TGUDT3GK.js.map +0 -1
- package/dist/chunk-TMRSI543.js.map +0 -1
- package/dist/chunk-TQLCIXCK.cjs.map +0 -1
- package/dist/chunk-UEHONGPZ.js.map +0 -1
- package/dist/chunk-UQB5OHMO.js.map +0 -1
- package/dist/chunk-UUY7EDVJ.cjs.map +0 -1
- package/dist/chunk-UXABXEWT.js.map +0 -1
- package/dist/chunk-V6466VMN.cjs.map +0 -1
- package/dist/chunk-WBL7LOIH.js.map +0 -1
- package/dist/chunk-WDBJVKSR.js +0 -18
- package/dist/chunk-WDBJVKSR.js.map +0 -1
- package/dist/chunk-WKNVNN2K.cjs.map +0 -1
- package/dist/chunk-WR3FML2W.cjs.map +0 -1
- package/dist/chunk-WZ73TWB2.cjs.map +0 -1
- package/dist/chunk-X3JG3IR6.js.map +0 -1
- package/dist/chunk-XT7RXXOE.js.map +0 -1
- package/dist/chunk-XUT2Z2L6.cjs +0 -119
- package/dist/chunk-XUT2Z2L6.cjs.map +0 -1
- package/dist/chunk-YZ2I7CDF.cjs.map +0 -1
- package/dist/chunk-ZSR5JSYZ.cjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
export { Table, TablePro } from './chunk-
|
|
2
|
-
export { Segmented, Tabs } from './chunk-
|
|
1
|
+
export { Table, TablePro } from './chunk-5VIOJW6M.js';
|
|
2
|
+
export { Segmented, Tabs } from './chunk-CVEGVB2C.js';
|
|
3
3
|
export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, FONT_STACKS, ThemeProvider, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional } from './chunk-W6I67HQQ.js';
|
|
4
|
-
export { Timeline } from './chunk-
|
|
5
|
-
export { ToastContainer, toast } from './chunk-
|
|
6
|
-
export { Tooltip } from './chunk-
|
|
7
|
-
export { Link, Paragraph, Text, Title, Typography } from './chunk-
|
|
8
|
-
export { Pagination } from './chunk-
|
|
9
|
-
export { Popover } from './chunk-
|
|
10
|
-
export { Progress
|
|
11
|
-
export { Select } from './chunk-
|
|
12
|
-
export { Badge, Tag } from './chunk-
|
|
4
|
+
export { Timeline } from './chunk-JS6U7UQS.js';
|
|
5
|
+
export { ToastContainer, toast } from './chunk-FSOJHDXH.js';
|
|
6
|
+
export { Tooltip } from './chunk-YRAQRENN.js';
|
|
7
|
+
export { Link, Paragraph, Text, Title, Typography } from './chunk-WLFMOWUY.js';
|
|
8
|
+
export { Pagination } from './chunk-DB5JMXOI.js';
|
|
9
|
+
export { Popover } from './chunk-XYGRVPUA.js';
|
|
10
|
+
export { Progress } from './chunk-E6K6GYUC.js';
|
|
11
|
+
export { Select } from './chunk-RHZOBQON.js';
|
|
12
|
+
export { Badge, Tag } from './chunk-D242UJZO.js';
|
|
13
13
|
export { Slider } from './chunk-2TZ2R7L2.js';
|
|
14
|
-
export { Splitter } from './chunk-
|
|
15
|
-
export { StatusBar, StatusBarItem } from './chunk-
|
|
16
|
-
export { Switch } from './chunk-
|
|
17
|
-
export { Empty, Skeleton, Spinner } from './chunk-
|
|
18
|
-
export { Form, FormItem, useForm } from './chunk-
|
|
19
|
-
export { Image, ImageGrid } from './chunk-
|
|
20
|
-
export { InputNumber } from './chunk-
|
|
21
|
-
export { List } from './chunk-
|
|
22
|
-
export { Modal } from './chunk-
|
|
14
|
+
export { Splitter } from './chunk-ZHCQEJ2Z.js';
|
|
15
|
+
export { StatusBar, StatusBarItem } from './chunk-DCX36FYD.js';
|
|
16
|
+
export { Switch } from './chunk-SWB57EA2.js';
|
|
17
|
+
export { Empty, Skeleton, Spinner } from './chunk-A3IJM7IX.js';
|
|
18
|
+
export { Form, FormItem, useForm } from './chunk-EARCKSI7.js';
|
|
19
|
+
export { Image, ImageGrid } from './chunk-4JHFGSNH.js';
|
|
20
|
+
export { InputNumber } from './chunk-LSQD2GFA.js';
|
|
21
|
+
export { List } from './chunk-2LIX7ZHX.js';
|
|
22
|
+
export { Modal } from './chunk-PX5ABNKV.js';
|
|
23
23
|
export { Card, Panel } from './chunk-4SCDDSXY.js';
|
|
24
|
-
export { Cascader } from './chunk-
|
|
25
|
-
export { Checkbox, RadioGroup } from './chunk-
|
|
26
|
-
export { ColorPicker } from './chunk-
|
|
27
|
-
export { CommandPalette } from './chunk-
|
|
28
|
-
export { ContextMenu } from './chunk-
|
|
29
|
-
export { Divider } from './chunk-
|
|
30
|
-
export { Drawer } from './chunk-
|
|
31
|
-
export { Accordion } from './chunk-
|
|
32
|
-
export { Alert } from './chunk-
|
|
33
|
-
export { AppShell, Sidebar, TitleBar, WindowControls } from './chunk-
|
|
34
|
-
export { AutoComplete } from './chunk-
|
|
24
|
+
export { Cascader } from './chunk-DUNQNSVK.js';
|
|
25
|
+
export { Checkbox, RadioGroup } from './chunk-ZN6VS6SO.js';
|
|
26
|
+
export { ColorPicker } from './chunk-X3QINITU.js';
|
|
27
|
+
export { CommandPalette } from './chunk-4XSP4HHZ.js';
|
|
28
|
+
export { ContextMenu } from './chunk-3LJO33HI.js';
|
|
29
|
+
export { Divider } from './chunk-QRSPBK3X.js';
|
|
30
|
+
export { Drawer } from './chunk-ZPDMAMWC.js';
|
|
31
|
+
export { Accordion } from './chunk-6CAEGNCK.js';
|
|
32
|
+
export { Alert } from './chunk-T7ZBJJC4.js';
|
|
33
|
+
export { AppShell, Sidebar, TitleBar, WindowControls } from './chunk-44AVDO3T.js';
|
|
34
|
+
export { AutoComplete } from './chunk-MXIWTYNC.js';
|
|
35
35
|
import './chunk-ANAQER3T.js';
|
|
36
|
-
export { Input, Textarea } from './chunk-
|
|
37
|
-
export { Avatar } from './chunk-
|
|
38
|
-
export { Button, IconButton } from './chunk-
|
|
39
|
-
export { Calendar } from './chunk-
|
|
40
|
-
export { ICON_NAMES, Icon } from './chunk-
|
|
36
|
+
export { Input, Textarea } from './chunk-ZZXNHPF3.js';
|
|
37
|
+
export { Avatar } from './chunk-KWE2PXJQ.js';
|
|
38
|
+
export { Button, IconButton } from './chunk-6FSOJLY6.js';
|
|
39
|
+
export { Calendar } from './chunk-4DNHASZU.js';
|
|
40
|
+
export { ICON_NAMES, Icon } from './chunk-BSHHQOFY.js';
|
|
41
41
|
|
|
42
42
|
// src/index.ts
|
|
43
|
-
var VERSION = "0.
|
|
43
|
+
var VERSION = "0.6.0";
|
|
44
44
|
|
|
45
45
|
export { VERSION };
|
|
46
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,IAAM,OAAA,GAAU","file":"index.js","sourcesContent":["/* lumina — public exports */\n\nexport * from \"./components/Icon\";\nexport * from \"./components/Button\";\nexport * from \"./components/Input\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Select\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/Accordion\";\nexport * from \"./components/Card\";\nexport * from \"./components/Tag\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Progress\";\nexport * from \"./components/Modal\";\nexport * from \"./components/Toast\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Alert\";\nexport * from \"./components/Table\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Calendar\";\nexport * from \"./components/List\";\nexport * from \"./components/AppShell\";\nexport * from \"./components/StatusBar\";\nexport * from \"./components/Splitter\";\nexport * from \"./components/ContextMenu\";\nexport * from \"./components/CommandPalette\";\nexport * from \"./components/InputNumber\";\nexport * from \"./components/AutoComplete\";\nexport * from \"./components/Form\";\nexport * from \"./components/Empty\";\nexport * from \"./components/Image\";\nexport * from \"./components/Cascader\";\nexport * from \"./components/Typography\";\nexport * from \"./components/ColorPicker\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/Theme\";\nexport * from \"./components/Timeline\";\n\n/** Package version — bumped by release scripts. */\nexport const VERSION = \"0.
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,IAAM,OAAA,GAAU","file":"index.js","sourcesContent":["/* lumina — public exports */\n\nexport * from \"./components/Icon\";\nexport * from \"./components/Button\";\nexport * from \"./components/Input\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Select\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/Accordion\";\nexport * from \"./components/Card\";\nexport * from \"./components/Tag\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Progress\";\nexport * from \"./components/Modal\";\nexport * from \"./components/Toast\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Alert\";\nexport * from \"./components/Table\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Calendar\";\nexport * from \"./components/List\";\nexport * from \"./components/AppShell\";\nexport * from \"./components/StatusBar\";\nexport * from \"./components/Splitter\";\nexport * from \"./components/ContextMenu\";\nexport * from \"./components/CommandPalette\";\nexport * from \"./components/InputNumber\";\nexport * from \"./components/AutoComplete\";\nexport * from \"./components/Form\";\nexport * from \"./components/Empty\";\nexport * from \"./components/Image\";\nexport * from \"./components/Cascader\";\nexport * from \"./components/Typography\";\nexport * from \"./components/ColorPicker\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/Theme\";\nexport * from \"./components/Timeline\";\n\n/** Package version — bumped by release scripts. */\nexport const VERSION = \"0.6.0\";\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -711,11 +711,28 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
711
711
|
.slider.disabled .slider-mark { pointer-events: none; }
|
|
712
712
|
/* ============ Progress ============ */
|
|
713
713
|
.progress {
|
|
714
|
+
--progress-fill: var(--accent);
|
|
715
|
+
--progress-fill-glow: var(--accent-glow);
|
|
716
|
+
--progress-inset: 2px;
|
|
714
717
|
width: 100%;
|
|
715
718
|
display: flex;
|
|
716
719
|
flex-direction: column;
|
|
717
720
|
gap: 6px;
|
|
718
721
|
}
|
|
722
|
+
.progress.sm { --progress-inset: 1px; }
|
|
723
|
+
.progress.lg { --progress-inset: 2px; }
|
|
724
|
+
.progress.success {
|
|
725
|
+
--progress-fill: var(--success);
|
|
726
|
+
--progress-fill-glow: color-mix(in oklch, var(--success) 35%, transparent);
|
|
727
|
+
}
|
|
728
|
+
.progress.warning {
|
|
729
|
+
--progress-fill: var(--warning);
|
|
730
|
+
--progress-fill-glow: color-mix(in oklch, var(--warning) 35%, transparent);
|
|
731
|
+
}
|
|
732
|
+
.progress.danger {
|
|
733
|
+
--progress-fill: var(--danger);
|
|
734
|
+
--progress-fill-glow: color-mix(in oklch, var(--danger) 35%, transparent);
|
|
735
|
+
}
|
|
719
736
|
.progress-label {
|
|
720
737
|
display: flex;
|
|
721
738
|
justify-content: space-between;
|
|
@@ -727,7 +744,13 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
727
744
|
width: 100%;
|
|
728
745
|
height: 10px;
|
|
729
746
|
border-radius: 999px;
|
|
730
|
-
|
|
747
|
+
padding: var(--progress-inset);
|
|
748
|
+
box-sizing: border-box;
|
|
749
|
+
background: linear-gradient(
|
|
750
|
+
180deg,
|
|
751
|
+
color-mix(in oklch, var(--bg) 88%, var(--shadow-light)),
|
|
752
|
+
color-mix(in oklch, var(--bg) 92%, var(--shadow-dark))
|
|
753
|
+
);
|
|
731
754
|
box-shadow: var(--neu-in-sm);
|
|
732
755
|
overflow: hidden;
|
|
733
756
|
position: relative;
|
|
@@ -735,41 +758,36 @@ input, textarea, select { font-family: inherit; color: inherit; }
|
|
|
735
758
|
.progress.sm .progress-track { height: 6px; }
|
|
736
759
|
.progress.lg .progress-track { height: 14px; }
|
|
737
760
|
.progress-bar {
|
|
738
|
-
height: 100%;
|
|
739
|
-
background: linear-gradient(90deg, color-mix(in oklch, var(--accent) 70%, white), var(--accent));
|
|
740
|
-
border-radius: 999px;
|
|
741
|
-
box-shadow: 0 0 12px var(--accent-glow);
|
|
742
|
-
transition: width var(--dur-slow) var(--ease);
|
|
743
|
-
}
|
|
744
|
-
.progress.success .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--success) 70%, white), var(--success)); box-shadow: 0 0 10px color-mix(in oklch, var(--success) 35%, transparent); }
|
|
745
|
-
.progress.warning .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--warning) 70%, white), var(--warning)); box-shadow: 0 0 10px color-mix(in oklch, var(--warning) 35%, transparent); }
|
|
746
|
-
.progress.danger .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--danger) 70%, white), var(--danger)); box-shadow: 0 0 10px color-mix(in oklch, var(--danger) 35%, transparent); }
|
|
747
|
-
.ring {
|
|
748
|
-
--size: 72px;
|
|
749
|
-
--val: 50;
|
|
750
|
-
width: var(--size); height: var(--size);
|
|
751
|
-
border-radius: 999px;
|
|
752
|
-
background: conic-gradient(var(--accent) calc(var(--val) * 1%), var(--bg-sunken) 0);
|
|
753
|
-
display: grid; place-items: center;
|
|
754
761
|
position: relative;
|
|
755
|
-
|
|
762
|
+
height: 100%;
|
|
763
|
+
border-radius: inherit;
|
|
764
|
+
background: linear-gradient(
|
|
765
|
+
180deg,
|
|
766
|
+
color-mix(in oklch, var(--progress-fill) 68%, var(--shadow-light)) 0%,
|
|
767
|
+
var(--progress-fill) 55%,
|
|
768
|
+
color-mix(in oklch, var(--progress-fill) 84%, var(--shadow-dark)) 100%
|
|
769
|
+
);
|
|
770
|
+
box-shadow:
|
|
771
|
+
inset 1px 1px 2px color-mix(in oklch, var(--progress-fill) 18%, var(--shadow-dark)),
|
|
772
|
+
inset -1px -1px 2px color-mix(in oklch, var(--progress-fill) 14%, var(--shadow-light)),
|
|
773
|
+
1px 1px 4px color-mix(in oklch, var(--progress-fill) 16%, var(--shadow-dark)),
|
|
774
|
+
-1px -1px 4px color-mix(in oklch, var(--progress-fill) 10%, var(--shadow-light)),
|
|
775
|
+
0 0 10px var(--progress-fill-glow);
|
|
776
|
+
transition: width var(--dur-slow) var(--ease), box-shadow var(--dur) var(--ease);
|
|
777
|
+
overflow: hidden;
|
|
756
778
|
}
|
|
757
|
-
.
|
|
758
|
-
.ring.warning { background: conic-gradient(var(--warning) calc(var(--val) * 1%), var(--bg-sunken) 0); }
|
|
759
|
-
.ring.danger { background: conic-gradient(var(--danger) calc(var(--val) * 1%), var(--bg-sunken) 0); }
|
|
760
|
-
.ring::before {
|
|
779
|
+
.progress-bar::before {
|
|
761
780
|
content: "";
|
|
762
781
|
position: absolute;
|
|
763
|
-
inset:
|
|
764
|
-
border-radius:
|
|
765
|
-
background:
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
color: var(--accent-ink);
|
|
782
|
+
inset: 0;
|
|
783
|
+
border-radius: inherit;
|
|
784
|
+
background: linear-gradient(
|
|
785
|
+
180deg,
|
|
786
|
+
color-mix(in oklch, var(--shadow-light) 72%, transparent) 0%,
|
|
787
|
+
color-mix(in oklch, var(--shadow-light) 28%, transparent) 38%,
|
|
788
|
+
transparent 70%
|
|
789
|
+
);
|
|
790
|
+
pointer-events: none;
|
|
773
791
|
}
|
|
774
792
|
/* ============ Tag & Badge ============ */
|
|
775
793
|
.tag {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# AppShell 应用外壳
|
|
2
|
+
|
|
3
|
+
> 组合 TitleBar、Sidebar 与主内容区的 Electron 桌面布局容器。
|
|
4
|
+
|
|
5
|
+
## 导入
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { AppShell, TitleBar, Sidebar, StatusBar } from "@fangxinyan/lumina";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 示例
|
|
12
|
+
|
|
13
|
+
### 完整工作台外壳
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<AppShell
|
|
17
|
+
titleBar={<TitleBar title="Lumina Mail" platform="mac" />}
|
|
18
|
+
sidebar={<Sidebar items={items} activeKey={active} onSelect={setActive} />}
|
|
19
|
+
>
|
|
20
|
+
<main>...</main>
|
|
21
|
+
</AppShell>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## API
|
|
25
|
+
|
|
26
|
+
**AppShell**
|
|
27
|
+
|
|
28
|
+
| Prop | 类型 | 默认 | 说明 |
|
|
29
|
+
| --- | --- | --- | --- |
|
|
30
|
+
| titleBar | `ReactNode` | — | 顶部标题栏区域 |
|
|
31
|
+
| sidebar | `ReactNode` | — | 左侧导航区域 |
|
|
32
|
+
| children | `ReactNode` | — | 主内容区 |
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
[← 回到索引](../llms.md)
|
package/docs/llms/progress.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Progress 进度
|
|
2
2
|
|
|
3
|
-
> 条形进度 Progress
|
|
3
|
+
> 条形进度 Progress。
|
|
4
4
|
|
|
5
5
|
## 导入
|
|
6
6
|
|
|
7
7
|
```tsx
|
|
8
|
-
import { Progress
|
|
8
|
+
import { Progress } from "@fangxinyan/lumina";
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## 示例
|
|
@@ -16,19 +16,19 @@ import { Progress, Ring } from "@fangxinyan/lumina";
|
|
|
16
16
|
<Progress value={v} label="下载中" showValue />
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
###
|
|
19
|
+
### 自定义颜色
|
|
20
20
|
|
|
21
21
|
```tsx
|
|
22
|
-
<Progress
|
|
23
|
-
<Progress value={
|
|
24
|
-
<Progress size="lg" value={60} />
|
|
22
|
+
<Progress value={66} color="oklch(72% 0.18 285)" label="品牌同步" showValue />
|
|
23
|
+
<Progress value={38} color="#22c1c3" label="音频缓冲" showValue />
|
|
25
24
|
```
|
|
26
25
|
|
|
27
|
-
###
|
|
26
|
+
### 尺寸
|
|
28
27
|
|
|
29
28
|
```tsx
|
|
30
|
-
<
|
|
31
|
-
<
|
|
29
|
+
<Progress size="sm" value={60} />
|
|
30
|
+
<Progress value={60} />
|
|
31
|
+
<Progress size="lg" value={60} />
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## API
|
|
@@ -40,19 +40,11 @@ import { Progress, Ring } from "@fangxinyan/lumina";
|
|
|
40
40
|
| value \* | `number` | — | 0–max 之间 |
|
|
41
41
|
| max | `number` | `100` | 最大值 |
|
|
42
42
|
| tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
|
|
43
|
+
| color | `string` | — | 自定义填充色,覆盖 tone |
|
|
43
44
|
| size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
|
|
44
45
|
| label | `ReactNode` | — | 顶部文案 |
|
|
45
46
|
| showValue | `boolean` | `false` | 显示百分比 |
|
|
46
47
|
|
|
47
48
|
|
|
48
|
-
**Ring**
|
|
49
|
-
|
|
50
|
-
| Prop | 类型 | 默认 | 说明 |
|
|
51
|
-
| --- | --- | --- | --- |
|
|
52
|
-
| value \* | `number` | — | 0–100 |
|
|
53
|
-
| size | `number` | `72` | 直径 (px) |
|
|
54
|
-
| tone | `"accent" | "success" | ...` | `"accent"` | 色调 |
|
|
55
|
-
|
|
56
|
-
|
|
57
49
|
---
|
|
58
50
|
[← 回到索引](../llms.md)
|
package/docs/llms.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> 拟态风格的 React 18 组件库,目标是 Electron 桌面应用。**写给 AI 编程助手**的按需文档 —— 每个组件单独一个 `.md`,避免一次性读取全部。示例源自 playground 的 demo,可直接复制运行。
|
|
4
4
|
|
|
5
5
|
- **包名**: `@fangxinyan/lumina`
|
|
6
|
-
- **版本**: `0.
|
|
6
|
+
- **版本**: `0.6.0`
|
|
7
7
|
- **React 最低版本**: 18
|
|
8
8
|
- **环境**: 带打包器的 React 工程(Vite / Next.js / Webpack / Remix / Electron + Vite 等)
|
|
9
9
|
- **零运行时依赖**: 只依赖 `react` / `react-dom` (peer deps)
|
|
@@ -23,13 +23,14 @@
|
|
|
23
23
|
`npm install @fangxinyan/lumina`
|
|
24
24
|
2. **引入样式**(任一即可):
|
|
25
25
|
```tsx
|
|
26
|
-
import "@fangxinyan/lumina/styles"; //
|
|
26
|
+
import "@fangxinyan/lumina/styles"; // 设计令牌 + 全局 reset + 全部组件样式
|
|
27
27
|
```
|
|
28
28
|
或按组件单独引入(适合 tree-shake 到极限):
|
|
29
29
|
```tsx
|
|
30
|
-
import "@fangxinyan/lumina/tokens"; //
|
|
31
|
-
import { Button } from "@fangxinyan/lumina"; // 会自动带上 Button.css
|
|
30
|
+
import "@fangxinyan/lumina/tokens"; // 仅设计令牌,不含全局 reset
|
|
31
|
+
import { Button } from "@fangxinyan/lumina"; // 会自动带上 Button.css / shared.css
|
|
32
32
|
```
|
|
33
|
+
如果你还需要 reset / scrollbar / focus-visible 基线样式,请改用 `@fangxinyan/lumina/styles`。
|
|
33
34
|
3. **TypeScript**: 所有 `XxxProps` 接口都是 `export`,可直接 `import { Button, type ButtonProps } from "@fangxinyan/lumina";`
|
|
34
35
|
4. **主题**: 用 `<ThemeProvider>` 包根;运行时可通过 `useTheme()` 改。六种强调色 (`rose / sky / coral / mint / violet / amber`) × 两种模式 (`light / dark` + `system`) × 三档密度 (`compact / comfortable / spacious`)。详见 [`llms/theme.md`](./llms/theme.md)。
|
|
35
36
|
5. **图标**: 所有接受 `icon / leadingIcon / trailingIcon` 的 prop 用字符串 `IconName`。完整列表见 [`llms/icon.md`](./llms/icon.md)。
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
- [Avatar 头像](./llms/avatar.md) — 用图像、首字母代表用户或事物。
|
|
72
73
|
- [Image 图片](./llms/image.md) — 凹陷外框包裹的图片容器,带预览、错误占位。
|
|
73
74
|
- [Divider 分隔符](./llms/divider.md) — 对内容进行分割。
|
|
74
|
-
- [Progress 进度](./llms/progress.md) — 条形进度 Progress
|
|
75
|
+
- [Progress 进度](./llms/progress.md) — 条形进度 Progress。
|
|
75
76
|
- [Timeline 时间线](./llms/timeline.md) — 垂直时间线,支持等待状态、自定义圆点、交替布局
|
|
76
77
|
- [List 列表](./llms/list.md) — 承载一组结构化的同质化数据。
|
|
77
78
|
- [Table 表格](./llms/table.md) — 结构化数据展示。
|
|
@@ -99,6 +100,7 @@
|
|
|
99
100
|
- [WindowControls 窗口控件](./llms/windowcontrols.md) — 独立的窗口控件按钮组。
|
|
100
101
|
- [Sidebar 侧边栏](./llms/sidebar.md) — 应用主导航,沿屏幕左侧垂直排列。
|
|
101
102
|
- [StatusBar 状态栏](./llms/statusbar.md) — 窗口底部状态栏,展示分支、编码、行列等应用元信息。
|
|
103
|
+
- [AppShell 应用外壳](./llms/appshell.md) — 组合 TitleBar、Sidebar 与主内容区的 Electron 桌面布局容器。
|
|
102
104
|
- [Splitter 可拖拽分栏](./llms/splitter.md) — 两栏之间可拖拽的分隔条,支持横向、纵向与嵌套。
|
|
103
105
|
- [ContextMenu 右键菜单](./llms/contextmenu.md) — 桌面应用风格的右键上下文菜单。
|
|
104
106
|
- [CommandPalette ⌘K 命令面板](./llms/commandpalette.md) — 全局命令搜索与执行入口。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fangxinyan/lumina",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Lumina — Neumorphic component library for Electron & React apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -17,6 +17,81 @@
|
|
|
17
17
|
"./llms.md": "./docs/llms.md",
|
|
18
18
|
"./llms/*": "./docs/llms/*",
|
|
19
19
|
"./package.json": "./package.json",
|
|
20
|
+
"./IconButton": {
|
|
21
|
+
"types": "./dist/Button.d.ts",
|
|
22
|
+
"import": "./dist/Button.js",
|
|
23
|
+
"require": "./dist/Button.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./Textarea": {
|
|
26
|
+
"types": "./dist/Input.d.ts",
|
|
27
|
+
"import": "./dist/Input.js",
|
|
28
|
+
"require": "./dist/Input.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./RadioGroup": {
|
|
31
|
+
"types": "./dist/Checkbox.d.ts",
|
|
32
|
+
"import": "./dist/Checkbox.js",
|
|
33
|
+
"require": "./dist/Checkbox.cjs"
|
|
34
|
+
},
|
|
35
|
+
"./Segmented": {
|
|
36
|
+
"types": "./dist/Tabs.d.ts",
|
|
37
|
+
"import": "./dist/Tabs.js",
|
|
38
|
+
"require": "./dist/Tabs.cjs"
|
|
39
|
+
},
|
|
40
|
+
"./Badge": {
|
|
41
|
+
"types": "./dist/Tag.d.ts",
|
|
42
|
+
"import": "./dist/Tag.js",
|
|
43
|
+
"require": "./dist/Tag.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./Panel": {
|
|
46
|
+
"types": "./dist/Card.d.ts",
|
|
47
|
+
"import": "./dist/Card.js",
|
|
48
|
+
"require": "./dist/Card.cjs"
|
|
49
|
+
},
|
|
50
|
+
"./Spinner": {
|
|
51
|
+
"types": "./dist/Empty.d.ts",
|
|
52
|
+
"import": "./dist/Empty.js",
|
|
53
|
+
"require": "./dist/Empty.cjs"
|
|
54
|
+
},
|
|
55
|
+
"./Skeleton": {
|
|
56
|
+
"types": "./dist/Empty.d.ts",
|
|
57
|
+
"import": "./dist/Empty.js",
|
|
58
|
+
"require": "./dist/Empty.cjs"
|
|
59
|
+
},
|
|
60
|
+
"./TablePro": {
|
|
61
|
+
"types": "./dist/Table.d.ts",
|
|
62
|
+
"import": "./dist/Table.js",
|
|
63
|
+
"require": "./dist/Table.cjs"
|
|
64
|
+
},
|
|
65
|
+
"./TitleBar": {
|
|
66
|
+
"types": "./dist/AppShell.d.ts",
|
|
67
|
+
"import": "./dist/AppShell.js",
|
|
68
|
+
"require": "./dist/AppShell.cjs"
|
|
69
|
+
},
|
|
70
|
+
"./WindowControls": {
|
|
71
|
+
"types": "./dist/AppShell.d.ts",
|
|
72
|
+
"import": "./dist/AppShell.js",
|
|
73
|
+
"require": "./dist/AppShell.cjs"
|
|
74
|
+
},
|
|
75
|
+
"./Sidebar": {
|
|
76
|
+
"types": "./dist/AppShell.d.ts",
|
|
77
|
+
"import": "./dist/AppShell.js",
|
|
78
|
+
"require": "./dist/AppShell.cjs"
|
|
79
|
+
},
|
|
80
|
+
"./StatusBarItem": {
|
|
81
|
+
"types": "./dist/StatusBar.d.ts",
|
|
82
|
+
"import": "./dist/StatusBar.js",
|
|
83
|
+
"require": "./dist/StatusBar.cjs"
|
|
84
|
+
},
|
|
85
|
+
"./ToastContainer": {
|
|
86
|
+
"types": "./dist/Toast.d.ts",
|
|
87
|
+
"import": "./dist/Toast.js",
|
|
88
|
+
"require": "./dist/Toast.cjs"
|
|
89
|
+
},
|
|
90
|
+
"./toast": {
|
|
91
|
+
"types": "./dist/Toast.d.ts",
|
|
92
|
+
"import": "./dist/Toast.js",
|
|
93
|
+
"require": "./dist/Toast.cjs"
|
|
94
|
+
},
|
|
20
95
|
"./*": {
|
|
21
96
|
"types": "./dist/*.d.ts",
|
|
22
97
|
"import": "./dist/*.js",
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/* ============ Progress ============ */
|
|
2
|
-
.progress {
|
|
3
|
-
width: 100%;
|
|
4
|
-
display: flex;
|
|
5
|
-
flex-direction: column;
|
|
6
|
-
gap: 6px;
|
|
7
|
-
}
|
|
8
|
-
.progress-label {
|
|
9
|
-
display: flex;
|
|
10
|
-
justify-content: space-between;
|
|
11
|
-
font-size: 12px;
|
|
12
|
-
color: var(--fg-muted);
|
|
13
|
-
}
|
|
14
|
-
.progress-label .v { font-family: var(--font-mono); }
|
|
15
|
-
.progress-track {
|
|
16
|
-
width: 100%;
|
|
17
|
-
height: 10px;
|
|
18
|
-
border-radius: 999px;
|
|
19
|
-
background: var(--bg);
|
|
20
|
-
box-shadow: var(--neu-in-sm);
|
|
21
|
-
overflow: hidden;
|
|
22
|
-
position: relative;
|
|
23
|
-
}
|
|
24
|
-
.progress.sm .progress-track { height: 6px; }
|
|
25
|
-
.progress.lg .progress-track { height: 14px; }
|
|
26
|
-
.progress-bar {
|
|
27
|
-
height: 100%;
|
|
28
|
-
background: linear-gradient(90deg, color-mix(in oklch, var(--accent) 70%, white), var(--accent));
|
|
29
|
-
border-radius: 999px;
|
|
30
|
-
box-shadow: 0 0 12px var(--accent-glow);
|
|
31
|
-
transition: width var(--dur-slow) var(--ease);
|
|
32
|
-
}
|
|
33
|
-
.progress.success .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--success) 70%, white), var(--success)); box-shadow: 0 0 10px color-mix(in oklch, var(--success) 35%, transparent); }
|
|
34
|
-
.progress.warning .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--warning) 70%, white), var(--warning)); box-shadow: 0 0 10px color-mix(in oklch, var(--warning) 35%, transparent); }
|
|
35
|
-
.progress.danger .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--danger) 70%, white), var(--danger)); box-shadow: 0 0 10px color-mix(in oklch, var(--danger) 35%, transparent); }
|
|
36
|
-
|
|
37
|
-
.ring {
|
|
38
|
-
--size: 72px;
|
|
39
|
-
--val: 50;
|
|
40
|
-
width: var(--size); height: var(--size);
|
|
41
|
-
border-radius: 999px;
|
|
42
|
-
background: conic-gradient(var(--accent) calc(var(--val) * 1%), var(--bg-sunken) 0);
|
|
43
|
-
display: grid; place-items: center;
|
|
44
|
-
position: relative;
|
|
45
|
-
box-shadow: var(--neu-out-sm);
|
|
46
|
-
}
|
|
47
|
-
.ring.success { background: conic-gradient(var(--success) calc(var(--val) * 1%), var(--bg-sunken) 0); }
|
|
48
|
-
.ring.warning { background: conic-gradient(var(--warning) calc(var(--val) * 1%), var(--bg-sunken) 0); }
|
|
49
|
-
.ring.danger { background: conic-gradient(var(--danger) calc(var(--val) * 1%), var(--bg-sunken) 0); }
|
|
50
|
-
.ring::before {
|
|
51
|
-
content: "";
|
|
52
|
-
position: absolute;
|
|
53
|
-
inset: 8px;
|
|
54
|
-
border-radius: 999px;
|
|
55
|
-
background: var(--bg);
|
|
56
|
-
box-shadow: var(--neu-in-sm);
|
|
57
|
-
}
|
|
58
|
-
.ring-label {
|
|
59
|
-
position: relative;
|
|
60
|
-
font-size: 13px;
|
|
61
|
-
font-weight: 600;
|
|
62
|
-
color: var(--accent-ink);
|
|
63
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/InputNumber/InputNumber.tsx"],"names":["React","jsxs","jsx","Icon","Fragment","Input"],"mappings":"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","file":"chunk-2D5VCIJZ.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./InputNumber.css\";\nimport * as React from \"react\";\nimport { Input } from \"../Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface InputNumberProps {\n /** Controlled value. `null` = empty field. */\n value?: number | null;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Fires with the parsed number (or `null` when the input is emptied). */\n onChange?: (value: number | null) => void;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /** Fires when the Enter key is pressed (matches antd's `onPressEnter`). */\n onPressEnter?: React.KeyboardEventHandler<HTMLInputElement>;\n min?: number;\n max?: number;\n /** Step for up/down buttons + arrow keys. Default 1. */\n step?: number;\n /** Number of decimal places to round to. Omit for no rounding. */\n precision?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n /** Show the up/down stepper buttons. Default true. */\n controls?: boolean;\n invalid?: boolean;\n className?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n autoFocus?: boolean;\n id?: string;\n name?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * `InputNumber` — numeric input with up/down stepper buttons. Arrow-key\n * and mouse-wheel increments; min / max clamping; optional rounding.\n *\n * @example\n * ```tsx\n * <InputNumber min={0} max={100} step={1} defaultValue={10} onChange={...} />\n * ```\n */\nexport const InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onBlur,\n onFocus,\n onPressEnter,\n min = -Infinity,\n max = Infinity,\n step = 1,\n precision,\n size = \"md\",\n disabled,\n readOnly,\n placeholder,\n controls = true,\n invalid,\n className = \"\",\n prefix,\n suffix,\n autoFocus,\n id,\n name,\n },\n ref\n ) => {\n const [inner, setInner] = React.useState<number | null>(defaultValue ?? null);\n const isControlled = value !== undefined;\n const current = isControlled ? (value as number | null) : inner;\n\n const [text, setText] = React.useState<string>(current == null ? \"\" : String(current));\n\n React.useEffect(() => {\n if (isControlled) setText(value == null ? \"\" : String(value));\n }, [value, isControlled]);\n\n const clamp = React.useCallback(\n (n: number) => Math.max(min, Math.min(max, n)),\n [min, max]\n );\n const round = React.useCallback(\n (n: number) => (precision != null ? Number(n.toFixed(precision)) : n),\n [precision]\n );\n\n const commit = (next: number | null) => {\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const handleInput = (v: string) => {\n setText(v);\n if (v === \"\" || v === \"-\") {\n commit(null);\n return;\n }\n const parsed = Number(v);\n if (!Number.isNaN(parsed)) commit(clamp(round(parsed)));\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n // Normalize displayed text to the committed numeric value.\n if (current == null) setText(\"\");\n else setText(String(current));\n onBlur?.(e);\n };\n\n const increment = (delta: number) => {\n if (disabled || readOnly) return;\n const base = current ?? 0;\n const next = clamp(round(base + delta));\n if (!isControlled) setInner(next);\n setText(String(next));\n onChange?.(next);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === \"ArrowUp\") { e.preventDefault(); increment(step); }\n if (e.key === \"ArrowDown\") { e.preventDefault(); increment(-step); }\n if (e.key === \"Enter\") onPressEnter?.(e);\n };\n\n const upDisabled = disabled || readOnly || (current != null && current >= max);\n const downDisabled = disabled || readOnly || (current != null && current <= min);\n\n const stepperSuffix = controls ? (\n <span className=\"ipn-steppers\" aria-hidden>\n <button\n type=\"button\"\n className=\"ipn-step up\"\n tabIndex={-1}\n disabled={upDisabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => increment(step)}\n >\n <Icon name=\"chevUp\" size={10} stroke={2.5} />\n </button>\n <button\n type=\"button\"\n className=\"ipn-step down\"\n tabIndex={-1}\n disabled={downDisabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => increment(-step)}\n >\n <Icon name=\"chevDown\" size={10} stroke={2.5} />\n </button>\n </span>\n ) : null;\n\n const finalSuffix =\n stepperSuffix && suffix\n ? (<>{suffix}{stepperSuffix}</>)\n : stepperSuffix ?? suffix;\n\n return (\n <Input\n ref={ref}\n id={id}\n name={name}\n size={size}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n invalid={invalid}\n autoFocus={autoFocus}\n prefix={prefix}\n suffix={finalSuffix}\n className={`input-number ${className}`}\n inputMode=\"decimal\"\n onChange={handleInput}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onFocus={onFocus}\n />\n );\n }\n);\nInputNumber.displayName = \"InputNumber\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ColorPicker/ColorPicker.tsx"],"names":["React","jsxs","jsx","useFloating","createPortal"],"mappings":"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","file":"chunk-2OBQOEFD.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./ColorPicker.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useFloating } from \"../../utils/useFloating\";\n\n/* ============================================================================\n * Color conversion helpers\n * ========================================================================== */\n\ntype RGB = [number, number, number];\ntype HSV = [number, number, number];\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(Math.max(n, lo), hi);\n\nfunction normalizeHex(input: string): string | null {\n const s = input.trim().replace(/^#/, \"\");\n if (!/^([\\da-f]{3}|[\\da-f]{6})$/i.test(s)) return null;\n const full = s.length === 3 ? s.split(\"\").map((c) => c + c).join(\"\") : s;\n return \"#\" + full.toLowerCase();\n}\n\nfunction hexToRgb(hex: string): RGB | null {\n const n = normalizeHex(hex);\n if (!n) return null;\n const int = parseInt(n.slice(1), 16);\n return [(int >> 16) & 255, (int >> 8) & 255, int & 255];\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const to = (x: number) => {\n const h = clamp(Math.round(x), 0, 255).toString(16);\n return h.length === 1 ? \"0\" + h : h;\n };\n return \"#\" + to(r) + to(g) + to(b);\n}\n\nfunction rgbToHsv(r: number, g: number, b: number): HSV {\n const R = r / 255;\n const G = g / 255;\n const B = b / 255;\n const max = Math.max(R, G, B);\n const min = Math.min(R, G, B);\n const d = max - min;\n let h = 0;\n if (d !== 0) {\n if (max === R) h = ((G - B) / d) % 6;\n else if (max === G) h = (B - R) / d + 2;\n else h = (R - G) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : (d / max) * 100;\n const v = max * 100;\n return [h, s, v];\n}\n\nfunction hsvToRgb(h: number, s: number, v: number): RGB {\n const S = s / 100;\n const V = v / 100;\n const c = V * S;\n const hh = (h % 360) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n const m = V - c;\n let r = 0;\n let g = 0;\n let b = 0;\n if (hh < 1) [r, g, b] = [c, x, 0];\n else if (hh < 2) [r, g, b] = [x, c, 0];\n else if (hh < 3) [r, g, b] = [0, c, x];\n else if (hh < 4) [r, g, b] = [0, x, c];\n else if (hh < 5) [r, g, b] = [x, 0, c];\n else [r, g, b] = [c, 0, x];\n return [(r + m) * 255, (g + m) * 255, (b + m) * 255];\n}\n\nconst hexToHsv = (hex: string): HSV | null => {\n const rgb = hexToRgb(hex);\n return rgb ? rgbToHsv(...rgb) : null;\n};\n\nconst hsvToHex = (h: number, s: number, v: number): string => rgbToHex(...hsvToRgb(h, s, v));\n\n/* ============================================================================\n * Public API\n * ========================================================================== */\n\nexport interface ColorPickerProps {\n /** Controlled hex color (e.g. \"#ff6b6b\"). */\n value?: string;\n /** Initial hex when uncontrolled. */\n defaultValue?: string;\n /** Fires on every pixel of drag / input edit. */\n onChange?: (hex: string) => void;\n /** Fires once when a drag / input / preset commit finishes. */\n onChangeComplete?: (hex: string) => void;\n /** Disable the trigger. */\n disabled?: boolean;\n /** Size of the swatch trigger. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Where the panel appears relative to the trigger. */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Hex preset chips below the panel. */\n presets?: string[];\n /** Show the current hex next to the swatch. */\n showText?: boolean;\n /** Custom trigger; defaults to a swatch chip. */\n children?: React.ReactNode;\n /** Controlled open state. */\n open?: boolean;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when open state changes. */\n onOpenChange?: (open: boolean) => void;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/* ============================================================================\n * Internals\n * ========================================================================== */\n\nconst DEFAULT_PRESETS = [\n \"#ff6b6b\",\n \"#ffa94d\",\n \"#ffd43b\",\n \"#51cf66\",\n \"#22b8cf\",\n \"#339af0\",\n \"#845ef7\",\n \"#f06595\",\n \"#868e96\",\n \"#212529\",\n];\n\ninterface BoardProps {\n hue: number;\n s: number;\n v: number;\n onChange: (s: number, v: number, done: boolean) => void;\n}\n\nconst SaturationBoard: React.FC<BoardProps> = ({ hue, s, v, onChange }) => {\n const ref = React.useRef<HTMLDivElement>(null);\n\n const compute = (clientX: number, clientY: number) => {\n const el = ref.current;\n if (!el) return { s, v };\n const rect = el.getBoundingClientRect();\n const ns = clamp(((clientX - rect.left) / rect.width) * 100, 0, 100);\n const nv = clamp(100 - ((clientY - rect.top) / rect.height) * 100, 0, 100);\n return { s: ns, v: nv };\n };\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n const el = ref.current;\n if (!el) return;\n el.setPointerCapture(e.pointerId);\n const first = compute(e.clientX, e.clientY);\n onChange(first.s, first.v, false);\n\n const move = (ev: PointerEvent) => {\n const c = compute(ev.clientX, ev.clientY);\n onChange(c.s, c.v, false);\n };\n const up = (ev: PointerEvent) => {\n const c = compute(ev.clientX, ev.clientY);\n onChange(c.s, c.v, true);\n el.releasePointerCapture(e.pointerId);\n el.removeEventListener(\"pointermove\", move);\n el.removeEventListener(\"pointerup\", up);\n el.removeEventListener(\"pointercancel\", up);\n };\n el.addEventListener(\"pointermove\", move);\n el.addEventListener(\"pointerup\", up);\n el.addEventListener(\"pointercancel\", up);\n };\n\n return (\n <div\n ref={ref}\n className=\"cp-board\"\n style={{ background: `hsl(${hue}, 100%, 50%)` }}\n onPointerDown={handlePointerDown}\n >\n <div className=\"cp-board-white\" />\n <div className=\"cp-board-black\" />\n <div\n className=\"cp-board-thumb\"\n style={{ left: `${s}%`, top: `${100 - v}%` }}\n />\n </div>\n );\n};\n\ninterface HueProps {\n hue: number;\n onChange: (h: number, done: boolean) => void;\n}\n\nconst HueSlider: React.FC<HueProps> = ({ hue, onChange }) => {\n const ref = React.useRef<HTMLDivElement>(null);\n\n const compute = (clientX: number) => {\n const el = ref.current;\n if (!el) return hue;\n const rect = el.getBoundingClientRect();\n return clamp(((clientX - rect.left) / rect.width) * 360, 0, 360);\n };\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n const el = ref.current;\n if (!el) return;\n el.setPointerCapture(e.pointerId);\n onChange(compute(e.clientX), false);\n const move = (ev: PointerEvent) => onChange(compute(ev.clientX), false);\n const up = (ev: PointerEvent) => {\n onChange(compute(ev.clientX), true);\n el.releasePointerCapture(e.pointerId);\n el.removeEventListener(\"pointermove\", move);\n el.removeEventListener(\"pointerup\", up);\n el.removeEventListener(\"pointercancel\", up);\n };\n el.addEventListener(\"pointermove\", move);\n el.addEventListener(\"pointerup\", up);\n el.addEventListener(\"pointercancel\", up);\n };\n\n return (\n <div ref={ref} className=\"cp-hue\" onPointerDown={handlePointerDown}>\n <div\n className=\"cp-hue-thumb\"\n style={{ left: `${(hue / 360) * 100}%` }}\n />\n </div>\n );\n};\n\n/* ============================================================================\n * Main component\n * ========================================================================== */\n\n/**\n * `ColorPicker` — neumorphic color picker with HSV panel, hue slider,\n * hex input and optional preset palette.\n *\n * @example\n * <ColorPicker defaultValue=\"#845ef7\" onChange={setColor} />\n */\nexport const ColorPicker = React.forwardRef<HTMLButtonElement, ColorPickerProps>(\n (props, ref) => {\n const {\n value,\n defaultValue = \"#845ef7\",\n onChange,\n onChangeComplete,\n disabled,\n size = \"md\",\n placement = \"bottom\",\n presets = DEFAULT_PRESETS,\n showText = false,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n className = \"\",\n style,\n } = props;\n\n const isControlled = value != null;\n const [internal, setInternal] = React.useState(\n normalizeHex(defaultValue) ?? \"#845ef7\"\n );\n const current = normalizeHex((isControlled ? value : internal) ?? \"\") ?? \"#845ef7\";\n\n const isOpenControlled = openProp != null;\n const [openState, setOpenState] = React.useState(defaultOpen);\n const open = isOpenControlled ? !!openProp : openState;\n const setOpen = (next: boolean) => {\n if (!isOpenControlled) setOpenState(next);\n onOpenChange?.(next);\n };\n\n const [inputText, setInputText] = React.useState(current);\n React.useEffect(() => setInputText(current), [current]);\n\n const { triggerRef, floatingStyle } = useFloating<HTMLButtonElement>({\n open,\n placement,\n panelWidth: 256,\n panelHeight: 300,\n });\n const panelRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement);\n\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n const t = e.target as Node;\n if (triggerRef.current?.contains(t)) return;\n if (panelRef.current?.contains(t)) return;\n setOpen(false);\n };\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", onDown);\n document.addEventListener(\"keydown\", onKey);\n return () => {\n document.removeEventListener(\"mousedown\", onDown);\n document.removeEventListener(\"keydown\", onKey);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const commit = (hex: string, done: boolean) => {\n const n = normalizeHex(hex);\n if (!n) return;\n if (!isControlled) setInternal(n);\n onChange?.(n);\n if (done) onChangeComplete?.(n);\n };\n\n const hsv = hexToHsv(current) ?? [0, 100, 100];\n const [h, s, v] = hsv;\n\n const handleBoard = (ns: number, nv: number, done: boolean) => {\n commit(hsvToHex(h, ns, nv), done);\n };\n const handleHue = (nh: number, done: boolean) => {\n commit(hsvToHex(nh, s, v), done);\n };\n\n const handleInputBlur = () => {\n const n = normalizeHex(inputText);\n if (n) commit(n, true);\n else setInputText(current);\n };\n\n const handleInputKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n (e.target as HTMLInputElement).blur();\n }\n };\n\n return (\n <div\n className={`cp ${placement} ${open ? \"open\" : \"\"} ${className}`}\n style={style}\n >\n {children ? (\n <button\n type=\"button\"\n ref={triggerRef}\n className=\"cp-custom-trigger\"\n disabled={disabled}\n onClick={() => !disabled && setOpen(!open)}\n >\n {children}\n </button>\n ) : (\n <button\n type=\"button\"\n ref={triggerRef}\n className={`cp-trigger ${size}`}\n disabled={disabled}\n onClick={() => !disabled && setOpen(!open)}\n aria-label={`选择颜色 (当前 ${current})`}\n >\n <span className=\"cp-swatch\" style={{ background: current }} />\n {showText && <span className=\"cp-text\">{current}</span>}\n </button>\n )}\n\n {open && !disabled && typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={panelRef}\n className=\"cp-panel\"\n role=\"dialog\"\n style={floatingStyle}\n >\n <SaturationBoard hue={h} s={s} v={v} onChange={handleBoard} />\n <HueSlider hue={h} onChange={handleHue} />\n <div className=\"cp-row\">\n <span className=\"cp-swatch sm\" style={{ background: current }} />\n <input\n className=\"cp-input\"\n value={inputText}\n onChange={(e) => setInputText(e.target.value)}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKey}\n spellCheck={false}\n />\n </div>\n {presets.length > 0 && (\n <div className=\"cp-presets\">\n {presets.map((p) => (\n <button\n key={p}\n type=\"button\"\n className={`cp-preset ${current === normalizeHex(p) ? \"active\" : \"\"}`}\n style={{ background: p }}\n onClick={() => commit(p, true)}\n aria-label={p}\n />\n ))}\n </div>\n )}\n </div>,\n document.body\n )}\n </div>\n );\n }\n);\nColorPicker.displayName = \"ColorPicker\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AppShell/AppShell.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-33TIL25B.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./AppShell.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface WindowControlsProps {\n /** macOS traffic lights or Windows-style buttons. */\n platform?: \"mac\" | \"windows\";\n onMinimize?: () => void;\n onMaximize?: () => void;\n onClose?: () => void;\n className?: string;\n}\n\n/**\n * `WindowControls` — standalone window control buttons.\n * Mac: traffic lights (close/min/max). Windows: rectangular controls.\n */\nexport const WindowControls: React.FC<WindowControlsProps> = ({\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n className = \"\",\n}) => {\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n if (platform === \"windows\") {\n return (\n <div className={`win-controls windows ${className}`} style={noDragStyle}>\n <button type=\"button\" className=\"win-btn minimize\" onClick={onMinimize} aria-label=\"Minimize\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <path d=\"M1 5h8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n <button type=\"button\" className=\"win-btn maximize\" onClick={onMaximize} aria-label=\"Maximize\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <rect x=\"1\" y=\"1\" width=\"8\" height=\"8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n <button type=\"button\" className=\"win-btn close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <path d=\"M1 1l8 8M9 1l-8 8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n </div>\n );\n }\n return (\n <div className={`win-controls mac ${className}`} style={noDragStyle}>\n <button type=\"button\" className=\"win-btn close\" onClick={onClose} aria-label=\"Close\" />\n <button type=\"button\" className=\"win-btn minimize\" onClick={onMinimize} aria-label=\"Minimize\" />\n <button type=\"button\" className=\"win-btn maximize\" onClick={onMaximize} aria-label=\"Maximize\" />\n </div>\n );\n};\n\nexport interface TitleBarProps {\n title?: React.ReactNode;\n /** Platform appearance — affects button placement. Default \"mac\". */\n platform?: \"mac\" | \"windows\";\n onMinimize?: () => void;\n onMaximize?: () => void;\n onClose?: () => void;\n /** Extra content in the center. */\n center?: React.ReactNode;\n /** Extra content on the trailing side. */\n actions?: React.ReactNode;\n /** Make the whole bar draggable (Electron `-webkit-app-region: drag`). */\n draggable?: boolean;\n className?: string;\n}\n\n/**\n * `TitleBar` — Electron-style window chrome. Attach at the top of your app.\n * Buttons are non-draggable regions so clicks register correctly.\n */\nexport const TitleBar: React.FC<TitleBarProps> = ({\n title,\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n center,\n actions,\n draggable = true,\n className = \"\",\n}) => {\n const dragStyle = draggable ? ({ WebkitAppRegion: \"drag\" } as React.CSSProperties) : undefined;\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n\n return (\n <div className={`titlebar ${platform} ${className}`} style={dragStyle}>\n {platform === \"mac\" && (\n <WindowControls platform=\"mac\" onMinimize={onMinimize} onMaximize={onMaximize} onClose={onClose} />\n )}\n <div className=\"titlebar-title\">{title}</div>\n {center && (\n <div className=\"titlebar-center\" style={noDragStyle}>\n {center}\n </div>\n )}\n {actions && (\n <div className=\"titlebar-actions\" style={noDragStyle}>\n {actions}\n </div>\n )}\n {platform === \"windows\" && (\n <WindowControls platform=\"windows\" onMinimize={onMinimize} onMaximize={onMaximize} onClose={onClose} />\n )}\n </div>\n );\n};\n\nexport interface SidebarItem {\n key: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n badge?: React.ReactNode;\n children?: SidebarItem[];\n}\n\nexport interface SidebarProps {\n items: SidebarItem[];\n activeKey?: string;\n onSelect?: (key: string) => void;\n /** Collapsed: icons only. */\n collapsed?: boolean;\n /** Header slot (e.g. workspace switcher). */\n header?: React.ReactNode;\n /** Footer slot (e.g. user card). */\n footer?: React.ReactNode;\n className?: string;\n}\n\n/** `Sidebar` — navigation rail. Pair with `AppShell`. */\nexport const Sidebar: React.FC<SidebarProps> = ({\n items,\n activeKey,\n onSelect,\n collapsed,\n header,\n footer,\n className = \"\",\n}) => (\n <aside className={`sidebar ${collapsed ? \"collapsed\" : \"\"} ${className}`}>\n {header && <div className=\"sidebar-header\">{header}</div>}\n <nav className=\"sidebar-nav\">\n {items.map((it) => (\n <button\n type=\"button\"\n key={it.key}\n className={`sidebar-item ${activeKey === it.key ? \"active\" : \"\"}`}\n onClick={() => onSelect?.(it.key)}\n >\n {it.icon && <span className=\"sidebar-icon\">{it.icon}</span>}\n {!collapsed && <span className=\"sidebar-label\">{it.label}</span>}\n {!collapsed && it.badge && <span className=\"sidebar-badge\">{it.badge}</span>}\n </button>\n ))}\n </nav>\n {footer && <div className=\"sidebar-footer\">{footer}</div>}\n </aside>\n);\n\nexport interface AppShellProps {\n sidebar?: React.ReactNode;\n titleBar?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * `AppShell` — 3-zone Electron layout: title bar across top, sidebar on left, content fills rest.\n */\nexport const AppShell: React.FC<AppShellProps> = ({ sidebar, titleBar, children, className = \"\" }) => (\n <div className={`app-shell ${className}`}>\n {titleBar}\n <div className=\"app-shell-body\">\n {sidebar}\n <main className=\"app-shell-main\">{children}</main>\n </div>\n </div>\n);\n"]}
|