@fangxinyan/lumina 0.5.0 → 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 +5 -5
- package/dist/AutoComplete.d.cts +1 -4
- package/dist/AutoComplete.d.ts +1 -4
- package/dist/AutoComplete.js +4 -4
- 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 +4 -4
- package/dist/Cascader.d.cts +2 -2
- package/dist/Cascader.d.ts +2 -2
- package/dist/Cascader.js +3 -3
- 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 +3 -3
- package/dist/ColorPicker.d.cts +1 -3
- package/dist/ColorPicker.d.ts +1 -3
- package/dist/ColorPicker.js +2 -2
- 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 +2 -2
- package/dist/Icon.d.ts +2 -2
- 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 +6 -6
- package/dist/Pagination.d.cts +2 -2
- package/dist/Pagination.d.ts +2 -2
- package/dist/Pagination.js +5 -5
- package/dist/Popover-DVGQGWX6.css +103 -0
- package/dist/Popover.cjs +3 -3
- package/dist/Popover.d.cts +25 -3
- package/dist/Popover.d.ts +25 -3
- package/dist/Popover.js +2 -2
- 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 +5 -5
- package/dist/Select.d.cts +6 -3
- package/dist/Select.d.ts +6 -3
- package/dist/Select.js +4 -4
- 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 +9 -9
- package/dist/Table.d.cts +4 -3
- package/dist/Table.d.ts +4 -3
- package/dist/Table.js +7 -7
- 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-RHZAZKZ7.css +136 -0
- package/dist/Timeline.cjs +13 -0
- package/dist/Timeline.cjs.map +1 -0
- package/dist/Timeline.d.cts +38 -0
- package/dist/Timeline.d.ts +38 -0
- package/dist/Timeline.js +4 -0
- package/dist/Timeline.js.map +1 -0
- package/dist/{Toast-6PVSAXQ5.css → Toast-YSACW3EM.css} +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-ST24GY4S.css → Tooltip-DMKUPC24.css} +1 -0
- package/dist/Tooltip.cjs +3 -3
- package/dist/Tooltip.d.cts +2 -2
- package/dist/Tooltip.d.ts +2 -2
- package/dist/Tooltip.js +2 -2
- 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-N73JGXYZ.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-RZ2E3XEU.cjs → chunk-3XIDJEYR.cjs} +21 -6
- package/dist/chunk-3XIDJEYR.cjs.map +1 -0
- package/dist/{chunk-UQB5OHMO.js → chunk-44AVDO3T.js} +27 -19
- package/dist/chunk-44AVDO3T.js.map +1 -0
- package/dist/chunk-474MXYO5.cjs +108 -0
- package/dist/chunk-474MXYO5.cjs.map +1 -0
- package/dist/{chunk-XCYE4OQV.js → chunk-4DNHASZU.js} +10 -8
- package/dist/chunk-4DNHASZU.js.map +1 -0
- package/dist/{chunk-OM76QWUN.js → chunk-4JHFGSNH.js} +24 -13
- package/dist/chunk-4JHFGSNH.js.map +1 -0
- package/dist/{chunk-6Z24VO3K.js → chunk-4XSP4HHZ.js} +18 -8
- package/dist/chunk-4XSP4HHZ.js.map +1 -0
- package/dist/{chunk-CTYW42GG.js → chunk-5VIOJW6M.js} +142 -129
- package/dist/chunk-5VIOJW6M.js.map +1 -0
- package/dist/{chunk-O7C6S644.js → chunk-6CAEGNCK.js} +10 -8
- package/dist/chunk-6CAEGNCK.js.map +1 -0
- package/dist/{chunk-JXHMJUVI.js → chunk-6FSOJLY6.js} +3 -3
- package/dist/{chunk-JXHMJUVI.js.map → chunk-6FSOJLY6.js.map} +1 -1
- package/dist/{chunk-LLNEDEST.cjs → chunk-6TRVGFFX.cjs} +18 -7
- 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-V2DIQ3RH.js → chunk-ANAQER3T.js} +21 -6
- package/dist/chunk-ANAQER3T.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-QOGROEVD.js → chunk-BSHHQOFY.js} +27 -21
- 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-LXNR6TQK.js → chunk-D242UJZO.js} +14 -11
- package/dist/chunk-D242UJZO.js.map +1 -0
- package/dist/{chunk-AESLEYST.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-YCHUHMNP.cjs → chunk-DH4NYYJP.cjs} +46 -20
- package/dist/chunk-DH4NYYJP.cjs.map +1 -0
- package/dist/{chunk-ZFJHUOFU.js → chunk-DUNQNSVK.js} +21 -11
- 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-HJIKU6MF.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-7M7NAMR5.js → chunk-FSOJHDXH.js} +18 -7
- package/dist/chunk-FSOJHDXH.js.map +1 -0
- package/dist/{chunk-BCPAY65C.cjs → chunk-HHSVGNJA.cjs} +7 -7
- package/dist/chunk-HHSVGNJA.cjs.map +1 -0
- package/dist/{chunk-WVBFQB26.cjs → chunk-HQO7EZNQ.cjs} +24 -14
- package/dist/chunk-HQO7EZNQ.cjs.map +1 -0
- package/dist/{chunk-MDQNUKCP.cjs → chunk-IL523MTN.cjs} +146 -133
- package/dist/chunk-IL523MTN.cjs.map +1 -0
- package/dist/{chunk-SMHXSEBD.cjs → chunk-JAGJQDAV.cjs} +22 -13
- package/dist/chunk-JAGJQDAV.cjs.map +1 -0
- package/dist/{chunk-RWHWEQQX.cjs → chunk-JF2WNLPF.cjs} +6 -6
- package/dist/{chunk-RWHWEQQX.cjs.map → chunk-JF2WNLPF.cjs.map} +1 -1
- package/dist/chunk-JS6U7UQS.js +86 -0
- package/dist/chunk-JS6U7UQS.js.map +1 -0
- package/dist/{chunk-TZXEZFCI.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-E62JFAHW.js → chunk-LSQD2GFA.js} +4 -4
- package/dist/chunk-LSQD2GFA.js.map +1 -0
- package/dist/{chunk-77TZHI76.cjs → chunk-MU4GGX6C.cjs} +14 -12
- package/dist/chunk-MU4GGX6C.cjs.map +1 -0
- package/dist/{chunk-IOWREUEP.js → chunk-MXIWTYNC.js} +17 -7
- 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-VQBZKRIB.cjs → chunk-P4CGE5C7.cjs} +19 -9
- package/dist/chunk-P4CGE5C7.cjs.map +1 -0
- package/dist/{chunk-TZLM5GF4.js → chunk-PX5ABNKV.js} +19 -10
- package/dist/chunk-PX5ABNKV.js.map +1 -0
- package/dist/{chunk-RQV7SMIZ.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-6XZ362VL.js → chunk-RHZOBQON.js} +36 -15
- package/dist/chunk-RHZOBQON.js.map +1 -0
- package/dist/chunk-RNVE2LMJ.cjs +162 -0
- 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-NN7WMXY4.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-KW7Z4IQC.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-XYVJ3FBQ.cjs → chunk-V24B7KWT.cjs} +12 -10
- package/dist/chunk-V24B7KWT.cjs.map +1 -0
- package/dist/{chunk-3BZ47QNV.cjs → chunk-V5KSJITO.cjs} +7 -7
- package/dist/{chunk-3BZ47QNV.cjs.map → chunk-V5KSJITO.cjs.map} +1 -1
- package/dist/{chunk-YFBHVTKN.cjs → chunk-WFFWVQK4.cjs} +7 -7
- package/dist/{chunk-YFBHVTKN.cjs.map → chunk-WFFWVQK4.cjs.map} +1 -1
- package/dist/{chunk-I7WLFADD.js → chunk-WLFMOWUY.js} +3 -3
- package/dist/{chunk-I7WLFADD.js.map → chunk-WLFMOWUY.js.map} +1 -1
- package/dist/{chunk-I2HHC6QW.js → chunk-X3QINITU.js} +17 -6
- package/dist/chunk-X3QINITU.js.map +1 -0
- package/dist/{chunk-2ENTRT7R.cjs → chunk-XMFVAYBP.cjs} +20 -9
- package/dist/chunk-XMFVAYBP.cjs.map +1 -0
- package/dist/{chunk-HXSAH4Y6.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-XYGRVPUA.js +140 -0
- 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-FFZLSY2N.js → chunk-YRAQRENN.js} +40 -13
- package/dist/chunk-YRAQRENN.js.map +1 -0
- package/dist/{chunk-IJA26LRY.cjs → chunk-YVSZLQTQ.cjs} +19 -9
- package/dist/chunk-YVSZLQTQ.cjs.map +1 -0
- package/dist/{chunk-OZVPJWXO.cjs → chunk-ZA36BJIY.cjs} +41 -14
- 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-T4PI2ZX7.cjs → chunk-ZM4P6ELG.cjs} +46 -25
- package/dist/chunk-ZM4P6ELG.cjs.map +1 -0
- package/dist/{chunk-PKXXR76Q.js → chunk-ZN6VS6SO.js} +18 -13
- package/dist/chunk-ZN6VS6SO.js.map +1 -0
- package/dist/{chunk-FXQGPHK2.js → chunk-ZPDMAMWC.js} +21 -11
- package/dist/chunk-ZPDMAMWC.js.map +1 -0
- package/dist/{chunk-WUOFJPZ4.js → chunk-ZZXNHPF3.js} +3 -3
- package/dist/{chunk-WUOFJPZ4.js.map → chunk-ZZXNHPF3.js.map} +1 -1
- package/dist/index.cjs +98 -97
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +38 -37
- package/dist/index.js.map +1 -1
- package/dist/styles.css +136 -36
- package/docs/llms/appshell.md +36 -0
- package/docs/llms/popover.md +138 -6
- package/docs/llms/progress.md +10 -18
- package/docs/llms/timeline.md +140 -0
- package/docs/llms.md +9 -6
- package/package.json +80 -1
- package/dist/Popover-NYEKT5CQ.css +0 -10
- package/dist/Progress-IXRSO5TW.css +0 -63
- package/dist/chunk-2ENTRT7R.cjs.map +0 -1
- package/dist/chunk-33TIL25B.cjs.map +0 -1
- package/dist/chunk-3UU2PUK4.js +0 -66
- package/dist/chunk-3UU2PUK4.js.map +0 -1
- package/dist/chunk-47Z4NIU4.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-6GNFRP2H.js.map +0 -1
- package/dist/chunk-6XZ362VL.js.map +0 -1
- package/dist/chunk-6Z24VO3K.js.map +0 -1
- package/dist/chunk-77TZHI76.cjs.map +0 -1
- package/dist/chunk-7M7NAMR5.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-AESLEYST.js.map +0 -1
- package/dist/chunk-BCPAY65C.cjs.map +0 -1
- package/dist/chunk-CTYW42GG.js.map +0 -1
- package/dist/chunk-E62JFAHW.js.map +0 -1
- package/dist/chunk-FFZLSY2N.js.map +0 -1
- package/dist/chunk-FXQGPHK2.js.map +0 -1
- package/dist/chunk-GR5STMOA.js.map +0 -1
- package/dist/chunk-HJIKU6MF.cjs.map +0 -1
- package/dist/chunk-HXSAH4Y6.cjs.map +0 -1
- package/dist/chunk-I2HHC6QW.js.map +0 -1
- package/dist/chunk-IHACXMOI.js.map +0 -1
- package/dist/chunk-IJA26LRY.cjs.map +0 -1
- package/dist/chunk-IOWREUEP.js.map +0 -1
- package/dist/chunk-IZDJCEMF.cjs +0 -31
- package/dist/chunk-IZDJCEMF.cjs.map +0 -1
- package/dist/chunk-JSDQVVQB.js.map +0 -1
- package/dist/chunk-KW7Z4IQC.js.map +0 -1
- package/dist/chunk-LLNEDEST.cjs.map +0 -1
- package/dist/chunk-LXNR6TQK.js.map +0 -1
- package/dist/chunk-MDQNUKCP.cjs.map +0 -1
- package/dist/chunk-N73JGXYZ.cjs.map +0 -1
- package/dist/chunk-NN7WMXY4.cjs.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-O2HMH5BI.cjs +0 -88
- package/dist/chunk-O2HMH5BI.cjs.map +0 -1
- package/dist/chunk-O7C6S644.js.map +0 -1
- package/dist/chunk-OM76QWUN.js.map +0 -1
- package/dist/chunk-OWNVDXRQ.js.map +0 -1
- package/dist/chunk-OZVPJWXO.cjs.map +0 -1
- package/dist/chunk-PKXXR76Q.js.map +0 -1
- package/dist/chunk-QOGROEVD.js.map +0 -1
- package/dist/chunk-QVFEKGKI.cjs.map +0 -1
- package/dist/chunk-RFU5HN4E.js.map +0 -1
- package/dist/chunk-RQV7SMIZ.cjs.map +0 -1
- package/dist/chunk-RZ2E3XEU.cjs.map +0 -1
- package/dist/chunk-SMHXSEBD.cjs.map +0 -1
- package/dist/chunk-T4PI2ZX7.cjs.map +0 -1
- package/dist/chunk-TQLCIXCK.cjs.map +0 -1
- package/dist/chunk-TZLM5GF4.js.map +0 -1
- package/dist/chunk-TZXEZFCI.cjs.map +0 -1
- package/dist/chunk-UQB5OHMO.js.map +0 -1
- package/dist/chunk-V2DIQ3RH.js.map +0 -1
- package/dist/chunk-VQBZKRIB.cjs.map +0 -1
- package/dist/chunk-WDBJVKSR.js +0 -18
- package/dist/chunk-WDBJVKSR.js.map +0 -1
- package/dist/chunk-WVBFQB26.cjs.map +0 -1
- package/dist/chunk-WZ73TWB2.cjs.map +0 -1
- package/dist/chunk-XCYE4OQV.js.map +0 -1
- package/dist/chunk-XUT2Z2L6.cjs +0 -119
- package/dist/chunk-XUT2Z2L6.cjs.map +0 -1
- package/dist/chunk-XYVJ3FBQ.cjs.map +0 -1
- package/dist/chunk-YCHUHMNP.cjs.map +0 -1
- package/dist/chunk-YZ2I7CDF.cjs.map +0 -1
- package/dist/chunk-ZFJHUOFU.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Empty/Empty.tsx"],"names":[],"mappings":"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","file":"chunk-A3IJM7IX.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Empty.css\";\nimport * as React from \"react\";\n\nexport interface EmptyProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n /** `subtle` drops the recessed icon well — good for inline / embedded use. */\n variant?: \"default\" | \"subtle\";\n className?: string;\n}\n\n/** `Empty` — empty state placeholder. */\nexport const Empty = React.forwardRef<HTMLDivElement, EmptyProps>(({\n title = \"暂无内容\",\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n className = \"\",\n ...rest\n}, ref) => (\n <div ref={ref} className={`empty ${size} ${variant} ${className}`} {...rest}>\n {icon && <div className=\"empty-ico\">{icon}</div>}\n <div className=\"empty-title\">{title}</div>\n {description && <div className=\"empty-desc\">{description}</div>}\n {action && <div className=\"empty-action\">{action}</div>}\n </div>\n));\nEmpty.displayName = \"Empty\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: number;\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\" | \"current\";\n /** Text rendered next to the spinner. */\n label?: React.ReactNode;\n /** `ring` is the default border spinner; `dots` is a three-dot bounce. */\n variant?: \"ring\" | \"dots\";\n className?: string;\n}\n\n/** `Spinner` — loading indicator. */\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(({\n size = 20,\n tone = \"accent\",\n label,\n variant = \"ring\",\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const cls = `spinner ${variant} ${tone} ${className}`.trim();\n const spinnerStyle =\n variant === \"dots\"\n ? ({ fontSize: size, ...style } as React.CSSProperties)\n : ({ width: size, height: size, ...style } as React.CSSProperties);\n const spinner =\n variant === \"dots\" ? (\n <span className={cls} style={spinnerStyle} aria-label=\"Loading\">\n <i /><i /><i />\n </span>\n ) : (\n <span\n className={cls}\n style={spinnerStyle}\n aria-label=\"Loading\"\n />\n );\n if (!label) {\n return React.cloneElement(spinner, {\n ref,\n ...rest,\n });\n }\n return (\n <span ref={ref} className=\"spinner-wrap\" style={style} {...rest}>\n {spinner}\n <span className=\"spinner-label\">{label}</span>\n </span>\n );\n});\nSpinner.displayName = \"Spinner\";\n\nexport interface SkeletonAvatarConfig {\n shape?: \"circle\" | \"square\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport interface SkeletonTitleConfig {\n width?: number | string;\n}\n\nexport interface SkeletonParagraphConfig {\n rows?: number;\n width?: (number | string)[];\n}\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n /* -------- primitive mode -------- */\n width?: number | string;\n height?: number | string;\n circle?: boolean;\n /** `wave` is a shimmer sweep; `pulse` fades opacity; `none` disables animation. */\n animation?: \"wave\" | \"pulse\" | \"none\";\n\n /* -------- composite mode -------- */\n /**\n * Render an avatar skeleton on the left. `true` gives the defaults (circle, md).\n * @example avatar\n * @example avatar={{ shape: \"square\", size: \"lg\" }}\n */\n avatar?: boolean | SkeletonAvatarConfig;\n /**\n * Render a title line skeleton. Defaults to `true` whenever the composite layout is active\n * (any of `avatar` / `paragraph` / `title` is set).\n */\n title?: boolean | SkeletonTitleConfig;\n /**\n * Render N paragraph lines. `true` gives 3 rows; passing `width` arrays lets you\n * control per-row widths (last row defaults to 60%).\n */\n paragraph?: boolean | SkeletonParagraphConfig;\n\n className?: string;\n}\n\nconst AVATAR_SIZE_PX = { sm: 32, md: 40, lg: 56 } as const;\n\n/**\n * `Skeleton` — content placeholder during loading.\n *\n * Two modes:\n * - **Primitive** (no composite prop set): renders a single block using `width` / `height` / `circle`.\n * - **Composite** (`avatar` / `title` / `paragraph`): renders the Ant-Design-style avatar + title + paragraph layout.\n *\n * @example\n * // primitive\n * <Skeleton height={14} width=\"60%\" />\n * @example\n * // composite\n * <Skeleton avatar title paragraph={{ rows: 4 }} />\n */\nexport const Skeleton = React.forwardRef<HTMLElement, SkeletonProps>(({\n width = \"100%\",\n height = 16,\n circle,\n animation = \"wave\",\n avatar,\n title,\n paragraph,\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const composite = avatar != null || title != null || paragraph != null;\n\n if (!composite) {\n return (\n <span\n ref={ref as React.ForwardedRef<HTMLSpanElement>}\n className={`skeleton ${animation} ${circle ? \"circle\" : \"\"} ${className}`.trim()}\n style={{ width, height, borderRadius: circle ? \"50%\" : undefined, ...style }}\n {...rest}\n />\n );\n }\n\n // --- composite mode ---\n const avatarCfg: SkeletonAvatarConfig | null =\n avatar === true ? {} : avatar === false || avatar == null ? null : avatar;\n const titleCfg: SkeletonTitleConfig | null =\n title === false ? null : title === true || title == null ? {} : title;\n const paragraphCfg: SkeletonParagraphConfig | null =\n paragraph === false ? null : paragraph === true || paragraph == null ? {} : paragraph;\n\n const rows = paragraphCfg?.rows ?? 3;\n const rowWidths = paragraphCfg?.width ?? [];\n const resolveRowWidth = (idx: number): number | string => {\n if (idx < rowWidths.length) return rowWidths[idx];\n if (idx === rows - 1) return \"60%\";\n return \"100%\";\n };\n\n const avatarPx =\n avatarCfg != null ? AVATAR_SIZE_PX[avatarCfg.size ?? \"md\"] : 0;\n const avatarShape = avatarCfg?.shape ?? \"circle\";\n\n return (\n <div\n ref={ref as React.ForwardedRef<HTMLDivElement>}\n className={`skeleton-box ${className}`.trim()}\n style={style as React.CSSProperties | undefined}\n {...rest}\n >\n {avatarCfg && (\n <span\n className={`skeleton ${animation} ${avatarShape === \"circle\" ? \"circle\" : \"\"} skeleton-avatar`.trim()}\n style={{\n width: avatarPx,\n height: avatarPx,\n borderRadius: avatarShape === \"circle\" ? \"50%\" : undefined,\n flexShrink: 0,\n }}\n />\n )}\n <div className=\"skeleton-content\">\n {titleCfg && (\n <span\n className={`skeleton ${animation} skeleton-title`.trim()}\n style={{ width: titleCfg.width ?? \"38%\", height: 16 }}\n />\n )}\n {paragraphCfg &&\n Array.from({ length: rows }).map((_, i) => (\n <span\n key={i}\n className={`skeleton ${animation} skeleton-row`.trim()}\n style={{ width: resolveRowWidth(i), height: 12 }}\n />\n ))}\n </div>\n </div>\n );\n});\nSkeleton.displayName = \"Skeleton\";\n"]}
|
|
@@ -3,6 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
// src/utils/useFloating.ts
|
|
4
4
|
function useFloating(opts) {
|
|
5
5
|
const triggerRef = React.useRef(null);
|
|
6
|
+
const floatingRef = React.useRef(null);
|
|
6
7
|
const preferred = opts.placement ?? "bottom";
|
|
7
8
|
const gap = opts.gap ?? 8;
|
|
8
9
|
const panelW = opts.panelWidth ?? 240;
|
|
@@ -18,9 +19,12 @@ function useFloating(opts) {
|
|
|
18
19
|
const update = () => {
|
|
19
20
|
const el = triggerRef.current;
|
|
20
21
|
if (!el) return;
|
|
22
|
+
const floatingRect = floatingRef.current?.getBoundingClientRect();
|
|
21
23
|
const rect = el.getBoundingClientRect();
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
+
const measuredW = floatingRect?.width && floatingRect.width > 0 ? floatingRect.width : void 0;
|
|
25
|
+
const measuredH = floatingRect?.height && floatingRect.height > 0 ? floatingRect.height : void 0;
|
|
26
|
+
const w = matchW ? rect.width : measuredW ?? panelW;
|
|
27
|
+
const h = measuredH ?? panelH;
|
|
24
28
|
const vw = window.innerWidth;
|
|
25
29
|
const vh = window.innerHeight;
|
|
26
30
|
const MARGIN = 8;
|
|
@@ -83,11 +87,17 @@ function useFloating(opts) {
|
|
|
83
87
|
update();
|
|
84
88
|
window.addEventListener("scroll", update, true);
|
|
85
89
|
window.addEventListener("resize", update);
|
|
90
|
+
const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
|
|
91
|
+
if (ro) {
|
|
92
|
+
if (triggerRef.current) ro.observe(triggerRef.current);
|
|
93
|
+
if (floatingRef.current) ro.observe(floatingRef.current);
|
|
94
|
+
}
|
|
86
95
|
return () => {
|
|
87
96
|
window.removeEventListener("scroll", update, true);
|
|
88
97
|
window.removeEventListener("resize", update);
|
|
98
|
+
ro?.disconnect();
|
|
89
99
|
};
|
|
90
|
-
}, [open, preferred, gap, panelW, panelH, doShift, doFlip, matchW]);
|
|
100
|
+
}, [open, preferred, gap, panelW, panelH, doShift, doFlip, matchW, align]);
|
|
91
101
|
let transform;
|
|
92
102
|
if (align !== "start") {
|
|
93
103
|
const cross = state.placement === "top" || state.placement === "bottom" ? "X" : "Y";
|
|
@@ -101,9 +111,14 @@ function useFloating(opts) {
|
|
|
101
111
|
...state.width != null ? { width: state.width } : {},
|
|
102
112
|
...transform ? { transform } : {}
|
|
103
113
|
};
|
|
104
|
-
return {
|
|
114
|
+
return {
|
|
115
|
+
triggerRef,
|
|
116
|
+
floatingRef,
|
|
117
|
+
floatingStyle,
|
|
118
|
+
placement: state.placement
|
|
119
|
+
};
|
|
105
120
|
}
|
|
106
121
|
|
|
107
122
|
export { useFloating };
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-ANAQER3T.js.map
|
|
124
|
+
//# sourceMappingURL=chunk-ANAQER3T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/useFloating.ts"],"names":[],"mappings":"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","file":"chunk-ANAQER3T.js","sourcesContent":["import * as React from \"react\";\n\nexport type Placement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface UseFloatingOptions {\n /** Whether the floating element is currently visible. */\n open: boolean;\n /** Preferred placement relative to the trigger. Default `\"bottom\"`. */\n placement?: Placement;\n /** Distance between trigger and panel in px. Default 8. */\n gap?: number;\n /** Estimated panel width, used for flip / shift math. Ignored when `matchTriggerWidth`. */\n panelWidth?: number;\n /** Estimated panel height, used for flip / shift math. */\n panelHeight?: number;\n /** Keep the panel inside the viewport horizontally / vertically. Default true. */\n shift?: boolean;\n /** Flip to the opposite side if the preferred side would overflow. Default true. */\n flip?: boolean;\n /** Make the panel width track the trigger width (used by Select / Cascader). */\n matchTriggerWidth?: boolean;\n /**\n * Cross-axis alignment of the panel relative to the trigger.\n * - `\"start\"` (default) — panel's leading edge lines up with trigger's leading edge.\n * - `\"center\"` — panel is centered on the trigger (uses a CSS transform).\n * - `\"end\"` — panel's trailing edge lines up with trigger's trailing edge.\n *\n * `shift` is ignored for non-`\"start\"` alignments to avoid tugging against the\n * caller's translate.\n */\n alignCross?: \"start\" | \"center\" | \"end\";\n}\n\nexport interface UseFloatingResult<\n T extends HTMLElement,\n F extends HTMLElement\n> {\n /** Attach this to the trigger element. */\n triggerRef: React.RefObject<T>;\n /** Attach this to the floating element so placement can use its real size. */\n floatingRef: React.RefObject<F>;\n /** Spread this onto the panel element. Already contains `position: fixed` + coords. */\n floatingStyle: React.CSSProperties;\n /** Resolved placement after flip logic — useful for arrow direction. */\n placement: Placement;\n}\n\n/**\n * Minimal floating-element positioning hook used by Tooltip / Popover / Select /\n * Cascader / ColorPicker. Designed to be paired with `createPortal(document.body)`\n * so overflow clipping from ancestors becomes a non-issue.\n *\n * Not a general-purpose `@floating-ui` replacement — it only covers flip + shift\n * relative to the viewport, which is what Lumina's overlays need.\n */\nexport function useFloating<\n T extends HTMLElement = HTMLElement,\n F extends HTMLElement = HTMLElement\n>(\n opts: UseFloatingOptions\n): UseFloatingResult<T, F> {\n const triggerRef = React.useRef<T>(null);\n const floatingRef = React.useRef<F>(null);\n const preferred = opts.placement ?? \"bottom\";\n const gap = opts.gap ?? 8;\n const panelW = opts.panelWidth ?? 240;\n const panelH = opts.panelHeight ?? 300;\n const doShift = opts.shift !== false;\n const doFlip = opts.flip !== false;\n const matchW = !!opts.matchTriggerWidth;\n const align = opts.alignCross ?? \"start\";\n const open = opts.open;\n\n const [state, setState] = React.useState<{\n top: number;\n left: number;\n width?: number;\n placement: Placement;\n }>({ top: 0, left: 0, placement: preferred });\n\n React.useLayoutEffect(() => {\n if (!open) return;\n const update = () => {\n const el = triggerRef.current;\n if (!el) return;\n\n const floatingRect = floatingRef.current?.getBoundingClientRect();\n const rect = el.getBoundingClientRect();\n const measuredW = floatingRect?.width && floatingRect.width > 0 ? floatingRect.width : undefined;\n const measuredH = floatingRect?.height && floatingRect.height > 0 ? floatingRect.height : undefined;\n const w = matchW ? rect.width : (measuredW ?? panelW);\n const h = measuredH ?? panelH;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const MARGIN = 8;\n\n const place = (p: Placement) => {\n switch (p) {\n case \"top\":\n return { top: rect.top - gap - h, left: rect.left };\n case \"right\":\n return { top: rect.top, left: rect.right + gap };\n case \"left\":\n return { top: rect.top, left: rect.left - gap - w };\n case \"bottom\":\n default:\n return { top: rect.bottom + gap, left: rect.left };\n }\n };\n\n const fits = (p: Placement, c: { top: number; left: number }) => {\n if (p === \"bottom\") return c.top + h <= vh - MARGIN;\n if (p === \"top\") return c.top >= MARGIN;\n if (p === \"right\") return c.left + w <= vw - MARGIN;\n if (p === \"left\") return c.left >= MARGIN;\n return true;\n };\n\n let resolved: Placement = preferred;\n let coords = place(resolved);\n\n if (doFlip && !fits(resolved, coords)) {\n const opp: Record<Placement, Placement> = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\",\n };\n const alt = opp[resolved];\n const altCoords = place(alt);\n if (fits(alt, altCoords)) {\n resolved = alt;\n coords = altCoords;\n }\n }\n\n // Cross-axis alignment replaces the cross coordinate with the trigger\n // midpoint / far edge; the paired CSS transform then visually aligns.\n if (align !== \"start\") {\n if (resolved === \"top\" || resolved === \"bottom\") {\n coords.left =\n align === \"center\" ? rect.left + rect.width / 2 : rect.right;\n } else {\n coords.top =\n align === \"center\" ? rect.top + rect.height / 2 : rect.bottom;\n }\n } else if (doShift) {\n if (resolved === \"bottom\" || resolved === \"top\") {\n coords.left = Math.max(MARGIN, Math.min(coords.left, vw - w - MARGIN));\n } else {\n coords.top = Math.max(MARGIN, Math.min(coords.top, vh - h - MARGIN));\n }\n }\n\n setState({\n top: coords.top,\n left: coords.left,\n width: matchW ? rect.width : undefined,\n placement: resolved,\n });\n };\n\n update();\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n const ro =\n typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(update) : null;\n if (ro) {\n if (triggerRef.current) ro.observe(triggerRef.current);\n if (floatingRef.current) ro.observe(floatingRef.current);\n }\n return () => {\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n ro?.disconnect();\n };\n }, [open, preferred, gap, panelW, panelH, doShift, doFlip, matchW, align]);\n\n let transform: string | undefined;\n if (align !== \"start\") {\n const cross = state.placement === \"top\" || state.placement === \"bottom\" ? \"X\" : \"Y\";\n const percent = align === \"center\" ? \"-50%\" : \"-100%\";\n transform = `translate${cross}(${percent})`;\n }\n\n const floatingStyle: React.CSSProperties = {\n position: \"fixed\",\n top: state.top,\n left: state.left,\n ...(state.width != null ? { width: state.width } : {}),\n ...(transform ? { transform } : {}),\n };\n\n return {\n triggerRef,\n floatingRef,\n floatingStyle,\n placement: state.placement,\n };\n}\n"]}
|
|
@@ -33,12 +33,16 @@ var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
|
|
|
33
33
|
// src/components/ContextMenu/ContextMenu.tsx
|
|
34
34
|
var ESTIMATED_ITEM_H = 32;
|
|
35
35
|
var MARGIN = 8;
|
|
36
|
-
var ContextMenu = ({
|
|
36
|
+
var ContextMenu = React__namespace.forwardRef(({
|
|
37
37
|
items,
|
|
38
38
|
children,
|
|
39
39
|
disabled,
|
|
40
|
-
minWidth = 180
|
|
41
|
-
|
|
40
|
+
minWidth = 180,
|
|
41
|
+
className = "",
|
|
42
|
+
style,
|
|
43
|
+
onContextMenu,
|
|
44
|
+
...rest
|
|
45
|
+
}, ref) => {
|
|
42
46
|
const [open, setOpen] = React__namespace.useState(false);
|
|
43
47
|
const [pos, setPos] = React__namespace.useState({ top: 0, left: 0 });
|
|
44
48
|
const [active, setActive] = React__namespace.useState(-1);
|
|
@@ -121,7 +125,20 @@ var ContextMenu = ({
|
|
|
121
125
|
e.preventDefault();
|
|
122
126
|
openAt(e.clientX, e.clientY);
|
|
123
127
|
};
|
|
124
|
-
const trigger = /* @__PURE__ */ jsxRuntime.jsx(
|
|
128
|
+
const trigger = /* @__PURE__ */ jsxRuntime.jsx(
|
|
129
|
+
"span",
|
|
130
|
+
{
|
|
131
|
+
ref,
|
|
132
|
+
className,
|
|
133
|
+
style: { display: "contents", ...style },
|
|
134
|
+
onContextMenu: (e) => {
|
|
135
|
+
onContextMenu?.(e);
|
|
136
|
+
handleTriggerContextMenu(e);
|
|
137
|
+
},
|
|
138
|
+
...rest,
|
|
139
|
+
children
|
|
140
|
+
}
|
|
141
|
+
);
|
|
125
142
|
const panel = open && typeof document !== "undefined" ? ReactDOM__default.default.createPortal(
|
|
126
143
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
127
144
|
"div",
|
|
@@ -167,8 +184,9 @@ var ContextMenu = ({
|
|
|
167
184
|
trigger,
|
|
168
185
|
panel
|
|
169
186
|
] });
|
|
170
|
-
};
|
|
187
|
+
});
|
|
188
|
+
ContextMenu.displayName = "ContextMenu";
|
|
171
189
|
|
|
172
190
|
exports.ContextMenu = ContextMenu;
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-AXRABZLY.cjs.map
|
|
192
|
+
//# sourceMappingURL=chunk-AXRABZLY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":["React","jsx","ReactDOM","jsxs","Fragment"],"mappings":"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","file":"chunk-AXRABZLY.cjs","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,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
|
|
3
4
|
// src/components/Icon/Icon.tsx
|
|
4
5
|
var paths = {
|
|
@@ -138,27 +139,32 @@ var paths = {
|
|
|
138
139
|
/* @__PURE__ */ jsx("path", { d: "M12 2c-3 0-5 2.1-5 5 0 1.3.4 2.6.9 3.6-1.8 1-3.4 3-3.4 5.9 0 .8.7 1.5 1.5 1.5 0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2 .8 0 1.5-.7 1.5-1.5 0-2.9-1.6-4.9-3.4-5.9.5-1 .9-2.3.9-3.6 0-2.9-2-5-5-5z" }),
|
|
139
140
|
/* @__PURE__ */ jsx("circle", { cx: "10", cy: "9", r: "0.8", fill: "currentColor", stroke: "none" }),
|
|
140
141
|
/* @__PURE__ */ jsx("circle", { cx: "14", cy: "9", r: "0.8", fill: "currentColor", stroke: "none" })
|
|
141
|
-
] })
|
|
142
|
+
] }),
|
|
143
|
+
code: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("path", { d: "m16 18 6-6-6-6M8 6l-6 6 6 6" }) })
|
|
142
144
|
};
|
|
143
|
-
var Icon = (
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
145
|
+
var Icon = React.forwardRef(
|
|
146
|
+
({ name, size = 16, stroke = 2, style, ...rest }, ref) => /* @__PURE__ */ jsx(
|
|
147
|
+
"svg",
|
|
148
|
+
{
|
|
149
|
+
ref,
|
|
150
|
+
width: size,
|
|
151
|
+
height: size,
|
|
152
|
+
viewBox: "0 0 24 24",
|
|
153
|
+
fill: "none",
|
|
154
|
+
stroke: "currentColor",
|
|
155
|
+
strokeWidth: stroke,
|
|
156
|
+
strokeLinecap: "round",
|
|
157
|
+
strokeLinejoin: "round",
|
|
158
|
+
overflow: "visible",
|
|
159
|
+
style,
|
|
160
|
+
...rest,
|
|
161
|
+
children: paths[name]
|
|
162
|
+
}
|
|
163
|
+
)
|
|
159
164
|
);
|
|
160
|
-
|
|
165
|
+
Icon.displayName = "Icon";
|
|
166
|
+
var ICON_NAMES = ["search", "plus", "minus", "check", "x", "chevDown", "chevRight", "chevLeft", "chevUp", "arrowRight", "settings", "user", "bell", "mail", "heart", "star", "home", "folder", "file", "image", "play", "pause", "volume", "trash", "edit", "copy", "download", "upload", "info", "alert", "check2", "eye", "eyeOff", "sparkle", "moon", "sun", "palette", "layers", "grid", "list", "zap", "filter", "mic", "send", "calendar", "clock", "menu", "more", "sliders", "aim", "swap", "camera", "qq", "code"];
|
|
161
167
|
|
|
162
168
|
export { ICON_NAMES, Icon };
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
164
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-BSHHQOFY.js.map
|
|
170
|
+
//# sourceMappingURL=chunk-BSHHQOFY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Icon/Icon.tsx"],"names":[],"mappings":"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","file":"chunk-BSHHQOFY.js","sourcesContent":["import * as React from \"react\";\n\n/**\n * Name of a built-in icon. To add your own, pass `children` (raw SVG paths) instead.\n */\nexport type IconName =\n | \"search\"\n | \"plus\"\n | \"minus\"\n | \"check\"\n | \"x\"\n | \"chevDown\"\n | \"chevRight\"\n | \"chevLeft\"\n | \"chevUp\"\n | \"arrowRight\"\n | \"settings\"\n | \"user\"\n | \"bell\"\n | \"mail\"\n | \"heart\"\n | \"star\"\n | \"home\"\n | \"folder\"\n | \"file\"\n | \"image\"\n | \"play\"\n | \"pause\"\n | \"volume\"\n | \"trash\"\n | \"edit\"\n | \"copy\"\n | \"download\"\n | \"upload\"\n | \"info\"\n | \"alert\"\n | \"check2\"\n | \"eye\"\n | \"eyeOff\"\n | \"sparkle\"\n | \"moon\"\n | \"sun\"\n | \"palette\"\n | \"layers\"\n | \"grid\"\n | \"list\"\n | \"zap\"\n | \"filter\"\n | \"mic\"\n | \"send\"\n | \"calendar\"\n | \"clock\"\n | \"menu\"\n | \"more\"\n | \"sliders\"\n | \"aim\"\n | \"swap\"\n | \"camera\"\n | \"qq\"\n | \"code\";\n\nexport interface IconProps extends Omit<React.SVGAttributes<SVGSVGElement>, \"stroke\"> {\n name: IconName;\n size?: number;\n stroke?: number;\n}\n\nconst paths: Record<IconName, React.ReactNode> = {\nsearch: <><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/></>,\n plus: <><path d=\"M12 5v14M5 12h14\"/></>,\n minus: <><path d=\"M5 12h14\"/></>,\n check: <><path d=\"m4 12 5 5L20 6\"/></>,\n x: <><path d=\"M6 6l12 12M18 6 6 18\"/></>,\n chevDown: <><path d=\"m6 9 6 6 6-6\"/></>,\n chevRight: <><path d=\"m9 6 6 6-6 6\"/></>,\n chevLeft: <><path d=\"m15 6-6 6 6 6\"/></>,\n chevUp: <><path d=\"m6 15 6-6 6 6\"/></>,\n arrowRight:<><path d=\"M5 12h14M13 6l6 6-6 6\"/></>,\n settings: <><path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n user: <><circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M4 21a8 8 0 0 1 16 0\"/></>,\n bell: <><path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"/><path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"/></>,\n mail: <><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"m3 7 9 6 9-6\"/></>,\n heart: <><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></>,\n star: <><path d=\"m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"/></>,\n home: <><path d=\"m3 10 9-7 9 7v10a2 2 0 0 1-2 2h-4v-7h-6v7H5a2 2 0 0 1-2-2z\"/></>,\n folder: <><path d=\"M3 7a2 2 0 0 1 2-2h4l2 3h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/></>,\n file: <><path d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"/><path d=\"M14 3v6h6\"/></>,\n image: <><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-5-5L5 21\"/></>,\n play: <><path d=\"M7 5v14l11-7z\" fill=\"currentColor\" stroke=\"none\"/></>,\n pause: <><path d=\"M6 4h4v16H6zM14 4h4v16h-4z\" fill=\"currentColor\" stroke=\"none\"/></>,\n volume: <><path d=\"M11 5 6 9H3v6h3l5 4z\"/><path d=\"M17 8a5 5 0 0 1 0 8M20 5a9 9 0 0 1 0 14\"/></>,\n trash: <><path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14\"/></>,\n edit: <><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z\"/></>,\n copy: <><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></>,\n download: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"/></>,\n upload: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12\"/></>,\n info: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4M12 8h.01\"/></>,\n alert: <><path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01\"/></>,\n check2: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/></>,\n eye: <><path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n eyeOff: <><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a19 19 0 0 1 5.17-6M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a19 19 0 0 1-2.16 3.19M14.12 14.12a3 3 0 1 1-4.24-4.24M1 1l22 22\"/></>,\n sparkle: <><path d=\"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8\"/></>,\n moon: <><path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/></>,\n sun: <><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41\"/></>,\n palette: <><circle cx=\"13.5\" cy=\"6.5\" r=\"1\"/><circle cx=\"17.5\" cy=\"10.5\" r=\"1\"/><circle cx=\"8.5\" cy=\"7.5\" r=\"1\"/><circle cx=\"6.5\" cy=\"12.5\" r=\"1\"/><path d=\"M12 2a10 10 0 1 0 0 20 3 3 0 0 0 0-6h-1a2 2 0 0 1 0-4h4a5 5 0 0 0 5-5 10 10 0 0 0-8-5z\"/></>,\n layers: <><path d=\"m12 2 10 6-10 6L2 8z\"/><path d=\"m2 17 10 6 10-6M2 12l10 6 10-6\"/></>,\n grid: <><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"/></>,\n list: <><path d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"/></>,\n zap: <><path d=\"M13 2 3 14h9l-1 8 10-12h-9z\"/></>,\n filter: <><path d=\"M22 3H2l8 9.46V19l4 2v-8.54z\"/></>,\n mic: <><rect x=\"9\" y=\"2\" width=\"6\" height=\"12\" rx=\"3\"/><path d=\"M19 10v1a7 7 0 0 1-14 0v-1M12 18v4M8 22h8\"/></>,\n send: <><path d=\"m22 2-7 20-4-9-9-4zM22 2 11 13\"/></>,\n calendar: <><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></>,\n clock: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/></>,\n menu: <><path d=\"M3 6h18M3 12h18M3 18h18\"/></>,\n more: <><circle cx=\"5\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"19\" cy=\"12\" r=\"1\"/></>,\n sliders: <><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></>,\n aim: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"/><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"/><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/></>,\n swap: <><path d=\"M3 8h18M17 4l4 4-4 4M21 16H3M7 20l-4-4 4-4\"/></>,\n camera: <><path d=\"M3 7h4l2-3h6l2 3h4a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z\"/><circle cx=\"12\" cy=\"13\" r=\"4\"/></>,\n qq: <><path d=\"M12 2c-3 0-5 2.1-5 5 0 1.3.4 2.6.9 3.6-1.8 1-3.4 3-3.4 5.9 0 .8.7 1.5 1.5 1.5 0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2 .8 0 1.5-.7 1.5-1.5 0-2.9-1.6-4.9-3.4-5.9.5-1 .9-2.3.9-3.6 0-2.9-2-5-5-5z\"/><circle cx=\"10\" cy=\"9\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"14\" cy=\"9\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\"/></>,\n code: <><path d=\"m16 18 6-6-6-6M8 6l-6 6 6 6\"/></>,\n};\n\n/**\n * `Icon` — stroked line icon set, sized in pixels, inherits `currentColor`.\n *\n * @example\n * <Icon name=\"plus\" size={18} />\n */\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size = 16, stroke = 2, style, ...rest }, ref) => (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n overflow=\"visible\"\n style={style}\n {...rest}\n >\n {paths[name]}\n </svg>\n )\n);\nIcon.displayName = \"Icon\";\n\nexport const ICON_NAMES: IconName[] = [\"search\", \"plus\", \"minus\", \"check\", \"x\", \"chevDown\", \"chevRight\", \"chevLeft\", \"chevUp\", \"arrowRight\", \"settings\", \"user\", \"bell\", \"mail\", \"heart\", \"star\", \"home\", \"folder\", \"file\", \"image\", \"play\", \"pause\", \"volume\", \"trash\", \"edit\", \"copy\", \"download\", \"upload\", \"info\", \"alert\", \"check2\", \"eye\", \"eyeOff\", \"sparkle\", \"moon\", \"sun\", \"palette\", \"layers\", \"grid\", \"list\", \"zap\", \"filter\", \"mic\", \"send\", \"calendar\", \"clock\", \"menu\", \"more\", \"sliders\", \"aim\", \"swap\", \"camera\", \"qq\", \"code\"];\n"]}
|
|
@@ -5,15 +5,16 @@ import * as React from 'react';
|
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
// src/components/Tabs/Tabs.tsx
|
|
8
|
-
var Tabs = ({
|
|
8
|
+
var Tabs = React.forwardRef(({
|
|
9
9
|
items,
|
|
10
10
|
activeKey,
|
|
11
11
|
defaultActiveKey,
|
|
12
12
|
onChange,
|
|
13
13
|
variant = "line",
|
|
14
14
|
centered,
|
|
15
|
-
className = ""
|
|
16
|
-
|
|
15
|
+
className = "",
|
|
16
|
+
...rest
|
|
17
|
+
}, ref) => {
|
|
17
18
|
const [inner, setInner] = React.useState(defaultActiveKey ?? items[0]?.key);
|
|
18
19
|
const isControlled = activeKey !== void 0;
|
|
19
20
|
const current = isControlled ? activeKey : inner;
|
|
@@ -22,7 +23,7 @@ var Tabs = ({
|
|
|
22
23
|
onChange?.(k);
|
|
23
24
|
};
|
|
24
25
|
const active = items.find((i) => i.key === current);
|
|
25
|
-
return /* @__PURE__ */ jsxs("div", { className: `tabs ${variant} ${centered ? "centered" : ""} ${className}`, children: [
|
|
26
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: `tabs ${variant} ${centered ? "centered" : ""} ${className}`, ...rest, children: [
|
|
26
27
|
/* @__PURE__ */ jsx("div", { className: "tabs-nav", role: "tablist", children: items.map((it) => /* @__PURE__ */ jsx(
|
|
27
28
|
"button",
|
|
28
29
|
{
|
|
@@ -38,15 +39,17 @@ var Tabs = ({
|
|
|
38
39
|
)) }),
|
|
39
40
|
active?.content !== void 0 && /* @__PURE__ */ jsx("div", { className: "tabs-content", children: active.content })
|
|
40
41
|
] });
|
|
41
|
-
};
|
|
42
|
-
|
|
42
|
+
});
|
|
43
|
+
Tabs.displayName = "Tabs";
|
|
44
|
+
var SegmentedInner = ({
|
|
43
45
|
options,
|
|
44
46
|
value,
|
|
45
47
|
defaultValue,
|
|
46
48
|
onChange,
|
|
47
49
|
size = "md",
|
|
48
|
-
className = ""
|
|
49
|
-
|
|
50
|
+
className = "",
|
|
51
|
+
...rest
|
|
52
|
+
}, ref) => {
|
|
50
53
|
const [inner, setInner] = React.useState(defaultValue ?? options[0]?.value);
|
|
51
54
|
const isControlled = value !== void 0;
|
|
52
55
|
const v = isControlled ? value : inner;
|
|
@@ -54,7 +57,7 @@ function Segmented({
|
|
|
54
57
|
if (!isControlled) setInner(next);
|
|
55
58
|
onChange?.(next);
|
|
56
59
|
};
|
|
57
|
-
return /* @__PURE__ */ jsx("div", { className: `segmented ${size} ${className}`, children: options.map((o) => /* @__PURE__ */ jsx(
|
|
60
|
+
return /* @__PURE__ */ jsx("div", { ref, className: `segmented ${size} ${className}`, ...rest, children: options.map((o) => /* @__PURE__ */ jsx(
|
|
58
61
|
"button",
|
|
59
62
|
{
|
|
60
63
|
type: "button",
|
|
@@ -65,8 +68,10 @@ function Segmented({
|
|
|
65
68
|
},
|
|
66
69
|
String(o.value)
|
|
67
70
|
)) });
|
|
68
|
-
}
|
|
71
|
+
};
|
|
72
|
+
var Segmented = React.forwardRef(SegmentedInner);
|
|
73
|
+
Segmented.displayName = "Segmented";
|
|
69
74
|
|
|
70
75
|
export { Segmented, Tabs };
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-CVEGVB2C.js.map
|
|
77
|
+
//# sourceMappingURL=chunk-CVEGVB2C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"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","file":"chunk-CVEGVB2C.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tabs.css\";\nimport * as React from \"react\";\n\nexport interface TabItem {\n key: string;\n label: React.ReactNode;\n disabled?: boolean;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n variant?: \"line\" | \"pill\" | \"segmented\";\n /** Center-align the tab bar horizontally. */\n centered?: boolean;\n className?: string;\n}\n\n/** `Tabs` — switchable sections. */\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n variant = \"line\",\n centered,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultActiveKey ?? items[0]?.key);\n const isControlled = activeKey !== undefined;\n const current = isControlled ? activeKey! : inner;\n\n const select = (k: string) => {\n if (!isControlled) setInner(k);\n onChange?.(k);\n };\n\n const active = items.find((i) => i.key === current);\n\n return (\n <div ref={ref} className={`tabs ${variant} ${centered ? \"centered\" : \"\"} ${className}`} {...rest}>\n <div className=\"tabs-nav\" role=\"tablist\">\n {items.map((it) => (\n <button\n key={it.key}\n type=\"button\"\n role=\"tab\"\n aria-selected={current === it.key}\n disabled={it.disabled}\n className={`tab ${current === it.key ? \"active\" : \"\"}`}\n onClick={() => select(it.key)}\n >\n {it.label}\n </button>\n ))}\n </div>\n {active?.content !== undefined && <div className=\"tabs-content\">{active.content}</div>}\n </div>\n );\n});\nTabs.displayName = \"Tabs\";\n\nexport interface SegmentedProps<T extends string = string>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n options: { value: T; label: React.ReactNode; disabled?: boolean }[];\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n size?: \"sm\" | \"md\";\n className?: string;\n}\n\ntype SegmentedComponent = <T extends string = string>(\n props: SegmentedProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n\nconst SegmentedInner = <T extends string = string>({\n options,\n value,\n defaultValue,\n onChange,\n size = \"md\",\n className = \"\",\n ...rest\n}: SegmentedProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const [inner, setInner] = React.useState<T | undefined>(defaultValue ?? options[0]?.value);\n const isControlled = value !== undefined;\n const v = isControlled ? value : inner;\n const pick = (next: T) => {\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n return (\n <div ref={ref} className={`segmented ${size} ${className}`} {...rest}>\n {options.map((o) => (\n <button\n key={String(o.value)}\n type=\"button\"\n disabled={o.disabled}\n className={`seg ${v === o.value ? \"active\" : \"\"}`}\n onClick={() => pick(o.value)}\n >\n {o.label}\n </button>\n ))}\n </div>\n );\n};\n\n/** `Segmented` — exclusive choice chip row. */\nexport const Segmented = React.forwardRef(SegmentedInner) as SegmentedComponent;\n(Segmented as any).displayName = \"Segmented\";\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Icon } from './chunk-
|
|
1
|
+
import { Icon } from './chunk-BSHHQOFY.js';
|
|
2
2
|
import './tokens-BIIUTPKN.css';
|
|
3
3
|
import './shared-NJHRNLRH.css';
|
|
4
4
|
import './Tag-FGDY3W7E.css';
|
|
5
|
+
import * as React from 'react';
|
|
5
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
7
|
|
|
7
|
-
var Tag = ({
|
|
8
|
+
var Tag = React.forwardRef(({
|
|
8
9
|
tone = "neutral",
|
|
9
10
|
solid,
|
|
10
11
|
dot,
|
|
@@ -15,7 +16,7 @@ var Tag = ({
|
|
|
15
16
|
className = "",
|
|
16
17
|
children,
|
|
17
18
|
...rest
|
|
18
|
-
}) => {
|
|
19
|
+
}, ref) => {
|
|
19
20
|
const cls = [
|
|
20
21
|
"tag",
|
|
21
22
|
tone,
|
|
@@ -23,7 +24,7 @@ var Tag = ({
|
|
|
23
24
|
!bordered && !solid && "borderless",
|
|
24
25
|
className
|
|
25
26
|
].filter(Boolean).join(" ");
|
|
26
|
-
return /* @__PURE__ */ jsxs("span", { className: cls, ...rest, children: [
|
|
27
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: cls, ...rest, children: [
|
|
27
28
|
dot && /* @__PURE__ */ jsx("span", { className: "dot" }),
|
|
28
29
|
icon && /* @__PURE__ */ jsx(Icon, { name: icon, size: 11, className: "tag-ico" }),
|
|
29
30
|
children,
|
|
@@ -41,22 +42,24 @@ var Tag = ({
|
|
|
41
42
|
}
|
|
42
43
|
)
|
|
43
44
|
] });
|
|
44
|
-
};
|
|
45
|
-
|
|
45
|
+
});
|
|
46
|
+
Tag.displayName = "Tag";
|
|
47
|
+
var Badge = React.forwardRef(({
|
|
46
48
|
count,
|
|
47
49
|
dot,
|
|
48
50
|
tone = "danger",
|
|
49
51
|
children,
|
|
50
52
|
className = "",
|
|
51
53
|
...rest
|
|
52
|
-
}) => {
|
|
54
|
+
}, ref) => {
|
|
53
55
|
const show = dot || typeof count === "number" && count > 0;
|
|
54
|
-
return /* @__PURE__ */ jsxs("span", { className: `badge-wrap ${className}`, ...rest, children: [
|
|
56
|
+
return /* @__PURE__ */ jsxs("span", { ref, className: `badge-wrap ${className}`, ...rest, children: [
|
|
55
57
|
children,
|
|
56
58
|
show && /* @__PURE__ */ jsx("span", { className: `badge ${tone} ${dot ? "dot" : ""}`, children: !dot && (count > 99 ? "99+" : count) })
|
|
57
59
|
] });
|
|
58
|
-
};
|
|
60
|
+
});
|
|
61
|
+
Badge.displayName = "Badge";
|
|
59
62
|
|
|
60
63
|
export { Badge, Tag };
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-D242UJZO.js.map
|
|
65
|
+
//# sourceMappingURL=chunk-D242UJZO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tag/Tag.tsx"],"names":[],"mappings":";;;;;;;AAwBO,IAAM,GAAA,GAAY,iBAAsC,CAAC;AAAA,EAC9D,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,IAAS,OAAA;AAAA,IACT,CAAC,QAAA,IAAY,CAAC,KAAA,IAAS,YAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,4BACG,MAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAW,GAAA,EAAM,GAAG,IAAA,EACjC,QAAA,EAAA;AAAA,IAAA,GAAA,oBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,CAAA;AAAA,IAC7B,IAAA,wBAAS,IAAA,EAAA,EAAK,IAAA,EAAM,MAAM,IAAA,EAAM,EAAA,EAAI,WAAU,SAAA,EAAU,CAAA;AAAA,IACxD,QAAA;AAAA,IACA,SAAA,oBACC,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,GAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,QAAA;AAAA,QACX,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,UAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,UAAA,QAAA,IAAW;AAAA,QACb,CAAA;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B,GAAA,EAEJ,CAAA;AAEJ,CAAC;AACD,GAAA,CAAI,WAAA,GAAc,KAAA;AAYX,IAAM,KAAA,GAAc,iBAAwC,CAAC;AAAA,EAClE,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,IAAA,GAAO,GAAA,IAAQ,OAAO,KAAA,KAAU,YAAY,KAAA,GAAQ,CAAA;AAC1D,EAAA,uBACE,IAAA,CAAC,UAAK,GAAA,EAAU,SAAA,EAAW,cAAc,SAAS,CAAA,CAAA,EAAK,GAAG,IAAA,EACvD,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,wBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,GAAA,GAAM,KAAA,GAAQ,EAAE,IAC/C,QAAA,EAAA,CAAC,GAAA,KAAQ,KAAA,GAAS,EAAA,GAAK,QAAQ,KAAA,CAAA,EAClC;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AACD,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-D242UJZO.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tag.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\nexport type TagTone = \"neutral\" | \"accent\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: TagTone;\n solid?: boolean;\n /** Render a leading colored dot. */\n dot?: boolean;\n /** Leading icon (uses the built-in `Icon` component). */\n icon?: IconName;\n /** Show a close button. */\n removable?: boolean;\n onRemove?: () => void;\n /** Whether to render the tag outline/flat shadow. Defaults to `true`. */\n bordered?: boolean;\n children?: React.ReactNode;\n}\n\n/** `Tag` — small label/pill. */\nexport const Tag = React.forwardRef<HTMLSpanElement, TagProps>(({\n tone = \"neutral\",\n solid,\n dot,\n icon,\n removable,\n onRemove,\n bordered = true,\n className = \"\",\n children,\n ...rest\n}, ref) => {\n const cls = [\n \"tag\",\n tone,\n solid && \"solid\",\n !bordered && !solid && \"borderless\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <span ref={ref} className={cls} {...rest}>\n {dot && <span className=\"dot\" />}\n {icon && <Icon name={icon} size={11} className=\"tag-ico\" />}\n {children}\n {removable && (\n <span\n className=\"x\"\n role=\"button\"\n aria-label=\"Remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n >\n <Icon name=\"x\" size={11} />\n </span>\n )}\n </span>\n );\n});\nTag.displayName = \"Tag\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Numeric count — renders as \"99+\" if > 99. */\n count?: number;\n /** Show a tiny dot instead of a number. */\n dot?: boolean;\n tone?: TagTone;\n children?: React.ReactNode;\n}\n\n/** `Badge` — notification dot / count. Wrap around another element. */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(({\n count,\n dot,\n tone = \"danger\",\n children,\n className = \"\",\n ...rest\n}, ref) => {\n const show = dot || (typeof count === \"number\" && count > 0);\n return (\n <span ref={ref} className={`badge-wrap ${className}`} {...rest}>\n {children}\n {show && (\n <span className={`badge ${tone} ${dot ? \"dot\" : \"\"}`}>\n {!dot && (count! > 99 ? \"99+\" : count)}\n </span>\n )}\n </span>\n );\n});\nBadge.displayName = \"Badge\";\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Select } from './chunk-
|
|
2
|
-
import { Icon } from './chunk-
|
|
1
|
+
import { Select } from './chunk-RHZOBQON.js';
|
|
2
|
+
import { Icon } from './chunk-BSHHQOFY.js';
|
|
3
3
|
import './tokens-BIIUTPKN.css';
|
|
4
4
|
import './shared-NJHRNLRH.css';
|
|
5
5
|
import './Pagination-YIRYJUXP.css';
|
|
@@ -7,7 +7,7 @@ import * as React from 'react';
|
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
9
|
var DEFAULT_SIZE_OPTIONS = [10, 20, 50, 100];
|
|
10
|
-
var Pagination = ({
|
|
10
|
+
var Pagination = React.forwardRef(({
|
|
11
11
|
total,
|
|
12
12
|
pageSize = 10,
|
|
13
13
|
page,
|
|
@@ -18,8 +18,9 @@ var Pagination = ({
|
|
|
18
18
|
showSizeChanger = false,
|
|
19
19
|
pageSizeOptions = DEFAULT_SIZE_OPTIONS,
|
|
20
20
|
onShowSizeChange,
|
|
21
|
-
className = ""
|
|
22
|
-
|
|
21
|
+
className = "",
|
|
22
|
+
...rest
|
|
23
|
+
}, ref) => {
|
|
23
24
|
const [inner, setInner] = React.useState(defaultPage);
|
|
24
25
|
const isControlled = page !== void 0;
|
|
25
26
|
const cur = isControlled ? page : inner;
|
|
@@ -57,7 +58,7 @@ var Pagination = ({
|
|
|
57
58
|
if (pages > 1) add(pages);
|
|
58
59
|
return out;
|
|
59
60
|
};
|
|
60
|
-
return /* @__PURE__ */ jsxs("div", { className: `pagination ${className}`, children: [
|
|
61
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: `pagination ${className}`, ...rest, children: [
|
|
61
62
|
/* @__PURE__ */ jsxs("span", { className: "pg-info", children: [
|
|
62
63
|
"\u5171 ",
|
|
63
64
|
total,
|
|
@@ -127,8 +128,9 @@ var Pagination = ({
|
|
|
127
128
|
] })
|
|
128
129
|
] })
|
|
129
130
|
] });
|
|
130
|
-
};
|
|
131
|
+
});
|
|
132
|
+
Pagination.displayName = "Pagination";
|
|
131
133
|
|
|
132
134
|
export { Pagination };
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
135
|
+
//# sourceMappingURL=chunk-DB5JMXOI.js.map
|
|
136
|
+
//# sourceMappingURL=chunk-DB5JMXOI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"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","file":"chunk-DB5JMXOI.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Pagination.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Select } from \"../Select\";\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Total number of items. */\n total: number;\n /** Items per page. */\n pageSize?: number;\n /** Current page (1-indexed). */\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n /** Max visible page buttons (before ellipsis logic). */\n siblings?: number;\n /**\n * Render a \"跳至 N 页\" input to the right of the page buttons. Enter key commits\n * and clamps to `1..totalPages`.\n */\n showQuickJumper?: boolean;\n /**\n * Render a Select to let the user switch the page size. Resetting the size sends the\n * user back to page 1 and calls both `onShowSizeChange` and `onChange(1)`.\n */\n showSizeChanger?: boolean;\n /** Page size choices for `showSizeChanger`. Defaults to `[10, 20, 50, 100]`. */\n pageSizeOptions?: number[];\n /** Fires when the user picks a new page size via the size changer. */\n onShowSizeChange?: (current: number, size: number) => void;\n className?: string;\n}\n\nconst DEFAULT_SIZE_OPTIONS = [10, 20, 50, 100];\n\n/** `Pagination` — page number controls. */\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(({\n total,\n pageSize = 10,\n page,\n defaultPage = 1,\n onChange,\n siblings = 1,\n showQuickJumper = false,\n showSizeChanger = false,\n pageSizeOptions = DEFAULT_SIZE_OPTIONS,\n onShowSizeChange,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultPage);\n const isControlled = page !== undefined;\n const cur = isControlled ? page! : inner;\n const pages = Math.max(1, Math.ceil(total / pageSize));\n const [jumpDraft, setJumpDraft] = React.useState(\"\");\n\n const go = (p: number) => {\n const next = Math.min(pages, Math.max(1, p));\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const handleJump = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key !== \"Enter\") return;\n const n = Number(jumpDraft);\n if (!Number.isFinite(n) || n < 1) {\n setJumpDraft(\"\");\n return;\n }\n go(Math.trunc(n));\n setJumpDraft(\"\");\n };\n\n const handleSizeChange = (size: number) => {\n onShowSizeChange?.(cur, size);\n // reset to page 1 — Ant Design parity\n if (!isControlled) setInner(1);\n onChange?.(1);\n };\n\n const range = (): (number | \"...\")[] => {\n const out: (number | \"...\")[] = [];\n const add = (n: number | \"...\") => out.push(n);\n const s = Math.max(2, cur - siblings);\n const e = Math.min(pages - 1, cur + siblings);\n add(1);\n if (s > 2) add(\"...\");\n for (let i = s; i <= e; i++) add(i);\n if (e < pages - 1) add(\"...\");\n if (pages > 1) add(pages);\n return out;\n };\n\n return (\n <div ref={ref} className={`pagination ${className}`} {...rest}>\n <span className=\"pg-info\">\n 共 {total} 条 · 第 {cur} / {pages} 页\n </span>\n <div className=\"pg-controls\">\n <button\n type=\"button\"\n className={`pg ${cur === 1 ? \"disabled\" : \"\"}`}\n onClick={() => cur > 1 && go(cur - 1)}\n aria-label=\"Previous\"\n >\n <Icon name=\"chevLeft\" size={12} />\n </button>\n {range().map((p, i) =>\n p === \"...\" ? (\n <span key={`e${i}`} className=\"ellipsis\">…</span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={`pg ${p === cur ? \"active\" : \"\"}`}\n onClick={() => go(p)}\n >\n {p}\n </button>\n )\n )}\n <button\n type=\"button\"\n className={`pg ${cur === pages ? \"disabled\" : \"\"}`}\n onClick={() => cur < pages && go(cur + 1)}\n aria-label=\"Next\"\n >\n <Icon name=\"chevRight\" size={12} />\n </button>\n {showSizeChanger && (\n <div className=\"pg-size-changer\">\n <Select<number>\n value={pageSize}\n size=\"sm\"\n options={pageSizeOptions.map((n) => ({ value: n, label: `${n} 条/页` }))}\n onChange={handleSizeChange}\n />\n </div>\n )}\n {showQuickJumper && (\n <label className=\"pg-jumper\">\n <span className=\"pg-jumper-label\">跳至</span>\n <input\n type=\"text\"\n inputMode=\"numeric\"\n className=\"pg-jumper-input\"\n value={jumpDraft}\n onChange={(e) => setJumpDraft(e.target.value.replace(/[^\\d]/g, \"\"))}\n onKeyDown={handleJump}\n aria-label=\"跳转到指定页\"\n />\n <span className=\"pg-jumper-label\">页</span>\n </label>\n )}\n </div>\n </div>\n );\n});\nPagination.displayName = \"Pagination\";\n"]}
|