eidos-ui 0.1.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/LICENSE +22 -0
- package/README.md +175 -0
- package/dist/Breadcrumb.types-DaykU-C8.d.cts +20 -0
- package/dist/Breadcrumb.types-DaykU-C8.d.ts +20 -0
- package/dist/Button.types-BH0CPyPx.d.ts +33 -0
- package/dist/Button.types-DZRCVqyN.d.cts +33 -0
- package/dist/CommandPalette.types-DRMMS_ev.d.cts +73 -0
- package/dist/CommandPalette.types-DRMMS_ev.d.ts +73 -0
- package/dist/Footer.types-Dv2TPN2J.d.cts +24 -0
- package/dist/Footer.types-Dv2TPN2J.d.ts +24 -0
- package/dist/Header.types-BZi80bWz.d.cts +17 -0
- package/dist/Header.types-DJt-q01P.d.ts +17 -0
- package/dist/Input.types-DFZNyJGF.d.cts +45 -0
- package/dist/Input.types-XrJTI0JC.d.ts +45 -0
- package/dist/Menu.types-DNIpjSAK.d.ts +49 -0
- package/dist/Menu.types-DwcuCZM7.d.cts +49 -0
- package/dist/Navigation.types-Ctu5mlTa.d.cts +94 -0
- package/dist/Navigation.types-DVcLJnrB.d.ts +94 -0
- package/dist/Table.types-Bv9l7qxd.d.ts +103 -0
- package/dist/Table.types-DQ0ReOLj.d.cts +103 -0
- package/dist/Toolbar.types-BGD57Uhm.d.ts +22 -0
- package/dist/Toolbar.types-tQkLmPIu.d.cts +22 -0
- package/dist/accordion/index.cjs +10 -0
- package/dist/accordion/index.cjs.map +1 -0
- package/dist/accordion/index.d.cts +39 -0
- package/dist/accordion/index.d.ts +39 -0
- package/dist/accordion/index.js +10 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/alert/index.cjs +12 -0
- package/dist/alert/index.cjs.map +1 -0
- package/dist/alert/index.d.cts +29 -0
- package/dist/alert/index.d.ts +29 -0
- package/dist/alert/index.js +12 -0
- package/dist/alert/index.js.map +1 -0
- package/dist/avatar/index.cjs +10 -0
- package/dist/avatar/index.cjs.map +1 -0
- package/dist/avatar/index.d.cts +26 -0
- package/dist/avatar/index.d.ts +26 -0
- package/dist/avatar/index.js +10 -0
- package/dist/avatar/index.js.map +1 -0
- package/dist/badge/index.cjs +8 -0
- package/dist/badge/index.cjs.map +1 -0
- package/dist/badge/index.d.cts +27 -0
- package/dist/badge/index.d.ts +27 -0
- package/dist/badge/index.js +8 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/breadcrumb/index.cjs +8 -0
- package/dist/breadcrumb/index.cjs.map +1 -0
- package/dist/breadcrumb/index.d.cts +7 -0
- package/dist/breadcrumb/index.d.ts +7 -0
- package/dist/breadcrumb/index.js +8 -0
- package/dist/breadcrumb/index.js.map +1 -0
- package/dist/button/index.cjs +14 -0
- package/dist/button/index.cjs.map +1 -0
- package/dist/button/index.d.cts +21 -0
- package/dist/button/index.d.ts +21 -0
- package/dist/button/index.js +14 -0
- package/dist/button/index.js.map +1 -0
- package/dist/button-group/index.cjs +8 -0
- package/dist/button-group/index.cjs.map +1 -0
- package/dist/button-group/index.d.cts +46 -0
- package/dist/button-group/index.d.ts +46 -0
- package/dist/button-group/index.js +8 -0
- package/dist/button-group/index.js.map +1 -0
- package/dist/card/index.cjs +8 -0
- package/dist/card/index.cjs.map +1 -0
- package/dist/card/index.d.cts +18 -0
- package/dist/card/index.d.ts +18 -0
- package/dist/card/index.js +8 -0
- package/dist/card/index.js.map +1 -0
- package/dist/checkbox/index.cjs +9 -0
- package/dist/checkbox/index.cjs.map +1 -0
- package/dist/checkbox/index.d.cts +16 -0
- package/dist/checkbox/index.d.ts +16 -0
- package/dist/checkbox/index.js +9 -0
- package/dist/checkbox/index.js.map +1 -0
- package/dist/chip/index.cjs +11 -0
- package/dist/chip/index.cjs.map +1 -0
- package/dist/chip/index.d.cts +27 -0
- package/dist/chip/index.d.ts +27 -0
- package/dist/chip/index.js +11 -0
- package/dist/chip/index.js.map +1 -0
- package/dist/chunk-2HTBZGBP.cjs +113 -0
- package/dist/chunk-2HTBZGBP.cjs.map +1 -0
- package/dist/chunk-2JWY36LD.cjs +112 -0
- package/dist/chunk-2JWY36LD.cjs.map +1 -0
- package/dist/chunk-2YQE26EK.js +54 -0
- package/dist/chunk-2YQE26EK.js.map +1 -0
- package/dist/chunk-2ZWBN3LK.cjs +92 -0
- package/dist/chunk-2ZWBN3LK.cjs.map +1 -0
- package/dist/chunk-3ETWFS2N.cjs +40 -0
- package/dist/chunk-3ETWFS2N.cjs.map +1 -0
- package/dist/chunk-3KAR5KCS.cjs +47 -0
- package/dist/chunk-3KAR5KCS.cjs.map +1 -0
- package/dist/chunk-3RUIKBH4.cjs +1 -0
- package/dist/chunk-3RUIKBH4.cjs.map +1 -0
- package/dist/chunk-3SKI6FXB.js +40 -0
- package/dist/chunk-3SKI6FXB.js.map +1 -0
- package/dist/chunk-3YPTYI7R.js +194 -0
- package/dist/chunk-3YPTYI7R.js.map +1 -0
- package/dist/chunk-4NUZP66U.js +299 -0
- package/dist/chunk-4NUZP66U.js.map +1 -0
- package/dist/chunk-5D3LIJYW.cjs +299 -0
- package/dist/chunk-5D3LIJYW.cjs.map +1 -0
- package/dist/chunk-5QG2I3FK.cjs +169 -0
- package/dist/chunk-5QG2I3FK.cjs.map +1 -0
- package/dist/chunk-5TGBNYZK.cjs +11 -0
- package/dist/chunk-5TGBNYZK.cjs.map +1 -0
- package/dist/chunk-5WRI5ZAA.js +31 -0
- package/dist/chunk-5WRI5ZAA.js.map +1 -0
- package/dist/chunk-63N2KZZX.cjs +54 -0
- package/dist/chunk-63N2KZZX.cjs.map +1 -0
- package/dist/chunk-66R54X6R.js +1 -0
- package/dist/chunk-66R54X6R.js.map +1 -0
- package/dist/chunk-6NZXWKUE.js +1 -0
- package/dist/chunk-6NZXWKUE.js.map +1 -0
- package/dist/chunk-6P4WYB3B.js +169 -0
- package/dist/chunk-6P4WYB3B.js.map +1 -0
- package/dist/chunk-6QFT3BUD.cjs +28 -0
- package/dist/chunk-6QFT3BUD.cjs.map +1 -0
- package/dist/chunk-6USUVU6J.js +26 -0
- package/dist/chunk-6USUVU6J.js.map +1 -0
- package/dist/chunk-73EKJU4G.js +11 -0
- package/dist/chunk-73EKJU4G.js.map +1 -0
- package/dist/chunk-7IOOFKG3.js +26 -0
- package/dist/chunk-7IOOFKG3.js.map +1 -0
- package/dist/chunk-7KGV6YCG.cjs +54 -0
- package/dist/chunk-7KGV6YCG.cjs.map +1 -0
- package/dist/chunk-7NZTRSMT.js +1484 -0
- package/dist/chunk-7NZTRSMT.js.map +1 -0
- package/dist/chunk-7R7IFWGB.cjs +86 -0
- package/dist/chunk-7R7IFWGB.cjs.map +1 -0
- package/dist/chunk-A35Y5MRJ.js +235 -0
- package/dist/chunk-A35Y5MRJ.js.map +1 -0
- package/dist/chunk-AOV32YBE.js +113 -0
- package/dist/chunk-AOV32YBE.js.map +1 -0
- package/dist/chunk-AUFCW7QU.cjs +526 -0
- package/dist/chunk-AUFCW7QU.cjs.map +1 -0
- package/dist/chunk-BFYSYUA6.cjs +125 -0
- package/dist/chunk-BFYSYUA6.cjs.map +1 -0
- package/dist/chunk-BTPCSBGP.js +1622 -0
- package/dist/chunk-BTPCSBGP.js.map +1 -0
- package/dist/chunk-C7F2VFAI.cjs +259 -0
- package/dist/chunk-C7F2VFAI.cjs.map +1 -0
- package/dist/chunk-CDV2OAS3.cjs +235 -0
- package/dist/chunk-CDV2OAS3.cjs.map +1 -0
- package/dist/chunk-CJUZDUXW.cjs +79 -0
- package/dist/chunk-CJUZDUXW.cjs.map +1 -0
- package/dist/chunk-CKH36D7H.js +28 -0
- package/dist/chunk-CKH36D7H.js.map +1 -0
- package/dist/chunk-D7PGZ3M3.cjs +117 -0
- package/dist/chunk-D7PGZ3M3.cjs.map +1 -0
- package/dist/chunk-DFADZZ3K.js +126 -0
- package/dist/chunk-DFADZZ3K.js.map +1 -0
- package/dist/chunk-DI2VKKLW.js +1 -0
- package/dist/chunk-DI2VKKLW.js.map +1 -0
- package/dist/chunk-DK4S3EHG.js +29 -0
- package/dist/chunk-DK4S3EHG.js.map +1 -0
- package/dist/chunk-DZUJEN5N.cjs +31 -0
- package/dist/chunk-DZUJEN5N.cjs.map +1 -0
- package/dist/chunk-E2B33QB7.js +97 -0
- package/dist/chunk-E2B33QB7.js.map +1 -0
- package/dist/chunk-E3XATJ63.js +4418 -0
- package/dist/chunk-E3XATJ63.js.map +1 -0
- package/dist/chunk-EACNRR3C.cjs +1 -0
- package/dist/chunk-EACNRR3C.cjs.map +1 -0
- package/dist/chunk-EQ6BNPTL.cjs +39 -0
- package/dist/chunk-EQ6BNPTL.cjs.map +1 -0
- package/dist/chunk-F54MVGKO.js +342 -0
- package/dist/chunk-F54MVGKO.js.map +1 -0
- package/dist/chunk-FNUOTM44.cjs +238 -0
- package/dist/chunk-FNUOTM44.cjs.map +1 -0
- package/dist/chunk-FO5FNTJX.js +69 -0
- package/dist/chunk-FO5FNTJX.js.map +1 -0
- package/dist/chunk-FQZ6F7FQ.cjs +1 -0
- package/dist/chunk-FQZ6F7FQ.cjs.map +1 -0
- package/dist/chunk-G2FANEA2.cjs +101 -0
- package/dist/chunk-G2FANEA2.cjs.map +1 -0
- package/dist/chunk-G36S5CWN.cjs +26 -0
- package/dist/chunk-G36S5CWN.cjs.map +1 -0
- package/dist/chunk-GI7WPGP2.cjs +454 -0
- package/dist/chunk-GI7WPGP2.cjs.map +1 -0
- package/dist/chunk-GL4DHGQE.js +1316 -0
- package/dist/chunk-GL4DHGQE.js.map +1 -0
- package/dist/chunk-GOVOQZYN.js +18 -0
- package/dist/chunk-GOVOQZYN.js.map +1 -0
- package/dist/chunk-GRH57M3E.js +88 -0
- package/dist/chunk-GRH57M3E.js.map +1 -0
- package/dist/chunk-H523JFY2.js +303 -0
- package/dist/chunk-H523JFY2.js.map +1 -0
- package/dist/chunk-H56YUMFB.cjs +1622 -0
- package/dist/chunk-H56YUMFB.cjs.map +1 -0
- package/dist/chunk-HO7P6IJO.js +238 -0
- package/dist/chunk-HO7P6IJO.js.map +1 -0
- package/dist/chunk-HPIBYEGE.cjs +1484 -0
- package/dist/chunk-HPIBYEGE.cjs.map +1 -0
- package/dist/chunk-HQ4KZRFH.js +67 -0
- package/dist/chunk-HQ4KZRFH.js.map +1 -0
- package/dist/chunk-HUNMRKGE.js +21 -0
- package/dist/chunk-HUNMRKGE.js.map +1 -0
- package/dist/chunk-I44YNYI6.cjs +1 -0
- package/dist/chunk-I44YNYI6.cjs.map +1 -0
- package/dist/chunk-I6UOIS4J.cjs +1 -0
- package/dist/chunk-I6UOIS4J.cjs.map +1 -0
- package/dist/chunk-ICJ3SV5I.cjs +183 -0
- package/dist/chunk-ICJ3SV5I.cjs.map +1 -0
- package/dist/chunk-IYQX7PBO.cjs +320 -0
- package/dist/chunk-IYQX7PBO.cjs.map +1 -0
- package/dist/chunk-JFA5ABVE.js +54 -0
- package/dist/chunk-JFA5ABVE.js.map +1 -0
- package/dist/chunk-JORQYNJD.js +79 -0
- package/dist/chunk-JORQYNJD.js.map +1 -0
- package/dist/chunk-K5TKNT6I.cjs +34 -0
- package/dist/chunk-K5TKNT6I.cjs.map +1 -0
- package/dist/chunk-KF64C4QI.js +138 -0
- package/dist/chunk-KF64C4QI.js.map +1 -0
- package/dist/chunk-KGXGTWUL.js +1 -0
- package/dist/chunk-KGXGTWUL.js.map +1 -0
- package/dist/chunk-KKOZX64Z.js +34 -0
- package/dist/chunk-KKOZX64Z.js.map +1 -0
- package/dist/chunk-KO2MKZDW.cjs +69 -0
- package/dist/chunk-KO2MKZDW.cjs.map +1 -0
- package/dist/chunk-KQKJVFYF.js +259 -0
- package/dist/chunk-KQKJVFYF.js.map +1 -0
- package/dist/chunk-KV2FG7AN.cjs +401 -0
- package/dist/chunk-KV2FG7AN.cjs.map +1 -0
- package/dist/chunk-L3UPSLJ5.cjs +4418 -0
- package/dist/chunk-L3UPSLJ5.cjs.map +1 -0
- package/dist/chunk-LEZ4HSBD.cjs +744 -0
- package/dist/chunk-LEZ4HSBD.cjs.map +1 -0
- package/dist/chunk-LQ3C3OR2.js +21 -0
- package/dist/chunk-LQ3C3OR2.js.map +1 -0
- package/dist/chunk-LTOHGCU4.cjs +69 -0
- package/dist/chunk-LTOHGCU4.cjs.map +1 -0
- package/dist/chunk-M56IGNH7.cjs +125 -0
- package/dist/chunk-M56IGNH7.cjs.map +1 -0
- package/dist/chunk-MOX6LYGC.js +125 -0
- package/dist/chunk-MOX6LYGC.js.map +1 -0
- package/dist/chunk-MSQXPGOD.cjs +125 -0
- package/dist/chunk-MSQXPGOD.cjs.map +1 -0
- package/dist/chunk-N5JDL4VE.js +1 -0
- package/dist/chunk-N5JDL4VE.js.map +1 -0
- package/dist/chunk-N7HX5635.cjs +138 -0
- package/dist/chunk-N7HX5635.cjs.map +1 -0
- package/dist/chunk-NDLMU6HJ.js +744 -0
- package/dist/chunk-NDLMU6HJ.js.map +1 -0
- package/dist/chunk-O5ZPSZNY.cjs +88 -0
- package/dist/chunk-O5ZPSZNY.cjs.map +1 -0
- package/dist/chunk-O6B4KB4D.js +125 -0
- package/dist/chunk-O6B4KB4D.js.map +1 -0
- package/dist/chunk-OHUVWPFJ.js +86 -0
- package/dist/chunk-OHUVWPFJ.js.map +1 -0
- package/dist/chunk-OT3VZLN4.js +117 -0
- package/dist/chunk-OT3VZLN4.js.map +1 -0
- package/dist/chunk-OVYIBDGE.js +183 -0
- package/dist/chunk-OVYIBDGE.js.map +1 -0
- package/dist/chunk-P2BTQ33C.cjs +126 -0
- package/dist/chunk-P2BTQ33C.cjs.map +1 -0
- package/dist/chunk-P6ZBENAG.js +211 -0
- package/dist/chunk-P6ZBENAG.js.map +1 -0
- package/dist/chunk-P74HNSNJ.cjs +106 -0
- package/dist/chunk-P74HNSNJ.cjs.map +1 -0
- package/dist/chunk-PEPYVWGY.cjs +327 -0
- package/dist/chunk-PEPYVWGY.cjs.map +1 -0
- package/dist/chunk-POX6JZLO.cjs +67 -0
- package/dist/chunk-POX6JZLO.cjs.map +1 -0
- package/dist/chunk-PWIA4XQD.js +320 -0
- package/dist/chunk-PWIA4XQD.js.map +1 -0
- package/dist/chunk-QGZF5MOS.cjs +342 -0
- package/dist/chunk-QGZF5MOS.cjs.map +1 -0
- package/dist/chunk-QP2A5ZMK.cjs +18 -0
- package/dist/chunk-QP2A5ZMK.cjs.map +1 -0
- package/dist/chunk-QYHTMEI5.js +92 -0
- package/dist/chunk-QYHTMEI5.js.map +1 -0
- package/dist/chunk-QYK4ECSZ.js +69 -0
- package/dist/chunk-QYK4ECSZ.js.map +1 -0
- package/dist/chunk-R36SGSJX.cjs +26 -0
- package/dist/chunk-R36SGSJX.cjs.map +1 -0
- package/dist/chunk-R5QPUQSI.cjs +303 -0
- package/dist/chunk-R5QPUQSI.cjs.map +1 -0
- package/dist/chunk-R5UNLPQZ.cjs +103 -0
- package/dist/chunk-R5UNLPQZ.cjs.map +1 -0
- package/dist/chunk-RSBQNIJZ.js +199 -0
- package/dist/chunk-RSBQNIJZ.js.map +1 -0
- package/dist/chunk-S25WB7KJ.js +50 -0
- package/dist/chunk-S25WB7KJ.js.map +1 -0
- package/dist/chunk-SAFSEXMU.cjs +211 -0
- package/dist/chunk-SAFSEXMU.cjs.map +1 -0
- package/dist/chunk-SJDTFR3I.cjs +1 -0
- package/dist/chunk-SJDTFR3I.cjs.map +1 -0
- package/dist/chunk-SOGUWOSQ.cjs +21 -0
- package/dist/chunk-SOGUWOSQ.cjs.map +1 -0
- package/dist/chunk-SWPZ3HFY.cjs +1 -0
- package/dist/chunk-SWPZ3HFY.cjs.map +1 -0
- package/dist/chunk-SXF3TCYA.js +401 -0
- package/dist/chunk-SXF3TCYA.js.map +1 -0
- package/dist/chunk-T56K5IKQ.js +526 -0
- package/dist/chunk-T56K5IKQ.js.map +1 -0
- package/dist/chunk-TBMVUI7S.cjs +21 -0
- package/dist/chunk-TBMVUI7S.cjs.map +1 -0
- package/dist/chunk-TCX3QKF3.js +103 -0
- package/dist/chunk-TCX3QKF3.js.map +1 -0
- package/dist/chunk-TH3ITGUM.js +1 -0
- package/dist/chunk-TH3ITGUM.js.map +1 -0
- package/dist/chunk-TPNCV7KA.js +1 -0
- package/dist/chunk-TPNCV7KA.js.map +1 -0
- package/dist/chunk-TQCNQKWF.cjs +194 -0
- package/dist/chunk-TQCNQKWF.cjs.map +1 -0
- package/dist/chunk-TZWNX7FF.js +1 -0
- package/dist/chunk-TZWNX7FF.js.map +1 -0
- package/dist/chunk-UEJSRMU2.js +39 -0
- package/dist/chunk-UEJSRMU2.js.map +1 -0
- package/dist/chunk-UTENJWSE.cjs +21 -0
- package/dist/chunk-UTENJWSE.cjs.map +1 -0
- package/dist/chunk-V5JNYS77.cjs +29 -0
- package/dist/chunk-V5JNYS77.cjs.map +1 -0
- package/dist/chunk-VFYG7GAH.js +327 -0
- package/dist/chunk-VFYG7GAH.js.map +1 -0
- package/dist/chunk-VGYJ4VKX.cjs +62 -0
- package/dist/chunk-VGYJ4VKX.cjs.map +1 -0
- package/dist/chunk-VLC2OZV3.cjs +50 -0
- package/dist/chunk-VLC2OZV3.cjs.map +1 -0
- package/dist/chunk-VTAABT55.js +47 -0
- package/dist/chunk-VTAABT55.js.map +1 -0
- package/dist/chunk-VW32UTUE.cjs +1 -0
- package/dist/chunk-VW32UTUE.cjs.map +1 -0
- package/dist/chunk-VYV45YOK.cjs +1316 -0
- package/dist/chunk-VYV45YOK.cjs.map +1 -0
- package/dist/chunk-VZ43OLU6.cjs +97 -0
- package/dist/chunk-VZ43OLU6.cjs.map +1 -0
- package/dist/chunk-XJAXKENE.cjs +1 -0
- package/dist/chunk-XJAXKENE.cjs.map +1 -0
- package/dist/chunk-XJBMEDQ5.js +101 -0
- package/dist/chunk-XJBMEDQ5.js.map +1 -0
- package/dist/chunk-XMRMCWSQ.js +454 -0
- package/dist/chunk-XMRMCWSQ.js.map +1 -0
- package/dist/chunk-XSGUFMT4.js +21 -0
- package/dist/chunk-XSGUFMT4.js.map +1 -0
- package/dist/chunk-XUZOU2EB.js +1 -0
- package/dist/chunk-XUZOU2EB.js.map +1 -0
- package/dist/chunk-YCUT6NQ4.js +106 -0
- package/dist/chunk-YCUT6NQ4.js.map +1 -0
- package/dist/chunk-YLKESEHQ.cjs +199 -0
- package/dist/chunk-YLKESEHQ.cjs.map +1 -0
- package/dist/chunk-YPK7RV3Y.js +62 -0
- package/dist/chunk-YPK7RV3Y.js.map +1 -0
- package/dist/chunk-Z7S4UQKY.js +125 -0
- package/dist/chunk-Z7S4UQKY.js.map +1 -0
- package/dist/chunk-ZBGTVTQJ.js +112 -0
- package/dist/chunk-ZBGTVTQJ.js.map +1 -0
- package/dist/color-picker/index.cjs +9 -0
- package/dist/color-picker/index.cjs.map +1 -0
- package/dist/color-picker/index.d.cts +40 -0
- package/dist/color-picker/index.d.ts +40 -0
- package/dist/color-picker/index.js +9 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/combobox/index.cjs +12 -0
- package/dist/combobox/index.cjs.map +1 -0
- package/dist/combobox/index.d.cts +37 -0
- package/dist/combobox/index.d.ts +37 -0
- package/dist/combobox/index.js +12 -0
- package/dist/combobox/index.js.map +1 -0
- package/dist/command-palette/index.cjs +10 -0
- package/dist/command-palette/index.cjs.map +1 -0
- package/dist/command-palette/index.d.cts +7 -0
- package/dist/command-palette/index.d.ts +7 -0
- package/dist/command-palette/index.js +10 -0
- package/dist/command-palette/index.js.map +1 -0
- package/dist/context-menu/index.cjs +13 -0
- package/dist/context-menu/index.cjs.map +1 -0
- package/dist/context-menu/index.d.cts +38 -0
- package/dist/context-menu/index.d.ts +38 -0
- package/dist/context-menu/index.js +13 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/data-grid/index.cjs +28 -0
- package/dist/data-grid/index.cjs.map +1 -0
- package/dist/data-grid/index.d.cts +217 -0
- package/dist/data-grid/index.d.ts +217 -0
- package/dist/data-grid/index.js +28 -0
- package/dist/data-grid/index.js.map +1 -0
- package/dist/date-picker/index.cjs +19 -0
- package/dist/date-picker/index.cjs.map +1 -0
- package/dist/date-picker/index.d.cts +106 -0
- package/dist/date-picker/index.d.ts +106 -0
- package/dist/date-picker/index.js +19 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/divider/index.cjs +8 -0
- package/dist/divider/index.cjs.map +1 -0
- package/dist/divider/index.d.cts +9 -0
- package/dist/divider/index.d.ts +9 -0
- package/dist/divider/index.js +8 -0
- package/dist/divider/index.js.map +1 -0
- package/dist/drawer/index.cjs +13 -0
- package/dist/drawer/index.cjs.map +1 -0
- package/dist/drawer/index.d.cts +39 -0
- package/dist/drawer/index.d.ts +39 -0
- package/dist/drawer/index.js +13 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/dropdown/index.cjs +13 -0
- package/dist/dropdown/index.cjs.map +1 -0
- package/dist/dropdown/index.d.cts +66 -0
- package/dist/dropdown/index.d.ts +66 -0
- package/dist/dropdown/index.js +13 -0
- package/dist/dropdown/index.js.map +1 -0
- package/dist/empty-state/index.cjs +8 -0
- package/dist/empty-state/index.cjs.map +1 -0
- package/dist/empty-state/index.d.cts +20 -0
- package/dist/empty-state/index.d.ts +20 -0
- package/dist/empty-state/index.js +8 -0
- package/dist/empty-state/index.js.map +1 -0
- package/dist/file-upload/index.cjs +8 -0
- package/dist/file-upload/index.cjs.map +1 -0
- package/dist/file-upload/index.d.cts +27 -0
- package/dist/file-upload/index.d.ts +27 -0
- package/dist/file-upload/index.js +8 -0
- package/dist/file-upload/index.js.map +1 -0
- package/dist/footer/index.cjs +8 -0
- package/dist/footer/index.cjs.map +1 -0
- package/dist/footer/index.d.cts +7 -0
- package/dist/footer/index.d.ts +7 -0
- package/dist/footer/index.js +8 -0
- package/dist/footer/index.js.map +1 -0
- package/dist/header/index.cjs +13 -0
- package/dist/header/index.cjs.map +1 -0
- package/dist/header/index.d.cts +10 -0
- package/dist/header/index.d.ts +10 -0
- package/dist/header/index.js +13 -0
- package/dist/header/index.js.map +1 -0
- package/dist/index.cjs +269 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +8895 -0
- package/dist/index.css.d.ts +2 -0
- package/dist/index.d.cts +69 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.js +269 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-edit/index.cjs +11 -0
- package/dist/inline-edit/index.cjs.map +1 -0
- package/dist/inline-edit/index.d.cts +56 -0
- package/dist/inline-edit/index.d.ts +56 -0
- package/dist/inline-edit/index.js +11 -0
- package/dist/inline-edit/index.js.map +1 -0
- package/dist/input/index.cjs +11 -0
- package/dist/input/index.cjs.map +1 -0
- package/dist/input/index.d.cts +9 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.js +11 -0
- package/dist/input/index.js.map +1 -0
- package/dist/kbd/index.cjs +9 -0
- package/dist/kbd/index.cjs.map +1 -0
- package/dist/kbd/index.d.cts +34 -0
- package/dist/kbd/index.d.ts +34 -0
- package/dist/kbd/index.js +9 -0
- package/dist/kbd/index.js.map +1 -0
- package/dist/menu/index.cjs +14 -0
- package/dist/menu/index.cjs.map +1 -0
- package/dist/menu/index.d.cts +14 -0
- package/dist/menu/index.d.ts +14 -0
- package/dist/menu/index.js +14 -0
- package/dist/menu/index.js.map +1 -0
- package/dist/modal/index.cjs +12 -0
- package/dist/modal/index.cjs.map +1 -0
- package/dist/modal/index.d.cts +34 -0
- package/dist/modal/index.d.ts +34 -0
- package/dist/modal/index.js +12 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/navigation/index.cjs +14 -0
- package/dist/navigation/index.cjs.map +1 -0
- package/dist/navigation/index.d.cts +8 -0
- package/dist/navigation/index.d.ts +8 -0
- package/dist/navigation/index.js +14 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/number-input/index.cjs +8 -0
- package/dist/number-input/index.cjs.map +1 -0
- package/dist/number-input/index.d.cts +31 -0
- package/dist/number-input/index.d.ts +31 -0
- package/dist/number-input/index.js +8 -0
- package/dist/number-input/index.js.map +1 -0
- package/dist/o-t-p-input/index.cjs +8 -0
- package/dist/o-t-p-input/index.cjs.map +1 -0
- package/dist/o-t-p-input/index.d.cts +33 -0
- package/dist/o-t-p-input/index.d.ts +33 -0
- package/dist/o-t-p-input/index.js +8 -0
- package/dist/o-t-p-input/index.js.map +1 -0
- package/dist/page-layout/index.cjs +24 -0
- package/dist/page-layout/index.cjs.map +1 -0
- package/dist/page-layout/index.d.cts +28 -0
- package/dist/page-layout/index.d.ts +28 -0
- package/dist/page-layout/index.js +24 -0
- package/dist/page-layout/index.js.map +1 -0
- package/dist/pagination/index.cjs +17 -0
- package/dist/pagination/index.cjs.map +1 -0
- package/dist/pagination/index.d.cts +34 -0
- package/dist/pagination/index.d.ts +34 -0
- package/dist/pagination/index.js +17 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pill/index.cjs +8 -0
- package/dist/pill/index.cjs.map +1 -0
- package/dist/pill/index.d.cts +20 -0
- package/dist/pill/index.d.ts +20 -0
- package/dist/pill/index.js +8 -0
- package/dist/pill/index.js.map +1 -0
- package/dist/popover/index.cjs +8 -0
- package/dist/popover/index.cjs.map +1 -0
- package/dist/popover/index.d.cts +35 -0
- package/dist/popover/index.d.ts +35 -0
- package/dist/popover/index.js +8 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/progress/index.cjs +8 -0
- package/dist/progress/index.cjs.map +1 -0
- package/dist/progress/index.d.cts +18 -0
- package/dist/progress/index.d.ts +18 -0
- package/dist/progress/index.js +8 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/radio/index.cjs +10 -0
- package/dist/radio/index.cjs.map +1 -0
- package/dist/radio/index.d.cts +33 -0
- package/dist/radio/index.d.ts +33 -0
- package/dist/radio/index.js +10 -0
- package/dist/radio/index.js.map +1 -0
- package/dist/renderIcon-C2lEMMzb.d.cts +30 -0
- package/dist/renderIcon-C2lEMMzb.d.ts +30 -0
- package/dist/segmented-control/index.cjs +11 -0
- package/dist/segmented-control/index.cjs.map +1 -0
- package/dist/segmented-control/index.d.cts +70 -0
- package/dist/segmented-control/index.d.ts +70 -0
- package/dist/segmented-control/index.js +11 -0
- package/dist/segmented-control/index.js.map +1 -0
- package/dist/select/index.cjs +13 -0
- package/dist/select/index.cjs.map +1 -0
- package/dist/select/index.d.cts +46 -0
- package/dist/select/index.d.ts +46 -0
- package/dist/select/index.js +13 -0
- package/dist/select/index.js.map +1 -0
- package/dist/sizes-DM6Rrrgq.d.cts +11 -0
- package/dist/sizes-DM6Rrrgq.d.ts +11 -0
- package/dist/skeleton/index.cjs +8 -0
- package/dist/skeleton/index.cjs.map +1 -0
- package/dist/skeleton/index.d.cts +14 -0
- package/dist/skeleton/index.d.ts +14 -0
- package/dist/skeleton/index.js +8 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/slider/index.cjs +8 -0
- package/dist/slider/index.cjs.map +1 -0
- package/dist/slider/index.d.cts +37 -0
- package/dist/slider/index.d.ts +37 -0
- package/dist/slider/index.js +8 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/snackbar/index.cjs +18 -0
- package/dist/snackbar/index.cjs.map +1 -0
- package/dist/snackbar/index.d.cts +68 -0
- package/dist/snackbar/index.d.ts +68 -0
- package/dist/snackbar/index.js +18 -0
- package/dist/snackbar/index.js.map +1 -0
- package/dist/spinner/index.cjs +9 -0
- package/dist/spinner/index.cjs.map +1 -0
- package/dist/spinner/index.d.cts +12 -0
- package/dist/spinner/index.d.ts +12 -0
- package/dist/spinner/index.js +9 -0
- package/dist/spinner/index.js.map +1 -0
- package/dist/split-button/index.cjs +13 -0
- package/dist/split-button/index.cjs.map +1 -0
- package/dist/split-button/index.d.cts +53 -0
- package/dist/split-button/index.d.ts +53 -0
- package/dist/split-button/index.js +13 -0
- package/dist/split-button/index.js.map +1 -0
- package/dist/stepper/index.cjs +8 -0
- package/dist/stepper/index.cjs.map +1 -0
- package/dist/stepper/index.d.cts +42 -0
- package/dist/stepper/index.d.ts +42 -0
- package/dist/stepper/index.js +8 -0
- package/dist/stepper/index.js.map +1 -0
- package/dist/switch/index.cjs +8 -0
- package/dist/switch/index.cjs.map +1 -0
- package/dist/switch/index.d.cts +15 -0
- package/dist/switch/index.d.ts +15 -0
- package/dist/switch/index.js +8 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/table/index.cjs +33 -0
- package/dist/table/index.cjs.map +1 -0
- package/dist/table/index.d.cts +20 -0
- package/dist/table/index.d.ts +20 -0
- package/dist/table/index.js +33 -0
- package/dist/table/index.js.map +1 -0
- package/dist/tabs/index.cjs +13 -0
- package/dist/tabs/index.cjs.map +1 -0
- package/dist/tabs/index.d.cts +34 -0
- package/dist/tabs/index.d.ts +34 -0
- package/dist/tabs/index.js +13 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/tag-input/index.cjs +12 -0
- package/dist/tag-input/index.cjs.map +1 -0
- package/dist/tag-input/index.d.cts +36 -0
- package/dist/tag-input/index.d.ts +36 -0
- package/dist/tag-input/index.js +12 -0
- package/dist/tag-input/index.js.map +1 -0
- package/dist/textarea/index.cjs +10 -0
- package/dist/textarea/index.cjs.map +1 -0
- package/dist/textarea/index.d.cts +28 -0
- package/dist/textarea/index.d.ts +28 -0
- package/dist/textarea/index.js +10 -0
- package/dist/textarea/index.js.map +1 -0
- package/dist/timeline/index.cjs +8 -0
- package/dist/timeline/index.cjs.map +1 -0
- package/dist/timeline/index.d.cts +24 -0
- package/dist/timeline/index.d.ts +24 -0
- package/dist/timeline/index.js +8 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/toolbar/index.cjs +20 -0
- package/dist/toolbar/index.cjs.map +1 -0
- package/dist/toolbar/index.d.cts +13 -0
- package/dist/toolbar/index.d.ts +13 -0
- package/dist/toolbar/index.js +20 -0
- package/dist/toolbar/index.js.map +1 -0
- package/dist/tooltip/index.cjs +9 -0
- package/dist/tooltip/index.cjs.map +1 -0
- package/dist/tooltip/index.d.cts +25 -0
- package/dist/tooltip/index.d.ts +25 -0
- package/dist/tooltip/index.js +9 -0
- package/dist/tooltip/index.js.map +1 -0
- package/dist/tree-view/index.cjs +8 -0
- package/dist/tree-view/index.cjs.map +1 -0
- package/dist/tree-view/index.d.cts +36 -0
- package/dist/tree-view/index.d.ts +36 -0
- package/dist/tree-view/index.js +8 -0
- package/dist/tree-view/index.js.map +1 -0
- package/dist/virtual-list/index.cjs +9 -0
- package/dist/virtual-list/index.cjs.map +1 -0
- package/dist/virtual-list/index.d.cts +58 -0
- package/dist/virtual-list/index.d.ts +58 -0
- package/dist/virtual-list/index.js +9 -0
- package/dist/virtual-list/index.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ContextMenu/ContextMenu.component.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { MenuPanel } from '../Menu';\r\nimport type { MenuItem } from '../Menu';\r\nimport type { ContextMenuProps } from './ContextMenu.types';\r\n\r\ninterface MenuPosition {\r\n x: number;\r\n y: number;\r\n}\r\n\r\n/**\r\n * ContextMenu - wraps any content and attaches a right-click (or long-press)\r\n * triggered menu positioned at the cursor.\r\n *\r\n * The browser's native context menu is suppressed when `disabled` is false.\r\n * The menu closes on: click outside, item selection, Escape, and scroll.\r\n *\r\n * @example\r\n * ```tsx\r\n * <ContextMenu\r\n * items={[\r\n * { type: 'item', id: 'copy', label: 'Copy', icon: Copy, onClick: () => copy() },\r\n * { type: 'item', id: 'cut', label: 'Cut', icon: Scissors, onClick: () => cut() },\r\n * { type: 'separator', id: 'sep1' },\r\n * { type: 'item', id: 'delete', label: 'Delete', icon: Trash2, onClick: () => remove(), disabled: true },\r\n * ]}\r\n * >\r\n * <div className=\"canvas-area\">...</div>\r\n * </ContextMenu>\r\n * ```\r\n */\r\nexport const ContextMenu: React.FC<ContextMenuProps> = ({\r\n items,\r\n children,\r\n disabled = false,\r\n className = '',\r\n}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [position, setPosition] = useState<MenuPosition>({ x: 0, y: 0 });\r\n const [isPositioned, setIsPositioned] = useState(false);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n const close = useCallback(() => {\r\n setIsOpen(false);\r\n setIsPositioned(false);\r\n }, []);\r\n\r\n // Measure the menu panel after it renders and clamp to viewport edges.\r\n useEffect(() => {\r\n if (!isOpen || !menuRef.current) return;\r\n\r\n const menu = menuRef.current;\r\n const { width, height } = menu.getBoundingClientRect();\r\n const vw = window.innerWidth;\r\n const vh = window.innerHeight;\r\n const GAP = 4; // px clearance from viewport edge\r\n\r\n const clampedX = Math.min(position.x, vw - width - GAP);\r\n const clampedY = Math.min(position.y, vh - height - GAP);\r\n\r\n menu.style.left = `${Math.max(GAP, clampedX)}px`;\r\n menu.style.top = `${Math.max(GAP, clampedY)}px`;\r\n setIsPositioned(true);\r\n }, [isOpen, position]);\r\n\r\n // Close on click outside.\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleMouseDown = (e: MouseEvent) => {\r\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\r\n close();\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleMouseDown);\r\n return () => document.removeEventListener('mousedown', handleMouseDown);\r\n }, [isOpen, close]);\r\n\r\n // Close on Escape or scroll.\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') close();\r\n };\r\n\r\n const handleScroll = () => close();\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n window.addEventListener('scroll', handleScroll, true); // capture: catches nested scrollers\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n window.removeEventListener('scroll', handleScroll, true);\r\n };\r\n }, [isOpen, close]);\r\n\r\n const handleContextMenu = (e: React.MouseEvent) => {\r\n if (disabled) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsOpen(true);\r\n setIsPositioned(false);\r\n setPosition({ x: e.clientX, y: e.clientY });\r\n };\r\n\r\n const handleItemClick = useCallback(\r\n (_item: MenuItem) => {\r\n close();\r\n },\r\n [close],\r\n );\r\n\r\n return (\r\n <>\r\n <div\r\n className={['eidos-context-menu-target', className].filter(Boolean).join(' ')}\r\n onContextMenu={handleContextMenu}\r\n >\r\n {children}\r\n </div>\r\n\r\n {isOpen &&\r\n createPortal(\r\n <div\r\n ref={menuRef}\r\n className={[\r\n 'eidos-context-menu-panel',\r\n isPositioned && 'eidos-context-menu-panel--positioned',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n style={{\r\n top: position.y,\r\n left: position.x,\r\n }}\r\n >\r\n <MenuPanel items={items} onItemClick={handleItemClick} />\r\n </div>,\r\n document.body,\r\n )}\r\n </>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/NumberInput/NumberInput.component.tsx
|
|
2
|
+
var _react = require('react');
|
|
3
|
+
var _lucidereact = require('lucide-react');
|
|
4
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
5
|
+
var NumberInput = _react.forwardRef.call(void 0,
|
|
6
|
+
({
|
|
7
|
+
value,
|
|
8
|
+
defaultValue = 0,
|
|
9
|
+
onChange,
|
|
10
|
+
min,
|
|
11
|
+
max,
|
|
12
|
+
step = 1,
|
|
13
|
+
precision = 0,
|
|
14
|
+
placeholder,
|
|
15
|
+
disabled = false,
|
|
16
|
+
readOnly = false,
|
|
17
|
+
label,
|
|
18
|
+
helperText,
|
|
19
|
+
error = false,
|
|
20
|
+
errorMessage,
|
|
21
|
+
size = "md",
|
|
22
|
+
fullWidth = false,
|
|
23
|
+
allowTyping = true,
|
|
24
|
+
className = "",
|
|
25
|
+
id,
|
|
26
|
+
name
|
|
27
|
+
}, ref) => {
|
|
28
|
+
const generatedId = _react.useId.call(void 0, );
|
|
29
|
+
const inputId = id || `number-input-${generatedId}`;
|
|
30
|
+
const isControlled = value !== void 0;
|
|
31
|
+
const [localValue, setLocalValue] = _react.useState.call(void 0, defaultValue);
|
|
32
|
+
const [inputText, setInputText] = _react.useState.call(void 0, defaultValue.toFixed(precision));
|
|
33
|
+
const [isFocused, setIsFocused] = _react.useState.call(void 0, false);
|
|
34
|
+
const currentValue = isControlled ? value : localValue;
|
|
35
|
+
_react.useEffect.call(void 0, () => {
|
|
36
|
+
if (isControlled) return;
|
|
37
|
+
setLocalValue((prev) => {
|
|
38
|
+
let result = prev;
|
|
39
|
+
if (min !== void 0) result = Math.max(min, result);
|
|
40
|
+
if (max !== void 0) result = Math.min(max, result);
|
|
41
|
+
return parseFloat(result.toFixed(precision));
|
|
42
|
+
});
|
|
43
|
+
}, [min, max, precision, isControlled]);
|
|
44
|
+
const clampValue = (raw) => {
|
|
45
|
+
let result = raw;
|
|
46
|
+
if (min !== void 0) result = Math.max(min, result);
|
|
47
|
+
if (max !== void 0) result = Math.min(max, result);
|
|
48
|
+
return parseFloat(result.toFixed(precision));
|
|
49
|
+
};
|
|
50
|
+
const commitValue = (newVal) => {
|
|
51
|
+
const clamped = clampValue(newVal);
|
|
52
|
+
if (!isControlled) setLocalValue(clamped);
|
|
53
|
+
_optionalChain([onChange, 'optionalCall', _ => _(clamped)]);
|
|
54
|
+
};
|
|
55
|
+
const handleDecrement = () => {
|
|
56
|
+
if (disabled || readOnly) return;
|
|
57
|
+
commitValue(currentValue - step);
|
|
58
|
+
};
|
|
59
|
+
const handleIncrement = () => {
|
|
60
|
+
if (disabled || readOnly) return;
|
|
61
|
+
commitValue(currentValue + step);
|
|
62
|
+
};
|
|
63
|
+
const handleTextFocus = () => {
|
|
64
|
+
setInputText(currentValue.toFixed(precision));
|
|
65
|
+
setIsFocused(true);
|
|
66
|
+
};
|
|
67
|
+
const handleTextChange = (e) => {
|
|
68
|
+
setInputText(e.target.value);
|
|
69
|
+
};
|
|
70
|
+
const handleTextBlur = () => {
|
|
71
|
+
setIsFocused(false);
|
|
72
|
+
const parsed = parseFloat(inputText);
|
|
73
|
+
if (!isNaN(parsed)) {
|
|
74
|
+
const clamped = clampValue(parsed);
|
|
75
|
+
if (!isControlled) setLocalValue(clamped);
|
|
76
|
+
_optionalChain([onChange, 'optionalCall', _2 => _2(clamped)]);
|
|
77
|
+
setInputText(clamped.toFixed(precision));
|
|
78
|
+
} else {
|
|
79
|
+
setInputText(currentValue.toFixed(precision));
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const handleDisplayKeyDown = (e) => {
|
|
83
|
+
if (e.key === "ArrowUp") {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
handleIncrement();
|
|
86
|
+
} else if (e.key === "ArrowDown") {
|
|
87
|
+
e.preventDefault();
|
|
88
|
+
handleDecrement();
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const formattedValue = currentValue.toFixed(precision);
|
|
92
|
+
const displayedText = allowTyping && isFocused ? inputText : formattedValue;
|
|
93
|
+
const isDecrementDisabled = disabled || readOnly || min !== void 0 && currentValue <= min;
|
|
94
|
+
const isIncrementDisabled = disabled || readOnly || max !== void 0 && currentValue >= max;
|
|
95
|
+
const rootClasses = [
|
|
96
|
+
"eidos-number-input",
|
|
97
|
+
`eidos-number-input--${size}`,
|
|
98
|
+
fullWidth && "eidos-number-input--fullWidth",
|
|
99
|
+
error && "eidos-number-input--error",
|
|
100
|
+
className
|
|
101
|
+
].filter(Boolean).join(" ");
|
|
102
|
+
const controlClasses = [
|
|
103
|
+
"eidos-number-input-control",
|
|
104
|
+
disabled && "eidos-number-input-control--disabled"
|
|
105
|
+
].filter(Boolean).join(" ");
|
|
106
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: rootClasses, children: [
|
|
107
|
+
label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: allowTyping ? inputId : void 0, className: "eidos-number-input-label", children: label }),
|
|
108
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
className: controlClasses,
|
|
112
|
+
role: allowTyping ? void 0 : "spinbutton",
|
|
113
|
+
"aria-valuemin": allowTyping ? void 0 : min,
|
|
114
|
+
"aria-valuemax": allowTyping ? void 0 : max,
|
|
115
|
+
"aria-valuenow": allowTyping ? void 0 : currentValue,
|
|
116
|
+
"aria-label": allowTyping ? void 0 : _nullishCoalesce(label, () => ( "Number input")),
|
|
117
|
+
"aria-disabled": disabled || void 0,
|
|
118
|
+
tabIndex: !allowTyping && !disabled ? 0 : void 0,
|
|
119
|
+
onKeyDown: !allowTyping ? handleDisplayKeyDown : void 0,
|
|
120
|
+
children: [
|
|
121
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
122
|
+
"button",
|
|
123
|
+
{
|
|
124
|
+
type: "button",
|
|
125
|
+
className: "eidos-number-input-btn",
|
|
126
|
+
onClick: handleDecrement,
|
|
127
|
+
disabled: isDecrementDisabled,
|
|
128
|
+
"aria-label": "Decrease",
|
|
129
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Minus, {})
|
|
130
|
+
}
|
|
131
|
+
),
|
|
132
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-number-input-divider", "aria-hidden": "true" }),
|
|
133
|
+
allowTyping ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
134
|
+
"input",
|
|
135
|
+
{
|
|
136
|
+
id: inputId,
|
|
137
|
+
type: "text",
|
|
138
|
+
className: "eidos-number-input-display",
|
|
139
|
+
value: displayedText,
|
|
140
|
+
onChange: handleTextChange,
|
|
141
|
+
onFocus: handleTextFocus,
|
|
142
|
+
onBlur: handleTextBlur,
|
|
143
|
+
onKeyDown: handleDisplayKeyDown,
|
|
144
|
+
placeholder,
|
|
145
|
+
disabled,
|
|
146
|
+
readOnly,
|
|
147
|
+
inputMode: "decimal",
|
|
148
|
+
role: "spinbutton",
|
|
149
|
+
"aria-valuemin": min,
|
|
150
|
+
"aria-valuemax": max,
|
|
151
|
+
"aria-valuenow": currentValue,
|
|
152
|
+
"aria-label": _nullishCoalesce(label, () => ( "Number input"))
|
|
153
|
+
}
|
|
154
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-number-input-display", "aria-hidden": "true", children: placeholder && formattedValue === 0 .toFixed(precision) && !isFocused ? placeholder : formattedValue }),
|
|
155
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-number-input-divider", "aria-hidden": "true" }),
|
|
156
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
157
|
+
"button",
|
|
158
|
+
{
|
|
159
|
+
type: "button",
|
|
160
|
+
className: "eidos-number-input-btn",
|
|
161
|
+
onClick: handleIncrement,
|
|
162
|
+
disabled: isIncrementDisabled,
|
|
163
|
+
"aria-label": "Increase",
|
|
164
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, {})
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
),
|
|
170
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
171
|
+
"input",
|
|
172
|
+
{
|
|
173
|
+
ref,
|
|
174
|
+
type: "number",
|
|
175
|
+
name,
|
|
176
|
+
value: currentValue,
|
|
177
|
+
onChange: () => {
|
|
178
|
+
},
|
|
179
|
+
className: "eidos-number-input-hidden",
|
|
180
|
+
tabIndex: -1,
|
|
181
|
+
"aria-hidden": "true",
|
|
182
|
+
disabled,
|
|
183
|
+
readOnly,
|
|
184
|
+
min,
|
|
185
|
+
max,
|
|
186
|
+
step
|
|
187
|
+
}
|
|
188
|
+
),
|
|
189
|
+
helperText && !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-number-input-helper", children: helperText }),
|
|
190
|
+
error && errorMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-number-input-error", role: "alert", children: errorMessage })
|
|
191
|
+
] });
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
NumberInput.displayName = "NumberInput";
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
exports.NumberInput = NumberInput;
|
|
199
|
+
//# sourceMappingURL=chunk-YLKESEHQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/pedromealha/Documents/Repositories/Personal/eidos-ui/dist/chunk-YLKESEHQ.cjs","../src/components/NumberInput/NumberInput.component.tsx"],"names":[],"mappings":"AAAA;ACAA,8BAA8D;AAC9D,2CAA4B;AAiJlB,+CAAA;AA9IH,IAAM,YAAA,EAAc,+BAAA;AAAA,EACzB,CACE;AAAA,IACE,KAAA;AAAA,IACA,aAAA,EAAe,CAAA;AAAA,IACf,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA;AAAA,IACA,SAAA,EAAW,KAAA;AAAA,IACX,SAAA,EAAW,KAAA;AAAA,IACX,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,EAAQ,KAAA;AAAA,IACR,YAAA;AAAA,IACA,KAAA,EAAO,IAAA;AAAA,IACP,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,UAAA,EAAY,EAAA;AAAA,IACZ,EAAA;AAAA,IACA;AAAA,EACF,CAAA,EACA,GAAA,EAAA,GACG;AACH,IAAA,MAAM,YAAA,EAAc,0BAAA,CAAM;AAC1B,IAAA,MAAM,QAAA,EAAU,GAAA,GAAM,CAAA,aAAA,EAAgB,WAAW,CAAA,CAAA;AAGlB,IAAA;AACsB,IAAA;AAGF,IAAA;AACH,IAAA;AAEH,IAAA;AAI7B,IAAA;AACI,MAAA;AACM,MAAA;AACT,QAAA;AACiC,QAAA;AACA,QAAA;AACH,QAAA;AAC5C,MAAA;AACmC,IAAA;AAGM,IAAA;AAC7B,MAAA;AACiC,MAAA;AACA,MAAA;AACH,MAAA;AAC7C,IAAA;AAEwC,IAAA;AACL,MAAA;AACO,MAAA;AACtB,sBAAA;AACpB,IAAA;AAG8B,IAAA;AACF,MAAA;AACK,MAAA;AACjC,IAAA;AAE8B,IAAA;AACF,MAAA;AACK,MAAA;AACjC,IAAA;AAG8B,IAAA;AACgB,MAAA;AAC3B,MAAA;AACnB,IAAA;AAEqE,IAAA;AACxC,MAAA;AAC7B,IAAA;AAE6B,IAAA;AACT,MAAA;AACiB,MAAA;AACf,MAAA;AACe,QAAA;AACO,QAAA;AACtB,wBAAA;AACqB,QAAA;AAClC,MAAA;AAEuC,QAAA;AAC9C,MAAA;AACF,IAAA;AAGyD,IAAA;AAC9B,MAAA;AACN,QAAA;AACD,QAAA;AACgB,MAAA;AACf,QAAA;AACD,QAAA;AAClB,MAAA;AACF,IAAA;AAK4C,IAAA;AACK,IAAA;AAGT,IAAA;AACA,IAAA;AAGpB,IAAA;AAClB,MAAA;AAC2B,MAAA;AACd,MAAA;AACJ,MAAA;AACT,MAAA;AAGS,IAAA;AAEY,IAAA;AACrB,MAAA;AACY,MAAA;AAGH,IAAA;AAGO,IAAA;AAEL,MAAA;AAKT,sBAAA;AAAC,QAAA;AAAA,QAAA;AACY,UAAA;AACqB,UAAA;AACS,UAAA;AACA,UAAA;AACA,UAAA;AACF,UAAA;AACZ,UAAA;AACe,UAAA;AAChB,UAAA;AAE1B,UAAA;AAAA,4BAAA;AAAC,cAAA;AAAA,cAAA;AACM,gBAAA;AACK,gBAAA;AACD,gBAAA;AACC,gBAAA;AACC,gBAAA;AAEV,gBAAA;AAAM,cAAA;AACT,YAAA;AAEe,4BAAA;AAGb,YAAA;AAAC,cAAA;AAAA,cAAA;AACK,gBAAA;AACC,gBAAA;AACK,gBAAA;AACH,gBAAA;AACG,gBAAA;AACD,gBAAA;AACD,gBAAA;AACG,gBAAA;AACX,gBAAA;AACA,gBAAA;AACA,gBAAA;AACU,gBAAA;AACL,gBAAA;AACU,gBAAA;AACA,gBAAA;AACA,gBAAA;AACM,gBAAA;AAAA,cAAA;AAGjB,YAAA;AAOO,4BAAA;AAEf,4BAAA;AAAC,cAAA;AAAA,cAAA;AACM,gBAAA;AACK,gBAAA;AACD,gBAAA;AACC,gBAAA;AACC,gBAAA;AAEL,gBAAA;AAAA,cAAA;AACR,YAAA;AAAA,UAAA;AAAA,QAAA;AACF,MAAA;AAGA,sBAAA;AAAC,QAAA;AAAA,QAAA;AACC,UAAA;AACK,UAAA;AACL,UAAA;AACO,UAAA;AACS,UAAA;AAAC,UAAA;AACP,UAAA;AACA,UAAA;AACE,UAAA;AACZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AAAA,QAAA;AACF,MAAA;AAE0B,MAAA;AAGvB,MAAA;AAIL,IAAA;AAEJ,EAAA;AACF;AAE0B;ADlD4B;AACA;AACA;AACA","file":"/Users/pedromealha/Documents/Repositories/Personal/eidos-ui/dist/chunk-YLKESEHQ.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useEffect, useId } from 'react';\r\nimport { Minus, Plus } from 'lucide-react';\r\nimport type { NumberInputProps } from './NumberInput.types';\r\n\r\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\r\n (\r\n {\r\n value,\r\n defaultValue = 0,\r\n onChange,\r\n min,\r\n max,\r\n step = 1,\r\n precision = 0,\r\n placeholder,\r\n disabled = false,\r\n readOnly = false,\r\n label,\r\n helperText,\r\n error = false,\r\n errorMessage,\r\n size = 'md',\r\n fullWidth = false,\r\n allowTyping = true,\r\n className = '',\r\n id,\r\n name,\r\n },\r\n ref,\r\n ) => {\r\n const generatedId = useId();\r\n const inputId = id || `number-input-${generatedId}`;\r\n\r\n // Controlled / uncontrolled bridge\r\n const isControlled = value !== undefined;\r\n const [localValue, setLocalValue] = useState<number>(defaultValue);\r\n\r\n // Intermediate text while the user is actively typing\r\n const [inputText, setInputText] = useState<string>(defaultValue.toFixed(precision));\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n const currentValue = isControlled ? value! : localValue;\r\n\r\n // When min/max props change (e.g. via Storybook controls), clamp the\r\n // uncontrolled localValue so the display never shows an out-of-range value.\r\n useEffect(() => {\r\n if (isControlled) return;\r\n setLocalValue((prev) => {\r\n let result = prev;\r\n if (min !== undefined) result = Math.max(min, result);\r\n if (max !== undefined) result = Math.min(max, result);\r\n return parseFloat(result.toFixed(precision));\r\n });\r\n }, [min, max, precision, isControlled]);\r\n\r\n // Clamp to [min, max] and apply precision rounding\r\n const clampValue = (raw: number): number => {\r\n let result = raw;\r\n if (min !== undefined) result = Math.max(min, result);\r\n if (max !== undefined) result = Math.min(max, result);\r\n return parseFloat(result.toFixed(precision));\r\n };\r\n\r\n const commitValue = (newVal: number) => {\r\n const clamped = clampValue(newVal);\r\n if (!isControlled) setLocalValue(clamped);\r\n onChange?.(clamped);\r\n };\r\n\r\n // ── Stepper buttons ────────────────────────────────────────────────────\r\n const handleDecrement = () => {\r\n if (disabled || readOnly) return;\r\n commitValue(currentValue - step);\r\n };\r\n\r\n const handleIncrement = () => {\r\n if (disabled || readOnly) return;\r\n commitValue(currentValue + step);\r\n };\r\n\r\n // ── Typing mode handlers ───────────────────────────────────────────────\r\n const handleTextFocus = () => {\r\n setInputText(currentValue.toFixed(precision));\r\n setIsFocused(true);\r\n };\r\n\r\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputText(e.target.value);\r\n };\r\n\r\n const handleTextBlur = () => {\r\n setIsFocused(false);\r\n const parsed = parseFloat(inputText);\r\n if (!isNaN(parsed)) {\r\n const clamped = clampValue(parsed);\r\n if (!isControlled) setLocalValue(clamped);\r\n onChange?.(clamped);\r\n setInputText(clamped.toFixed(precision));\r\n } else {\r\n // Revert to the last known-good value\r\n setInputText(currentValue.toFixed(precision));\r\n }\r\n };\r\n\r\n // ArrowUp / ArrowDown keyboard support for both display modes\r\n const handleDisplayKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n handleIncrement();\r\n } else if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n handleDecrement();\r\n }\r\n };\r\n\r\n // ── Display value ──────────────────────────────────────────────────────\r\n // Show intermediate inputText while focused in typing mode;\r\n // otherwise always derive from the real (controlled/uncontrolled) value.\r\n const formattedValue = currentValue.toFixed(precision);\r\n const displayedText = allowTyping && isFocused ? inputText : formattedValue;\r\n\r\n // ── Disabled states for buttons ────────────────────────────────────────\r\n const isDecrementDisabled = disabled || readOnly || (min !== undefined && currentValue <= min);\r\n const isIncrementDisabled = disabled || readOnly || (max !== undefined && currentValue >= max);\r\n\r\n // ── CSS classes ────────────────────────────────────────────────────────\r\n const rootClasses = [\r\n 'eidos-number-input',\r\n `eidos-number-input--${size}`,\r\n fullWidth && 'eidos-number-input--fullWidth',\r\n error && 'eidos-number-input--error',\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const controlClasses = [\r\n 'eidos-number-input-control',\r\n disabled && 'eidos-number-input-control--disabled',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <div className={rootClasses}>\r\n {label && (\r\n <label htmlFor={allowTyping ? inputId : undefined} className=\"eidos-number-input-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div\r\n className={controlClasses}\r\n role={allowTyping ? undefined : 'spinbutton'}\r\n aria-valuemin={allowTyping ? undefined : min}\r\n aria-valuemax={allowTyping ? undefined : max}\r\n aria-valuenow={allowTyping ? undefined : currentValue}\r\n aria-label={allowTyping ? undefined : (label ?? 'Number input')}\r\n aria-disabled={disabled || undefined}\r\n tabIndex={!allowTyping && !disabled ? 0 : undefined}\r\n onKeyDown={!allowTyping ? handleDisplayKeyDown : undefined}\r\n >\r\n <button\r\n type=\"button\"\r\n className=\"eidos-number-input-btn\"\r\n onClick={handleDecrement}\r\n disabled={isDecrementDisabled}\r\n aria-label=\"Decrease\"\r\n >\r\n <Minus />\r\n </button>\r\n\r\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\r\n\r\n {allowTyping ? (\r\n <input\r\n id={inputId}\r\n type=\"text\"\r\n className=\"eidos-number-input-display\"\r\n value={displayedText}\r\n onChange={handleTextChange}\r\n onFocus={handleTextFocus}\r\n onBlur={handleTextBlur}\r\n onKeyDown={handleDisplayKeyDown}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n inputMode=\"decimal\"\r\n role=\"spinbutton\"\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={currentValue}\r\n aria-label={label ?? 'Number input'}\r\n />\r\n ) : (\r\n <span className=\"eidos-number-input-display\" aria-hidden=\"true\">\r\n {placeholder && formattedValue === (0).toFixed(precision) && !isFocused\r\n ? placeholder\r\n : formattedValue}\r\n </span>\r\n )}\r\n\r\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\r\n\r\n <button\r\n type=\"button\"\r\n className=\"eidos-number-input-btn\"\r\n onClick={handleIncrement}\r\n disabled={isIncrementDisabled}\r\n aria-label=\"Increase\"\r\n >\r\n <Plus />\r\n </button>\r\n </div>\r\n\r\n {/* Hidden native <input type=\"number\"> for form integration */}\r\n <input\r\n ref={ref}\r\n type=\"number\"\r\n name={name}\r\n value={currentValue}\r\n onChange={() => {}}\r\n className=\"eidos-number-input-hidden\"\r\n tabIndex={-1}\r\n aria-hidden=\"true\"\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n min={min}\r\n max={max}\r\n step={step}\r\n />\r\n\r\n {helperText && !error && <span className=\"eidos-number-input-helper\">{helperText}</span>}\r\n\r\n {error && errorMessage && (\r\n <span className=\"eidos-number-input-error\" role=\"alert\">\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nNumberInput.displayName = 'NumberInput';\r\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Toolbar
|
|
3
|
+
} from "./chunk-VTAABT55.js";
|
|
4
|
+
import {
|
|
5
|
+
Navigation
|
|
6
|
+
} from "./chunk-MOX6LYGC.js";
|
|
7
|
+
import {
|
|
8
|
+
Footer
|
|
9
|
+
} from "./chunk-GOVOQZYN.js";
|
|
10
|
+
import {
|
|
11
|
+
Header
|
|
12
|
+
} from "./chunk-HUNMRKGE.js";
|
|
13
|
+
|
|
14
|
+
// src/components/PageLayout/PageLayout.component.tsx
|
|
15
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
var defaultFooter = { copyright: `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} Eidos UI` };
|
|
17
|
+
var PageLayout = ({
|
|
18
|
+
toolbar,
|
|
19
|
+
navigation,
|
|
20
|
+
header,
|
|
21
|
+
footer,
|
|
22
|
+
children,
|
|
23
|
+
className = "",
|
|
24
|
+
...rest
|
|
25
|
+
}) => {
|
|
26
|
+
const classes = ["eidos-pagelayout", className].filter(Boolean).join(" ");
|
|
27
|
+
return /* @__PURE__ */ jsxs("div", { className: classes, ...rest, children: [
|
|
28
|
+
/* @__PURE__ */ jsx(
|
|
29
|
+
Toolbar,
|
|
30
|
+
{
|
|
31
|
+
breadcrumbs: toolbar?.breadcrumbs || { items: [], separator: /* @__PURE__ */ jsx(Fragment, {}) },
|
|
32
|
+
cmdPaletteItems: toolbar?.cmdPaletteItems || [],
|
|
33
|
+
actions: toolbar?.actions || [],
|
|
34
|
+
userMenu: toolbar?.userMenu || [],
|
|
35
|
+
className: "eidos-pagelayout__toolbar"
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsx("div", { className: "eidos-pagelayout__navigation", children: navigation && /* @__PURE__ */ jsx(Navigation, { ...navigation }) }),
|
|
39
|
+
/* @__PURE__ */ jsxs("main", { className: "eidos-pagelayout__content", children: [
|
|
40
|
+
header && /* @__PURE__ */ jsx(
|
|
41
|
+
Header,
|
|
42
|
+
{
|
|
43
|
+
...header,
|
|
44
|
+
className: ["eidos-pagelayout__header", header.className].filter(Boolean).join(" ")
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: "eidos-pagelayout__body", children }),
|
|
48
|
+
/* @__PURE__ */ jsx(
|
|
49
|
+
Footer,
|
|
50
|
+
{
|
|
51
|
+
...footer ?? defaultFooter,
|
|
52
|
+
className: ["eidos-pagelayout__footer", footer?.className].filter(Boolean).join(" ")
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
] })
|
|
56
|
+
] });
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
PageLayout
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=chunk-YPK7RV3Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/PageLayout/PageLayout.component.tsx"],"sourcesContent":["import React from 'react';\r\nimport type { PageLayoutProps } from './PageLayout.types';\r\nimport './PageLayout.scss';\r\nimport { Toolbar } from '../Toolbar';\r\nimport { Header } from '../Header';\r\nimport { Footer } from '../Footer';\r\nimport type { FooterProps } from '../Footer';\r\nimport { Navigation } from '../Navigation';\r\n\r\nconst defaultFooter: FooterProps = { copyright: `© ${new Date().getFullYear()} Eidos UI` };\r\n\r\nexport const PageLayout: React.FC<PageLayoutProps> = ({\r\n toolbar,\r\n navigation,\r\n header,\r\n footer,\r\n children,\r\n className = '',\r\n ...rest\r\n}) => {\r\n const classes = ['eidos-pagelayout', className].filter(Boolean).join(' ');\r\n\r\n return (\r\n <div className={classes} {...rest}>\r\n <Toolbar\r\n breadcrumbs={toolbar?.breadcrumbs || { items: [], separator: <></> }}\r\n cmdPaletteItems={toolbar?.cmdPaletteItems || []}\r\n actions={toolbar?.actions || []}\r\n userMenu={toolbar?.userMenu || []}\r\n className=\"eidos-pagelayout__toolbar\"\r\n />\r\n <div className=\"eidos-pagelayout__navigation\">\r\n {navigation && <Navigation {...navigation} />}\r\n </div>\r\n <main className=\"eidos-pagelayout__content\">\r\n {header && (\r\n <Header\r\n {...header}\r\n className={['eidos-pagelayout__header', header.className].filter(Boolean).join(' ')}\r\n />\r\n )}\r\n <div className=\"eidos-pagelayout__body\">{children}</div>\r\n <Footer\r\n {...(footer ?? defaultFooter)}\r\n className={['eidos-pagelayout__footer', footer?.className].filter(Boolean).join(' ')}\r\n />\r\n </main>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;AAyBqE,wBAS/D,YAT+D;AAhBrE,IAAM,gBAA6B,EAAE,WAAW,SAAK,oBAAI,KAAK,GAAE,YAAY,CAAC,YAAY;AAElF,IAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,CAAC,oBAAoB,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAExE,SACE,qBAAC,SAAI,WAAW,SAAU,GAAG,MAC3B;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,SAAS,eAAe,EAAE,OAAO,CAAC,GAAG,WAAW,gCAAE,EAAI;AAAA,QACnE,iBAAiB,SAAS,mBAAmB,CAAC;AAAA,QAC9C,SAAS,SAAS,WAAW,CAAC;AAAA,QAC9B,UAAU,SAAS,YAAY,CAAC;AAAA,QAChC,WAAU;AAAA;AAAA,IACZ;AAAA,IACA,oBAAC,SAAI,WAAU,gCACZ,wBAAc,oBAAC,cAAY,GAAG,YAAY,GAC7C;AAAA,IACA,qBAAC,UAAK,WAAU,6BACb;AAAA,gBACC;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,WAAW,CAAC,4BAA4B,OAAO,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA;AAAA,MACpF;AAAA,MAEF,oBAAC,SAAI,WAAU,0BAA0B,UAAS;AAAA,MAClD;AAAA,QAAC;AAAA;AAAA,UACE,GAAI,UAAU;AAAA,UACf,WAAW,CAAC,4BAA4B,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA;AAAA,MACrF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Input
|
|
3
|
+
} from "./chunk-A35Y5MRJ.js";
|
|
4
|
+
|
|
5
|
+
// src/components/InlineEdit/InlineEdit.component.tsx
|
|
6
|
+
import { useState, useRef, useCallback } from "react";
|
|
7
|
+
import { Pencil } from "lucide-react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
var InlineEdit = ({
|
|
10
|
+
value,
|
|
11
|
+
onChange,
|
|
12
|
+
onConfirm,
|
|
13
|
+
onCancel,
|
|
14
|
+
editing: editingProp,
|
|
15
|
+
onEditingChange,
|
|
16
|
+
type = "text",
|
|
17
|
+
placeholder,
|
|
18
|
+
trigger = "click",
|
|
19
|
+
size = "md",
|
|
20
|
+
fullWidth = false,
|
|
21
|
+
disabled = false,
|
|
22
|
+
confirmOnBlur = true,
|
|
23
|
+
renderDisplay,
|
|
24
|
+
showEditIcon = true,
|
|
25
|
+
inputVariant = "outlined",
|
|
26
|
+
className = ""
|
|
27
|
+
}) => {
|
|
28
|
+
const isControlled = editingProp !== void 0;
|
|
29
|
+
const [internalEditing, setInternalEditing] = useState(false);
|
|
30
|
+
const editing = isControlled ? editingProp : internalEditing;
|
|
31
|
+
const valueAtEditStart = useRef(value);
|
|
32
|
+
const [draft, setDraft] = useState(value);
|
|
33
|
+
const openEdit = useCallback(() => {
|
|
34
|
+
if (disabled) return;
|
|
35
|
+
valueAtEditStart.current = value;
|
|
36
|
+
setDraft(value);
|
|
37
|
+
if (!isControlled) setInternalEditing(true);
|
|
38
|
+
onEditingChange?.(true);
|
|
39
|
+
}, [disabled, isControlled, onEditingChange, value]);
|
|
40
|
+
const closeEdit = useCallback(() => {
|
|
41
|
+
if (!isControlled) setInternalEditing(false);
|
|
42
|
+
onEditingChange?.(false);
|
|
43
|
+
}, [isControlled, onEditingChange]);
|
|
44
|
+
const confirm = useCallback(() => {
|
|
45
|
+
closeEdit();
|
|
46
|
+
onConfirm?.(draft);
|
|
47
|
+
}, [closeEdit, draft, onConfirm]);
|
|
48
|
+
const cancel = useCallback(() => {
|
|
49
|
+
setDraft(valueAtEditStart.current);
|
|
50
|
+
onChange?.(valueAtEditStart.current);
|
|
51
|
+
closeEdit();
|
|
52
|
+
onCancel?.();
|
|
53
|
+
}, [closeEdit, onChange, onCancel]);
|
|
54
|
+
const handleChange = (e) => {
|
|
55
|
+
setDraft(e.target.value);
|
|
56
|
+
onChange?.(e.target.value);
|
|
57
|
+
};
|
|
58
|
+
const handleKeyDown = (e) => {
|
|
59
|
+
if (e.key === "Enter") {
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
confirm();
|
|
63
|
+
} else if (e.key === "Escape") {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
cancel();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const handleBlur = () => {
|
|
70
|
+
if (confirmOnBlur) confirm();
|
|
71
|
+
};
|
|
72
|
+
const displayTriggerProps = trigger === "doubleClick" ? { onDoubleClick: openEdit } : { onClick: openEdit };
|
|
73
|
+
if (editing) {
|
|
74
|
+
return /* @__PURE__ */ jsx(
|
|
75
|
+
Input,
|
|
76
|
+
{
|
|
77
|
+
type,
|
|
78
|
+
variant: inputVariant,
|
|
79
|
+
size,
|
|
80
|
+
value: draft,
|
|
81
|
+
onChange: handleChange,
|
|
82
|
+
onKeyDown: handleKeyDown,
|
|
83
|
+
onBlur: handleBlur,
|
|
84
|
+
placeholder,
|
|
85
|
+
fullWidth,
|
|
86
|
+
clearable: false,
|
|
87
|
+
autoFocus: true,
|
|
88
|
+
className: `eidos-inline-edit eidos-inline-edit--editing ${className}`
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
const isEmpty = !value;
|
|
93
|
+
return /* @__PURE__ */ jsxs(
|
|
94
|
+
"span",
|
|
95
|
+
{
|
|
96
|
+
role: "button",
|
|
97
|
+
tabIndex: disabled ? void 0 : 0,
|
|
98
|
+
"aria-label": disabled ? void 0 : "Click to edit",
|
|
99
|
+
className: [
|
|
100
|
+
"eidos-inline-edit",
|
|
101
|
+
`eidos-inline-edit--${size}`,
|
|
102
|
+
fullWidth ? "eidos-inline-edit--full-width" : "",
|
|
103
|
+
disabled ? "eidos-inline-edit--disabled" : "",
|
|
104
|
+
isEmpty ? "eidos-inline-edit--empty" : "",
|
|
105
|
+
className
|
|
106
|
+
].filter(Boolean).join(" "),
|
|
107
|
+
...disabled ? {} : displayTriggerProps,
|
|
108
|
+
onKeyDown: disabled ? void 0 : (e) => {
|
|
109
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
openEdit();
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ jsx("span", { className: "eidos-inline-edit__text", children: renderDisplay ? renderDisplay(value) : value || /* @__PURE__ */ jsx("span", { className: "eidos-inline-edit__placeholder", children: placeholder }) }),
|
|
116
|
+
!disabled && showEditIcon && /* @__PURE__ */ jsx("span", { className: "eidos-inline-edit__icon", "aria-hidden": true, children: /* @__PURE__ */ jsx(Pencil, {}) })
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export {
|
|
123
|
+
InlineEdit
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=chunk-Z7S4UQKY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/InlineEdit/InlineEdit.component.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from 'react';\r\nimport { Pencil } from 'lucide-react';\r\nimport { Input } from '../Input/Input.component';\r\nimport type { InlineEditProps } from './InlineEdit.types';\r\nimport './InlineEdit.scss';\r\n\r\nexport const InlineEdit: React.FC<InlineEditProps> = ({\r\n value,\r\n onChange,\r\n onConfirm,\r\n onCancel,\r\n editing: editingProp,\r\n onEditingChange,\r\n type = 'text',\r\n placeholder,\r\n trigger = 'click',\r\n size = 'md',\r\n fullWidth = false,\r\n disabled = false,\r\n confirmOnBlur = true,\r\n renderDisplay,\r\n showEditIcon = true,\r\n inputVariant = 'outlined',\r\n className = '',\r\n}) => {\r\n const isControlled = editingProp !== undefined;\r\n const [internalEditing, setInternalEditing] = useState(false);\r\n const editing = isControlled ? editingProp : internalEditing;\r\n\r\n // Track the value at the moment editing begins so Esc can revert to it.\r\n const valueAtEditStart = useRef(value);\r\n\r\n // Local draft while editing - keeps Input value in sync without forcing the\r\n // parent to wire `onChange` just to see live keystrokes.\r\n const [draft, setDraft] = useState(value);\r\n\r\n // ------------------------------------------------------------------\r\n // Editing state helpers\r\n // ------------------------------------------------------------------\r\n\r\n const openEdit = useCallback(() => {\r\n if (disabled) return;\r\n valueAtEditStart.current = value;\r\n setDraft(value);\r\n if (!isControlled) setInternalEditing(true);\r\n onEditingChange?.(true);\r\n }, [disabled, isControlled, onEditingChange, value]);\r\n\r\n const closeEdit = useCallback(() => {\r\n if (!isControlled) setInternalEditing(false);\r\n onEditingChange?.(false);\r\n }, [isControlled, onEditingChange]);\r\n\r\n const confirm = useCallback(() => {\r\n closeEdit();\r\n onConfirm?.(draft);\r\n }, [closeEdit, draft, onConfirm]);\r\n\r\n const cancel = useCallback(() => {\r\n // Revert the draft AND propagate the original value so the parent stays in\r\n // sync when `onChange` is used to maintain external state.\r\n setDraft(valueAtEditStart.current);\r\n onChange?.(valueAtEditStart.current);\r\n closeEdit();\r\n onCancel?.();\r\n }, [closeEdit, onChange, onCancel]);\r\n\r\n // ------------------------------------------------------------------\r\n // Input handlers\r\n // ------------------------------------------------------------------\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setDraft(e.target.value);\r\n onChange?.(e.target.value);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n // Stop propagation so parent grids/tables don't double-handle Enter.\r\n e.stopPropagation();\r\n confirm();\r\n } else if (e.key === 'Escape') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n cancel();\r\n }\r\n // Tab and Arrow keys intentionally bubble - consumers like DataGrid own\r\n // Tab-to-next-cell and arrow-key navigation at the container level.\r\n };\r\n\r\n const handleBlur = () => {\r\n if (confirmOnBlur) confirm();\r\n };\r\n\r\n // ------------------------------------------------------------------\r\n // Trigger props for display mode\r\n // ------------------------------------------------------------------\r\n\r\n const displayTriggerProps =\r\n trigger === 'doubleClick' ? { onDoubleClick: openEdit } : { onClick: openEdit };\r\n\r\n // ------------------------------------------------------------------\r\n // Render: edit mode\r\n // ------------------------------------------------------------------\r\n\r\n if (editing) {\r\n return (\r\n <Input\r\n type={type}\r\n variant={inputVariant}\r\n size={size}\r\n value={draft}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n onBlur={handleBlur}\r\n placeholder={placeholder}\r\n fullWidth={fullWidth}\r\n clearable={false}\r\n autoFocus\r\n className={`eidos-inline-edit eidos-inline-edit--editing ${className}`}\r\n />\r\n );\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Render: display mode\r\n // ------------------------------------------------------------------\r\n\r\n const isEmpty = !value;\r\n\r\n return (\r\n <span\r\n role=\"button\"\r\n tabIndex={disabled ? undefined : 0}\r\n aria-label={disabled ? undefined : 'Click to edit'}\r\n className={[\r\n 'eidos-inline-edit',\r\n `eidos-inline-edit--${size}`,\r\n fullWidth ? 'eidos-inline-edit--full-width' : '',\r\n disabled ? 'eidos-inline-edit--disabled' : '',\r\n isEmpty ? 'eidos-inline-edit--empty' : '',\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n {...(disabled ? {} : displayTriggerProps)}\r\n onKeyDown={\r\n disabled\r\n ? undefined\r\n : (e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n openEdit();\r\n }\r\n }\r\n }\r\n >\r\n <span className=\"eidos-inline-edit__text\">\r\n {renderDisplay\r\n ? renderDisplay(value)\r\n : value || <span className=\"eidos-inline-edit__placeholder\">{placeholder}</span>}\r\n </span>\r\n {!disabled && showEditIcon && (\r\n <span className=\"eidos-inline-edit__icon\" aria-hidden>\r\n <Pencil />\r\n </span>\r\n )}\r\n </span>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// src/components/Accordion/Accordion.component.tsx
|
|
2
|
+
import React, { useState, useRef, useContext, useId, useEffect, useCallback } from "react";
|
|
3
|
+
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
var toArray = (v) => v === void 0 ? [] : Array.isArray(v) ? v : [v];
|
|
6
|
+
var AccordionContext = React.createContext(null);
|
|
7
|
+
var useAccordion = () => {
|
|
8
|
+
const ctx = useContext(AccordionContext);
|
|
9
|
+
if (!ctx) throw new Error("AccordionItem must be used inside <Accordion>");
|
|
10
|
+
return ctx;
|
|
11
|
+
};
|
|
12
|
+
var Accordion = ({
|
|
13
|
+
multiple = false,
|
|
14
|
+
value,
|
|
15
|
+
defaultValue,
|
|
16
|
+
onChange,
|
|
17
|
+
variant = "default",
|
|
18
|
+
size = "md",
|
|
19
|
+
color = "primary",
|
|
20
|
+
className = "",
|
|
21
|
+
children
|
|
22
|
+
}) => {
|
|
23
|
+
const isControlled = value !== void 0;
|
|
24
|
+
const [localOpen, setLocalOpen] = useState(() => toArray(defaultValue));
|
|
25
|
+
const openValues = isControlled ? toArray(value) : localOpen;
|
|
26
|
+
const toggle = useCallback(
|
|
27
|
+
(itemValue) => {
|
|
28
|
+
const isOpen = openValues.includes(itemValue);
|
|
29
|
+
let next;
|
|
30
|
+
if (multiple) {
|
|
31
|
+
next = isOpen ? openValues.filter((v) => v !== itemValue) : [...openValues, itemValue];
|
|
32
|
+
} else {
|
|
33
|
+
next = isOpen ? [] : [itemValue];
|
|
34
|
+
}
|
|
35
|
+
if (!isControlled) setLocalOpen(next);
|
|
36
|
+
onChange?.(multiple ? next : next[0] ?? "");
|
|
37
|
+
},
|
|
38
|
+
[openValues, multiple, isControlled, onChange]
|
|
39
|
+
);
|
|
40
|
+
const rootClasses = ["eidos-accordion", `eidos-accordion--${variant}`, className].filter(Boolean).join(" ");
|
|
41
|
+
return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: { openValues, toggle, variant, size, color }, children: /* @__PURE__ */ jsx("div", { className: rootClasses, children }) });
|
|
42
|
+
};
|
|
43
|
+
Accordion.displayName = "Accordion";
|
|
44
|
+
var AccordionItem = ({
|
|
45
|
+
value,
|
|
46
|
+
label,
|
|
47
|
+
icon,
|
|
48
|
+
disabled = false,
|
|
49
|
+
className = "",
|
|
50
|
+
children
|
|
51
|
+
}) => {
|
|
52
|
+
const { openValues, toggle, size, color } = useAccordion();
|
|
53
|
+
const isOpen = openValues.includes(value);
|
|
54
|
+
const contentRef = useRef(null);
|
|
55
|
+
const triggerId = useId();
|
|
56
|
+
const panelId = useId();
|
|
57
|
+
const [maxHeight, setMaxHeight] = useState(0);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (!contentRef.current) return;
|
|
60
|
+
setMaxHeight(isOpen ? contentRef.current.scrollHeight : 0);
|
|
61
|
+
}, [isOpen]);
|
|
62
|
+
const itemClasses = [
|
|
63
|
+
"eidos-accordion-item",
|
|
64
|
+
isOpen && "eidos-accordion-item--open",
|
|
65
|
+
disabled && "eidos-accordion-item--disabled",
|
|
66
|
+
className
|
|
67
|
+
].filter(Boolean).join(" ");
|
|
68
|
+
const triggerClasses = [
|
|
69
|
+
"eidos-accordion-trigger",
|
|
70
|
+
`eidos-accordion-trigger--${size}`,
|
|
71
|
+
isOpen && "eidos-accordion-trigger--open",
|
|
72
|
+
isOpen && `eidos-accordion-trigger--${color}`
|
|
73
|
+
].filter(Boolean).join(" ");
|
|
74
|
+
return /* @__PURE__ */ jsxs("div", { className: itemClasses, children: [
|
|
75
|
+
/* @__PURE__ */ jsxs(
|
|
76
|
+
"button",
|
|
77
|
+
{
|
|
78
|
+
id: triggerId,
|
|
79
|
+
type: "button",
|
|
80
|
+
"aria-expanded": isOpen,
|
|
81
|
+
"aria-controls": panelId,
|
|
82
|
+
disabled,
|
|
83
|
+
onClick: () => !disabled && toggle(value),
|
|
84
|
+
className: triggerClasses,
|
|
85
|
+
children: [
|
|
86
|
+
icon && /* @__PURE__ */ jsx("span", { className: "eidos-accordion-trigger-icon", children: icon }),
|
|
87
|
+
/* @__PURE__ */ jsx("span", { className: "eidos-accordion-trigger-label", children: label }),
|
|
88
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "eidos-accordion-chevron", "aria-hidden": "true" })
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
"div",
|
|
94
|
+
{
|
|
95
|
+
id: panelId,
|
|
96
|
+
role: "region",
|
|
97
|
+
"aria-labelledby": triggerId,
|
|
98
|
+
ref: contentRef,
|
|
99
|
+
className: "eidos-accordion-content-wrapper",
|
|
100
|
+
style: { maxHeight: `${maxHeight}px` },
|
|
101
|
+
children: /* @__PURE__ */ jsx("div", { className: "eidos-accordion-content", children })
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] });
|
|
105
|
+
};
|
|
106
|
+
AccordionItem.displayName = "AccordionItem";
|
|
107
|
+
|
|
108
|
+
export {
|
|
109
|
+
Accordion,
|
|
110
|
+
AccordionItem
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=chunk-ZBGTVTQJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Accordion/Accordion.component.tsx"],"sourcesContent":["import React, { useState, useRef, useContext, useId, useEffect, useCallback } from 'react';\r\nimport { ChevronDown } from 'lucide-react';\r\nimport type { AccordionProps, AccordionItemProps, AccordionContextValue } from './Accordion.types';\r\n\r\n// ============================================================================\r\n// HELPERS\r\n// ============================================================================\r\n\r\n/** Normalise a controlled/default value (string | string[] | undefined) to string[]. */\r\nconst toArray = (v: string | string[] | undefined): string[] =>\r\n v === undefined ? [] : Array.isArray(v) ? v : [v];\r\n\r\n// ============================================================================\r\n// CONTEXT\r\n// ============================================================================\r\n\r\nconst AccordionContext = React.createContext<AccordionContextValue | null>(null);\r\n\r\nconst useAccordion = (): AccordionContextValue => {\r\n const ctx = useContext(AccordionContext);\r\n if (!ctx) throw new Error('AccordionItem must be used inside <Accordion>');\r\n return ctx;\r\n};\r\n\r\n// ============================================================================\r\n// ACCORDION - root container; owns open state; provides context\r\n// ============================================================================\r\n\r\nexport const Accordion: React.FC<AccordionProps> = ({\r\n multiple = false,\r\n value,\r\n defaultValue,\r\n onChange,\r\n variant = 'default',\r\n size = 'md',\r\n color = 'primary',\r\n className = '',\r\n children,\r\n}) => {\r\n const isControlled = value !== undefined;\r\n\r\n const [localOpen, setLocalOpen] = useState<string[]>(() => toArray(defaultValue));\r\n const openValues = isControlled ? toArray(value) : localOpen;\r\n\r\n const toggle = useCallback(\r\n (itemValue: string) => {\r\n const isOpen = openValues.includes(itemValue);\r\n let next: string[];\r\n\r\n if (multiple) {\r\n next = isOpen ? openValues.filter((v) => v !== itemValue) : [...openValues, itemValue];\r\n } else {\r\n next = isOpen ? [] : [itemValue];\r\n }\r\n\r\n if (!isControlled) setLocalOpen(next);\r\n onChange?.(multiple ? next : (next[0] ?? ''));\r\n },\r\n [openValues, multiple, isControlled, onChange],\r\n );\r\n\r\n const rootClasses = ['eidos-accordion', `eidos-accordion--${variant}`, className]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <AccordionContext.Provider value={{ openValues, toggle, variant, size, color }}>\r\n <div className={rootClasses}>{children}</div>\r\n </AccordionContext.Provider>\r\n );\r\n};\r\n\r\nAccordion.displayName = 'Accordion';\r\n\r\n// ============================================================================\r\n// ACCORDION ITEM - individual item; reads context; renders trigger + animated panel\r\n// ============================================================================\r\n\r\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\r\n value,\r\n label,\r\n icon,\r\n disabled = false,\r\n className = '',\r\n children,\r\n}) => {\r\n const { openValues, toggle, size, color } = useAccordion();\r\n const isOpen = openValues.includes(value);\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n const triggerId = useId();\r\n const panelId = useId();\r\n\r\n // Drives the max-height CSS transition.\r\n // On open: set to scrollHeight so the wrapper animates to its natural height.\r\n // On close: set to 0 so the wrapper animates shut.\r\n // The CSS transition on .eidos-accordion-content-wrapper handles the animation.\r\n const [maxHeight, setMaxHeight] = useState<number>(0);\r\n\r\n useEffect(() => {\r\n if (!contentRef.current) return;\r\n setMaxHeight(isOpen ? contentRef.current.scrollHeight : 0);\r\n }, [isOpen]);\r\n\r\n const itemClasses = [\r\n 'eidos-accordion-item',\r\n isOpen && 'eidos-accordion-item--open',\r\n disabled && 'eidos-accordion-item--disabled',\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const triggerClasses = [\r\n 'eidos-accordion-trigger',\r\n `eidos-accordion-trigger--${size}`,\r\n isOpen && 'eidos-accordion-trigger--open',\r\n isOpen && `eidos-accordion-trigger--${color}`,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <div className={itemClasses}>\r\n <button\r\n id={triggerId}\r\n type=\"button\"\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n disabled={disabled}\r\n onClick={() => !disabled && toggle(value)}\r\n className={triggerClasses}\r\n >\r\n {icon && <span className=\"eidos-accordion-trigger-icon\">{icon}</span>}\r\n <span className=\"eidos-accordion-trigger-label\">{label}</span>\r\n <ChevronDown className=\"eidos-accordion-chevron\" aria-hidden=\"true\" />\r\n </button>\r\n\r\n <div\r\n id={panelId}\r\n role=\"region\"\r\n aria-labelledby={triggerId}\r\n ref={contentRef}\r\n className=\"eidos-accordion-content-wrapper\"\r\n style={{ maxHeight: `${maxHeight}px` }}\r\n >\r\n <div className=\"eidos-accordion-content\">{children}</div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nAccordionItem.displayName = 'AccordionItem';\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkAUFCW7QUcjs = require('../chunk-AUFCW7QU.cjs');
|
|
4
|
+
require('../chunk-KV2FG7AN.cjs');
|
|
5
|
+
require('../chunk-DZUJEN5N.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
exports.ColorPicker = _chunkAUFCW7QUcjs.ColorPicker;
|
|
9
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/pedromealha/Documents/Repositories/Personal/eidos-ui/dist/color-picker/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACF,oDAAC","file":"/Users/pedromealha/Documents/Repositories/Personal/eidos-ui/dist/color-picker/index.cjs"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { C as ComponentSizeProps } from '../sizes-DM6Rrrgq.cjs';
|
|
3
|
+
|
|
4
|
+
type ColorFormat = 'hex' | 'rgb' | 'hsl';
|
|
5
|
+
interface RGBColor {
|
|
6
|
+
r: number;
|
|
7
|
+
g: number;
|
|
8
|
+
b: number;
|
|
9
|
+
}
|
|
10
|
+
interface HSLColor {
|
|
11
|
+
h: number;
|
|
12
|
+
s: number;
|
|
13
|
+
l: number;
|
|
14
|
+
}
|
|
15
|
+
interface ColorPickerProps {
|
|
16
|
+
/** Controlled hex value, e.g. '#6366f1' */
|
|
17
|
+
value?: string;
|
|
18
|
+
/** Initial hex value for uncontrolled usage */
|
|
19
|
+
defaultValue?: string;
|
|
20
|
+
/** Fires on every color change with the new hex string */
|
|
21
|
+
onChange?: (hex: string) => void;
|
|
22
|
+
/** Which text-input format to show initially. Default: 'hex' */
|
|
23
|
+
format?: ColorFormat;
|
|
24
|
+
/** Show the alpha (opacity) slider. Default: false */
|
|
25
|
+
showAlpha?: boolean;
|
|
26
|
+
/** Show preset colour swatches. Default: true */
|
|
27
|
+
showSwatches?: boolean;
|
|
28
|
+
/** Override the default swatch palette with custom hex strings */
|
|
29
|
+
swatches?: string[];
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
size?: ComponentSizeProps;
|
|
32
|
+
/** Render the picker panel inline - no popover trigger. Default: false */
|
|
33
|
+
inline?: boolean;
|
|
34
|
+
label?: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
declare const ColorPicker: React__default.FC<ColorPickerProps>;
|
|
39
|
+
|
|
40
|
+
export { type ColorFormat, ColorPicker, type ColorPickerProps, type HSLColor, type RGBColor };
|