@alkimi.org/ui-kit 0.9.9 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +589 -589
- package/README.md +589 -589
- package/README.npm.md +589 -589
- package/dist/{chunk-INXG2ITG.js → chunk-372VUZFE.js} +3 -3
- package/dist/chunk-372VUZFE.js.map +1 -0
- package/dist/{chunk-XNLDCAFS.js → chunk-3BVMHDYA.js} +1 -1
- package/dist/chunk-3BVMHDYA.js.map +1 -0
- package/dist/{chunk-IFNCRMNZ.js → chunk-3PEPOFYU.js} +1 -1
- package/dist/chunk-3PEPOFYU.js.map +1 -0
- package/dist/{chunk-7ENKXOF3.js → chunk-3TLCOZ5R.js} +2 -2
- package/dist/chunk-3TLCOZ5R.js.map +1 -0
- package/dist/{chunk-KYBTGVFM.mjs → chunk-4LR7SOCY.mjs} +1 -1
- package/dist/chunk-4LR7SOCY.mjs.map +1 -0
- package/dist/{chunk-HV2SGTFQ.mjs → chunk-4LUOGI24.mjs} +2 -2
- package/dist/chunk-4LUOGI24.mjs.map +1 -0
- package/dist/chunk-4PTRLHCB.mjs +3 -0
- package/dist/chunk-4PTRLHCB.mjs.map +1 -0
- package/dist/chunk-574USYNO.mjs +3 -0
- package/dist/chunk-574USYNO.mjs.map +1 -0
- package/dist/chunk-5L5DM2X5.js +3 -0
- package/dist/chunk-5L5DM2X5.js.map +1 -0
- package/dist/{chunk-YK3UJT7O.mjs → chunk-5TVDBV74.mjs} +2 -2
- package/dist/chunk-5TVDBV74.mjs.map +1 -0
- package/dist/{chunk-TLGEA7LM.js → chunk-5X26XR44.js} +2 -2
- package/dist/chunk-5X26XR44.js.map +1 -0
- package/dist/{chunk-EA66F2ZN.mjs → chunk-7FUNOEYE.mjs} +2 -2
- package/dist/chunk-7FUNOEYE.mjs.map +1 -0
- package/dist/{chunk-4F4J7RIS.js → chunk-7J2ETVGK.js} +2 -2
- package/dist/chunk-7J2ETVGK.js.map +1 -0
- package/dist/{chunk-DRPEVJT7.mjs → chunk-7ONK6HHN.mjs} +1 -1
- package/dist/chunk-7ONK6HHN.mjs.map +1 -0
- package/dist/{chunk-NFHHEYXW.js → chunk-7SOZ6MOV.js} +2 -2
- package/dist/chunk-7SOZ6MOV.js.map +1 -0
- package/dist/chunk-7Y3KH5OM.mjs +3 -0
- package/dist/chunk-7Y3KH5OM.mjs.map +1 -0
- package/dist/{chunk-7J43VVOI.mjs → chunk-AEZ5XKKG.mjs} +2 -2
- package/dist/chunk-AEZ5XKKG.mjs.map +1 -0
- package/dist/{chunk-KBEHHIN6.mjs → chunk-BLHKJHNV.mjs} +2 -2
- package/dist/chunk-BLHKJHNV.mjs.map +1 -0
- package/dist/{chunk-DEGPIR53.js → chunk-BV7RXRSL.js} +2 -2
- package/dist/chunk-BV7RXRSL.js.map +1 -0
- package/dist/{chunk-DVS5O7CS.mjs → chunk-C7GTPYMH.mjs} +2 -2
- package/dist/chunk-C7GTPYMH.mjs.map +1 -0
- package/dist/{chunk-EBSYGLCA.mjs → chunk-CMV76O4U.mjs} +2 -2
- package/dist/chunk-CMV76O4U.mjs.map +1 -0
- package/dist/{chunk-W4PJBJNX.mjs → chunk-CNRZOMR4.mjs} +2 -2
- package/dist/chunk-CNRZOMR4.mjs.map +1 -0
- package/dist/{chunk-5RIDFCU4.js → chunk-CT2CRYC2.js} +2 -2
- package/dist/chunk-CT2CRYC2.js.map +1 -0
- package/dist/{chunk-TFNJNZMW.mjs → chunk-DATWXRPT.mjs} +2 -2
- package/dist/chunk-DATWXRPT.mjs.map +1 -0
- package/dist/{chunk-CVGE3ROD.js → chunk-DHHZMQ72.js} +2 -2
- package/dist/chunk-DHHZMQ72.js.map +1 -0
- package/dist/chunk-DIKQRVZO.js +3 -0
- package/dist/chunk-DIKQRVZO.js.map +1 -0
- package/dist/{chunk-36L2E4K7.mjs → chunk-DKMCJGI4.mjs} +2 -2
- package/dist/chunk-DKMCJGI4.mjs.map +1 -0
- package/dist/chunk-EIM5R7AJ.js +3 -0
- package/dist/chunk-EIM5R7AJ.js.map +1 -0
- package/dist/{chunk-KCEGGK36.js → chunk-EJTY2ABY.js} +2 -2
- package/dist/chunk-EJTY2ABY.js.map +1 -0
- package/dist/{chunk-6N5E7FKO.js → chunk-EWRKHBIV.js} +2 -2
- package/dist/chunk-EWRKHBIV.js.map +1 -0
- package/dist/{chunk-VBARF35N.js → chunk-FUYXCJOQ.js} +1 -1
- package/dist/chunk-FUYXCJOQ.js.map +1 -0
- package/dist/{chunk-6HUPRCXQ.mjs → chunk-FZ3NXOFK.mjs} +2 -2
- package/dist/chunk-FZ3NXOFK.mjs.map +1 -0
- package/dist/{chunk-7HVZPUTO.js → chunk-G76GSW2A.js} +2 -2
- package/dist/chunk-G76GSW2A.js.map +1 -0
- package/dist/{chunk-4X3MFRSQ.js → chunk-GRXC46JC.js} +2 -2
- package/dist/chunk-GRXC46JC.js.map +1 -0
- package/dist/{chunk-OCAU343S.js → chunk-I5INE4KG.js} +2 -2
- package/dist/chunk-I5INE4KG.js.map +1 -0
- package/dist/chunk-IKJ4QRNB.mjs +3 -0
- package/dist/chunk-IKJ4QRNB.mjs.map +1 -0
- package/dist/{chunk-UAJUT7B7.js → chunk-K4GMCVHO.js} +2 -2
- package/dist/chunk-K4GMCVHO.js.map +1 -0
- package/dist/{chunk-VUHWNO54.mjs → chunk-KLU33CJI.mjs} +2 -2
- package/dist/chunk-KLU33CJI.mjs.map +1 -0
- package/dist/{chunk-XQS62AJH.mjs → chunk-L36V45FD.mjs} +2 -2
- package/dist/chunk-L36V45FD.mjs.map +1 -0
- package/dist/chunk-LQMOWEA7.js +3 -0
- package/dist/chunk-LQMOWEA7.js.map +1 -0
- package/dist/{chunk-2R3FRGV4.mjs → chunk-MQMO7DMT.mjs} +2 -2
- package/dist/chunk-MQMO7DMT.mjs.map +1 -0
- package/dist/{chunk-VSRWPJJB.mjs → chunk-NEOUFWZN.mjs} +2 -2
- package/dist/chunk-NEOUFWZN.mjs.map +1 -0
- package/dist/chunk-NKELJSLY.mjs +3 -0
- package/dist/chunk-NKELJSLY.mjs.map +1 -0
- package/dist/chunk-NKLBPY3T.mjs +3 -0
- package/dist/chunk-NKLBPY3T.mjs.map +1 -0
- package/dist/chunk-PD43W3YN.mjs +3 -0
- package/dist/chunk-PD43W3YN.mjs.map +1 -0
- package/dist/{chunk-57XZUJL4.mjs → chunk-QC5MA4WL.mjs} +2 -2
- package/dist/chunk-QC5MA4WL.mjs.map +1 -0
- package/dist/{chunk-N3ZLPC5C.mjs → chunk-QMJVRGPB.mjs} +2 -2
- package/dist/chunk-QMJVRGPB.mjs.map +1 -0
- package/dist/{chunk-PBOK6TUC.mjs → chunk-QVMQ55JW.mjs} +2 -2
- package/dist/chunk-QVMQ55JW.mjs.map +1 -0
- package/dist/{chunk-NIHULISF.js → chunk-RJMIOBXZ.js} +2 -2
- package/dist/chunk-RJMIOBXZ.js.map +1 -0
- package/dist/{chunk-4PODZIEU.js → chunk-RKRTEMMZ.js} +2 -2
- package/dist/chunk-RKRTEMMZ.js.map +1 -0
- package/dist/{chunk-SN3YJA4C.js → chunk-RRAIGAHU.js} +2 -2
- package/dist/chunk-RRAIGAHU.js.map +1 -0
- package/dist/{chunk-AJM7GGVC.mjs → chunk-S5TKCF6T.mjs} +1 -1
- package/dist/chunk-S5TKCF6T.mjs.map +1 -0
- package/dist/{chunk-BUS3E5OY.js → chunk-TDMRUCR6.js} +2 -2
- package/dist/chunk-TDMRUCR6.js.map +1 -0
- package/dist/{chunk-LNIGQUON.mjs → chunk-UAUSYTY4.mjs} +2 -2
- package/dist/chunk-UAUSYTY4.mjs.map +1 -0
- package/dist/chunk-UJZP6L4S.js +3 -0
- package/dist/chunk-UJZP6L4S.js.map +1 -0
- package/dist/{chunk-5ESMRNR3.js → chunk-ULIOO55I.js} +2 -2
- package/dist/chunk-ULIOO55I.js.map +1 -0
- package/dist/{chunk-S7CZVGW7.js → chunk-UNR6ATUH.js} +2 -2
- package/dist/chunk-UNR6ATUH.js.map +1 -0
- package/dist/chunk-USPGZYMV.js +3 -0
- package/dist/chunk-USPGZYMV.js.map +1 -0
- package/dist/{chunk-7Z2JFWQY.js → chunk-VBPIXXIA.js} +2 -2
- package/dist/chunk-VBPIXXIA.js.map +1 -0
- package/dist/{chunk-CA75YECJ.mjs → chunk-WAX33IZF.mjs} +2 -2
- package/dist/chunk-WAX33IZF.mjs.map +1 -0
- package/dist/{chunk-AHQNHOS2.js → chunk-WFD523CV.js} +1 -1
- package/dist/chunk-WFD523CV.js.map +1 -0
- package/dist/{chunk-NMU4NNZ2.mjs → chunk-WY4HCUAP.mjs} +2 -2
- package/dist/chunk-WY4HCUAP.mjs.map +1 -0
- package/dist/chunk-WYRD4UAK.js +3 -0
- package/dist/chunk-WYRD4UAK.js.map +1 -0
- package/dist/chunk-WZ5F5VT3.mjs +3 -0
- package/dist/chunk-WZ5F5VT3.mjs.map +1 -0
- package/dist/{chunk-QP7CDVWG.js → chunk-XQILGD5B.js} +2 -2
- package/dist/chunk-XQILGD5B.js.map +1 -0
- package/dist/chunk-XSJKREFJ.mjs +3 -0
- package/dist/chunk-XSJKREFJ.mjs.map +1 -0
- package/dist/chunk-XYO4VLMF.js.map +1 -1
- package/dist/{chunk-O2FPBOOV.mjs → chunk-YBV4CPVD.mjs} +2 -2
- package/dist/chunk-YBV4CPVD.mjs.map +1 -0
- package/dist/chunk-YKXP3INY.js +3 -0
- package/dist/chunk-YKXP3INY.js.map +1 -0
- package/dist/{chunk-Y5LKHHUX.js → chunk-Z5V4P3EC.js} +2 -2
- package/dist/chunk-Z5V4P3EC.js.map +1 -0
- package/dist/{chunk-NMI6DEUG.mjs → chunk-Z6RAFZ3C.mjs} +1 -1
- package/dist/chunk-Z6RAFZ3C.mjs.map +1 -0
- package/dist/components/GeometricFluidGrid.js +1 -1
- package/dist/components/GeometricFluidGrid.js.map +1 -1
- package/dist/components/GeometricFluidGrid.mjs +1 -1
- package/dist/components/GlitchLink.js +1 -1
- package/dist/components/GlitchLink.js.map +1 -1
- package/dist/components/GlitchLink.mjs +1 -1
- package/dist/components/PixelLoad.js +1 -1
- package/dist/components/PixelLoad.js.map +1 -1
- package/dist/components/PixelLoad.mjs +1 -1
- package/dist/components/TextDecoder.js +1 -1
- package/dist/components/TextDecoder.js.map +1 -1
- package/dist/components/TextDecoder.mjs +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/accordion.mjs +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/avatar.mjs +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb.mjs +1 -1
- package/dist/components/breadcrumb.mjs.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/button.mjs +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/calendar.mjs +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/card.mjs +1 -1
- package/dist/components/card.mjs.map +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/checkbox.mjs +1 -1
- package/dist/components/combobox.d.mts +4 -1
- package/dist/components/combobox.d.ts +4 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/combobox.mjs +1 -1
- package/dist/components/command.js +1 -1
- package/dist/components/command.js.map +1 -1
- package/dist/components/command.mjs +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-picker.mjs +1 -1
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker.mjs +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dialog.mjs +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/drawer.mjs +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/dropdown-menu.mjs +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/field.mjs +1 -1
- package/dist/components/file-upload.js +1 -1
- package/dist/components/file-upload.js.map +1 -1
- package/dist/components/file-upload.mjs +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/input.mjs +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/label.js.map +1 -1
- package/dist/components/label.mjs +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/popover.mjs +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.js.map +1 -1
- package/dist/components/progress.mjs +1 -1
- package/dist/components/progress.mjs.map +1 -1
- package/dist/components/radio-group.js +1 -1
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/radio-group.mjs +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/scroll-area.mjs +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/separator.js.map +1 -1
- package/dist/components/separator.mjs +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sheet.mjs +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/sidebar.mjs +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/skeleton.mjs +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/slider.mjs +1 -1
- package/dist/components/slider.mjs.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/switch.js.map +1 -1
- package/dist/components/switch.mjs +1 -1
- package/dist/components/switch.mjs.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/table.mjs +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tabs.mjs +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/textarea.mjs +1 -1
- package/dist/components/toast.js +1 -1
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toast.mjs +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/tooltip.mjs +1 -1
- package/dist/components/tree-select.js +1 -1
- package/dist/components/tree-select.js.map +1 -1
- package/dist/components/tree-select.mjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +109 -109
- package/dist/chunk-2R3FRGV4.mjs.map +0 -1
- package/dist/chunk-36L2E4K7.mjs.map +0 -1
- package/dist/chunk-4F4J7RIS.js.map +0 -1
- package/dist/chunk-4PODZIEU.js.map +0 -1
- package/dist/chunk-4TH3WPF3.js +0 -3
- package/dist/chunk-4TH3WPF3.js.map +0 -1
- package/dist/chunk-4X3MFRSQ.js.map +0 -1
- package/dist/chunk-57XZUJL4.mjs.map +0 -1
- package/dist/chunk-5ESMRNR3.js.map +0 -1
- package/dist/chunk-5RIDFCU4.js.map +0 -1
- package/dist/chunk-6HUPRCXQ.mjs.map +0 -1
- package/dist/chunk-6N5E7FKO.js.map +0 -1
- package/dist/chunk-7ENKXOF3.js.map +0 -1
- package/dist/chunk-7HVZPUTO.js.map +0 -1
- package/dist/chunk-7J43VVOI.mjs.map +0 -1
- package/dist/chunk-7Z2JFWQY.js.map +0 -1
- package/dist/chunk-AHQNHOS2.js.map +0 -1
- package/dist/chunk-AJM7GGVC.mjs.map +0 -1
- package/dist/chunk-BA7YSYLL.js +0 -3
- package/dist/chunk-BA7YSYLL.js.map +0 -1
- package/dist/chunk-BUS3E5OY.js.map +0 -1
- package/dist/chunk-CA75YECJ.mjs.map +0 -1
- package/dist/chunk-CCNH4HFX.js +0 -3
- package/dist/chunk-CCNH4HFX.js.map +0 -1
- package/dist/chunk-CPD4PX64.js +0 -3
- package/dist/chunk-CPD4PX64.js.map +0 -1
- package/dist/chunk-CVGE3ROD.js.map +0 -1
- package/dist/chunk-DEGPIR53.js.map +0 -1
- package/dist/chunk-DRPEVJT7.mjs.map +0 -1
- package/dist/chunk-DVS5O7CS.mjs.map +0 -1
- package/dist/chunk-EA66F2ZN.mjs.map +0 -1
- package/dist/chunk-EBSYGLCA.mjs.map +0 -1
- package/dist/chunk-HF6H7CTA.js +0 -3
- package/dist/chunk-HF6H7CTA.js.map +0 -1
- package/dist/chunk-HV2SGTFQ.mjs.map +0 -1
- package/dist/chunk-IFNCRMNZ.js.map +0 -1
- package/dist/chunk-INXG2ITG.js.map +0 -1
- package/dist/chunk-IZE2MHHY.mjs +0 -3
- package/dist/chunk-IZE2MHHY.mjs.map +0 -1
- package/dist/chunk-KBEHHIN6.mjs.map +0 -1
- package/dist/chunk-KCEGGK36.js.map +0 -1
- package/dist/chunk-KYBTGVFM.mjs.map +0 -1
- package/dist/chunk-L2WR54R7.mjs +0 -3
- package/dist/chunk-L2WR54R7.mjs.map +0 -1
- package/dist/chunk-LNIGQUON.mjs.map +0 -1
- package/dist/chunk-N3ZLPC5C.mjs.map +0 -1
- package/dist/chunk-N43UVAL7.mjs +0 -3
- package/dist/chunk-N43UVAL7.mjs.map +0 -1
- package/dist/chunk-NFHHEYXW.js.map +0 -1
- package/dist/chunk-NIHULISF.js.map +0 -1
- package/dist/chunk-NMI6DEUG.mjs.map +0 -1
- package/dist/chunk-NMU4NNZ2.mjs.map +0 -1
- package/dist/chunk-O2FPBOOV.mjs.map +0 -1
- package/dist/chunk-OCAU343S.js.map +0 -1
- package/dist/chunk-PBOK6TUC.mjs.map +0 -1
- package/dist/chunk-QP4A5SPE.mjs +0 -3
- package/dist/chunk-QP4A5SPE.mjs.map +0 -1
- package/dist/chunk-QP7CDVWG.js.map +0 -1
- package/dist/chunk-QUDNJOXZ.mjs +0 -3
- package/dist/chunk-QUDNJOXZ.mjs.map +0 -1
- package/dist/chunk-S7CZVGW7.js.map +0 -1
- package/dist/chunk-SN3YJA4C.js.map +0 -1
- package/dist/chunk-T63HKL4M.js +0 -3
- package/dist/chunk-T63HKL4M.js.map +0 -1
- package/dist/chunk-TFNJNZMW.mjs.map +0 -1
- package/dist/chunk-TLGEA7LM.js.map +0 -1
- package/dist/chunk-TXOT3G2Z.mjs +0 -3
- package/dist/chunk-TXOT3G2Z.mjs.map +0 -1
- package/dist/chunk-UAJUT7B7.js.map +0 -1
- package/dist/chunk-VBARF35N.js.map +0 -1
- package/dist/chunk-VSRWPJJB.mjs.map +0 -1
- package/dist/chunk-VUHWNO54.mjs.map +0 -1
- package/dist/chunk-W4PJBJNX.mjs.map +0 -1
- package/dist/chunk-WMHK5YWO.js +0 -3
- package/dist/chunk-WMHK5YWO.js.map +0 -1
- package/dist/chunk-X3QDPETP.mjs +0 -3
- package/dist/chunk-X3QDPETP.mjs.map +0 -1
- package/dist/chunk-XNLDCAFS.js.map +0 -1
- package/dist/chunk-XQS62AJH.mjs.map +0 -1
- package/dist/chunk-Y5LKHHUX.js.map +0 -1
- package/dist/chunk-YHYWSBWL.mjs +0 -3
- package/dist/chunk-YHYWSBWL.mjs.map +0 -1
- package/dist/chunk-YK3UJT7O.mjs.map +0 -1
- package/dist/chunk-ZJBCOTJL.mjs +0 -3
- package/dist/chunk-ZJBCOTJL.mjs.map +0 -1
- package/dist/chunk-ZUBIKQDO.js +0 -3
- package/dist/chunk-ZUBIKQDO.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-UNR6ATUH.js","../src/components/sheet.tsx"],"names":["Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","className","props","ref","jsx","cn","sheetVariants","cva","SheetContent","side","children","jsxs","X","SheetHeader","SheetFooter","SheetTitle","SheetDescription"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-UNR6ATUH.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-sheet p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-200 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-primary-accent\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
var _chunkXQILGD5Bjs = require('./chunk-XQILGD5B.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var n = _interopRequireWildcard(_react);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var H=n.forwardRef(({accept:o,maxSize:s,multiple:f=!1,onFilesChange:m,error:h,disabled:l,className:D,description:g},y)=>{let[F,d]=n.useState(!1),[i,v]=n.useState([]),c=n.useRef(null),R=e=>{e.preventDefault(),e.stopPropagation(),l||d(!0)},C=e=>{e.preventDefault(),e.stopPropagation(),d(!1)},E=e=>{e.preventDefault(),e.stopPropagation()},U=e=>!(s&&e.size>s),x=e=>{if(!e)return;let t=Array.from(e).filter(U),u=f?[...i,...t]:t.slice(0,1);v(u),_optionalChain([m, 'optionalCall', _ => _(u)])},k=e=>{e.preventDefault(),e.stopPropagation(),d(!1),!l&&x(e.dataTransfer.files)},w=()=>{l||_optionalChain([c, 'access', _2 => _2.current, 'optionalAccess', _3 => _3.click, 'call', _4 => _4()])},L=e=>{x(e.target.files),c.current&&(c.current.value="")},M=e=>{let t=i.filter((u,$)=>$!==e);v(t),_optionalChain([m, 'optionalCall', _5 => _5(t)])},b=e=>e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${Math.round(e/(1024*1024))} MB`,P=e=>e.split(",").map(t=>t.trim()).map(t=>t.includes("/*")?t.replace("/*","").toUpperCase():t.startsWith(".")?t.slice(1).toUpperCase():t.includes("/")?t.split("/")[1].toUpperCase():t.toUpperCase());return _jsxruntime.jsxs.call(void 0, "div",{ref:y,className:_chunkFUYXCJOQjs.a.call(void 0, "w-full",D),children:[_jsxruntime.jsxs.call(void 0, "div",{onClick:w,onDragEnter:R,onDragLeave:C,onDragOver:E,onDrop:k,className:_chunkFUYXCJOQjs.a.call(void 0, "flex my-2 flex-col items-center justify-center gap-3 rounded-lg border border-border bg-background px-6 py-4 text-center transition-all cursor-pointer active:opacity-50",F&&"bg-secondary",h?"border-destructive-foreground":"border-border hover:bg-secondary",l&&"cursor-not-allowed opacity-50"),children:[_jsxruntime.jsx.call(void 0, "span",{className:_chunkXQILGD5Bjs.a.call(void 0, {variant:"outline",size:"icon"}),children:_jsxruntime.jsx.call(void 0, _lucidereact.Upload,{size:16,className:_chunkFUYXCJOQjs.a.call(void 0, "text-primary-accent")})}),_jsxruntime.jsxs.call(void 0, "div",{className:"flex flex-col gap-1",children:[_jsxruntime.jsxs.call(void 0, "p",{className:"text-sm text-secondary-text",children:[_jsxruntime.jsx.call(void 0, "span",{className:"text-primary-accent",children:"Click to upload"})," or drag and drop"]}),(o||s)&&_jsxruntime.jsxs.call(void 0, "p",{className:"text-xs text-secondary-text",children:[o&&P(o).join(", "),o&&s&&" ",s&&`up to ${b(s)}`]}),g&&_jsxruntime.jsx.call(void 0, "p",{className:"text-xs text-secondary-text",children:g})]})]}),_jsxruntime.jsx.call(void 0, "input",{ref:c,type:"file",accept:o,multiple:f,onChange:L,disabled:l,className:"hidden"}),i.length>0&&_jsxruntime.jsx.call(void 0, "div",{className:"mt-3 space-y-2",children:i.map((e,t)=>_jsxruntime.jsxs.call(void 0, "div",{className:"flex items-center justify-between rounded-2xl border border-border bg-background px-4 py-2",children:[_jsxruntime.jsxs.call(void 0, "div",{className:"flex items-center gap-3",children:[_jsxruntime.jsx.call(void 0, _lucidereact.File,{className:"h-5 w-5 text-secondary-text"}),_jsxruntime.jsxs.call(void 0, "div",{className:"flex flex-col",children:[_jsxruntime.jsx.call(void 0, "span",{className:"text-sm text-primary-accent truncate max-w-[200px]",children:e.name}),_jsxruntime.jsx.call(void 0, "span",{className:"text-xs text-secondary-text",children:b(e.size)})]})]}),_jsxruntime.jsx.call(void 0, "button",{type:"button",onClick:()=>M(t),className:"rounded-full p-1 hover:bg-secondary active:opacity-50 transition-colors",children:_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-4 w-4 text-secondary-text"})})]},`${e.name}-${t}`))})]})});H.displayName="FileUpload";exports.a = H;
|
|
3
|
+
//# sourceMappingURL=chunk-USPGZYMV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-USPGZYMV.js","../src/components/file-upload.tsx"],"names":["FileUpload","accept","maxSize","multiple","onFilesChange","error","disabled","className","description","ref","isDragging","setIsDragging","files","setFiles","inputRef","handleDragEnter","handleDragLeave","handleDragOver","validateFile","file","handleFiles","newFiles","validFiles","updatedFiles","handleDrop","handleClick","handleInputChange","removeFile","index","_","i","formatFileSize","bytes"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-USPGZYMV.js","sourcesContent":[null,"import * as React from \"react\"\nimport { Upload, X, File } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"./button\"\n\nexport interface FileUploadProps {\n /** Accepted file formats (e.g., \".png,.jpg,.pdf\" or \"image/*\") */\n accept?: string\n /** Maximum file size in bytes */\n maxSize?: number\n /** Allow multiple files */\n multiple?: boolean\n /** Callback when files are selected */\n onFilesChange?: (files: File[]) => void\n /** Error state */\n error?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Custom class name */\n className?: string\n /** Placeholder text */\n placeholder?: string\n /** Description text (e.g., \"PNG, JPG up to 10MB\") */\n description?: string\n}\n\nconst FileUpload = React.forwardRef<HTMLDivElement, FileUploadProps>(\n (\n {\n accept,\n maxSize,\n multiple = false,\n onFilesChange,\n error,\n disabled,\n className,\n description,\n },\n ref\n ) => {\n const [isDragging, setIsDragging] = React.useState(false)\n const [files, setFiles] = React.useState<File[]>([])\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) setIsDragging(true)\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const validateFile = (file: File): boolean => {\n if (maxSize && file.size > maxSize) {\n return false\n }\n return true\n }\n\n const handleFiles = (newFiles: FileList | null) => {\n if (!newFiles) return\n\n const validFiles = Array.from(newFiles).filter(validateFile)\n const updatedFiles = multiple\n ? [...files, ...validFiles]\n : validFiles.slice(0, 1)\n\n setFiles(updatedFiles)\n onFilesChange?.(updatedFiles)\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragging(false)\n\n if (disabled) return\n handleFiles(e.dataTransfer.files)\n }\n\n const handleClick = () => {\n if (!disabled) inputRef.current?.click()\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFiles(e.target.files)\n if (inputRef.current) inputRef.current.value = \"\"\n }\n\n const removeFile = (index: number) => {\n const updatedFiles = files.filter((_, i) => i !== index)\n setFiles(updatedFiles)\n onFilesChange?.(updatedFiles)\n }\n\n const formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`\n return `${Math.round(bytes / (1024 * 1024))} MB`\n }\n\n const formatAcceptedTypes = (acceptStr: string): string[] => {\n return acceptStr\n .split(\",\")\n .map((type) => type.trim())\n .map((type) => {\n // Handle wildcards like \"image/*\"\n if (type.includes(\"/*\")) {\n return type.replace(\"/*\", \"\").toUpperCase()\n }\n // Handle extensions like \".png\"\n if (type.startsWith(\".\")) {\n return type.slice(1).toUpperCase()\n }\n // Handle MIME types like \"image/png\"\n if (type.includes(\"/\")) {\n return type.split(\"/\")[1].toUpperCase()\n }\n return type.toUpperCase()\n })\n }\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)}>\n <div\n onClick={handleClick}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n className={cn(\n \"flex my-2 flex-col items-center justify-center gap-3 rounded-lg border border-border bg-background px-6 py-4 text-center transition-all cursor-pointer active:opacity-50\",\n isDragging && \"bg-secondary\",\n error\n ? \"border-destructive-foreground\"\n : \"border-border hover:bg-secondary\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n >\n <span\n className={buttonVariants({\n variant: \"outline\",\n size: \"icon\",\n })}\n >\n <Upload size={16} className={cn(\"text-primary-accent\")} />\n </span>\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-sm text-secondary-text\">\n <span className=\"text-primary-accent\">Click to upload</span> or\n drag and drop\n </p>\n {(accept || maxSize) && (\n <p className=\"text-xs text-secondary-text\">\n {accept && formatAcceptedTypes(accept).join(\", \")}\n {accept && maxSize && \" \"}\n {maxSize && `up to ${formatFileSize(maxSize)}`}\n </p>\n )}\n {description && (\n <p className=\"text-xs text-secondary-text\">{description}</p>\n )}\n </div>\n </div>\n\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n disabled={disabled}\n className=\"hidden\"\n />\n\n {files.length > 0 && (\n <div className=\"mt-3 space-y-2\">\n {files.map((file, index) => (\n <div\n key={`${file.name}-${index}`}\n className=\"flex items-center justify-between rounded-2xl border border-border bg-background px-4 py-2\"\n >\n <div className=\"flex items-center gap-3\">\n <File className=\"h-5 w-5 text-secondary-text\" />\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-primary-accent truncate max-w-[200px]\">\n {file.name}\n </span>\n <span className=\"text-xs text-secondary-text\">\n {formatFileSize(file.size)}\n </span>\n </div>\n </div>\n <button\n type=\"button\"\n onClick={() => removeFile(index)}\n className=\"rounded-full p-1 hover:bg-secondary active:opacity-50 transition-colors\"\n >\n <X className=\"h-4 w-4 text-secondary-text\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n )\n }\n)\nFileUpload.displayName = \"FileUpload\"\n\nexport { FileUpload }\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
-
var
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _reacttabs = require('@radix-ui/react-tabs'); var e = _interopRequireWildcard(_reacttabs);var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var C=e.Root,y= exports.b =_react.forwardRef.call(void 0, ({className:r,...s},t)=>{let[l,d]=_react.useState.call(void 0, {left:0,width:0}),n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{let i=()=>{if(!n.current)return;let f=n.current.querySelector('[data-state="active"]');if(f){let v=n.current.getBoundingClientRect(),m=f.getBoundingClientRect();d({left:m.left-v.left,width:m.width})}};i();let u=new MutationObserver(i);return n.current&&u.observe(n.current,{attributes:!0,attributeFilter:["data-state"],subtree:!0}),window.addEventListener("resize",i),()=>{u.disconnect(),window.removeEventListener("resize",i)}},[]);let b=_react.useCallback.call(void 0, i=>{n.current=i,typeof t=="function"?t(i):t&&(t.current=i)},[t]);return _jsxruntime.jsxs.call(void 0, e.List,{ref:b,className:_chunkFUYXCJOQjs.a.call(void 0, "relative inline-flex items-center justify-center rounded-4xl bg-muted p-1 gap-1 text-muted-foreground",r),...s,children:[_jsxruntime.jsx.call(void 0, "span",{className:"absolute h-[calc(100%-0.5rem)] rounded-4xl bg-background shadow-sm transition-all duration-200 ease-out",style:{left:`${l.left}px`,width:`${l.width}px`}}),s.children]})});y.displayName=e.List.displayName;var P=_react.forwardRef.call(void 0, ({className:r,...s},t)=>_jsxruntime.jsx.call(void 0, e.Trigger,{ref:t,className:_chunkFUYXCJOQjs.a.call(void 0, "cursor-pointer relative inline-flex items-center justify-center whitespace-nowrap data-[state=inactive]:not-disabled:hover:bg-secondary rounded-4xl px-3 py-1 text-sm font-medium ring-offset-background transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:text-foreground z-10",r),...s}));P.displayName=e.Trigger.displayName;var w=_react.forwardRef.call(void 0, ({className:r,...s},t)=>_jsxruntime.jsx.call(void 0, e.Content,{ref:t,className:_chunkFUYXCJOQjs.a.call(void 0, "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...s}));w.displayName=e.Content.displayName;exports.a = C; exports.b = y; exports.c = P; exports.d = w;
|
|
3
|
+
//# sourceMappingURL=chunk-VBPIXXIA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-VBPIXXIA.js","../src/components/tabs.tsx"],"names":["Tabs","TabsList","forwardRef","className","props","ref","indicatorStyle","setIndicatorStyle","useState","listRef","useRef","useEffect","updateIndicator","activeTab","listRect","tabRect","observer","combinedRef","useCallback","node","jsxs","cn","jsx"],"mappings":"AAAA,uWAAY;AACZ,sDAAkC,8FCDH,8BAGsC,+CAsEjE,IApEEA,CAAAA,CAAqB,CAAA,CAAA,IAAA,CAErBC,CAAAA,aAAWC,+BAAAA,CAGd,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EAAQ,CAClC,GAAM,CAACC,CAAAA,CAAgBC,CAAiB,CAAA,CAAIC,6BAAAA,CAC1C,IAAA,CAAM,CAAA,CACN,KAAA,CAAO,CACT,CAAC,CAAA,CACKC,CAAAA,CAAUC,2BAAAA,IAA2B,CAAA,CAE3CC,8BAAAA,CAAU,CAAA,EAAM,CACd,IAAMC,CAAAA,CAAkB,CAAA,CAAA,EAAM,CAC5B,EAAA,CAAI,CAACH,CAAAA,CAAQ,OAAA,CAAS,MAAA,CAEtB,IAAMI,CAAAA,CAAYJ,CAAAA,CAAQ,OAAA,CAAQ,aAAA,CAChC,uBACF,CAAA,CAEA,EAAA,CAAII,CAAAA,CAAW,CACb,IAAMC,CAAAA,CAAWL,CAAAA,CAAQ,OAAA,CAAQ,qBAAA,CAAsB,CAAA,CACjDM,CAAAA,CAAUF,CAAAA,CAAU,qBAAA,CAAsB,CAAA,CAEhDN,CAAAA,CAAkB,CAChB,IAAA,CAAMQ,CAAAA,CAAQ,IAAA,CAAOD,CAAAA,CAAS,IAAA,CAC9B,KAAA,CAAOC,CAAAA,CAAQ,KACjB,CAAC,CACH,CACF,CAAA,CAEAH,CAAAA,CAAgB,CAAA,CAGhB,IAAMI,CAAAA,CAAW,IAAI,gBAAA,CAAiBJ,CAAe,CAAA,CAErD,OAAIH,CAAAA,CAAQ,OAAA,EACVO,CAAAA,CAAS,OAAA,CAAQP,CAAAA,CAAQ,OAAA,CAAS,CAChC,UAAA,CAAY,CAAA,CAAA,CACZ,eAAA,CAAiB,CAAC,YAAY,CAAA,CAC9B,OAAA,CAAS,CAAA,CACX,CAAC,CAAA,CAIH,MAAA,CAAO,gBAAA,CAAiB,QAAA,CAAUG,CAAe,CAAA,CAE1C,CAAA,CAAA,EAAM,CACXI,CAAAA,CAAS,UAAA,CAAW,CAAA,CACpB,MAAA,CAAO,mBAAA,CAAoB,QAAA,CAAUJ,CAAe,CACtD,CACF,CAAA,CAAG,CAAC,CAAC,CAAA,CAGL,IAAMK,CAAAA,CAAcC,gCAAAA,CACjBC,EAAgC,CAC7BV,CAAAA,CAA0D,OAAA,CAAUU,CAAAA,CAElE,OAAOd,CAAAA,EAAQ,UAAA,CACjBA,CAAAA,CAAIc,CAAI,CAAA,CACCd,CAAAA,EAAAA,CACPA,CAAAA,CAAsD,OAAA,CAAUc,CAAAA,CAEtE,CAAA,CACA,CAACd,CAAG,CACN,CAAA,CAEA,OACEe,8BAAAA,CAAe,CAAA,IAAA,CAAd,CACC,GAAA,CAAKH,CAAAA,CACL,SAAA,CAAWI,gCAAAA,uGACT,CACAlB,CACF,CAAA,CACC,GAAGC,CAAAA,CAGJ,QAAA,CAAA,CAAAkB,6BAAAA,MAAC,CAAA,CACC,SAAA,CAAU,yGAAA,CACV,KAAA,CAAO,CACL,IAAA,CAAM,CAAA,EAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-VBPIXXIA.js","sourcesContent":[null,"import * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => {\n const [indicatorStyle, setIndicatorStyle] = useState({\n left: 0,\n width: 0,\n })\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const updateIndicator = () => {\n if (!listRef.current) return\n\n const activeTab = listRef.current.querySelector(\n '[data-state=\"active\"]'\n ) as HTMLElement\n\n if (activeTab) {\n const listRect = listRef.current.getBoundingClientRect()\n const tabRect = activeTab.getBoundingClientRect()\n\n setIndicatorStyle({\n left: tabRect.left - listRect.left,\n width: tabRect.width,\n })\n }\n }\n\n updateIndicator()\n\n // Use MutationObserver to detect when data-state changes\n const observer = new MutationObserver(updateIndicator)\n\n if (listRef.current) {\n observer.observe(listRef.current, {\n attributes: true,\n attributeFilter: [\"data-state\"],\n subtree: true,\n })\n }\n\n // Also update on window resize\n window.addEventListener(\"resize\", updateIndicator)\n\n return () => {\n observer.disconnect()\n window.removeEventListener(\"resize\", updateIndicator)\n }\n }, [])\n\n // Combine refs\n const combinedRef = useCallback(\n (node: HTMLDivElement | null) => {\n ;(listRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n\n if (typeof ref === \"function\") {\n ref(node)\n } else if (ref) {\n ;(ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n }\n },\n [ref]\n )\n\n return (\n <TabsPrimitive.List\n ref={combinedRef}\n className={cn(\n \"relative inline-flex items-center justify-center rounded-4xl bg-muted p-1 gap-1 text-muted-foreground\",\n className\n )}\n {...props}\n >\n {/* Animated indicator */}\n <span\n className=\"absolute h-[calc(100%-0.5rem)] rounded-4xl bg-background shadow-sm transition-all duration-200 ease-out\"\n style={{\n left: `${indicatorStyle.left}px`,\n width: `${indicatorStyle.width}px`,\n }}\n />\n {props.children}\n </TabsPrimitive.List>\n )\n})\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"cursor-pointer relative inline-flex items-center justify-center whitespace-nowrap data-[state=inactive]:not-disabled:hover:bg-secondary rounded-4xl px-3 py-1 text-sm font-medium ring-offset-background transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:text-foreground z-10\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as Y,b as J,c as Q,d as Z}from"./chunk-57XZUJL4.mjs";import{a as $}from"./chunk-O2FPBOOV.mjs";import{a as j,f as W,g as U,i as q,j as X}from"./chunk-PBOK6TUC.mjs";import{a as z}from"./chunk-W4PJBJNX.mjs";import{a as K}from"./chunk-VSRWPJJB.mjs";import{a as L,b as I}from"./chunk-KBEHHIN6.mjs";import{a as o}from"./chunk-AJM7GGVC.mjs";import*as e from"react";import{Slot as T}from"@radix-ui/react-slot";import{cva as ie}from"class-variance-authority";import{PanelLeft as se,X as de,Menu as le}from"lucide-react";import{Fragment as D,jsx as r,jsxs as b}from"react/jsx-runtime";var ce="sidebar_state",pe=3600*24*7,ue="16.75rem",ee="23rem",be="calc(3rem + 0.75rem)",fe="b",ae=e.createContext(null),te=e.createContext(!1);function E(){let a=e.useContext(ae);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var me=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:n,className:i,style:s,children:c,...u},l)=>{let[R,g]=e.useState(!1),[f,v]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=t??P,h=e.useCallback(d=>{let p=typeof d=="function"?d(S):d;n?n(p):x(p),document.cookie=`${ce}=${p}; path=/; max-age=${pe}`},[n,S]),m=e.useCallback(()=>{h(d=>!d)},[h]),k=e.useCallback(()=>{let d=getComputedStyle(document.documentElement).getPropertyValue("--breakpoint-md").trim();d&&window.matchMedia(`(min-width: ${d})`).matches||g(p=>!p)},[g]);e.useEffect(()=>{let d=p=>{p.key===fe&&(p.metaKey||p.ctrlKey)&&(p.preventDefault(),m())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[m]);let _=S?"expanded":"collapsed",[H,A]=e.useState(0),O=e.useRef(null),B=e.useRef([]),V=e.Children.toArray(c),C=V.filter(d=>e.isValidElement(d)&&d.type?.displayName==="SidebarBanner"),ne=V.filter(d=>!e.isValidElement(d)||d.type?.displayName!=="SidebarBanner");C.length>0&&(B.current=C);let N=C.length>0,M=!N&&B.current.length>0,F=N||M,oe=e.useMemo(()=>({state:_,isOpen:f,setOpen:h,openMobile:R,setOpenMobile:g,toggleSidebar:m,toggleMobileSidebar:k,setIsFullyOpen:v,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,f,h,R,g,m,k,v,w,y,M]);return e.useEffect(()=>{let d=O.current;if(!d){A(0);return}let p=()=>{A(d.offsetHeight)};p();let G=new ResizeObserver(p);return G.observe(d),()=>G.disconnect()},[C.length]),r(ae.Provider,{value:oe,children:r(Y,{delayDuration:0,children:r("div",{style:{"--sidebar-width":ue,"--sidebar-width-icon":be,"--sidebar-top":N?`${H}px`:"0px",...s},className:o("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:l,...u,children:F?b(D,{children:[r("div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":H>0?`${H}px`:"auto"},children:r("div",{ref:O,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(B.current=[])},children:N?C:B.current})}),r("div",{className:"flex flex-1",children:ne})]}):c})})})});me.displayName="SidebarProvider";var ge=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"banner",className:o("w-full",a),...t}));ge.displayName="SidebarBanner";var ve=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:n="offcanvas",className:i,children:s,...c},u)=>{let{state:l,openMobile:R,setOpenMobile:g,setIsFullyOpen:f,setIsAnimating:v,isBannerClosing:w}=E(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,f(l==="expanded"),v(!1);return}v(!0);let S=setTimeout(()=>{f(l==="expanded"),v(!1)},300),h=m=>{m.target===x&&(m.propertyName==="left"||m.propertyName==="right"||m.propertyName==="width")&&(clearTimeout(S),f(l==="expanded"),v(!1))};return x.addEventListener("transitionend",h),()=>{x.removeEventListener("transitionend",h),clearTimeout(S)}},[l,f,v]),n==="none"?r("aside",{className:o("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:u,...c,children:s}):b(D,{children:[r(j,{open:R,onOpenChange:g,children:b(W,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:ee,maxWidth:ee},side:a,children:[b(U,{className:"sr-only",children:[r(q,{children:"Sidebar"}),r(X,{children:"Displays the mobile sidebar."})]}),r(te.Provider,{value:!0,children:r("div",{className:"flex h-full w-full flex-col",children:s})})]})}),b("aside",{ref:u,className:"group peer hidden text-sidebar-foreground md:block","data-state":l,"data-collapsible":l==="collapsed"?n:"","data-variant":t,"data-side":a,children:[r("div",{className:o("w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),r("div",{ref:y,"data-banner-closing":w,className:o("fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:r("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:r("div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ve.displayName="Sidebar";var re=e.forwardRef(({className:a,onClick:t,...n},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:u}=E();return b(D,{children:[b(I,{"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("md:hidden bg-transparent hover:bg-transparent",a),onClick:l=>{t?.(l),c()},...n,children:[u?r("span",{className:o(L({variant:"secondary",size:"icon"})),children:r(de,{size:16})}):r("span",{className:o(L({variant:"outline",size:"icon"})),children:r(le,{size:16})}),r("span",{className:"sr-only",children:"Toggle Sidebar"})]}),b(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("hidden md:inline-flex h-7 w-7",a),onClick:l=>{t?.(l),s()},...n,children:[r("span",{className:"rounded-full p-2",children:r(se,{size:16})}),r("span",{className:"sr-only",children:"Toggle Sidebar"})]})]})});re.displayName="SidebarTrigger";var he=e.forwardRef(({className:a,...t},n)=>{let{toggleSidebar:i}=E();return r("button",{ref:n,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:o("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});he.displayName="SidebarRail";var Re=e.memo(e.forwardRef(({className:a,...t},n)=>r("main",{ref:n,className:o("relative flex min-w-0 w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));Re.displayName="SidebarInset";var xe=e.forwardRef(({className:a,...t},n)=>r(K,{ref:n,"data-sidebar":"input",className:o("h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));xe.displayName="SidebarInput";var Se=e.forwardRef(({className:a,showTrigger:t=!1,children:n,...i},s)=>{let{state:c}=E(),u=e.useContext(te),l=c==="collapsed"&&!u;return b("div",{ref:s,"data-sidebar":"header",className:o("flex w-full gap-2 p-2 items-center",l?"justify-center items-center":"justify-between items-start",a),...i,children:[!l&&r("div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:r("div",{className:"whitespace-nowrap",children:n})}),t&&r(re,{})]})});Se.displayName="SidebarHeader";var we=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"footer",className:o("flex flex-col gap-2 p-2",a),...t}));we.displayName="SidebarFooter";var ye=e.forwardRef(({className:a,...t},n)=>r($,{ref:n,"data-sidebar":"separator",className:o("mx-2 w-auto bg-border",a),...t}));ye.displayName="SidebarSeparator";var Ce=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"content",className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));Ce.displayName="SidebarContent";var Ne=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"group",className:o("relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ne.displayName="SidebarGroup";var Me=e.forwardRef(({className:a,asChild:t=!1,...n},i)=>r(t?T:"div",{ref:i,"data-sidebar":"group-label",className:o("flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...n}));Me.displayName="SidebarGroupLabel";var Te=e.forwardRef(({className:a,asChild:t=!1,...n},i)=>r(t?T:"button",{ref:i,"data-sidebar":"group-action",className:o("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...n}));Te.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"group-content",className:o("w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Pe=e.forwardRef(({className:a,...t},n)=>r("ul",{ref:n,"data-sidebar":"menu",className:o("flex w-full min-w-0 flex-col gap-1",a),...t}));Pe.displayName="SidebarMenu";var Be=e.forwardRef(({className:a,...t},n)=>r("li",{ref:n,"data-sidebar":"menu-item",className:o("group/menu-item relative",a),...t}));Be.displayName="SidebarMenuItem";var He=ie("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"",outline:"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Le=e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:n="default",size:i="default",tooltip:s,className:c,...u},l)=>{let R=a?T:"button",{state:g}=E(),f=r(R,{ref:l,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:o(He({variant:n,size:i}),c),...u});return s?(typeof s=="string"&&(s={children:s}),b(J,{children:[r(Q,{asChild:!0,children:f}),r(Z,{side:"right",align:"center",hidden:g!=="collapsed",...s})]})):f});Le.displayName="SidebarMenuButton";var Ie=e.forwardRef(({className:a,asChild:t=!1,showOnHover:n=!1,...i},s)=>r(t?T:"button",{ref:s,"data-sidebar":"menu-action",className:o("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));Ie.displayName="SidebarMenuAction";var ze=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"menu-badge",className:o("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));ze.displayName="SidebarMenuBadge";var De=e.forwardRef(({className:a,showIcon:t=!1,...n},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return b("div",{ref:i,"data-sidebar":"menu-skeleton",className:o("flex h-8 items-center gap-2 rounded-md px-2",a),...n,children:[t&&r(z,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),r(z,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});De.displayName="SidebarMenuSkeleton";var ke=e.forwardRef(({className:a,...t},n)=>r("ul",{ref:n,"data-sidebar":"menu-sub",className:o("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));ke.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>r("li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var Ae=e.forwardRef(({asChild:a=!1,size:t="md",isActive:n,className:i,...s},c)=>r(a?T:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":n,className:o("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));Ae.displayName="SidebarMenuSubButton";export{E as a,me as b,ge as c,ve as d,re as e,he as f,Re as g,xe as h,Se as i,we as j,ye as k,Ce as l,Ne as m,Me as n,Te as o,Ee as p,Pe as q,Be as r,Le as s,Ie as t,ze as u,De as v,ke as w,_e as x,Ae as y};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as Y,b as J,c as Q,d as Z}from"./chunk-QC5MA4WL.mjs";import{a as $}from"./chunk-YBV4CPVD.mjs";import{a as j,f as W,g as U,i as q,j as X}from"./chunk-QVMQ55JW.mjs";import{a as z}from"./chunk-CNRZOMR4.mjs";import{a as K}from"./chunk-NEOUFWZN.mjs";import{a as L,b as I}from"./chunk-BLHKJHNV.mjs";import{a as o}from"./chunk-S5TKCF6T.mjs";import*as e from"react";import{Slot as T}from"@radix-ui/react-slot";import{cva as ie}from"class-variance-authority";import{PanelLeft as se,X as de,Menu as le}from"lucide-react";import{Fragment as D,jsx as r,jsxs as b}from"react/jsx-runtime";var ce="sidebar_state",pe=3600*24*7,ue="16.75rem",ee="23rem",be="calc(3rem + 0.75rem)",fe="b",ae=e.createContext(null),te=e.createContext(!1);function E(){let a=e.useContext(ae);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var me=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:n,className:i,style:s,children:c,...u},l)=>{let[R,g]=e.useState(!1),[f,v]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=t??P,h=e.useCallback(d=>{let p=typeof d=="function"?d(S):d;n?n(p):x(p),document.cookie=`${ce}=${p}; path=/; max-age=${pe}`},[n,S]),m=e.useCallback(()=>{h(d=>!d)},[h]),k=e.useCallback(()=>{let d=getComputedStyle(document.documentElement).getPropertyValue("--breakpoint-md").trim();d&&window.matchMedia(`(min-width: ${d})`).matches||g(p=>!p)},[g]);e.useEffect(()=>{let d=p=>{p.key===fe&&(p.metaKey||p.ctrlKey)&&(p.preventDefault(),m())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[m]);let _=S?"expanded":"collapsed",[H,A]=e.useState(0),O=e.useRef(null),B=e.useRef([]),V=e.Children.toArray(c),C=V.filter(d=>e.isValidElement(d)&&d.type?.displayName==="SidebarBanner"),ne=V.filter(d=>!e.isValidElement(d)||d.type?.displayName!=="SidebarBanner");C.length>0&&(B.current=C);let N=C.length>0,M=!N&&B.current.length>0,F=N||M,oe=e.useMemo(()=>({state:_,isOpen:f,setOpen:h,openMobile:R,setOpenMobile:g,toggleSidebar:m,toggleMobileSidebar:k,setIsFullyOpen:v,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,f,h,R,g,m,k,v,w,y,M]);return e.useEffect(()=>{let d=O.current;if(!d){A(0);return}let p=()=>{A(d.offsetHeight)};p();let G=new ResizeObserver(p);return G.observe(d),()=>G.disconnect()},[C.length]),r(ae.Provider,{value:oe,children:r(Y,{delayDuration:0,children:r("div",{style:{"--sidebar-width":ue,"--sidebar-width-icon":be,"--sidebar-top":N?`${H}px`:"0px",...s},className:o("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:l,...u,children:F?b(D,{children:[r("div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":H>0?`${H}px`:"auto"},children:r("div",{ref:O,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(B.current=[])},children:N?C:B.current})}),r("div",{className:"flex flex-1",children:ne})]}):c})})})});me.displayName="SidebarProvider";var ge=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"banner",className:o("w-full",a),...t}));ge.displayName="SidebarBanner";var ve=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:n="offcanvas",className:i,children:s,...c},u)=>{let{state:l,openMobile:R,setOpenMobile:g,setIsFullyOpen:f,setIsAnimating:v,isBannerClosing:w}=E(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,f(l==="expanded"),v(!1);return}v(!0);let S=setTimeout(()=>{f(l==="expanded"),v(!1)},300),h=m=>{m.target===x&&(m.propertyName==="left"||m.propertyName==="right"||m.propertyName==="width")&&(clearTimeout(S),f(l==="expanded"),v(!1))};return x.addEventListener("transitionend",h),()=>{x.removeEventListener("transitionend",h),clearTimeout(S)}},[l,f,v]),n==="none"?r("aside",{className:o("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:u,...c,children:s}):b(D,{children:[r(j,{open:R,onOpenChange:g,children:b(W,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:ee,maxWidth:ee},side:a,children:[b(U,{className:"sr-only",children:[r(q,{children:"Sidebar"}),r(X,{children:"Displays the mobile sidebar."})]}),r(te.Provider,{value:!0,children:r("div",{className:"flex h-full w-full flex-col",children:s})})]})}),b("aside",{ref:u,className:"group peer hidden text-sidebar-foreground md:block","data-state":l,"data-collapsible":l==="collapsed"?n:"","data-variant":t,"data-side":a,children:[r("div",{className:o("w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),r("div",{ref:y,"data-banner-closing":w,className:o("fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:r("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:r("div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ve.displayName="Sidebar";var re=e.forwardRef(({className:a,onClick:t,...n},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:u}=E();return b(D,{children:[b(I,{"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("md:hidden bg-transparent hover:bg-transparent",a),onClick:l=>{t?.(l),c()},...n,children:[u?r("span",{className:o(L({variant:"secondary",size:"icon"})),children:r(de,{size:16})}):r("span",{className:o(L({variant:"outline",size:"icon"})),children:r(le,{size:16})}),r("span",{className:"sr-only",children:"Toggle Sidebar"})]}),b(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("hidden md:inline-flex h-7 w-7",a),onClick:l=>{t?.(l),s()},...n,children:[r("span",{className:"rounded-full p-2",children:r(se,{size:16})}),r("span",{className:"sr-only",children:"Toggle Sidebar"})]})]})});re.displayName="SidebarTrigger";var he=e.forwardRef(({className:a,...t},n)=>{let{toggleSidebar:i}=E();return r("button",{ref:n,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:o("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});he.displayName="SidebarRail";var Re=e.memo(e.forwardRef(({className:a,...t},n)=>r("main",{ref:n,className:o("relative flex min-w-0 w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));Re.displayName="SidebarInset";var xe=e.forwardRef(({className:a,...t},n)=>r(K,{ref:n,"data-sidebar":"input",className:o("h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));xe.displayName="SidebarInput";var Se=e.forwardRef(({className:a,showTrigger:t=!1,children:n,...i},s)=>{let{state:c}=E(),u=e.useContext(te),l=c==="collapsed"&&!u;return b("div",{ref:s,"data-sidebar":"header",className:o("flex w-full gap-2 p-2 items-center",l?"justify-center items-center":"justify-between items-start",a),...i,children:[!l&&r("div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:r("div",{className:"whitespace-nowrap",children:n})}),t&&r(re,{})]})});Se.displayName="SidebarHeader";var we=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"footer",className:o("flex flex-col gap-2 p-2",a),...t}));we.displayName="SidebarFooter";var ye=e.forwardRef(({className:a,...t},n)=>r($,{ref:n,"data-sidebar":"separator",className:o("mx-2 w-auto bg-border",a),...t}));ye.displayName="SidebarSeparator";var Ce=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"content",className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));Ce.displayName="SidebarContent";var Ne=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"group",className:o("relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ne.displayName="SidebarGroup";var Me=e.forwardRef(({className:a,asChild:t=!1,...n},i)=>r(t?T:"div",{ref:i,"data-sidebar":"group-label",className:o("flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...n}));Me.displayName="SidebarGroupLabel";var Te=e.forwardRef(({className:a,asChild:t=!1,...n},i)=>r(t?T:"button",{ref:i,"data-sidebar":"group-action",className:o("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...n}));Te.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"group-content",className:o("w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Pe=e.forwardRef(({className:a,...t},n)=>r("ul",{ref:n,"data-sidebar":"menu",className:o("flex w-full min-w-0 flex-col gap-1",a),...t}));Pe.displayName="SidebarMenu";var Be=e.forwardRef(({className:a,...t},n)=>r("li",{ref:n,"data-sidebar":"menu-item",className:o("group/menu-item relative",a),...t}));Be.displayName="SidebarMenuItem";var He=ie("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"",outline:"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Le=e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:n="default",size:i="default",tooltip:s,className:c,...u},l)=>{let R=a?T:"button",{state:g}=E(),f=r(R,{ref:l,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:o(He({variant:n,size:i}),c),...u});return s?(typeof s=="string"&&(s={children:s}),b(J,{children:[r(Q,{asChild:!0,children:f}),r(Z,{side:"right",align:"center",hidden:g!=="collapsed",...s})]})):f});Le.displayName="SidebarMenuButton";var Ie=e.forwardRef(({className:a,asChild:t=!1,showOnHover:n=!1,...i},s)=>r(t?T:"button",{ref:s,"data-sidebar":"menu-action",className:o("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));Ie.displayName="SidebarMenuAction";var ze=e.forwardRef(({className:a,...t},n)=>r("div",{ref:n,"data-sidebar":"menu-badge",className:o("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));ze.displayName="SidebarMenuBadge";var De=e.forwardRef(({className:a,showIcon:t=!1,...n},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return b("div",{ref:i,"data-sidebar":"menu-skeleton",className:o("flex h-8 items-center gap-2 rounded-md px-2",a),...n,children:[t&&r(z,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),r(z,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});De.displayName="SidebarMenuSkeleton";var ke=e.forwardRef(({className:a,...t},n)=>r("ul",{ref:n,"data-sidebar":"menu-sub",className:o("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));ke.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>r("li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var Ae=e.forwardRef(({asChild:a=!1,size:t="md",isActive:n,className:i,...s},c)=>r(a?T:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":n,className:o("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));Ae.displayName="SidebarMenuSubButton";export{E as a,me as b,ge as c,ve as d,re as e,he as f,Re as g,xe as h,Se as i,we as j,ye as k,Ce as l,Ne as m,Me as n,Te as o,Ee as p,Pe as q,Be as r,Le as s,Ie as t,ze as u,De as v,ke as w,_e as x,Ae as y};
|
|
3
|
+
//# sourceMappingURL=chunk-WAX33IZF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/sidebar.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16.75rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"calc(3rem + 0.75rem)\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n isOpen: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n toggleSidebar: () => void\n toggleMobileSidebar: () => void\n setIsFullyOpen: (open: boolean) => void\n isAnimating: boolean\n setIsAnimating: (animating: boolean) => void\n isBannerClosing: boolean\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\nconst SidebarMobileContext = React.createContext(false)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const [openMobile, setOpenMobile] = React.useState(false)\n const [isFullyOpen, setIsFullyOpen] = React.useState(defaultOpen)\n const [isAnimating, setIsAnimating] = React.useState(false)\n\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n setOpen((open) => !open)\n }, [setOpen])\n\n const toggleMobileSidebar = React.useCallback(() => {\n const mdBreakpoint = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--breakpoint-md\")\n .trim()\n if (\n mdBreakpoint &&\n window.matchMedia(`(min-width: ${mdBreakpoint})`).matches\n ) {\n return\n }\n setOpenMobile((open) => !open)\n }, [setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const [bannerHeight, setBannerHeight] = React.useState(0)\n const bannerRef = React.useRef<HTMLDivElement>(null)\n const previousBannerChildrenRef = React.useRef<React.ReactNode[]>([])\n\n // Separate banner children (SidebarBanner) from layout children (Sidebar, SidebarInset)\n const childArray = React.Children.toArray(children)\n const bannerChildren = childArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.FC & { displayName?: string })?.displayName ===\n \"SidebarBanner\"\n )\n const layoutChildren = childArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.FC & { displayName?: string })?.displayName !==\n \"SidebarBanner\"\n )\n\n // Store previous banner children for closing animation\n if (bannerChildren.length > 0) {\n previousBannerChildrenRef.current = bannerChildren\n }\n\n const hasBanner = bannerChildren.length > 0\n const isClosing = !hasBanner && previousBannerChildrenRef.current.length > 0\n const displayBanner = hasBanner || isClosing\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n isOpen: isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isBannerClosing: isClosing,\n }),\n [\n state,\n isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isClosing,\n ]\n )\n\n // Measure banner height\n React.useEffect(() => {\n const banner = bannerRef.current\n if (!banner) {\n setBannerHeight(0)\n return\n }\n\n const updateHeight = () => {\n setBannerHeight(banner.offsetHeight)\n }\n\n updateHeight()\n const resizeObserver = new ResizeObserver(updateHeight)\n resizeObserver.observe(banner)\n\n return () => resizeObserver.disconnect()\n }, [bannerChildren.length])\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n \"--sidebar-top\": hasBanner ? `${bannerHeight}px` : \"0px\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n displayBanner && \"flex-col\",\n className\n )}\n ref={ref}\n {...props}\n >\n {displayBanner ? (\n <>\n <div\n className=\"relative overflow-hidden transition-[height] duration-200 ease-linear\"\n style={\n {\n height: isClosing\n ? \"0px\"\n : bannerHeight > 0\n ? `${bannerHeight}px`\n : \"auto\",\n } as React.CSSProperties\n }\n >\n <div\n ref={bannerRef}\n className=\"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full\"\n data-state={hasBanner ? \"open\" : \"closed\"}\n onTransitionEnd={() => {\n if (isClosing) {\n previousBannerChildrenRef.current = []\n }\n }}\n >\n {hasBanner\n ? bannerChildren\n : previousBannerChildrenRef.current}\n </div>\n </div>\n <div className=\"flex flex-1\">{layoutChildren}</div>\n </>\n ) : (\n children\n )}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst SidebarBanner = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"banner\"\n className={cn(\"w-full\", className)}\n {...props}\n />\n )\n})\nSidebarBanner.displayName = \"SidebarBanner\"\n\nconst Sidebar = React.forwardRef<\n HTMLElement,\n React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const {\n state,\n openMobile,\n setOpenMobile,\n setIsFullyOpen,\n setIsAnimating,\n isBannerClosing,\n } = useSidebar()\n const sidebarRef = React.useRef<HTMLDivElement>(null)\n const isFirstRenderRef = React.useRef(true)\n\n // Track when the sidebar animation completes\n React.useEffect(() => {\n const sidebar = sidebarRef.current\n if (!sidebar) return\n\n // On first render, set isFullyOpen immediately without waiting for animation\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n return\n }\n\n // Mark as animating when state changes\n setIsAnimating(true)\n\n // Fallback timeout in case transitionend doesn't fire\n const fallbackTimeout = setTimeout(() => {\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }, 300) // Slightly longer than the 200ms transition duration\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n // Only respond to transitions on the sidebar itself, not children\n if (event.target !== sidebar) return\n\n // Check if we're transitioning width, left, or right properties\n if (\n event.propertyName === \"left\" ||\n event.propertyName === \"right\" ||\n event.propertyName === \"width\"\n ) {\n clearTimeout(fallbackTimeout)\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }\n }\n\n sidebar.addEventListener(\"transitionend\", handleTransitionEnd)\n return () => {\n sidebar.removeEventListener(\"transitionend\", handleTransitionEnd)\n clearTimeout(fallbackTimeout)\n }\n }, [state, setIsFullyOpen, setIsAnimating])\n\n if (collapsible === \"none\") {\n return (\n <aside\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </aside>\n )\n }\n\n return (\n <>\n {/* Mobile Sheet - visible only on mobile (< md) */}\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <SidebarMobileContext.Provider value={true}>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SidebarMobileContext.Provider>\n </SheetContent>\n </Sheet>\n\n {/* Desktop Sidebar - visible only on desktop (md+) */}\n <aside\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* Spacer to reserve horizontal space */}\n <div\n className={cn(\n \"w-(--sidebar-width) transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n {/* Fixed sidebar */}\n <div\n ref={sidebarRef}\n data-banner-closing={isBannerClosing}\n className={cn(\n \"fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n isBannerClosing && \"transition-[left,right,width,top,height]\",\n \"top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0\">\n {children}\n </div>\n </div>\n </div>\n </aside>\n </>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, toggleMobileSidebar, openMobile } = useSidebar()\n\n return (\n <>\n {/* Mobile trigger - visible below md */}\n <Button\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"md:hidden bg-transparent hover:bg-transparent\",\n className\n )}\n onClick={(event) => {\n onClick?.(event)\n toggleMobileSidebar()\n }}\n {...props}\n >\n {openMobile ? (\n <span\n className={cn(\n buttonVariants({ variant: \"secondary\", size: \"icon\" })\n )}\n >\n <X size={16} />\n </span>\n ) : (\n <span\n className={cn(buttonVariants({ variant: \"outline\", size: \"icon\" }))}\n >\n <Menu size={16} />\n </span>\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n\n {/* Desktop trigger - visible at md+ */}\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"hidden md:inline-flex h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <span className=\"rounded-full p-2\">\n <PanelLeft size={16} />\n </span>\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n </>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.memo(\n React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex min-w-0 w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n }\n )\n)\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n const isMobile = React.useContext(SidebarMobileContext)\n\n const isCollapsed = state === \"collapsed\" && !isMobile\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex w-full gap-2 p-2 items-center\",\n isCollapsed\n ? \"justify-center items-center\"\n : \"justify-between items-start\",\n className\n )}\n {...props}\n >\n {!isCollapsed && (\n <div className=\"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden\">\n <div className=\"whitespace-nowrap\">{children}</div>\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarBanner,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"mappings":"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","names":["React","Slot","cva","PanelLeft","X","Menu","Fragment","jsx","jsxs","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","SidebarMobileContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","openMobile","setOpenMobile","isFullyOpen","setIsFullyOpen","isAnimating","setIsAnimating","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","toggleMobileSidebar","mdBreakpoint","handleKeyDown","event","state","bannerHeight","setBannerHeight","bannerRef","previousBannerChildrenRef","childArray","bannerChildren","child","layoutChildren","hasBanner","isClosing","displayBanner","contextValue","banner","updateHeight","resizeObserver","TooltipProvider","cn","SidebarBanner","Sidebar","side","variant","collapsible","isBannerClosing","sidebarRef","isFirstRenderRef","sidebar","fallbackTimeout","handleTransitionEnd","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","buttonVariants","X","Menu","PanelLeft","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","showTrigger","isMobile","isCollapsed","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function T(s){return typeof s=="object"&&"src"in s}function z(s){return T(s)?s.src:s}function J({src:s,alt:w,duration:I=600,steps:d=15,className:E,onAnimationComplete:M,objectFit:f="cover"}){let p=_react.useRef.call(void 0, null),h=_react.useRef.call(void 0, null),[y,x]=_react.useState.call(void 0, "loading"),[r,H]=_react.useState.call(void 0, null),v=z(s),b=_react.useCallback.call(void 0, (t,a,e,n)=>{t.imageSmoothingEnabled=!0,t.clearRect(0,0,e,n);let i=a.naturalWidth/a.naturalHeight,c=e/n,o,l,u,m;f==="contain"?(i>c?(o=e,l=e/i):(l=n,o=n*i),u=(e-o)/2,m=(n-l)/2):(i>c?(l=n,o=n*i):(o=e,l=e/i),u=(e-o)/2,m=(n-l)/2),t.drawImage(a,u,m,o,l)},[f]),g=_react.useCallback.call(void 0, (t,a,e,n,i)=>{t.imageSmoothingEnabled=!1;let c=Math.max(1,Math.floor(n/e)),o=Math.max(1,Math.floor(i/e));t.clearRect(0,0,n,i),t.drawImage(a,0,0,c,o),t.drawImage(h.current,0,0,c,o,0,0,n,i)},[]),R=_react.useCallback.call(void 0, (t,a,e,n)=>{let i=Math.max(e,n)/4,c=I/d,o=0;x("animating");let l=()=>{let u=o/d,m=Math.max(1,Math.floor(i*(1-u)));m<=1?b(t,a,e,n):g(t,a,m,e,n),o++,o<=d?window.setTimeout(l,c):(b(t,a,e,n),x("complete"),_optionalChain([M, 'optionalCall', _ => _()]))};l()},[I,d,g,b,M]);return _react.useEffect.call(void 0, ()=>{let t=p.current;if(!t)return;let a=()=>{let{width:n,height:i}=t.getBoundingClientRect();H({width:Math.floor(n),height:Math.floor(i)})},e=new ResizeObserver(a);return e.observe(t),a(),()=>{e.disconnect()}},[]),_react.useEffect.call(void 0, ()=>{if(!r||r.width<=0||r.height<=0)return;let t=h.current;if(!t)return;let a=t.getContext("2d");if(!a)return;t.width=r.width,t.height=r.height;let e=new window.Image;return e.crossOrigin="anonymous",e.onload=()=>{let n=Math.max(r.width,r.height)/4;g(a,e,n,r.width,r.height),R(a,e,r.width,r.height)},e.onerror=()=>{console.error("PixelLoad: Failed to load image")},e.src=v,()=>{e.onload=null,e.onerror=null}},[v,r,R,g]),_jsxruntime.jsxs.call(void 0, "div",{ref:p,className:`relative w-full h-full ${E||""}`,children:[_jsxruntime.jsx.call(void 0, "canvas",{ref:h,className:"absolute top-0 left-0 w-full h-full",style:{objectFit:f},role:"img","aria-label":w}),y==="complete"&&_jsxruntime.jsx.call(void 0, "img",{src:v,alt:w,className:"sr-only","aria-hidden":!0})]})}exports.a = J;
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-WFD523CV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-WFD523CV.js","../src/components/PixelLoad.tsx"],"names":["isStaticImageData","src","getImageSrc","PixelLoad","alt","duration","steps","className","onAnimationComplete","objectFit","containerRef","useRef","canvasRef","status","setStatus","useState","dimensions","setDimensions","imageSrc","drawFull","useCallback","ctx","img","w","h","imgRatio","containerRatio","drawW","drawH","drawX","drawY","drawPixelated","pixelSize","sw","sh","runAnimation","minPixelSize","intervalMs","currentStep","animate","progress","useEffect","container","updateDimensions","width","height","resizeObserver","canvas","jsxs"],"mappings":"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","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-WFD523CV.js","sourcesContent":[null,"\"use client\"\n\nimport { type StaticImageData } from \"next/image\"\nimport { JSX, useCallback, useEffect, useRef, useState } from \"react\"\n\ntype PixelLoadStatus = \"loading\" | \"animating\" | \"complete\"\n\ntype ImageSrc = string | StaticImageData\n\nexport interface PixelLoadProps {\n src: ImageSrc\n alt: string\n duration?: number\n steps?: number\n className?: string\n onAnimationComplete?: () => void\n objectFit?: \"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\"\n}\n\nfunction isStaticImageData(src: ImageSrc): src is StaticImageData {\n return typeof src === \"object\" && \"src\" in src\n}\n\nfunction getImageSrc(src: ImageSrc): string {\n return isStaticImageData(src) ? src.src : src\n}\n\nexport function PixelLoad({\n src,\n alt,\n duration = 600,\n steps = 15,\n className,\n onAnimationComplete,\n objectFit = \"cover\",\n}: PixelLoadProps): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null)\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const [status, setStatus] = useState<PixelLoadStatus>(\"loading\")\n const [dimensions, setDimensions] = useState<{\n width: number\n height: number\n } | null>(null)\n\n const imageSrc = getImageSrc(src)\n\n const drawFull = useCallback(\n (\n ctx: CanvasRenderingContext2D,\n img: HTMLImageElement,\n w: number,\n h: number\n ): void => {\n ctx.imageSmoothingEnabled = true\n ctx.clearRect(0, 0, w, h)\n\n const imgRatio = img.naturalWidth / img.naturalHeight\n const containerRatio = w / h\n\n let drawW: number\n let drawH: number\n let drawX: number\n let drawY: number\n\n if (objectFit === \"contain\") {\n if (imgRatio > containerRatio) {\n drawW = w\n drawH = w / imgRatio\n } else {\n drawH = h\n drawW = h * imgRatio\n }\n drawX = (w - drawW) / 2\n drawY = (h - drawH) / 2\n } else {\n if (imgRatio > containerRatio) {\n drawH = h\n drawW = h * imgRatio\n } else {\n drawW = w\n drawH = w / imgRatio\n }\n drawX = (w - drawW) / 2\n drawY = (h - drawH) / 2\n }\n\n ctx.drawImage(img, drawX, drawY, drawW, drawH)\n },\n [objectFit]\n )\n\n const drawPixelated = useCallback(\n (\n ctx: CanvasRenderingContext2D,\n img: HTMLImageElement,\n pixelSize: number,\n w: number,\n h: number\n ): void => {\n ctx.imageSmoothingEnabled = false\n\n const sw = Math.max(1, Math.floor(w / pixelSize))\n const sh = Math.max(1, Math.floor(h / pixelSize))\n\n ctx.clearRect(0, 0, w, h)\n ctx.drawImage(img, 0, 0, sw, sh)\n ctx.drawImage(canvasRef.current!, 0, 0, sw, sh, 0, 0, w, h)\n },\n []\n )\n\n const runAnimation = useCallback(\n (\n ctx: CanvasRenderingContext2D,\n img: HTMLImageElement,\n w: number,\n h: number\n ): void => {\n const minPixelSize = Math.max(w, h) / 4\n const intervalMs = duration / steps\n let currentStep = 0\n\n setStatus(\"animating\")\n\n const animate = (): void => {\n const progress = currentStep / steps\n const pixelSize = Math.max(1, Math.floor(minPixelSize * (1 - progress)))\n\n if (pixelSize <= 1) {\n drawFull(ctx, img, w, h)\n } else {\n drawPixelated(ctx, img, pixelSize, w, h)\n }\n\n currentStep++\n\n if (currentStep <= steps) {\n window.setTimeout(animate, intervalMs)\n } else {\n drawFull(ctx, img, w, h)\n setStatus(\"complete\")\n onAnimationComplete?.()\n }\n }\n\n animate()\n },\n [duration, steps, drawPixelated, drawFull, onAnimationComplete]\n )\n\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n\n const updateDimensions = (): void => {\n const { width, height } = container.getBoundingClientRect()\n setDimensions({ width: Math.floor(width), height: Math.floor(height) })\n }\n\n const resizeObserver = new ResizeObserver(updateDimensions)\n resizeObserver.observe(container)\n updateDimensions()\n\n return (): void => {\n resizeObserver.disconnect()\n }\n }, [])\n\n useEffect(() => {\n if (!dimensions) return\n\n if (dimensions.width <= 0 || dimensions.height <= 0) return\n\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n canvas.width = dimensions.width\n canvas.height = dimensions.height\n\n const img = new window.Image()\n img.crossOrigin = \"anonymous\"\n\n img.onload = (): void => {\n const minPixelSize = Math.max(dimensions.width, dimensions.height) / 4\n drawPixelated(ctx, img, minPixelSize, dimensions.width, dimensions.height)\n runAnimation(ctx, img, dimensions.width, dimensions.height)\n }\n\n img.onerror = (): void => {\n console.error(\"PixelLoad: Failed to load image\")\n }\n\n img.src = imageSrc\n\n return (): void => {\n img.onload = null\n img.onerror = null\n }\n }, [imageSrc, dimensions, runAnimation, drawPixelated])\n\n return (\n <div\n ref={containerRef}\n className={`relative w-full h-full ${className || \"\"}`}\n >\n <canvas\n ref={canvasRef}\n className=\"absolute top-0 left-0 w-full h-full\"\n style={{ objectFit }}\n role=\"img\"\n aria-label={alt}\n />\n {status === \"complete\" && (\n <img\n src={imageSrc}\n alt={alt}\n className=\"sr-only\"\n aria-hidden\n />\n )}\n </div>\n )\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as e}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as e}from"./chunk-S5TKCF6T.mjs";import*as a from"react";import{jsx as s}from"react/jsx-runtime";var r=a.forwardRef(({className:l,...t},o)=>s("label",{ref:o,className:e("text-sm font-medium leading-5 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",l),...t}));r.displayName="Label";export{r as a};
|
|
3
|
+
//# sourceMappingURL=chunk-WY4HCUAP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/label.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-5 peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n )\n)\nLabel.displayName = \"Label\"\n\nexport { Label }\n"],"mappings":";yCAEA,UAAYA,MAAW,QAOnB,cAAAC,MAAA,oBAFJ,IAAMC,EAAc,aAClB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,IACxBJ,EAAC,SACC,IAAKI,EACL,UAAWC,EACT,0FACAH,CACF,EACC,GAAGC,EACN,CAEJ,EACAF,EAAM,YAAc","names":["React","jsx","Label","className","props","ref","cn"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var o = _interopRequireWildcard(_react);var _reactcheckbox = require('@radix-ui/react-checkbox'); var e = _interopRequireWildcard(_reactcheckbox);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var s=o.forwardRef(({className:a,...r},c)=>_jsxruntime.jsx.call(void 0, e.Root,{ref:c,className:_chunkFUYXCJOQjs.a.call(void 0, "group peer h-4 w-4 bg-background shrink-0 rounded-xs border border-accent-muted ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-accent data-[state=checked]:border-accent data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-accent data-[state=indeterminate]:border-accent data-[state=indeterminate]:text-primary-foreground",a),...r,children:_jsxruntime.jsxs.call(void 0, e.Indicator,{className:_chunkFUYXCJOQjs.a.call(void 0, "flex items-center justify-center text-current"),children:[_jsxruntime.jsx.call(void 0, _lucidereact.Check,{className:"h-4 w-4 group-data-[state=indeterminate]:hidden"}),_jsxruntime.jsx.call(void 0, _lucidereact.Minus,{className:"h-4 w-4 hidden group-data-[state=indeterminate]:block"})]})}));s.displayName=e.Root.displayName;exports.a = s;
|
|
3
|
+
//# sourceMappingURL=chunk-WYRD4UAK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-WYRD4UAK.js","../src/components/checkbox.tsx"],"names":["Checkbox","className","props","ref","jsx","cn","jsxs","Check","Minus"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,0GACY,2CACN,+CAgBzB,IAZEA,CAAAA,CAAiB,CAAA,CAAA,UAAA,CAGrB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EAC1BC,6BAAAA,CAAmB,CAAA,IAAA,CAAlB,CACC,GAAA,CAAKD,CAAAA,CACL,SAAA,CAAWE,gCAAAA,8fACT,CACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CAEJ,QAAA,CAAAI,8BAAAA,CAAmB,CAAA,SAAA,CAAlB,CACC,SAAA,CAAWD,gCAAAA,+CAAkD,CAAA,CAE7D,QAAA,CAAA,CAAAD,6BAAAA,kBAACG,CAAA,CAAM,SAAA,CAAU,iDAAA,CAAkD,CAAA,CACnEH,6BAAAA,kBAACI,CAAA,CAAM,SAAA,CAAU,uDAAA,CAAwD,CAAA,CAAA,CAC3E,CAAA,CACF,CACD,CAAA,CACDR,CAAAA,CAAS,WAAA,CAAgC,CAAA,CAAA,IAAA,CAAK,WAAA,CAAA,cAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-WYRD4UAK.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"group peer h-4 w-4 bg-background shrink-0 rounded-xs border border-accent-muted ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-accent data-[state=checked]:border-accent data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-accent data-[state=indeterminate]:border-accent data-[state=indeterminate]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4 group-data-[state=indeterminate]:hidden\" />\n <Minus className=\"h-4 w-4 hidden group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a}from"./chunk-S5TKCF6T.mjs";import*as e from"@radix-ui/react-tabs";import{forwardRef as o,useCallback as p,useEffect as g,useRef as T,useState as R}from"react";import{jsx as c,jsxs as h}from"react/jsx-runtime";var C=e.Root,y=o(({className:r,...s},t)=>{let[l,d]=R({left:0,width:0}),n=T(null);g(()=>{let i=()=>{if(!n.current)return;let f=n.current.querySelector('[data-state="active"]');if(f){let v=n.current.getBoundingClientRect(),m=f.getBoundingClientRect();d({left:m.left-v.left,width:m.width})}};i();let u=new MutationObserver(i);return n.current&&u.observe(n.current,{attributes:!0,attributeFilter:["data-state"],subtree:!0}),window.addEventListener("resize",i),()=>{u.disconnect(),window.removeEventListener("resize",i)}},[]);let b=p(i=>{n.current=i,typeof t=="function"?t(i):t&&(t.current=i)},[t]);return h(e.List,{ref:b,className:a("relative inline-flex items-center justify-center rounded-4xl bg-muted p-1 gap-1 text-muted-foreground",r),...s,children:[c("span",{className:"absolute h-[calc(100%-0.5rem)] rounded-4xl bg-background shadow-sm transition-all duration-200 ease-out",style:{left:`${l.left}px`,width:`${l.width}px`}}),s.children]})});y.displayName=e.List.displayName;var P=o(({className:r,...s},t)=>c(e.Trigger,{ref:t,className:a("cursor-pointer relative inline-flex items-center justify-center whitespace-nowrap data-[state=inactive]:not-disabled:hover:bg-secondary rounded-4xl px-3 py-1 text-sm font-medium ring-offset-background transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:text-foreground z-10",r),...s}));P.displayName=e.Trigger.displayName;var w=o(({className:r,...s},t)=>c(e.Content,{ref:t,className:a("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...s}));w.displayName=e.Content.displayName;export{C as a,y as b,P as c,w as d};
|
|
3
|
+
//# sourceMappingURL=chunk-WZ5F5VT3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/tabs.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => {\n const [indicatorStyle, setIndicatorStyle] = useState({\n left: 0,\n width: 0,\n })\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const updateIndicator = () => {\n if (!listRef.current) return\n\n const activeTab = listRef.current.querySelector(\n '[data-state=\"active\"]'\n ) as HTMLElement\n\n if (activeTab) {\n const listRect = listRef.current.getBoundingClientRect()\n const tabRect = activeTab.getBoundingClientRect()\n\n setIndicatorStyle({\n left: tabRect.left - listRect.left,\n width: tabRect.width,\n })\n }\n }\n\n updateIndicator()\n\n // Use MutationObserver to detect when data-state changes\n const observer = new MutationObserver(updateIndicator)\n\n if (listRef.current) {\n observer.observe(listRef.current, {\n attributes: true,\n attributeFilter: [\"data-state\"],\n subtree: true,\n })\n }\n\n // Also update on window resize\n window.addEventListener(\"resize\", updateIndicator)\n\n return () => {\n observer.disconnect()\n window.removeEventListener(\"resize\", updateIndicator)\n }\n }, [])\n\n // Combine refs\n const combinedRef = useCallback(\n (node: HTMLDivElement | null) => {\n ;(listRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n\n if (typeof ref === \"function\") {\n ref(node)\n } else if (ref) {\n ;(ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n }\n },\n [ref]\n )\n\n return (\n <TabsPrimitive.List\n ref={combinedRef}\n className={cn(\n \"relative inline-flex items-center justify-center rounded-4xl bg-muted p-1 gap-1 text-muted-foreground\",\n className\n )}\n {...props}\n >\n {/* Animated indicator */}\n <span\n className=\"absolute h-[calc(100%-0.5rem)] rounded-4xl bg-background shadow-sm transition-all duration-200 ease-out\"\n style={{\n left: `${indicatorStyle.left}px`,\n width: `${indicatorStyle.width}px`,\n }}\n />\n {props.children}\n </TabsPrimitive.List>\n )\n})\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"cursor-pointer relative inline-flex items-center justify-center whitespace-nowrap data-[state=inactive]:not-disabled:hover:bg-secondary rounded-4xl px-3 py-1 text-sm font-medium ring-offset-background transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:text-foreground z-10\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"],"mappings":";oCAAA,UAAYA,MAAmB,uBAG/B,OAAS,cAAAC,EAAY,eAAAC,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAsEjE,OASE,OAAAC,EATF,QAAAC,MAAA,oBApEJ,IAAMC,EAAqB,OAErBC,EAAWR,EAGf,CAAC,CAAE,UAAAS,EAAW,GAAGC,CAAM,EAAGC,IAAQ,CAClC,GAAM,CAACC,EAAgBC,CAAiB,EAAIT,EAAS,CACnD,KAAM,EACN,MAAO,CACT,CAAC,EACKU,EAAUX,EAAuB,IAAI,EAE3CD,EAAU,IAAM,CACd,IAAMa,EAAkB,IAAM,CAC5B,GAAI,CAACD,EAAQ,QAAS,OAEtB,IAAME,EAAYF,EAAQ,QAAQ,cAChC,uBACF,EAEA,GAAIE,EAAW,CACb,IAAMC,EAAWH,EAAQ,QAAQ,sBAAsB,EACjDI,EAAUF,EAAU,sBAAsB,EAEhDH,EAAkB,CAChB,KAAMK,EAAQ,KAAOD,EAAS,KAC9B,MAAOC,EAAQ,KACjB,CAAC,CACH,CACF,EAEAH,EAAgB,EAGhB,IAAMI,EAAW,IAAI,iBAAiBJ,CAAe,EAErD,OAAID,EAAQ,SACVK,EAAS,QAAQL,EAAQ,QAAS,CAChC,WAAY,GACZ,gBAAiB,CAAC,YAAY,EAC9B,QAAS,EACX,CAAC,EAIH,OAAO,iBAAiB,SAAUC,CAAe,EAE1C,IAAM,CACXI,EAAS,WAAW,EACpB,OAAO,oBAAoB,SAAUJ,CAAe,CACtD,CACF,EAAG,CAAC,CAAC,EAGL,IAAMK,EAAcnB,EACjBoB,GAAgC,CAC7BP,EAA0D,QAAUO,EAElE,OAAOV,GAAQ,WACjBA,EAAIU,CAAI,EACCV,IACPA,EAAsD,QAAUU,EAEtE,EACA,CAACV,CAAG,CACN,EAEA,OACEL,EAAe,OAAd,CACC,IAAKc,EACL,UAAWE,EACT,wGACAb,CACF,EACC,GAAGC,EAGJ,UAAAL,EAAC,QACC,UAAU,0GACV,MAAO,CACL,KAAM,GAAGO,EAAe,IAAI,KAC5B,MAAO,GAAGA,EAAe,KAAK,IAChC,EACF,EACCF,EAAM,UACT,CAEJ,CAAC,EACDF,EAAS,YAA4B,OAAK,YAE1C,IAAMe,EAAcvB,EAGlB,CAAC,CAAE,UAAAS,EAAW,GAAGC,CAAM,EAAGC,IAC1BN,EAAe,UAAd,CACC,IAAKM,EACL,UAAWW,EACT,ybACAb,CACF,EACC,GAAGC,EACN,CACD,EACDa,EAAY,YAA4B,UAAQ,YAEhD,IAAMC,EAAcxB,EAGlB,CAAC,CAAE,UAAAS,EAAW,GAAGC,CAAM,EAAGC,IAC1BN,EAAe,UAAd,CACC,IAAKM,EACL,UAAWW,EACT,kIACAb,CACF,EACC,GAAGC,EACN,CACD,EACDc,EAAY,YAA4B,UAAQ","names":["TabsPrimitive","forwardRef","useCallback","useEffect","useRef","useState","jsx","jsxs","Tabs","TabsList","className","props","ref","indicatorStyle","setIndicatorStyle","listRef","updateIndicator","activeTab","listRect","tabRect","observer","combinedRef","node","cn","TabsTrigger","TabsContent"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
-
var
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var o = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _jsxruntime = require('react/jsx-runtime');var m=_classvarianceauthority.cva.call(void 0, "inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-4xl font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary-accent text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive hover:bg-destructive/90",outline:"border border-input hover:bg-base-accent text-primary-accent",secondary:"bg-muted text-primary-accent hover:bg-muted/20",ghost:"hover:bg-base-accent text-primary-accent",link:"text-primary-accent underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm",sm:"h-8 text-xs px-3 py-2",lg:"h-10 px-8 py-2 text-sm",icon:"h-9 w-9",none:""}},defaultVariants:{variant:"default",size:"default"}}),f= exports.b =o.forwardRef(({className:i,variant:s,size:c,asChild:d=!1,loading:e=!1,icon:r,...t},u)=>_jsxruntime.jsxs.call(void 0, d?_reactslot.Slot:"button",{className:_chunkFUYXCJOQjs.a.call(void 0, m({variant:s,size:c,className:i})),ref:u,disabled:e||t.disabled,...t,children:[e&&_jsxruntime.jsx.call(void 0, "div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),!e&&r&&_jsxruntime.jsx.call(void 0, "span",{className:"mr-2",children:r}),t.children]}));f.displayName="Button";exports.a = m; exports.b = f;
|
|
3
|
+
//# sourceMappingURL=chunk-XQILGD5B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-XQILGD5B.js","../src/components/button.tsx"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","loading","icon","props","ref","jsxs","Slot","cn","jsx"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECDhB,iDACF,kEACkB,+CAwDjC,IApDAA,CAAAA,CAAiBC,yCAAAA,+SACrB,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CACE,+DAAA,CACF,WAAA,CAAa,wCAAA,CACb,OAAA,CAAS,8DAAA,CACT,SAAA,CAAW,gDAAA,CACX,KAAA,CAAO,0CAAA,CACP,IAAA,CAAM,wDACR,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,uBAAA,CACT,EAAA,CAAI,uBAAA,CACJ,EAAA,CAAI,wBAAA,CACJ,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,EACR,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAWMC,CAAAA,aAAe,CAAA,CAAA,UAAA,CACnB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EAIEC,8BAAAA,CAFWL,CAAUM,eAAAA,CAAO,QAAA,CAE3B,CACC,SAAA,CAAWC,gCAAAA,CAAGb,CAAe,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAF,CAAU,CAAC,CAAC,CAAA,CAC1D,GAAA,CAAKO,CAAAA,CACL,QAAA,CAAUH,CAAAA,EAAWE,CAAAA,CAAM,QAAA,CAC1B,GAAGA,CAAAA,CAEH,QAAA,CAAA,CAAAF,CAAAA,EACCO,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,qFAAA,CAAsF,CAAA,CAEtG,CAACP,CAAAA,EAAWC,CAAAA,EAAQM,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,MAAA,CAAQ,QAAA,CAAAN,CAAAA,CAAK,CAAA,CACjDC,CAAAA,CAAM,QAAA,CAAA,CACT,CAGN,CAAA,CACAP,CAAAA,CAAO,WAAA,CAAc,QAAA,CAAA,6BAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-XQILGD5B.js","sourcesContent":[null,"import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-4xl font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary-accent text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive hover:bg-destructive/90\",\n outline: \"border border-input hover:bg-base-accent text-primary-accent\",\n secondary: \"bg-muted text-primary-accent hover:bg-muted/20\",\n ghost: \"hover:bg-base-accent text-primary-accent\",\n link: \"text-primary-accent underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 text-sm\",\n sm: \"h-8 text-xs px-3 py-2\",\n lg: \"h-10 px-8 py-2 text-sm\",\n icon: \"h-9 w-9\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n icon?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n icon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={loading || props.disabled}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n )}\n {!loading && icon && <span className=\"mr-2\">{icon}</span>}\n {props.children}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as P,b as O,c as S}from"./chunk-FZ3NXOFK.mjs";import{a as M,c as G,d as R,e as E,f,h as D}from"./chunk-DATWXRPT.mjs";import{a as b}from"./chunk-S5TKCF6T.mjs";import*as d from"react";import{Check as K,ChevronDown as Q,Plus as U,X as I}from"lucide-react";import{Fragment as V,jsx as o,jsxs as n}from"react/jsx-runtime";function oe({options:m=[],groups:l,value:i,onValueChange:T,placeholder:p="Select option...",searchPlaceholder:L="Search...",emptyMessage:W="No option found.",disabled:X=!1,className:$,error:j=!1,multiple:q=!1,values:s=[],onValuesChange:g,variant:z="default",searchable:A=!0}){let[v,x]=d.useState(!1),t=z==="metrics",c=t?!0:q,h=d.useMemo(()=>l?l.flatMap(e=>e.options):m,[l,m]),C=h.find(e=>e.value===i),a=h.filter(e=>s.includes(e.value)),B=e=>{if(c){let r=s.includes(e)?s.filter(u=>u!==e):[...s,e];g?.(r)}else T?.(e===i?"":e),x(!1)},y=(e,r)=>{r.preventDefault(),r.stopPropagation();let u=s.filter(J=>J!==e);g?.(u)},F=()=>t?p:c?a.length===0?p:a.length===1?a[0].label:`${a.length} selected`:C?C.label:p,N=e=>{let r=c?s.includes(e.value):i===e.value;return n(D,{value:e.value,onSelect:B,className:"rounded-[12px]",children:[o("span",{className:"truncate",children:e.label}),o(K,{className:b("ml-auto h-4 w-4 shrink-0",r?"opacity-100":"opacity-0")})]},e.value)},w=()=>t||!c||a.length===0?null:o("div",{className:"px-2 py-1.5",children:o("div",{className:"flex flex-wrap gap-1",children:a.map(e=>n("div",{className:"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs",children:[o("span",{className:"truncate",children:e.label}),o(I,{className:"h-3 w-3 cursor-pointer",onClick:r=>y(e.value,r)})]},e.value))})}),H=()=>!t||a.length===0?null:a.map(e=>n("div",{className:"inline-flex items-center gap-2 rounded-3xl border bg-transparent px-3 py-1.5 text-sm",style:{borderColor:e.color||"var(--border)"},children:[o("span",{className:"truncate",style:{color:e.color},children:e.label}),o(I,{className:"h-3.5 w-3.5 cursor-pointer opacity-70 hover:opacity-100",style:{color:e.color},onClick:r=>y(e.value,r)})]},e.value)),k=n(P,{open:v,onOpenChange:x,children:[o(O,{asChild:!0,children:n("button",{type:"button",role:"combobox","aria-expanded":v,disabled:X,className:b("cursor-pointer flex h-9 items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50",!t&&"my-2 w-full",t&&"w-auto gap-2",!i&&!s.length&&"text-secondary-text",j&&"border-destructive-foreground focus-visible:ring-destructive-foreground",t&&"bg-muted text-primary-accent hover:bg-muted/20 border-muted",$),children:[t&&o(U,{className:"h-4 w-4 shrink-0"}),o("span",{className:"truncate",children:F()}),!t&&o(Q,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o(S,{className:"overflow-hidden rounded-xl p-0",align:"start",style:t?{minWidth:200}:{width:"var(--radix-popover-trigger-width)"},children:n(M,{children:[A&&o(G,{placeholder:L}),n(R,{children:[o(E,{children:W}),l?n(V,{children:[w(),l.map(e=>o(f,{heading:e.label,children:e.options.map(N)},e.label))]}):n(f,{children:[w(),m.map(N)]})]})]})})]});return t?n("div",{className:"flex flex-wrap items-center gap-2",children:[k,H()]}):k}export{oe as a};
|
|
3
|
+
//# sourceMappingURL=chunk-XSJKREFJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/combobox.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Check, ChevronDown, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/command\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/popover\"\n\nexport interface ComboboxOption {\n value: string\n label: string\n color?: string\n}\n\nexport interface ComboboxGroup {\n label: string\n options: ComboboxOption[]\n}\n\nexport interface ComboboxProps {\n options?: ComboboxOption[]\n groups?: ComboboxGroup[]\n value?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n error?: boolean\n multiple?: boolean\n values?: string[]\n onValuesChange?: (values: string[]) => void\n variant?: \"default\" | \"metrics\"\n searchable?: boolean\n}\n\nexport function Combobox({\n options = [],\n groups,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n disabled = false,\n className,\n error = false,\n multiple = false,\n values = [],\n onValuesChange,\n variant = \"default\",\n searchable = true,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false)\n const isMetrics = variant === \"metrics\"\n const effectiveMultiple = isMetrics ? true : multiple\n\n const allOptions = React.useMemo(() => {\n if (groups) return groups.flatMap((g) => g.options)\n return options\n }, [groups, options])\n\n const selectedOption = allOptions.find((option) => option.value === value)\n const selectedOptions = allOptions.filter((option) =>\n values.includes(option.value)\n )\n\n const handleSelect = (currentValue: string) => {\n if (effectiveMultiple) {\n const newValues = values.includes(currentValue)\n ? values.filter((v) => v !== currentValue)\n : [...values, currentValue]\n onValuesChange?.(newValues)\n } else {\n onValueChange?.(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }\n }\n\n const handleRemoveValue = (valueToRemove: string, e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n const newValues = values.filter((v) => v !== valueToRemove)\n onValuesChange?.(newValues)\n }\n\n const getDisplayText = () => {\n if (isMetrics) return placeholder\n if (effectiveMultiple) {\n if (selectedOptions.length === 0) return placeholder\n if (selectedOptions.length === 1) return selectedOptions[0].label\n return `${selectedOptions.length} selected`\n }\n return selectedOption ? selectedOption.label : placeholder\n }\n\n const renderOption = (option: ComboboxOption) => {\n const isSelected = effectiveMultiple\n ? values.includes(option.value)\n : value === option.value\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={handleSelect}\n className=\"rounded-[12px]\"\n >\n <span className=\"truncate\">{option.label}</span>\n <Check\n className={cn(\n \"ml-auto h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n )\n }\n\n const renderSelectedChips = () => {\n if (isMetrics || !effectiveMultiple || selectedOptions.length === 0)\n return null\n\n return (\n <div className=\"px-2 py-1.5\">\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <div\n key={option.value}\n className=\"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs\"\n >\n <span className=\"truncate\">{option.label}</span>\n <X\n className=\"h-3 w-3 cursor-pointer\"\n onClick={(e) => handleRemoveValue(option.value, e)}\n />\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n const renderExternalChips = () => {\n if (!isMetrics || selectedOptions.length === 0) return null\n\n return selectedOptions.map((option) => (\n <div\n key={option.value}\n className=\"inline-flex items-center gap-2 rounded-3xl border bg-transparent px-3 py-1.5 text-sm\"\n style={{ borderColor: option.color || \"var(--border)\" }}\n >\n <span className=\"truncate\" style={{ color: option.color }}>\n {option.label}\n </span>\n <X\n className=\"h-3.5 w-3.5 cursor-pointer opacity-70 hover:opacity-100\"\n style={{ color: option.color }}\n onClick={(e) => handleRemoveValue(option.value, e)}\n />\n </div>\n ))\n }\n\n const popover = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\n \"cursor-pointer flex h-9 items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50\",\n !isMetrics && \"my-2 w-full\",\n isMetrics && \"w-auto gap-2\",\n !value && !values.length && \"text-secondary-text\",\n error &&\n \"border-destructive-foreground focus-visible:ring-destructive-foreground\",\n isMetrics &&\n \"bg-muted text-primary-accent hover:bg-muted/20 border-muted\",\n className\n )}\n >\n {isMetrics && <Plus className=\"h-4 w-4 shrink-0\" />}\n <span className=\"truncate\">{getDisplayText()}</span>\n {!isMetrics && (\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"overflow-hidden rounded-xl p-0\"\n align=\"start\"\n style={\n isMetrics\n ? { minWidth: 200 }\n : { width: \"var(--radix-popover-trigger-width)\" }\n }\n >\n <Command>\n {searchable && <CommandInput placeholder={searchPlaceholder} />}\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {groups ? (\n <>\n {renderSelectedChips()}\n {groups.map((group) => (\n <CommandGroup key={group.label} heading={group.label}>\n {group.options.map(renderOption)}\n </CommandGroup>\n ))}\n </>\n ) : (\n <CommandGroup>\n {renderSelectedChips()}\n {options.map(renderOption)}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n\n if (isMetrics) {\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {popover}\n {renderExternalChips()}\n </div>\n )\n }\n\n return popover\n}\n"],"mappings":"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","names":["React","Check","ChevronDown","Plus","X","Fragment","jsx","jsxs","Combobox","options","groups","value","onValueChange","placeholder","searchPlaceholder","emptyMessage","disabled","className","error","multiple","values","onValuesChange","variant","searchable","open","setOpen","isMetrics","effectiveMultiple","allOptions","g","selectedOption","option","selectedOptions","handleSelect","currentValue","newValues","v","handleRemoveValue","valueToRemove","e","getDisplayText","renderOption","isSelected","CommandItem","Check","cn","renderSelectedChips","X","renderExternalChips","popover","Popover","PopoverTrigger","Plus","ChevronDown","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","group","CommandGroup"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-XYO4VLMF.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-XYO4VLMF.js"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as t}from"./chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as t}from"./chunk-S5TKCF6T.mjs";import*as e from"react";import*as o from"@radix-ui/react-separator";import{jsx as l}from"react/jsx-runtime";var f=e.forwardRef(({className:a,orientation:r="horizontal",decorative:i=!0,...p},m)=>l(o.Root,{ref:m,decorative:i,orientation:r,className:t("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...p}));f.displayName=o.Root.displayName;export{f as a};
|
|
3
|
+
//# sourceMappingURL=chunk-YBV4CPVD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/separator.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n"],"mappings":";yCAEA,UAAYA,MAAW,QACvB,UAAYC,MAAwB,4BAYhC,cAAAC,MAAA,oBARJ,IAAMC,EAAkB,aAItB,CACE,CAAE,UAAAC,EAAW,YAAAC,EAAc,aAAc,WAAAC,EAAa,GAAM,GAAGC,CAAM,EACrEC,IAEAN,EAAoB,OAAnB,CACC,IAAKM,EACL,WAAYF,EACZ,YAAaD,EACb,UAAWI,EACT,qBACAJ,IAAgB,aAAe,iBAAmB,iBAClDD,CACF,EACC,GAAGG,EACN,CAEJ,EACAJ,EAAU,YAAiC,OAAK","names":["React","SeparatorPrimitive","jsx","Separator","className","orientation","decorative","props","ref","cn"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
var _chunkULIOO55Ijs = require('./chunk-ULIOO55I.js');var _chunk7J2ETVGKjs = require('./chunk-7J2ETVGK.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var d = _interopRequireWildcard(_react);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');function oe({options:m=[],groups:l,value:i,onValueChange:T,placeholder:p="Select option...",searchPlaceholder:L="Search...",emptyMessage:W="No option found.",disabled:X=!1,className:$,error:j=!1,multiple:q=!1,values:s=[],onValuesChange:g,variant:z="default",searchable:A=!0}){let[v,x]=d.useState(!1),t=z==="metrics",c=t?!0:q,h=d.useMemo(()=>l?l.flatMap(e=>e.options):m,[l,m]),C=h.find(e=>e.value===i),a=h.filter(e=>s.includes(e.value)),B=e=>{if(c){let r=s.includes(e)?s.filter(u=>u!==e):[...s,e];_optionalChain([g, 'optionalCall', _ => _(r)])}else _optionalChain([T, 'optionalCall', _2 => _2(e===i?"":e)]),x(!1)},y=(e,r)=>{r.preventDefault(),r.stopPropagation();let u=s.filter(J=>J!==e);_optionalChain([g, 'optionalCall', _3 => _3(u)])},F=()=>t?p:c?a.length===0?p:a.length===1?a[0].label:`${a.length} selected`:C?C.label:p,N=e=>{let r=c?s.includes(e.value):i===e.value;return _jsxruntime.jsxs.call(void 0, _chunk7J2ETVGKjs.h,{value:e.value,onSelect:B,className:"rounded-[12px]",children:[_jsxruntime.jsx.call(void 0, "span",{className:"truncate",children:e.label}),_jsxruntime.jsx.call(void 0, _lucidereact.Check,{className:_chunkFUYXCJOQjs.a.call(void 0, "ml-auto h-4 w-4 shrink-0",r?"opacity-100":"opacity-0")})]},e.value)},w=()=>t||!c||a.length===0?null:_jsxruntime.jsx.call(void 0, "div",{className:"px-2 py-1.5",children:_jsxruntime.jsx.call(void 0, "div",{className:"flex flex-wrap gap-1",children:a.map(e=>_jsxruntime.jsxs.call(void 0, "div",{className:"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs",children:[_jsxruntime.jsx.call(void 0, "span",{className:"truncate",children:e.label}),_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-3 w-3 cursor-pointer",onClick:r=>y(e.value,r)})]},e.value))})}),H=()=>!t||a.length===0?null:a.map(e=>_jsxruntime.jsxs.call(void 0, "div",{className:"inline-flex items-center gap-2 rounded-3xl border bg-transparent px-3 py-1.5 text-sm",style:{borderColor:e.color||"var(--border)"},children:[_jsxruntime.jsx.call(void 0, "span",{className:"truncate",style:{color:e.color},children:e.label}),_jsxruntime.jsx.call(void 0, _lucidereact.X,{className:"h-3.5 w-3.5 cursor-pointer opacity-70 hover:opacity-100",style:{color:e.color},onClick:r=>y(e.value,r)})]},e.value)),k=_jsxruntime.jsxs.call(void 0, _chunkULIOO55Ijs.a,{open:v,onOpenChange:x,children:[_jsxruntime.jsx.call(void 0, _chunkULIOO55Ijs.b,{asChild:!0,children:_jsxruntime.jsxs.call(void 0, "button",{type:"button",role:"combobox","aria-expanded":v,disabled:X,className:_chunkFUYXCJOQjs.a.call(void 0, "cursor-pointer flex h-9 items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50",!t&&"my-2 w-full",t&&"w-auto gap-2",!i&&!s.length&&"text-secondary-text",j&&"border-destructive-foreground focus-visible:ring-destructive-foreground",t&&"bg-muted text-primary-accent hover:bg-muted/20 border-muted",$),children:[t&&_jsxruntime.jsx.call(void 0, _lucidereact.Plus,{className:"h-4 w-4 shrink-0"}),_jsxruntime.jsx.call(void 0, "span",{className:"truncate",children:F()}),!t&&_jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),_jsxruntime.jsx.call(void 0, _chunkULIOO55Ijs.c,{className:"overflow-hidden rounded-xl p-0",align:"start",style:t?{minWidth:200}:{width:"var(--radix-popover-trigger-width)"},children:_jsxruntime.jsxs.call(void 0, _chunk7J2ETVGKjs.a,{children:[A&&_jsxruntime.jsx.call(void 0, _chunk7J2ETVGKjs.c,{placeholder:L}),_jsxruntime.jsxs.call(void 0, _chunk7J2ETVGKjs.d,{children:[_jsxruntime.jsx.call(void 0, _chunk7J2ETVGKjs.e,{children:W}),l?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[w(),l.map(e=>_jsxruntime.jsx.call(void 0, _chunk7J2ETVGKjs.f,{heading:e.label,children:e.options.map(N)},e.label))]}):_jsxruntime.jsxs.call(void 0, _chunk7J2ETVGKjs.f,{children:[w(),m.map(N)]})]})]})})]});return t?_jsxruntime.jsxs.call(void 0, "div",{className:"flex flex-wrap items-center gap-2",children:[k,H()]}):k}exports.a = oe;
|
|
3
|
+
//# sourceMappingURL=chunk-YKXP3INY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-YKXP3INY.js","../src/components/combobox.tsx"],"names":["Combobox","options","groups","value","onValueChange","placeholder","searchPlaceholder","emptyMessage","disabled","className","error","multiple","values","onValuesChange","variant","searchable","open","setOpen","isMetrics","effectiveMultiple","allOptions","g","selectedOption","option","selectedOptions","handleSelect","currentValue","newValues","v","handleRemoveValue","valueToRemove","e","getDisplayText"],"mappings":"AAAA,22BAAY;AACZ,sDAAqD,sDAAsE,sDAAwC,uECD5I,2CACqB,+CA4GtC,SAlEUA,EAAAA,CAAS,CACvB,OAAA,CAAAC,CAAAA,CAAU,CAAC,CAAA,CACX,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CAAc,kBAAA,CACd,iBAAA,CAAAC,CAAAA,CAAoB,WAAA,CACpB,YAAA,CAAAC,CAAAA,CAAe,kBAAA,CACf,QAAA,CAAAC,CAAAA,CAAW,CAAA,CAAA,CACX,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,CAAA,CAAA,CACX,MAAA,CAAAC,CAAAA,CAAS,CAAC,CAAA,CACV,cAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,UAAA,CAAAC,CAAAA,CAAa,CAAA,CACf,CAAA,CAAkB,CAChB,GAAM,CAACC,CAAAA,CAAMC,CAAO,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CACtCC,CAAAA,CAAYJ,CAAAA,GAAY,SAAA,CACxBK,CAAAA,CAAoBD,CAAAA,CAAY,CAAA,CAAA,CAAOP,CAAAA,CAEvCS,CAAAA,CAAmB,CAAA,CAAA,OAAA,CAAQ,CAAA,CAAA,EAC3BlB,CAAAA,CAAeA,CAAAA,CAAO,OAAA,CAASmB,CAAAA,EAAMA,CAAAA,CAAE,OAAO,CAAA,CAC3CpB,CAAAA,CACN,CAACC,CAAAA,CAAQD,CAAO,CAAC,CAAA,CAEdqB,CAAAA,CAAiBF,CAAAA,CAAW,IAAA,CAAMG,CAAAA,EAAWA,CAAAA,CAAO,KAAA,GAAUpB,CAAK,CAAA,CACnEqB,CAAAA,CAAkBJ,CAAAA,CAAW,MAAA,CAAQG,CAAAA,EACzCX,CAAAA,CAAO,QAAA,CAASW,CAAAA,CAAO,KAAK,CAC9B,CAAA,CAEME,CAAAA,CAAgBC,CAAAA,EAAyB,CAC7C,EAAA,CAAIP,CAAAA,CAAmB,CACrB,IAAMQ,CAAAA,CAAYf,CAAAA,CAAO,QAAA,CAASc,CAAY,CAAA,CAC1Cd,CAAAA,CAAO,MAAA,CAAQgB,CAAAA,EAAMA,CAAAA,GAAMF,CAAY,CAAA,CACvC,CAAC,GAAGd,CAAAA,CAAQc,CAAY,CAAA,iBAC5Bb,CAAAA,wBAAAA,CAAiBc,CAAS,GAC5B,CAAA,qBACEvB,CAAAA,0BAAAA,CAAgBsB,CAAAA,GAAiBvB,CAAAA,CAAQ,EAAA,CAAKuB,CAAY,GAAA,CAC1DT,CAAAA,CAAQ,CAAA,CAAK,CAEjB,CAAA,CAEMY,CAAAA,CAAoB,CAACC,CAAAA,CAAuBC,CAAAA,CAAAA,EAAwB,CACxEA,CAAAA,CAAE,cAAA,CAAe,CAAA,CACjBA,CAAAA,CAAE,eAAA,CAAgB,CAAA,CAClB,IAAMJ,CAAAA,CAAYf,CAAAA,CAAO,MAAA,CAAQgB,CAAAA,EAAMA,CAAAA,GAAME,CAAa,CAAA,iBAC1DjB,CAAAA,0BAAAA,CAAiBc,CAAS,GAC5B,CAAA,CAEMK,CAAAA,CAAiB,CAAA,CAAA,EACjBd,CAAAA,CAAkBb,CAAAA,CAClBc,CAAAA,CACEK,CAAAA,CAAgB,MAAA,GAAW,CAAA,CAAUnB,CAAAA,CACrCmB,CAAAA,CAAgB,MAAA,GAAW,CAAA,CAAUA,CAAAA,CAAgB,CAAC,CAAA,CAAE,KAAA,CACrD,CAAA,EAAA","file":"/Users/aktoriukas/Documents/Projects/alkimi/alkimi-ui-kit/dist/chunk-YKXP3INY.js","sourcesContent":[null,"import * as React from \"react\"\nimport { Check, ChevronDown, Plus, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/command\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/popover\"\n\nexport interface ComboboxOption {\n value: string\n label: string\n color?: string\n}\n\nexport interface ComboboxGroup {\n label: string\n options: ComboboxOption[]\n}\n\nexport interface ComboboxProps {\n options?: ComboboxOption[]\n groups?: ComboboxGroup[]\n value?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n error?: boolean\n multiple?: boolean\n values?: string[]\n onValuesChange?: (values: string[]) => void\n variant?: \"default\" | \"metrics\"\n searchable?: boolean\n}\n\nexport function Combobox({\n options = [],\n groups,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n disabled = false,\n className,\n error = false,\n multiple = false,\n values = [],\n onValuesChange,\n variant = \"default\",\n searchable = true,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false)\n const isMetrics = variant === \"metrics\"\n const effectiveMultiple = isMetrics ? true : multiple\n\n const allOptions = React.useMemo(() => {\n if (groups) return groups.flatMap((g) => g.options)\n return options\n }, [groups, options])\n\n const selectedOption = allOptions.find((option) => option.value === value)\n const selectedOptions = allOptions.filter((option) =>\n values.includes(option.value)\n )\n\n const handleSelect = (currentValue: string) => {\n if (effectiveMultiple) {\n const newValues = values.includes(currentValue)\n ? values.filter((v) => v !== currentValue)\n : [...values, currentValue]\n onValuesChange?.(newValues)\n } else {\n onValueChange?.(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }\n }\n\n const handleRemoveValue = (valueToRemove: string, e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n const newValues = values.filter((v) => v !== valueToRemove)\n onValuesChange?.(newValues)\n }\n\n const getDisplayText = () => {\n if (isMetrics) return placeholder\n if (effectiveMultiple) {\n if (selectedOptions.length === 0) return placeholder\n if (selectedOptions.length === 1) return selectedOptions[0].label\n return `${selectedOptions.length} selected`\n }\n return selectedOption ? selectedOption.label : placeholder\n }\n\n const renderOption = (option: ComboboxOption) => {\n const isSelected = effectiveMultiple\n ? values.includes(option.value)\n : value === option.value\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={handleSelect}\n className=\"rounded-[12px]\"\n >\n <span className=\"truncate\">{option.label}</span>\n <Check\n className={cn(\n \"ml-auto h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n )\n }\n\n const renderSelectedChips = () => {\n if (isMetrics || !effectiveMultiple || selectedOptions.length === 0)\n return null\n\n return (\n <div className=\"px-2 py-1.5\">\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <div\n key={option.value}\n className=\"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs\"\n >\n <span className=\"truncate\">{option.label}</span>\n <X\n className=\"h-3 w-3 cursor-pointer\"\n onClick={(e) => handleRemoveValue(option.value, e)}\n />\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n const renderExternalChips = () => {\n if (!isMetrics || selectedOptions.length === 0) return null\n\n return selectedOptions.map((option) => (\n <div\n key={option.value}\n className=\"inline-flex items-center gap-2 rounded-3xl border bg-transparent px-3 py-1.5 text-sm\"\n style={{ borderColor: option.color || \"var(--border)\" }}\n >\n <span className=\"truncate\" style={{ color: option.color }}>\n {option.label}\n </span>\n <X\n className=\"h-3.5 w-3.5 cursor-pointer opacity-70 hover:opacity-100\"\n style={{ color: option.color }}\n onClick={(e) => handleRemoveValue(option.value, e)}\n />\n </div>\n ))\n }\n\n const popover = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\n \"cursor-pointer flex h-9 items-center justify-between rounded-3xl border border-border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 active:opacity-50 disabled:cursor-not-allowed disabled:opacity-50\",\n !isMetrics && \"my-2 w-full\",\n isMetrics && \"w-auto gap-2\",\n !value && !values.length && \"text-secondary-text\",\n error &&\n \"border-destructive-foreground focus-visible:ring-destructive-foreground\",\n isMetrics &&\n \"bg-muted text-primary-accent hover:bg-muted/20 border-muted\",\n className\n )}\n >\n {isMetrics && <Plus className=\"h-4 w-4 shrink-0\" />}\n <span className=\"truncate\">{getDisplayText()}</span>\n {!isMetrics && (\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"overflow-hidden rounded-xl p-0\"\n align=\"start\"\n style={\n isMetrics\n ? { minWidth: 200 }\n : { width: \"var(--radix-popover-trigger-width)\" }\n }\n >\n <Command>\n {searchable && <CommandInput placeholder={searchPlaceholder} />}\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {groups ? (\n <>\n {renderSelectedChips()}\n {groups.map((group) => (\n <CommandGroup key={group.label} heading={group.label}>\n {group.options.map(renderOption)}\n </CommandGroup>\n ))}\n </>\n ) : (\n <CommandGroup>\n {renderSelectedChips()}\n {options.map(renderOption)}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n\n if (isMetrics) {\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {popover}\n {renderExternalChips()}\n </div>\n )\n }\n\n return popover\n}\n"]}
|