@customafk/lunas-ui 0.0.90 → 0.0.91
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/dist/{add-new-CQefL6PU.cjs → add-new-Dv7zlN-B.cjs} +2 -2
- package/dist/{add-new-CQefL6PU.cjs.map → add-new-Dv7zlN-B.cjs.map} +1 -1
- package/dist/{add-new-ChBwRRMT.js → add-new-yRbAl8jO.js} +2 -2
- package/dist/{add-new-ChBwRRMT.js.map → add-new-yRbAl8jO.js.map} +1 -1
- package/dist/{alert-dialog-BfKVH-9l.js → alert-dialog-Di6rTULI.js} +1 -1
- package/dist/{alert-dialog-BfKVH-9l.js.map → alert-dialog-Di6rTULI.js.map} +1 -1
- package/dist/{alert-dialog-mR3avgRt.cjs → alert-dialog-DmsZNeeJ.cjs} +1 -1
- package/dist/{alert-dialog-mR3avgRt.cjs.map → alert-dialog-DmsZNeeJ.cjs.map} +1 -1
- package/dist/{avatar-DmMCBvb6.cjs → avatar-CAr8qOV9.cjs} +1 -1
- package/dist/{avatar-DmMCBvb6.cjs.map → avatar-CAr8qOV9.cjs.map} +1 -1
- package/dist/{avatar-iX5Jhj8E.js → avatar-zx6-WY2L.js} +1 -1
- package/dist/{avatar-iX5Jhj8E.js.map → avatar-zx6-WY2L.js.map} +1 -1
- package/dist/{badge-tjlLdDGl.js → badge-DFlMOdsm.js} +1 -1
- package/dist/{badge-tjlLdDGl.js.map → badge-DFlMOdsm.js.map} +1 -1
- package/dist/{badge-AM9m3CFI.cjs → badge-_7ZCk7u2.cjs} +1 -1
- package/dist/{badge-AM9m3CFI.cjs.map → badge-_7ZCk7u2.cjs.map} +1 -1
- package/dist/{button--4Up8V16.d.ts → button-BP2S40Lh.d.ts} +4 -4
- package/dist/{button-DvLPviNh.d.cts → button-BuyrlYHs.d.cts} +6 -6
- package/dist/{calendar-Brdd41FH.cjs → calendar-D_C_Qeu7.cjs} +1 -1
- package/dist/{calendar-Brdd41FH.cjs.map → calendar-D_C_Qeu7.cjs.map} +1 -1
- package/dist/{calendar-Diid0R3S.js → calendar-et-igmiY.js} +1 -1
- package/dist/{calendar-Diid0R3S.js.map → calendar-et-igmiY.js.map} +1 -1
- package/dist/{command-UXLmHGja.js → command-BvHe__3s.js} +2 -2
- package/dist/{command-UXLmHGja.js.map → command-BvHe__3s.js.map} +1 -1
- package/dist/{command-C13pL2M3.cjs → command-CevqI1YQ.cjs} +2 -2
- package/dist/{command-C13pL2M3.cjs.map → command-CevqI1YQ.cjs.map} +1 -1
- package/dist/{command-DvZTC5Zs.d.cts → command-FHT81qCY.d.cts} +12 -12
- package/dist/{command-DCxlE_7w.d.ts → command-mz4oiB8D.d.ts} +12 -12
- package/dist/data-display/country.cjs +1 -1
- package/dist/data-display/country.js +1 -1
- package/dist/data-display/data-list.cjs +1 -1
- package/dist/data-display/data-list.js +1 -1
- package/dist/data-display/date-tooltip.cjs +1 -1
- package/dist/data-display/date-tooltip.js +1 -1
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.js +1 -1
- package/dist/data-display/empty.cjs +1 -1
- package/dist/data-display/empty.d.cts +2 -2
- package/dist/data-display/empty.d.ts +2 -2
- package/dist/data-display/empty.js +1 -1
- package/dist/data-display/name.cjs +1 -1
- package/dist/data-display/name.js +1 -1
- package/dist/data-display/phone-number.cjs +1 -1
- package/dist/data-display/phone-number.js +1 -1
- package/dist/data-display/role-badge.cjs +1 -1
- package/dist/data-display/role-badge.js +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.d.cts +2 -2
- package/dist/data-display/statistic.d.ts +2 -2
- package/dist/data-display/statistic.js +1 -1
- package/dist/data-display/user.cjs +1 -1
- package/dist/data-display/user.js +1 -1
- package/dist/{date-CgzMwDPN.js → date-BIb58beV.js} +1 -1
- package/dist/{date-CgzMwDPN.js.map → date-BIb58beV.js.map} +1 -1
- package/dist/{date-BEyT-xKi.cjs → date-Bv13VRWU.cjs} +1 -1
- package/dist/{date-BEyT-xKi.cjs.map → date-Bv13VRWU.cjs.map} +1 -1
- package/dist/{dialog-BBODhbxh.cjs → dialog-Bd723gV6.cjs} +1 -1
- package/dist/{dialog-BBODhbxh.cjs.map → dialog-Bd723gV6.cjs.map} +1 -1
- package/dist/{dialog-FTlFnjJF.d.cts → dialog-DEixzKid.d.cts} +12 -12
- package/dist/{dialog-BqaZEo5j.d.ts → dialog-JtlljVFY.d.ts} +12 -12
- package/dist/{dialog-BAlJ18xi.js → dialog-OTHc6G5i.js} +1 -1
- package/dist/{dialog-BAlJ18xi.js.map → dialog-OTHc6G5i.js.map} +1 -1
- package/dist/dialogs/confirm-dialog.cjs +1 -1
- package/dist/dialogs/confirm-dialog.js +1 -1
- package/dist/dialogs/detail-dialog/component/sidebar.cjs +1 -1
- package/dist/dialogs/detail-dialog/component/sidebar.d.cts +30 -30
- package/dist/dialogs/detail-dialog/component/sidebar.d.ts +4 -4
- package/dist/dialogs/detail-dialog/component/sidebar.js +1 -1
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.js +1 -1
- package/dist/dialogs/error-dialog.cjs +1 -1
- package/dist/dialogs/error-dialog.js +1 -1
- package/dist/dialogs/form-dialog.cjs +1 -1
- package/dist/dialogs/form-dialog.d.cts +2 -2
- package/dist/dialogs/form-dialog.d.ts +2 -2
- package/dist/dialogs/form-dialog.js +1 -1
- package/dist/dialogs/loading-dialog.cjs +1 -1
- package/dist/dialogs/loading-dialog.js +1 -1
- package/dist/{drawer-BT0osH1O.js → drawer-B0PYArcE.js} +1 -1
- package/dist/{drawer-BT0osH1O.js.map → drawer-B0PYArcE.js.map} +1 -1
- package/dist/{drawer-C3vvvU_D.cjs → drawer-CmRrJYoS.cjs} +1 -1
- package/dist/{drawer-C3vvvU_D.cjs.map → drawer-CmRrJYoS.cjs.map} +1 -1
- package/dist/{error-dialog-DMGVy3dG.js → error-dialog-_FqKuIY6.js} +2 -2
- package/dist/{error-dialog-DMGVy3dG.js.map → error-dialog-_FqKuIY6.js.map} +1 -1
- package/dist/{error-dialog-BVTB1EEF.cjs → error-dialog-pTwyWIE5.cjs} +2 -2
- package/dist/{error-dialog-BVTB1EEF.cjs.map → error-dialog-pTwyWIE5.cjs.map} +1 -1
- package/dist/{field-A43YZ5Wj.cjs → field-B_qC62YD.cjs} +2 -2
- package/dist/{field-A43YZ5Wj.cjs.map → field-B_qC62YD.cjs.map} +1 -1
- package/dist/{field-CGacT8J3.js → field-DSScKMdZ.js} +2 -2
- package/dist/{field-CGacT8J3.js.map → field-DSScKMdZ.js.map} +1 -1
- package/dist/{flex-D6XrXRQW.js → flex-BJgsQWLI.js} +1 -1
- package/dist/{flex-D6XrXRQW.js.map → flex-BJgsQWLI.js.map} +1 -1
- package/dist/{flex-B4klVEz9.cjs → flex-DgmCJ9Bz.cjs} +1 -1
- package/dist/{flex-B4klVEz9.cjs.map → flex-DgmCJ9Bz.cjs.map} +1 -1
- package/dist/{form-B_tL9lO4.js → form-DbknMHac.js} +2 -2
- package/dist/{form-B_tL9lO4.js.map → form-DbknMHac.js.map} +1 -1
- package/dist/{form-DV9tQbiO.cjs → form-t4WaMbFV.cjs} +2 -2
- package/dist/{form-DV9tQbiO.cjs.map → form-t4WaMbFV.cjs.map} +1 -1
- package/dist/{form-wrapper-BYwaFsJd.js → form-wrapper-BbZebVv0.js} +2 -2
- package/dist/{form-wrapper-BYwaFsJd.js.map → form-wrapper-BbZebVv0.js.map} +1 -1
- package/dist/{form-wrapper-CODuD3w6.cjs → form-wrapper-DImTyC_E.cjs} +2 -2
- package/dist/{form-wrapper-CODuD3w6.cjs.map → form-wrapper-DImTyC_E.cjs.map} +1 -1
- package/dist/forms/combobox-field.cjs +1 -1
- package/dist/forms/combobox-field.d.cts +2 -2
- package/dist/forms/combobox-field.d.ts +2 -2
- package/dist/forms/combobox-field.js +1 -1
- package/dist/forms/date-field.cjs +1 -1
- package/dist/forms/date-field.d.cts +2 -2
- package/dist/forms/date-field.d.ts +2 -2
- package/dist/forms/date-field.js +1 -1
- package/dist/forms/form-wrapper.cjs +1 -1
- package/dist/forms/form-wrapper.d.cts +2 -2
- package/dist/forms/form-wrapper.d.ts +2 -2
- package/dist/forms/form-wrapper.js +1 -1
- package/dist/forms/multi-select-field.cjs +1 -1
- package/dist/forms/multi-select-field.cjs.map +1 -1
- package/dist/forms/multi-select-field.d.cts +2 -2
- package/dist/forms/multi-select-field.d.ts +2 -2
- package/dist/forms/multi-select-field.js +1 -1
- package/dist/forms/number-field.cjs +1 -1
- package/dist/forms/number-field.d.cts +2 -2
- package/dist/forms/number-field.d.ts +2 -2
- package/dist/forms/number-field.js +1 -1
- package/dist/forms/password-field.cjs +1 -1
- package/dist/forms/password-field.d.cts +2 -2
- package/dist/forms/password-field.d.ts +2 -2
- package/dist/forms/password-field.js +1 -1
- package/dist/forms/select-field.cjs +1 -1
- package/dist/forms/select-field.d.cts +2 -2
- package/dist/forms/select-field.d.ts +2 -2
- package/dist/forms/select-field.js +1 -1
- package/dist/forms/switch-field.cjs +1 -1
- package/dist/forms/switch-field.d.cts +2 -2
- package/dist/forms/switch-field.d.ts +2 -2
- package/dist/forms/switch-field.js +1 -1
- package/dist/forms/text-field.cjs +1 -1
- package/dist/forms/text-field.d.cts +2 -2
- package/dist/forms/text-field.d.ts +2 -2
- package/dist/forms/text-field.js +1 -1
- package/dist/forms/textarea-field.cjs +1 -1
- package/dist/forms/textarea-field.d.cts +2 -2
- package/dist/forms/textarea-field.d.ts +2 -2
- package/dist/forms/textarea-field.js +1 -1
- package/dist/{input-BStypTnq.js → input-B-l6tT_9.js} +1 -1
- package/dist/{input-BStypTnq.js.map → input-B-l6tT_9.js.map} +1 -1
- package/dist/{input-ChVagjGs.d.cts → input-BYy6D7Ol.d.cts} +3 -3
- package/dist/{input-D_tClptL.cjs → input-D7aXVX7j.cjs} +1 -1
- package/dist/{input-D_tClptL.cjs.map → input-D7aXVX7j.cjs.map} +1 -1
- package/dist/{input-_Uc9Nudu.d.ts → input-DooN2x6N.d.ts} +3 -3
- package/dist/label-7ZZm6YlQ.d.cts +11 -0
- package/dist/{label--w6MDGCn.d.ts → label-BATJfW0U.d.ts} +3 -3
- package/dist/{label-D6mAvVmw.cjs → label-BMBHBFRY.cjs} +1 -1
- package/dist/{label-D6mAvVmw.cjs.map → label-BMBHBFRY.cjs.map} +1 -1
- package/dist/{label-CdrxlBJ8.js → label-CRhvNQY4.js} +1 -1
- package/dist/{label-CdrxlBJ8.js.map → label-CRhvNQY4.js.map} +1 -1
- package/dist/layouts/app-layout/index.cjs +1 -1
- package/dist/layouts/app-layout/index.d.cts +26 -26
- package/dist/layouts/app-layout/index.d.ts +28 -28
- package/dist/layouts/app-layout/index.js +1 -1
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +7 -7
- package/dist/layouts/flex.d.ts +7 -7
- package/dist/layouts/flex.js +1 -1
- package/dist/layouts/service-layout/index.cjs +1 -1
- package/dist/layouts/service-layout/index.cjs.map +1 -1
- package/dist/layouts/service-layout/index.d.cts +19 -17
- package/dist/layouts/service-layout/index.d.ts +17 -15
- package/dist/layouts/service-layout/index.js +1 -1
- package/dist/layouts/service-layout/index.js.map +1 -1
- package/dist/{multi-select-Bqqk4Tiu.js → multi-select-CQdR0wzH.js} +2 -2
- package/dist/{multi-select-Bqqk4Tiu.js.map → multi-select-CQdR0wzH.js.map} +1 -1
- package/dist/{multi-select-DFaIxSYQ.cjs → multi-select-Dl54UfMM.cjs} +2 -2
- package/dist/{multi-select-DFaIxSYQ.cjs.map → multi-select-Dl54UfMM.cjs.map} +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.ts +2 -2
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.ts +2 -2
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.ts +2 -2
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.ts +2 -2
- package/dist/{paragraph-Q7vk3BSp.cjs → paragraph-Dl6mLo1q.cjs} +1 -1
- package/dist/{paragraph-Q7vk3BSp.cjs.map → paragraph-Dl6mLo1q.cjs.map} +1 -1
- package/dist/{paragraph-B9fp9JaI.js → paragraph-EiPvpYGr.js} +1 -1
- package/dist/{paragraph-B9fp9JaI.js.map → paragraph-EiPvpYGr.js.map} +1 -1
- package/dist/{popover-D6vyPDKA.cjs → popover-DODAZTiX.cjs} +1 -1
- package/dist/{popover-D6vyPDKA.cjs.map → popover-DODAZTiX.cjs.map} +1 -1
- package/dist/{popover-BnzoeyDG.js → popover-l3a5exlI.js} +1 -1
- package/dist/{popover-BnzoeyDG.js.map → popover-l3a5exlI.js.map} +1 -1
- package/dist/products/product-loading-page.cjs +1 -1
- package/dist/products/product-loading-page.js +1 -1
- package/dist/products/product-quantity-control.cjs +1 -1
- package/dist/products/product-quantity-control.d.cts +2 -2
- package/dist/products/product-quantity-control.d.ts +2 -2
- package/dist/products/product-quantity-control.js +1 -1
- package/dist/{refresh-MkZTkXVm.js → refresh-DHZZ9DV4.js} +2 -2
- package/dist/{refresh-MkZTkXVm.js.map → refresh-DHZZ9DV4.js.map} +1 -1
- package/dist/{refresh-DGM3XAqT.cjs → refresh-NRTjXWBR.cjs} +2 -2
- package/dist/{refresh-DGM3XAqT.cjs.map → refresh-NRTjXWBR.cjs.map} +1 -1
- package/dist/{search-input-B_rAonEV.js → search-input-CMNLrUk0.js} +2 -2
- package/dist/{search-input-B_rAonEV.js.map → search-input-CMNLrUk0.js.map} +1 -1
- package/dist/{search-input-DsQEWS7b.cjs → search-input-p1W5kb6R.cjs} +2 -2
- package/dist/{search-input-DsQEWS7b.cjs.map → search-input-p1W5kb6R.cjs.map} +1 -1
- package/dist/{select-BD7dul2u.cjs → select-DfJYL2rL.cjs} +1 -1
- package/dist/{select-BD7dul2u.cjs.map → select-DfJYL2rL.cjs.map} +1 -1
- package/dist/{select-B8sXsuUI.js → select-czrPwYWJ.js} +1 -1
- package/dist/{select-B8sXsuUI.js.map → select-czrPwYWJ.js.map} +1 -1
- package/dist/{separator-DMMoR-d2.cjs → separator-BAyL2IIW.cjs} +1 -1
- package/dist/{separator-DMMoR-d2.cjs.map → separator-BAyL2IIW.cjs.map} +1 -1
- package/dist/{separator-CrQFgLB_.d.cts → separator-BhGNy7Ns.d.ts} +1 -1
- package/dist/{separator-D17HxS2f.js → separator-C5dPRhYx.js} +1 -1
- package/dist/{separator-D17HxS2f.js.map → separator-C5dPRhYx.js.map} +1 -1
- package/dist/{separator-CLCuP1xE.d.ts → separator-D_c8h0Aq.d.cts} +3 -3
- package/dist/{sidebar-GgMyovhB.cjs → sidebar-CEWGDBq6.cjs} +2 -2
- package/dist/{sidebar-GgMyovhB.cjs.map → sidebar-CEWGDBq6.cjs.map} +1 -1
- package/dist/{sidebar-CSbPdy7R.js → sidebar-CY2pOm9W.js} +2 -2
- package/dist/{sidebar-CSbPdy7R.js.map → sidebar-CY2pOm9W.js.map} +1 -1
- package/dist/{switch-DwBg-iL4.js → switch-B5eIeKX7.js} +1 -1
- package/dist/{switch-DwBg-iL4.js.map → switch-B5eIeKX7.js.map} +1 -1
- package/dist/{switch-o_YbWKw4.cjs → switch-C6peIJVm.cjs} +1 -1
- package/dist/{switch-o_YbWKw4.cjs.map → switch-C6peIJVm.cjs.map} +1 -1
- package/dist/table/index.cjs +1 -1
- package/dist/table/index.cjs.map +1 -1
- package/dist/table/index.d.cts +2 -2
- package/dist/table/index.d.ts +2 -2
- package/dist/table/index.js +1 -1
- package/dist/{textarea-TGDtYde1.js → textarea-BVj6PCYB.js} +1 -1
- package/dist/{textarea-TGDtYde1.js.map → textarea-BVj6PCYB.js.map} +1 -1
- package/dist/{textarea-BHME8i5L.cjs → textarea-C3ZQALlB.cjs} +1 -1
- package/dist/{textarea-BHME8i5L.cjs.map → textarea-C3ZQALlB.cjs.map} +1 -1
- package/dist/{toggle-ZmWe85dU.d.cts → toggle-Bj-orQro.d.ts} +4 -4
- package/dist/{toggle-1Tlu1OKT.d.ts → toggle-BvgvHcLZ.d.cts} +4 -4
- package/dist/{tooltip-BEEk7osU.d.ts → tooltip-DTDkf-An.d.ts} +6 -6
- package/dist/{tooltip-BgwfJliB.d.cts → tooltip-DfswK7wk.d.cts} +6 -6
- package/dist/{tooltip-uaF-pxx8.cjs → tooltip-pmQZf5Bt.cjs} +1 -1
- package/dist/{tooltip-uaF-pxx8.cjs.map → tooltip-pmQZf5Bt.cjs.map} +1 -1
- package/dist/{tooltip-BTrjCwd8.js → tooltip-xp6RiroA.js} +1 -1
- package/dist/{tooltip-BTrjCwd8.js.map → tooltip-xp6RiroA.js.map} +1 -1
- package/dist/{types-D32qXHff.cjs → types-Bfxd7F-g.cjs} +1 -1
- package/dist/{types-D32qXHff.cjs.map → types-Bfxd7F-g.cjs.map} +1 -1
- package/dist/{types-BiiGENwa.js → types-bhmvOEvz.js} +1 -1
- package/dist/{types-BiiGENwa.js.map → types-bhmvOEvz.js.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +2 -2
- package/dist/typography/paragraph.d.ts +2 -2
- package/dist/typography/paragraph.js +1 -1
- package/dist/typography/title.d.cts +2 -2
- package/dist/typography/title.d.ts +2 -2
- package/dist/ui/alert-dialog.cjs +1 -1
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/alert-dialog.d.ts +12 -12
- package/dist/ui/alert-dialog.js +1 -1
- package/dist/ui/alert.d.cts +7 -7
- package/dist/ui/alert.d.ts +7 -7
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.ts +2 -2
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/avatar.d.ts +4 -4
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +3 -3
- package/dist/ui/badge.d.ts +3 -3
- package/dist/ui/badge.js +1 -1
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.ts +8 -8
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.d.cts +8 -8
- package/dist/ui/button-group.d.ts +8 -8
- package/dist/ui/button-group.js +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.ts +1 -1
- package/dist/ui/buttons/add-new.cjs +1 -1
- package/dist/ui/buttons/add-new.js +1 -1
- package/dist/ui/buttons/refresh.cjs +1 -1
- package/dist/ui/buttons/refresh.js +1 -1
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.ts +4 -4
- package/dist/ui/calendar.js +1 -1
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.ts +8 -8
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/carousel.d.ts +7 -7
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.ts +4 -4
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +2 -2
- package/dist/ui/command.d.ts +2 -2
- package/dist/ui/command.js +1 -1
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.ts +16 -16
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.ts +1 -1
- package/dist/ui/dialog.js +1 -1
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.ts +11 -11
- package/dist/ui/drawer.js +1 -1
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.ts +16 -16
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.ts +9 -9
- package/dist/ui/field.cjs +1 -1
- package/dist/ui/field.d.cts +13 -13
- package/dist/ui/field.d.ts +15 -15
- package/dist/ui/field.js +1 -1
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.ts +2 -2
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.d.cts +7 -7
- package/dist/ui/form.d.ts +7 -7
- package/dist/ui/form.js +1 -1
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.ts +4 -4
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.ts +5 -5
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.ts +1 -1
- package/dist/ui/input.js +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/search-input.d.ts +3 -3
- package/dist/ui/inputs/search-input.js +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.d.cts +15 -15
- package/dist/ui/item.d.ts +15 -15
- package/dist/ui/item.js +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +1 -1
- package/dist/ui/label.d.ts +1 -1
- package/dist/ui/label.js +1 -1
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/menubar.d.ts +17 -17
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.ts +2 -2
- package/dist/ui/multi-select.js +1 -1
- package/dist/ui/navigation-menu.d.cts +11 -11
- package/dist/ui/navigation-menu.d.ts +9 -9
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.ts +9 -9
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +5 -5
- package/dist/ui/popover.d.ts +5 -5
- package/dist/ui/popover.js +1 -1
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.ts +2 -2
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.ts +3 -3
- package/dist/ui/resizable.d.cts +4 -4
- package/dist/ui/resizable.d.ts +4 -4
- package/dist/ui/scroll-area.d.cts +3 -3
- package/dist/ui/scroll-area.d.ts +3 -3
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +11 -11
- package/dist/ui/select.d.ts +11 -11
- package/dist/ui/select.js +1 -1
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +1 -1
- package/dist/ui/separator.d.ts +1 -1
- package/dist/ui/separator.js +1 -1
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.ts +9 -9
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.d.cts +30 -30
- package/dist/ui/sidebar.d.ts +30 -30
- package/dist/ui/sidebar.js +1 -1
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.ts +2 -2
- package/dist/ui/slider.d.ts +2 -2
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.ts +2 -2
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.ts +2 -2
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.ts +2 -2
- package/dist/ui/switch.js +1 -1
- package/dist/ui/table.d.cts +9 -9
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.ts +2 -2
- package/dist/ui/textarea.js +1 -1
- package/dist/ui/toggle-group.d.cts +4 -4
- package/dist/ui/toggle-group.d.ts +4 -4
- package/dist/ui/toggle.d.cts +1 -1
- package/dist/ui/toggle.d.ts +1 -1
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +1 -1
- package/dist/ui/tooltip.d.ts +1 -1
- package/dist/ui/tooltip.js +1 -1
- package/package.json +1 -1
- package/dist/label-BkmYDt9h.d.cts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-CSbPdy7R.js","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/component/sidebar.tsx"],"sourcesContent":["'use client';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detai_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = 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 // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n state,\n isMobile,\n\n toggleSidebar,\n\n open,\n setOpen,\n\n openMobile,\n setOpenMobile,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper', 'has-data-[variant=inset]:bg-sidebar', 'flex min-h-dvh w-full', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': 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 <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\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 <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\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 data-slot=\"sidebar-inner\"\n className={cn(\n 'shadow-nav flex size-full flex-col',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:!size-6', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"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 sm:flex',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4',\n 'group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize',\n 'in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\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}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('bg-background h-8 w-full shadow-none', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('bg-sidebar-border mx-2 w-auto', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto', 'group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'text-left truncate',\n 'transition-[color,width,height,padding]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8!',\n 'group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(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\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\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 side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after: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 && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && '$group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '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 );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\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}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInput,\n SidebarInset,\n SidebarProvider,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebar-CY2pOm9W.js","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/component/sidebar.tsx"],"sourcesContent":["'use client';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detai_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = 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 // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n state,\n isMobile,\n\n toggleSidebar,\n\n open,\n setOpen,\n\n openMobile,\n setOpenMobile,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper', 'has-data-[variant=inset]:bg-sidebar', 'flex min-h-dvh w-full', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': 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 <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\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 <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\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 data-slot=\"sidebar-inner\"\n className={cn(\n 'shadow-nav flex size-full flex-col',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:!size-6', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"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 sm:flex',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4',\n 'group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize',\n 'in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\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}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('bg-background h-8 w-full shadow-none', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('bg-sidebar-border mx-2 w-auto', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto', 'group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'text-left truncate',\n 'transition-[color,width,height,padding]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8!',\n 'group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(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\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\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 side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after: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 && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && '$group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '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 );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\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}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInput,\n SidebarInset,\n SidebarProvider,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t}from"react/jsx-runtime";import{Switch as n}from"radix-ui";function r({className:r,...i}){return t(n.Root,{"data-slot":`switch`,className:e(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,r),...i,children:t(n.Thumb,{"data-slot":`switch-thumb`,className:e(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}export{r as Switch};
|
|
2
|
-
//# sourceMappingURL=switch-
|
|
2
|
+
//# sourceMappingURL=switch-B5eIeKX7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch-
|
|
1
|
+
{"version":3,"file":"switch-B5eIeKX7.js","names":["Switch","SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":"8HAKA,SAASA,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAACC,EAAgB,KAAA,CACf,YAAU,SACV,UAAW,EACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,EACD,CACD,GAAI,WAEJ,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EACT,gBACA,4EACA,oDACA,uCACD,EACD,EACmB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=require(`./chunk-CUT6urMc.cjs`);let t=require(`@customafk/react-toolkit/utils`);t=e.__toESM(t);let n=require(`react/jsx-runtime`);n=e.__toESM(n);let r=require(`radix-ui`);r=e.__toESM(r);function i({className:e,...i}){return(0,n.jsx)(r.Switch.Root,{"data-slot":`switch`,className:(0,t.cn)(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,e),...i,children:(0,n.jsx)(r.Switch.Thumb,{"data-slot":`switch-thumb`,className:(0,t.cn)(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}Object.defineProperty(exports,`Switch`,{enumerable:!0,get:function(){return i}});
|
|
2
|
-
//# sourceMappingURL=switch-
|
|
2
|
+
//# sourceMappingURL=switch-C6peIJVm.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch-
|
|
1
|
+
{"version":3,"file":"switch-C6peIJVm.cjs","names":["SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":"kMAKA,SAAS,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CACf,YAAU,SACV,WAAA,EAAA,EAAA,IACE,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,EACD,CACD,GAAI,YAEJ,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,WAAA,EAAA,EAAA,IACE,gBACA,4EACA,oDACA,uCACD,EACD,EACmB"}
|
package/dist/table/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../chunk-CUT6urMc.cjs`);require(`../dist-CAevLI5t.cjs`),require(`../button-variants-BHDyMRNh.cjs`);const t=require(`../button-BCahPWI8.cjs`)
|
|
1
|
+
const e=require(`../chunk-CUT6urMc.cjs`);require(`../dist-CAevLI5t.cjs`),require(`../button-variants-BHDyMRNh.cjs`);const t=require(`../button-BCahPWI8.cjs`);require(`../input-D7aXVX7j.cjs`);const n=require(`../flex-DgmCJ9Bz.cjs`);require(`../paragraph-Dl6mLo1q.cjs`);const r=require(`../dropdown-menu-C3SGlEd2.cjs`),i=require(`../scroll-area-CcLtG_m0.cjs`),a=require(`../table-DrocTqs4.cjs`),o=require(`../add-new-Dv7zlN-B.cjs`),s=require(`../refresh-NRTjXWBR.cjs`),c=require(`../search-input-p1W5kb6R.cjs`);let l=require(`lucide-react`);l=e.__toESM(l);let u=require(`@customafk/react-toolkit/utils`);u=e.__toESM(u);let d=require(`react`);d=e.__toESM(d);let f=require(`react/jsx-runtime`);f=e.__toESM(f);let p=require(`@tanstack/react-table`);p=e.__toESM(p);let m=require(`@tanstack/react-virtual`);m=e.__toESM(m);const h=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},g=(0,d.memo)(({column:e})=>{let t=e.getIsSorted(),n=(0,d.useMemo)(()=>({asc:(0,f.jsx)(l.ChevronUp,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:(0,f.jsx)(l.ChevronDown,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})}),[]);return t?n[t]:null});g.displayName=`SortingIndicator`;const _=(0,d.memo)(({column:e})=>{let n=typeof e.columnDef.header==`string`?e.columnDef.header:`Column`,i=(0,d.useCallback)(()=>e.pin(!1),[e]),a=(0,d.useCallback)(()=>e.pin(`left`),[e]),o=(0,d.useCallback)(()=>e.pin(`right`),[e]);return e.getCanPin()?e.getIsPinned()?(0,f.jsx)(t.Button,{size:`icon`,variant:`ghost`,color:`secondary`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${n} column`,title:`Unpin ${n} column`,onClick:i,children:(0,f.jsx)(l.PinOffIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):(0,f.jsxs)(r.DropdownMenu,{children:[(0,f.jsx)(r.DropdownMenuTrigger,{asChild:!0,children:(0,f.jsx)(t.Button,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:(0,f.jsx)(l.EllipsisIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),(0,f.jsxs)(r.DropdownMenuContent,{align:`end`,children:[(0,f.jsxs)(r.DropdownMenuItem,{onClick:a,children:[(0,f.jsx)(l.ArrowLeftToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),(0,f.jsxs)(r.DropdownMenuItem,{onClick:o,children:[(0,f.jsx)(l.ArrowRightToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null});_.displayName=`PinControls`;const v=(0,d.memo)(({header:e})=>{let{column:t}=e,n=(0,d.useCallback)(e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))},[t]),r=t.getToggleSortingHandler();return e.isPlaceholder?(0,f.jsx)(`div`,{className:`flex items-center justify-between gap-2 truncate`}):(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[(0,f.jsxs)(`div`,{onClick:r,onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,role:t.getCanSort()?`button`:void 0,className:(0,u.cn)(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),children:[(0,f.jsx)(`span`,{className:`truncate`,children:(0,p.flexRender)(t.columnDef.header,e.getContext())}),(0,f.jsx)(g,{column:t})]}),(0,f.jsx)(_,{column:t})]})});v.displayName=`HeaderContent`;const y=(0,d.memo)(({row:e,measureElement:t,virtualRow:n,onClickRow:r})=>{let i=(0,d.useCallback)(()=>{r&&r(e.id)},[e.id,r]);return(0,f.jsx)(a.TableRow,{"data-index":n.index,ref:e=>t(e),className:`absolute flex w-full cursor-pointer focus:outline-none`,style:{transform:`translateY(${n.start}px)`},onClick:i,tabIndex:r?0:void 0,role:r?`button`:void 0,children:e.getVisibleCells().map(e=>{let t=e.column.getIsPinned(),n=t===`left`&&e.column.getIsLastColumn(`left`),r=t===`right`&&e.column.getIsFirstColumn(`right`);return(0,f.jsx)(a.TableCell,{"data-pinned":t||void 0,"data-last-col":n?`left`:r?`right`:void 0,style:{...h(e.column),width:e.column.getSize()},className:(0,u.cn)(`flex overflow-hidden py-2.5`,`data-pinned:bg-background/90`,`[&[data-pinned][data-last-col]]:border-border-weak`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`),children:(0,p.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})})});y.displayName=`DataTableRow`;const b=({table:e,isLoading:t,isFetching:n,allowFetchMore:r=!0,onClickRow:o,onFetchNextPage:s})=>{let c=(0,d.useRef)(null),{rows:p}=e.getRowModel(),g=(0,m.useVirtualizer)({count:p.length,getScrollElement:()=>c.current,estimateSize:()=>37,measureElement:e=>e?.getBoundingClientRect().height??void 0,overscan:5}),_=(0,d.useCallback)(e=>{if(!e)return;let{scrollHeight:t,scrollTop:i,clientHeight:a}=e;t-i-a<500&&!n&&r&&s?.()},[r,n,s]),b=(0,d.useCallback)(e=>{_(e.currentTarget)},[_]);return(0,d.useEffect)(()=>{let e=setTimeout(()=>{_(c.current)},100);return()=>clearTimeout(e)},[_]),(0,f.jsxs)(i.ScrollArea,{ref:c,className:`border-border-weak bg-background relative w-full overflow-auto rounded-lg border`,onScroll:b,children:[(0,f.jsxs)(a.Table,{className:(0,u.cn)(`!w-full`,`grid`,`border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_th]:border-b`,`[&_th]:border-b-border-weak`,`[&_tfoot_td]:border-t`),children:[(0,f.jsx)(a.TableHeader,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>(0,f.jsx)(a.TableRow,{className:`flex w-full border-none`,children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`),o=n||void 0,s=r?`left`:i?`right`:void 0,c={width:e.getSize(),...h(e.column)};return(0,f.jsx)(a.TableHead,{"data-pinned":o,"data-last-col":s,className:(0,u.cn)(`relative flex h-9 font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted-weak`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border-weak`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:e.colSpan,style:c,children:(0,f.jsx)(v,{header:e})},e.id)})},e.id))}),(0,f.jsx)(a.TableBody,{style:{height:`${g.getTotalSize()}px`},className:(0,u.cn)(`relative grid w-full`,t&&`h-36`,p?.length===0&&`h-48`),children:t?(0,f.jsx)(a.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(a.TableCell,{children:`loading...`})}):(0,f.jsx)(f.Fragment,{children:g.getVirtualItems().map(e=>{let t=p[e.index],n=t?.id||(t.original&&`id`in t.original?String(t.original.id):null)||(t.original&&`uuid`in t.original?String(t.original.uuid):null);return(0,f.jsx)(y,{id:n??String(e.index),row:t,measureElement:g.measureElement,virtualRow:e,onClickRow:o},n??e.index)})})}),n&&(0,f.jsx)(a.TableFooter,{children:(0,f.jsx)(`div`,{className:`flex w-full justify-center py-2`,children:(0,f.jsx)(l.LoaderIcon,{size:16,className:`animate-spin`,"aria-label":`Loading more data`})})})]}),(0,f.jsx)(i.ScrollBar,{orientation:`horizontal`})]})},x=({onAdd:e,onRefresh:t})=>(0,f.jsxs)(n.Flex,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[(0,f.jsx)(`div`,{className:`max-sm:flex-1`,children:(0,f.jsx)(c.SearchInput,{placeholder:`Search...`})}),(0,f.jsxs)(n.Flex,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&(0,f.jsx)(o.AddNewBtn,{onClick:e}),(0,f.jsx)(s.RefreshBtn,{onClick:t})]})]});function S({data:e,totalCount:t,isLoading:r,isFetching:i,allowLoadMore:a,columns:o,onAdd:s,onRefresh:c,onClickRow:l,onFetchNextPage:u}){"use no memo";let[m,h]=(0,d.useState)({}),[g,_]=(0,d.useState)([]),[v,y]=(0,d.useState)([]),[S,C]=(0,d.useState)({}),w=(0,d.useMemo)(()=>({columnPinning:{right:[`actions`,`update`,`delete`]}}),[]),T=(0,p.useReactTable)({initialState:w,data:e,columns:o,rowCount:t,columnResizeMode:`onChange`,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:(0,p.getCoreRowModel)(),getSortedRowModel:(0,p.getSortedRowModel)(),getFilteredRowModel:(0,p.getFilteredRowModel)(),getFacetedRowModel:(0,p.getFacetedRowModel)(),getFacetedUniqueValues:(0,p.getFacetedUniqueValues)(),getRowId:e=>e.id||e.uuid,state:{rowSelection:m,sorting:g,columnVisibility:S,columnFilters:v},onRowSelectionChange:h,onSortingChange:_,onColumnVisibilityChange:C,onColumnFiltersChange:y});return(0,f.jsxs)(n.Flex,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[(0,f.jsx)(x,{onAdd:s,onRefresh:c}),(0,f.jsx)(n.Flex,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:(0,f.jsx)(b,{table:T,isLoading:r,isFetching:i,allowFetchMore:a,onClickRow:l,onFetchNextPage:u})})]})}exports.Table=S;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/table/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["ChevronUp","ChevronDown","Button","PinOffIcon","DropdownMenu","DropdownMenuTrigger","EllipsisIcon","DropdownMenuContent","DropdownMenuItem","ArrowLeftToLineIcon","ArrowRightToLineIcon","TableRow","TableCell","ScrollArea","Table","TableHeader","TableHead","TableBody","TableFooter","LoaderIcon","ScrollBar","DataTableHeader: React.FC<Props>","Flex","SearchInput","AddNewBtn","RefreshBtn","Flex"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-header.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { type Column, flexRender, type Header, type Table as ReactTable, type Row } from '@tanstack/react-table';\nimport { ArrowLeftToLineIcon, ArrowRightToLineIcon, ChevronDown, ChevronUp, EllipsisIcon, LoaderIcon, PinOffIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { useVirtualizer, type VirtualItem } from '@tanstack/react-virtual';\nimport { Button } from '@/components/ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area';\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport type { AnyEntity } from '@/types';\n\n/**\n * Computes styles for pinned columns\n * @param column Table column\n * @returns CSS styles for pinned columns\n */\nconst getPinningStyles = (column: Column<AnyEntity>): React.CSSProperties => {\n const isPinned = column.getIsPinned();\n return {\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n };\n};\n\nconst SortingIndicator = memo(({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted();\n\n const icons = useMemo(\n () => ({\n asc: <ChevronUp className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n desc: <ChevronDown className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n }),\n []\n );\n\n return sortDirection ? icons[sortDirection] : null;\n});\n\nSortingIndicator.displayName = 'SortingIndicator';\n\nconst PinControls = memo(({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = typeof column.columnDef.header === 'string' ? column.columnDef.header : 'Column';\n\n const handleUnpin = useCallback(() => column.pin(false), [column]);\n const handlePinLeft = useCallback(() => column.pin('left'), [column]);\n const handlePinRight = useCallback(() => column.pin('right'), [column]);\n\n if (!column.getCanPin()) return null;\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n color=\"secondary\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={handleUnpin}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n );\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n color=\"secondary\"\n className=\"size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handlePinLeft}>\n <ArrowLeftToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={handlePinRight}>\n <ArrowRightToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n});\n\nPinControls.displayName = 'PinControls';\n\nconst HeaderContent = memo(({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header;\n\n const handleSort = useCallback(\n (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n column.getToggleSortingHandler()?.(e);\n }\n },\n [column]\n );\n\n const toggleSortHandler = column.getToggleSortingHandler();\n\n if (header.isPlaceholder) {\n return <div className=\"flex items-center justify-between gap-2 truncate\" />;\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n <div\n onClick={toggleSortHandler}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n role={column.getCanSort() ? 'button' : undefined}\n className={cn(column.getCanSort() && 'flex h-full cursor-pointer items-center justify-between gap-2 select-none')}\n >\n <span className=\"truncate\">{flexRender(column.columnDef.header, header.getContext())}</span>\n <SortingIndicator column={column} />\n </div>\n <PinControls column={column} />\n </div>\n );\n});\n\nHeaderContent.displayName = 'HeaderContent';\n\ntype DataTableRowProps = {\n id: string;\n row: Row<AnyEntity>;\n measureElement: (element?: HTMLTableRowElement | null | undefined) => void;\n virtualRow: VirtualItem;\n onClickRow?: (id: string) => void;\n};\nconst DataTableRow = memo(({ row, measureElement, virtualRow, onClickRow }: DataTableRowProps) => {\n const handleClick = useCallback(() => {\n if (!onClickRow) return;\n onClickRow(row.id);\n }, [row.id, onClickRow]);\n return (\n <TableRow\n data-index={virtualRow.index}\n ref={node => measureElement(node)}\n className=\"absolute flex w-full cursor-pointer focus:outline-none\"\n style={{\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleClick}\n tabIndex={onClickRow ? 0 : undefined}\n role={onClickRow ? 'button' : undefined}\n >\n {row.getVisibleCells().map(cell => {\n const isPinned = cell.column.getIsPinned();\n const isLastLeftPinned = isPinned === 'left' && cell.column.getIsLastColumn('left');\n const isFirstRightPinned = isPinned === 'right' && cell.column.getIsFirstColumn('right');\n\n return (\n <TableCell\n key={cell.id}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n style={{\n ...getPinningStyles(cell.column),\n width: cell.column.getSize(),\n }}\n className={cn(\n 'flex overflow-hidden py-2.5',\n 'data-pinned:bg-background/90',\n '[&[data-pinned][data-last-col]]:border-border-weak',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right][data-last-col=right]]:border-l'\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n );\n});\nDataTableRow.displayName = 'DataTableRow';\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>;\n columnsLength?: number;\n isLoading?: boolean;\n isFetching?: boolean;\n allowFetchMore?: boolean;\n onClickRow?: (id: string) => void;\n onFetchNextPage?: () => void;\n}\n\nexport const DataTable = ({ table, isLoading, isFetching, allowFetchMore = true, onClickRow, onFetchNextPage }: DataTableProps) => {\n // 'use no memo'\n\n const tableContainerRef = useRef<HTMLDivElement>(null);\n\n const { rows } = table.getRowModel();\n\n // Configure virtualization for performance with large datasets\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n getScrollElement: () => tableContainerRef.current,\n estimateSize: () => 37, // estimated row height\n measureElement: element => element?.getBoundingClientRect().height ?? undefined,\n overscan: 5, // Render additional rows beyond viewport for smoother scrolling\n });\n\n // Fetch more data when user approaches bottom of table\n const fetchMoreOnBottomReached = useCallback(\n (refEl: HTMLDivElement | null) => {\n if (!refEl) return;\n const { scrollHeight, scrollTop, clientHeight } = refEl;\n // Threshold of 120px from bottom to trigger load more\n if (scrollHeight - scrollTop - clientHeight < 500 && !isFetching && allowFetchMore) {\n onFetchNextPage?.();\n }\n },\n [allowFetchMore, isFetching, onFetchNextPage]\n );\n\n // Handle scroll events to check if more data should be loaded\n const handleScroll = useCallback(\n (ev: React.UIEvent<HTMLDivElement>) => {\n fetchMoreOnBottomReached(ev.currentTarget);\n },\n [fetchMoreOnBottomReached]\n );\n\n // Check for more data on mount and when dependencies change\n useEffect(() => {\n const timer = setTimeout(() => {\n fetchMoreOnBottomReached(tableContainerRef.current);\n }, 100);\n return () => clearTimeout(timer);\n }, [fetchMoreOnBottomReached]);\n\n return (\n <ScrollArea ref={tableContainerRef} className=\"border-border-weak bg-background relative w-full overflow-auto rounded-lg border\" onScroll={handleScroll}>\n <Table\n className={cn(\n '!w-full',\n 'grid',\n 'border-separate border-spacing-0',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\n '[&_th]:border-b',\n '[&_th]:border-b-border-weak',\n '[&_tfoot_td]:border-t'\n )}\n >\n <TableHeader className=\"sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id} className=\"flex w-full border-none\">\n {headerGroup.headers.map(header => {\n const { column } = header;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left');\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right');\n const pinningState = isPinned || undefined;\n const lastColState = isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined;\n\n const headerStyles = {\n width: header.getSize(),\n ...getPinningStyles(header.column),\n };\n\n return (\n <TableHead\n key={header.id}\n data-pinned={pinningState}\n data-last-col={lastColState}\n className={cn(\n 'relative flex h-9 font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted-weak',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border-weak',\n '[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=right][data-last-col=right]]:border-l'\n )}\n colSpan={header.colSpan}\n style={headerStyles}\n >\n <HeaderContent header={header} />\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n className={cn('relative grid w-full', isLoading && 'h-36', rows?.length === 0 && 'h-48')}\n >\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <>\n {rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n const rowId =\n row?.id ||\n (row.original && 'id' in row.original ? String(row.original.id) : null) ||\n (row.original && 'uuid' in row.original ? String(row.original.uuid) : null);\n return (\n <DataTableRow\n key={rowId ?? virtualRow.index}\n id={rowId ?? String(virtualRow.index)}\n row={row}\n measureElement={rowVirtualizer.measureElement}\n virtualRow={virtualRow}\n onClickRow={onClickRow}\n />\n );\n })}\n </>\n )}\n </TableBody>\n {isFetching && (\n <TableFooter>\n <div className=\"flex w-full justify-center py-2\">\n <LoaderIcon size={16} className=\"animate-spin\" aria-label=\"Loading more data\" />\n </div>\n </TableFooter>\n )}\n </Table>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n );\n};\n","import { Flex } from '@/components/layouts/flex';\nimport { AddNewBtn } from '@/components/ui/buttons/add-new';\nimport { RefreshBtn } from '@/components/ui/buttons/refresh';\nimport { SearchInput } from '@/components/ui/inputs/search-input';\n\ntype Props = {\n onAdd?: () => void;\n onRefresh?: () => void;\n};\n\nexport const DataTableHeader: React.FC<Props> = ({ onAdd, onRefresh }) => {\n return (\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <div className=\"max-sm:flex-1\">\n <SearchInput placeholder=\"Search...\" />\n </div>\n <Flex wrap={false} className=\"flex-0 px-0\">\n {!!onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from 'react';\n\nimport type { ColumnDef, ColumnFiltersState, RowSelectionState, SortingState, VisibilityState } from '@tanstack/react-table';\nimport { getCoreRowModel, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';\n\nimport { DataTable } from './data-table';\nimport { DataTableHeader } from './data-table-header';\nimport { Flex } from '../layouts/flex';\n\ntype Props<T> = {\n data: T[];\n totalCount?: number;\n isLoading?: boolean;\n isFetching?: boolean;\n allowLoadMore?: boolean;\n columns: ColumnDef<T>[];\n onAdd?: () => void;\n onRefresh?: () => void;\n onClickRow?: (id: string) => void;\n onFetchNextPage?: () => void;\n};\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n isFetching,\n allowLoadMore,\n columns,\n onAdd,\n onRefresh,\n onClickRow,\n onFetchNextPage,\n}: Props<T>) {\n 'use no memo';\n\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [sorting, setSorting] = useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n\n const initialState = useMemo(\n () => ({\n columnPinning: { right: ['actions', 'update', 'delete'] },\n }),\n []\n );\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: 'onChange',\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: row => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n });\n\n return (\n <Flex vertical wrap={false} gap=\"sm\" align=\"start\" className=\"size-full overflow-y-auto pt-1\">\n <DataTableHeader onAdd={onAdd} onRefresh={onRefresh} />\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto pb-4\">\n <DataTable\n table={table}\n isLoading={isLoading}\n isFetching={isFetching}\n allowFetchMore={allowLoadMore}\n onClickRow={onClickRow}\n onFetchNextPage={onFetchNextPage}\n />\n </Flex>\n </Flex>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["ChevronUp","ChevronDown","Button","PinOffIcon","DropdownMenu","DropdownMenuTrigger","EllipsisIcon","DropdownMenuContent","DropdownMenuItem","ArrowLeftToLineIcon","ArrowRightToLineIcon","TableRow","TableCell","ScrollArea","Table","TableHeader","TableHead","TableBody","TableFooter","LoaderIcon","ScrollBar","DataTableHeader: React.FC<Props>","Flex","SearchInput","AddNewBtn","RefreshBtn","Flex"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-header.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { type Column, flexRender, type Header, type Table as ReactTable, type Row } from '@tanstack/react-table';\nimport { ArrowLeftToLineIcon, ArrowRightToLineIcon, ChevronDown, ChevronUp, EllipsisIcon, LoaderIcon, PinOffIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { useVirtualizer, type VirtualItem } from '@tanstack/react-virtual';\nimport { Button } from '@/components/ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area';\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport type { AnyEntity } from '@/types';\n\n/**\n * Computes styles for pinned columns\n * @param column Table column\n * @returns CSS styles for pinned columns\n */\nconst getPinningStyles = (column: Column<AnyEntity>): React.CSSProperties => {\n const isPinned = column.getIsPinned();\n return {\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n };\n};\n\nconst SortingIndicator = memo(({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted();\n\n const icons = useMemo(\n () => ({\n asc: <ChevronUp className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n desc: <ChevronDown className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n }),\n []\n );\n\n return sortDirection ? icons[sortDirection] : null;\n});\n\nSortingIndicator.displayName = 'SortingIndicator';\n\nconst PinControls = memo(({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = typeof column.columnDef.header === 'string' ? column.columnDef.header : 'Column';\n\n const handleUnpin = useCallback(() => column.pin(false), [column]);\n const handlePinLeft = useCallback(() => column.pin('left'), [column]);\n const handlePinRight = useCallback(() => column.pin('right'), [column]);\n\n if (!column.getCanPin()) return null;\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n color=\"secondary\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={handleUnpin}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n );\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n color=\"secondary\"\n className=\"size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handlePinLeft}>\n <ArrowLeftToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={handlePinRight}>\n <ArrowRightToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n});\n\nPinControls.displayName = 'PinControls';\n\nconst HeaderContent = memo(({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header;\n\n const handleSort = useCallback(\n (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n column.getToggleSortingHandler()?.(e);\n }\n },\n [column]\n );\n\n const toggleSortHandler = column.getToggleSortingHandler();\n\n if (header.isPlaceholder) {\n return <div className=\"flex items-center justify-between gap-2 truncate\" />;\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n <div\n onClick={toggleSortHandler}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n role={column.getCanSort() ? 'button' : undefined}\n className={cn(column.getCanSort() && 'flex h-full cursor-pointer items-center justify-between gap-2 select-none')}\n >\n <span className=\"truncate\">{flexRender(column.columnDef.header, header.getContext())}</span>\n <SortingIndicator column={column} />\n </div>\n <PinControls column={column} />\n </div>\n );\n});\n\nHeaderContent.displayName = 'HeaderContent';\n\ntype DataTableRowProps = {\n id: string;\n row: Row<AnyEntity>;\n measureElement: (element?: HTMLTableRowElement | null | undefined) => void;\n virtualRow: VirtualItem;\n onClickRow?: (id: string) => void;\n};\nconst DataTableRow = memo(({ row, measureElement, virtualRow, onClickRow }: DataTableRowProps) => {\n const handleClick = useCallback(() => {\n if (!onClickRow) return;\n onClickRow(row.id);\n }, [row.id, onClickRow]);\n return (\n <TableRow\n data-index={virtualRow.index}\n ref={node => measureElement(node)}\n className=\"absolute flex w-full cursor-pointer focus:outline-none\"\n style={{\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleClick}\n tabIndex={onClickRow ? 0 : undefined}\n role={onClickRow ? 'button' : undefined}\n >\n {row.getVisibleCells().map(cell => {\n const isPinned = cell.column.getIsPinned();\n const isLastLeftPinned = isPinned === 'left' && cell.column.getIsLastColumn('left');\n const isFirstRightPinned = isPinned === 'right' && cell.column.getIsFirstColumn('right');\n\n return (\n <TableCell\n key={cell.id}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n style={{\n ...getPinningStyles(cell.column),\n width: cell.column.getSize(),\n }}\n className={cn(\n 'flex overflow-hidden py-2.5',\n 'data-pinned:bg-background/90',\n '[&[data-pinned][data-last-col]]:border-border-weak',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right][data-last-col=right]]:border-l'\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n );\n});\nDataTableRow.displayName = 'DataTableRow';\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>;\n columnsLength?: number;\n isLoading?: boolean;\n isFetching?: boolean;\n allowFetchMore?: boolean;\n onClickRow?: (id: string) => void;\n onFetchNextPage?: () => void;\n}\n\nexport const DataTable = ({ table, isLoading, isFetching, allowFetchMore = true, onClickRow, onFetchNextPage }: DataTableProps) => {\n // 'use no memo'\n\n const tableContainerRef = useRef<HTMLDivElement>(null);\n\n const { rows } = table.getRowModel();\n\n // Configure virtualization for performance with large datasets\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n getScrollElement: () => tableContainerRef.current,\n estimateSize: () => 37, // estimated row height\n measureElement: element => element?.getBoundingClientRect().height ?? undefined,\n overscan: 5, // Render additional rows beyond viewport for smoother scrolling\n });\n\n // Fetch more data when user approaches bottom of table\n const fetchMoreOnBottomReached = useCallback(\n (refEl: HTMLDivElement | null) => {\n if (!refEl) return;\n const { scrollHeight, scrollTop, clientHeight } = refEl;\n // Threshold of 120px from bottom to trigger load more\n if (scrollHeight - scrollTop - clientHeight < 500 && !isFetching && allowFetchMore) {\n onFetchNextPage?.();\n }\n },\n [allowFetchMore, isFetching, onFetchNextPage]\n );\n\n // Handle scroll events to check if more data should be loaded\n const handleScroll = useCallback(\n (ev: React.UIEvent<HTMLDivElement>) => {\n fetchMoreOnBottomReached(ev.currentTarget);\n },\n [fetchMoreOnBottomReached]\n );\n\n // Check for more data on mount and when dependencies change\n useEffect(() => {\n const timer = setTimeout(() => {\n fetchMoreOnBottomReached(tableContainerRef.current);\n }, 100);\n return () => clearTimeout(timer);\n }, [fetchMoreOnBottomReached]);\n\n return (\n <ScrollArea ref={tableContainerRef} className=\"border-border-weak bg-background relative w-full overflow-auto rounded-lg border\" onScroll={handleScroll}>\n <Table\n className={cn(\n '!w-full',\n 'grid',\n 'border-separate border-spacing-0',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\n '[&_th]:border-b',\n '[&_th]:border-b-border-weak',\n '[&_tfoot_td]:border-t'\n )}\n >\n <TableHeader className=\"sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id} className=\"flex w-full border-none\">\n {headerGroup.headers.map(header => {\n const { column } = header;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left');\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right');\n const pinningState = isPinned || undefined;\n const lastColState = isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined;\n\n const headerStyles = {\n width: header.getSize(),\n ...getPinningStyles(header.column),\n };\n\n return (\n <TableHead\n key={header.id}\n data-pinned={pinningState}\n data-last-col={lastColState}\n className={cn(\n 'relative flex h-9 font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted-weak',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border-weak',\n '[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=right][data-last-col=right]]:border-l'\n )}\n colSpan={header.colSpan}\n style={headerStyles}\n >\n <HeaderContent header={header} />\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n className={cn('relative grid w-full', isLoading && 'h-36', rows?.length === 0 && 'h-48')}\n >\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <>\n {rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n const rowId =\n row?.id ||\n (row.original && 'id' in row.original ? String(row.original.id) : null) ||\n (row.original && 'uuid' in row.original ? String(row.original.uuid) : null);\n return (\n <DataTableRow\n key={rowId ?? virtualRow.index}\n id={rowId ?? String(virtualRow.index)}\n row={row}\n measureElement={rowVirtualizer.measureElement}\n virtualRow={virtualRow}\n onClickRow={onClickRow}\n />\n );\n })}\n </>\n )}\n </TableBody>\n {isFetching && (\n <TableFooter>\n <div className=\"flex w-full justify-center py-2\">\n <LoaderIcon size={16} className=\"animate-spin\" aria-label=\"Loading more data\" />\n </div>\n </TableFooter>\n )}\n </Table>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n );\n};\n","import { Flex } from '@/components/layouts/flex';\nimport { AddNewBtn } from '@/components/ui/buttons/add-new';\nimport { RefreshBtn } from '@/components/ui/buttons/refresh';\nimport { SearchInput } from '@/components/ui/inputs/search-input';\n\ntype Props = {\n onAdd?: () => void;\n onRefresh?: () => void;\n};\n\nexport const DataTableHeader: React.FC<Props> = ({ onAdd, onRefresh }) => {\n return (\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <div className=\"max-sm:flex-1\">\n <SearchInput placeholder=\"Search...\" />\n </div>\n <Flex wrap={false} className=\"flex-0 px-0\">\n {!!onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from 'react';\n\nimport type { ColumnDef, ColumnFiltersState, RowSelectionState, SortingState, VisibilityState } from '@tanstack/react-table';\nimport { getCoreRowModel, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';\n\nimport { DataTable } from './data-table';\nimport { DataTableHeader } from './data-table-header';\nimport { Flex } from '../layouts/flex';\n\ntype Props<T> = {\n data: T[];\n totalCount?: number;\n isLoading?: boolean;\n isFetching?: boolean;\n allowLoadMore?: boolean;\n columns: ColumnDef<T>[];\n onAdd?: () => void;\n onRefresh?: () => void;\n onClickRow?: (id: string) => void;\n onFetchNextPage?: () => void;\n};\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n isFetching,\n allowLoadMore,\n columns,\n onAdd,\n onRefresh,\n onClickRow,\n onFetchNextPage,\n}: Props<T>) {\n 'use no memo';\n\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [sorting, setSorting] = useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n\n const initialState = useMemo(\n () => ({\n columnPinning: { right: ['actions', 'update', 'delete'] },\n }),\n []\n );\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: 'onChange',\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: row => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n });\n\n return (\n <Flex vertical wrap={false} gap=\"sm\" align=\"start\" className=\"size-full overflow-y-auto pt-1\">\n <DataTableHeader onAdd={onAdd} onRefresh={onRefresh} />\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto pb-4\">\n <DataTable\n table={table}\n isLoading={isLoading}\n isFetching={isFetching}\n allowFetchMore={allowLoadMore}\n onClickRow={onClickRow}\n onFetchNextPage={onFetchNextPage}\n />\n </Flex>\n </Flex>\n );\n}\n"],"mappings":"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"}
|
package/dist/table/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime49 from "react/jsx-runtime";
|
|
2
2
|
import { ColumnDef } from "@tanstack/react-table";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/table/index.d.ts
|
|
@@ -25,7 +25,7 @@ declare function Table<T extends Record<string, unknown>>({
|
|
|
25
25
|
onRefresh,
|
|
26
26
|
onClickRow,
|
|
27
27
|
onFetchNextPage
|
|
28
|
-
}: Props<T>):
|
|
28
|
+
}: Props<T>): react_jsx_runtime49.JSX.Element;
|
|
29
29
|
//#endregion
|
|
30
30
|
export { Table };
|
|
31
31
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/table/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime18 from "react/jsx-runtime";
|
|
2
2
|
import { ColumnDef } from "@tanstack/react-table";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/table/index.d.ts
|
|
@@ -25,7 +25,7 @@ declare function Table<T extends Record<string, unknown>>({
|
|
|
25
25
|
onRefresh,
|
|
26
26
|
onClickRow,
|
|
27
27
|
onFetchNextPage
|
|
28
|
-
}: Props<T>):
|
|
28
|
+
}: Props<T>): react_jsx_runtime18.JSX.Element;
|
|
29
29
|
//#endregion
|
|
30
30
|
export { Table };
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/table/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../dist-BgkALM7U.js";import"../button-variants-aFWCWUvu.js";import{Button as e}from"../button-CriBqo8S.js";import{Flex as t}from"../flex-
|
|
1
|
+
import"../dist-BgkALM7U.js";import"../button-variants-aFWCWUvu.js";import{Button as e}from"../button-CriBqo8S.js";import"../input-B-l6tT_9.js";import{Flex as t}from"../flex-BJgsQWLI.js";import"../paragraph-EiPvpYGr.js";import{DropdownMenu as n,DropdownMenuContent as r,DropdownMenuItem as i,DropdownMenuTrigger as a}from"../dropdown-menu-0CtZazkY.js";import{ScrollArea as o,ScrollBar as s}from"../scroll-area-CEVoMs6W.js";import{Table as c,TableBody as l,TableCell as u,TableFooter as d,TableHead as f,TableHeader as p,TableRow as m}from"../table-Co0GM3Ej.js";import{AddNewBtn as h}from"../add-new-yRbAl8jO.js";import{RefreshBtn as g}from"../refresh-DHZZ9DV4.js";import{SearchInput as _}from"../search-input-CMNLrUk0.js";import{ArrowLeftToLineIcon as v,ArrowRightToLineIcon as y,ChevronDown as b,ChevronUp as x,EllipsisIcon as S,LoaderIcon as C,PinOffIcon as w}from"lucide-react";import{cn as T}from"@customafk/react-toolkit/utils";import{memo as E,useCallback as D,useEffect as O,useMemo as k,useRef as A,useState as j}from"react";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{flexRender as F,getCoreRowModel as I,getFacetedRowModel as L,getFacetedUniqueValues as R,getFilteredRowModel as z,getSortedRowModel as B,useReactTable as V}from"@tanstack/react-table";import{useVirtualizer as H}from"@tanstack/react-virtual";const U=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},W=E(({column:e})=>{let t=e.getIsSorted(),n=k(()=>({asc:N(x,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:N(b,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})}),[]);return t?n[t]:null});W.displayName=`SortingIndicator`;const G=E(({column:t})=>{let o=typeof t.columnDef.header==`string`?t.columnDef.header:`Column`,s=D(()=>t.pin(!1),[t]),c=D(()=>t.pin(`left`),[t]),l=D(()=>t.pin(`right`),[t]);return t.getCanPin()?t.getIsPinned()?N(e,{size:`icon`,variant:`ghost`,color:`secondary`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${o} column`,title:`Unpin ${o} column`,onClick:s,children:N(w,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):P(n,{children:[N(a,{asChild:!0,children:N(e,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${o} column`,title:`Pin options for ${o} column`,children:N(S,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),P(r,{align:`end`,children:[P(i,{onClick:c,children:[N(v,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),P(i,{onClick:l,children:[N(y,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null});G.displayName=`PinControls`;const K=E(({header:e})=>{let{column:t}=e,n=D(e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))},[t]),r=t.getToggleSortingHandler();return e.isPlaceholder?N(`div`,{className:`flex items-center justify-between gap-2 truncate`}):P(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[P(`div`,{onClick:r,onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,role:t.getCanSort()?`button`:void 0,className:T(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),children:[N(`span`,{className:`truncate`,children:F(t.columnDef.header,e.getContext())}),N(W,{column:t})]}),N(G,{column:t})]})});K.displayName=`HeaderContent`;const q=E(({row:e,measureElement:t,virtualRow:n,onClickRow:r})=>{let i=D(()=>{r&&r(e.id)},[e.id,r]);return N(m,{"data-index":n.index,ref:e=>t(e),className:`absolute flex w-full cursor-pointer focus:outline-none`,style:{transform:`translateY(${n.start}px)`},onClick:i,tabIndex:r?0:void 0,role:r?`button`:void 0,children:e.getVisibleCells().map(e=>{let t=e.column.getIsPinned(),n=t===`left`&&e.column.getIsLastColumn(`left`),r=t===`right`&&e.column.getIsFirstColumn(`right`);return N(u,{"data-pinned":t||void 0,"data-last-col":n?`left`:r?`right`:void 0,style:{...U(e.column),width:e.column.getSize()},className:T(`flex overflow-hidden py-2.5`,`data-pinned:bg-background/90`,`[&[data-pinned][data-last-col]]:border-border-weak`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`),children:F(e.column.columnDef.cell,e.getContext())},e.id)})})});q.displayName=`DataTableRow`;const J=({table:e,isLoading:t,isFetching:n,allowFetchMore:r=!0,onClickRow:i,onFetchNextPage:a})=>{let h=A(null),{rows:g}=e.getRowModel(),_=H({count:g.length,getScrollElement:()=>h.current,estimateSize:()=>37,measureElement:e=>e?.getBoundingClientRect().height??void 0,overscan:5}),v=D(e=>{if(!e)return;let{scrollHeight:t,scrollTop:i,clientHeight:o}=e;t-i-o<500&&!n&&r&&a?.()},[r,n,a]),y=D(e=>{v(e.currentTarget)},[v]);return O(()=>{let e=setTimeout(()=>{v(h.current)},100);return()=>clearTimeout(e)},[v]),P(o,{ref:h,className:`border-border-weak bg-background relative w-full overflow-auto rounded-lg border`,onScroll:y,children:[P(c,{className:T(`!w-full`,`grid`,`border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_th]:border-b`,`[&_th]:border-b-border-weak`,`[&_tfoot_td]:border-t`),children:[N(p,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>N(m,{className:`flex w-full border-none`,children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`),a=n||void 0,o=r?`left`:i?`right`:void 0,s={width:e.getSize(),...U(e.column)};return N(f,{"data-pinned":a,"data-last-col":o,className:T(`relative flex h-9 font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted-weak`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border-weak`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:e.colSpan,style:s,children:N(K,{header:e})},e.id)})},e.id))}),N(l,{style:{height:`${_.getTotalSize()}px`},className:T(`relative grid w-full`,t&&`h-36`,g?.length===0&&`h-48`),children:t?N(m,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:N(u,{children:`loading...`})}):N(M,{children:_.getVirtualItems().map(e=>{let t=g[e.index],n=t?.id||(t.original&&`id`in t.original?String(t.original.id):null)||(t.original&&`uuid`in t.original?String(t.original.uuid):null);return N(q,{id:n??String(e.index),row:t,measureElement:_.measureElement,virtualRow:e,onClickRow:i},n??e.index)})})}),n&&N(d,{children:N(`div`,{className:`flex w-full justify-center py-2`,children:N(C,{size:16,className:`animate-spin`,"aria-label":`Loading more data`})})})]}),N(s,{orientation:`horizontal`})]})},Y=({onAdd:e,onRefresh:n})=>P(t,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[N(`div`,{className:`max-sm:flex-1`,children:N(_,{placeholder:`Search...`})}),P(t,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&N(h,{onClick:e}),N(g,{onClick:n})]})]});function X({data:e,totalCount:n,isLoading:r,isFetching:i,allowLoadMore:a,columns:o,onAdd:s,onRefresh:c,onClickRow:l,onFetchNextPage:u}){"use no memo";let[d,f]=j({}),[p,m]=j([]),[h,g]=j([]),[_,v]=j({}),y=k(()=>({columnPinning:{right:[`actions`,`update`,`delete`]}}),[]),b=V({initialState:y,data:e,columns:o,rowCount:n,columnResizeMode:`onChange`,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:I(),getSortedRowModel:B(),getFilteredRowModel:z(),getFacetedRowModel:L(),getFacetedUniqueValues:R(),getRowId:e=>e.id||e.uuid,state:{rowSelection:d,sorting:p,columnVisibility:_,columnFilters:h},onRowSelectionChange:f,onSortingChange:m,onColumnVisibilityChange:v,onColumnFiltersChange:g});return P(t,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[N(Y,{onAdd:s,onRefresh:c}),N(t,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:N(J,{table:b,isLoading:r,isFetching:i,allowFetchMore:a,onClickRow:l,onFetchNextPage:u})})]})}export{X as Table};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{cn as e}from"@customafk/react-toolkit/utils";import{useCallback as t}from"react";import{jsx as n}from"react/jsx-runtime";function r({className:r,onChange:i,onValueChange:a,...o}){let s=t(e=>{i?.(e),a?.(e.target.value)},[i,a]);return n(`textarea`,{"data-slot":`textarea`,className:e(`flex min-h-24 w-full px-3 py-2`,`rounded-md border transition-all duration-200`,`text-text-positive-strong bg-transparent text-sm`,`field-sizing-content resize-y`,`border-border-weak shadow-input`,`caret-primary outline-none`,`placeholder:text-text-positive-muted`,`hover:border-border hover:shadow-input`,`focus:border-primary-strong focus:shadow-none`,`focus-visible:ring-primary-muted focus-visible:ring-4`,`aria-invalid:border-danger aria-invalid:ring-danger-muted`,`aria-invalid:hover:border-danger-strong`,`disabled:cursor-not-allowed disabled:opacity-50`,`disabled:pointer-events-none`,`disabled:border-border-weak/50 disabled:bg-secondary-muted/10`,r),...o,onChange:s})}export{r as Textarea};
|
|
2
|
-
//# sourceMappingURL=textarea-
|
|
2
|
+
//# sourceMappingURL=textarea-BVj6PCYB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-
|
|
1
|
+
{"version":3,"file":"textarea-BVj6PCYB.js","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client';\nimport { useCallback } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange]\n );\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n // Base styles\n 'flex min-h-24 w-full px-3 py-2',\n 'rounded-md border transition-all duration-200',\n 'text-text-positive-strong bg-transparent text-sm',\n 'field-sizing-content resize-y',\n\n // Border and shadow styles\n 'border-border-weak shadow-input',\n 'caret-primary outline-none',\n\n // Placeholder styling\n 'placeholder:text-text-positive-muted',\n\n // State styles\n 'hover:border-border hover:shadow-input',\n 'focus:border-primary-strong focus:shadow-none',\n 'focus-visible:ring-primary-muted focus-visible:ring-4',\n\n // Invalid state\n 'aria-invalid:border-danger aria-invalid:ring-danger-muted',\n 'aria-invalid:hover:border-danger-strong',\n\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'disabled:pointer-events-none',\n 'disabled:border-border-weak/50 disabled:bg-secondary-muted/10',\n\n // Additional custom styling\n className\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"gIAIA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAe,EAClB,GAA8C,CAC7C,IAAW,EAAE,CACb,IAAgB,EAAE,OAAO,MAAM,EAEjC,CAAC,EAAU,EAAc,CAC1B,CACD,OACE,EAAC,WAAA,CACC,YAAU,WACV,UAAW,EAET,iCACA,gDACA,mDACA,gCAGA,kCACA,6BAGA,uCAGA,yCACA,gDACA,wDAGA,4DACA,0CAGA,kDACA,+BACA,gEAGA,EACD,CACD,GAAI,EACJ,SAAU,GACV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=require(`./chunk-CUT6urMc.cjs`);let t=require(`@customafk/react-toolkit/utils`);t=e.__toESM(t);let n=require(`react`);n=e.__toESM(n);let r=require(`react/jsx-runtime`);r=e.__toESM(r);function i({className:e,onChange:i,onValueChange:a,...o}){let s=(0,n.useCallback)(e=>{i?.(e),a?.(e.target.value)},[i,a]);return(0,r.jsx)(`textarea`,{"data-slot":`textarea`,className:(0,t.cn)(`flex min-h-24 w-full px-3 py-2`,`rounded-md border transition-all duration-200`,`text-text-positive-strong bg-transparent text-sm`,`field-sizing-content resize-y`,`border-border-weak shadow-input`,`caret-primary outline-none`,`placeholder:text-text-positive-muted`,`hover:border-border hover:shadow-input`,`focus:border-primary-strong focus:shadow-none`,`focus-visible:ring-primary-muted focus-visible:ring-4`,`aria-invalid:border-danger aria-invalid:ring-danger-muted`,`aria-invalid:hover:border-danger-strong`,`disabled:cursor-not-allowed disabled:opacity-50`,`disabled:pointer-events-none`,`disabled:border-border-weak/50 disabled:bg-secondary-muted/10`,e),...o,onChange:s})}Object.defineProperty(exports,`Textarea`,{enumerable:!0,get:function(){return i}});
|
|
2
|
-
//# sourceMappingURL=textarea-
|
|
2
|
+
//# sourceMappingURL=textarea-C3ZQALlB.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-
|
|
1
|
+
{"version":3,"file":"textarea-C3ZQALlB.cjs","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client';\nimport { useCallback } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange]\n );\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n // Base styles\n 'flex min-h-24 w-full px-3 py-2',\n 'rounded-md border transition-all duration-200',\n 'text-text-positive-strong bg-transparent text-sm',\n 'field-sizing-content resize-y',\n\n // Border and shadow styles\n 'border-border-weak shadow-input',\n 'caret-primary outline-none',\n\n // Placeholder styling\n 'placeholder:text-text-positive-muted',\n\n // State styles\n 'hover:border-border hover:shadow-input',\n 'focus:border-primary-strong focus:shadow-none',\n 'focus-visible:ring-primary-muted focus-visible:ring-4',\n\n // Invalid state\n 'aria-invalid:border-danger aria-invalid:ring-danger-muted',\n 'aria-invalid:hover:border-danger-strong',\n\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'disabled:pointer-events-none',\n 'disabled:border-border-weak/50 disabled:bg-secondary-muted/10',\n\n // Additional custom styling\n className\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"+LAIA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,GAAA,EAAA,EAAA,aACH,GAA8C,CAC7C,IAAW,EAAE,CACb,IAAgB,EAAE,OAAO,MAAM,EAEjC,CAAC,EAAU,EAAc,CAC1B,CACD,OACE,EAAA,EAAA,KAAC,WAAA,CACC,YAAU,WACV,WAAA,EAAA,EAAA,IAEE,iCACA,gDACA,mDACA,gCAGA,kCACA,6BAGA,uCAGA,yCACA,gDACA,wDAGA,4DACA,0CAGA,kDACA,+BACA,gEAGA,EACD,CACD,GAAI,EACJ,SAAU,GACV"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as class_variance_authority_types8 from "class-variance-authority/types";
|
|
1
|
+
import * as react_jsx_runtime279 from "react/jsx-runtime";
|
|
3
2
|
import { VariantProps } from "class-variance-authority";
|
|
4
3
|
import { Toggle } from "radix-ui";
|
|
4
|
+
import * as class_variance_authority_types8 from "class-variance-authority/types";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/ui/toggle.d.ts
|
|
7
7
|
declare const toggleVariants: (props?: ({
|
|
@@ -13,7 +13,7 @@ declare function Toggle$1({
|
|
|
13
13
|
variant,
|
|
14
14
|
size,
|
|
15
15
|
...props
|
|
16
|
-
}: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>):
|
|
16
|
+
}: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime279.JSX.Element;
|
|
17
17
|
//#endregion
|
|
18
18
|
export { Toggle$1 as Toggle, toggleVariants };
|
|
19
|
-
//# sourceMappingURL=toggle-
|
|
19
|
+
//# sourceMappingURL=toggle-Bj-orQro.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime257 from "react/jsx-runtime";
|
|
2
|
+
import * as class_variance_authority_types7 from "class-variance-authority/types";
|
|
2
3
|
import { VariantProps } from "class-variance-authority";
|
|
3
4
|
import { Toggle } from "radix-ui";
|
|
4
|
-
import * as class_variance_authority_types7 from "class-variance-authority/types";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/ui/toggle.d.ts
|
|
7
7
|
declare const toggleVariants: (props?: ({
|
|
@@ -13,7 +13,7 @@ declare function Toggle$1({
|
|
|
13
13
|
variant,
|
|
14
14
|
size,
|
|
15
15
|
...props
|
|
16
|
-
}: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>):
|
|
16
|
+
}: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime257.JSX.Element;
|
|
17
17
|
//#endregion
|
|
18
18
|
export { Toggle$1 as Toggle, toggleVariants };
|
|
19
|
-
//# sourceMappingURL=toggle-
|
|
19
|
+
//# sourceMappingURL=toggle-BvgvHcLZ.d.cts.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime275 from "react/jsx-runtime";
|
|
2
2
|
import { Tooltip } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/tooltip.d.ts
|
|
5
5
|
declare function TooltipProvider({
|
|
6
6
|
delayDuration,
|
|
7
7
|
...props
|
|
8
|
-
}: React.ComponentProps<typeof Tooltip.Provider>):
|
|
8
|
+
}: React.ComponentProps<typeof Tooltip.Provider>): react_jsx_runtime275.JSX.Element;
|
|
9
9
|
declare function Tooltip$1({
|
|
10
10
|
...props
|
|
11
|
-
}: React.ComponentProps<typeof Tooltip.Root>):
|
|
11
|
+
}: React.ComponentProps<typeof Tooltip.Root>): react_jsx_runtime275.JSX.Element;
|
|
12
12
|
declare function TooltipTrigger({
|
|
13
13
|
...props
|
|
14
|
-
}: React.ComponentProps<typeof Tooltip.Trigger>):
|
|
14
|
+
}: React.ComponentProps<typeof Tooltip.Trigger>): react_jsx_runtime275.JSX.Element;
|
|
15
15
|
declare function TooltipContent({
|
|
16
16
|
className,
|
|
17
17
|
sideOffset,
|
|
18
18
|
children,
|
|
19
19
|
...props
|
|
20
|
-
}: React.ComponentProps<typeof Tooltip.Content>):
|
|
20
|
+
}: React.ComponentProps<typeof Tooltip.Content>): react_jsx_runtime275.JSX.Element;
|
|
21
21
|
//#endregion
|
|
22
22
|
export { Tooltip$1 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
23
|
-
//# sourceMappingURL=tooltip-
|
|
23
|
+
//# sourceMappingURL=tooltip-DTDkf-An.d.ts.map
|