@zentauri-ui/zentauri-components 1.9.2 → 2.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/CHANGELOG.md +18 -0
- package/README.md +36 -8
- package/cli/cli.integration.test.ts +52 -0
- package/cli/index.mjs +288 -0
- package/cli/registry.json +14 -0
- package/dist/chunk-22FJROCI.js +70 -0
- package/dist/chunk-22FJROCI.js.map +1 -0
- package/dist/chunk-2NQKFH26.mjs +64 -0
- package/dist/chunk-2NQKFH26.mjs.map +1 -0
- package/dist/chunk-2VPXQ2LA.mjs +57 -0
- package/dist/chunk-2VPXQ2LA.mjs.map +1 -0
- package/dist/chunk-3453DQNL.js +63 -0
- package/dist/chunk-3453DQNL.js.map +1 -0
- package/dist/chunk-34LHS26H.mjs +240 -0
- package/dist/chunk-34LHS26H.mjs.map +1 -0
- package/dist/chunk-3CYJQ6KF.js +121 -0
- package/dist/chunk-3CYJQ6KF.js.map +1 -0
- package/dist/chunk-3EJCQXGV.js +169 -0
- package/dist/chunk-3EJCQXGV.js.map +1 -0
- package/dist/chunk-3VW4HMJT.mjs +58 -0
- package/dist/chunk-3VW4HMJT.mjs.map +1 -0
- package/dist/chunk-42ZSQNDF.mjs +64 -0
- package/dist/chunk-42ZSQNDF.mjs.map +1 -0
- package/dist/{chunk-V4FFKIX3.js → chunk-4LCH4OJ5.js} +10 -10
- package/dist/{chunk-V4FFKIX3.js.map → chunk-4LCH4OJ5.js.map} +1 -1
- package/dist/chunk-4TX7EQ5Y.js +19 -0
- package/dist/{chunk-AQHY4S33.js.map → chunk-4TX7EQ5Y.js.map} +1 -1
- package/dist/chunk-4WG3VNVL.mjs +69 -0
- package/dist/chunk-4WG3VNVL.mjs.map +1 -0
- package/dist/chunk-4ZBMDWWY.mjs +107 -0
- package/dist/chunk-4ZBMDWWY.mjs.map +1 -0
- package/dist/chunk-523VQLCW.mjs +62 -0
- package/dist/chunk-523VQLCW.mjs.map +1 -0
- package/dist/chunk-5AOVTY2X.mjs +68 -0
- package/dist/chunk-5AOVTY2X.mjs.map +1 -0
- package/dist/{chunk-GVGKISKD.js → chunk-5QLPZYWO.js} +9 -9
- package/dist/{chunk-GVGKISKD.js.map → chunk-5QLPZYWO.js.map} +1 -1
- package/dist/{chunk-VUIWYURS.js → chunk-6XVSACCS.js} +15 -15
- package/dist/{chunk-VUIWYURS.js.map → chunk-6XVSACCS.js.map} +1 -1
- package/dist/{chunk-7GIL24GK.js → chunk-7ARZ3MK2.js} +12 -12
- package/dist/{chunk-7GIL24GK.js.map → chunk-7ARZ3MK2.js.map} +1 -1
- package/dist/chunk-7DVECOO7.js +78 -0
- package/dist/chunk-7DVECOO7.js.map +1 -0
- package/dist/{chunk-O23PJPGM.mjs → chunk-7HQFFQSQ.mjs} +3 -3
- package/dist/{chunk-O23PJPGM.mjs.map → chunk-7HQFFQSQ.mjs.map} +1 -1
- package/dist/{chunk-2PWT2MB5.mjs → chunk-7KCX2FX2.mjs} +3 -3
- package/dist/{chunk-2PWT2MB5.mjs.map → chunk-7KCX2FX2.mjs.map} +1 -1
- package/dist/{chunk-ZCTSXNAE.mjs → chunk-7WQ5TWUO.mjs} +3 -3
- package/dist/{chunk-ZCTSXNAE.mjs.map → chunk-7WQ5TWUO.mjs.map} +1 -1
- package/dist/chunk-A7MU6SFI.js +254 -0
- package/dist/chunk-A7MU6SFI.js.map +1 -0
- package/dist/chunk-AOVZY2A3.js +80 -0
- package/dist/chunk-AOVZY2A3.js.map +1 -0
- package/dist/{chunk-D4B62J5C.js → chunk-APBQNYFN.js} +11 -11
- package/dist/{chunk-D4B62J5C.js.map → chunk-APBQNYFN.js.map} +1 -1
- package/dist/chunk-AZ26NZJV.mjs +66 -0
- package/dist/chunk-AZ26NZJV.mjs.map +1 -0
- package/dist/chunk-BBM4BKSN.js +65 -0
- package/dist/chunk-BBM4BKSN.js.map +1 -0
- package/dist/{chunk-I4TGI6U3.mjs → chunk-BGIWVTAU.mjs} +3 -3
- package/dist/{chunk-I4TGI6U3.mjs.map → chunk-BGIWVTAU.mjs.map} +1 -1
- package/dist/{chunk-OPUO55TO.mjs → chunk-BJRS5RXR.mjs} +3 -3
- package/dist/{chunk-OPUO55TO.mjs.map → chunk-BJRS5RXR.mjs.map} +1 -1
- package/dist/{chunk-RYJ5WEE3.js → chunk-BUBIH4LS.js} +9 -9
- package/dist/{chunk-RYJ5WEE3.js.map → chunk-BUBIH4LS.js.map} +1 -1
- package/dist/chunk-BUEI4RMR.mjs +82 -0
- package/dist/chunk-BUEI4RMR.mjs.map +1 -0
- package/dist/chunk-BVTYDGLM.mjs +68 -0
- package/dist/chunk-BVTYDGLM.mjs.map +1 -0
- package/dist/{chunk-7JBQ3ZJN.mjs → chunk-BYXFSXNG.mjs} +3 -3
- package/dist/{chunk-7JBQ3ZJN.mjs.map → chunk-BYXFSXNG.mjs.map} +1 -1
- package/dist/chunk-BZTAA3MK.js +62 -0
- package/dist/chunk-BZTAA3MK.js.map +1 -0
- package/dist/chunk-C6K2SWHC.mjs +74 -0
- package/dist/chunk-C6K2SWHC.mjs.map +1 -0
- package/dist/chunk-CJCOURVM.js +79 -0
- package/dist/chunk-CJCOURVM.js.map +1 -0
- package/dist/chunk-COVTMJIQ.mjs +171 -0
- package/dist/chunk-COVTMJIQ.mjs.map +1 -0
- package/dist/{chunk-ZY6O6Z2I.mjs → chunk-CQ2S43AD.mjs} +3 -3
- package/dist/{chunk-ZY6O6Z2I.mjs.map → chunk-CQ2S43AD.mjs.map} +1 -1
- package/dist/chunk-D7ATXPVI.js +70 -0
- package/dist/chunk-D7ATXPVI.js.map +1 -0
- package/dist/chunk-DOA4ESKS.mjs +58 -0
- package/dist/chunk-DOA4ESKS.mjs.map +1 -0
- package/dist/{chunk-QIUVXTLE.mjs → chunk-DSGPPYZ3.mjs} +3 -3
- package/dist/{chunk-QIUVXTLE.mjs.map → chunk-DSGPPYZ3.mjs.map} +1 -1
- package/dist/chunk-DYSXCJGL.js +47 -0
- package/dist/chunk-DYSXCJGL.js.map +1 -0
- package/dist/{chunk-P2DQP4J4.js → chunk-EDJ6TVL3.js} +117 -12
- package/dist/chunk-EDJ6TVL3.js.map +1 -0
- package/dist/chunk-EE53BIXR.mjs +112 -0
- package/dist/chunk-EE53BIXR.mjs.map +1 -0
- package/dist/chunk-EJ3UMMCS.mjs +65 -0
- package/dist/chunk-EJ3UMMCS.mjs.map +1 -0
- package/dist/chunk-ENYZGL4R.mjs +94 -0
- package/dist/chunk-ENYZGL4R.mjs.map +1 -0
- package/dist/{chunk-BZZVO4GL.mjs → chunk-F6W3GJJ2.mjs} +108 -3
- package/dist/chunk-F6W3GJJ2.mjs.map +1 -0
- package/dist/chunk-FBUY6K6S.js +69 -0
- package/dist/chunk-FBUY6K6S.js.map +1 -0
- package/dist/{chunk-QKZR2UTL.mjs → chunk-FEMXNI6E.mjs} +3 -3
- package/dist/{chunk-QKZR2UTL.mjs.map → chunk-FEMXNI6E.mjs.map} +1 -1
- package/dist/chunk-FX5KR2GP.mjs +81 -0
- package/dist/chunk-FX5KR2GP.mjs.map +1 -0
- package/dist/{chunk-3HSFL4WA.mjs → chunk-GENYOZN4.mjs} +3 -3
- package/dist/{chunk-3HSFL4WA.mjs.map → chunk-GENYOZN4.mjs.map} +1 -1
- package/dist/{chunk-C7F6OCGK.mjs → chunk-GFCT24TH.mjs} +3 -3
- package/dist/{chunk-C7F6OCGK.mjs.map → chunk-GFCT24TH.mjs.map} +1 -1
- package/dist/{chunk-IPUQBMAB.mjs → chunk-GH2GZFRD.mjs} +3 -3
- package/dist/{chunk-IPUQBMAB.mjs.map → chunk-GH2GZFRD.mjs.map} +1 -1
- package/dist/{chunk-NAHHFB2M.js → chunk-GICW4DH5.js} +9 -9
- package/dist/{chunk-NAHHFB2M.js.map → chunk-GICW4DH5.js.map} +1 -1
- package/dist/chunk-HFQJRAG7.mjs +116 -0
- package/dist/chunk-HFQJRAG7.mjs.map +1 -0
- package/dist/chunk-HNRCPZCK.js +107 -0
- package/dist/chunk-HNRCPZCK.js.map +1 -0
- package/dist/chunk-HOOZYA4N.js +92 -0
- package/dist/chunk-HOOZYA4N.js.map +1 -0
- package/dist/chunk-IEHY6KNM.js +122 -0
- package/dist/chunk-IEHY6KNM.js.map +1 -0
- package/dist/{chunk-BDBL4XXI.mjs → chunk-ILCT3P7D.mjs} +3 -3
- package/dist/{chunk-BDBL4XXI.mjs.map → chunk-ILCT3P7D.mjs.map} +1 -1
- package/dist/chunk-IR5SJ7AQ.js +87 -0
- package/dist/chunk-IR5SJ7AQ.js.map +1 -0
- package/dist/chunk-J2SUGU3X.js +63 -0
- package/dist/chunk-J2SUGU3X.js.map +1 -0
- package/dist/{chunk-4LVEWKXF.mjs → chunk-J7IATHJY.mjs} +3 -3
- package/dist/{chunk-4LVEWKXF.mjs.map → chunk-J7IATHJY.mjs.map} +1 -1
- package/dist/{chunk-EKBSSKJQ.js → chunk-JD7TCCMW.js} +10 -10
- package/dist/{chunk-EKBSSKJQ.js.map → chunk-JD7TCCMW.js.map} +1 -1
- package/dist/chunk-JEDMUBYI.mjs +75 -0
- package/dist/chunk-JEDMUBYI.mjs.map +1 -0
- package/dist/{chunk-L4PDJ6IB.mjs → chunk-JEZUMCJ6.mjs} +3 -3
- package/dist/{chunk-L4PDJ6IB.mjs.map → chunk-JEZUMCJ6.mjs.map} +1 -1
- package/dist/{chunk-KEGOUZL5.js → chunk-JGPG2D2Y.js} +7 -7
- package/dist/{chunk-KEGOUZL5.js.map → chunk-JGPG2D2Y.js.map} +1 -1
- package/dist/chunk-JOLSS7UY.mjs +61 -0
- package/dist/chunk-JOLSS7UY.mjs.map +1 -0
- package/dist/{chunk-ATMCT3A3.mjs → chunk-K2H6LIPQ.mjs} +3 -3
- package/dist/{chunk-ATMCT3A3.mjs.map → chunk-K2H6LIPQ.mjs.map} +1 -1
- package/dist/chunk-K7PR3XXT.mjs +128 -0
- package/dist/chunk-K7PR3XXT.mjs.map +1 -0
- package/dist/{chunk-LQPKZ5ZD.js → chunk-KCXTYTOY.js} +6 -6
- package/dist/{chunk-LQPKZ5ZD.js.map → chunk-KCXTYTOY.js.map} +1 -1
- package/dist/chunk-KJMW7S5X.js +78 -0
- package/dist/chunk-KJMW7S5X.js.map +1 -0
- package/dist/chunk-KOIXQXZB.js +49 -0
- package/dist/{chunk-NVTV3EQB.js.map → chunk-KOIXQXZB.js.map} +1 -1
- package/dist/{chunk-PKXDRTC7.js → chunk-KQZWTTY2.js} +13 -13
- package/dist/{chunk-PKXDRTC7.js.map → chunk-KQZWTTY2.js.map} +1 -1
- package/dist/chunk-KWBGLH7G.js +155 -0
- package/dist/chunk-KWBGLH7G.js.map +1 -0
- package/dist/chunk-L7W4NRK6.js +78 -0
- package/dist/chunk-L7W4NRK6.js.map +1 -0
- package/dist/chunk-LRYKMXKI.mjs +159 -0
- package/dist/chunk-LRYKMXKI.mjs.map +1 -0
- package/dist/chunk-MBEQ4GQ7.mjs +44 -0
- package/dist/chunk-MBEQ4GQ7.mjs.map +1 -0
- package/dist/{chunk-PAJYNQR3.mjs → chunk-MI3CVVNR.mjs} +3 -3
- package/dist/{chunk-PAJYNQR3.mjs.map → chunk-MI3CVVNR.mjs.map} +1 -1
- package/dist/{chunk-4FU6FDUT.mjs → chunk-MXYQOQJ4.mjs} +3 -3
- package/dist/{chunk-4FU6FDUT.mjs.map → chunk-MXYQOQJ4.mjs.map} +1 -1
- package/dist/chunk-N3FNN47Q.mjs +64 -0
- package/dist/chunk-N3FNN47Q.mjs.map +1 -0
- package/dist/chunk-NEFDIJ5N.js +672 -0
- package/dist/chunk-NEFDIJ5N.js.map +1 -0
- package/dist/chunk-NFUOJMNI.js +61 -0
- package/dist/chunk-NFUOJMNI.js.map +1 -0
- package/dist/chunk-NGZTAVQO.mjs +79 -0
- package/dist/chunk-NGZTAVQO.mjs.map +1 -0
- package/dist/chunk-NNGL2AFQ.js +181 -0
- package/dist/chunk-NNGL2AFQ.js.map +1 -0
- package/dist/{chunk-Q2NE2UAO.mjs → chunk-NXVSGMLI.mjs} +3 -3
- package/dist/{chunk-Q2NE2UAO.mjs.map → chunk-NXVSGMLI.mjs.map} +1 -1
- package/dist/chunk-NYO3W5GY.js +61 -0
- package/dist/chunk-NYO3W5GY.js.map +1 -0
- package/dist/{chunk-ZFNVFMWG.mjs → chunk-O22T5X4G.mjs} +3 -3
- package/dist/{chunk-ZFNVFMWG.mjs.map → chunk-O22T5X4G.mjs.map} +1 -1
- package/dist/{chunk-Y73U7C4T.js → chunk-OCKSRD6O.js} +16 -16
- package/dist/{chunk-Y73U7C4T.js.map → chunk-OCKSRD6O.js.map} +1 -1
- package/dist/{chunk-27PO2FY2.mjs → chunk-OO4IPM4F.mjs} +3 -3
- package/dist/{chunk-27PO2FY2.mjs.map → chunk-OO4IPM4F.mjs.map} +1 -1
- package/dist/chunk-PP3L6M62.js +126 -0
- package/dist/chunk-PP3L6M62.js.map +1 -0
- package/dist/{chunk-63YMCBGJ.js → chunk-PYNQZP4X.js} +12 -12
- package/dist/{chunk-63YMCBGJ.js.map → chunk-PYNQZP4X.js.map} +1 -1
- package/dist/{chunk-QDHARZDN.js → chunk-QGTLXKKB.js} +12 -12
- package/dist/{chunk-QDHARZDN.js.map → chunk-QGTLXKKB.js.map} +1 -1
- package/dist/chunk-QNRJT7R4.js +144 -0
- package/dist/chunk-QNRJT7R4.js.map +1 -0
- package/dist/chunk-QX6PPTWL.mjs +125 -0
- package/dist/chunk-QX6PPTWL.mjs.map +1 -0
- package/dist/{chunk-OPACTZGV.js → chunk-RRUVHDN6.js} +11 -11
- package/dist/{chunk-OPACTZGV.js.map → chunk-RRUVHDN6.js.map} +1 -1
- package/dist/{chunk-IQ6QVIZ3.mjs → chunk-RSMFWP5S.mjs} +3 -3
- package/dist/{chunk-IQ6QVIZ3.mjs.map → chunk-RSMFWP5S.mjs.map} +1 -1
- package/dist/chunk-SCOIRBML.js +705 -0
- package/dist/{chunk-WBRTXAKP.js.map → chunk-SCOIRBML.js.map} +1 -1
- package/dist/chunk-SCWQSQBJ.mjs +113 -0
- package/dist/chunk-SCWQSQBJ.mjs.map +1 -0
- package/dist/{chunk-LLNK24MM.js → chunk-SK24YZIC.js} +18 -18
- package/dist/{chunk-LLNK24MM.js.map → chunk-SK24YZIC.js.map} +1 -1
- package/dist/chunk-SRJCGSNX.js +74 -0
- package/dist/chunk-SRJCGSNX.js.map +1 -0
- package/dist/chunk-SRSRY5K2.js +71 -0
- package/dist/chunk-SRSRY5K2.js.map +1 -0
- package/dist/chunk-SS3T3BUL.mjs +70 -0
- package/dist/chunk-SS3T3BUL.mjs.map +1 -0
- package/dist/{chunk-L6PSW7JE.mjs → chunk-SUTFW53Y.mjs} +3 -3
- package/dist/{chunk-L6PSW7JE.mjs.map → chunk-SUTFW53Y.mjs.map} +1 -1
- package/dist/chunk-T4ZLTKV2.mjs +112 -0
- package/dist/chunk-T4ZLTKV2.mjs.map +1 -0
- package/dist/chunk-TCEGQIGW.mjs +653 -0
- package/dist/chunk-TCEGQIGW.mjs.map +1 -0
- package/dist/{chunk-MUKI3OHH.js → chunk-TDVHPNYI.js} +14 -14
- package/dist/{chunk-MUKI3OHH.js.map → chunk-TDVHPNYI.js.map} +1 -1
- package/dist/chunk-TKAOHMVA.mjs +120 -0
- package/dist/chunk-TKAOHMVA.mjs.map +1 -0
- package/dist/chunk-TT33BIIT.js +71 -0
- package/dist/chunk-TT33BIIT.js.map +1 -0
- package/dist/chunk-U64ISRUX.mjs +73 -0
- package/dist/chunk-U64ISRUX.mjs.map +1 -0
- package/dist/{chunk-O6R6OQXI.mjs → chunk-UFDJ5NIY.mjs} +3 -3
- package/dist/{chunk-O6R6OQXI.mjs.map → chunk-UFDJ5NIY.mjs.map} +1 -1
- package/dist/chunk-UG3GF2BD.js +120 -0
- package/dist/chunk-UG3GF2BD.js.map +1 -0
- package/dist/chunk-UJXFD4SK.js +65 -0
- package/dist/chunk-UJXFD4SK.js.map +1 -0
- package/dist/chunk-USLNTKVQ.js +114 -0
- package/dist/chunk-USLNTKVQ.js.map +1 -0
- package/dist/chunk-UT6QG35L.js +68 -0
- package/dist/chunk-UT6QG35L.js.map +1 -0
- package/dist/{chunk-37YQUTKG.js → chunk-VKEDTQY6.js} +8 -8
- package/dist/{chunk-37YQUTKG.js.map → chunk-VKEDTQY6.js.map} +1 -1
- package/dist/{chunk-I5TREZO5.js → chunk-VSD4KDZT.js} +10 -10
- package/dist/{chunk-I5TREZO5.js.map → chunk-VSD4KDZT.js.map} +1 -1
- package/dist/chunk-WGN2CBG6.js +82 -0
- package/dist/chunk-WGN2CBG6.js.map +1 -0
- package/dist/chunk-X7HK6RTF.js +83 -0
- package/dist/chunk-X7HK6RTF.js.map +1 -0
- package/dist/{chunk-34OSFCSH.js → chunk-XF3NHZZ3.js} +7 -7
- package/dist/{chunk-34OSFCSH.js.map → chunk-XF3NHZZ3.js.map} +1 -1
- package/dist/chunk-XUW42JAP.js +69 -0
- package/dist/chunk-XUW42JAP.js.map +1 -0
- package/dist/{chunk-EIX26RKN.js → chunk-XXGMFT6O.js} +9 -9
- package/dist/{chunk-EIX26RKN.js.map → chunk-XXGMFT6O.js.map} +1 -1
- package/dist/chunk-Y5JAQEBF.js +134 -0
- package/dist/chunk-Y5JAQEBF.js.map +1 -0
- package/dist/chunk-Y7BU5RC4.js +95 -0
- package/dist/chunk-Y7BU5RC4.js.map +1 -0
- package/dist/chunk-YH6MOKHR.mjs +65 -0
- package/dist/chunk-YH6MOKHR.mjs.map +1 -0
- package/dist/chunk-YKTANA3H.mjs +52 -0
- package/dist/chunk-YKTANA3H.mjs.map +1 -0
- package/dist/{chunk-NWMSIYZP.js → chunk-YNTUZCLI.js} +16 -16
- package/dist/{chunk-NWMSIYZP.js.map → chunk-YNTUZCLI.js.map} +1 -1
- package/dist/chunk-YPTHTFVF.mjs +144 -0
- package/dist/chunk-YPTHTFVF.mjs.map +1 -0
- package/dist/chunk-YPYPWALR.js +128 -0
- package/dist/chunk-YPYPWALR.js.map +1 -0
- package/dist/chunk-YXU2MJMT.mjs +52 -0
- package/dist/chunk-YXU2MJMT.mjs.map +1 -0
- package/dist/{chunk-ZITS2V53.js → chunk-ZIP7EX64.js} +9 -9
- package/dist/{chunk-ZITS2V53.js.map → chunk-ZIP7EX64.js.map} +1 -1
- package/dist/chunk-ZJWOSRAS.mjs +57 -0
- package/dist/chunk-ZJWOSRAS.mjs.map +1 -0
- package/dist/{chunk-ODT5TFIT.mjs → chunk-ZMFRJHO6.mjs} +3 -3
- package/dist/{chunk-ODT5TFIT.mjs.map → chunk-ZMFRJHO6.mjs.map} +1 -1
- package/dist/chunk-ZPGYR2UP.mjs +54 -0
- package/dist/chunk-ZPGYR2UP.mjs.map +1 -0
- package/dist/{chunk-XPHD3X4L.mjs → chunk-ZUQOQW5W.mjs} +3 -3
- package/dist/{chunk-XPHD3X4L.mjs.map → chunk-ZUQOQW5W.mjs.map} +1 -1
- package/dist/design-system/accordion.d.ts +85 -85
- package/dist/design-system/accordion.d.ts.map +1 -1
- package/dist/design-system/alert.d.ts +46 -46
- package/dist/design-system/alert.d.ts.map +1 -1
- package/dist/design-system/animated-number.d.ts +44 -44
- package/dist/design-system/avatar.d.ts +47 -47
- package/dist/design-system/avatar.d.ts.map +1 -1
- package/dist/design-system/badge.d.ts +92 -92
- package/dist/design-system/badge.d.ts.map +1 -1
- package/dist/design-system/breadcrumb.d.ts +38 -38
- package/dist/design-system/breadcrumb.d.ts.map +1 -1
- package/dist/design-system/button.d.ts +50 -50
- package/dist/design-system/button.d.ts.map +1 -1
- package/dist/design-system/card.d.ts +52 -52
- package/dist/design-system/card.d.ts.map +1 -1
- package/dist/design-system/checkbox.d.ts +32 -32
- package/dist/design-system/checkbox.d.ts.map +1 -1
- package/dist/design-system/combobox.d.ts +124 -0
- package/dist/design-system/combobox.d.ts.map +1 -0
- package/dist/design-system/command.d.ts +53 -53
- package/dist/design-system/command.d.ts.map +1 -1
- package/dist/design-system/context-menu.d.ts +51 -51
- package/dist/design-system/context-menu.d.ts.map +1 -1
- package/dist/design-system/copy-button.d.ts +49 -49
- package/dist/design-system/copy-button.d.ts.map +1 -1
- package/dist/design-system/divider.d.ts +47 -47
- package/dist/design-system/drawer.d.ts +90 -90
- package/dist/design-system/drawer.d.ts.map +1 -1
- package/dist/design-system/dropdown.d.ts +97 -97
- package/dist/design-system/dropdown.d.ts.map +1 -1
- package/dist/design-system/dynamic-stepper.d.ts +57 -57
- package/dist/design-system/empty-state.d.ts +25 -25
- package/dist/design-system/empty-state.d.ts.map +1 -1
- package/dist/design-system/facade.js +41 -40
- package/dist/design-system/facade.js.map +1 -1
- package/dist/design-system/facade.mjs +40 -39
- package/dist/design-system/facade.mjs.map +1 -1
- package/dist/design-system/file-upload.d.ts +36 -36
- package/dist/design-system/file-upload.d.ts.map +1 -1
- package/dist/design-system/index.d.ts +1 -0
- package/dist/design-system/index.d.ts.map +1 -1
- package/dist/design-system/inputs.d.ts +159 -159
- package/dist/design-system/inputs.d.ts.map +1 -1
- package/dist/design-system/kbd.d.ts +51 -51
- package/dist/design-system/kbd.d.ts.map +1 -1
- package/dist/design-system/marquee.d.ts +43 -43
- package/dist/design-system/marquee.d.ts.map +1 -1
- package/dist/design-system/modal.d.ts +90 -90
- package/dist/design-system/modal.d.ts.map +1 -1
- package/dist/design-system/otp-input.d.ts +38 -38
- package/dist/design-system/otp-input.d.ts.map +1 -1
- package/dist/design-system/pagination.d.ts +51 -51
- package/dist/design-system/pagination.d.ts.map +1 -1
- package/dist/design-system/popover.d.ts +44 -44
- package/dist/design-system/popover.d.ts.map +1 -1
- package/dist/design-system/progress.d.ts +47 -47
- package/dist/design-system/progress.d.ts.map +1 -1
- package/dist/design-system/radio-group.d.ts +32 -32
- package/dist/design-system/radio-group.d.ts.map +1 -1
- package/dist/design-system/rating.d.ts +54 -54
- package/dist/design-system/rating.d.ts.map +1 -1
- package/dist/design-system/scroll-area.d.ts +30 -30
- package/dist/design-system/scroll-area.d.ts.map +1 -1
- package/dist/design-system/select.d.ts +132 -132
- package/dist/design-system/select.d.ts.map +1 -1
- package/dist/design-system/skeleton.d.ts +67 -67
- package/dist/design-system/skeleton.d.ts.map +1 -1
- package/dist/design-system/slider.d.ts +45 -45
- package/dist/design-system/slider.d.ts.map +1 -1
- package/dist/design-system/spinner.d.ts +43 -43
- package/dist/design-system/table.d.ts +108 -108
- package/dist/design-system/table.d.ts.map +1 -1
- package/dist/design-system/tabs.d.ts +43 -43
- package/dist/design-system/tabs.d.ts.map +1 -1
- package/dist/design-system/timeline.d.ts +45 -45
- package/dist/design-system/timeline.d.ts.map +1 -1
- package/dist/design-system/toast.d.ts +47 -47
- package/dist/design-system/toast.d.ts.map +1 -1
- package/dist/design-system/toggle.d.ts +88 -88
- package/dist/design-system/toggle.d.ts.map +1 -1
- package/dist/design-system/tokens.d.ts +101 -0
- package/dist/design-system/tokens.d.ts.map +1 -1
- package/dist/design-system/tokens.js +11 -7
- package/dist/design-system/tokens.mjs +1 -1
- package/dist/design-system/tooltip.d.ts +44 -44
- package/dist/design-system/tooltip.d.ts.map +1 -1
- package/dist/design-system/tree-view.d.ts +92 -92
- package/dist/design-system/tree-view.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useCookie/index.d.ts +2 -0
- package/dist/hooks/useCookie/index.d.ts.map +1 -0
- package/dist/hooks/useCookie/useCookie.d.ts +36 -0
- package/dist/hooks/useCookie/useCookie.d.ts.map +1 -0
- package/dist/hooks/useCookie.js +76 -0
- package/dist/hooks/useCookie.js.map +1 -0
- package/dist/hooks/useCookie.mjs +74 -0
- package/dist/hooks/useCookie.mjs.map +1 -0
- package/dist/hooks/useCountdown/index.d.ts +2 -0
- package/dist/hooks/useCountdown/index.d.ts.map +1 -0
- package/dist/hooks/useCountdown/useCountdown.d.ts +40 -0
- package/dist/hooks/useCountdown/useCountdown.d.ts.map +1 -0
- package/dist/hooks/useCountdown.js +60 -0
- package/dist/hooks/useCountdown.js.map +1 -0
- package/dist/hooks/useCountdown.mjs +58 -0
- package/dist/hooks/useCountdown.mjs.map +1 -0
- package/dist/hooks/useEventListener/index.d.ts +2 -0
- package/dist/hooks/useEventListener/index.d.ts.map +1 -0
- package/dist/hooks/useEventListener/useEventListener.d.ts +22 -0
- package/dist/hooks/useEventListener/useEventListener.d.ts.map +1 -0
- package/dist/hooks/useEventListener.js +45 -0
- package/dist/hooks/useEventListener.js.map +1 -0
- package/dist/hooks/useEventListener.mjs +43 -0
- package/dist/hooks/useEventListener.mjs.map +1 -0
- package/dist/hooks/useGeolocation/index.d.ts +2 -0
- package/dist/hooks/useGeolocation/index.d.ts.map +1 -0
- package/dist/hooks/useGeolocation/useGeolocation.d.ts +48 -0
- package/dist/hooks/useGeolocation/useGeolocation.d.ts.map +1 -0
- package/dist/hooks/useGeolocation.js +111 -0
- package/dist/hooks/useGeolocation.js.map +1 -0
- package/dist/hooks/useGeolocation.mjs +109 -0
- package/dist/hooks/useGeolocation.mjs.map +1 -0
- package/dist/hooks/useHotkeys/index.d.ts +2 -0
- package/dist/hooks/useHotkeys/index.d.ts.map +1 -0
- package/dist/hooks/useHotkeys/useHotkeys.d.ts +24 -0
- package/dist/hooks/useHotkeys/useHotkeys.d.ts.map +1 -0
- package/dist/hooks/useHotkeys.js +90 -0
- package/dist/hooks/useHotkeys.js.map +1 -0
- package/dist/hooks/useHotkeys.mjs +88 -0
- package/dist/hooks/useHotkeys.mjs.map +1 -0
- package/dist/hooks/useIdleTimeout/index.d.ts +2 -0
- package/dist/hooks/useIdleTimeout/index.d.ts.map +1 -0
- package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts +31 -0
- package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts.map +1 -0
- package/dist/hooks/useIdleTimeout.js +77 -0
- package/dist/hooks/useIdleTimeout.js.map +1 -0
- package/dist/hooks/useIdleTimeout.mjs +75 -0
- package/dist/hooks/useIdleTimeout.mjs.map +1 -0
- package/dist/hooks/useInterval/index.d.ts +2 -0
- package/dist/hooks/useInterval/index.d.ts.map +1 -0
- package/dist/hooks/useInterval/useInterval.d.ts +12 -0
- package/dist/hooks/useInterval/useInterval.d.ts.map +1 -0
- package/dist/hooks/useInterval.js +27 -0
- package/dist/hooks/useInterval.js.map +1 -0
- package/dist/hooks/useInterval.mjs +25 -0
- package/dist/hooks/useInterval.mjs.map +1 -0
- package/dist/hooks/useKeyPress/index.d.ts +2 -0
- package/dist/hooks/useKeyPress/index.d.ts.map +1 -0
- package/dist/hooks/useKeyPress/useKeyPress.d.ts +15 -0
- package/dist/hooks/useKeyPress/useKeyPress.d.ts.map +1 -0
- package/dist/hooks/useKeyPress.js +47 -0
- package/dist/hooks/useKeyPress.js.map +1 -0
- package/dist/hooks/useKeyPress.mjs +45 -0
- package/dist/hooks/useKeyPress.mjs.map +1 -0
- package/dist/hooks/useLongPress/index.d.ts +2 -0
- package/dist/hooks/useLongPress/index.d.ts.map +1 -0
- package/dist/hooks/useLongPress/useLongPress.d.ts +46 -0
- package/dist/hooks/useLongPress/useLongPress.d.ts.map +1 -0
- package/dist/hooks/useLongPress.js +116 -0
- package/dist/hooks/useLongPress.js.map +1 -0
- package/dist/hooks/useLongPress.mjs +114 -0
- package/dist/hooks/useLongPress.mjs.map +1 -0
- package/dist/hooks/usePrevious/index.d.ts +2 -0
- package/dist/hooks/usePrevious/index.d.ts.map +1 -0
- package/dist/hooks/usePrevious/usePrevious.d.ts +13 -0
- package/dist/hooks/usePrevious/usePrevious.d.ts.map +1 -0
- package/dist/hooks/usePrevious.js +17 -0
- package/dist/hooks/usePrevious.js.map +1 -0
- package/dist/hooks/usePrevious.mjs +15 -0
- package/dist/hooks/usePrevious.mjs.map +1 -0
- package/dist/hooks/useScrollPosition/index.d.ts +2 -0
- package/dist/hooks/useScrollPosition/index.d.ts.map +1 -0
- package/dist/hooks/useScrollPosition/useScrollPosition.d.ts +37 -0
- package/dist/hooks/useScrollPosition/useScrollPosition.d.ts.map +1 -0
- package/dist/hooks/useScrollPosition.js +41 -0
- package/dist/hooks/useScrollPosition.js.map +1 -0
- package/dist/hooks/useScrollPosition.mjs +39 -0
- package/dist/hooks/useScrollPosition.mjs.map +1 -0
- package/dist/hooks/useTimeout/index.d.ts +2 -0
- package/dist/hooks/useTimeout/index.d.ts.map +1 -0
- package/dist/hooks/useTimeout/useTimeout.d.ts +19 -0
- package/dist/hooks/useTimeout/useTimeout.d.ts.map +1 -0
- package/dist/hooks/useTimeout.js +38 -0
- package/dist/hooks/useTimeout.js.map +1 -0
- package/dist/hooks/useTimeout.mjs +36 -0
- package/dist/hooks/useTimeout.mjs.map +1 -0
- package/dist/hooks/useVirtualList/index.d.ts +2 -0
- package/dist/hooks/useVirtualList/index.d.ts.map +1 -0
- package/dist/hooks/useVirtualList/useVirtualList.d.ts +47 -0
- package/dist/hooks/useVirtualList/useVirtualList.d.ts.map +1 -0
- package/dist/hooks/useVirtualList.js +84 -0
- package/dist/hooks/useVirtualList.js.map +1 -0
- package/dist/hooks/useVirtualList.mjs +82 -0
- package/dist/hooks/useVirtualList.mjs.map +1 -0
- package/dist/lib/facade.d.ts.map +1 -1
- package/dist/ui/accordion/animated.js +8 -8
- package/dist/ui/accordion/animated.mjs +3 -3
- package/dist/ui/accordion.js +10 -10
- package/dist/ui/accordion.mjs +3 -3
- package/dist/ui/alert/animated.js +3 -3
- package/dist/ui/alert/animated.mjs +2 -2
- package/dist/ui/alert.js +11 -11
- package/dist/ui/alert.mjs +3 -3
- package/dist/ui/animated-number.js +4 -4
- package/dist/ui/animated-number.mjs +1 -1
- package/dist/ui/avatar/animated.js +6 -6
- package/dist/ui/avatar/animated.mjs +3 -3
- package/dist/ui/avatar.js +10 -10
- package/dist/ui/avatar.mjs +3 -3
- package/dist/ui/badge/animated.js +3 -3
- package/dist/ui/badge/animated.mjs +2 -2
- package/dist/ui/badge/variants.d.ts +45 -45
- package/dist/ui/badge.js +5 -5
- package/dist/ui/badge.mjs +3 -3
- package/dist/ui/breadcrumb.js +9 -9
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/buttons/animated.js +43 -42
- package/dist/ui/buttons/animated.js.map +1 -1
- package/dist/ui/buttons/animated.mjs +41 -40
- package/dist/ui/buttons/animated.mjs.map +1 -1
- package/dist/ui/buttons.js +44 -43
- package/dist/ui/buttons.mjs +42 -41
- package/dist/ui/card/animated.js +8 -8
- package/dist/ui/card/animated.mjs +3 -3
- package/dist/ui/card.js +13 -13
- package/dist/ui/card.mjs +3 -3
- package/dist/ui/checkbox/animated.js +5 -5
- package/dist/ui/checkbox/animated.mjs +2 -2
- package/dist/ui/checkbox.js +9 -9
- package/dist/ui/checkbox.mjs +3 -3
- package/dist/ui/combobox/combobox-base.d.ts +37 -0
- package/dist/ui/combobox/combobox-base.d.ts.map +1 -0
- package/dist/ui/combobox/combobox.d.ts +6 -0
- package/dist/ui/combobox/combobox.d.ts.map +1 -0
- package/dist/ui/combobox/index.d.ts +4 -0
- package/dist/ui/combobox/index.d.ts.map +1 -0
- package/dist/ui/combobox/types.d.ts +70 -0
- package/dist/ui/combobox/types.d.ts.map +1 -0
- package/dist/ui/combobox/variants.d.ts +17 -0
- package/dist/ui/combobox/variants.d.ts.map +1 -0
- package/dist/ui/combobox.js +510 -0
- package/dist/ui/combobox.js.map +1 -0
- package/dist/ui/combobox.mjs +495 -0
- package/dist/ui/combobox.mjs.map +1 -0
- package/dist/ui/command/animated.js +3 -3
- package/dist/ui/command/animated.mjs +2 -2
- package/dist/ui/command.js +16 -16
- package/dist/ui/command.mjs +3 -3
- package/dist/ui/context-menu.js +8 -8
- package/dist/ui/context-menu.mjs +2 -2
- package/dist/ui/copy-button/animated.js +3 -3
- package/dist/ui/copy-button/animated.mjs +2 -2
- package/dist/ui/copy-button.js +4 -4
- package/dist/ui/copy-button.mjs +3 -3
- package/dist/ui/divider/animated.js +3 -3
- package/dist/ui/divider/animated.mjs +2 -2
- package/dist/ui/divider.js +7 -7
- package/dist/ui/divider.mjs +3 -3
- package/dist/ui/drawer/animated.js +12 -12
- package/dist/ui/drawer/animated.mjs +3 -3
- package/dist/ui/drawer.js +12 -12
- package/dist/ui/drawer.mjs +2 -2
- package/dist/ui/dropdown.js +9 -9
- package/dist/ui/dropdown.mjs +1 -1
- package/dist/ui/dynamic-stepper/variants.d.ts +1 -1
- package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -1
- package/dist/ui/dynamic-stepper.js +53 -52
- package/dist/ui/dynamic-stepper.js.map +1 -1
- package/dist/ui/dynamic-stepper.mjs +42 -41
- package/dist/ui/dynamic-stepper.mjs.map +1 -1
- package/dist/ui/empty-state/animated.js +3 -3
- package/dist/ui/empty-state/animated.mjs +2 -2
- package/dist/ui/empty-state.js +11 -11
- package/dist/ui/empty-state.mjs +3 -3
- package/dist/ui/file-upload.js +3 -3
- package/dist/ui/file-upload.mjs +1 -1
- package/dist/ui/inputs/animated.js +4 -4
- package/dist/ui/inputs/animated.mjs +2 -2
- package/dist/ui/inputs.js +5 -5
- package/dist/ui/inputs.mjs +3 -3
- package/dist/ui/kbd/animated.js +3 -3
- package/dist/ui/kbd/animated.mjs +2 -2
- package/dist/ui/kbd.js +5 -5
- package/dist/ui/kbd.mjs +3 -3
- package/dist/ui/marquee.js +6 -6
- package/dist/ui/marquee.mjs +1 -1
- package/dist/ui/modal/animated.js +5 -5
- package/dist/ui/modal/animated.mjs +2 -2
- package/dist/ui/modal.js +13 -13
- package/dist/ui/modal.mjs +3 -3
- package/dist/ui/otp-input.js +10 -10
- package/dist/ui/otp-input.mjs +1 -1
- package/dist/ui/pagination.js +49 -48
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/pagination.mjs +41 -40
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/popover/animated.js +5 -5
- package/dist/ui/popover/animated.mjs +2 -2
- package/dist/ui/popover.js +8 -8
- package/dist/ui/popover.mjs +2 -2
- package/dist/ui/progress/animated.js +9 -9
- package/dist/ui/progress/animated.mjs +3 -3
- package/dist/ui/progress.js +10 -10
- package/dist/ui/progress.mjs +3 -3
- package/dist/ui/radio-group/animated.js +8 -8
- package/dist/ui/radio-group/animated.mjs +2 -2
- package/dist/ui/radio-group.js +12 -12
- package/dist/ui/radio-group.mjs +3 -3
- package/dist/ui/rating.js +11 -11
- package/dist/ui/rating.mjs +1 -1
- package/dist/ui/scroll-area.js +7 -7
- package/dist/ui/scroll-area.mjs +1 -1
- package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
- package/dist/ui/search.js +12 -9
- package/dist/ui/search.js.map +1 -1
- package/dist/ui/search.mjs +11 -8
- package/dist/ui/search.mjs.map +1 -1
- package/dist/ui/select.js +11 -11
- package/dist/ui/select.mjs +1 -1
- package/dist/ui/skeleton/animated.js +9 -9
- package/dist/ui/skeleton/animated.mjs +2 -2
- package/dist/ui/skeleton/variants.d.ts +21 -21
- package/dist/ui/skeleton/variants.d.ts.map +1 -1
- package/dist/ui/skeleton.js +10 -10
- package/dist/ui/skeleton.mjs +2 -2
- package/dist/ui/slider.js +9 -9
- package/dist/ui/slider.mjs +1 -1
- package/dist/ui/spinner/animated.js +5 -5
- package/dist/ui/spinner/animated.mjs +1 -1
- package/dist/ui/table/animated.js +9 -9
- package/dist/ui/table/animated.mjs +3 -3
- package/dist/ui/table.js +15 -15
- package/dist/ui/table.mjs +2 -2
- package/dist/ui/tabs/animated.js +3 -3
- package/dist/ui/tabs/animated.mjs +2 -2
- package/dist/ui/tabs.js +10 -10
- package/dist/ui/tabs.mjs +2 -2
- package/dist/ui/timeline/animated.js +12 -12
- package/dist/ui/timeline/animated.mjs +3 -3
- package/dist/ui/timeline.js +15 -15
- package/dist/ui/timeline.mjs +3 -3
- package/dist/ui/toast/animated.js +8 -8
- package/dist/ui/toast/animated.mjs +2 -2
- package/dist/ui/toast.js +13 -13
- package/dist/ui/toast.mjs +2 -2
- package/dist/ui/toggle/animated.js +5 -5
- package/dist/ui/toggle/animated.mjs +2 -2
- package/dist/ui/toggle.js +5 -5
- package/dist/ui/toggle.mjs +3 -3
- package/dist/ui/tooltip/animated.js +4 -4
- package/dist/ui/tooltip/animated.mjs +2 -2
- package/dist/ui/tooltip.js +8 -8
- package/dist/ui/tooltip.mjs +2 -2
- package/dist/ui/tree-view/animated.js +3 -3
- package/dist/ui/tree-view/animated.mjs +2 -2
- package/dist/ui/tree-view.js +6 -6
- package/dist/ui/tree-view.mjs +3 -3
- package/package.json +2 -2
- package/src/design-system/accordion.ts +85 -85
- package/src/design-system/alert.ts +46 -46
- package/src/design-system/animated-number.ts +44 -44
- package/src/design-system/avatar.ts +47 -47
- package/src/design-system/badge.ts +50 -50
- package/src/design-system/breadcrumb.ts +38 -38
- package/src/design-system/button.ts +52 -52
- package/src/design-system/card.ts +54 -54
- package/src/design-system/checkbox.ts +32 -32
- package/src/design-system/combobox.ts +204 -0
- package/src/design-system/command.ts +53 -53
- package/src/design-system/context-menu.ts +24 -24
- package/src/design-system/copy-button.ts +51 -51
- package/src/design-system/divider.ts +47 -47
- package/src/design-system/drawer.ts +90 -90
- package/src/design-system/dropdown.ts +97 -97
- package/src/design-system/dynamic-stepper.ts +57 -57
- package/src/design-system/empty-state.ts +25 -25
- package/src/design-system/file-upload.ts +36 -36
- package/src/design-system/index.ts +1 -0
- package/src/design-system/inputs.ts +166 -166
- package/src/design-system/kbd.ts +52 -52
- package/src/design-system/marquee.ts +43 -43
- package/src/design-system/modal.ts +90 -90
- package/src/design-system/otp-input.ts +38 -38
- package/src/design-system/pagination.ts +51 -51
- package/src/design-system/popover.ts +44 -44
- package/src/design-system/progress.ts +47 -47
- package/src/design-system/radio-group.ts +32 -32
- package/src/design-system/rating.ts +54 -54
- package/src/design-system/scroll-area.ts +30 -30
- package/src/design-system/select.ts +132 -132
- package/src/design-system/skeleton.ts +67 -67
- package/src/design-system/slider.ts +45 -45
- package/src/design-system/spinner.ts +43 -43
- package/src/design-system/table.ts +108 -108
- package/src/design-system/tabs.ts +44 -43
- package/src/design-system/timeline.ts +45 -45
- package/src/design-system/toast.ts +47 -47
- package/src/design-system/toggle.ts +88 -88
- package/src/design-system/tokens.ts +102 -0
- package/src/design-system/tooltip.ts +44 -44
- package/src/design-system/tree-view.ts +92 -92
- package/src/hooks/index.ts +50 -0
- package/src/hooks/useCookie/index.ts +5 -0
- package/src/hooks/useCookie/useCookie.test.ts +57 -0
- package/src/hooks/useCookie/useCookie.ts +127 -0
- package/src/hooks/useCountdown/index.ts +5 -0
- package/src/hooks/useCountdown/useCountdown.test.ts +113 -0
- package/src/hooks/useCountdown/useCountdown.ts +106 -0
- package/src/hooks/useEventListener/index.ts +4 -0
- package/src/hooks/useEventListener/useEventListener.test.ts +60 -0
- package/src/hooks/useEventListener/useEventListener.ts +99 -0
- package/src/hooks/useGeolocation/index.ts +6 -0
- package/src/hooks/useGeolocation/useGeolocation.test.ts +110 -0
- package/src/hooks/useGeolocation/useGeolocation.ts +175 -0
- package/src/hooks/useHotkeys/index.ts +5 -0
- package/src/hooks/useHotkeys/useHotkeys.test.ts +82 -0
- package/src/hooks/useHotkeys/useHotkeys.ts +130 -0
- package/src/hooks/useIdleTimeout/index.ts +5 -0
- package/src/hooks/useIdleTimeout/useIdleTimeout.test.ts +95 -0
- package/src/hooks/useIdleTimeout/useIdleTimeout.ts +111 -0
- package/src/hooks/useInterval/index.ts +1 -0
- package/src/hooks/useInterval/useInterval.test.ts +56 -0
- package/src/hooks/useInterval/useInterval.ts +36 -0
- package/src/hooks/useKeyPress/index.ts +1 -0
- package/src/hooks/useKeyPress/useKeyPress.test.ts +67 -0
- package/src/hooks/useKeyPress/useKeyPress.ts +65 -0
- package/src/hooks/useLongPress/index.ts +5 -0
- package/src/hooks/useLongPress/useLongPress.test.ts +180 -0
- package/src/hooks/useLongPress/useLongPress.ts +177 -0
- package/src/hooks/usePrevious/index.ts +1 -0
- package/src/hooks/usePrevious/usePrevious.test.ts +33 -0
- package/src/hooks/usePrevious/usePrevious.ts +24 -0
- package/src/hooks/useScrollPosition/index.ts +5 -0
- package/src/hooks/useScrollPosition/useScrollPosition.test.ts +69 -0
- package/src/hooks/useScrollPosition/useScrollPosition.ts +88 -0
- package/src/hooks/useTimeout/index.ts +1 -0
- package/src/hooks/useTimeout/useTimeout.test.ts +63 -0
- package/src/hooks/useTimeout/useTimeout.ts +58 -0
- package/src/hooks/useVirtualList/index.ts +6 -0
- package/src/hooks/useVirtualList/useVirtualList.test.ts +102 -0
- package/src/hooks/useVirtualList/useVirtualList.ts +141 -0
- package/src/lib/facade.test.ts +29 -8
- package/src/lib/facade.ts +6 -2
- package/src/ui/combobox/combobox-base.tsx +552 -0
- package/src/ui/combobox/combobox.test.tsx +292 -0
- package/src/ui/combobox/combobox.tsx +8 -0
- package/src/ui/combobox/index.ts +33 -0
- package/src/ui/combobox/types.ts +91 -0
- package/src/ui/combobox/variants.ts +58 -0
- package/src/ui/search/search-suggestion-list.tsx +11 -6
- package/src/ui/skeleton/variants.ts +105 -0
- package/dist/chunk-22I54GJW.js +0 -69
- package/dist/chunk-22I54GJW.js.map +0 -1
- package/dist/chunk-3I6XR7KN.js +0 -87
- package/dist/chunk-3I6XR7KN.js.map +0 -1
- package/dist/chunk-3R6PQUG2.mjs +0 -144
- package/dist/chunk-3R6PQUG2.mjs.map +0 -1
- package/dist/chunk-3Z6L24ZK.js +0 -83
- package/dist/chunk-3Z6L24ZK.js.map +0 -1
- package/dist/chunk-44G3U35C.js +0 -181
- package/dist/chunk-44G3U35C.js.map +0 -1
- package/dist/chunk-456OEGUT.mjs +0 -58
- package/dist/chunk-456OEGUT.mjs.map +0 -1
- package/dist/chunk-45CGVW7S.js +0 -126
- package/dist/chunk-45CGVW7S.js.map +0 -1
- package/dist/chunk-4QLWSXXO.mjs +0 -65
- package/dist/chunk-4QLWSXXO.mjs.map +0 -1
- package/dist/chunk-4U7CDEN7.mjs +0 -57
- package/dist/chunk-4U7CDEN7.mjs.map +0 -1
- package/dist/chunk-4ZP444GA.mjs +0 -19
- package/dist/chunk-4ZP444GA.mjs.map +0 -1
- package/dist/chunk-56DECC6D.js +0 -95
- package/dist/chunk-56DECC6D.js.map +0 -1
- package/dist/chunk-56KZVM5D.mjs +0 -159
- package/dist/chunk-56KZVM5D.mjs.map +0 -1
- package/dist/chunk-5BSYGFN7.mjs +0 -94
- package/dist/chunk-5BSYGFN7.mjs.map +0 -1
- package/dist/chunk-5J6QMTES.js +0 -655
- package/dist/chunk-5J6QMTES.js.map +0 -1
- package/dist/chunk-5QSYJHWL.mjs +0 -75
- package/dist/chunk-5QSYJHWL.mjs.map +0 -1
- package/dist/chunk-5R6XJAXQ.mjs +0 -66
- package/dist/chunk-5R6XJAXQ.mjs.map +0 -1
- package/dist/chunk-5WWD3TZ2.mjs +0 -70
- package/dist/chunk-5WWD3TZ2.mjs.map +0 -1
- package/dist/chunk-63UE3BR4.mjs +0 -79
- package/dist/chunk-63UE3BR4.mjs.map +0 -1
- package/dist/chunk-7LFRU6AW.js +0 -254
- package/dist/chunk-7LFRU6AW.js.map +0 -1
- package/dist/chunk-7M4TUP4I.js +0 -74
- package/dist/chunk-7M4TUP4I.js.map +0 -1
- package/dist/chunk-AADGUMYW.js +0 -122
- package/dist/chunk-AADGUMYW.js.map +0 -1
- package/dist/chunk-AQHY4S33.js +0 -19
- package/dist/chunk-BTSCPOWZ.mjs +0 -171
- package/dist/chunk-BTSCPOWZ.mjs.map +0 -1
- package/dist/chunk-BZZVO4GL.mjs.map +0 -1
- package/dist/chunk-DWDDIG6R.js +0 -68
- package/dist/chunk-DWDDIG6R.js.map +0 -1
- package/dist/chunk-E7BPOL74.js +0 -155
- package/dist/chunk-E7BPOL74.js.map +0 -1
- package/dist/chunk-EP7WTIKH.mjs +0 -81
- package/dist/chunk-EP7WTIKH.mjs.map +0 -1
- package/dist/chunk-F6V74YMW.js +0 -71
- package/dist/chunk-F6V74YMW.js.map +0 -1
- package/dist/chunk-FNNIH7R2.js +0 -70
- package/dist/chunk-FNNIH7R2.js.map +0 -1
- package/dist/chunk-FWY22BZZ.js +0 -134
- package/dist/chunk-FWY22BZZ.js.map +0 -1
- package/dist/chunk-FXDHDQTH.js +0 -79
- package/dist/chunk-FXDHDQTH.js.map +0 -1
- package/dist/chunk-FZET7XQV.js +0 -169
- package/dist/chunk-FZET7XQV.js.map +0 -1
- package/dist/chunk-GDYSB7SB.js +0 -78
- package/dist/chunk-GDYSB7SB.js.map +0 -1
- package/dist/chunk-GPM2PRC5.js +0 -61
- package/dist/chunk-GPM2PRC5.js.map +0 -1
- package/dist/chunk-I55QC57T.js +0 -47
- package/dist/chunk-I55QC57T.js.map +0 -1
- package/dist/chunk-ISXAUMRW.js +0 -63
- package/dist/chunk-ISXAUMRW.js.map +0 -1
- package/dist/chunk-IULYVARJ.mjs +0 -107
- package/dist/chunk-IULYVARJ.mjs.map +0 -1
- package/dist/chunk-IZAQBJKT.mjs +0 -125
- package/dist/chunk-IZAQBJKT.mjs.map +0 -1
- package/dist/chunk-J6XKTPP5.js +0 -61
- package/dist/chunk-J6XKTPP5.js.map +0 -1
- package/dist/chunk-JF4BRFOG.mjs +0 -54
- package/dist/chunk-JF4BRFOG.mjs.map +0 -1
- package/dist/chunk-JI3IEKH6.mjs +0 -64
- package/dist/chunk-JI3IEKH6.mjs.map +0 -1
- package/dist/chunk-JTMRSRYD.js +0 -63
- package/dist/chunk-JTMRSRYD.js.map +0 -1
- package/dist/chunk-KXNMW4NV.mjs +0 -61
- package/dist/chunk-KXNMW4NV.mjs.map +0 -1
- package/dist/chunk-L67EJJFN.js +0 -82
- package/dist/chunk-L67EJJFN.js.map +0 -1
- package/dist/chunk-L6AS5AVO.js +0 -121
- package/dist/chunk-L6AS5AVO.js.map +0 -1
- package/dist/chunk-LL2UY6CD.mjs +0 -74
- package/dist/chunk-LL2UY6CD.mjs.map +0 -1
- package/dist/chunk-LU6VEI4B.js +0 -92
- package/dist/chunk-LU6VEI4B.js.map +0 -1
- package/dist/chunk-MCYFKM7T.js +0 -62
- package/dist/chunk-MCYFKM7T.js.map +0 -1
- package/dist/chunk-MUP7DVQR.js +0 -26
- package/dist/chunk-MUP7DVQR.js.map +0 -1
- package/dist/chunk-N2RUT33F.mjs +0 -68
- package/dist/chunk-N2RUT33F.mjs.map +0 -1
- package/dist/chunk-NMBSK44H.mjs +0 -44
- package/dist/chunk-NMBSK44H.mjs.map +0 -1
- package/dist/chunk-NVTV3EQB.js +0 -49
- package/dist/chunk-NXNL64Q7.mjs +0 -112
- package/dist/chunk-NXNL64Q7.mjs.map +0 -1
- package/dist/chunk-OGMIKRLJ.js +0 -78
- package/dist/chunk-OGMIKRLJ.js.map +0 -1
- package/dist/chunk-OOBA2MDD.mjs +0 -57
- package/dist/chunk-OOBA2MDD.mjs.map +0 -1
- package/dist/chunk-OQCI2IVL.mjs +0 -112
- package/dist/chunk-OQCI2IVL.mjs.map +0 -1
- package/dist/chunk-P25NI2HG.js +0 -114
- package/dist/chunk-P25NI2HG.js.map +0 -1
- package/dist/chunk-P2DQP4J4.js.map +0 -1
- package/dist/chunk-P43A2BPU.mjs +0 -82
- package/dist/chunk-P43A2BPU.mjs.map +0 -1
- package/dist/chunk-P54PZ72L.mjs +0 -65
- package/dist/chunk-P54PZ72L.mjs.map +0 -1
- package/dist/chunk-PNAFXOZC.mjs +0 -69
- package/dist/chunk-PNAFXOZC.mjs.map +0 -1
- package/dist/chunk-QTFOUK4H.js +0 -107
- package/dist/chunk-QTFOUK4H.js.map +0 -1
- package/dist/chunk-QW2ZHKPC.mjs +0 -64
- package/dist/chunk-QW2ZHKPC.mjs.map +0 -1
- package/dist/chunk-R2256VSD.js +0 -80
- package/dist/chunk-R2256VSD.js.map +0 -1
- package/dist/chunk-S4OSJ4ZN.js +0 -71
- package/dist/chunk-S4OSJ4ZN.js.map +0 -1
- package/dist/chunk-SWU5U5BB.mjs +0 -116
- package/dist/chunk-SWU5U5BB.mjs.map +0 -1
- package/dist/chunk-SYFTQAZG.mjs +0 -58
- package/dist/chunk-SYFTQAZG.mjs.map +0 -1
- package/dist/chunk-T5SPR27V.mjs +0 -64
- package/dist/chunk-T5SPR27V.mjs.map +0 -1
- package/dist/chunk-TD4W3AHI.mjs +0 -113
- package/dist/chunk-TD4W3AHI.mjs.map +0 -1
- package/dist/chunk-TMFXI5FH.mjs +0 -52
- package/dist/chunk-TMFXI5FH.mjs.map +0 -1
- package/dist/chunk-UJBXDDHN.mjs +0 -73
- package/dist/chunk-UJBXDDHN.mjs.map +0 -1
- package/dist/chunk-USLP5NY6.js +0 -69
- package/dist/chunk-USLP5NY6.js.map +0 -1
- package/dist/chunk-UU34Q42Q.js +0 -70
- package/dist/chunk-UU34Q42Q.js.map +0 -1
- package/dist/chunk-V4U6Q5NL.mjs +0 -68
- package/dist/chunk-V4U6Q5NL.mjs.map +0 -1
- package/dist/chunk-VIKQGO4W.mjs +0 -636
- package/dist/chunk-VIKQGO4W.mjs.map +0 -1
- package/dist/chunk-VWHER5XN.js +0 -65
- package/dist/chunk-VWHER5XN.js.map +0 -1
- package/dist/chunk-WBRTXAKP.js +0 -705
- package/dist/chunk-WN7XWKAS.mjs +0 -52
- package/dist/chunk-WN7XWKAS.mjs.map +0 -1
- package/dist/chunk-X3N4EVF7.mjs +0 -240
- package/dist/chunk-X3N4EVF7.mjs.map +0 -1
- package/dist/chunk-Y4YQSCNL.js +0 -65
- package/dist/chunk-Y4YQSCNL.js.map +0 -1
- package/dist/chunk-Y7NRTCAT.js +0 -78
- package/dist/chunk-Y7NRTCAT.js.map +0 -1
- package/dist/chunk-YDKAE7RM.mjs +0 -62
- package/dist/chunk-YDKAE7RM.mjs.map +0 -1
- package/dist/chunk-YN4ZS3R2.js +0 -120
- package/dist/chunk-YN4ZS3R2.js.map +0 -1
- package/src/ui/accessibility/axe-core.test.tsx +0 -139
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
require('../chunk-PZ5AY32C.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
function useScrollPosition(params = {}) {
|
|
8
|
+
const { target } = params;
|
|
9
|
+
const [element, setElement] = react.useState(
|
|
10
|
+
() => target?.current ?? null
|
|
11
|
+
);
|
|
12
|
+
const [position, setPosition] = react.useState({ x: 0, y: 0 });
|
|
13
|
+
react.useEffect(() => {
|
|
14
|
+
if (target?.current != null) {
|
|
15
|
+
setElement(target.current);
|
|
16
|
+
}
|
|
17
|
+
}, [target]);
|
|
18
|
+
const setRef = react.useCallback((node) => {
|
|
19
|
+
setElement(node);
|
|
20
|
+
}, []);
|
|
21
|
+
react.useEffect(() => {
|
|
22
|
+
const node = element ?? (typeof window === "undefined" ? null : window);
|
|
23
|
+
if (node == null) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const read = () => element == null ? { x: window.scrollX, y: window.scrollY } : { x: element.scrollLeft, y: element.scrollTop };
|
|
27
|
+
const onScroll = () => {
|
|
28
|
+
setPosition(read());
|
|
29
|
+
};
|
|
30
|
+
onScroll();
|
|
31
|
+
node.addEventListener("scroll", onScroll, { passive: true });
|
|
32
|
+
return () => {
|
|
33
|
+
node.removeEventListener("scroll", onScroll);
|
|
34
|
+
};
|
|
35
|
+
}, [element]);
|
|
36
|
+
return { x: position.x, y: position.y, setRef };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
exports.useScrollPosition = useScrollPosition;
|
|
40
|
+
//# sourceMappingURL=useScrollPosition.js.map
|
|
41
|
+
//# sourceMappingURL=useScrollPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useScrollPosition/useScrollPosition.ts"],"names":["useState","useEffect","useCallback"],"mappings":";;;;;AA2CO,SAAS,iBAAA,CACd,MAAA,GAAqC,EAAC,EACV;AAC5B,EAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AAInB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAA;AAAA,IAC5B,MAAM,QAAQ,OAAA,IAAW;AAAA,GAC3B;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAyB,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAGvE,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ,WAAW,IAAA,EAAM;AAC3B,MAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,MAAA,GAASC,iBAAA,CAAY,CAAC,IAAA,KAAmB;AAC7C,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GACJ,OAAA,KAAY,OAAO,MAAA,KAAW,cAAc,IAAA,GAAO,MAAA,CAAA;AACrD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,MACX,OAAA,IAAW,OACP,EAAE,CAAA,EAAG,OAAO,OAAA,EAAS,CAAA,EAAG,MAAA,CAAO,OAAA,KAC/B,EAAE,CAAA,EAAG,QAAQ,UAAA,EAAY,CAAA,EAAG,QAAQ,SAAA,EAAU;AACpD,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AACA,IAAA,QAAA,EAAS;AACT,IAAA,IAAA,CAAK,iBAAiB,QAAA,EAAU,QAAA,EAAU,EAAE,OAAA,EAAS,MAAM,CAAA;AAC3D,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AAAA,IAC7C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO,EAAE,CAAA,EAAG,QAAA,CAAS,GAAG,CAAA,EAAG,QAAA,CAAS,GAAG,MAAA,EAAO;AAChD","file":"useScrollPosition.js","sourcesContent":["\"use client\";\n\nimport type { RefCallback, RefObject } from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport type ScrollPosition = {\n x: number;\n y: number;\n};\n\nexport type UseScrollPositionParams<T extends HTMLElement = HTMLElement> = {\n /**\n * Scroll container to observe via a pre-populated RefObject.\n * For elements that mount asynchronously, use the returned `setRef` callback ref instead.\n */\n target?: RefObject<T | null>;\n};\n\nexport type UseScrollPositionResult<T extends HTMLElement = HTMLElement> =\n ScrollPosition & {\n /**\n * Callback ref to attach to a scroll container — works correctly with elements\n * that are null on initial render (lazy / conditional mounts). Pass this as `ref`\n * on the scrollable element when you cannot guarantee the ref is populated at mount.\n */\n setRef: RefCallback<T>;\n };\n\n/**\n * Tracks the scroll offset of the window (default) or a scrollable element.\n *\n * - Window mode reads `scrollX` / `scrollY`; element mode reads `scrollLeft` / `scrollTop`.\n * - Subscribes with a passive `scroll` listener and reads the initial position on mount.\n * - Pass a pre-populated `target` RefObject **or** use the returned `setRef` callback ref on\n * the scrollable element. Prefer `setRef` for elements that may be null on the first render\n * (conditional mounts, portals) — it stores the element in state so the effect re-attaches\n * correctly when the element becomes available.\n * - For high-frequency consumers, derive throttled values downstream (e.g. with\n * `useThrottledCallback`) rather than throttling the source of truth.\n *\n * @param params - {@link UseScrollPositionParams}\n * @returns Latest `{ x, y }` scroll offset in pixels plus a `setRef` callback ref.\n */\nexport function useScrollPosition<T extends HTMLElement = HTMLElement>(\n params: UseScrollPositionParams<T> = {},\n): UseScrollPositionResult<T> {\n const { target } = params;\n\n // Track the element in state so the scroll listener effect reruns when the element\n // is assigned (handles callback-ref / lazy-mount patterns).\n const [element, setElement] = useState<T | null>(\n () => target?.current ?? null,\n );\n const [position, setPosition] = useState<ScrollPosition>({ x: 0, y: 0 });\n\n // Sync element state when the target RefObject changes (pre-populated refs).\n useEffect(() => {\n if (target?.current != null) {\n setElement(target.current);\n }\n }, [target]);\n\n const setRef = useCallback((node: T | null) => {\n setElement(node);\n }, []);\n\n useEffect(() => {\n const node: Window | T | null =\n element ?? (typeof window === \"undefined\" ? null : window);\n if (node == null) {\n return;\n }\n const read = (): ScrollPosition =>\n element == null\n ? { x: window.scrollX, y: window.scrollY }\n : { x: element.scrollLeft, y: element.scrollTop };\n const onScroll = () => {\n setPosition(read());\n };\n onScroll();\n node.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => {\n node.removeEventListener(\"scroll\", onScroll);\n };\n }, [element]);\n\n return { x: position.x, y: position.y, setRef };\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import '../chunk-J5LGTIGS.mjs';
|
|
3
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
4
|
+
|
|
5
|
+
function useScrollPosition(params = {}) {
|
|
6
|
+
const { target } = params;
|
|
7
|
+
const [element, setElement] = useState(
|
|
8
|
+
() => target?.current ?? null
|
|
9
|
+
);
|
|
10
|
+
const [position, setPosition] = useState({ x: 0, y: 0 });
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (target?.current != null) {
|
|
13
|
+
setElement(target.current);
|
|
14
|
+
}
|
|
15
|
+
}, [target]);
|
|
16
|
+
const setRef = useCallback((node) => {
|
|
17
|
+
setElement(node);
|
|
18
|
+
}, []);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const node = element ?? (typeof window === "undefined" ? null : window);
|
|
21
|
+
if (node == null) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const read = () => element == null ? { x: window.scrollX, y: window.scrollY } : { x: element.scrollLeft, y: element.scrollTop };
|
|
25
|
+
const onScroll = () => {
|
|
26
|
+
setPosition(read());
|
|
27
|
+
};
|
|
28
|
+
onScroll();
|
|
29
|
+
node.addEventListener("scroll", onScroll, { passive: true });
|
|
30
|
+
return () => {
|
|
31
|
+
node.removeEventListener("scroll", onScroll);
|
|
32
|
+
};
|
|
33
|
+
}, [element]);
|
|
34
|
+
return { x: position.x, y: position.y, setRef };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { useScrollPosition };
|
|
38
|
+
//# sourceMappingURL=useScrollPosition.mjs.map
|
|
39
|
+
//# sourceMappingURL=useScrollPosition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useScrollPosition/useScrollPosition.ts"],"names":[],"mappings":";;;AA2CO,SAAS,iBAAA,CACd,MAAA,GAAqC,EAAC,EACV;AAC5B,EAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AAInB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAA;AAAA,IAC5B,MAAM,QAAQ,OAAA,IAAW;AAAA,GAC3B;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAyB,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAGvE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ,WAAW,IAAA,EAAM;AAC3B,MAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAC,IAAA,KAAmB;AAC7C,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GACJ,OAAA,KAAY,OAAO,MAAA,KAAW,cAAc,IAAA,GAAO,MAAA,CAAA;AACrD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,MACX,OAAA,IAAW,OACP,EAAE,CAAA,EAAG,OAAO,OAAA,EAAS,CAAA,EAAG,MAAA,CAAO,OAAA,KAC/B,EAAE,CAAA,EAAG,QAAQ,UAAA,EAAY,CAAA,EAAG,QAAQ,SAAA,EAAU;AACpD,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AACA,IAAA,QAAA,EAAS;AACT,IAAA,IAAA,CAAK,iBAAiB,QAAA,EAAU,QAAA,EAAU,EAAE,OAAA,EAAS,MAAM,CAAA;AAC3D,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AAAA,IAC7C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO,EAAE,CAAA,EAAG,QAAA,CAAS,GAAG,CAAA,EAAG,QAAA,CAAS,GAAG,MAAA,EAAO;AAChD","file":"useScrollPosition.mjs","sourcesContent":["\"use client\";\n\nimport type { RefCallback, RefObject } from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport type ScrollPosition = {\n x: number;\n y: number;\n};\n\nexport type UseScrollPositionParams<T extends HTMLElement = HTMLElement> = {\n /**\n * Scroll container to observe via a pre-populated RefObject.\n * For elements that mount asynchronously, use the returned `setRef` callback ref instead.\n */\n target?: RefObject<T | null>;\n};\n\nexport type UseScrollPositionResult<T extends HTMLElement = HTMLElement> =\n ScrollPosition & {\n /**\n * Callback ref to attach to a scroll container — works correctly with elements\n * that are null on initial render (lazy / conditional mounts). Pass this as `ref`\n * on the scrollable element when you cannot guarantee the ref is populated at mount.\n */\n setRef: RefCallback<T>;\n };\n\n/**\n * Tracks the scroll offset of the window (default) or a scrollable element.\n *\n * - Window mode reads `scrollX` / `scrollY`; element mode reads `scrollLeft` / `scrollTop`.\n * - Subscribes with a passive `scroll` listener and reads the initial position on mount.\n * - Pass a pre-populated `target` RefObject **or** use the returned `setRef` callback ref on\n * the scrollable element. Prefer `setRef` for elements that may be null on the first render\n * (conditional mounts, portals) — it stores the element in state so the effect re-attaches\n * correctly when the element becomes available.\n * - For high-frequency consumers, derive throttled values downstream (e.g. with\n * `useThrottledCallback`) rather than throttling the source of truth.\n *\n * @param params - {@link UseScrollPositionParams}\n * @returns Latest `{ x, y }` scroll offset in pixels plus a `setRef` callback ref.\n */\nexport function useScrollPosition<T extends HTMLElement = HTMLElement>(\n params: UseScrollPositionParams<T> = {},\n): UseScrollPositionResult<T> {\n const { target } = params;\n\n // Track the element in state so the scroll listener effect reruns when the element\n // is assigned (handles callback-ref / lazy-mount patterns).\n const [element, setElement] = useState<T | null>(\n () => target?.current ?? null,\n );\n const [position, setPosition] = useState<ScrollPosition>({ x: 0, y: 0 });\n\n // Sync element state when the target RefObject changes (pre-populated refs).\n useEffect(() => {\n if (target?.current != null) {\n setElement(target.current);\n }\n }, [target]);\n\n const setRef = useCallback((node: T | null) => {\n setElement(node);\n }, []);\n\n useEffect(() => {\n const node: Window | T | null =\n element ?? (typeof window === \"undefined\" ? null : window);\n if (node == null) {\n return;\n }\n const read = (): ScrollPosition =>\n element == null\n ? { x: window.scrollX, y: window.scrollY }\n : { x: element.scrollLeft, y: element.scrollTop };\n const onScroll = () => {\n setPosition(read());\n };\n onScroll();\n node.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => {\n node.removeEventListener(\"scroll\", onScroll);\n };\n }, [element]);\n\n return { x: position.x, y: position.y, setRef };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTimeout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type UseTimeoutResult = {
|
|
2
|
+
/** Cancel the pending timeout (no-op if already fired or cleared). */
|
|
3
|
+
clear: () => void;
|
|
4
|
+
/** Cancel any pending timeout and schedule a fresh one with the current delay. */
|
|
5
|
+
reset: () => void;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Declarative `setTimeout`: runs `callback` once after `delayMs` milliseconds with automatic cleanup.
|
|
9
|
+
*
|
|
10
|
+
* - The latest callback is kept in a ref, so a new inline function each render does not reschedule.
|
|
11
|
+
* - Pass `null` as the delay to cancel scheduling entirely.
|
|
12
|
+
* - Changing `delayMs` cancels the pending timeout and schedules a new one.
|
|
13
|
+
*
|
|
14
|
+
* @param callback - Function invoked when the timeout fires.
|
|
15
|
+
* @param delayMs - Delay in milliseconds, or `null` to disable.
|
|
16
|
+
* @returns `{ clear, reset }` to cancel or restart the timeout imperatively.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useTimeout(callback: () => void, delayMs: number | null): UseTimeoutResult;
|
|
19
|
+
//# sourceMappingURL=useTimeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTimeout.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTimeout/useTimeout.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sEAAsE;IACtE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,kFAAkF;IAClF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,IAAI,EACpB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,gBAAgB,CAgClB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
require('../chunk-PZ5AY32C.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
function useTimeout(callback, delayMs) {
|
|
8
|
+
const callbackRef = react.useRef(callback);
|
|
9
|
+
const timeoutRef = react.useRef(void 0);
|
|
10
|
+
react.useEffect(() => {
|
|
11
|
+
callbackRef.current = callback;
|
|
12
|
+
}, [callback]);
|
|
13
|
+
const clear = react.useCallback(() => {
|
|
14
|
+
if (timeoutRef.current !== void 0) {
|
|
15
|
+
window.clearTimeout(timeoutRef.current);
|
|
16
|
+
timeoutRef.current = void 0;
|
|
17
|
+
}
|
|
18
|
+
}, []);
|
|
19
|
+
const reset = react.useCallback(() => {
|
|
20
|
+
clear();
|
|
21
|
+
if (delayMs == null) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
25
|
+
timeoutRef.current = void 0;
|
|
26
|
+
callbackRef.current();
|
|
27
|
+
}, delayMs);
|
|
28
|
+
}, [clear, delayMs]);
|
|
29
|
+
react.useEffect(() => {
|
|
30
|
+
reset();
|
|
31
|
+
return clear;
|
|
32
|
+
}, [clear, reset]);
|
|
33
|
+
return { clear, reset };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.useTimeout = useTimeout;
|
|
37
|
+
//# sourceMappingURL=useTimeout.js.map
|
|
38
|
+
//# sourceMappingURL=useTimeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useTimeout/useTimeout.ts"],"names":["useRef","useEffect","useCallback"],"mappings":";;;;;AAsBO,SAAS,UAAA,CACd,UACA,OAAA,EACkB;AAClB,EAAA,MAAM,WAAA,GAAcA,aAAO,QAAQ,CAAA;AACnC,EAAA,MAAM,UAAA,GAAaA,aAA2B,MAAS,CAAA;AAEvD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,KAAA,GAAQC,kBAAY,MAAM;AAC9B,IAAA,IAAI,UAAA,CAAW,YAAY,MAAA,EAAW;AACpC,MAAA,MAAA,CAAO,YAAA,CAAa,WAAW,OAAO,CAAA;AACtC,MAAA,UAAA,CAAW,OAAA,GAAU,MAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,kBAAY,MAAM;AAC9B,IAAA,KAAA,EAAM;AACN,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC3C,MAAA,UAAA,CAAW,OAAA,GAAU,MAAA;AACrB,MAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,IACtB,GAAG,OAAO,CAAA;AAAA,EACZ,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,KAAA,EAAM;AACN,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAEjB,EAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AACxB","file":"useTimeout.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport type UseTimeoutResult = {\n /** Cancel the pending timeout (no-op if already fired or cleared). */\n clear: () => void;\n /** Cancel any pending timeout and schedule a fresh one with the current delay. */\n reset: () => void;\n};\n\n/**\n * Declarative `setTimeout`: runs `callback` once after `delayMs` milliseconds with automatic cleanup.\n *\n * - The latest callback is kept in a ref, so a new inline function each render does not reschedule.\n * - Pass `null` as the delay to cancel scheduling entirely.\n * - Changing `delayMs` cancels the pending timeout and schedules a new one.\n *\n * @param callback - Function invoked when the timeout fires.\n * @param delayMs - Delay in milliseconds, or `null` to disable.\n * @returns `{ clear, reset }` to cancel or restart the timeout imperatively.\n */\nexport function useTimeout(\n callback: () => void,\n delayMs: number | null,\n): UseTimeoutResult {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<number | undefined>(undefined);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const clear = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n const reset = useCallback(() => {\n clear();\n if (delayMs == null) {\n return;\n }\n timeoutRef.current = window.setTimeout(() => {\n timeoutRef.current = undefined;\n callbackRef.current();\n }, delayMs);\n }, [clear, delayMs]);\n\n useEffect(() => {\n reset();\n return clear;\n }, [clear, reset]);\n\n return { clear, reset };\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import '../chunk-J5LGTIGS.mjs';
|
|
3
|
+
import { useRef, useEffect, useCallback } from 'react';
|
|
4
|
+
|
|
5
|
+
function useTimeout(callback, delayMs) {
|
|
6
|
+
const callbackRef = useRef(callback);
|
|
7
|
+
const timeoutRef = useRef(void 0);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
callbackRef.current = callback;
|
|
10
|
+
}, [callback]);
|
|
11
|
+
const clear = useCallback(() => {
|
|
12
|
+
if (timeoutRef.current !== void 0) {
|
|
13
|
+
window.clearTimeout(timeoutRef.current);
|
|
14
|
+
timeoutRef.current = void 0;
|
|
15
|
+
}
|
|
16
|
+
}, []);
|
|
17
|
+
const reset = useCallback(() => {
|
|
18
|
+
clear();
|
|
19
|
+
if (delayMs == null) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
23
|
+
timeoutRef.current = void 0;
|
|
24
|
+
callbackRef.current();
|
|
25
|
+
}, delayMs);
|
|
26
|
+
}, [clear, delayMs]);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
reset();
|
|
29
|
+
return clear;
|
|
30
|
+
}, [clear, reset]);
|
|
31
|
+
return { clear, reset };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { useTimeout };
|
|
35
|
+
//# sourceMappingURL=useTimeout.mjs.map
|
|
36
|
+
//# sourceMappingURL=useTimeout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useTimeout/useTimeout.ts"],"names":[],"mappings":";;;AAsBO,SAAS,UAAA,CACd,UACA,OAAA,EACkB;AAClB,EAAA,MAAM,WAAA,GAAc,OAAO,QAAQ,CAAA;AACnC,EAAA,MAAM,UAAA,GAAa,OAA2B,MAAS,CAAA;AAEvD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,IAAI,UAAA,CAAW,YAAY,MAAA,EAAW;AACpC,MAAA,MAAA,CAAO,YAAA,CAAa,WAAW,OAAO,CAAA;AACtC,MAAA,UAAA,CAAW,OAAA,GAAU,MAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,KAAA,EAAM;AACN,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC3C,MAAA,UAAA,CAAW,OAAA,GAAU,MAAA;AACrB,MAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,IACtB,GAAG,OAAO,CAAA;AAAA,EACZ,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAA,EAAM;AACN,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAEjB,EAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AACxB","file":"useTimeout.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport type UseTimeoutResult = {\n /** Cancel the pending timeout (no-op if already fired or cleared). */\n clear: () => void;\n /** Cancel any pending timeout and schedule a fresh one with the current delay. */\n reset: () => void;\n};\n\n/**\n * Declarative `setTimeout`: runs `callback` once after `delayMs` milliseconds with automatic cleanup.\n *\n * - The latest callback is kept in a ref, so a new inline function each render does not reschedule.\n * - Pass `null` as the delay to cancel scheduling entirely.\n * - Changing `delayMs` cancels the pending timeout and schedules a new one.\n *\n * @param callback - Function invoked when the timeout fires.\n * @param delayMs - Delay in milliseconds, or `null` to disable.\n * @returns `{ clear, reset }` to cancel or restart the timeout imperatively.\n */\nexport function useTimeout(\n callback: () => void,\n delayMs: number | null,\n): UseTimeoutResult {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<number | undefined>(undefined);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const clear = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n const reset = useCallback(() => {\n clear();\n if (delayMs == null) {\n return;\n }\n timeoutRef.current = window.setTimeout(() => {\n timeoutRef.current = undefined;\n callbackRef.current();\n }, delayMs);\n }, [clear, delayMs]);\n\n useEffect(() => {\n reset();\n return clear;\n }, [clear, reset]);\n\n return { clear, reset };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVirtualList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { RefCallback } from "react";
|
|
2
|
+
export type VirtualItem = {
|
|
3
|
+
/** Index into your data array. */
|
|
4
|
+
index: number;
|
|
5
|
+
/** Offset from the top of the scroll content in pixels (use for `translateY` / `top`). */
|
|
6
|
+
start: number;
|
|
7
|
+
/** Row height in pixels. */
|
|
8
|
+
size: number;
|
|
9
|
+
};
|
|
10
|
+
export type UseVirtualListParams = {
|
|
11
|
+
/** Total number of rows in the list. */
|
|
12
|
+
itemCount: number;
|
|
13
|
+
/** Fixed height of every row in pixels (must be > 0). */
|
|
14
|
+
itemHeight: number;
|
|
15
|
+
/** Extra rows rendered above and below the viewport (default `3`). */
|
|
16
|
+
overscan?: number;
|
|
17
|
+
};
|
|
18
|
+
export type UseVirtualListResult = {
|
|
19
|
+
/** Callback ref for the scrollable container (needs `overflow-y: auto` and a bounded height). */
|
|
20
|
+
setContainerRef: RefCallback<HTMLElement>;
|
|
21
|
+
/** The rows to render, each with its absolute `start` offset. */
|
|
22
|
+
virtualItems: VirtualItem[];
|
|
23
|
+
/** Height of the full list content; set it on an inner spacer element. */
|
|
24
|
+
totalHeight: number;
|
|
25
|
+
/** First rendered index (after overscan). */
|
|
26
|
+
startIndex: number;
|
|
27
|
+
/** Last rendered index (after overscan), `-1` when empty. */
|
|
28
|
+
endIndex: number;
|
|
29
|
+
/** Scroll the container so the given row is at the top. */
|
|
30
|
+
scrollToIndex: (index: number) => void;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Headless fixed-height list virtualization: renders only the rows visible in the
|
|
34
|
+
* scroll container (plus `overscan`), so lists of tens of thousands of rows stay cheap.
|
|
35
|
+
*
|
|
36
|
+
* Markup recipe: outer container gets `setContainerRef` + `overflow-y: auto` and a height;
|
|
37
|
+
* inside it, one relative spacer div with `height: totalHeight`; each virtual item is
|
|
38
|
+
* absolutely positioned at `translateY(item.start)` with `height: item.size`.
|
|
39
|
+
*
|
|
40
|
+
* Viewport size tracks `ResizeObserver` (when available) and scroll position tracks a
|
|
41
|
+
* passive `scroll` listener. For variable-height rows, reach for a dedicated virtualizer.
|
|
42
|
+
*
|
|
43
|
+
* @param params - {@link UseVirtualListParams}
|
|
44
|
+
* @returns {@link UseVirtualListResult}
|
|
45
|
+
*/
|
|
46
|
+
export declare function useVirtualList({ itemCount, itemHeight, overscan, }: UseVirtualListParams): UseVirtualListResult;
|
|
47
|
+
//# sourceMappingURL=useVirtualList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualList.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVirtualList/useVirtualList.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,MAAM,MAAM,WAAW,GAAG;IACxB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,iGAAiG;IACjG,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC1C,iEAAiE;IACjE,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,UAAU,EACV,QAAY,GACb,EAAE,oBAAoB,GAAG,oBAAoB,CAoF7C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
require('../chunk-PZ5AY32C.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
function useVirtualList({
|
|
8
|
+
itemCount,
|
|
9
|
+
itemHeight,
|
|
10
|
+
overscan = 3
|
|
11
|
+
}) {
|
|
12
|
+
const [container, setContainer] = react.useState(null);
|
|
13
|
+
const [scrollTop, setScrollTop] = react.useState(0);
|
|
14
|
+
const [viewportHeight, setViewportHeight] = react.useState(0);
|
|
15
|
+
const setContainerRef = react.useCallback((node) => {
|
|
16
|
+
setContainer(node);
|
|
17
|
+
}, []);
|
|
18
|
+
react.useEffect(() => {
|
|
19
|
+
if (container == null) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const onScroll = () => {
|
|
23
|
+
setScrollTop(container.scrollTop);
|
|
24
|
+
};
|
|
25
|
+
const measure = () => {
|
|
26
|
+
setViewportHeight(container.clientHeight);
|
|
27
|
+
};
|
|
28
|
+
measure();
|
|
29
|
+
onScroll();
|
|
30
|
+
container.addEventListener("scroll", onScroll, { passive: true });
|
|
31
|
+
let observer;
|
|
32
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
33
|
+
observer = new ResizeObserver(measure);
|
|
34
|
+
observer.observe(container);
|
|
35
|
+
}
|
|
36
|
+
return () => {
|
|
37
|
+
container.removeEventListener("scroll", onScroll);
|
|
38
|
+
observer?.disconnect();
|
|
39
|
+
};
|
|
40
|
+
}, [container]);
|
|
41
|
+
const safeItemCount = Math.max(0, Math.floor(itemCount));
|
|
42
|
+
const safeItemHeight = Math.max(1, itemHeight);
|
|
43
|
+
const safeOverscan = Math.max(0, Math.floor(overscan));
|
|
44
|
+
const totalHeight = safeItemCount * safeItemHeight;
|
|
45
|
+
const startIndex = safeItemCount === 0 ? 0 : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);
|
|
46
|
+
const endIndex = safeItemCount === 0 ? -1 : Math.min(
|
|
47
|
+
safeItemCount - 1,
|
|
48
|
+
Math.ceil((scrollTop + viewportHeight) / safeItemHeight) - 1 + safeOverscan
|
|
49
|
+
);
|
|
50
|
+
const virtualItems = react.useMemo(() => {
|
|
51
|
+
const items = [];
|
|
52
|
+
for (let index = startIndex; index <= endIndex; index += 1) {
|
|
53
|
+
items.push({
|
|
54
|
+
index,
|
|
55
|
+
start: index * safeItemHeight,
|
|
56
|
+
size: safeItemHeight
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return items;
|
|
60
|
+
}, [endIndex, safeItemHeight, startIndex]);
|
|
61
|
+
const scrollToIndex = react.useCallback(
|
|
62
|
+
(index) => {
|
|
63
|
+
if (container == null || safeItemCount === 0) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);
|
|
67
|
+
container.scrollTop = clamped * safeItemHeight;
|
|
68
|
+
setScrollTop(container.scrollTop);
|
|
69
|
+
},
|
|
70
|
+
[container, safeItemCount, safeItemHeight]
|
|
71
|
+
);
|
|
72
|
+
return {
|
|
73
|
+
setContainerRef,
|
|
74
|
+
virtualItems,
|
|
75
|
+
totalHeight,
|
|
76
|
+
startIndex,
|
|
77
|
+
endIndex,
|
|
78
|
+
scrollToIndex
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
exports.useVirtualList = useVirtualList;
|
|
83
|
+
//# sourceMappingURL=useVirtualList.js.map
|
|
84
|
+
//# sourceMappingURL=useVirtualList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useVirtualList/useVirtualList.ts"],"names":["useState","useCallback","useEffect","useMemo"],"mappings":"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","file":"useVirtualList.js","sourcesContent":["\"use client\";\n\nimport type { RefCallback } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\n\nexport type VirtualItem = {\n /** Index into your data array. */\n index: number;\n /** Offset from the top of the scroll content in pixels (use for `translateY` / `top`). */\n start: number;\n /** Row height in pixels. */\n size: number;\n};\n\nexport type UseVirtualListParams = {\n /** Total number of rows in the list. */\n itemCount: number;\n /** Fixed height of every row in pixels (must be > 0). */\n itemHeight: number;\n /** Extra rows rendered above and below the viewport (default `3`). */\n overscan?: number;\n};\n\nexport type UseVirtualListResult = {\n /** Callback ref for the scrollable container (needs `overflow-y: auto` and a bounded height). */\n setContainerRef: RefCallback<HTMLElement>;\n /** The rows to render, each with its absolute `start` offset. */\n virtualItems: VirtualItem[];\n /** Height of the full list content; set it on an inner spacer element. */\n totalHeight: number;\n /** First rendered index (after overscan). */\n startIndex: number;\n /** Last rendered index (after overscan), `-1` when empty. */\n endIndex: number;\n /** Scroll the container so the given row is at the top. */\n scrollToIndex: (index: number) => void;\n};\n\n/**\n * Headless fixed-height list virtualization: renders only the rows visible in the\n * scroll container (plus `overscan`), so lists of tens of thousands of rows stay cheap.\n *\n * Markup recipe: outer container gets `setContainerRef` + `overflow-y: auto` and a height;\n * inside it, one relative spacer div with `height: totalHeight`; each virtual item is\n * absolutely positioned at `translateY(item.start)` with `height: item.size`.\n *\n * Viewport size tracks `ResizeObserver` (when available) and scroll position tracks a\n * passive `scroll` listener. For variable-height rows, reach for a dedicated virtualizer.\n *\n * @param params - {@link UseVirtualListParams}\n * @returns {@link UseVirtualListResult}\n */\nexport function useVirtualList({\n itemCount,\n itemHeight,\n overscan = 3,\n}: UseVirtualListParams): UseVirtualListResult {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(0);\n\n const setContainerRef = useCallback((node: HTMLElement | null) => {\n setContainer(node);\n }, []);\n\n useEffect(() => {\n if (container == null) {\n return;\n }\n const onScroll = () => {\n setScrollTop(container.scrollTop);\n };\n const measure = () => {\n setViewportHeight(container.clientHeight);\n };\n measure();\n onScroll();\n container.addEventListener(\"scroll\", onScroll, { passive: true });\n let observer: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new ResizeObserver(measure);\n observer.observe(container);\n }\n return () => {\n container.removeEventListener(\"scroll\", onScroll);\n observer?.disconnect();\n };\n }, [container]);\n\n const safeItemCount = Math.max(0, Math.floor(itemCount));\n const safeItemHeight = Math.max(1, itemHeight);\n const safeOverscan = Math.max(0, Math.floor(overscan));\n\n const totalHeight = safeItemCount * safeItemHeight;\n const startIndex =\n safeItemCount === 0\n ? 0\n : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);\n const endIndex =\n safeItemCount === 0\n ? -1\n : Math.min(\n safeItemCount - 1,\n Math.ceil((scrollTop + viewportHeight) / safeItemHeight) -\n 1 +\n safeOverscan,\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n for (let index = startIndex; index <= endIndex; index += 1) {\n items.push({\n index,\n start: index * safeItemHeight,\n size: safeItemHeight,\n });\n }\n return items;\n }, [endIndex, safeItemHeight, startIndex]);\n\n const scrollToIndex = useCallback(\n (index: number) => {\n if (container == null || safeItemCount === 0) {\n return;\n }\n const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);\n container.scrollTop = clamped * safeItemHeight;\n setScrollTop(container.scrollTop);\n },\n [container, safeItemCount, safeItemHeight],\n );\n\n return {\n setContainerRef,\n virtualItems,\n totalHeight,\n startIndex,\n endIndex,\n scrollToIndex,\n };\n}\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import '../chunk-J5LGTIGS.mjs';
|
|
3
|
+
import { useState, useCallback, useEffect, useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
function useVirtualList({
|
|
6
|
+
itemCount,
|
|
7
|
+
itemHeight,
|
|
8
|
+
overscan = 3
|
|
9
|
+
}) {
|
|
10
|
+
const [container, setContainer] = useState(null);
|
|
11
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
12
|
+
const [viewportHeight, setViewportHeight] = useState(0);
|
|
13
|
+
const setContainerRef = useCallback((node) => {
|
|
14
|
+
setContainer(node);
|
|
15
|
+
}, []);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (container == null) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const onScroll = () => {
|
|
21
|
+
setScrollTop(container.scrollTop);
|
|
22
|
+
};
|
|
23
|
+
const measure = () => {
|
|
24
|
+
setViewportHeight(container.clientHeight);
|
|
25
|
+
};
|
|
26
|
+
measure();
|
|
27
|
+
onScroll();
|
|
28
|
+
container.addEventListener("scroll", onScroll, { passive: true });
|
|
29
|
+
let observer;
|
|
30
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
31
|
+
observer = new ResizeObserver(measure);
|
|
32
|
+
observer.observe(container);
|
|
33
|
+
}
|
|
34
|
+
return () => {
|
|
35
|
+
container.removeEventListener("scroll", onScroll);
|
|
36
|
+
observer?.disconnect();
|
|
37
|
+
};
|
|
38
|
+
}, [container]);
|
|
39
|
+
const safeItemCount = Math.max(0, Math.floor(itemCount));
|
|
40
|
+
const safeItemHeight = Math.max(1, itemHeight);
|
|
41
|
+
const safeOverscan = Math.max(0, Math.floor(overscan));
|
|
42
|
+
const totalHeight = safeItemCount * safeItemHeight;
|
|
43
|
+
const startIndex = safeItemCount === 0 ? 0 : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);
|
|
44
|
+
const endIndex = safeItemCount === 0 ? -1 : Math.min(
|
|
45
|
+
safeItemCount - 1,
|
|
46
|
+
Math.ceil((scrollTop + viewportHeight) / safeItemHeight) - 1 + safeOverscan
|
|
47
|
+
);
|
|
48
|
+
const virtualItems = useMemo(() => {
|
|
49
|
+
const items = [];
|
|
50
|
+
for (let index = startIndex; index <= endIndex; index += 1) {
|
|
51
|
+
items.push({
|
|
52
|
+
index,
|
|
53
|
+
start: index * safeItemHeight,
|
|
54
|
+
size: safeItemHeight
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return items;
|
|
58
|
+
}, [endIndex, safeItemHeight, startIndex]);
|
|
59
|
+
const scrollToIndex = useCallback(
|
|
60
|
+
(index) => {
|
|
61
|
+
if (container == null || safeItemCount === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);
|
|
65
|
+
container.scrollTop = clamped * safeItemHeight;
|
|
66
|
+
setScrollTop(container.scrollTop);
|
|
67
|
+
},
|
|
68
|
+
[container, safeItemCount, safeItemHeight]
|
|
69
|
+
);
|
|
70
|
+
return {
|
|
71
|
+
setContainerRef,
|
|
72
|
+
virtualItems,
|
|
73
|
+
totalHeight,
|
|
74
|
+
startIndex,
|
|
75
|
+
endIndex,
|
|
76
|
+
scrollToIndex
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { useVirtualList };
|
|
81
|
+
//# sourceMappingURL=useVirtualList.mjs.map
|
|
82
|
+
//# sourceMappingURL=useVirtualList.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useVirtualList/useVirtualList.ts"],"names":[],"mappings":";;;AAoDO,SAAS,cAAA,CAAe;AAAA,EAC7B,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA+C;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAA6B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,CAAC,CAAA;AAEtD,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,IAAA,KAA6B;AAChE,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,YAAA,CAAa,UAAU,SAAS,CAAA;AAAA,IAClC,CAAA;AACA,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,iBAAA,CAAkB,UAAU,YAAY,CAAA;AAAA,IAC1C,CAAA;AACA,IAAA,OAAA,EAAQ;AACR,IAAA,QAAA,EAAS;AACT,IAAA,SAAA,CAAU,iBAAiB,QAAA,EAAU,QAAA,EAAU,EAAE,OAAA,EAAS,MAAM,CAAA;AAChE,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AACzC,MAAA,QAAA,GAAW,IAAI,eAAe,OAAO,CAAA;AACrC,MAAA,QAAA,CAAS,QAAQ,SAAS,CAAA;AAAA,IAC5B;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AAChD,MAAA,QAAA,EAAU,UAAA,EAAW;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AACvD,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAU,CAAA;AAC7C,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAC,CAAA;AAErD,EAAA,MAAM,cAAc,aAAA,GAAgB,cAAA;AACpC,EAAA,MAAM,UAAA,GACJ,aAAA,KAAkB,CAAA,GACd,CAAA,GACA,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,cAAc,CAAA,GAAI,YAAY,CAAA;AACvE,EAAA,MAAM,QAAA,GACJ,aAAA,KAAkB,CAAA,GACd,EAAA,GACA,IAAA,CAAK,GAAA;AAAA,IACH,aAAA,GAAgB,CAAA;AAAA,IAChB,KAAK,IAAA,CAAA,CAAM,SAAA,GAAY,cAAA,IAAkB,cAAc,IACrD,CAAA,GACA;AAAA,GACJ;AAEN,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,MAAM,QAAuB,EAAC;AAC9B,IAAA,KAAA,IAAS,KAAA,GAAQ,UAAA,EAAY,KAAA,IAAS,QAAA,EAAU,SAAS,CAAA,EAAG;AAC1D,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,KAAA;AAAA,QACA,OAAO,KAAA,GAAQ,cAAA;AAAA,QACf,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,QAAA,EAAU,cAAA,EAAgB,UAAU,CAAC,CAAA;AAEzC,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAAkB;AACjB,MAAA,IAAI,SAAA,IAAa,IAAA,IAAQ,aAAA,KAAkB,CAAA,EAAG;AAC5C,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,CAAC,CAAA,EAAG,aAAA,GAAgB,CAAC,CAAA;AAC9D,MAAA,SAAA,CAAU,YAAY,OAAA,GAAU,cAAA;AAChC,MAAA,YAAA,CAAa,UAAU,SAAS,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,aAAA,EAAe,cAAc;AAAA,GAC3C;AAEA,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF","file":"useVirtualList.mjs","sourcesContent":["\"use client\";\n\nimport type { RefCallback } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\n\nexport type VirtualItem = {\n /** Index into your data array. */\n index: number;\n /** Offset from the top of the scroll content in pixels (use for `translateY` / `top`). */\n start: number;\n /** Row height in pixels. */\n size: number;\n};\n\nexport type UseVirtualListParams = {\n /** Total number of rows in the list. */\n itemCount: number;\n /** Fixed height of every row in pixels (must be > 0). */\n itemHeight: number;\n /** Extra rows rendered above and below the viewport (default `3`). */\n overscan?: number;\n};\n\nexport type UseVirtualListResult = {\n /** Callback ref for the scrollable container (needs `overflow-y: auto` and a bounded height). */\n setContainerRef: RefCallback<HTMLElement>;\n /** The rows to render, each with its absolute `start` offset. */\n virtualItems: VirtualItem[];\n /** Height of the full list content; set it on an inner spacer element. */\n totalHeight: number;\n /** First rendered index (after overscan). */\n startIndex: number;\n /** Last rendered index (after overscan), `-1` when empty. */\n endIndex: number;\n /** Scroll the container so the given row is at the top. */\n scrollToIndex: (index: number) => void;\n};\n\n/**\n * Headless fixed-height list virtualization: renders only the rows visible in the\n * scroll container (plus `overscan`), so lists of tens of thousands of rows stay cheap.\n *\n * Markup recipe: outer container gets `setContainerRef` + `overflow-y: auto` and a height;\n * inside it, one relative spacer div with `height: totalHeight`; each virtual item is\n * absolutely positioned at `translateY(item.start)` with `height: item.size`.\n *\n * Viewport size tracks `ResizeObserver` (when available) and scroll position tracks a\n * passive `scroll` listener. For variable-height rows, reach for a dedicated virtualizer.\n *\n * @param params - {@link UseVirtualListParams}\n * @returns {@link UseVirtualListResult}\n */\nexport function useVirtualList({\n itemCount,\n itemHeight,\n overscan = 3,\n}: UseVirtualListParams): UseVirtualListResult {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(0);\n\n const setContainerRef = useCallback((node: HTMLElement | null) => {\n setContainer(node);\n }, []);\n\n useEffect(() => {\n if (container == null) {\n return;\n }\n const onScroll = () => {\n setScrollTop(container.scrollTop);\n };\n const measure = () => {\n setViewportHeight(container.clientHeight);\n };\n measure();\n onScroll();\n container.addEventListener(\"scroll\", onScroll, { passive: true });\n let observer: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new ResizeObserver(measure);\n observer.observe(container);\n }\n return () => {\n container.removeEventListener(\"scroll\", onScroll);\n observer?.disconnect();\n };\n }, [container]);\n\n const safeItemCount = Math.max(0, Math.floor(itemCount));\n const safeItemHeight = Math.max(1, itemHeight);\n const safeOverscan = Math.max(0, Math.floor(overscan));\n\n const totalHeight = safeItemCount * safeItemHeight;\n const startIndex =\n safeItemCount === 0\n ? 0\n : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);\n const endIndex =\n safeItemCount === 0\n ? -1\n : Math.min(\n safeItemCount - 1,\n Math.ceil((scrollTop + viewportHeight) / safeItemHeight) -\n 1 +\n safeOverscan,\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n for (let index = startIndex; index <= endIndex; index += 1) {\n items.push({\n index,\n start: index * safeItemHeight,\n size: safeItemHeight,\n });\n }\n return items;\n }, [endIndex, safeItemHeight, startIndex]);\n\n const scrollToIndex = useCallback(\n (index: number) => {\n if (container == null || safeItemCount === 0) {\n return;\n }\n const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);\n container.scrollTop = clamped * safeItemHeight;\n setScrollTop(container.scrollTop);\n },\n [container, safeItemCount, safeItemHeight],\n );\n\n return {\n setContainerRef,\n virtualItems,\n totalHeight,\n startIndex,\n endIndex,\n scrollToIndex,\n };\n}\n"]}
|
package/dist/lib/facade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/lib/facade.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,MAAM,EAAE,CAAC;IACtB,mFAAmF;IACnF,MAAM,EAAE,MAAM,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACzC,wDAAwD;IACxD,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACnC,gFAAgF;IAChF,UAAU,EAAE,CACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACxB,aAAa,GAAG,SAAS,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,EAAE,CAAC;IAC1E,6EAA6E;IAC7E,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;CAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/lib/facade.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,MAAM,EAAE,CAAC;IACtB,mFAAmF;IACnF,MAAM,EAAE,MAAM,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACzC,wDAAwD;IACxD,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACnC,gFAAgF;IAChF,UAAU,EAAE,CACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KACxB,aAAa,GAAG,SAAS,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,EAAE,CAAC;IAC1E,6EAA6E;IAC7E,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;CAChC,CAAC;AAwtBF,eAAO,MAAM,YAAY;IACvB,sDAAsD;kBACxC,MAAM,EAAE;IAGtB,yEAAyE;uBACtD,MAAM,GAAG,eAAe,GAAG,SAAS;IAIvD,iDAAiD;sBAC/B,eAAe,EAAE;IAMnC,kEAAkE;qBACjD,MAAM,GAAG,WAAW,EAAE;CAGxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,OAAO,YAAY,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../../chunk-
|
|
4
|
+
var chunkPYNQZP4X_js = require('../../chunk-PYNQZP4X.js');
|
|
5
|
+
require('../../chunk-PP3L6M62.js');
|
|
6
6
|
var chunkZS5756ZC_js = require('../../chunk-ZS5756ZC.js');
|
|
7
7
|
require('../../chunk-PZ5AY32C.js');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var framerMotion = require('framer-motion');
|
|
10
10
|
|
|
11
11
|
function Accordion(props) {
|
|
12
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkPYNQZP4X_js.AccordionBase, { ...props });
|
|
13
13
|
}
|
|
14
14
|
Accordion.displayName = "Accordion";
|
|
15
15
|
|
|
@@ -26,8 +26,8 @@ function AccordionContentAnimated({
|
|
|
26
26
|
transitionVariant = "default",
|
|
27
27
|
ref
|
|
28
28
|
}) {
|
|
29
|
-
const itemValue =
|
|
30
|
-
const { isOpen, size } =
|
|
29
|
+
const itemValue = chunkPYNQZP4X_js.useAccordionItemValue("AccordionContent");
|
|
30
|
+
const { isOpen, size } = chunkPYNQZP4X_js.useAccordionContext("AccordionContent");
|
|
31
31
|
const open = isOpen(itemValue);
|
|
32
32
|
const panelId = `${itemValue}-panel`;
|
|
33
33
|
const transitionConfig = accordionContentTransitionPresets[transitionVariant];
|
|
@@ -39,7 +39,7 @@ function AccordionContentAnimated({
|
|
|
39
39
|
id: panelId,
|
|
40
40
|
role: "region",
|
|
41
41
|
"data-slot": "accordion-content",
|
|
42
|
-
className: chunkZS5756ZC_js.cn(
|
|
42
|
+
className: chunkZS5756ZC_js.cn(chunkPYNQZP4X_js.accordionContentVariants({ size }), className),
|
|
43
43
|
initial: motionless ? false : { opacity: 0 },
|
|
44
44
|
animate: motionless ? void 0 : { opacity: 1 },
|
|
45
45
|
exit: motionless ? void 0 : { opacity: 0 },
|
|
@@ -53,11 +53,11 @@ AccordionContentAnimated.displayName = "AccordionContentAnimated";
|
|
|
53
53
|
|
|
54
54
|
Object.defineProperty(exports, "AccordionItem", {
|
|
55
55
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkPYNQZP4X_js.AccordionItem; }
|
|
57
57
|
});
|
|
58
58
|
Object.defineProperty(exports, "AccordionTrigger", {
|
|
59
59
|
enumerable: true,
|
|
60
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkPYNQZP4X_js.AccordionTrigger; }
|
|
61
61
|
});
|
|
62
62
|
exports.Accordion = Accordion;
|
|
63
63
|
exports.AccordionContentAnimated = AccordionContentAnimated;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { AccordionBase, useAccordionItemValue, useAccordionContext, accordionContentVariants } from '../../chunk-
|
|
3
|
-
export { AccordionItem, AccordionTrigger } from '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
2
|
+
import { AccordionBase, useAccordionItemValue, useAccordionContext, accordionContentVariants } from '../../chunk-SUTFW53Y.mjs';
|
|
3
|
+
export { AccordionItem, AccordionTrigger } from '../../chunk-SUTFW53Y.mjs';
|
|
4
|
+
import '../../chunk-HFQJRAG7.mjs';
|
|
5
5
|
import { cn } from '../../chunk-4D54YOL6.mjs';
|
|
6
6
|
import '../../chunk-J5LGTIGS.mjs';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
package/dist/ui/accordion.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../chunk-
|
|
4
|
+
var chunkPYNQZP4X_js = require('../chunk-PYNQZP4X.js');
|
|
5
|
+
require('../chunk-PP3L6M62.js');
|
|
6
6
|
require('../chunk-ZS5756ZC.js');
|
|
7
7
|
require('../chunk-PZ5AY32C.js');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
|
|
10
10
|
function Accordion(props) {
|
|
11
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkPYNQZP4X_js.AccordionBase, { ...props });
|
|
12
12
|
}
|
|
13
13
|
Accordion.displayName = "Accordion";
|
|
14
14
|
|
|
15
15
|
Object.defineProperty(exports, "AccordionContent", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkPYNQZP4X_js.AccordionContent; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "AccordionItem", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkPYNQZP4X_js.AccordionItem; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "AccordionTrigger", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkPYNQZP4X_js.AccordionTrigger; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "accordionContentVariants", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkPYNQZP4X_js.accordionContentVariants; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "accordionItemVariants", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkPYNQZP4X_js.accordionItemVariants; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "accordionTriggerVariants", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkPYNQZP4X_js.accordionTriggerVariants; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "accordionVariants", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunkPYNQZP4X_js.accordionVariants; }
|
|
42
42
|
});
|
|
43
43
|
exports.Accordion = Accordion;
|
|
44
44
|
//# sourceMappingURL=accordion.js.map
|
package/dist/ui/accordion.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { AccordionBase } from '../chunk-
|
|
3
|
-
export { AccordionContent, AccordionItem, AccordionTrigger, accordionContentVariants, accordionItemVariants, accordionTriggerVariants, accordionVariants } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
2
|
+
import { AccordionBase } from '../chunk-SUTFW53Y.mjs';
|
|
3
|
+
export { AccordionContent, AccordionItem, AccordionTrigger, accordionContentVariants, accordionItemVariants, accordionTriggerVariants, accordionVariants } from '../chunk-SUTFW53Y.mjs';
|
|
4
|
+
import '../chunk-HFQJRAG7.mjs';
|
|
5
5
|
import '../chunk-4D54YOL6.mjs';
|
|
6
6
|
import '../chunk-J5LGTIGS.mjs';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|