@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Form/Form.tsx"],"names":["React","jsx","store","Fragment","jsxs"],"mappings":"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","file":"chunk-2K5HZLXW.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Form.css\";\nimport * as React from \"react\";\n\n/* ============================================================================\n * Form — minimal antd-compatible form with validation + field binding.\n *\n * Scope:\n * - useForm() → [FormInstance]\n * - <Form form={} layout initialValues onFinish onFinishFailed onValuesChange>\n * - <Form.Item name label rules noStyle valuePropName trigger initialValue help>\n * - Rules: required / message / pattern / min / max / len / validator / type\n *\n * Not supported (to keep v1 tight):\n * - nested field names (\"user.name\" dotted paths)\n * - Form.List\n * - dependencies / shouldUpdate\n * - labelCol / wrapperCol layout grid\n * ========================================================================== */\n\nexport type FormLayout = \"horizontal\" | \"vertical\" | \"inline\";\n\nexport type Rule = {\n required?: boolean;\n message?: string;\n pattern?: RegExp;\n min?: number;\n max?: number;\n len?: number;\n type?: \"string\" | \"number\" | \"email\" | \"url\" | \"array\";\n whitespace?: boolean;\n validator?: (rule: Rule, value: unknown) => Promise<void> | void;\n};\n\nexport interface ErrorField {\n name: string;\n errors: string[];\n}\n\nexport interface FormInstance<V extends Record<string, unknown> = Record<string, unknown>> {\n getFieldValue: <T = unknown>(name: string) => T;\n getFieldsValue: (names?: string[]) => V;\n setFieldValue: (name: string, value: unknown) => void;\n setFieldsValue: (values: Partial<V>) => void;\n resetFields: (names?: string[]) => void;\n validateFields: (names?: string[]) => Promise<V>;\n isFieldTouched: (name: string) => boolean;\n getFieldError: (name: string) => string[];\n /** Programmatic submit — runs validate then onFinish/onFinishFailed. */\n submit: () => void;\n}\n\ninterface FieldEntry {\n rules: Rule[];\n initial?: unknown;\n}\n\ninterface InternalStore {\n values: Record<string, unknown>;\n errors: Record<string, string[]>;\n touched: Set<string>;\n initial: Record<string, unknown>;\n fields: Map<string, FieldEntry>;\n fieldSubs: Map<string, Set<() => void>>;\n formSubs: Set<() => void>;\n onSubmit?: () => void;\n onValuesChange?: (changed: Record<string, unknown>, all: Record<string, unknown>) => void;\n}\n\nfunction makeStore(): InternalStore {\n return {\n values: {},\n errors: {},\n touched: new Set(),\n initial: {},\n fields: new Map(),\n fieldSubs: new Map(),\n formSubs: new Set(),\n };\n}\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst URL_RE = /^https?:\\/\\/.+/i;\n\nasync function validateSingle(rule: Rule, value: unknown): Promise<string | null> {\n const msg = rule.message;\n const isEmpty = value == null || value === \"\" || (Array.isArray(value) && value.length === 0);\n\n if (rule.required && isEmpty) return msg ?? \"必填项\";\n if (rule.whitespace && typeof value === \"string\" && value.trim() === \"\") return msg ?? \"不能为空\";\n\n // Only run remaining checks when value is present.\n if (isEmpty) return null;\n\n if (rule.type === \"email\" && typeof value === \"string\" && !EMAIL_RE.test(value)) return msg ?? \"邮箱格式不正确\";\n if (rule.type === \"url\" && typeof value === \"string\" && !URL_RE.test(value)) return msg ?? \"链接格式不正确\";\n if (rule.type === \"number\" && typeof value !== \"number\" && isNaN(Number(value))) return msg ?? \"必须是数字\";\n if (rule.type === \"array\" && !Array.isArray(value)) return msg ?? \"必须是数组\";\n\n if (rule.pattern && typeof value === \"string\" && !rule.pattern.test(value)) return msg ?? \"格式不正确\";\n\n const strLen = typeof value === \"string\" ? value.length : Array.isArray(value) ? value.length : undefined;\n if (rule.len != null && strLen != null && strLen !== rule.len) return msg ?? `长度必须是 ${rule.len}`;\n if (rule.min != null && strLen != null && strLen < rule.min) return msg ?? `至少 ${rule.min} 个字符`;\n if (rule.max != null && strLen != null && strLen > rule.max) return msg ?? `最多 ${rule.max} 个字符`;\n if (rule.min != null && typeof value === \"number\" && value < rule.min) return msg ?? `不能小于 ${rule.min}`;\n if (rule.max != null && typeof value === \"number\" && value > rule.max) return msg ?? `不能大于 ${rule.max}`;\n\n if (rule.validator) {\n try {\n await rule.validator(rule, value);\n } catch (err) {\n if (typeof err === \"string\") return err;\n if (err instanceof Error) return err.message;\n return msg ?? \"校验未通过\";\n }\n }\n\n return null;\n}\n\nasync function validateField(store: InternalStore, name: string): Promise<string[]> {\n const entry = store.fields.get(name);\n if (!entry) return [];\n const value = store.values[name];\n const errs: string[] = [];\n for (const rule of entry.rules) {\n const err = await validateSingle(rule, value);\n if (err) errs.push(err);\n }\n store.errors[name] = errs;\n return errs;\n}\n\nfunction notifyField(store: InternalStore, name: string) {\n store.fieldSubs.get(name)?.forEach((fn) => fn());\n}\nfunction notifyAll(store: InternalStore) {\n store.formSubs.forEach((fn) => fn());\n}\n\nfunction buildInstance<V extends Record<string, unknown>>(store: InternalStore): FormInstance<V> {\n return {\n getFieldValue: <T,>(name: string) => store.values[name] as T,\n getFieldsValue: (names) => {\n if (!names) return { ...store.values } as V;\n const out: Record<string, unknown> = {};\n for (const n of names) out[n] = store.values[n];\n return out as V;\n },\n setFieldValue: (name, value) => {\n const prev = store.values[name];\n store.values[name] = value;\n store.touched.add(name);\n if (store.fields.has(name)) {\n void validateField(store, name).then(() => notifyField(store, name));\n }\n notifyField(store, name);\n notifyAll(store);\n if (prev !== value) store.onValuesChange?.({ [name]: value }, { ...store.values });\n },\n setFieldsValue: (values) => {\n const changed: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(values)) {\n if (store.values[k] !== v) changed[k] = v;\n store.values[k] = v;\n store.touched.add(k);\n notifyField(store, k);\n }\n notifyAll(store);\n if (Object.keys(changed).length > 0) store.onValuesChange?.(changed, { ...store.values });\n },\n resetFields: (names) => {\n const keys = names ?? Array.from(store.fields.keys());\n for (const k of keys) {\n store.values[k] = store.initial[k];\n store.errors[k] = [];\n store.touched.delete(k);\n notifyField(store, k);\n }\n notifyAll(store);\n },\n validateFields: async (names) => {\n const keys = names ?? Array.from(store.fields.keys());\n const errorFields: ErrorField[] = [];\n for (const k of keys) {\n const errs = await validateField(store, k);\n notifyField(store, k);\n if (errs.length > 0) errorFields.push({ name: k, errors: errs });\n }\n notifyAll(store);\n if (errorFields.length > 0) {\n const err = new Error(\"Validation failed\") as Error & {\n errorFields: ErrorField[];\n values: Record<string, unknown>;\n };\n err.errorFields = errorFields;\n err.values = { ...store.values };\n throw err;\n }\n const out: Record<string, unknown> = {};\n for (const k of keys) out[k] = store.values[k];\n return out as V;\n },\n isFieldTouched: (name) => store.touched.has(name),\n getFieldError: (name) => store.errors[name] ?? [],\n submit: () => store.onSubmit?.(),\n };\n}\n\nconst STORE_SYMBOL = Symbol.for(\"lumina.form.store\");\n\ntype InstanceWithStore<V extends Record<string, unknown>> = FormInstance<V> & {\n [STORE_SYMBOL]: InternalStore;\n};\n\n/** `Form.useForm()` — create a form instance. Same shape as antd's hook. */\nexport function useForm<V extends Record<string, unknown> = Record<string, unknown>>(): [FormInstance<V>] {\n const ref = React.useRef<InstanceWithStore<V>>();\n if (!ref.current) {\n const store = makeStore();\n const instance = buildInstance<V>(store) as InstanceWithStore<V>;\n (instance as InstanceWithStore<V>)[STORE_SYMBOL] = store;\n ref.current = instance;\n }\n return [ref.current];\n}\n\nfunction getStore<V extends Record<string, unknown>>(instance: FormInstance<V>): InternalStore {\n return (instance as unknown as InstanceWithStore<V>)[STORE_SYMBOL];\n}\n\n/* ---------------------------- Context ---------------------------- */\n\ninterface FormCtxValue {\n store: InternalStore;\n layout: FormLayout;\n requiredMark: boolean;\n disabled: boolean;\n}\n\nconst FormCtx = React.createContext<FormCtxValue | null>(null);\n\n/* ---------------------------- Form Root ---------------------------- */\n\nexport interface FormProps<V extends Record<string, unknown> = Record<string, unknown>>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"onChange\" | \"onSubmit\"> {\n form?: FormInstance<V>;\n layout?: FormLayout;\n initialValues?: Partial<V>;\n onFinish?: (values: V) => void;\n onFinishFailed?: (info: { values: Partial<V>; errorFields: ErrorField[] }) => void;\n onValuesChange?: (changed: Partial<V>, all: V) => void;\n /** Show the `*` mark before required field labels. Default true. */\n requiredMark?: boolean;\n /** Disable all fields inside. */\n disabled?: boolean;\n children?: React.ReactNode;\n className?: string;\n}\n\ntype FormRootComponent = <V extends Record<string, unknown> = Record<string, unknown>>(\n props: FormProps<V> & React.RefAttributes<HTMLFormElement>\n) => React.ReactElement | null;\n\nconst FormRootInner = <V extends Record<string, unknown> = Record<string, unknown>>(\n props: FormProps<V>,\n ref: React.ForwardedRef<HTMLFormElement>\n) => {\n const {\n form: externalForm,\n layout = \"horizontal\",\n initialValues,\n onFinish,\n onFinishFailed,\n onValuesChange,\n requiredMark = true,\n disabled = false,\n children,\n className = \"\",\n ...rest\n } = props;\n\n const [internalForm] = useForm<V>();\n const form = externalForm ?? internalForm;\n const store = getStore(form);\n\n // Apply initial values + wire callbacks on first render only.\n const initRef = React.useRef(false);\n if (!initRef.current) {\n if (initialValues) {\n for (const [k, v] of Object.entries(initialValues)) {\n store.initial[k] = v;\n if (store.values[k] === undefined) store.values[k] = v;\n }\n }\n initRef.current = true;\n }\n\n store.onValuesChange = onValuesChange\n ? (changed, all) => onValuesChange(changed as Partial<V>, all as V)\n : undefined;\n\n const doSubmit = React.useCallback(() => {\n form\n .validateFields()\n .then((values) => onFinish?.(values))\n .catch((err: Error & { errorFields?: ErrorField[]; values?: Partial<V> }) => {\n if (err?.errorFields) {\n onFinishFailed?.({\n values: (err.values ?? {}) as Partial<V>,\n errorFields: err.errorFields,\n });\n }\n });\n }, [form, onFinish, onFinishFailed]);\n\n store.onSubmit = doSubmit;\n\n const ctxValue = React.useMemo<FormCtxValue>(\n () => ({ store, layout, requiredMark, disabled }),\n [store, layout, requiredMark, disabled]\n );\n\n return (\n <FormCtx.Provider value={ctxValue}>\n <form\n ref={ref}\n className={`lumina-form layout-${layout} ${className}`}\n onSubmit={(e) => {\n e.preventDefault();\n doSubmit();\n }}\n {...rest}\n >\n {children}\n </form>\n </FormCtx.Provider>\n );\n};\n\nconst FormRoot = React.forwardRef(FormRootInner) as FormRootComponent;\n(FormRoot as any).displayName = \"Form\";\n\n/* ---------------------------- Form.Item ---------------------------- */\n\nexport interface FormItemProps {\n /** Field key. Omit for layout-only wrappers (no value binding). */\n name?: string;\n label?: React.ReactNode;\n rules?: Rule[];\n /** Render no wrapper — emit only the (bound) child. */\n noStyle?: boolean;\n /** Inject value into this prop name on the child. Default `\"value\"`. */\n valuePropName?: string;\n /** Listen for changes on this event name. Default `\"onChange\"`. */\n trigger?: string;\n /** Event names that trigger validation. Default `[\"onChange\"]`. */\n validateTrigger?: string | string[];\n /** Initial value (used when the form instance has no value yet). */\n initialValue?: unknown;\n /** Extra help text shown under the field. Hidden when an error is shown. */\n help?: React.ReactNode;\n /** Supplementary description below the help line. */\n extra?: React.ReactNode;\n /** Explicitly mark the field as required (cosmetic). */\n required?: boolean;\n /** Hide the entire item (still keeps the field in the form). */\n hidden?: boolean;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst extractValue = (valuePropName: string, args: unknown[]) => {\n const first = args[0];\n if (first && typeof first === \"object\") {\n const anyFirst = first as { target?: { value?: unknown; checked?: unknown } };\n if (anyFirst.target && \"value\" in anyFirst.target) {\n return valuePropName === \"checked\" ? anyFirst.target.checked : anyFirst.target.value;\n }\n }\n return first;\n};\n\nexport const FormItem: React.FC<FormItemProps> = ({\n name,\n label,\n rules,\n noStyle,\n valuePropName = \"value\",\n trigger = \"onChange\",\n initialValue,\n help,\n extra,\n required,\n hidden,\n children,\n className = \"\",\n style,\n}) => {\n const ctx = React.useContext(FormCtx);\n const [, tick] = React.useReducer((n: number) => n + 1, 0);\n\n // Register field + subscribe to its changes.\n React.useEffect(() => {\n if (!ctx || !name) return;\n const store = ctx.store;\n if (initialValue !== undefined) {\n if (store.initial[name] === undefined) store.initial[name] = initialValue;\n if (store.values[name] === undefined) store.values[name] = initialValue;\n }\n store.fields.set(name, { rules: rules ?? [], initial: initialValue });\n let subs = store.fieldSubs.get(name);\n if (!subs) {\n subs = new Set();\n store.fieldSubs.set(name, subs);\n }\n subs.add(tick);\n return () => {\n subs!.delete(tick);\n store.fields.delete(name);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx, name]);\n\n // Keep rules fresh across re-renders.\n React.useEffect(() => {\n if (!ctx || !name) return;\n const entry = ctx.store.fields.get(name);\n if (entry) entry.rules = rules ?? [];\n }, [ctx, name, rules]);\n\n if (hidden) return null;\n\n const hasName = !!name;\n const isRequired =\n required === true || (rules?.some((r) => r.required) ?? false);\n\n // Unbound mode (no name) — render children as-is.\n if (!hasName) {\n const content = children as React.ReactNode;\n if (noStyle) return <>{content}</>;\n return (\n <div className={`form-item ${className}`} style={style}>\n {label && <div className=\"form-item-label\">{label}</div>}\n <div className=\"form-item-control\">{content}</div>\n {help && <div className=\"form-item-help\">{help}</div>}\n {extra && <div className=\"form-item-extra\">{extra}</div>}\n </div>\n );\n }\n\n const store = ctx?.store;\n const value = store?.values[name!];\n const errors = store?.errors[name!] ?? [];\n const hasError = errors.length > 0;\n\n const bound = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement, {\n [valuePropName]: value ?? (valuePropName === \"checked\" ? false : \"\"),\n [trigger]: (...args: unknown[]) => {\n const next = extractValue(valuePropName, args);\n store?.values && (store.values[name!] = next);\n store?.touched.add(name!);\n if (store) {\n void validateField(store, name!).then(() => notifyField(store, name!));\n notifyField(store, name!);\n notifyAll(store);\n store.onValuesChange?.({ [name!]: next }, { ...store.values });\n }\n const childTrigger = (children as React.ReactElement).props?.[trigger];\n if (typeof childTrigger === \"function\") childTrigger(...args);\n },\n disabled:\n (children as React.ReactElement).props?.disabled ?? ctx?.disabled,\n ...(hasError ? { invalid: true } : {}),\n })\n : children;\n\n if (noStyle) return <>{bound}</>;\n\n return (\n <div className={`form-item ${hasError ? \"has-error\" : \"\"} ${className}`} style={style}>\n {label && (\n <div className=\"form-item-label\">\n {isRequired && ctx?.requiredMark !== false && (\n <span className=\"form-item-required\" aria-hidden>*</span>\n )}\n {label}\n </div>\n )}\n <div className=\"form-item-control\">{bound}</div>\n {hasError ? (\n <div className=\"form-item-error\">{errors[0]}</div>\n ) : help ? (\n <div className=\"form-item-help\">{help}</div>\n ) : null}\n {extra && <div className=\"form-item-extra\">{extra}</div>}\n </div>\n );\n};\n\n/* ---------------------------- Assembly ---------------------------- */\n\nexport const Form = FormRoot as typeof FormRoot & {\n Item: typeof FormItem;\n useForm: typeof useForm;\n};\nForm.Item = FormItem;\nForm.useForm = useForm;\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import './tokens-BIIUTPKN.css';
|
|
2
|
+
import './shared-NJHRNLRH.css';
|
|
3
|
+
import './List-W5BW4D2P.css';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/List/List.tsx
|
|
8
|
+
var List = React.forwardRef(({ items, dividers = true, className = "", style, ...rest }, ref) => /* @__PURE__ */ jsx(
|
|
9
|
+
"ul",
|
|
10
|
+
{
|
|
11
|
+
ref,
|
|
12
|
+
className: `list ${dividers ? "with-dividers" : ""} ${className}`,
|
|
13
|
+
style: { listStyle: "none", margin: 0, ...style },
|
|
14
|
+
...rest,
|
|
15
|
+
children: items.map((it) => /* @__PURE__ */ jsxs("li", { className: `list-item ${it.onClick ? "clickable" : ""}`, onClick: it.onClick, children: [
|
|
16
|
+
it.avatar && /* @__PURE__ */ jsx("div", { className: "list-item-avatar", children: it.avatar }),
|
|
17
|
+
/* @__PURE__ */ jsxs("div", { className: "list-item-meta", children: [
|
|
18
|
+
it.title && /* @__PURE__ */ jsx("div", { className: "list-item-title", children: it.title }),
|
|
19
|
+
it.description && /* @__PURE__ */ jsx("div", { className: "list-item-desc", children: it.description })
|
|
20
|
+
] }),
|
|
21
|
+
it.actions && /* @__PURE__ */ jsx("div", { className: "list-item-actions", children: it.actions })
|
|
22
|
+
] }, it.key))
|
|
23
|
+
}
|
|
24
|
+
));
|
|
25
|
+
List.displayName = "List";
|
|
26
|
+
|
|
27
|
+
export { List };
|
|
28
|
+
//# sourceMappingURL=chunk-2LIX7ZHX.js.map
|
|
29
|
+
//# sourceMappingURL=chunk-2LIX7ZHX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/List/List.tsx"],"names":[],"mappings":";;;;;;;AAuBO,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA,CAAwC,CAAC,EAAE,KAAA,EAAO,QAAA,GAAW,IAAA,EAAM,SAAA,GAAY,EAAA,EAAI,KAAA,EAAO,GAAG,IAAA,IAAQ,GAAA,qBAC7H,GAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,WAAW,CAAA,KAAA,EAAQ,QAAA,GAAW,eAAA,GAAkB,EAAE,IAAI,SAAS,CAAA,CAAA;AAAA,IAC/D,OAAO,EAAE,SAAA,EAAW,QAAQ,MAAA,EAAQ,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,IAC/C,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,0BACT,IAAA,EAAA,EAAgB,SAAA,EAAW,CAAA,UAAA,EAAa,EAAA,CAAG,UAAU,WAAA,GAAc,EAAE,CAAA,CAAA,EAAI,OAAA,EAAS,GAAG,OAAA,EACnF,QAAA,EAAA;AAAA,MAAA,EAAA,CAAG,0BAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAoB,aAAG,MAAA,EAAO,CAAA;AAAA,sBAC3D,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,EAAA,CAAG,yBAAS,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAmB,aAAG,KAAA,EAAM,CAAA;AAAA,QACvD,GAAG,WAAA,oBAAe,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EAAkB,aAAG,WAAA,EAAY;AAAA,OAAA,EACrE,CAAA;AAAA,MACC,GAAG,OAAA,oBAAW,GAAA,CAAC,SAAI,SAAA,EAAU,mBAAA,EAAqB,aAAG,OAAA,EAAQ;AAAA,KAAA,EAAA,EANvD,EAAA,CAAG,GAOZ,CACD;AAAA;AACH,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-2LIX7ZHX.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./List.css\";\nimport * as React from \"react\";\n\nexport interface ListItem {\n key: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n avatar?: React.ReactNode;\n actions?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface ListProps\n extends Omit<React.HTMLAttributes<HTMLUListElement>, \"children\"> {\n items: ListItem[];\n /** Show dividers between items. */\n dividers?: boolean;\n className?: string;\n}\n\n/** `List` — vertical list of rows. */\nexport const List = React.forwardRef<HTMLUListElement, ListProps>(({ items, dividers = true, className = \"\", style, ...rest }, ref) => (\n <ul\n ref={ref}\n className={`list ${dividers ? \"with-dividers\" : \"\"} ${className}`}\n style={{ listStyle: \"none\", margin: 0, ...style }}\n {...rest}\n >\n {items.map((it) => (\n <li key={it.key} className={`list-item ${it.onClick ? \"clickable\" : \"\"}`} onClick={it.onClick}>\n {it.avatar && <div className=\"list-item-avatar\">{it.avatar}</div>}\n <div className=\"list-item-meta\">\n {it.title && <div className=\"list-item-title\">{it.title}</div>}\n {it.description && <div className=\"list-item-desc\">{it.description}</div>}\n </div>\n {it.actions && <div className=\"list-item-actions\">{it.actions}</div>}\n </li>\n ))}\n </ul>\n));\nList.displayName = \"List\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
|
|
4
4
|
require('./tokens-BIIUTPKN.css');
|
|
5
5
|
require('./shared-NJHRNLRH.css');
|
|
6
6
|
require('./Drawer-IPGB4CXH.css');
|
|
@@ -32,7 +32,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
32
32
|
var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
|
|
33
33
|
|
|
34
34
|
var ANIM_MS = 280;
|
|
35
|
-
var Drawer = ({
|
|
35
|
+
var Drawer = React__namespace.forwardRef(({
|
|
36
36
|
open,
|
|
37
37
|
onClose,
|
|
38
38
|
placement = "right",
|
|
@@ -49,8 +49,11 @@ var Drawer = ({
|
|
|
49
49
|
destroyOnClose = false,
|
|
50
50
|
afterOpenChange,
|
|
51
51
|
zIndex,
|
|
52
|
-
className = ""
|
|
53
|
-
|
|
52
|
+
className = "",
|
|
53
|
+
style,
|
|
54
|
+
onClick,
|
|
55
|
+
...rest
|
|
56
|
+
}, ref) => {
|
|
54
57
|
const [hasOpenedOnce, setHasOpenedOnce] = React__namespace.useState(open);
|
|
55
58
|
React__namespace.useEffect(() => {
|
|
56
59
|
if (open) setHasOpenedOnce(true);
|
|
@@ -75,8 +78,9 @@ var Drawer = ({
|
|
|
75
78
|
if (!hasOpenedOnce) return null;
|
|
76
79
|
if (!open && destroyOnClose) return null;
|
|
77
80
|
const isV = placement === "left" || placement === "right";
|
|
78
|
-
const
|
|
79
|
-
if (zIndex != null)
|
|
81
|
+
const panelStyle = isV ? { width: size } : { height: size };
|
|
82
|
+
if (zIndex != null) panelStyle.zIndex = zIndex;
|
|
83
|
+
Object.assign(panelStyle, style);
|
|
80
84
|
return ReactDOM__default.default.createPortal(
|
|
81
85
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
82
86
|
mask && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -90,11 +94,16 @@ var Drawer = ({
|
|
|
90
94
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
91
95
|
"div",
|
|
92
96
|
{
|
|
97
|
+
ref,
|
|
93
98
|
className: `drawer ${placement} ${open ? "" : "hidden"} ${className}`,
|
|
94
|
-
style,
|
|
95
|
-
onClick: (e) =>
|
|
99
|
+
style: panelStyle,
|
|
100
|
+
onClick: (e) => {
|
|
101
|
+
onClick?.(e);
|
|
102
|
+
e.stopPropagation();
|
|
103
|
+
},
|
|
96
104
|
role: "dialog",
|
|
97
105
|
"aria-hidden": !open,
|
|
106
|
+
...rest,
|
|
98
107
|
children: [
|
|
99
108
|
(title || extra || closable) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "drawer-head", children: [
|
|
100
109
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "drawer-title", children: title }),
|
|
@@ -107,7 +116,7 @@ var Drawer = ({
|
|
|
107
116
|
className: "drawer-close",
|
|
108
117
|
onClick: onClose,
|
|
109
118
|
"aria-label": "Close",
|
|
110
|
-
children: closeIcon ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
+
children: closeIcon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "x", size: 16 })
|
|
111
120
|
}
|
|
112
121
|
)
|
|
113
122
|
] })
|
|
@@ -120,8 +129,9 @@ var Drawer = ({
|
|
|
120
129
|
] }),
|
|
121
130
|
document.body
|
|
122
131
|
);
|
|
123
|
-
};
|
|
132
|
+
});
|
|
133
|
+
Drawer.displayName = "Drawer";
|
|
124
134
|
|
|
125
135
|
exports.Drawer = Drawer;
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-2TNJ7TC4.cjs.map
|
|
137
|
+
//# sourceMappingURL=chunk-2TNJ7TC4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Drawer/Drawer.tsx"],"names":["React","ReactDOM","jsxs","Fragment","jsx","Icon"],"mappings":"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","file":"chunk-2TNJ7TC4.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Drawer.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\n\nexport interface DrawerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\" | \"onClose\"> {\n /** Whether the drawer is visible. */\n open: boolean;\n /** Close callback (triggered by mask click / close button / Esc). */\n onClose?: () => void;\n /** Which edge the drawer slides from. */\n placement?: \"left\" | \"right\" | \"top\" | \"bottom\";\n /** Width (for left/right) or height (for top/bottom). Number → px. */\n size?: number | string;\n /** Header title. */\n title?: React.ReactNode;\n /** Extra content rendered to the right of the title (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Footer content. */\n footer?: React.ReactNode;\n /** Drawer body. */\n children?: React.ReactNode;\n /** Render the mask overlay. Default true. Set `false` for a non-blocking drawer. */\n mask?: boolean;\n /** Close when clicking the mask. Default true. Ignored when `mask` is false. */\n maskClosable?: boolean;\n /** Close on Escape key. Default true. */\n keyboard?: boolean;\n /** Show the close (×) button in the header. Default true. */\n closable?: boolean;\n /** Override the close icon node. */\n closeIcon?: React.ReactNode;\n /**\n * When true the drawer's children are unmounted every time it closes.\n * Default `false` — children stay mounted across open/close cycles so\n * internal state (form fields, scroll position) is preserved.\n */\n destroyOnClose?: boolean;\n /** Fires after the open/close animation finishes. */\n afterOpenChange?: (open: boolean) => void;\n /** Stack index for nested drawers. */\n zIndex?: number;\n className?: string;\n}\n\nconst ANIM_MS = 280;\n\n/** `Drawer` — slide-in panel from an edge. */\nexport const Drawer = React.forwardRef<HTMLDivElement, DrawerProps>(({\n open,\n onClose,\n placement = \"right\",\n size = 380,\n title,\n extra,\n footer,\n children,\n mask = true,\n maskClosable = true,\n keyboard = true,\n closable = true,\n closeIcon,\n destroyOnClose = false,\n afterOpenChange,\n zIndex,\n className = \"\",\n style,\n onClick,\n ...rest\n}, ref) => {\n const [hasOpenedOnce, setHasOpenedOnce] = React.useState(open);\n React.useEffect(() => {\n if (open) setHasOpenedOnce(true);\n }, [open]);\n\n React.useEffect(() => {\n if (!open || !keyboard) return;\n const h = (e: KeyboardEvent) => e.key === \"Escape\" && onClose?.();\n window.addEventListener(\"keydown\", h);\n return () => window.removeEventListener(\"keydown\", h);\n }, [open, keyboard, onClose]);\n\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current !== open) {\n prevOpen.current = open;\n if (afterOpenChange) {\n const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);\n return () => window.clearTimeout(id);\n }\n }\n }, [open, afterOpenChange]);\n\n if (typeof document === \"undefined\") return null;\n if (!hasOpenedOnce) return null;\n if (!open && destroyOnClose) return null;\n\n const isV = placement === \"left\" || placement === \"right\";\n const panelStyle: React.CSSProperties = isV ? { width: size } : { height: size };\n if (zIndex != null) panelStyle.zIndex = zIndex;\n Object.assign(panelStyle, style);\n\n return ReactDOM.createPortal(\n <>\n {mask && (\n <div\n className={`drawer-overlay ${open ? \"\" : \"hidden\"}`}\n style={zIndex != null ? { zIndex: zIndex - 1 } : undefined}\n onClick={() => maskClosable && onClose?.()}\n />\n )}\n <div\n ref={ref}\n className={`drawer ${placement} ${open ? \"\" : \"hidden\"} ${className}`}\n style={panelStyle}\n onClick={(e) => {\n onClick?.(e);\n e.stopPropagation();\n }}\n role=\"dialog\"\n aria-hidden={!open}\n {...rest}\n >\n {(title || extra || closable) && (\n <div className=\"drawer-head\">\n <div className=\"drawer-title\">{title}</div>\n <div className=\"drawer-head-right\">\n {extra}\n {closable && (\n <button\n type=\"button\"\n className=\"drawer-close\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n {closeIcon ?? <Icon name=\"x\" size={16} />}\n </button>\n )}\n </div>\n </div>\n )}\n <div className=\"drawer-body\">{children}</div>\n {footer && <div className=\"drawer-foot\">{footer}</div>}\n </div>\n </>,\n document.body\n );\n});\nDrawer.displayName = \"Drawer\";\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('./tokens-BIIUTPKN.css');
|
|
4
|
+
require('./shared-NJHRNLRH.css');
|
|
5
|
+
require('./Progress-CHV7DN6Y.css');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
29
|
+
// src/components/Progress/Progress.tsx
|
|
30
|
+
var Progress = React__namespace.forwardRef(({
|
|
31
|
+
value,
|
|
32
|
+
max = 100,
|
|
33
|
+
label,
|
|
34
|
+
showValue,
|
|
35
|
+
tone = "accent",
|
|
36
|
+
color,
|
|
37
|
+
size = "md",
|
|
38
|
+
className = "",
|
|
39
|
+
style,
|
|
40
|
+
...rest
|
|
41
|
+
}, ref) => {
|
|
42
|
+
const pct = Math.max(0, Math.min(100, value / max * 100));
|
|
43
|
+
const rootStyle = {
|
|
44
|
+
...color ? {
|
|
45
|
+
["--progress-fill"]: color,
|
|
46
|
+
["--progress-fill-glow"]: `color-mix(in oklch, ${color} 35%, transparent)`
|
|
47
|
+
} : null,
|
|
48
|
+
...style
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `progress ${size} ${tone} ${className}`, style: rootStyle, ...rest, children: [
|
|
51
|
+
(label || showValue) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "progress-label", children: [
|
|
52
|
+
label ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
53
|
+
showValue && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "v", children: [
|
|
54
|
+
Math.round(pct),
|
|
55
|
+
"%"
|
|
56
|
+
] })
|
|
57
|
+
] }),
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "progress-track", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "progress-bar", style: { width: `${pct}%` } }) })
|
|
59
|
+
] });
|
|
60
|
+
});
|
|
61
|
+
Progress.displayName = "Progress";
|
|
62
|
+
|
|
63
|
+
exports.Progress = Progress;
|
|
64
|
+
//# sourceMappingURL=chunk-3EGZ6TBF.cjs.map
|
|
65
|
+
//# sourceMappingURL=chunk-3EGZ6TBF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Progress/Progress.tsx"],"names":["React","jsxs","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,IAAM,QAAA,GAAiBA,4BAA0C,CAAC;AAAA,EACvE,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,GAAA,EAAM,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA;AAC1D,EAAA,MAAM,SAAA,GAAiC;AAAA,IACrC,GAAI,KAAA,GACA;AAAA,MACE,CAAC,iBAA0B,GAAG,KAAA;AAAA,MAC9B,CAAC,sBAA+B,GAAG,CAAA,oBAAA,EAAuB,KAAK,CAAA,kBAAA;AAAA,KACjE,GACA,IAAA;AAAA,IACJ,GAAG;AAAA,GACL;AACA,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,YAAY,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,KAAA,EAAO,SAAA,EAAY,GAAG,IAAA,EACrF,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,SAAA,qBACTA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,mBAAQC,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM,CAAA,kCAAW,MAAA,EAAA,EAAK,CAAA;AAAA,MACrC,SAAA,oBAAaD,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,GAAA,EAAK,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC;AAAA,KAAA,EACtD,CAAA;AAAA,oBAEFC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,IAAO,CAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AACD,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-3EGZ6TBF.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Progress.css\";\nimport * as React from \"react\";\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 0–100 */\n value: number;\n max?: number;\n label?: React.ReactNode;\n showValue?: boolean;\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\";\n /** Custom fill color. Overrides `tone`. */\n color?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** `Progress` — horizontal progress bar with neumorphic track. */\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(({\n value,\n max = 100,\n label,\n showValue,\n tone = \"accent\",\n color,\n size = \"md\",\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const pct = Math.max(0, Math.min(100, (value / max) * 100));\n const rootStyle: React.CSSProperties = {\n ...(color\n ? {\n [\"--progress-fill\" as never]: color,\n [\"--progress-fill-glow\" as never]: `color-mix(in oklch, ${color} 35%, transparent)`,\n }\n : null),\n ...style,\n };\n return (\n <div ref={ref} className={`progress ${size} ${tone} ${className}`} style={rootStyle} {...rest}>\n {(label || showValue) && (\n <div className=\"progress-label\">\n {label ? <span>{label}</span> : <span />}\n {showValue && <span className=\"v\">{Math.round(pct)}%</span>}\n </div>\n )}\n <div className=\"progress-track\">\n <div className=\"progress-bar\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n});\nProgress.displayName = \"Progress\";\n"]}
|
|
@@ -8,12 +8,16 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
8
8
|
// src/components/ContextMenu/ContextMenu.tsx
|
|
9
9
|
var ESTIMATED_ITEM_H = 32;
|
|
10
10
|
var MARGIN = 8;
|
|
11
|
-
var ContextMenu = ({
|
|
11
|
+
var ContextMenu = React.forwardRef(({
|
|
12
12
|
items,
|
|
13
13
|
children,
|
|
14
14
|
disabled,
|
|
15
|
-
minWidth = 180
|
|
16
|
-
|
|
15
|
+
minWidth = 180,
|
|
16
|
+
className = "",
|
|
17
|
+
style,
|
|
18
|
+
onContextMenu,
|
|
19
|
+
...rest
|
|
20
|
+
}, ref) => {
|
|
17
21
|
const [open, setOpen] = React.useState(false);
|
|
18
22
|
const [pos, setPos] = React.useState({ top: 0, left: 0 });
|
|
19
23
|
const [active, setActive] = React.useState(-1);
|
|
@@ -96,7 +100,20 @@ var ContextMenu = ({
|
|
|
96
100
|
e.preventDefault();
|
|
97
101
|
openAt(e.clientX, e.clientY);
|
|
98
102
|
};
|
|
99
|
-
const trigger = /* @__PURE__ */ jsx(
|
|
103
|
+
const trigger = /* @__PURE__ */ jsx(
|
|
104
|
+
"span",
|
|
105
|
+
{
|
|
106
|
+
ref,
|
|
107
|
+
className,
|
|
108
|
+
style: { display: "contents", ...style },
|
|
109
|
+
onContextMenu: (e) => {
|
|
110
|
+
onContextMenu?.(e);
|
|
111
|
+
handleTriggerContextMenu(e);
|
|
112
|
+
},
|
|
113
|
+
...rest,
|
|
114
|
+
children
|
|
115
|
+
}
|
|
116
|
+
);
|
|
100
117
|
const panel = open && typeof document !== "undefined" ? ReactDOM.createPortal(
|
|
101
118
|
/* @__PURE__ */ jsx(
|
|
102
119
|
"div",
|
|
@@ -142,8 +159,9 @@ var ContextMenu = ({
|
|
|
142
159
|
trigger,
|
|
143
160
|
panel
|
|
144
161
|
] });
|
|
145
|
-
};
|
|
162
|
+
});
|
|
163
|
+
ContextMenu.displayName = "ContextMenu";
|
|
146
164
|
|
|
147
165
|
export { ContextMenu };
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
149
|
-
//# sourceMappingURL=chunk-
|
|
166
|
+
//# sourceMappingURL=chunk-3LJO33HI.js.map
|
|
167
|
+
//# sourceMappingURL=chunk-3LJO33HI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-3LJO33HI.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./ContextMenu.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nexport interface ContextMenuItem {\n key: string;\n /** Omit for `type: \"divider\"`. */\n label?: React.ReactNode;\n icon?: React.ReactNode;\n /** Right-aligned shortcut hint, e.g. `\"⌘C\"`. */\n shortcut?: React.ReactNode;\n disabled?: boolean;\n /** Style the item as destructive (red). */\n danger?: boolean;\n /** Render a horizontal separator; other fields are ignored. */\n type?: \"divider\";\n onSelect?: () => void;\n}\n\nexport interface ContextMenuProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n items: ContextMenuItem[];\n /**\n * Any content — right-click anywhere inside the trigger area opens the menu.\n * Internally wrapped in a `display: contents` span so layout is unaffected\n * regardless of whether `children` is a DOM element or a React component.\n */\n children: React.ReactNode;\n /** Skip the menu entirely — browser default context menu will be used instead. */\n disabled?: boolean;\n /** Minimum panel width in px. Default 180. */\n minWidth?: number;\n}\n\nconst ESTIMATED_ITEM_H = 32;\nconst MARGIN = 8;\n\n/**\n * `ContextMenu` — right-click menu. Wraps one child element; suppresses the\n * browser's native menu and opens a neumorphic replacement at the cursor.\n *\n * @example\n * ```tsx\n * <ContextMenu\n * items={[\n * { key: \"copy\", label: \"复制\", shortcut: \"⌘C\", onSelect: copy },\n * { key: \"cut\", label: \"剪切\", shortcut: \"⌘X\", onSelect: cut },\n * { key: \"d1\", type: \"divider\" },\n * { key: \"del\", label: \"删除\", danger: true, onSelect: del },\n * ]}\n * >\n * <div>右键点击我</div>\n * </ContextMenu>\n * ```\n */\nexport const ContextMenu = React.forwardRef<HTMLSpanElement, ContextMenuProps>(({\n items,\n children,\n disabled,\n minWidth = 180,\n className = \"\",\n style,\n onContextMenu,\n ...rest\n}, ref) => {\n const [open, setOpen] = React.useState(false);\n const [pos, setPos] = React.useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const [active, setActive] = React.useState(-1);\n const menuRef = React.useRef<HTMLDivElement>(null);\n\n const isSelectable = React.useCallback(\n (i: ContextMenuItem) => i.type !== \"divider\" && !i.disabled,\n []\n );\n\n const close = React.useCallback(() => setOpen(false), []);\n\n const openAt = (clientX: number, clientY: number) => {\n // Estimate panel size for clamping; refined on next paint via measured rect.\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const estH = Math.min(items.length * ESTIMATED_ITEM_H + 16, vh - MARGIN * 2);\n const estW = minWidth;\n const left = Math.min(clientX, vw - estW - MARGIN);\n const top = Math.min(clientY, vh - estH - MARGIN);\n setPos({ top: Math.max(MARGIN, top), left: Math.max(MARGIN, left) });\n const firstIdx = items.findIndex(isSelectable);\n setActive(firstIdx);\n setOpen(true);\n };\n\n // Close on Esc / outside click / scroll / window blur.\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") { e.stopPropagation(); close(); return; }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n setActive((curr) => {\n const dir = e.key === \"ArrowDown\" ? 1 : -1;\n let i = curr;\n for (let n = 0; n < items.length; n++) {\n i = (i + dir + items.length) % items.length;\n if (isSelectable(items[i])) return i;\n }\n return curr;\n });\n }\n if (e.key === \"Enter\") {\n const it = items[active];\n if (it && isSelectable(it)) {\n e.preventDefault();\n it.onSelect?.();\n close();\n }\n }\n };\n const onOutside = (e: MouseEvent) => {\n if (!menuRef.current?.contains(e.target as Node)) close();\n };\n const onBlur = () => close();\n window.addEventListener(\"keydown\", onKey);\n window.addEventListener(\"mousedown\", onOutside);\n window.addEventListener(\"scroll\", close, true);\n window.addEventListener(\"resize\", close);\n window.addEventListener(\"blur\", onBlur);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"mousedown\", onOutside);\n window.removeEventListener(\"scroll\", close, true);\n window.removeEventListener(\"resize\", close);\n window.removeEventListener(\"blur\", onBlur);\n };\n }, [open, items, active, close, isSelectable]);\n\n // Clamp again after mount using the real measured size.\n React.useLayoutEffect(() => {\n if (!open || !menuRef.current) return;\n const rect = menuRef.current.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n setPos((p) => ({\n top: Math.min(p.top, Math.max(MARGIN, vh - rect.height - MARGIN)),\n left: Math.min(p.left, Math.max(MARGIN, vw - rect.width - MARGIN)),\n }));\n }, [open]);\n\n const handleTriggerContextMenu = (e: React.MouseEvent) => {\n if (disabled || e.defaultPrevented) return;\n e.preventDefault();\n openAt(e.clientX, e.clientY);\n };\n\n // Wrap in a `display: contents` span so the handler lives on a DOM node we\n // fully control — React.cloneElement would fail to reach the DOM when\n // `children` is a React component that doesn't forward `onContextMenu`.\n const trigger = (\n <span\n ref={ref}\n className={className}\n style={{ display: \"contents\", ...style }}\n onContextMenu={(e) => {\n onContextMenu?.(e);\n handleTriggerContextMenu(e);\n }}\n {...rest}\n >\n {children}\n </span>\n );\n\n const panel =\n open && typeof document !== \"undefined\"\n ? ReactDOM.createPortal(\n <div\n ref={menuRef}\n className=\"context-menu\"\n role=\"menu\"\n style={{\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n minWidth,\n }}\n onContextMenu={(e) => e.preventDefault()}\n >\n {items.map((it, i) =>\n it.type === \"divider\" ? (\n <div key={it.key} className=\"context-menu-divider\" role=\"separator\" />\n ) : (\n <button\n key={it.key}\n type=\"button\"\n role=\"menuitem\"\n disabled={it.disabled}\n className={`context-menu-item ${active === i ? \"active\" : \"\"} ${it.danger ? \"danger\" : \"\"}`}\n onMouseEnter={() => isSelectable(it) && setActive(i)}\n onClick={() => {\n if (!isSelectable(it)) return;\n it.onSelect?.();\n close();\n }}\n >\n <span className=\"context-menu-icon\">{it.icon}</span>\n <span className=\"context-menu-label\">{it.label}</span>\n {it.shortcut && <span className=\"context-menu-shortcut\">{it.shortcut}</span>}\n </button>\n )\n )}\n </div>,\n document.body\n )\n : null;\n\n return (\n <>\n {trigger}\n {panel}\n </>\n );\n});\nContextMenu.displayName = \"ContextMenu\";\n"]}
|
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
import './tokens-BIIUTPKN.css';
|
|
2
2
|
import './shared-NJHRNLRH.css';
|
|
3
3
|
import './AppShell-RCALXUCZ.css';
|
|
4
|
+
import * as React from 'react';
|
|
4
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
6
|
|
|
6
7
|
// src/components/AppShell/AppShell.tsx
|
|
7
|
-
var WindowControls = ({
|
|
8
|
+
var WindowControls = React.forwardRef(({
|
|
8
9
|
platform = "mac",
|
|
9
10
|
onMinimize,
|
|
10
11
|
onMaximize,
|
|
11
12
|
onClose,
|
|
12
|
-
className = ""
|
|
13
|
-
|
|
13
|
+
className = "",
|
|
14
|
+
...rest
|
|
15
|
+
}, ref) => {
|
|
14
16
|
const noDragStyle = { WebkitAppRegion: "no-drag" };
|
|
15
17
|
if (platform === "windows") {
|
|
16
|
-
return /* @__PURE__ */ jsxs("div", { className: `win-controls windows ${className}`, style: noDragStyle, children: [
|
|
18
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: `win-controls windows ${className}`, style: noDragStyle, ...rest, children: [
|
|
17
19
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn minimize", onClick: onMinimize, "aria-label": "Minimize", children: /* @__PURE__ */ jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M1 5h8", stroke: "currentColor", strokeWidth: "1" }) }) }),
|
|
18
20
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn maximize", onClick: onMaximize, "aria-label": "Maximize", children: /* @__PURE__ */ jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("rect", { x: "1", y: "1", width: "8", height: "8", stroke: "currentColor", strokeWidth: "1" }) }) }),
|
|
19
21
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M1 1l8 8M9 1l-8 8", stroke: "currentColor", strokeWidth: "1" }) }) })
|
|
20
22
|
] });
|
|
21
23
|
}
|
|
22
|
-
return /* @__PURE__ */ jsxs("div", { className: `win-controls mac ${className}`, style: noDragStyle, children: [
|
|
24
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: `win-controls mac ${className}`, style: noDragStyle, ...rest, children: [
|
|
23
25
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn close", onClick: onClose, "aria-label": "Close" }),
|
|
24
26
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn minimize", onClick: onMinimize, "aria-label": "Minimize" }),
|
|
25
27
|
/* @__PURE__ */ jsx("button", { type: "button", className: "win-btn maximize", onClick: onMaximize, "aria-label": "Maximize" })
|
|
26
28
|
] });
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
+
});
|
|
30
|
+
WindowControls.displayName = "WindowControls";
|
|
31
|
+
var TitleBar = React.forwardRef(({
|
|
29
32
|
title,
|
|
30
33
|
platform = "mac",
|
|
31
34
|
onMinimize,
|
|
@@ -34,27 +37,30 @@ var TitleBar = ({
|
|
|
34
37
|
center,
|
|
35
38
|
actions,
|
|
36
39
|
draggable = true,
|
|
37
|
-
className = ""
|
|
38
|
-
|
|
40
|
+
className = "",
|
|
41
|
+
...rest
|
|
42
|
+
}, ref) => {
|
|
39
43
|
const dragStyle = draggable ? { WebkitAppRegion: "drag" } : void 0;
|
|
40
44
|
const noDragStyle = { WebkitAppRegion: "no-drag" };
|
|
41
|
-
return /* @__PURE__ */ jsxs("div", { className: `titlebar ${platform} ${className}`, style: dragStyle, children: [
|
|
45
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: `titlebar ${platform} ${className}`, style: dragStyle, ...rest, children: [
|
|
42
46
|
platform === "mac" && /* @__PURE__ */ jsx(WindowControls, { platform: "mac", onMinimize, onMaximize, onClose }),
|
|
43
47
|
/* @__PURE__ */ jsx("div", { className: "titlebar-title", children: title }),
|
|
44
48
|
center && /* @__PURE__ */ jsx("div", { className: "titlebar-center", style: noDragStyle, children: center }),
|
|
45
49
|
actions && /* @__PURE__ */ jsx("div", { className: "titlebar-actions", style: noDragStyle, children: actions }),
|
|
46
50
|
platform === "windows" && /* @__PURE__ */ jsx(WindowControls, { platform: "windows", onMinimize, onMaximize, onClose })
|
|
47
51
|
] });
|
|
48
|
-
};
|
|
49
|
-
|
|
52
|
+
});
|
|
53
|
+
TitleBar.displayName = "TitleBar";
|
|
54
|
+
var Sidebar = React.forwardRef(({
|
|
50
55
|
items,
|
|
51
56
|
activeKey,
|
|
52
57
|
onSelect,
|
|
53
58
|
collapsed,
|
|
54
59
|
header,
|
|
55
60
|
footer,
|
|
56
|
-
className = ""
|
|
57
|
-
|
|
61
|
+
className = "",
|
|
62
|
+
...rest
|
|
63
|
+
}, ref) => /* @__PURE__ */ jsxs("aside", { ref, className: `sidebar ${collapsed ? "collapsed" : ""} ${className}`, ...rest, children: [
|
|
58
64
|
header && /* @__PURE__ */ jsx("div", { className: "sidebar-header", children: header }),
|
|
59
65
|
/* @__PURE__ */ jsx("nav", { className: "sidebar-nav", children: items.map((it) => /* @__PURE__ */ jsxs(
|
|
60
66
|
"button",
|
|
@@ -71,15 +77,17 @@ var Sidebar = ({
|
|
|
71
77
|
it.key
|
|
72
78
|
)) }),
|
|
73
79
|
footer && /* @__PURE__ */ jsx("div", { className: "sidebar-footer", children: footer })
|
|
74
|
-
] });
|
|
75
|
-
|
|
80
|
+
] }));
|
|
81
|
+
Sidebar.displayName = "Sidebar";
|
|
82
|
+
var AppShell = React.forwardRef(({ sidebar, titleBar, children, className = "", ...rest }, ref) => /* @__PURE__ */ jsxs("div", { ref, className: `app-shell ${className}`, ...rest, children: [
|
|
76
83
|
titleBar,
|
|
77
84
|
/* @__PURE__ */ jsxs("div", { className: "app-shell-body", children: [
|
|
78
85
|
sidebar,
|
|
79
86
|
/* @__PURE__ */ jsx("main", { className: "app-shell-main", children })
|
|
80
87
|
] })
|
|
81
|
-
] });
|
|
88
|
+
] }));
|
|
89
|
+
AppShell.displayName = "AppShell";
|
|
82
90
|
|
|
83
91
|
export { AppShell, Sidebar, TitleBar, WindowControls };
|
|
84
|
-
//# sourceMappingURL=chunk-
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-44AVDO3T.js.map
|
|
93
|
+
//# sourceMappingURL=chunk-44AVDO3T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"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","file":"chunk-44AVDO3T.js","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 extends React.HTMLAttributes<HTMLDivElement> {\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.forwardRef<HTMLDivElement, WindowControlsProps>(({\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n className = \"\",\n ...rest\n}, ref) => {\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n if (platform === \"windows\") {\n return (\n <div ref={ref} className={`win-controls windows ${className}`} style={noDragStyle} {...rest}>\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 ref={ref} className={`win-controls mac ${className}`} style={noDragStyle} {...rest}>\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});\nWindowControls.displayName = \"WindowControls\";\n\nexport interface TitleBarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\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.forwardRef<HTMLDivElement, TitleBarProps>(({\n title,\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n center,\n actions,\n draggable = true,\n className = \"\",\n ...rest\n}, ref) => {\n const dragStyle = draggable ? ({ WebkitAppRegion: \"drag\" } as React.CSSProperties) : undefined;\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n\n return (\n <div ref={ref} className={`titlebar ${platform} ${className}`} style={dragStyle} {...rest}>\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});\nTitleBar.displayName = \"TitleBar\";\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 extends Omit<React.HTMLAttributes<HTMLElement>, \"onSelect\" | \"children\"> {\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.forwardRef<HTMLElement, SidebarProps>(({\n items,\n activeKey,\n onSelect,\n collapsed,\n header,\n footer,\n className = \"\",\n ...rest\n}, ref) => (\n <aside ref={ref} className={`sidebar ${collapsed ? \"collapsed\" : \"\"} ${className}`} {...rest}>\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));\nSidebar.displayName = \"Sidebar\";\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\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.forwardRef<HTMLDivElement, AppShellProps>(({ sidebar, titleBar, children, className = \"\", ...rest }, ref) => (\n <div ref={ref} className={`app-shell ${className}`} {...rest}>\n {titleBar}\n <div className=\"app-shell-body\">\n {sidebar}\n <main className=\"app-shell-main\">{children}</main>\n </div>\n </div>\n));\nAppShell.displayName = \"AppShell\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkTC5ZL2OS_cjs = require('./chunk-TC5ZL2OS.cjs');
|
|
4
4
|
require('./tokens-BIIUTPKN.css');
|
|
5
5
|
require('./shared-NJHRNLRH.css');
|
|
6
6
|
require('./Timeline-RHZAZKZ7.css');
|
|
@@ -96,7 +96,7 @@ var TimelineItem = ({
|
|
|
96
96
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cls, children: [
|
|
97
97
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline-item-label", children: item.label }),
|
|
98
98
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "timeline-item-head", children: [
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `timeline-item-dot ${color} ${isPending ? "pending" : ""}`, children: item.dot ?? (isPending && /* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `timeline-item-dot ${color} ${isPending ? "pending" : ""}`, children: item.dot ?? (isPending && /* @__PURE__ */ jsxRuntime.jsx(chunkTC5ZL2OS_cjs.Spinner, { size: 14 })) }),
|
|
100
100
|
!isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline-item-tail" })
|
|
101
101
|
] }),
|
|
102
102
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline-item-content", children: item.children })
|
|
@@ -104,5 +104,5 @@ var TimelineItem = ({
|
|
|
104
104
|
};
|
|
105
105
|
|
|
106
106
|
exports.Timeline = Timeline;
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
107
|
+
//# sourceMappingURL=chunk-474MXYO5.cjs.map
|
|
108
|
+
//# sourceMappingURL=chunk-474MXYO5.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Timeline/Timeline.tsx"],"names":["React","jsxs","jsx","Spinner"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Timeline/Timeline.tsx"],"names":["React","jsxs","jsx","Spinner"],"mappings":"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","file":"chunk-474MXYO5.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Timeline.css\";\nimport * as React from \"react\";\nimport { Spinner } from \"../Empty\";\n\nexport interface TimelineItemConfig {\n /** Unique key for the item */\n key?: string;\n /** Content displayed on the right (or main side) */\n children?: React.ReactNode;\n /** Label displayed on the opposite side (alternate/label mode) */\n label?: React.ReactNode;\n /** Dot color */\n color?: \"accent\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"muted\";\n /** Custom dot content (replaces default dot) */\n dot?: React.ReactNode;\n}\n\nexport interface TimelineProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Timeline items */\n items: TimelineItemConfig[];\n /**\n * Show a pending (loading) item at the end.\n * `true` renders a default spinner; a ReactNode renders custom content.\n */\n pending?: boolean | React.ReactNode;\n /** Text shown as the pending item's content */\n pendingContent?: React.ReactNode;\n /** Layout mode */\n mode?: \"left\" | \"right\" | \"alternate\";\n /** Reverse the order of items */\n reverse?: boolean;\n}\n\n/**\n * `Timeline` — vertical timeline with pending/loading state.\n *\n * @example\n * <Timeline items={[{ children: \"Created\" }, { children: \"In Progress\" }]} pending />\n */\nexport const Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n (\n {\n items,\n pending = false,\n pendingContent = \"加载中...\",\n mode = \"left\",\n reverse = false,\n className = \"\",\n ...rest\n },\n ref\n ) => {\n const displayItems = [...items];\n if (reverse) displayItems.reverse();\n\n const hasPending = pending !== false;\n\n return (\n <div\n ref={ref}\n className={`timeline timeline-${mode} ${className}`}\n {...rest}\n >\n {displayItems.map((item, i) => (\n <TimelineItem\n key={item.key ?? i}\n item={item}\n isLast={!hasPending && i === displayItems.length - 1}\n position={getPosition(mode, i)}\n />\n ))}\n {hasPending && (\n <TimelineItem\n item={{\n children: pendingContent,\n dot: typeof pending === \"boolean\" ? undefined : pending,\n color: \"muted\",\n }}\n isLast\n isPending\n position={getPosition(mode, displayItems.length)}\n />\n )}\n </div>\n );\n }\n);\nTimeline.displayName = \"Timeline\";\n\nfunction getPosition(\n mode: \"left\" | \"right\" | \"alternate\",\n index: number\n): \"left\" | \"right\" {\n if (mode === \"left\") return \"left\";\n if (mode === \"right\") return \"right\";\n return index % 2 === 0 ? \"left\" : \"right\";\n}\n\ninterface TimelineItemInternalProps {\n item: TimelineItemConfig;\n isLast: boolean;\n isPending?: boolean;\n position: \"left\" | \"right\";\n}\n\nconst TimelineItem: React.FC<TimelineItemInternalProps> = ({\n item,\n isLast,\n isPending,\n position,\n}) => {\n const color = item.color ?? \"accent\";\n const cls = [\n \"timeline-item\",\n `timeline-item-${position}`,\n isLast ? \"timeline-item-last\" : \"\",\n isPending ? \"timeline-item-pending\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={cls}>\n <div className=\"timeline-item-label\">{item.label}</div>\n <div className=\"timeline-item-head\">\n <div className={`timeline-item-dot ${color} ${isPending ? \"pending\" : \"\"}`}>\n {item.dot ?? (isPending && <Spinner size={14} />)}\n </div>\n {!isLast && <div className=\"timeline-item-tail\" />}\n </div>\n <div className=\"timeline-item-content\">{item.children}</div>\n </div>\n );\n};\n"]}
|