eidos-ui 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -5
- package/dist/{Input.types-XrJTI0JC.d.ts → Input.types-CSDMaZNe.d.ts} +10 -0
- package/dist/{Input.types-DFZNyJGF.d.cts → Input.types-D7-sWq-q.d.cts} +10 -0
- package/dist/{Menu.types-DNIpjSAK.d.ts → Menu.types-BN4g1-3A.d.ts} +9 -0
- package/dist/{Menu.types-DwcuCZM7.d.cts → Menu.types-CTnUijv5.d.cts} +9 -0
- package/dist/{Select.types-B4kDpkGB.d.ts → Select.types-C2tGy1vj.d.ts} +11 -1
- package/dist/{Select.types-CAkT2ACt.d.cts → Select.types-ok-03rLo.d.cts} +11 -1
- package/dist/{Table.types-CPj-udMc.d.cts → Table.types-D-9tC0kJ.d.cts} +2 -3
- package/dist/{Table.types-CZZ7QWAI.d.ts → Table.types-D8pmgxKA.d.ts} +2 -3
- package/dist/{Toolbar.types-RN0klQzu.d.ts → Toolbar.types-CKnQC_TW.d.ts} +1 -1
- package/dist/{Toolbar.types-DSk8z2iy.d.cts → Toolbar.types-DUz2mxct.d.cts} +1 -1
- package/dist/alert/index.cjs +5 -5
- package/dist/alert/index.js +4 -4
- package/dist/button/index.cjs +4 -4
- package/dist/button/index.js +3 -3
- package/dist/checkbox/index.cjs +2 -2
- package/dist/checkbox/index.js +1 -1
- package/dist/chip/index.cjs +4 -4
- package/dist/chip/index.js +3 -3
- package/dist/{chunk-ITXDSQT2.js → chunk-24HKKSKX.js} +94 -102
- package/dist/chunk-24HKKSKX.js.map +1 -0
- package/dist/{chunk-GDQWSCJQ.js → chunk-26SO4LZ5.js} +4 -4
- package/dist/{chunk-GPRJYPIG.js → chunk-2JW3WSBF.js} +6 -4
- package/dist/chunk-2JW3WSBF.js.map +1 -0
- package/dist/{chunk-MHZIBV2C.js → chunk-2PCCGQOH.js} +90 -19
- package/dist/chunk-2PCCGQOH.js.map +1 -0
- package/dist/{chunk-3EPND5M2.cjs → chunk-2T7ZMMH5.cjs} +72 -19
- package/dist/chunk-2T7ZMMH5.cjs.map +1 -0
- package/dist/chunk-35LGEPLP.cjs +134 -0
- package/dist/chunk-35LGEPLP.cjs.map +1 -0
- package/dist/{chunk-R4M6SNUU.cjs → chunk-36JFXFM2.cjs} +48 -37
- package/dist/chunk-36JFXFM2.cjs.map +1 -0
- package/dist/{chunk-ND526PMG.cjs → chunk-3KBBJZHK.cjs} +11 -11
- package/dist/{chunk-ND526PMG.cjs.map → chunk-3KBBJZHK.cjs.map} +1 -1
- package/dist/{chunk-EH42ND5Q.cjs → chunk-3RWZC6OW.cjs} +5 -5
- package/dist/{chunk-EH42ND5Q.cjs.map → chunk-3RWZC6OW.cjs.map} +1 -1
- package/dist/{chunk-G5N3C6AU.cjs → chunk-3ZRFOKDM.cjs} +36 -36
- package/dist/{chunk-G5N3C6AU.cjs.map → chunk-3ZRFOKDM.cjs.map} +1 -1
- package/dist/{chunk-I5XR2V4A.cjs → chunk-4AO5RKV5.cjs} +87 -96
- package/dist/chunk-4AO5RKV5.cjs.map +1 -0
- package/dist/{chunk-5HUZYY54.js → chunk-4J25XZDI.js} +23 -13
- package/dist/chunk-4J25XZDI.js.map +1 -0
- package/dist/{chunk-FXZJL2AM.cjs → chunk-4JSTBA4F.cjs} +12 -6
- package/dist/chunk-4JSTBA4F.cjs.map +1 -0
- package/dist/{chunk-GG5YGESX.js → chunk-4LNTZPSQ.js} +4 -3
- package/dist/chunk-4LNTZPSQ.js.map +1 -0
- package/dist/{chunk-3EUTXQDB.js → chunk-5XH2PHT2.js} +31 -24
- package/dist/chunk-5XH2PHT2.js.map +1 -0
- package/dist/{chunk-OJDYTCMO.cjs → chunk-66UQTF57.cjs} +69 -62
- package/dist/chunk-66UQTF57.cjs.map +1 -0
- package/dist/{chunk-MCWTQT3M.cjs → chunk-6JHVXWDV.cjs} +125 -54
- package/dist/chunk-6JHVXWDV.cjs.map +1 -0
- package/dist/chunk-75GFIQRU.js +88 -0
- package/dist/chunk-75GFIQRU.js.map +1 -0
- package/dist/{chunk-55J4LEKT.cjs → chunk-7BFODYNL.cjs} +11 -8
- package/dist/chunk-7BFODYNL.cjs.map +1 -0
- package/dist/{chunk-TEVZHN5I.cjs → chunk-7VJCGKVP.cjs} +28 -15
- package/dist/chunk-7VJCGKVP.cjs.map +1 -0
- package/dist/{chunk-KQJ3IAFT.js → chunk-A3LMUPG3.js} +2 -2
- package/dist/{chunk-O2AACVSF.js → chunk-AR2ZOO6L.js} +3 -3
- package/dist/{chunk-Z5U4NJTW.cjs → chunk-BEOECPVJ.cjs} +50 -23
- package/dist/chunk-BEOECPVJ.cjs.map +1 -0
- package/dist/{chunk-E7FGY7BJ.js → chunk-BFKPJ627.js} +5 -4
- package/dist/chunk-BFKPJ627.js.map +1 -0
- package/dist/{chunk-M7PF4FKQ.js → chunk-D7SQ7LHJ.js} +6 -3
- package/dist/chunk-D7SQ7LHJ.js.map +1 -0
- package/dist/chunk-DA375AI6.cjs +88 -0
- package/dist/chunk-DA375AI6.cjs.map +1 -0
- package/dist/{chunk-H6CWTMAH.js → chunk-DGXHR6FV.js} +5 -2
- package/dist/chunk-DGXHR6FV.js.map +1 -0
- package/dist/{chunk-ZNWIHUHZ.cjs → chunk-DU5JKTHK.cjs} +12 -4
- package/dist/chunk-DU5JKTHK.cjs.map +1 -0
- package/dist/{chunk-HALVTKW7.js → chunk-FIVMMCGM.js} +72 -81
- package/dist/chunk-FIVMMCGM.js.map +1 -0
- package/dist/{chunk-RYOQYYDO.js → chunk-GIEDIAPD.js} +12 -6
- package/dist/chunk-GIEDIAPD.js.map +1 -0
- package/dist/{chunk-NQ4L6PYW.js → chunk-GOF6A4M4.js} +2 -2
- package/dist/{chunk-NQ4L6PYW.js.map → chunk-GOF6A4M4.js.map} +1 -1
- package/dist/{chunk-L23WWO3D.js → chunk-GPVGGBIR.js} +2 -2
- package/dist/{chunk-OAK7HFOJ.js → chunk-GWHZFX2H.js} +21 -16
- package/dist/chunk-GWHZFX2H.js.map +1 -0
- package/dist/{chunk-HYDNZXPU.js → chunk-H2RS6Z6Q.js} +41 -25
- package/dist/{chunk-HYDNZXPU.js.map → chunk-H2RS6Z6Q.js.map} +1 -1
- package/dist/{chunk-2QEKSRVX.js → chunk-HEX4IMLO.js} +4 -4
- package/dist/{chunk-QJRKXT54.cjs → chunk-HMEREPDB.cjs} +7 -7
- package/dist/{chunk-QJRKXT54.cjs.map → chunk-HMEREPDB.cjs.map} +1 -1
- package/dist/{chunk-TTO7JXDB.cjs → chunk-HNGFRRVZ.cjs} +3 -3
- package/dist/{chunk-TTO7JXDB.cjs.map → chunk-HNGFRRVZ.cjs.map} +1 -1
- package/dist/{chunk-CJGFRPAS.cjs → chunk-I6M6CVI2.cjs} +4 -4
- package/dist/chunk-I6M6CVI2.cjs.map +1 -0
- package/dist/chunk-J76JHN7J.cjs +225 -0
- package/dist/chunk-J76JHN7J.cjs.map +1 -0
- package/dist/{chunk-YW65NAKH.cjs → chunk-JCKGAAPZ.cjs} +7 -7
- package/dist/{chunk-YW65NAKH.cjs.map → chunk-JCKGAAPZ.cjs.map} +1 -1
- package/dist/{chunk-6CPCNQKV.js → chunk-JHX6JK3M.js} +79 -75
- package/dist/chunk-JHX6JK3M.js.map +1 -0
- package/dist/{chunk-YV57RSPD.js → chunk-JNY7TUDS.js} +49 -22
- package/dist/chunk-JNY7TUDS.js.map +1 -0
- package/dist/{chunk-O3LG7B2J.cjs → chunk-JPYJQ4TF.cjs} +13 -5
- package/dist/chunk-JPYJQ4TF.cjs.map +1 -0
- package/dist/{chunk-PY2376XI.js → chunk-JT4KVXJK.js} +68 -15
- package/dist/chunk-JT4KVXJK.js.map +1 -0
- package/dist/{chunk-AOGNTG3W.cjs → chunk-KBQD4JLK.cjs} +5 -4
- package/dist/chunk-KBQD4JLK.cjs.map +1 -0
- package/dist/{chunk-P2JM22BF.cjs → chunk-KIZVY57H.cjs} +82 -78
- package/dist/chunk-KIZVY57H.cjs.map +1 -0
- package/dist/{chunk-QQIALSTX.cjs → chunk-KPMIIGHH.cjs} +27 -17
- package/dist/chunk-KPMIIGHH.cjs.map +1 -0
- package/dist/{chunk-ZXJU3TQD.cjs → chunk-KREHT4AQ.cjs} +11 -10
- package/dist/chunk-KREHT4AQ.cjs.map +1 -0
- package/dist/{chunk-S4S4LB63.js → chunk-L65MHFMD.js} +11 -3
- package/dist/chunk-L65MHFMD.js.map +1 -0
- package/dist/{chunk-OGC44JFZ.cjs → chunk-LQXFXXMJ.cjs} +8 -7
- package/dist/chunk-LQXFXXMJ.cjs.map +1 -0
- package/dist/{chunk-25PSIDPC.js → chunk-MPIVBAMY.js} +79 -21
- package/dist/chunk-MPIVBAMY.js.map +1 -0
- package/dist/{chunk-7SVDYEKM.js → chunk-MQAOXZD4.js} +28 -14
- package/dist/chunk-MQAOXZD4.js.map +1 -0
- package/dist/{chunk-6CSUUQ5M.cjs → chunk-NOQF7UQ5.cjs} +6 -6
- package/dist/{chunk-6CSUUQ5M.cjs.map → chunk-NOQF7UQ5.cjs.map} +1 -1
- package/dist/{chunk-OU7DCYIA.js → chunk-O3QM3BFE.js} +2 -2
- package/dist/{chunk-WKDT2XFQ.js → chunk-OOCCSMWM.js} +4 -4
- package/dist/chunk-P4XZH3OR.js +225 -0
- package/dist/chunk-P4XZH3OR.js.map +1 -0
- package/dist/{chunk-ZWAFL2B3.cjs → chunk-PMSENLOA.cjs} +37 -27
- package/dist/chunk-PMSENLOA.cjs.map +1 -0
- package/dist/{chunk-L5W2XC6M.js → chunk-RHFD2Z5V.js} +8 -8
- package/dist/chunk-RHHZRTWM.js +134 -0
- package/dist/chunk-RHHZRTWM.js.map +1 -0
- package/dist/{chunk-NZO2I5AL.cjs → chunk-RJVHR45I.cjs} +7 -7
- package/dist/{chunk-NZO2I5AL.cjs.map → chunk-RJVHR45I.cjs.map} +1 -1
- package/dist/{chunk-E6SE552P.cjs → chunk-RUDXHT76.cjs} +41 -25
- package/dist/chunk-RUDXHT76.cjs.map +1 -0
- package/dist/{chunk-SXGCRHBZ.js → chunk-SDUGYJGW.js} +24 -14
- package/dist/chunk-SDUGYJGW.js.map +1 -0
- package/dist/{chunk-VPRUHE35.js → chunk-SFFKQQ5Z.js} +4 -4
- package/dist/{chunk-2RXQMQYW.js → chunk-SXL4DMZ7.js} +27 -17
- package/dist/{chunk-2RXQMQYW.js.map → chunk-SXL4DMZ7.js.map} +1 -1
- package/dist/{chunk-OAPOGYA5.cjs → chunk-TC5IC6OP.cjs} +7 -4
- package/dist/chunk-TC5IC6OP.cjs.map +1 -0
- package/dist/{chunk-T2KB3DJJ.js → chunk-THCTUBX6.js} +12 -4
- package/dist/chunk-THCTUBX6.js.map +1 -0
- package/dist/{chunk-NEYLNRVG.cjs → chunk-TTLFY76J.cjs} +21 -16
- package/dist/chunk-TTLFY76J.cjs.map +1 -0
- package/dist/{chunk-ZZSPQFMX.js → chunk-U233KQZX.js} +2 -1
- package/dist/{chunk-ZZSPQFMX.js.map → chunk-U233KQZX.js.map} +1 -1
- package/dist/{chunk-65PC3YDT.cjs → chunk-V4BZWBZT.cjs} +7 -7
- package/dist/{chunk-65PC3YDT.cjs.map → chunk-V4BZWBZT.cjs.map} +1 -1
- package/dist/{chunk-FKXKBJUI.cjs → chunk-VHO6JPRR.cjs} +2 -1
- package/dist/chunk-VHO6JPRR.cjs.map +1 -0
- package/dist/{chunk-3E7TKBQI.cjs → chunk-VQGLVBPL.cjs} +24 -14
- package/dist/chunk-VQGLVBPL.cjs.map +1 -0
- package/dist/{chunk-27ZWUEPE.js → chunk-WE2SBWZ6.js} +20 -9
- package/dist/chunk-WE2SBWZ6.js.map +1 -0
- package/dist/{chunk-TQGO5WK6.js → chunk-WNDDS367.js} +7 -6
- package/dist/chunk-WNDDS367.js.map +1 -0
- package/dist/{chunk-Q5KQVBQP.cjs → chunk-X3BVQBXD.cjs} +18 -16
- package/dist/chunk-X3BVQBXD.cjs.map +1 -0
- package/dist/{chunk-J5RMLZ4P.cjs → chunk-XERBOFYZ.cjs} +80 -22
- package/dist/chunk-XERBOFYZ.cjs.map +1 -0
- package/dist/{chunk-3CXULV4G.cjs → chunk-XRVRGRC3.cjs} +2 -2
- package/dist/{chunk-3CXULV4G.cjs.map → chunk-XRVRGRC3.cjs.map} +1 -1
- package/dist/{chunk-K7T25Y3A.cjs → chunk-XZLSHEHE.cjs} +41 -27
- package/dist/chunk-XZLSHEHE.cjs.map +1 -0
- package/dist/{chunk-JRLUZDKA.js → chunk-YAKTVIVK.js} +20 -7
- package/dist/chunk-YAKTVIVK.js.map +1 -0
- package/dist/{chunk-IJ4DXG7D.cjs → chunk-YJNQLH2L.cjs} +5 -2
- package/dist/chunk-YJNQLH2L.cjs.map +1 -0
- package/dist/{chunk-ZPDETHQ7.js → chunk-YP4HUBKN.js} +3 -3
- package/dist/{chunk-ZPDETHQ7.js.map → chunk-YP4HUBKN.js.map} +1 -1
- package/dist/{chunk-5WH3JMR5.js → chunk-YXRKBKFB.js} +7 -4
- package/dist/chunk-YXRKBKFB.js.map +1 -0
- package/dist/{chunk-ACNTH2OQ.cjs → chunk-ZMRINZIO.cjs} +98 -106
- package/dist/chunk-ZMRINZIO.cjs.map +1 -0
- package/dist/color-picker/index.cjs +4 -4
- package/dist/color-picker/index.d.cts +8 -0
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.js +3 -3
- package/dist/combobox/index.cjs +6 -6
- package/dist/combobox/index.js +5 -5
- package/dist/command-palette/index.cjs +3 -2
- package/dist/command-palette/index.cjs.map +1 -1
- package/dist/command-palette/index.js +2 -1
- package/dist/context-menu/index.cjs +6 -6
- package/dist/context-menu/index.d.cts +1 -1
- package/dist/context-menu/index.d.ts +1 -1
- package/dist/context-menu/index.js +5 -5
- package/dist/conversation/index.cjs +8 -8
- package/dist/conversation/index.d.cts +1 -1
- package/dist/conversation/index.d.ts +1 -1
- package/dist/conversation/index.js +7 -7
- package/dist/data-grid/index.cjs +16 -16
- package/dist/data-grid/index.d.cts +14 -15
- package/dist/data-grid/index.d.ts +14 -15
- package/dist/data-grid/index.js +15 -15
- package/dist/date-picker/index.cjs +8 -8
- package/dist/date-picker/index.d.cts +12 -2
- package/dist/date-picker/index.d.ts +12 -2
- package/dist/date-picker/index.js +7 -7
- package/dist/drawer/index.cjs +5 -5
- package/dist/drawer/index.js +4 -4
- package/dist/dropdown/index.cjs +3 -3
- package/dist/dropdown/index.d.cts +34 -0
- package/dist/dropdown/index.d.ts +34 -0
- package/dist/dropdown/index.js +2 -2
- package/dist/file-upload/index.cjs +2 -2
- package/dist/file-upload/index.js +1 -1
- package/dist/header/index.cjs +6 -6
- package/dist/header/index.js +5 -5
- package/dist/index.cjs +42 -42
- package/dist/index.css +112 -40
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +41 -41
- package/dist/inline-edit/index.cjs +5 -5
- package/dist/inline-edit/index.js +4 -4
- package/dist/input/index.cjs +4 -4
- package/dist/input/index.d.cts +2 -2
- package/dist/input/index.d.ts +2 -2
- package/dist/input/index.js +3 -3
- package/dist/menu/index.cjs +5 -5
- package/dist/menu/index.d.cts +23 -2
- package/dist/menu/index.d.ts +23 -2
- package/dist/menu/index.js +4 -4
- package/dist/modal/index.cjs +5 -5
- package/dist/modal/index.js +4 -4
- package/dist/navigation/index.cjs +5 -5
- package/dist/navigation/index.js +4 -4
- package/dist/number-input/index.cjs +3 -3
- package/dist/number-input/index.js +2 -2
- package/dist/o-t-p-input/index.cjs +2 -2
- package/dist/o-t-p-input/index.js +1 -1
- package/dist/page-layout/index.cjs +12 -12
- package/dist/page-layout/index.d.cts +2 -2
- package/dist/page-layout/index.d.ts +2 -2
- package/dist/page-layout/index.js +11 -11
- package/dist/pagination/index.cjs +8 -8
- package/dist/pagination/index.js +7 -7
- package/dist/popover/index.cjs +3 -2
- package/dist/popover/index.cjs.map +1 -1
- package/dist/popover/index.d.cts +3 -1
- package/dist/popover/index.d.ts +3 -1
- package/dist/popover/index.js +2 -1
- package/dist/radio/index.cjs +2 -2
- package/dist/radio/index.js +1 -1
- package/dist/segmented-control/index.cjs +4 -4
- package/dist/segmented-control/index.js +3 -3
- package/dist/select/index.cjs +6 -6
- package/dist/select/index.d.cts +3 -3
- package/dist/select/index.d.ts +3 -3
- package/dist/select/index.js +5 -5
- package/dist/snackbar/index.cjs +5 -5
- package/dist/snackbar/index.d.cts +4 -0
- package/dist/snackbar/index.d.ts +4 -0
- package/dist/snackbar/index.js +4 -4
- package/dist/split-button/index.cjs +6 -6
- package/dist/split-button/index.js +5 -5
- package/dist/table/index.cjs +14 -14
- package/dist/table/index.d.cts +2 -2
- package/dist/table/index.d.ts +2 -2
- package/dist/table/index.js +13 -13
- package/dist/tabs/index.cjs +3 -3
- package/dist/tabs/index.js +2 -2
- package/dist/tag-input/index.cjs +6 -6
- package/dist/tag-input/index.js +5 -5
- package/dist/textarea/index.cjs +4 -4
- package/dist/textarea/index.js +3 -3
- package/dist/theme-editor/index.cjs +11 -11
- package/dist/theme-editor/index.js +10 -10
- package/dist/theme-provider/index.cjs +3 -3
- package/dist/theme-provider/index.js +2 -2
- package/dist/toolbar/index.cjs +8 -8
- package/dist/toolbar/index.d.cts +3 -3
- package/dist/toolbar/index.d.ts +3 -3
- package/dist/toolbar/index.js +7 -7
- package/dist/tooltip/index.cjs +3 -2
- package/dist/tooltip/index.cjs.map +1 -1
- package/dist/tooltip/index.js +2 -1
- package/dist/virtual-list/index.cjs +2 -2
- package/dist/virtual-list/index.js +1 -1
- package/package.json +7 -2
- package/dist/chunk-25PSIDPC.js.map +0 -1
- package/dist/chunk-27ZWUEPE.js.map +0 -1
- package/dist/chunk-3E7TKBQI.cjs.map +0 -1
- package/dist/chunk-3EPND5M2.cjs.map +0 -1
- package/dist/chunk-3EUTXQDB.js.map +0 -1
- package/dist/chunk-55J4LEKT.cjs.map +0 -1
- package/dist/chunk-5HUZYY54.js.map +0 -1
- package/dist/chunk-5WH3JMR5.js.map +0 -1
- package/dist/chunk-6CPCNQKV.js.map +0 -1
- package/dist/chunk-7SVDYEKM.js.map +0 -1
- package/dist/chunk-ACNTH2OQ.cjs.map +0 -1
- package/dist/chunk-AOGNTG3W.cjs.map +0 -1
- package/dist/chunk-BNVQ34FD.js +0 -125
- package/dist/chunk-BNVQ34FD.js.map +0 -1
- package/dist/chunk-CJGFRPAS.cjs.map +0 -1
- package/dist/chunk-CUJBNRJJ.cjs +0 -38
- package/dist/chunk-CUJBNRJJ.cjs.map +0 -1
- package/dist/chunk-E6SE552P.cjs.map +0 -1
- package/dist/chunk-E7FGY7BJ.js.map +0 -1
- package/dist/chunk-EAJHEYZM.js +0 -38
- package/dist/chunk-EAJHEYZM.js.map +0 -1
- package/dist/chunk-FKXKBJUI.cjs.map +0 -1
- package/dist/chunk-FXZJL2AM.cjs.map +0 -1
- package/dist/chunk-GG5YGESX.js.map +0 -1
- package/dist/chunk-GPRJYPIG.js.map +0 -1
- package/dist/chunk-H6CWTMAH.js.map +0 -1
- package/dist/chunk-HALVTKW7.js.map +0 -1
- package/dist/chunk-I5XR2V4A.cjs.map +0 -1
- package/dist/chunk-IJ4DXG7D.cjs.map +0 -1
- package/dist/chunk-ITXDSQT2.js.map +0 -1
- package/dist/chunk-J5RMLZ4P.cjs.map +0 -1
- package/dist/chunk-JRLUZDKA.js.map +0 -1
- package/dist/chunk-K7T25Y3A.cjs.map +0 -1
- package/dist/chunk-L5Q6UDY3.js +0 -69
- package/dist/chunk-L5Q6UDY3.js.map +0 -1
- package/dist/chunk-M7PF4FKQ.js.map +0 -1
- package/dist/chunk-MCWTQT3M.cjs.map +0 -1
- package/dist/chunk-MHZIBV2C.js.map +0 -1
- package/dist/chunk-NEYLNRVG.cjs.map +0 -1
- package/dist/chunk-O3LG7B2J.cjs.map +0 -1
- package/dist/chunk-OAK7HFOJ.js.map +0 -1
- package/dist/chunk-OAPOGYA5.cjs.map +0 -1
- package/dist/chunk-OGC44JFZ.cjs.map +0 -1
- package/dist/chunk-OJDYTCMO.cjs.map +0 -1
- package/dist/chunk-P2JM22BF.cjs.map +0 -1
- package/dist/chunk-PY2376XI.js.map +0 -1
- package/dist/chunk-Q5KQVBQP.cjs.map +0 -1
- package/dist/chunk-QQIALSTX.cjs.map +0 -1
- package/dist/chunk-R4M6SNUU.cjs.map +0 -1
- package/dist/chunk-RYOQYYDO.js.map +0 -1
- package/dist/chunk-S4S4LB63.js.map +0 -1
- package/dist/chunk-SXGCRHBZ.js.map +0 -1
- package/dist/chunk-T2KB3DJJ.js.map +0 -1
- package/dist/chunk-TEVZHN5I.cjs.map +0 -1
- package/dist/chunk-TQGO5WK6.js.map +0 -1
- package/dist/chunk-VXO2MYYH.cjs +0 -125
- package/dist/chunk-VXO2MYYH.cjs.map +0 -1
- package/dist/chunk-WWYJNWJY.cjs +0 -69
- package/dist/chunk-WWYJNWJY.cjs.map +0 -1
- package/dist/chunk-YV57RSPD.js.map +0 -1
- package/dist/chunk-Z5U4NJTW.cjs.map +0 -1
- package/dist/chunk-ZNWIHUHZ.cjs.map +0 -1
- package/dist/chunk-ZWAFL2B3.cjs.map +0 -1
- package/dist/chunk-ZXJU3TQD.cjs.map +0 -1
- /package/dist/{chunk-GDQWSCJQ.js.map → chunk-26SO4LZ5.js.map} +0 -0
- /package/dist/{chunk-KQJ3IAFT.js.map → chunk-A3LMUPG3.js.map} +0 -0
- /package/dist/{chunk-O2AACVSF.js.map → chunk-AR2ZOO6L.js.map} +0 -0
- /package/dist/{chunk-L23WWO3D.js.map → chunk-GPVGGBIR.js.map} +0 -0
- /package/dist/{chunk-2QEKSRVX.js.map → chunk-HEX4IMLO.js.map} +0 -0
- /package/dist/{chunk-OU7DCYIA.js.map → chunk-O3QM3BFE.js.map} +0 -0
- /package/dist/{chunk-WKDT2XFQ.js.map → chunk-OOCCSMWM.js.map} +0 -0
- /package/dist/{chunk-L5W2XC6M.js.map → chunk-RHFD2Z5V.js.map} +0 -0
- /package/dist/{chunk-VPRUHE35.js.map → chunk-SFFKQQ5Z.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/FileUpload/FileUpload.component.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { Upload, X, CircleAlert, FileText } from 'lucide-react';\nimport type { FileUploadProps } from './FileUpload.types';\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction isFileTypeAccepted(file: File, acceptedTypes: string[]): boolean {\n return acceptedTypes.some((type) => {\n const trimmed = type.trim();\n // Extension match: \".pdf\", \".docx\"\n if (trimmed.startsWith('.')) {\n return file.name.toLowerCase().endsWith(trimmed.toLowerCase());\n }\n // Wildcard MIME group: \"image/*\", \"video/*\"\n if (trimmed.endsWith('/*')) {\n const baseType = trimmed.slice(0, -2);\n return file.type.startsWith(`${baseType}/`);\n }\n // Exact MIME type: \"application/pdf\"\n return file.type === trimmed;\n });\n}\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport function FileUpload({\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onFilesAccepted,\n onFilesRejected,\n hint,\n disabled = false,\n className = '',\n}: FileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [files, setFiles] = useState<File[]>([]);\n const [error, setError] = useState<string | null>(null);\n\n // ── Validation ─────────────────────────────────────────────────────────────\n\n const validateAndAccept = (fileList: FileList | File[]) => {\n const incoming = Array.from(fileList);\n\n if (maxFiles !== undefined && incoming.length > maxFiles) {\n setError(`Maximum ${maxFiles} file${maxFiles === 1 ? '' : 's'} allowed`);\n onFilesRejected?.(incoming, 'count');\n return;\n }\n\n if (accept) {\n const acceptedTypes = accept.split(',').map((t) => t.trim());\n const invalid = incoming.filter((f) => !isFileTypeAccepted(f, acceptedTypes));\n if (invalid.length > 0) {\n setError('One or more files have an unsupported type');\n onFilesRejected?.(incoming, 'type');\n return;\n }\n }\n\n if (maxSize !== undefined) {\n const oversized = incoming.filter((f) => f.size > maxSize);\n if (oversized.length > 0) {\n setError(`File size exceeds the ${formatBytes(maxSize)} limit`);\n onFilesRejected?.(oversized, 'size');\n return;\n }\n }\n\n setError(null);\n setFiles(incoming);\n onFilesAccepted?.(incoming);\n };\n\n // ── Drag handlers ──────────────────────────────────────────────────────────\n\n const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n // Prevent default to allow the drop event to fire\n e.preventDefault();\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n // Only clear the dragging state when leaving the zone entirely,\n // not when moving over a child element inside it.\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setIsDragging(false);\n }\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n const { files: dropped } = e.dataTransfer;\n if (dropped.length > 0) validateAndAccept(dropped);\n };\n\n // ── Click / keyboard ───────────────────────────────────────────────────────\n\n const handleZoneClick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleZoneClick();\n }\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n validateAndAccept(e.target.files);\n }\n // Reset the input value so the same file(s) can be re-selected\n e.target.value = '';\n };\n\n // ── File list management ───────────────────────────────────────────────────\n\n const handleRemoveFile = (index: number) => {\n const remaining = files.filter((_, i) => i !== index);\n setFiles(remaining);\n onFilesAccepted?.(remaining);\n };\n\n // ── CSS classes ────────────────────────────────────────────────────────────\n\n const rootClasses = ['eidos-file-upload', className].filter(Boolean).join(' ');\n\n const zoneClasses = [\n 'eidos-file-upload-zone',\n isDragging && 'eidos-file-upload-zone--dragging',\n disabled && 'eidos-file-upload-zone--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build the auto-generated hint from the constraints when no hint is provided\n const autoHint = [\n accept ? `Accepted: ${accept}` : null,\n maxSize ? `Max size: ${formatBytes(maxSize)}` : null,\n maxFiles && multiple ? `Up to ${maxFiles} files` : null,\n ]\n .filter(Boolean)\n .join(' · ');\n\n const displayHint = hint ?? (autoHint.length > 0 ? autoHint : null);\n\n return (\n <div\n className={rootClasses}\n role=\"region\"\n aria-label=\"File upload\"\n aria-disabled={disabled || undefined}\n >\n <div\n className={zoneClasses}\n onClick={handleZoneClick}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label=\"Upload files - click or drag and drop\"\n aria-disabled={disabled || undefined}\n >\n <div className=\"eidos-file-upload-icon\" aria-hidden=\"true\">\n <Upload />\n </div>\n\n <div className=\"eidos-file-upload-text\">\n <p className=\"eidos-file-upload-title\">\n <em>Click to upload</em>\n </p>\n <span style={{ fontWeight: 'normal', fontSize: '0.875rem' }}>or drag and drop</span>\n {displayHint && <p className=\"eidos-file-upload-hint\">{displayHint}</p>}\n </div>\n\n {/* Hidden native input - triggered programmatically via click() */}\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"eidos-file-upload-input-hidden\"\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n </div>\n\n {error && (\n <p className=\"eidos-file-upload-error\" role=\"alert\">\n <CircleAlert aria-hidden=\"true\" />\n {error}\n </p>\n )}\n\n {files.length > 0 && (\n <ul className=\"eidos-file-upload-list\" aria-label=\"Selected files\">\n {files.map((file, index) => (\n <li key={`${file.name}-${index}`} className=\"eidos-file-upload-item\">\n <div className=\"eidos-file-upload-item-info\">\n <FileText aria-hidden=\"true\" />\n <span className=\"eidos-file-upload-item-name\">{file.name}</span>\n <span className=\"eidos-file-upload-item-size\">{formatBytes(file.size)}</span>\n </div>\n <button\n type=\"button\"\n className=\"eidos-file-upload-item-remove\"\n onClick={() => handleRemoveFile(index)}\n aria-label={`Remove ${file.name}`}\n >\n <X />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nFileUpload.displayName = 'FileUpload';\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/FileUpload/FileUpload.component.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { Upload, X, CircleAlert, FileText } from 'lucide-react';\nimport type { FileUploadProps } from './FileUpload.types';\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction isFileTypeAccepted(file: File, acceptedTypes: string[]): boolean {\n return acceptedTypes.some((type) => {\n const trimmed = type.trim();\n // Extension match: \".pdf\", \".docx\"\n if (trimmed.startsWith('.')) {\n return file.name.toLowerCase().endsWith(trimmed.toLowerCase());\n }\n // Wildcard MIME group: \"image/*\", \"video/*\"\n if (trimmed.endsWith('/*')) {\n const baseType = trimmed.slice(0, -2);\n return file.type.startsWith(`${baseType}/`);\n }\n // Exact MIME type: \"application/pdf\"\n return file.type === trimmed;\n });\n}\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport function FileUpload({\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onFilesAccepted,\n onFilesRejected,\n hint,\n disabled = false,\n className = '',\n}: FileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [files, setFiles] = useState<File[]>([]);\n const [error, setError] = useState<string | null>(null);\n\n // ── Validation ─────────────────────────────────────────────────────────────\n\n const validateAndAccept = (fileList: FileList | File[]) => {\n const incoming = Array.from(fileList);\n\n if (maxFiles !== undefined && incoming.length > maxFiles) {\n setError(`Maximum ${maxFiles} file${maxFiles === 1 ? '' : 's'} allowed`);\n onFilesRejected?.(incoming, 'count');\n return;\n }\n\n if (accept) {\n const acceptedTypes = accept.split(',').map((t) => t.trim());\n const invalid = incoming.filter((f) => !isFileTypeAccepted(f, acceptedTypes));\n if (invalid.length > 0) {\n setError('One or more files have an unsupported type');\n onFilesRejected?.(incoming, 'type');\n return;\n }\n }\n\n if (maxSize !== undefined) {\n const oversized = incoming.filter((f) => f.size > maxSize);\n if (oversized.length > 0) {\n setError(`File size exceeds the ${formatBytes(maxSize)} limit`);\n onFilesRejected?.(oversized, 'size');\n return;\n }\n }\n\n setError(null);\n setFiles(incoming);\n onFilesAccepted?.(incoming);\n };\n\n // ── Drag handlers ──────────────────────────────────────────────────────────\n\n const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n // Prevent default to allow the drop event to fire\n e.preventDefault();\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n // Only clear the dragging state when leaving the zone entirely,\n // not when moving over a child element inside it.\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setIsDragging(false);\n }\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n const { files: dropped } = e.dataTransfer;\n if (dropped.length > 0) validateAndAccept(dropped);\n };\n\n // ── Click / keyboard ───────────────────────────────────────────────────────\n\n const handleZoneClick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleZoneClick();\n }\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n validateAndAccept(e.target.files);\n }\n // Reset the input value so the same file(s) can be re-selected\n e.target.value = '';\n };\n\n // ── File list management ───────────────────────────────────────────────────\n\n const handleRemoveFile = (index: number) => {\n const remaining = files.filter((_, i) => i !== index);\n setFiles(remaining);\n onFilesAccepted?.(remaining);\n };\n\n // ── CSS classes ────────────────────────────────────────────────────────────\n\n const rootClasses = ['eidos-file-upload', className].filter(Boolean).join(' ');\n\n const zoneClasses = [\n 'eidos-file-upload-zone',\n isDragging && 'eidos-file-upload-zone--dragging',\n disabled && 'eidos-file-upload-zone--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build the auto-generated hint from the constraints when no hint is provided\n const autoHint = [\n accept ? `Accepted: ${accept}` : null,\n maxSize ? `Max size: ${formatBytes(maxSize)}` : null,\n maxFiles && multiple ? `Up to ${maxFiles} files` : null,\n ]\n .filter(Boolean)\n .join(' · ');\n\n const displayHint = hint ?? (autoHint.length > 0 ? autoHint : null);\n\n return (\n <div\n className={rootClasses}\n role=\"region\"\n aria-label=\"File upload\"\n aria-disabled={disabled || undefined}\n >\n <div\n className={zoneClasses}\n onClick={handleZoneClick}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n // Starts with the visible \"Click to upload\" so the name contains the\n // label a speech-input user can see (SC 2.5.3). The previous\n // \"Upload files - click or drag and drop\" paraphrased it instead.\n aria-label=\"Click to upload, or drag and drop\"\n aria-disabled={disabled || undefined}\n >\n <div className=\"eidos-file-upload-icon\" aria-hidden=\"true\">\n <Upload />\n </div>\n\n <div className=\"eidos-file-upload-text\">\n <p className=\"eidos-file-upload-title\">\n <em>Click to upload</em>\n </p>\n <span style={{ fontWeight: 'normal', fontSize: '0.875rem' }}>or drag and drop</span>\n {displayHint && <p className=\"eidos-file-upload-hint\">{displayHint}</p>}\n </div>\n\n {/* Hidden native input - triggered programmatically via click() */}\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"eidos-file-upload-input-hidden\"\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n </div>\n\n {error && (\n <p className=\"eidos-file-upload-error\" role=\"alert\">\n <CircleAlert aria-hidden=\"true\" />\n {error}\n </p>\n )}\n\n {files.length > 0 && (\n <ul className=\"eidos-file-upload-list\" aria-label=\"Selected files\">\n {files.map((file, index) => (\n <li key={`${file.name}-${index}`} className=\"eidos-file-upload-item\">\n <div className=\"eidos-file-upload-item-info\">\n <FileText aria-hidden=\"true\" />\n <span className=\"eidos-file-upload-item-name\">{file.name}</span>\n <span className=\"eidos-file-upload-item-size\">{formatBytes(file.size)}</span>\n </div>\n <button\n type=\"button\"\n className=\"eidos-file-upload-item-remove\"\n onClick={() => handleRemoveFile(index)}\n aria-label={`Remove ${file.name}`}\n >\n <X />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nFileUpload.displayName = 'FileUpload';\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
dualModifier,
|
|
3
3
|
fullWidthModifier,
|
|
4
4
|
renderIcon
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RHHZRTWM.js";
|
|
6
6
|
|
|
7
7
|
// src/components/Tabs/Tabs.component.tsx
|
|
8
8
|
import React, { useState, useRef, useContext, useEffect, useLayoutEffect } from "react";
|
|
@@ -251,4 +251,4 @@ export {
|
|
|
251
251
|
TabPanel,
|
|
252
252
|
Tabs
|
|
253
253
|
};
|
|
254
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-GPVGGBIR.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Tooltip
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JNY7TUDS.js";
|
|
4
4
|
import {
|
|
5
5
|
renderIcon
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RHHZRTWM.js";
|
|
7
7
|
|
|
8
8
|
// src/components/Chip/Chip.component.tsx
|
|
9
9
|
import { X } from "lucide-react";
|
|
10
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
var Chip = ({
|
|
12
12
|
variant = "filled",
|
|
13
13
|
color = "primary",
|
|
@@ -45,26 +45,31 @@ var Chip = ({
|
|
|
45
45
|
if (disabled || !onRemove) return;
|
|
46
46
|
onRemove();
|
|
47
47
|
};
|
|
48
|
+
const hasBothControls = isClickable && isRemovable;
|
|
48
49
|
const ChipElement = isClickable && !isRemovable ? "button" : "div";
|
|
50
|
+
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51
|
+
preIcon && renderIcon(preIcon, "eidos-chip--pre-icon"),
|
|
52
|
+
/* @__PURE__ */ jsx("span", { className: "eidos-chip--copy", children }),
|
|
53
|
+
posIcon && renderIcon(posIcon, "eidos-chip--pos-icon")
|
|
54
|
+
] });
|
|
49
55
|
const chipContent = /* @__PURE__ */ jsxs(
|
|
50
56
|
ChipElement,
|
|
51
57
|
{
|
|
52
58
|
className: chipClasses,
|
|
53
59
|
disabled: ChipElement === "button" ? disabled : void 0,
|
|
54
|
-
onClick: isClickable ? handleClick : void 0,
|
|
55
|
-
role: ChipElement === "div" && isClickable ? "button" : void 0,
|
|
56
|
-
tabIndex: ChipElement === "div" && isClickable ? 0 : void 0,
|
|
57
|
-
onKeyDown: ChipElement === "div" && isClickable ? (e) => {
|
|
58
|
-
if ((e.key === "Enter" || e.key === " ") && !disabled) {
|
|
59
|
-
e.preventDefault();
|
|
60
|
-
handleClick();
|
|
61
|
-
}
|
|
62
|
-
} : void 0,
|
|
60
|
+
onClick: isClickable && !hasBothControls ? handleClick : void 0,
|
|
63
61
|
...chipProps,
|
|
64
62
|
children: [
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
hasBothControls ? /* @__PURE__ */ jsx(
|
|
64
|
+
"button",
|
|
65
|
+
{
|
|
66
|
+
type: "button",
|
|
67
|
+
className: "eidos-chip--action",
|
|
68
|
+
onClick: handleClick,
|
|
69
|
+
disabled,
|
|
70
|
+
children: body
|
|
71
|
+
}
|
|
72
|
+
) : body,
|
|
68
73
|
isRemovable && /* @__PURE__ */ jsx(
|
|
69
74
|
"button",
|
|
70
75
|
{
|
|
@@ -85,4 +90,4 @@ var Chip = ({
|
|
|
85
90
|
export {
|
|
86
91
|
Chip
|
|
87
92
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-GWHZFX2H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Chip/Chip.component.tsx"],"sourcesContent":["import React from 'react';\nimport { X } from 'lucide-react';\nimport type { ChipProps } from './Chip.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { renderIcon } from '../../utils';\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n fullWidth = false,\n tooltip,\n className = '',\n preIcon,\n posIcon,\n children,\n onClick,\n onRemove,\n ...chipProps\n}) => {\n const isClickable = !!onClick;\n const isRemovable = !!onRemove;\n\n // Build CSS classes\n const chipClasses = [\n 'eidos-chip',\n `eidos-chip--${variant}`,\n `eidos-chip--${color}`,\n `eidos-chip--${size}`,\n disabled && 'eidos-chip--disabled',\n isClickable && 'eidos-chip--clickable',\n isRemovable && 'eidos-chip--removable',\n fullWidth && 'eidos-chip--full-width',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (disabled || !onClick) return;\n onClick();\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent chip click when removing\n if (disabled || !onRemove) return;\n onRemove();\n };\n\n // A chip that is both clickable and removable holds *two* controls, so it\n // has to render them as siblings.\n //\n // The previous shape switched the outer element to a `<div>` when\n // removable - the comment said \"to avoid nested buttons\" - and then gave\n // that div `role=\"button\"` and `tabIndex={0}`. That is the same defect\n // wearing a different hat: a button containing a button, which is invalid\n // (`nested-interactive`) and leaves a screen reader announcing a control\n // inside a control. It is the same shape already fixed on `Dropdown` and\n // `DataGrid`'s rows.\n //\n // Now the outer element is a plain container whenever there is a remove\n // button, and the chip's own action moves to an inner `<button>` wrapping\n // just the content. Each control is separately reachable and separately\n // named.\n const hasBothControls = isClickable && isRemovable;\n const ChipElement = isClickable && !isRemovable ? 'button' : 'div';\n\n const body = (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-chip--pre-icon')}\n\n <span className=\"eidos-chip--copy\">{children}</span>\n\n {posIcon && renderIcon(posIcon, 'eidos-chip--pos-icon')}\n </>\n );\n\n const chipContent = (\n <ChipElement\n className={chipClasses}\n disabled={ChipElement === 'button' ? disabled : undefined}\n onClick={isClickable && !hasBothControls ? handleClick : undefined}\n {...chipProps}\n >\n {hasBothControls ? (\n <button\n type=\"button\"\n className=\"eidos-chip--action\"\n onClick={handleClick}\n disabled={disabled}\n >\n {body}\n </button>\n ) : (\n body\n )}\n\n {isRemovable && (\n <button\n className=\"eidos-chip--remove-button\"\n onClick={handleRemove}\n disabled={disabled}\n aria-label=\"Remove\"\n type=\"button\"\n >\n <X className=\"eidos-chip--remove-icon\" />\n </button>\n )}\n </ChipElement>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{chipContent}</Tooltip> : chipContent;\n};\n"],"mappings":";;;;;;;;AACA,SAAS,SAAS;AAoEd,mBAGE,KAHF;AA/DG,IAAM,OAA4B,CAAC;AAAA,EACxC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,CAAC,CAAC;AACtB,QAAM,cAAc,CAAC,CAAC;AAGtB,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,eAAe,OAAO;AAAA,IACtB,eAAe,KAAK;AAAA,IACpB,eAAe,IAAI;AAAA,IACnB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb;AAAA,EACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,QAAM,cAAc,MAAM;AACxB,QAAI,YAAY,CAAC,QAAS;AAC1B,YAAQ;AAAA,EACV;AAEA,QAAM,eAAe,CAAC,MAAwB;AAC5C,MAAE,gBAAgB;AAClB,QAAI,YAAY,CAAC,SAAU;AAC3B,aAAS;AAAA,EACX;AAiBA,QAAM,kBAAkB,eAAe;AACvC,QAAM,cAAc,eAAe,CAAC,cAAc,WAAW;AAE7D,QAAM,OACJ,iCACG;AAAA,eAAW,WAAW,SAAS,sBAAsB;AAAA,IAEtD,oBAAC,UAAK,WAAU,oBAAoB,UAAS;AAAA,IAE5C,WAAW,WAAW,SAAS,sBAAsB;AAAA,KACxD;AAGF,QAAM,cACJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,UAAU,gBAAgB,WAAW,WAAW;AAAA,MAChD,SAAS,eAAe,CAAC,kBAAkB,cAAc;AAAA,MACxD,GAAG;AAAA,MAEH;AAAA,0BACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS;AAAA,YACT;AAAA,YAEC;AAAA;AAAA,QACH,IAEA;AAAA,QAGD,eACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS;AAAA,YACT;AAAA,YACA,cAAW;AAAA,YACX,MAAK;AAAA,YAEL,8BAAC,KAAE,WAAU,2BAA0B;AAAA;AAAA,QACzC;AAAA;AAAA;AAAA,EAEJ;AAGF,SAAO,UAAU,oBAAC,WAAQ,SAAS,SAAU,uBAAY,IAAa;AACxE;","names":[]}
|
|
@@ -1561,10 +1561,12 @@ function VirtualListInner({
|
|
|
1561
1561
|
className: ["eidos-virtual-list", className].filter(Boolean).join(" "),
|
|
1562
1562
|
style: containerStyle,
|
|
1563
1563
|
onScroll: loading ? void 0 : handleScroll,
|
|
1564
|
-
role: "list",
|
|
1565
1564
|
"aria-busy": loading,
|
|
1565
|
+
tabIndex: 0,
|
|
1566
1566
|
children: [
|
|
1567
|
-
loading &&
|
|
1567
|
+
loading && // No `aria-label`: it is prohibited on an element with no role, and
|
|
1568
|
+
// the container's `aria-busy` is what actually conveys "loading".
|
|
1569
|
+
/* @__PURE__ */ jsx("div", { className: "eidos-virtual-list-loading", children: Array.from({ length: loadingRowCount }, (_, idx) => /* @__PURE__ */ jsxs(
|
|
1568
1570
|
"div",
|
|
1569
1571
|
{
|
|
1570
1572
|
className: "eidos-virtual-list-skeleton-row",
|
|
@@ -1587,28 +1589,42 @@ function VirtualListInner({
|
|
|
1587
1589
|
idx
|
|
1588
1590
|
)) }),
|
|
1589
1591
|
!loading && data.length === 0 && /* @__PURE__ */ jsx("div", { className: "eidos-virtual-list-empty", role: "status", children: emptyContent }),
|
|
1590
|
-
!loading && data.length > 0 &&
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1592
|
+
!loading && data.length > 0 && // `role="list"` sits here rather than on the scroll container.
|
|
1593
|
+
//
|
|
1594
|
+
// A list may only contain listitems, and the scroll container also
|
|
1595
|
+
// holds the loading skeletons and the empty state - neither of which
|
|
1596
|
+
// is a list item. Scoping the role to the element that holds only
|
|
1597
|
+
// rows makes the structure honest and keeps the states out of it.
|
|
1598
|
+
/* @__PURE__ */ jsx(
|
|
1599
|
+
"div",
|
|
1600
|
+
{
|
|
1601
|
+
className: "eidos-virtual-list-inner",
|
|
1602
|
+
style: { height: virtualizer.getTotalSize() },
|
|
1603
|
+
role: "list",
|
|
1604
|
+
children: virtualizer.getVirtualItems().map((virtualItem) => {
|
|
1605
|
+
const item = data[virtualItem.index];
|
|
1606
|
+
const key = getRowKey ? getRowKey(item, virtualItem.index) : virtualItem.index;
|
|
1607
|
+
return /* @__PURE__ */ jsx(
|
|
1608
|
+
"div",
|
|
1609
|
+
{
|
|
1610
|
+
className: "eidos-virtual-list-row",
|
|
1611
|
+
style: {
|
|
1612
|
+
// `top: 0` anchors the absolutely-positioned row to the top
|
|
1613
|
+
// of the inner spacer; `transform` then translates it into
|
|
1614
|
+
// position. This is the recommended pattern for
|
|
1615
|
+
// @tanstack/react-virtual and keeps compositing efficient.
|
|
1616
|
+
top: 0,
|
|
1617
|
+
height: virtualItem.size,
|
|
1618
|
+
transform: `translateY(${virtualItem.start}px)`
|
|
1619
|
+
},
|
|
1620
|
+
role: "listitem",
|
|
1621
|
+
children: renderRow(item, virtualItem.index)
|
|
1622
|
+
},
|
|
1623
|
+
key
|
|
1624
|
+
);
|
|
1625
|
+
})
|
|
1626
|
+
}
|
|
1627
|
+
)
|
|
1612
1628
|
]
|
|
1613
1629
|
}
|
|
1614
1630
|
);
|
|
@@ -1620,4 +1636,4 @@ var VirtualList = Object.assign(VirtualListInner, {
|
|
|
1620
1636
|
export {
|
|
1621
1637
|
VirtualList
|
|
1622
1638
|
};
|
|
1623
|
-
//# sourceMappingURL=chunk-
|
|
1639
|
+
//# sourceMappingURL=chunk-H2RS6Z6Q.js.map
|