@alkimi.org/ui-kit 0.9.10 → 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-B4YKLEVL.mjs → chunk-4PTRLHCB.mjs} +2 -2
- package/dist/chunk-4PTRLHCB.mjs.map +1 -0
- package/dist/{chunk-ZWYGJJTH.mjs → chunk-574USYNO.mjs} +2 -2
- 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-SOZAPZ65.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-VNPIYQD6.mjs → chunk-7Y3KH5OM.mjs} +1 -1
- 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-IUCIWRTI.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-QJ7457IP.js → chunk-DIKQRVZO.js} +1 -1
- 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-TOTBP4CJ.js → chunk-EIM5R7AJ.js} +2 -2
- 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-SKA5YFCS.mjs → chunk-IKJ4QRNB.mjs} +2 -2
- 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-IOHKGN45.js → chunk-LQMOWEA7.js} +2 -2
- 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-N4LDE7DZ.mjs → chunk-NKELJSLY.mjs} +2 -2
- package/dist/chunk-NKELJSLY.mjs.map +1 -0
- package/dist/{chunk-DP2FXFMQ.mjs → chunk-NKLBPY3T.mjs} +2 -2
- package/dist/chunk-NKLBPY3T.mjs.map +1 -0
- package/dist/{chunk-JNK2KBEK.mjs → chunk-PD43W3YN.mjs} +2 -2
- 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-JVQJZ5HP.js → chunk-UJZP6L4S.js} +2 -2
- 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-MKLABTST.js → chunk-USPGZYMV.js} +2 -2
- package/dist/chunk-USPGZYMV.js.map +1 -0
- package/dist/{chunk-K5ARCQIP.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-SUZ2FZQ2.js → chunk-WYRD4UAK.js} +2 -2
- package/dist/chunk-WYRD4UAK.js.map +1 -0
- package/dist/{chunk-ZX7652AR.mjs → chunk-WZ5F5VT3.mjs} +2 -2
- 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-IFS4OO3L.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-2RQVAC3C.mjs +0 -3
- package/dist/chunk-2RQVAC3C.mjs.map +0 -1
- package/dist/chunk-36L2E4K7.mjs.map +0 -1
- package/dist/chunk-4PODZIEU.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-AHQNHOS2.js.map +0 -1
- package/dist/chunk-AJM7GGVC.mjs.map +0 -1
- package/dist/chunk-B4YKLEVL.mjs.map +0 -1
- package/dist/chunk-BUS3E5OY.js.map +0 -1
- package/dist/chunk-CA75YECJ.mjs.map +0 -1
- package/dist/chunk-CVGE3ROD.js.map +0 -1
- package/dist/chunk-DEGPIR53.js.map +0 -1
- package/dist/chunk-DP2FXFMQ.mjs.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-HV2SGTFQ.mjs.map +0 -1
- package/dist/chunk-IFNCRMNZ.js.map +0 -1
- package/dist/chunk-IFS4OO3L.js.map +0 -1
- package/dist/chunk-INXG2ITG.js.map +0 -1
- package/dist/chunk-IOHKGN45.js.map +0 -1
- package/dist/chunk-IUCIWRTI.mjs.map +0 -1
- package/dist/chunk-JNK2KBEK.mjs.map +0 -1
- package/dist/chunk-JVQJZ5HP.js.map +0 -1
- package/dist/chunk-K5ARCQIP.js.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-LNIGQUON.mjs.map +0 -1
- package/dist/chunk-M2PMK5S2.js +0 -3
- package/dist/chunk-M2PMK5S2.js.map +0 -1
- package/dist/chunk-MKLABTST.js.map +0 -1
- package/dist/chunk-N3ZLPC5C.mjs.map +0 -1
- package/dist/chunk-N4LDE7DZ.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-QJ7457IP.js.map +0 -1
- package/dist/chunk-QP7CDVWG.js.map +0 -1
- package/dist/chunk-S7CZVGW7.js.map +0 -1
- package/dist/chunk-SKA5YFCS.mjs.map +0 -1
- package/dist/chunk-SN3YJA4C.js.map +0 -1
- package/dist/chunk-SOZAPZ65.js.map +0 -1
- package/dist/chunk-SUZ2FZQ2.js.map +0 -1
- package/dist/chunk-TLGEA7LM.js.map +0 -1
- package/dist/chunk-TOTBP4CJ.js.map +0 -1
- package/dist/chunk-UAJUT7B7.js.map +0 -1
- package/dist/chunk-VBARF35N.js.map +0 -1
- package/dist/chunk-VNPIYQD6.mjs.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-XNLDCAFS.js.map +0 -1
- package/dist/chunk-XQS62AJH.mjs.map +0 -1
- package/dist/chunk-YK3UJT7O.mjs.map +0 -1
- package/dist/chunk-ZWYGJJTH.mjs.map +0 -1
- package/dist/chunk-ZX7652AR.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/input.tsx"],"sourcesContent":["import * as React from \"react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n error?: boolean\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type, error, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(\r\n \"flex my-2 h-9 w-full rounded-3xl border bg-background hover:bg-secondary px-4 py-2 text-sm text-primary-accent ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-secondary-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n error\r\n ? \"border-destructive-foreground focus-visible:ring-destructive-foreground\"\r\n : \"border-border\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nInput.displayName = \"Input\"\r\n\r\nexport { Input }\r\n"],"mappings":";yCAAA,UAAYA,MAAW,QAWjB,cAAAC,MAAA,oBAHN,IAAMC,EAAc,aAClB,CAAC,CAAE,UAAAC,EAAW,KAAAC,EAAM,MAAAC,EAAO,GAAGC,CAAM,EAAGC,IAEnCN,EAAC,SACC,KAAMG,EACN,UAAWI,EACT,4XACAH,EACI,0EACA,gBACJF,CACF,EACA,IAAKI,EACJ,GAAGD,EACN,CAGN,EACAJ,EAAM,YAAc","names":["React","jsx","Input","className","type","error","props","ref","cn"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialog.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { Drawer as DrawerPrimitive } from \"vaul\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"./button\"\r\nimport { useMediaQuery } from \"@/lib/use-media-query\"\r\n\r\ninterface DialogContentContextValue {\r\n open?: boolean\r\n onOpenChange?: (open: boolean) => void\r\n}\r\n\r\nconst DialogContentContext = React.createContext<DialogContentContextValue>({})\r\n\r\nconst Dialog = ({\r\n children,\r\n open: controlledOpen,\r\n onOpenChange: controlledOnOpenChange,\r\n ...props\r\n}: React.ComponentProps<typeof DialogPrimitive.Root>) => {\r\n // Use internal state when Dialog is uncontrolled\r\n const [internalOpen, setInternalOpen] = React.useState(false)\r\n\r\n const isControlled = controlledOpen !== undefined\r\n const open = isControlled ? controlledOpen : internalOpen\r\n const onOpenChange = isControlled\r\n ? controlledOnOpenChange\r\n : (newOpen: boolean) => {\r\n setInternalOpen(newOpen)\r\n }\r\n\r\n return (\r\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange} {...props}>\r\n <DialogContentContext.Provider value={{ open, onOpenChange }}>\r\n {children}\r\n </DialogContentContext.Provider>\r\n </DialogPrimitive.Root>\r\n )\r\n}\r\nDialog.displayName = \"Dialog\"\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\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\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\r\n showCloseButton?: boolean\r\n closeOnOverlayClick?: boolean\r\n }\r\n>(\r\n (\r\n {\r\n className,\r\n children,\r\n showCloseButton = true,\r\n closeOnOverlayClick = true,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const isDesktop = useMediaQuery(\"md\")\r\n const context = React.useContext(DialogContentContext)\r\n\r\n if (!isDesktop) {\r\n // Mobile: Render as bottom drawer\r\n return (\r\n <DialogPortal>\r\n <DrawerPrimitive.Root\r\n open={context.open}\r\n onOpenChange={context.onOpenChange}\r\n dismissible={closeOnOverlayClick}\r\n >\r\n <DrawerPrimitive.Portal>\r\n <DrawerPrimitive.Overlay className=\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\" />\r\n <DrawerPrimitive.Content\r\n ref={ref as any}\r\n className={cn(\r\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex flex-col rounded-t-3xl border border-border bg-background shadow-lg outline-none\",\r\n className\r\n )}\r\n aria-describedby={undefined}\r\n onPointerDownOutside={(e) => {\r\n if (!closeOnOverlayClick) {\r\n e.preventDefault()\r\n }\r\n }}\r\n onEscapeKeyDown={(e) => {\r\n if (!closeOnOverlayClick) {\r\n e.preventDefault()\r\n }\r\n }}\r\n {...props}\r\n >\r\n <div className=\"mx-auto mt-2 h-2 w-[100px] rounded-full bg-muted\" />\r\n {showCloseButton && (\r\n <Button\r\n variant=\"secondary\"\r\n size=\"icon\"\r\n onClick={() => context.onOpenChange?.(false)}\r\n className=\"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </Button>\r\n )}\r\n <div>{children}</div>\r\n </DrawerPrimitive.Content>\r\n </DrawerPrimitive.Portal>\r\n </DrawerPrimitive.Root>\r\n </DialogPortal>\r\n )\r\n }\r\n\r\n // Desktop: Render as centered dialog\r\n return (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-3xl overflow-auto\",\r\n className\r\n )}\r\n onPointerDownOutside={(e) => {\r\n if (!closeOnOverlayClick) {\r\n e.preventDefault()\r\n }\r\n }}\r\n onEscapeKeyDown={(e) => {\r\n if (!closeOnOverlayClick) {\r\n e.preventDefault()\r\n }\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n {showCloseButton && (\r\n <DialogPrimitive.Close asChild>\r\n <Button\r\n variant=\"secondary\"\r\n size=\"icon\"\r\n className=\"absolute right-4 top-4 rounded-full transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </Button>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n )\r\n }\r\n)\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-left md:text-center\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n"],"mappings":"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","names":["React","DialogPrimitive","DrawerPrimitive","X","jsx","jsxs","DialogContentContext","Dialog","children","controlledOpen","controlledOnOpenChange","props","internalOpen","setInternalOpen","isControlled","open","onOpenChange","newOpen","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","ref","cn","DialogContent","showCloseButton","closeOnOverlayClick","isDesktop","useMediaQuery","context","e","Button","X","DrawerPrimitive","DialogHeader","DialogFooter","DialogTitle","DialogDescription"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\r\n\r\nfunction Skeleton({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div\r\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Skeleton }\r\n"],"mappings":";yCAOI,cAAAA,MAAA,oBALJ,SAASC,EAAS,CAChB,UAAAC,EACA,GAAGC,CACL,EAAyC,CACvC,OACEH,EAAC,OACC,UAAWI,EAAG,oCAAqCF,CAAS,EAC3D,GAAGC,EACN,CAEJ","names":["jsx","Skeleton","className","props","cn"]}
|
package/dist/chunk-WMHK5YWO.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
-
var _chunkVBARF35Njs = require('./chunk-VBARF35N.js');var _jsxruntime = require('react/jsx-runtime');function d({className:t,...n}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkVBARF35Njs.a.call(void 0, "animate-pulse rounded-md bg-muted",t),...n})}exports.a = d;
|
|
3
|
-
//# sourceMappingURL=chunk-WMHK5YWO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["c:\\Users\\Dell\\Documents\\NextJS\\alkimi-ui-kit\\dist\\chunk-WMHK5YWO.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,+CAAwC,SAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,6BAAC,KAAM,CAAC,CAAC,SAAS,CAAC,gCAAC,mCAAoC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc","file":"C:\\Users\\Dell\\Documents\\NextJS\\alkimi-ui-kit\\dist\\chunk-WMHK5YWO.js","sourcesContent":[null]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["c:\\Users\\Dell\\Documents\\NextJS\\alkimi-ui-kit\\dist\\chunk-XNLDCAFS.js"],"names":[],"mappings":"AAAA,uWAAY;AACZ,uEAAuB,IAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc","file":"C:\\Users\\Dell\\Documents\\NextJS\\alkimi-ui-kit\\dist\\chunk-XNLDCAFS.js","sourcesContent":[null]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/field.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nconst Field = React.forwardRef<HTMLDivElement, FieldProps>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\r\n )\r\n)\r\nField.displayName = \"Field\"\r\n\r\nexport interface FieldLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\r\n\r\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\r\n ({ className, ...props }, ref) => (\r\n <label\r\n ref={ref}\r\n className={cn(\r\n \"text-sm font-medium leading-none text-primary-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nFieldLabel.displayName = \"FieldLabel\"\r\n\r\nexport interface FieldDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {\r\n error?: boolean\r\n}\r\n\r\nconst FieldDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n FieldDescriptionProps\r\n>(({ className, error, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\r\n \"text-sm\",\r\n error ? \"text-destructive-foreground\" : \"text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nFieldDescription.displayName = \"FieldDescription\"\r\n\r\nexport { Field, FieldLabel, FieldDescription }\r\n"],"mappings":";oCAEA,UAAYA,MAAW,QAOnB,cAAAC,MAAA,oBAFJ,IAAMC,EAAc,aAClB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,IACxBJ,EAAC,OAAI,IAAKI,EAAK,UAAWC,EAAG,YAAaH,CAAS,EAAI,GAAGC,EAAO,CAErE,EACAF,EAAM,YAAc,QAIpB,IAAMK,EAAmB,aACvB,CAAC,CAAE,UAAAJ,EAAW,GAAGC,CAAM,EAAGC,IACxBJ,EAAC,SACC,IAAKI,EACL,UAAWC,EACT,iHACAH,CACF,EACC,GAAGC,EACN,CAEJ,EACAG,EAAW,YAAc,aAMzB,IAAMC,EAAyB,aAG7B,CAAC,CAAE,UAAAL,EAAW,MAAAM,EAAO,GAAGL,CAAM,EAAGC,IACjCJ,EAAC,KACC,IAAKI,EACL,UAAWC,EACT,UACAG,EAAQ,8BAAgC,wBACxCN,CACF,EACC,GAAGC,EACN,CACD,EACDI,EAAiB,YAAc","names":["React","jsx","Field","className","props","ref","cn","FieldLabel","FieldDescription","error"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/scroll-area.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ComponentRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden\", className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n))\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ComponentRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" &&\r\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" &&\r\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-muted/40\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n))\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\r\n\r\nexport { ScrollArea, ScrollBar }\r\n"],"mappings":";yCAEA,UAAYA,MAAW,QACvB,UAAYC,MAAyB,8BAQnC,OAKE,OAAAC,EALF,QAAAC,MAAA,oBAJF,IAAMC,EAAmB,aAGvB,CAAC,CAAE,UAAAC,EAAW,SAAAC,EAAU,GAAGC,CAAM,EAAGC,IACpCL,EAAqB,OAApB,CACC,IAAKK,EACL,UAAWC,EAAG,2BAA4BJ,CAAS,EAClD,GAAGE,EAEJ,UAAAL,EAAqB,WAApB,CAA6B,UAAU,kCACrC,SAAAI,EACH,EACAJ,EAACQ,EAAA,EAAU,EACXR,EAAqB,SAApB,EAA2B,GAC9B,CACD,EACDE,EAAW,YAAkC,OAAK,YAElD,IAAMM,EAAkB,aAGtB,CAAC,CAAE,UAAAL,EAAW,YAAAM,EAAc,WAAY,GAAGJ,CAAM,EAAGC,IACpDN,EAAqB,sBAApB,CACC,IAAKM,EACL,YAAaG,EACb,UAAWF,EACT,gDACAE,IAAgB,YACd,qDACFA,IAAgB,cACd,uDACFN,CACF,EACC,GAAGE,EAEJ,SAAAL,EAAqB,kBAApB,CAAoC,UAAU,2CAA2C,EAC5F,CACD,EACDQ,EAAU,YAAkC,sBAAoB","names":["React","ScrollAreaPrimitive","jsx","jsxs","ScrollArea","className","children","props","ref","cn","ScrollBar","orientation"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/tree-select.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { Check, ChevronDown, ChevronRight, Search, X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Checkbox } from \"@/components/checkbox\"\r\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/popover\"\r\n\r\n// --- Public types ---\r\n\r\nexport interface TreeSelectNode {\r\n value: string\r\n label: string\r\n children?: TreeSelectNode[]\r\n}\r\n\r\nexport interface TreeSelectProps {\r\n nodes: TreeSelectNode[]\r\n value?: string\r\n onValueChange?: (value: string) => void\r\n multiple?: boolean\r\n values?: string[]\r\n onValuesChange?: (values: string[]) => void\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n emptyMessage?: string\r\n disabled?: boolean\r\n className?: string\r\n error?: boolean\r\n defaultExpandedValues?: string[]\r\n expandAll?: boolean\r\n}\r\n\r\n// --- Internal types ---\r\n\r\ntype CheckState = \"checked\" | \"indeterminate\" | \"unchecked\"\r\n\r\n// --- Utility functions ---\r\n\r\nfunction getAllDescendantValues(node: TreeSelectNode): string[] {\r\n const values: string[] = [node.value]\r\n if (node.children) {\r\n for (const child of node.children) {\r\n values.push(...getAllDescendantValues(child))\r\n }\r\n }\r\n return values\r\n}\r\n\r\nfunction getCheckState(\r\n node: TreeSelectNode,\r\n selectedSet: Set<string>\r\n): CheckState {\r\n if (!node.children || node.children.length === 0) {\r\n return selectedSet.has(node.value) ? \"checked\" : \"unchecked\"\r\n }\r\n\r\n const descendants = getAllDescendantValues(node)\r\n const selectedCount = descendants.filter((v) => selectedSet.has(v)).length\r\n\r\n if (selectedCount === 0) return \"unchecked\"\r\n if (selectedCount === descendants.length) return \"checked\"\r\n return \"indeterminate\"\r\n}\r\n\r\nfunction filterTree(\r\n nodes: TreeSelectNode[],\r\n searchTerm: string\r\n): TreeSelectNode[] | null {\r\n const term = searchTerm.toLowerCase().trim()\r\n if (!term) return nodes\r\n\r\n const result: TreeSelectNode[] = []\r\n\r\n for (const node of nodes) {\r\n const labelMatches = node.label.toLowerCase().includes(term)\r\n\r\n if (node.children && node.children.length > 0) {\r\n const filteredChildren = filterTree(node.children, searchTerm)\r\n\r\n if (labelMatches) {\r\n result.push(node)\r\n } else if (filteredChildren && filteredChildren.length > 0) {\r\n result.push({ ...node, children: filteredChildren })\r\n }\r\n } else if (labelMatches) {\r\n result.push(node)\r\n }\r\n }\r\n\r\n return result.length > 0 ? result : null\r\n}\r\n\r\nfunction getValuesOfMatchingNodes(\r\n nodes: TreeSelectNode[],\r\n searchTerm: string\r\n): Set<string> {\r\n const term = searchTerm.toLowerCase().trim()\r\n const result = new Set<string>()\r\n\r\n function walk(nodeList: TreeSelectNode[]): boolean {\r\n let hasMatch = false\r\n for (const node of nodeList) {\r\n const labelMatches = node.label.toLowerCase().includes(term)\r\n let childHasMatch = false\r\n\r\n if (node.children) {\r\n childHasMatch = walk(node.children)\r\n }\r\n\r\n if (labelMatches || childHasMatch) {\r\n result.add(node.value)\r\n hasMatch = true\r\n }\r\n }\r\n return hasMatch\r\n }\r\n\r\n walk(nodes)\r\n return result\r\n}\r\n\r\nfunction findNodeByValue(\r\n nodes: TreeSelectNode[],\r\n value: string\r\n): TreeSelectNode | undefined {\r\n for (const node of nodes) {\r\n if (node.value === value) return node\r\n if (node.children) {\r\n const found = findNodeByValue(node.children, value)\r\n if (found) return found\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nfunction collectAllBranchValues(nodes: TreeSelectNode[]): Set<string> {\r\n const result = new Set<string>()\r\n for (const node of nodes) {\r\n if (node.children && node.children.length > 0) {\r\n result.add(node.value)\r\n for (const v of collectAllBranchValues(node.children)) {\r\n result.add(v)\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction renderHighlightedLabel(\r\n label: string,\r\n searchTerm: string\r\n): React.ReactNode {\r\n if (!searchTerm) return label\r\n\r\n const term = searchTerm.toLowerCase().trim()\r\n if (!term) return label\r\n\r\n const index = label.toLowerCase().indexOf(term)\r\n if (index === -1) return label\r\n\r\n return (\r\n <>\r\n {label.slice(0, index)}\r\n <span className=\"font-semibold underline\">\r\n {label.slice(index, index + term.length)}\r\n </span>\r\n {label.slice(index + term.length)}\r\n </>\r\n )\r\n}\r\n\r\n// --- TreeNodeItem (internal) ---\r\n\r\ninterface TreeNodeItemProps {\r\n node: TreeSelectNode\r\n depth: number\r\n multiple: boolean\r\n selectedSet: Set<string>\r\n expandedValues: Set<string>\r\n focusedValue: string | null\r\n onToggleExpand: (value: string) => void\r\n onSelect: (node: TreeSelectNode) => void\r\n onFocus: (value: string) => void\r\n searchTerm: string\r\n}\r\n\r\nfunction TreeNodeItem({\r\n node,\r\n depth,\r\n multiple,\r\n selectedSet,\r\n expandedValues,\r\n focusedValue,\r\n onToggleExpand,\r\n onSelect,\r\n onFocus,\r\n searchTerm,\r\n}: TreeNodeItemProps) {\r\n const hasChildren = node.children && node.children.length > 0\r\n const isExpanded = expandedValues.has(node.value)\r\n const checkState = multiple\r\n ? getCheckState(node, selectedSet)\r\n : selectedSet.has(node.value)\r\n ? \"checked\"\r\n : \"unchecked\"\r\n\r\n const indentPx = depth * 20\r\n\r\n return (\r\n <div\r\n role=\"treeitem\"\r\n aria-expanded={hasChildren ? isExpanded : undefined}\r\n aria-selected={checkState === \"checked\"}\r\n >\r\n <div\r\n className={cn(\r\n \"relative flex items-center gap-2 rounded-sm px-2 py-1.5 my-0.5 text-sm cursor-pointer select-none outline-none active:opacity-50\",\r\n \"hover:bg-muted\",\r\n checkState === \"checked\" && !multiple && \"bg-muted\"\r\n // This adds a focus ring when the node is focused, but it's not needed for the tree-select component.\r\n // focusedValue === node.value && \"z-10 ring-2 ring-ring\"\r\n )}\r\n style={{ paddingLeft: `${8 + indentPx}px` }}\r\n onClick={() => onSelect(node)}\r\n onFocus={() => onFocus(node.value)}\r\n data-tree-value={node.value}\r\n tabIndex={focusedValue === node.value ? 0 : -1}\r\n >\r\n {hasChildren ? (\r\n <button\r\n type=\"button\"\r\n className=\"h-4 w-4 shrink-0 flex items-center justify-center rounded-sm hover:bg-secondary active:opacity-50\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n onToggleExpand(node.value)\r\n }}\r\n aria-label={\r\n isExpanded ? `Collapse ${node.label}` : `Expand ${node.label}`\r\n }\r\n tabIndex={-1}\r\n >\r\n {isExpanded ? (\r\n <ChevronDown className=\"h-3.5 w-3.5\" />\r\n ) : (\r\n <ChevronRight className=\"h-3.5 w-3.5\" />\r\n )}\r\n </button>\r\n ) : (\r\n <span className=\"h-4 w-4 shrink-0\" />\r\n )}\r\n\r\n {multiple ? (\r\n <Checkbox\r\n checked={\r\n checkState === \"checked\"\r\n ? true\r\n : checkState === \"indeterminate\"\r\n ? \"indeterminate\"\r\n : false\r\n }\r\n onCheckedChange={() => onSelect(node)}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"shrink-0\"\r\n aria-label={node.label}\r\n />\r\n ) : (\r\n <Check\r\n className={cn(\r\n \"h-4 w-4 shrink-0\",\r\n checkState === \"checked\" ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n />\r\n )}\r\n\r\n <span className=\"truncate\">\r\n {renderHighlightedLabel(node.label, searchTerm)}\r\n </span>\r\n </div>\r\n\r\n {hasChildren && isExpanded && (\r\n <div role=\"group\">\r\n {node.children!.map((child) => (\r\n <TreeNodeItem\r\n key={child.value}\r\n node={child}\r\n depth={depth + 1}\r\n multiple={multiple}\r\n selectedSet={selectedSet}\r\n expandedValues={expandedValues}\r\n focusedValue={focusedValue}\r\n onToggleExpand={onToggleExpand}\r\n onSelect={onSelect}\r\n onFocus={onFocus}\r\n searchTerm={searchTerm}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n// --- TreeSelect (main component) ---\r\n\r\nexport function TreeSelect({\r\n nodes,\r\n value,\r\n onValueChange,\r\n multiple = false,\r\n values = [],\r\n onValuesChange,\r\n placeholder = \"Select...\",\r\n searchPlaceholder = \"Search...\",\r\n emptyMessage = \"No results found.\",\r\n disabled = false,\r\n className,\r\n error = false,\r\n defaultExpandedValues,\r\n expandAll = false,\r\n}: TreeSelectProps) {\r\n const [open, setOpen] = React.useState(false)\r\n const [searchTerm, setSearchTerm] = React.useState(\"\")\r\n const [focusedValue, setFocusedValue] = React.useState<string | null>(null)\r\n const [expandedValues, setExpandedValues] = React.useState<Set<string>>(\r\n () => {\r\n if (expandAll) return collectAllBranchValues(nodes)\r\n if (defaultExpandedValues) return new Set(defaultExpandedValues)\r\n return new Set<string>()\r\n }\r\n )\r\n\r\n const preSearchExpandedRef = React.useRef<Set<string> | null>(null)\r\n const treeRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const selectedSet = React.useMemo(\r\n () => new Set(multiple ? values : value ? [value] : []),\r\n [multiple, values, value]\r\n )\r\n\r\n const filteredNodes = React.useMemo(\r\n () => (searchTerm ? filterTree(nodes, searchTerm) : nodes),\r\n [nodes, searchTerm]\r\n )\r\n\r\n // Auto-expand matching ancestors during search\r\n React.useEffect(() => {\r\n if (searchTerm) {\r\n if (!preSearchExpandedRef.current) {\r\n preSearchExpandedRef.current = new Set(expandedValues)\r\n }\r\n const matchingAncestors = getValuesOfMatchingNodes(nodes, searchTerm)\r\n setExpandedValues(matchingAncestors)\r\n } else if (preSearchExpandedRef.current) {\r\n setExpandedValues(preSearchExpandedRef.current)\r\n preSearchExpandedRef.current = null\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchTerm, nodes])\r\n\r\n const handleOpenChange = React.useCallback((isOpen: boolean) => {\r\n setOpen(isOpen)\r\n if (!isOpen) {\r\n setSearchTerm(\"\")\r\n setFocusedValue(null)\r\n }\r\n }, [])\r\n\r\n const handleToggleExpand = React.useCallback((nodeValue: string) => {\r\n setExpandedValues((prev) => {\r\n const next = new Set(prev)\r\n if (next.has(nodeValue)) {\r\n next.delete(nodeValue)\r\n } else {\r\n next.add(nodeValue)\r\n }\r\n return next\r\n })\r\n }, [])\r\n\r\n const handleSelect = React.useCallback(\r\n (node: TreeSelectNode) => {\r\n if (multiple) {\r\n const allDescendants = getAllDescendantValues(node)\r\n const currentState = getCheckState(node, selectedSet)\r\n\r\n let newValues: string[]\r\n if (currentState === \"checked\") {\r\n const toRemove = new Set(allDescendants)\r\n newValues = values.filter((v) => !toRemove.has(v))\r\n } else {\r\n const toAdd = allDescendants.filter((v) => !selectedSet.has(v))\r\n newValues = [...values, ...toAdd]\r\n }\r\n onValuesChange?.(newValues)\r\n } else {\r\n // Single-select: clicking a parent toggles expand instead of selecting\r\n const hasChildren = node.children && node.children.length > 0\r\n if (hasChildren) {\r\n handleToggleExpand(node.value)\r\n return\r\n }\r\n const newValue = node.value === value ? \"\" : node.value\r\n onValueChange?.(newValue)\r\n setOpen(false)\r\n }\r\n },\r\n [\r\n multiple,\r\n values,\r\n value,\r\n selectedSet,\r\n onValuesChange,\r\n onValueChange,\r\n handleToggleExpand,\r\n ]\r\n )\r\n\r\n const handleRemoveChip = React.useCallback(\r\n (chipValue: string, e: React.MouseEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n const node = findNodeByValue(nodes, chipValue)\r\n if (node) {\r\n const toRemove = new Set(getAllDescendantValues(node))\r\n const newValues = values.filter((v) => !toRemove.has(v))\r\n onValuesChange?.(newValues)\r\n }\r\n },\r\n [nodes, values, onValuesChange]\r\n )\r\n\r\n // Smart chips: minimal set representing the selection\r\n const chipValues = React.useMemo(() => {\r\n if (!multiple) return []\r\n\r\n const chips: string[] = []\r\n\r\n function walk(nodeList: TreeSelectNode[]) {\r\n for (const node of nodeList) {\r\n const state = getCheckState(node, selectedSet)\r\n if (state === \"checked\") {\r\n chips.push(node.value)\r\n } else if (state === \"indeterminate\" && node.children) {\r\n walk(node.children)\r\n }\r\n }\r\n }\r\n\r\n walk(nodes)\r\n return chips\r\n }, [nodes, selectedSet, multiple])\r\n\r\n // Keyboard navigation\r\n const getVisibleNodes = React.useCallback((): HTMLElement[] => {\r\n if (!treeRef.current) return []\r\n return Array.from(treeRef.current.querySelectorAll(\"[data-tree-value]\"))\r\n }, [])\r\n\r\n const handleTreeKeyDown = React.useCallback(\r\n (e: React.KeyboardEvent) => {\r\n const visibleNodes = getVisibleNodes()\r\n const currentIndex = visibleNodes.findIndex(\r\n (el) => el.dataset.treeValue === focusedValue\r\n )\r\n\r\n switch (e.key) {\r\n case \"ArrowDown\": {\r\n e.preventDefault()\r\n const nextIndex = Math.min(currentIndex + 1, visibleNodes.length - 1)\r\n const nextValue = visibleNodes[nextIndex]?.dataset.treeValue\r\n if (nextValue) {\r\n setFocusedValue(nextValue)\r\n visibleNodes[nextIndex]?.focus()\r\n }\r\n break\r\n }\r\n case \"ArrowUp\": {\r\n e.preventDefault()\r\n const prevIndex = Math.max(currentIndex - 1, 0)\r\n const prevValue = visibleNodes[prevIndex]?.dataset.treeValue\r\n if (prevValue) {\r\n setFocusedValue(prevValue)\r\n visibleNodes[prevIndex]?.focus()\r\n }\r\n break\r\n }\r\n case \"ArrowRight\": {\r\n e.preventDefault()\r\n if (focusedValue) {\r\n const node = findNodeByValue(nodes, focusedValue)\r\n if (node?.children?.length) {\r\n if (!expandedValues.has(focusedValue)) {\r\n handleToggleExpand(focusedValue)\r\n } else {\r\n const firstChildValue = node.children[0].value\r\n setFocusedValue(firstChildValue)\r\n requestAnimationFrame(() => {\r\n const els = getVisibleNodes()\r\n const el = els.find(\r\n (n) => n.dataset.treeValue === firstChildValue\r\n )\r\n el?.focus()\r\n })\r\n }\r\n }\r\n }\r\n break\r\n }\r\n case \"ArrowLeft\": {\r\n e.preventDefault()\r\n if (focusedValue && expandedValues.has(focusedValue)) {\r\n handleToggleExpand(focusedValue)\r\n }\r\n break\r\n }\r\n case \"Enter\":\r\n case \" \": {\r\n e.preventDefault()\r\n if (focusedValue) {\r\n const node = findNodeByValue(nodes, focusedValue)\r\n if (node) handleSelect(node)\r\n }\r\n break\r\n }\r\n case \"Home\": {\r\n e.preventDefault()\r\n const firstValue = visibleNodes[0]?.dataset.treeValue\r\n if (firstValue) {\r\n setFocusedValue(firstValue)\r\n visibleNodes[0]?.focus()\r\n }\r\n break\r\n }\r\n case \"End\": {\r\n e.preventDefault()\r\n const lastValue =\r\n visibleNodes[visibleNodes.length - 1]?.dataset.treeValue\r\n if (lastValue) {\r\n setFocusedValue(lastValue)\r\n visibleNodes[visibleNodes.length - 1]?.focus()\r\n }\r\n break\r\n }\r\n }\r\n },\r\n [\r\n focusedValue,\r\n nodes,\r\n expandedValues,\r\n getVisibleNodes,\r\n handleToggleExpand,\r\n handleSelect,\r\n ]\r\n )\r\n\r\n const getDisplayText = () => {\r\n if (multiple) {\r\n if (values.length === 0) return placeholder\r\n if (values.length === 1) {\r\n const node = findNodeByValue(nodes, values[0])\r\n return node?.label ?? values[0]\r\n }\r\n return `${values.length} selected`\r\n }\r\n if (value) {\r\n const node = findNodeByValue(nodes, value)\r\n return node?.label ?? value\r\n }\r\n return placeholder\r\n }\r\n\r\n const renderSelectedChips = () => {\r\n if (!multiple || chipValues.length === 0) return null\r\n\r\n const chipNodes = chipValues\r\n .map((v) => findNodeByValue(nodes, v))\r\n .filter(Boolean) as TreeSelectNode[]\r\n\r\n return (\r\n <div className=\"max-h-[100px] overflow-y-auto px-2 py-1.5 border-b border-border\">\r\n <div className=\"flex flex-wrap gap-1\">\r\n {chipNodes.map((node) => (\r\n <div\r\n key={node.value}\r\n className=\"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs\"\r\n >\r\n <span className=\"truncate max-w-[120px]\">{node.label}</span>\r\n <X\r\n className=\"h-3 w-3 cursor-pointer shrink-0\"\r\n onClick={(e) => handleRemoveChip(node.value, e)}\r\n aria-label={`Remove ${node.label}`}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={handleOpenChange}>\r\n <PopoverTrigger asChild>\r\n <button\r\n type=\"button\"\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n aria-haspopup=\"tree\"\r\n disabled={disabled}\r\n className={cn(\r\n \"cursor-pointer flex my-2 h-9 w-full 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\",\r\n !value && !values.length && \"text-secondary-text\",\r\n error &&\r\n \"border-destructive-foreground focus-visible:ring-destructive-foreground\",\r\n className\r\n )}\r\n >\r\n <span className=\"truncate\">{getDisplayText()}</span>\r\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </button>\r\n </PopoverTrigger>\r\n <PopoverContent\r\n className=\"p-0\"\r\n align=\"start\"\r\n style={{ width: \"var(--radix-popover-trigger-width)\" }}\r\n >\r\n <div className=\"flex items-center border-b px-3\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <input\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n placeholder={searchPlaceholder}\r\n className=\"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\r\n aria-label=\"Search tree\"\r\n />\r\n </div>\r\n\r\n {renderSelectedChips()}\r\n\r\n <div className=\"max-h-[300px] overflow-y-auto\">\r\n {filteredNodes && filteredNodes.length > 0 ? (\r\n <div\r\n ref={treeRef}\r\n role=\"tree\"\r\n aria-label=\"Options\"\r\n className=\"p-1\"\r\n onKeyDown={handleTreeKeyDown}\r\n >\r\n {filteredNodes.map((node) => (\r\n <TreeNodeItem\r\n key={node.value}\r\n node={node}\r\n depth={0}\r\n multiple={multiple}\r\n selectedSet={selectedSet}\r\n expandedValues={expandedValues}\r\n focusedValue={focusedValue}\r\n onToggleExpand={handleToggleExpand}\r\n onSelect={handleSelect}\r\n onFocus={setFocusedValue}\r\n searchTerm={searchTerm}\r\n />\r\n ))}\r\n </div>\r\n ) : (\r\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\r\n {emptyMessage}\r\n </div>\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n"],"mappings":"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","names":["React","Check","ChevronDown","ChevronRight","Search","X","Fragment","jsx","jsxs","getAllDescendantValues","node","values","child","getCheckState","selectedSet","descendants","selectedCount","v","filterTree","nodes","searchTerm","term","result","labelMatches","filteredChildren","getValuesOfMatchingNodes","walk","nodeList","hasMatch","childHasMatch","findNodeByValue","value","found","collectAllBranchValues","renderHighlightedLabel","label","index","TreeNodeItem","depth","multiple","expandedValues","focusedValue","onToggleExpand","onSelect","onFocus","hasChildren","isExpanded","checkState","indentPx","cn","e","ChevronDown","ChevronRight","Checkbox","Check","TreeSelect","onValueChange","onValuesChange","placeholder","searchPlaceholder","emptyMessage","disabled","className","error","defaultExpandedValues","expandAll","open","setOpen","setSearchTerm","setFocusedValue","setExpandedValues","preSearchExpandedRef","treeRef","filteredNodes","matchingAncestors","handleOpenChange","isOpen","handleToggleExpand","nodeValue","prev","next","handleSelect","allDescendants","currentState","newValues","toRemove","toAdd","newValue","handleRemoveChip","chipValue","chipValues","chips","state","getVisibleNodes","handleTreeKeyDown","visibleNodes","currentIndex","el","nextIndex","nextValue","prevIndex","prevValue","firstChildValue","n","firstValue","lastValue","getDisplayText","renderSelectedChips","chipNodes","X","Popover","PopoverTrigger","PopoverContent","Search"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/tabs.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\"\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => {\r\n const [indicatorStyle, setIndicatorStyle] = useState({\r\n left: 0,\r\n width: 0,\r\n })\r\n const listRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n const updateIndicator = () => {\r\n if (!listRef.current) return\r\n\r\n const activeTab = listRef.current.querySelector(\r\n '[data-state=\"active\"]'\r\n ) as HTMLElement\r\n\r\n if (activeTab) {\r\n const listRect = listRef.current.getBoundingClientRect()\r\n const tabRect = activeTab.getBoundingClientRect()\r\n\r\n setIndicatorStyle({\r\n left: tabRect.left - listRect.left,\r\n width: tabRect.width,\r\n })\r\n }\r\n }\r\n\r\n updateIndicator()\r\n\r\n // Use MutationObserver to detect when data-state changes\r\n const observer = new MutationObserver(updateIndicator)\r\n\r\n if (listRef.current) {\r\n observer.observe(listRef.current, {\r\n attributes: true,\r\n attributeFilter: [\"data-state\"],\r\n subtree: true,\r\n })\r\n }\r\n\r\n // Also update on window resize\r\n window.addEventListener(\"resize\", updateIndicator)\r\n\r\n return () => {\r\n observer.disconnect()\r\n window.removeEventListener(\"resize\", updateIndicator)\r\n }\r\n }, [])\r\n\r\n // Combine refs\r\n const combinedRef = useCallback(\r\n (node: HTMLDivElement | null) => {\r\n ;(listRef as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n\r\n if (typeof ref === \"function\") {\r\n ref(node)\r\n } else if (ref) {\r\n ;(ref as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n }\r\n },\r\n [ref]\r\n )\r\n\r\n return (\r\n <TabsPrimitive.List\r\n ref={combinedRef}\r\n className={cn(\r\n \"relative inline-flex items-center justify-center rounded-4xl bg-muted p-1 gap-1 text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {/* Animated indicator */}\r\n <span\r\n className=\"absolute h-[calc(100%-0.5rem)] rounded-4xl bg-background shadow-sm transition-all duration-200 ease-out\"\r\n style={{\r\n left: `${indicatorStyle.left}px`,\r\n width: `${indicatorStyle.width}px`,\r\n }}\r\n />\r\n {props.children}\r\n </TabsPrimitive.List>\r\n )\r\n})\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\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\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\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"]}
|