@customafk/lunas-ui 0.2.25 → 0.2.26
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/{alert-B7TDxb35.cjs → alert-6_f_JgU-.cjs} +2 -2
- package/dist/{alert-B7TDxb35.cjs.map → alert-6_f_JgU-.cjs.map} +1 -1
- package/dist/{alert-C-Y4ZWNd.mjs → alert-BSAtkBnX.mjs} +2 -2
- package/dist/{alert-C-Y4ZWNd.mjs.map → alert-BSAtkBnX.mjs.map} +1 -1
- package/dist/{alert-BETfoslt.d.mts → alert-Ck2z0ECv.d.mts} +6 -6
- package/dist/{alert-CMZEZjzm.d.cts → alert-Dsq6vAs6.d.cts} +6 -6
- package/dist/avatar-CK1R4r0j.mjs +2 -0
- package/dist/{avatar-SJmvlfqm.mjs.map → avatar-CK1R4r0j.mjs.map} +1 -1
- package/dist/avatar-aVxo69zP.cjs +2 -0
- package/dist/{avatar-CTS9-raY.cjs.map → avatar-aVxo69zP.cjs.map} +1 -1
- package/dist/{badge-9z9Eg_bC.d.cts → badge-BluO4Nx_.d.cts} +7 -7
- package/dist/{badge-uQ0pIZbQ.cjs → badge-DMnKV_uW.cjs} +2 -2
- package/dist/{badge-uQ0pIZbQ.cjs.map → badge-DMnKV_uW.cjs.map} +1 -1
- package/dist/{badge-BTtXqVuq.d.mts → badge-DwSr25mK.d.mts} +7 -7
- package/dist/{badge-DSwkF4C4.mjs → badge-utjRo-lW.mjs} +2 -2
- package/dist/{badge-DSwkF4C4.mjs.map → badge-utjRo-lW.mjs.map} +1 -1
- package/dist/{button-y6EPgwvZ.d.cts → button-BnV_vesk.d.cts} +5 -5
- package/dist/button-BqxBQ4Kr.mjs +2 -0
- package/dist/{button-Bc8L9sFb.mjs.map → button-BqxBQ4Kr.mjs.map} +1 -1
- package/dist/button-Bu4ejNOW.cjs +2 -0
- package/dist/{button-CwDT3m4m.cjs.map → button-Bu4ejNOW.cjs.map} +1 -1
- package/dist/{button-DGSNru3Z.d.mts → button-DYdNy15v.d.mts} +5 -5
- package/dist/{calendar-C2psGpju.mjs → calendar-CHVujBHK.mjs} +2 -2
- package/dist/{calendar-C2psGpju.mjs.map → calendar-CHVujBHK.mjs.map} +1 -1
- package/dist/{calendar-BMXIBCsr.cjs → calendar-ChaYPTJO.cjs} +2 -2
- package/dist/{calendar-BMXIBCsr.cjs.map → calendar-ChaYPTJO.cjs.map} +1 -1
- package/dist/cards/grid-product-card.cjs +1 -1
- package/dist/cards/grid-product-card.mjs +1 -1
- package/dist/cards/product-card.cjs +1 -1
- package/dist/cards/product-card.mjs +1 -1
- package/dist/cards/simple-card.cjs +1 -1
- package/dist/cards/simple-card.d.cts +2 -2
- package/dist/cards/simple-card.d.mts +2 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/{checkbox-Di7ACavC.cjs → checkbox-BQ_TclX9.cjs} +2 -2
- package/dist/{checkbox-Di7ACavC.cjs.map → checkbox-BQ_TclX9.cjs.map} +1 -1
- package/dist/{checkbox-Bwy_4QS_.mjs → checkbox-CJsl9OjF.mjs} +2 -2
- package/dist/{checkbox-Bwy_4QS_.mjs.map → checkbox-CJsl9OjF.mjs.map} +1 -1
- package/dist/close-BMhGSmGs.mjs +2 -0
- package/dist/{close-BS6EeCrQ.mjs.map → close-BMhGSmGs.mjs.map} +1 -1
- package/dist/{close-DXk_H3Gt.cjs → close-DUBEKxhw.cjs} +2 -2
- package/dist/{close-DXk_H3Gt.cjs.map → close-DUBEKxhw.cjs.map} +1 -1
- package/dist/{cms-layout-DCODI3eE.mjs → cms-layout--NUD8VVh.mjs} +2 -2
- package/dist/{cms-layout-DCODI3eE.mjs.map → cms-layout--NUD8VVh.mjs.map} +1 -1
- package/dist/{cms-layout-mgZdCNOL.cjs → cms-layout-COfACv3M.cjs} +2 -2
- package/dist/{cms-layout-mgZdCNOL.cjs.map → cms-layout-COfACv3M.cjs.map} +1 -1
- package/dist/{command-B5DpL6OG.mjs → command-Bvauothg.mjs} +2 -2
- package/dist/{command-B5DpL6OG.mjs.map → command-Bvauothg.mjs.map} +1 -1
- package/dist/{command-SHd-d_o0.cjs → command-CTdjZi1F.cjs} +2 -2
- package/dist/{command-SHd-d_o0.cjs.map → command-CTdjZi1F.cjs.map} +1 -1
- package/dist/data-display/country.cjs +1 -1
- package/dist/data-display/country.mjs +1 -1
- package/dist/data-display/data-list.cjs +1 -1
- package/dist/data-display/data-list.mjs +1 -1
- package/dist/data-display/date-tooltip.cjs +1 -1
- package/dist/data-display/date-tooltip.mjs +1 -1
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.mjs +1 -1
- package/dist/data-display/empty.cjs +1 -1
- package/dist/data-display/empty.mjs +1 -1
- package/dist/data-display/name.cjs +1 -1
- package/dist/data-display/name.mjs +1 -1
- package/dist/data-display/phone-number.cjs +1 -1
- package/dist/data-display/phone-number.mjs +1 -1
- package/dist/data-display/role-badge.cjs +1 -1
- package/dist/data-display/role-badge.mjs +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.d.cts +2 -3
- package/dist/data-display/statistic.d.mts +1 -2
- package/dist/data-display/statistic.mjs +1 -1
- package/dist/data-display/user.cjs +1 -1
- package/dist/data-display/user.mjs +1 -1
- package/dist/{date-D_nB7Lh1.mjs → date-BQ0c19uk.mjs} +2 -2
- package/dist/{date-D_nB7Lh1.mjs.map → date-BQ0c19uk.mjs.map} +1 -1
- package/dist/{date-a3RI5Pwo.cjs → date-DtajzNoy.cjs} +2 -2
- package/dist/{date-a3RI5Pwo.cjs.map → date-DtajzNoy.cjs.map} +1 -1
- package/dist/{dialog-Z2IoE4ra.d.mts → dialog-C0DdEwn5.d.cts} +12 -12
- package/dist/{dialog-o_68LQXd.cjs → dialog-DEnyBH2X.cjs} +2 -2
- package/dist/{dialog-o_68LQXd.cjs.map → dialog-DEnyBH2X.cjs.map} +1 -1
- package/dist/{dialog-DPEdvGiI.d.cts → dialog-enbWwzaM.d.mts} +12 -12
- package/dist/dialog-jqiIqxlm.mjs +2 -0
- package/dist/{dialog-DG4vMCr5.mjs.map → dialog-jqiIqxlm.mjs.map} +1 -1
- package/dist/dialogs/confirm-dialog.cjs +1 -1
- package/dist/dialogs/confirm-dialog.mjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +27 -27
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +25 -25
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/error-dialog.cjs +1 -1
- package/dist/dialogs/error-dialog.mjs +1 -1
- package/dist/dialogs/loading-dialog.cjs +1 -1
- package/dist/dialogs/loading-dialog.mjs +1 -1
- package/dist/dist-CAeolvAH.cjs +2 -0
- package/dist/dist-CAeolvAH.cjs.map +1 -0
- package/dist/dist-DdGJ50nX.mjs +2 -0
- package/dist/dist-DdGJ50nX.mjs.map +1 -0
- package/dist/{dropdown-menu-BlsIwe4B.mjs → dropdown-menu-B_uBxY94.mjs} +2 -2
- package/dist/{dropdown-menu-BlsIwe4B.mjs.map → dropdown-menu-B_uBxY94.mjs.map} +1 -1
- package/dist/{dropdown-menu-Ct9BLGfa.cjs → dropdown-menu-DMwvWoxe.cjs} +2 -2
- package/dist/{dropdown-menu-Ct9BLGfa.cjs.map → dropdown-menu-DMwvWoxe.cjs.map} +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.d.cts +4 -5
- package/dist/features/descriptions/index.d.mts +6 -7
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/search-modal/index.cjs +1 -1
- package/dist/features/search-modal/index.d.cts +2 -2
- package/dist/features/search-modal/index.d.mts +2 -2
- package/dist/features/search-modal/index.mjs +1 -1
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.d.cts +1 -1
- package/dist/features/tables/index.d.mts +2 -2
- package/dist/features/tables/index.mjs +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +1 -1
- package/dist/features/tanstack-form/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/index.d.mts +1 -1
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/{field-Mn2bf2Ns.mjs → field-Bh7Hq4Lo.mjs} +2 -2
- package/dist/{field-Mn2bf2Ns.mjs.map → field-Bh7Hq4Lo.mjs.map} +1 -1
- package/dist/{field-enVJXFvC.cjs → field-DTGEedKl.cjs} +2 -2
- package/dist/{field-enVJXFvC.cjs.map → field-DTGEedKl.cjs.map} +1 -1
- package/dist/{flex-Br7F9Fln.mjs → flex-Bl5yzx6g.mjs} +2 -2
- package/dist/{flex-Br7F9Fln.mjs.map → flex-Bl5yzx6g.mjs.map} +1 -1
- package/dist/{flex-BbbogTsZ.cjs → flex-DYh2t8ft.cjs} +2 -2
- package/dist/{flex-BbbogTsZ.cjs.map → flex-DYh2t8ft.cjs.map} +1 -1
- package/dist/{heading-BnaNuvDS.mjs → heading-B1t9baTw.mjs} +2 -2
- package/dist/{heading-BnaNuvDS.mjs.map → heading-B1t9baTw.mjs.map} +1 -1
- package/dist/{heading-AKz5ewy-.cjs → heading-wUXEbicM.cjs} +2 -2
- package/dist/{heading-AKz5ewy-.cjs.map → heading-wUXEbicM.cjs.map} +1 -1
- package/dist/image-C4gMBmyV.mjs +2 -0
- package/dist/{image-C-CdKKP1.mjs.map → image-C4gMBmyV.mjs.map} +1 -1
- package/dist/image-Y7gCz7uE.cjs +2 -0
- package/dist/{image-B1Dm5LWk.cjs.map → image-Y7gCz7uE.cjs.map} +1 -1
- package/dist/{index-DQA0fwM5.d.cts → index-C35BNdrJ.d.cts} +633 -303
- package/dist/{index-GMITpWH3.d.mts → index-C4PMwFiL.d.mts} +4 -4
- package/dist/{index-Che417mo.d.cts → index-CVbUzeOi.d.cts} +27 -28
- package/dist/{index-qRmNM-0U.d.mts → index-Cek8sD8Z.d.mts} +635 -305
- package/dist/{index-C81U0XWP.d.cts → index-DpdXz-q5.d.cts} +4 -4
- package/dist/{index-vsBzzlFs.d.mts → index-rE1M5FGs.d.mts} +27 -28
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +1 -1
- package/dist/{input-BMOYFJYM.cjs → input-1ceJxxFI.cjs} +2 -2
- package/dist/{input-BMOYFJYM.cjs.map → input-1ceJxxFI.cjs.map} +1 -1
- package/dist/{input-CjubfyGk.d.cts → input-AU25j62E.d.cts} +6 -6
- package/dist/{input-DLRypEj3.mjs → input-CKFQdvqY.mjs} +2 -2
- package/dist/{input-DLRypEj3.mjs.map → input-CKFQdvqY.mjs.map} +1 -1
- package/dist/{input-DEChxakv.d.mts → input-ZL65yvYU.d.mts} +4 -4
- package/dist/{label-DYsRdKMt.cjs → label-BHbqbBtO.cjs} +2 -2
- package/dist/{label-DYsRdKMt.cjs.map → label-BHbqbBtO.cjs.map} +1 -1
- package/dist/label-CE2m0U_j.mjs +2 -0
- package/dist/{label-BukQnBn7.mjs.map → label-CE2m0U_j.mjs.map} +1 -1
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +5 -6
- package/dist/layouts/flex.d.mts +3 -4
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/grid.cjs +1 -1
- package/dist/layouts/grid.mjs +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/pages/FeatureDeveloping.cjs +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.mts +2 -2
- package/dist/pages/FeatureDeveloping.mjs +1 -1
- package/dist/pages/FeatureFixing.cjs +1 -1
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.mts +2 -2
- package/dist/pages/FeatureFixing.mjs +1 -1
- package/dist/pages/LoginPage.cjs +1 -1
- package/dist/pages/LoginPage.d.cts +2 -2
- package/dist/pages/LoginPage.d.mts +2 -2
- package/dist/pages/LoginPage.mjs +1 -1
- package/dist/pages/NotAuthorized.cjs +1 -1
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.mts +2 -2
- package/dist/pages/NotAuthorized.mjs +1 -1
- package/dist/pages/NotFound.cjs +1 -1
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.mts +2 -2
- package/dist/pages/NotFound.mjs +1 -1
- package/dist/pages/RegisterPage.cjs +1 -1
- package/dist/pages/RegisterPage.d.cts +2 -2
- package/dist/pages/RegisterPage.d.mts +2 -2
- package/dist/pages/RegisterPage.mjs +1 -1
- package/dist/pages/VerifyEmailPage.cjs +1 -1
- package/dist/pages/VerifyEmailPage.d.cts +2 -2
- package/dist/pages/VerifyEmailPage.d.mts +2 -2
- package/dist/pages/VerifyEmailPage.mjs +1 -1
- package/dist/{paragraph-DN85Huc4.cjs → paragraph-D-JHj7EP.cjs} +2 -2
- package/dist/{paragraph-DN85Huc4.cjs.map → paragraph-D-JHj7EP.cjs.map} +1 -1
- package/dist/{paragraph-CnHNC0rS.mjs → paragraph-J_QbLq9_.mjs} +2 -2
- package/dist/{paragraph-CnHNC0rS.mjs.map → paragraph-J_QbLq9_.mjs.map} +1 -1
- package/dist/{payment-layout-DquWXt_w.cjs → payment-layout-8rRJJa0f.cjs} +2 -2
- package/dist/{payment-layout-DquWXt_w.cjs.map → payment-layout-8rRJJa0f.cjs.map} +1 -1
- package/dist/{payment-layout-YLfa3T79.mjs → payment-layout-BdGZbGO-.mjs} +2 -2
- package/dist/{payment-layout-YLfa3T79.mjs.map → payment-layout-BdGZbGO-.mjs.map} +1 -1
- package/dist/popover-BCzVvfnV.mjs +2 -0
- package/dist/{popover-DvGJ23lJ.mjs.map → popover-BCzVvfnV.mjs.map} +1 -1
- package/dist/{popover-AEt-aSy3.cjs → popover-Bnrgg4do.cjs} +2 -2
- package/dist/{popover-AEt-aSy3.cjs.map → popover-Bnrgg4do.cjs.map} +1 -1
- package/dist/progress-BXWPPNt5.cjs +2 -0
- package/dist/{progress-DE1FdQ1J.cjs.map → progress-BXWPPNt5.cjs.map} +1 -1
- package/dist/progress-BcEEbgJJ.mjs +2 -0
- package/dist/{progress-2G9rCupJ.mjs.map → progress-BcEEbgJJ.mjs.map} +1 -1
- package/dist/radio-group-CsmpBZTK.mjs +2 -0
- package/dist/{radio-group-fN6o0QBx.mjs.map → radio-group-CsmpBZTK.mjs.map} +1 -1
- package/dist/{radio-group-C7FAAawm.cjs → radio-group-KMvVXCIk.cjs} +2 -2
- package/dist/{radio-group-C7FAAawm.cjs.map → radio-group-KMvVXCIk.cjs.map} +1 -1
- package/dist/{resizable-DDPMwd28.cjs → resizable-C7uLlTGB.cjs} +2 -2
- package/dist/{resizable-DDPMwd28.cjs.map → resizable-C7uLlTGB.cjs.map} +1 -1
- package/dist/{resizable-BxsL978e.mjs → resizable-em2svgMz.mjs} +2 -2
- package/dist/{resizable-BxsL978e.mjs.map → resizable-em2svgMz.mjs.map} +1 -1
- package/dist/{search-modal-DZI6O6ua.mjs → search-modal-DyOsqK-4.mjs} +2 -2
- package/dist/{search-modal-DZI6O6ua.mjs.map → search-modal-DyOsqK-4.mjs.map} +1 -1
- package/dist/{search-modal-C-jNqQI1.cjs → search-modal-zmavzZRx.cjs} +2 -2
- package/dist/{search-modal-C-jNqQI1.cjs.map → search-modal-zmavzZRx.cjs.map} +1 -1
- package/dist/{select-Ze8Fq88G.mjs → select-C2Ro2wmj.mjs} +2 -2
- package/dist/{select-Ze8Fq88G.mjs.map → select-C2Ro2wmj.mjs.map} +1 -1
- package/dist/{select-DzylYFes.cjs → select-DHiTqZeX.cjs} +2 -2
- package/dist/{select-DzylYFes.cjs.map → select-DHiTqZeX.cjs.map} +1 -1
- package/dist/{separator-BwZb12bh.cjs → separator-jytY1CPq.cjs} +2 -2
- package/dist/{separator-BwZb12bh.cjs.map → separator-jytY1CPq.cjs.map} +1 -1
- package/dist/separator-yTKDuMWb.mjs +2 -0
- package/dist/{separator-DXnFHf3v.mjs.map → separator-yTKDuMWb.mjs.map} +1 -1
- package/dist/sheet-DDBCHwn6.mjs +2 -0
- package/dist/{sheet-GUUifKAd.mjs.map → sheet-DDBCHwn6.mjs.map} +1 -1
- package/dist/{sheet-CaDXTx7n.cjs → sheet-DuMrjidC.cjs} +2 -2
- package/dist/{sheet-CaDXTx7n.cjs.map → sheet-DuMrjidC.cjs.map} +1 -1
- package/dist/{sidebar-CcJCnqLb.cjs → sidebar-BXrGXVxx.cjs} +2 -2
- package/dist/{sidebar-CcJCnqLb.cjs.map → sidebar-BXrGXVxx.cjs.map} +1 -1
- package/dist/{sidebar-C_jArO1q.mjs → sidebar-De1RZMAG.mjs} +2 -2
- package/dist/{sidebar-C_jArO1q.mjs.map → sidebar-De1RZMAG.mjs.map} +1 -1
- package/dist/skeleton-CHympz8k.cjs +2 -0
- package/dist/{skeleton-BfMCjXYM.cjs.map → skeleton-CHympz8k.cjs.map} +1 -1
- package/dist/skeleton-Czl96pWA.mjs +2 -0
- package/dist/{skeleton-BLwzHejl.mjs.map → skeleton-Czl96pWA.mjs.map} +1 -1
- package/dist/spinner-CWUvnJQw.mjs +2 -0
- package/dist/{spinner-BaZ19Lla.mjs.map → spinner-CWUvnJQw.mjs.map} +1 -1
- package/dist/spinner-DgusnQMw.cjs +2 -0
- package/dist/{spinner-rA8pMY6v.cjs.map → spinner-DgusnQMw.cjs.map} +1 -1
- package/dist/{tables-EnSyNV7J.mjs → tables-BQ-QiA1V.mjs} +3 -3
- package/dist/{tables-EnSyNV7J.mjs.map → tables-BQ-QiA1V.mjs.map} +1 -1
- package/dist/{tables-CI2AZcbt.cjs → tables-LRWPOv2a.cjs} +3 -3
- package/dist/{tables-CI2AZcbt.cjs.map → tables-LRWPOv2a.cjs.map} +1 -1
- package/dist/tanstack-form-Bi87PL6v.mjs +2 -0
- package/dist/tanstack-form-Bi87PL6v.mjs.map +1 -0
- package/dist/tanstack-form-CaHoSFUA.cjs +2 -0
- package/dist/tanstack-form-CaHoSFUA.cjs.map +1 -0
- package/dist/text-editor-D182J9Y5.mjs +2 -0
- package/dist/{text-editor-ae2UTKW8.mjs.map → text-editor-D182J9Y5.mjs.map} +1 -1
- package/dist/text-editor-Dy3_hyNw.cjs +2 -0
- package/dist/{text-editor-BHmVZnEK.cjs.map → text-editor-Dy3_hyNw.cjs.map} +1 -1
- package/dist/{textarea-CEtUNLwy.mjs → textarea-Cvdq7UAn.mjs} +2 -2
- package/dist/{textarea-CEtUNLwy.mjs.map → textarea-Cvdq7UAn.mjs.map} +1 -1
- package/dist/{textarea-DZ86A_cm.cjs → textarea-SPXNe-iZ.cjs} +2 -2
- package/dist/{textarea-DZ86A_cm.cjs.map → textarea-SPXNe-iZ.cjs.map} +1 -1
- package/dist/tooltip-BMdzWaaH.mjs +2 -0
- package/dist/{tooltip-Cy0HbyAx.mjs.map → tooltip-BMdzWaaH.mjs.map} +1 -1
- package/dist/{tooltip-itUmYz9k.cjs → tooltip-DC6i1A25.cjs} +2 -2
- package/dist/{tooltip-itUmYz9k.cjs.map → tooltip-DC6i1A25.cjs.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +5 -5
- package/dist/typography/paragraph.d.mts +3 -3
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/typography/title.cjs +1 -1
- package/dist/typography/title.d.cts +2 -3
- package/dist/typography/title.d.mts +2 -3
- package/dist/typography/title.mjs +1 -1
- package/dist/ui/alert-dialog.cjs +1 -1
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/alert-dialog.d.mts +12 -12
- package/dist/ui/alert-dialog.mjs +1 -1
- package/dist/ui/alert.cjs +1 -1
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/alert.mjs +1 -1
- package/dist/ui/aspect-ratio.cjs +1 -1
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.mts +2 -2
- package/dist/ui/aspect-ratio.mjs +1 -1
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/avatar.d.mts +4 -4
- package/dist/ui/avatar.mjs +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.mts +1 -1
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/breadcrumb.cjs +1 -1
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.mts +8 -8
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.d.cts +6 -6
- package/dist/ui/button-group.d.mts +6 -6
- package/dist/ui/button-group.mjs +1 -1
- package/dist/ui/button.cjs +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/button.mjs +1 -1
- package/dist/ui/buttons/add-new.cjs +1 -1
- package/dist/ui/buttons/add-new.mjs +1 -1
- package/dist/ui/buttons/edit.cjs +1 -1
- package/dist/ui/buttons/edit.mjs +1 -1
- package/dist/ui/buttons/refresh.cjs +1 -1
- package/dist/ui/buttons/refresh.mjs +1 -1
- package/dist/ui/buttons/trash.cjs +1 -1
- package/dist/ui/buttons/trash.mjs +1 -1
- package/dist/ui/buttons/upload-image.cjs +1 -1
- package/dist/ui/buttons/upload-image.mjs +1 -1
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.mts +4 -4
- package/dist/ui/calendar.mjs +1 -1
- package/dist/ui/card.cjs +1 -1
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.mts +8 -8
- package/dist/ui/card.mjs +1 -1
- package/dist/ui/carousel.cjs +1 -1
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/carousel.d.mts +7 -7
- package/dist/ui/carousel.mjs +1 -1
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/checkbox.d.mts +2 -2
- package/dist/ui/checkbox.mjs +1 -1
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.mts +4 -4
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/command.d.mts +11 -11
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.mts +16 -16
- package/dist/ui/context-menu.mjs +1 -1
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/dialog.mjs +1 -1
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.mts +11 -11
- package/dist/ui/drawer.mjs +1 -1
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.mts +16 -16
- package/dist/ui/dropdown-menu.mjs +1 -1
- package/dist/ui/empty.cjs +1 -1
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.mts +9 -9
- package/dist/ui/empty.mjs +1 -1
- package/dist/ui/field.cjs +1 -1
- package/dist/ui/field.d.cts +23 -24
- package/dist/ui/field.d.mts +23 -24
- package/dist/ui/field.mjs +1 -1
- package/dist/ui/file-uploader.cjs +2 -2
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/file-uploader.mjs +2 -2
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.d.cts +30 -12
- package/dist/ui/form.d.mts +30 -12
- package/dist/ui/form.mjs +1 -1
- package/dist/ui/hover-card.cjs +1 -1
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.mts +4 -4
- package/dist/ui/hover-card.mjs +1 -1
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/input-otp.cjs +1 -1
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.mts +5 -5
- package/dist/ui/input-otp.mjs +1 -1
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +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.mts +3 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.d.cts +16 -16
- package/dist/ui/item.d.mts +13 -13
- package/dist/ui/item.mjs +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/label.d.mts +2 -2
- package/dist/ui/label.mjs +1 -1
- package/dist/ui/menubar.cjs +1 -1
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/menubar.d.mts +17 -17
- package/dist/ui/menubar.mjs +1 -1
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.mts +3 -3
- package/dist/ui/multi-select.mjs +1 -1
- package/dist/ui/navigation-menu.cjs +1 -1
- package/dist/ui/navigation-menu.d.cts +11 -11
- package/dist/ui/navigation-menu.d.mts +9 -9
- package/dist/ui/navigation-menu.mjs +1 -1
- package/dist/ui/pagination.cjs +1 -1
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.mts +9 -9
- package/dist/ui/pagination.mjs +1 -1
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +6 -6
- package/dist/ui/popover.d.mts +6 -6
- package/dist/ui/popover.mjs +1 -1
- package/dist/ui/progress.cjs +1 -1
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.mts +2 -2
- package/dist/ui/progress.mjs +1 -1
- package/dist/ui/radio-group.cjs +1 -1
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.mts +3 -3
- package/dist/ui/radio-group.mjs +1 -1
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +9 -9
- package/dist/ui/resizable.d.mts +9 -9
- package/dist/ui/resizable.mjs +1 -1
- package/dist/ui/scroll-area.cjs +1 -1
- package/dist/ui/scroll-area.d.cts +5 -6
- package/dist/ui/scroll-area.d.mts +5 -6
- package/dist/ui/scroll-area.mjs +1 -1
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +9 -9
- package/dist/ui/select.d.mts +9 -9
- package/dist/ui/select.mjs +1 -1
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/separator.d.mts +2 -2
- package/dist/ui/separator.mjs +1 -1
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.mts +9 -9
- package/dist/ui/sheet.mjs +1 -1
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.d.cts +29 -29
- package/dist/ui/sidebar.d.mts +27 -27
- package/dist/ui/sidebar.mjs +1 -1
- package/dist/ui/skeleton.cjs +1 -1
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.mts +2 -2
- package/dist/ui/skeleton.mjs +1 -1
- package/dist/ui/slider.cjs +1 -1
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.mts +2 -2
- package/dist/ui/slider.mjs +1 -1
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/spinner.cjs +1 -1
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.mts +2 -2
- package/dist/ui/spinner.mjs +1 -1
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.mts +2 -2
- package/dist/ui/switch.mjs +1 -1
- package/dist/ui/table.cjs +1 -1
- package/dist/ui/table.d.cts +17 -18
- package/dist/ui/table.d.mts +17 -18
- package/dist/ui/table.mjs +1 -1
- package/dist/ui/tabs.cjs +1 -1
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/tabs.d.mts +5 -5
- package/dist/ui/tabs.mjs +1 -1
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/textarea.mjs +1 -1
- package/dist/ui/toggle-group.cjs +1 -1
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle-group.mjs +1 -1
- package/dist/ui/toggle.cjs +1 -1
- package/dist/ui/toggle.d.cts +5 -5
- package/dist/ui/toggle.d.mts +3 -3
- package/dist/ui/toggle.mjs +1 -1
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/tooltip.d.mts +5 -5
- package/dist/ui/tooltip.mjs +1 -1
- package/dist/{user-BEyYLDNK.cjs → user-CQY0YnAc.cjs} +2 -2
- package/dist/{user-BEyYLDNK.cjs.map → user-CQY0YnAc.cjs.map} +1 -1
- package/dist/{user-DxSilm4V.mjs → user-DexjSvGZ.mjs} +2 -2
- package/dist/{user-DxSilm4V.mjs.map → user-DexjSvGZ.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/avatar-CTS9-raY.cjs +0 -2
- package/dist/avatar-SJmvlfqm.mjs +0 -2
- package/dist/button-Bc8L9sFb.mjs +0 -2
- package/dist/button-CwDT3m4m.cjs +0 -2
- package/dist/close-BS6EeCrQ.mjs +0 -2
- package/dist/dialog-DG4vMCr5.mjs +0 -2
- package/dist/dist-Dh8WwRa8.cjs +0 -2
- package/dist/dist-Dh8WwRa8.cjs.map +0 -1
- package/dist/dist-XxWAVHy8.mjs +0 -2
- package/dist/dist-XxWAVHy8.mjs.map +0 -1
- package/dist/image-B1Dm5LWk.cjs +0 -2
- package/dist/image-C-CdKKP1.mjs +0 -2
- package/dist/label-BukQnBn7.mjs +0 -2
- package/dist/popover-DvGJ23lJ.mjs +0 -2
- package/dist/progress-2G9rCupJ.mjs +0 -2
- package/dist/progress-DE1FdQ1J.cjs +0 -2
- package/dist/radio-group-fN6o0QBx.mjs +0 -2
- package/dist/separator-DXnFHf3v.mjs +0 -2
- package/dist/sheet-GUUifKAd.mjs +0 -2
- package/dist/skeleton-BLwzHejl.mjs +0 -2
- package/dist/skeleton-BfMCjXYM.cjs +0 -2
- package/dist/spinner-BaZ19Lla.mjs +0 -2
- package/dist/spinner-rA8pMY6v.cjs +0 -2
- package/dist/tanstack-form-C1EVQJ-n.mjs +0 -2
- package/dist/tanstack-form-C1EVQJ-n.mjs.map +0 -1
- package/dist/tanstack-form-D3SXGzZI.cjs +0 -2
- package/dist/tanstack-form-D3SXGzZI.cjs.map +0 -1
- package/dist/text-editor-BHmVZnEK.cjs +0 -2
- package/dist/text-editor-ae2UTKW8.mjs +0 -2
- package/dist/tooltip-Cy0HbyAx.mjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./dialog-
|
|
2
|
-
//# sourceMappingURL=command-
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./dialog-DEnyBH2X.cjs`);let n=require(`lucide-react`),r=require(`@customafk/react-toolkit/utils`),i=require(`react/jsx-runtime`),a=require(`cmdk`);function o({className:e,...t}){return(0,i.jsx)(a.Command,{"data-slot":`command`,className:(0,r.cn)(`flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive`,e),...t})}function s({title:e=`Command Palette`,description:n=`Search for a command to run...`,children:a,className:s,showCloseButton:c=!0,...l}){return(0,i.jsxs)(t.t,{...l,children:[(0,i.jsxs)(t.o,{className:`sr-only`,children:[(0,i.jsx)(t.l,{children:e}),(0,i.jsx)(t.i,{children:n})]}),(0,i.jsx)(t.r,{className:(0,r.cn)(`overflow-hidden p-0`,s),showCloseButton:c,children:(0,i.jsx)(o,{className:(0,r.cn)(`**:[[cmdk-group-heading]]:text-text-positive-muted`,`**:data-[slot=command-input-wrapper]:h-12`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group]]:px-2`,`[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0`,`[&_[cmdk-input-wrapper]_svg]:size-5`,`**:[[cmdk-input]]:h-12`,`**:[[cmdk-item]]:px-2`,`**:[[cmdk-item]]:py-3`,`[&_[cmdk-item]_svg]:size-5`),children:a})})]})}function c({className:e,...t}){return(0,i.jsxs)(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-border-weak border-b px-3`,children:[(0,i.jsx)(n.SearchIcon,{className:`size-4 shrink-0 opacity-50`}),(0,i.jsx)(a.Command.Input,{"data-slot":`command-input`,className:(0,r.cn)(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden`,`placeholder:text-text-positive-muted`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...t})]})}function l({className:e,...t}){return(0,i.jsx)(a.Command.List,{"data-slot":`command-list`,className:(0,r.cn)(`max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden`,e),...t})}function u({...e}){return(0,i.jsx)(a.Command.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function d({className:e,...t}){return(0,i.jsx)(a.Command.Group,{"data-slot":`command-group`,className:(0,r.cn)(`text-text-positive`,`overflow-hidden p-1`,`**:[[cmdk-group-heading]]:text-text-positive-weak`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs`,`**:[[cmdk-group-heading]]:font-medium`,e),...t})}function f({className:e,...t}){return(0,i.jsx)(a.Command.Separator,{"data-slot":`command-separator`,className:(0,r.cn)(`-mx-1 h-px bg-border-weak`,e),...t})}function p({className:e,...t}){return(0,i.jsx)(a.Command.Item,{"data-slot":`command-item`,className:(0,r.cn)(`relative flex cursor-pointer select-none items-center gap-2 rounded-md p-2.5 text-sm outline-hidden transition-all duration-300`,`active:ring-border`,`active:opacity-60`,`active:ring-4`,`data-[selected=true]:bg-muted-muted`,`data-[selected=true]:text-text-positive-strong`,`data-[disabled=true]:opacity-50`,`data-[disabled=true]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg]:pointer-events-none`,`[&_svg:not([class*='size-'])]:size-4`,`[&_svg:not([class*='text-'])]:text-text-positive-muted`,e),...t})}function m({className:e,...t}){return(0,i.jsx)(`span`,{"data-slot":`command-shortcut`,className:(0,r.cn)(`ml-auto text-text-positive-muted text-xs tracking-widest`,e),...t})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|
|
2
|
+
//# sourceMappingURL=command-CTdjZi1F.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-
|
|
1
|
+
{"version":3,"file":"command-CTdjZi1F.cjs","names":["CommandPrimitive","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","SearchIcon"],"sources":["../packages/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\n/**\n * A cmdk-powered command palette for searching and executing commands.\n *\n * @example\n * ```tsx\n * import {\n * Command, CommandInput, CommandList, CommandEmpty,\n * CommandGroup, CommandItem,\n * } from '@customafk/lunas-ui/ui/command';\n *\n * <Command>\n * <CommandInput placeholder=\"Type a command…\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n */\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn('flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive', className)}\n {...props}\n />\n );\n}\n\n/**\n * A Command palette rendered inside a Dialog overlay.\n *\n * @param title - Accessible title for the dialog (screen-reader only).\n * @param description - Accessible description for the dialog (screen-reader only).\n * @param showCloseButton - Whether to show the built-in close button on the dialog.\n */\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)} showCloseButton={showCloseButton}>\n <Command\n className={cn(\n '**:[[cmdk-group-heading]]:text-text-positive-muted',\n '**:data-[slot=command-input-wrapper]:h-12',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group]]:px-2',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0',\n '[&_[cmdk-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2',\n '**:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:size-5'\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input with a leading search icon that filters CommandItems in real time. */\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-border-weak border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden',\n 'placeholder:text-text-positive-muted',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\n/** Scrollable list that renders filtered CommandGroups and CommandItems. */\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return <CommandPrimitive.List data-slot=\"command-list\" className={cn('max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden', className)} {...props} />;\n}\n\n/** Fallback message displayed when no CommandItems match the current search query. */\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"py-6 text-center text-sm\" {...props} />;\n}\n\n/** Groups CommandItems under an optional heading label. */\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-text-positive',\n 'overflow-hidden p-1',\n '**:[[cmdk-group-heading]]:text-text-positive-weak',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs',\n '**:[[cmdk-group-heading]]:font-medium',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups in a CommandList. */\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return <CommandPrimitive.Separator data-slot=\"command-separator\" className={cn('-mx-1 h-px bg-border-weak', className)} {...props} />;\n}\n\n/** A selectable row inside a CommandGroup that is highlighted when active or hovered. */\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-md p-2.5 text-sm outline-hidden transition-all duration-300',\n 'active:ring-border',\n 'active:opacity-60',\n 'active:ring-4',\n 'data-[selected=true]:bg-muted-muted',\n 'data-[selected=true]:text-text-positive-strong',\n 'data-[disabled=true]:opacity-50',\n 'data-[disabled=true]:pointer-events-none',\n '[&_svg]:shrink-0',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-text-positive-muted\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a CommandItem. */\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"command-shortcut\" className={cn('ml-auto text-text-positive-muted text-xs tracking-widest', className)} {...props} />;\n}\n\nexport { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };\n"],"mappings":"sMAgCA,SAAS,EAAQ,CAAE,YAAW,GAAG,GAAwD,CACvF,OACE,EAAA,EAAA,KAACA,EAAAA,QAAAA,CACC,YAAU,UACV,WAAA,EAAA,EAAA,IAAc,sGAAuG,EAAU,CAC/H,GAAI,GACJ,CAWN,SAAS,EAAc,CACrB,QAAQ,kBACR,cAAc,iCACd,WACA,YACA,kBAAkB,GAClB,GAAG,GAMF,CACD,OACE,EAAA,EAAA,MAACC,EAAAA,EAAAA,CAAO,GAAI,aACV,EAAA,EAAA,MAACC,EAAAA,EAAAA,CAAa,UAAU,qBACtB,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAAA,SAAa,EAAA,CAAoB,EAClC,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAAA,SAAmB,EAAA,CAAgC,CAAA,EACvC,EACf,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAc,WAAA,EAAA,EAAA,IAAc,sBAAuB,EAAU,CAAmB,4BAC/E,EAAA,EAAA,KAAC,EAAA,CACC,WAAA,EAAA,EAAA,IACE,qDACA,4CACA,iCACA,wCACA,yBACA,oDACA,sCACA,yBACA,wBACA,wBACA,6BACD,CAEA,YACO,EACI,CAAA,EACT,CAKb,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAAA,EAAA,MAAC,MAAA,CAAI,YAAU,wBAAwB,UAAU,0EAC/C,EAAA,EAAA,KAACC,EAAAA,WAAAA,CAAW,UAAU,6BAAA,CAA+B,EACrD,EAAA,EAAA,KAACN,EAAAA,QAAiB,MAAA,CAChB,YAAU,gBACV,WAAA,EAAA,EAAA,IACE,yEACA,uCACA,8BACA,sBACA,EACD,CACD,GAAI,GACJ,CAAA,EACE,CAKV,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OAAO,EAAA,EAAA,KAACA,EAAAA,QAAiB,KAAA,CAAK,YAAU,eAAe,WAAA,EAAA,EAAA,IAAc,yDAA0D,EAAU,CAAE,GAAI,GAAS,CAI1J,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAAA,EAAA,KAACA,EAAAA,QAAiB,MAAA,CAAM,YAAU,gBAAgB,UAAU,2BAA2B,GAAI,GAAS,CAI7G,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAAA,EAAA,KAACA,EAAAA,QAAiB,MAAA,CAChB,YAAU,gBACV,WAAA,EAAA,EAAA,IACE,qBACA,sBACA,oDACA,iCACA,mCACA,oCACA,wCACA,EACD,CACD,GAAI,GACJ,CAKN,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAkE,CAC1G,OAAO,EAAA,EAAA,KAACA,EAAAA,QAAiB,UAAA,CAAU,YAAU,oBAAoB,WAAA,EAAA,EAAA,IAAc,4BAA6B,EAAU,CAAE,GAAI,GAAS,CAIvI,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OACE,EAAA,EAAA,KAACA,EAAAA,QAAiB,KAAA,CAChB,YAAU,eACV,WAAA,EAAA,EAAA,IACE,kIACA,qBACA,oBACA,gBACA,sCACA,iDACA,kCACA,2CACA,mBACA,8BACA,uCACA,yDACA,EACD,CACD,GAAI,GACJ,CAKN,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAuC,CAC9E,OAAO,EAAA,EAAA,KAAC,OAAA,CAAK,YAAU,mBAAmB,WAAA,EAAA,EAAA,IAAc,2DAA4D,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../paragraph-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../paragraph-D-JHj7EP.cjs`),n=require(`../types-BD1t0Bj8.cjs`),r=require(`../flex-DYh2t8ft.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`),o=require(`react-country-flag`);o=e.t(o);const s={[n.t.VIETNAM]:`VN`,[n.t.USA]:`US`,[n.t.JAPAN]:`JP`,[n.t.CHINA]:`CN`,[n.t.KOREA]:`KR`,[n.t.SINGAPORE]:`SG`,[n.t.MALAYSIA]:`MY`,[n.t.INDONESIA]:`ID`,[n.t.TAIWAN]:`TW`,[n.t.THAILAND]:`TH`},c={[n.t.VIETNAM]:`Vietnam`,[n.t.USA]:`America`,[n.t.JAPAN]:`Japan`,[n.t.CHINA]:`China`,[n.t.KOREA]:`Korea`,[n.t.SINGAPORE]:`Singapore`,[n.t.MALAYSIA]:`Malaysia`,[n.t.INDONESIA]:`Indonesia`,[n.t.TAIWAN]:`Taiwan`,[n.t.THAILAND]:`Thailand`},l=({country:e})=>{let n=(0,i.useMemo)(()=>e?s[e]:`VN`,[e]);return e?(0,a.jsxs)(r.t,{"data-slot":`country-display`,padding:`none`,className:`px-1`,children:[(0,a.jsx)(o.default,{svg:!0,countryCode:n,className:`emojiFlag border`}),(0,a.jsx)(t.t,{variant:`sm`,children:c[e]})]}):(0,a.jsx)(r.t,{"data-slot":`country-display`,padding:`none`,className:`px-1`,children:(0,a.jsx)(t.t,{variant:`muted`,className:`line-clamp-1 text-xs`,children:`No country`})})};exports.CountryDisplay=l;
|
|
2
2
|
//# sourceMappingURL=country.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{t as e}from"../paragraph-
|
|
1
|
+
"use client";import{t as e}from"../paragraph-J_QbLq9_.mjs";import{t}from"../types-CuAlMviO.mjs";import{t as n}from"../flex-Bl5yzx6g.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import o from"react-country-flag";const s={[t.VIETNAM]:`VN`,[t.USA]:`US`,[t.JAPAN]:`JP`,[t.CHINA]:`CN`,[t.KOREA]:`KR`,[t.SINGAPORE]:`SG`,[t.MALAYSIA]:`MY`,[t.INDONESIA]:`ID`,[t.TAIWAN]:`TW`,[t.THAILAND]:`TH`},c={[t.VIETNAM]:`Vietnam`,[t.USA]:`America`,[t.JAPAN]:`Japan`,[t.CHINA]:`China`,[t.KOREA]:`Korea`,[t.SINGAPORE]:`Singapore`,[t.MALAYSIA]:`Malaysia`,[t.INDONESIA]:`Indonesia`,[t.TAIWAN]:`Taiwan`,[t.THAILAND]:`Thailand`},l=({country:t})=>{let l=r(()=>t?s[t]:`VN`,[t]);return t?a(n,{"data-slot":`country-display`,padding:`none`,className:`px-1`,children:[i(o,{svg:!0,countryCode:l,className:`emojiFlag border`}),i(e,{variant:`sm`,children:c[t]})]}):i(n,{"data-slot":`country-display`,padding:`none`,className:`px-1`,children:i(e,{variant:`muted`,className:`line-clamp-1 text-xs`,children:`No country`})})};export{l as CountryDisplay};
|
|
2
2
|
//# sourceMappingURL=country.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`@customafk/react-toolkit/utils`),n=require(`react/jsx-runtime`);const r=({children:e,className:r})=>(0,n.jsx)(`div`,{"data-slot":`data-list`,className:(0,t.cn)(`flex w-full flex-col gap-4`,r),children:e}),i=({label:e,value:r,minLabelWidth:i=`120px`,className:a})=>(0,n.jsxs)(`div`,{"data-slot":`data-list-item`,className:(0,t.cn)(`flex w-full flex-col items-start gap-1 md:flex-row md:items-center md:gap-4`,a),children:[(0,n.jsx)(`span`,{"data-slot":`data-list-label`,style:{minWidth:i},className:`text-sm text-text-positive-weak`,children:e}),(0,n.jsx)(`span`,{"data-slot":`data-list-value`,className:`text-sm text-text-positive`,children:r})]});exports.DataList=r,exports.DataListItem=i;
|
|
2
2
|
//# sourceMappingURL=data-list.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{
|
|
1
|
+
"use client";import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t,jsxs as n}from"react/jsx-runtime";const r=({children:n,className:r})=>t(`div`,{"data-slot":`data-list`,className:e(`flex w-full flex-col gap-4`,r),children:n}),i=({label:r,value:i,minLabelWidth:a=`120px`,className:o})=>n(`div`,{"data-slot":`data-list-item`,className:e(`flex w-full flex-col items-start gap-1 md:flex-row md:items-center md:gap-4`,o),children:[t(`span`,{"data-slot":`data-list-label`,style:{minWidth:a},className:`text-sm text-text-positive-weak`,children:r}),t(`span`,{"data-slot":`data-list-value`,className:`text-sm text-text-positive`,children:i})]});export{r as DataList,i as DataListItem};
|
|
2
2
|
//# sourceMappingURL=data-list.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../date-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../date-DtajzNoy.cjs`),n=require(`../badge-DMnKV_uW.cjs`),r=require(`../tooltip-DC6i1A25.cjs`);let i=require(`react/jsx-runtime`);const a=({date:e})=>(0,i.jsx)(r.r,{children:(0,i.jsxs)(r.t,{children:[(0,i.jsx)(r.i,{asChild:!0,children:(0,i.jsx)(n.t,{"data-slot":`date-tooltip-trigger`,className:`h-fit`,children:(0,i.jsx)(t.t,{date:e,format:`medium`,className:`text-xs font-normal text-text-negative`})})}),(0,i.jsx)(r.n,{"data-slot":`date-tooltip-content`,children:(0,i.jsx)(t.t,{date:e,format:`full`,showTime:!0,className:`font-[Inter]! font-medium`})})]})});exports.DateTooltip=a;
|
|
2
2
|
//# sourceMappingURL=date-tooltip.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{t as e}from"../date-
|
|
1
|
+
"use client";import{t as e}from"../date-BQ0c19uk.mjs";import{t}from"../badge-utjRo-lW.mjs";import{i as n,n as r,r as i,t as a}from"../tooltip-BMdzWaaH.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=({date:c})=>o(i,{children:s(a,{children:[o(n,{asChild:!0,children:o(t,{"data-slot":`date-tooltip-trigger`,className:`h-fit`,children:o(e,{date:c,format:`medium`,className:`text-xs font-normal text-text-negative`})})}),o(r,{"data-slot":`date-tooltip-content`,children:o(e,{date:c,format:`full`,showTime:!0,className:`font-[Inter]! font-medium`})})]})});export{c as DateTooltip};
|
|
2
2
|
//# sourceMappingURL=date-tooltip.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../date-
|
|
1
|
+
"use client";const e=require(`../date-DtajzNoy.cjs`);exports.DateDisplay=e.t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{t as e}from"../date-
|
|
1
|
+
"use client";import{t as e}from"../date-BQ0c19uk.mjs";export{e as DateDisplay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`@customafk/react-toolkit/utils`),r=require(`react/jsx-runtime`);const i=({label:e=`No data to display.`,className:i})=>(0,r.jsxs)(`div`,{"data-slot":`empty-display`,className:(0,n.cn)(`flex size-full flex-col items-center justify-center gap-2 text-text-positive-muted`,i),children:[(0,r.jsx)(t.PackageOpenIcon,{size:52,strokeWidth:1}),(0,r.jsx)(`p`,{className:`text-sm`,children:e})]});exports.EmptyDisplay=i;
|
|
2
2
|
//# sourceMappingURL=empty.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{PackageOpenIcon as e}from"lucide-react";import{
|
|
1
|
+
"use client";import{PackageOpenIcon as e}from"lucide-react";import{cn as t}from"@customafk/react-toolkit/utils";import{jsx as n,jsxs as r}from"react/jsx-runtime";const i=({label:i=`No data to display.`,className:a})=>r(`div`,{"data-slot":`empty-display`,className:t(`flex size-full flex-col items-center justify-center gap-2 text-text-positive-muted`,a),children:[n(e,{size:52,strokeWidth:1}),n(`p`,{className:`text-sm`,children:i})]});export{i as EmptyDisplay};
|
|
2
2
|
//# sourceMappingURL=empty.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../paragraph-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../paragraph-D-JHj7EP.cjs`),n=require(`../tooltip-DC6i1A25.cjs`);let r=require(`react/jsx-runtime`);const i=({name:e})=>(0,r.jsxs)(n.t,{children:[(0,r.jsx)(n.i,{"data-slot":`name-display`,children:(0,r.jsx)(t.t,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:e})}),(0,r.jsx)(n.n,{align:`start`,className:`max-w-80 whitespace-pre-line text-wrap break-keep`,children:e})]});exports.NameDisplay=i;
|
|
2
2
|
//# sourceMappingURL=name.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{t as e}from"../paragraph-
|
|
1
|
+
"use client";import{t as e}from"../paragraph-J_QbLq9_.mjs";import{i as t,n,t as r}from"../tooltip-BMdzWaaH.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";const o=({name:o})=>a(r,{children:[i(t,{"data-slot":`name-display`,children:i(e,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:o})}),i(n,{align:`start`,className:`max-w-80 whitespace-pre-line text-wrap break-keep`,children:o})]});export{o as NameDisplay};
|
|
2
2
|
//# sourceMappingURL=name.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../tooltip-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../tooltip-DC6i1A25.cjs`);let n=require(`react/jsx-runtime`);const r=({value:e})=>(0,n.jsxs)(t.t,{children:[(0,n.jsx)(t.i,{asChild:!0,children:(0,n.jsx)(`p`,{"data-slot":`phone-number-display`,className:`cursor-default font-number text-sm text-text-positive tabular-nums transition-colors`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),(0,n.jsx)(t.n,{align:`start`,children:(0,n.jsx)(`p`,{children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]});exports.PhoneNumberDisplay=r;
|
|
2
2
|
//# sourceMappingURL=phone-number.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{i as e,n as t,t as n}from"../tooltip-
|
|
1
|
+
"use client";import{i as e,n as t,t as n}from"../tooltip-BMdzWaaH.mjs";import{jsx as r,jsxs as i}from"react/jsx-runtime";const a=({value:a})=>i(n,{children:[r(e,{asChild:!0,children:r(`p`,{"data-slot":`phone-number-display`,className:`cursor-default font-number text-sm text-text-positive tabular-nums transition-colors`,children:a.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),r(t,{align:`start`,children:r(`p`,{children:a.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]});export{a as PhoneNumberDisplay};
|
|
2
2
|
//# sourceMappingURL=phone-number.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../types-BD1t0Bj8.cjs`),n=require(`../badge-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../types-BD1t0Bj8.cjs`),n=require(`../badge-DMnKV_uW.cjs`);let r=require(`react/jsx-runtime`);const i={[t.n.ADMIN]:`primary`,[t.n.SUPER_ADMIN]:`danger`,[t.n.MODERATOR]:`info`,[t.n.STAFF]:`accent`,[t.n.USER]:`muted`},a={[t.n.SUPER_ADMIN]:`Super Admin`,[t.n.ADMIN]:`Admin`,[t.n.MODERATOR]:`Moderator`,[t.n.STAFF]:`Staff`,[t.n.USER]:`User`},o=({status:e})=>(0,r.jsx)(n.t,{"data-slot":`role-badge`,color:i[e],className:`min-w-24 justify-center`,children:a[e]});exports.RoleBadge=o;
|
|
2
2
|
//# sourceMappingURL=role-badge.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{n as e}from"../types-CuAlMviO.mjs";import{t}from"../badge-
|
|
1
|
+
"use client";import{n as e}from"../types-CuAlMviO.mjs";import{t}from"../badge-utjRo-lW.mjs";import{jsx as n}from"react/jsx-runtime";const r={[e.ADMIN]:`primary`,[e.SUPER_ADMIN]:`danger`,[e.MODERATOR]:`info`,[e.STAFF]:`accent`,[e.USER]:`muted`},i={[e.SUPER_ADMIN]:`Super Admin`,[e.ADMIN]:`Admin`,[e.MODERATOR]:`Moderator`,[e.STAFF]:`Staff`,[e.USER]:`User`},a=({status:e})=>n(t,{"data-slot":`role-badge`,color:r[e],className:`min-w-24 justify-center`,children:i[e]});export{a as RoleBadge};
|
|
2
2
|
//# sourceMappingURL=role-badge.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`@customafk/react-toolkit/utils`),r=require(`class-variance-authority`),i=require(`react/jsx-runtime`);const a=(0,r.cva)(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive-strong`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`lg`,trend:`neutral`}}),o=(0,t.memo)(({decimalSeparator:e=`.`,groupSeparator:r=`,`,prefix:o,suffix:s,precision:c,roundingMode:l=`round`,showTrailingZeros:u=!1,size:d=`lg`,trend:f=`neutral`,value:p,className:m})=>{let h=(0,t.useCallback)((e,t)=>{let n=10**t;switch(l){case`floor`:return Math.floor(e*n)/n;case`ceil`:return Math.ceil(e*n)/n;default:return Math.round(e*n)/n}},[l]),g=(0,t.useMemo)(()=>{let e={};return typeof c==`number`&&c>=0&&(u&&(e.minimumFractionDigits=c),e.maximumFractionDigits=c),e},[c,u]),_=(0,t.useCallback)(e=>{let t=e;return typeof c==`number`&&c>=0&&(t=h(e,c)),t.toLocaleString(`en-US`,g)},[h,g,c]),v=(0,t.useMemo)(()=>{if(typeof p==`number`)return Number.isNaN(p)||!Number.isFinite(p)?`N/A`:_(p);if(typeof p==`string`){let e=p.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:_(t)}return`N/A`},[p,_]),y=(0,t.useMemo)(()=>e===`.`&&r===`,`?v:v.replace(/,/g,r).replace(/\./g,e),[v,e,r]);return(0,i.jsxs)(`div`,{"data-slot":`statistic`,className:(0,n.cn)(a({size:d,trend:f}),m),children:[o&&(0,i.jsx)(`span`,{"data-slot":`statistic-prefix`,children:o}),(0,i.jsx)(`p`,{"data-slot":`statistic-value`,children:y}),s&&(0,i.jsx)(`span`,{"data-slot":`statistic-suffix`,children:s})]})});o.displayName=`Statistic`,exports.Statistic=o;
|
|
2
2
|
//# sourceMappingURL=statistic.cjs.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
-
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
3
1
|
import * as react0 from "react";
|
|
2
|
+
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
4
3
|
import { VariantProps } from "class-variance-authority";
|
|
5
4
|
|
|
6
5
|
//#region packages/components/data-display/statistic.d.ts
|
|
@@ -52,7 +51,7 @@ declare const Statistic: react0.MemoExoticComponent<({
|
|
|
52
51
|
trend,
|
|
53
52
|
value,
|
|
54
53
|
className
|
|
55
|
-
}: StatisticProps) =>
|
|
54
|
+
}: StatisticProps) => react0.JSX.Element>;
|
|
56
55
|
//#endregion
|
|
57
56
|
export { Statistic, StatisticProps };
|
|
58
57
|
//# sourceMappingURL=statistic.d.cts.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as react0 from "react";
|
|
2
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
2
|
import { VariantProps } from "class-variance-authority";
|
|
4
3
|
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
5
4
|
|
|
@@ -52,7 +51,7 @@ declare const Statistic: react0.MemoExoticComponent<({
|
|
|
52
51
|
trend,
|
|
53
52
|
value,
|
|
54
53
|
className
|
|
55
|
-
}: StatisticProps) =>
|
|
54
|
+
}: StatisticProps) => react0.JSX.Element>;
|
|
56
55
|
//#endregion
|
|
57
56
|
export { Statistic, StatisticProps };
|
|
58
57
|
//# sourceMappingURL=statistic.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{memo as e,useCallback as t,useMemo as n}from"react";import{
|
|
1
|
+
"use client";import{memo as e,useCallback as t,useMemo as n}from"react";import{cn as r}from"@customafk/react-toolkit/utils";import{cva as i}from"class-variance-authority";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=i(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive-strong`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`lg`,trend:`neutral`}}),c=e(({decimalSeparator:e=`.`,groupSeparator:i=`,`,prefix:c,suffix:l,precision:u,roundingMode:d=`round`,showTrailingZeros:f=!1,size:p=`lg`,trend:m=`neutral`,value:h,className:g})=>{let _=t((e,t)=>{let n=10**t;switch(d){case`floor`:return Math.floor(e*n)/n;case`ceil`:return Math.ceil(e*n)/n;default:return Math.round(e*n)/n}},[d]),v=n(()=>{let e={};return typeof u==`number`&&u>=0&&(f&&(e.minimumFractionDigits=u),e.maximumFractionDigits=u),e},[u,f]),y=t(e=>{let t=e;return typeof u==`number`&&u>=0&&(t=_(e,u)),t.toLocaleString(`en-US`,v)},[_,v,u]),b=n(()=>{if(typeof h==`number`)return Number.isNaN(h)||!Number.isFinite(h)?`N/A`:y(h);if(typeof h==`string`){let e=h.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:y(t)}return`N/A`},[h,y]),x=n(()=>e===`.`&&i===`,`?b:b.replace(/,/g,i).replace(/\./g,e),[b,e,i]);return o(`div`,{"data-slot":`statistic`,className:r(s({size:p,trend:m}),g),children:[c&&a(`span`,{"data-slot":`statistic-prefix`,children:c}),a(`p`,{"data-slot":`statistic-value`,children:x}),l&&a(`span`,{"data-slot":`statistic-suffix`,children:l})]})});c.displayName=`Statistic`;export{c as Statistic};
|
|
2
2
|
//# sourceMappingURL=statistic.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";require(`../paragraph-
|
|
1
|
+
"use client";require(`../paragraph-D-JHj7EP.cjs`),require(`../flex-DYh2t8ft.cjs`),require(`../avatar-aVxo69zP.cjs`);const e=require(`../user-CQY0YnAc.cjs`);exports.UserDataDisplay=e.t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import"../paragraph-
|
|
1
|
+
"use client";import"../paragraph-J_QbLq9_.mjs";import"../flex-Bl5yzx6g.mjs";import"../avatar-CK1R4r0j.mjs";import{t as e}from"../user-DexjSvGZ.mjs";export{e as UserDataDisplay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as e,useMemo as t}from"react";import{
|
|
2
|
-
//# sourceMappingURL=date-
|
|
1
|
+
import{useCallback as e,useMemo as t}from"react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r}from"react/jsx-runtime";import{format as i,isThisMonth as a,isThisWeek as o,isThisYear as s,isToday as c,isTomorrow as l,isValid as u,isYesterday as d,parseISO as f}from"@customafk/react-toolkit/date-fns";const p={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 01`,`Tháng 02`,`Tháng 03`,`Tháng 04`,`Tháng 05`,`Tháng 06`,`Tháng 07`,`Tháng 08`,`Tháng 09`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},m={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`};Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3});const h=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60});Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60});const g=({date:g,format:_=`medium`,showHoliday:v=!1,showTime:y=!1,className:b=``,title:x})=>{let S=t(()=>{try{if(g instanceof Date)return u(g)?g:null;if(typeof g==`string`){let e=f(g);return u(e)?e:new Date(g)}if(typeof g==`number`){let e=new Date(g);return u(e)?e:null}return null}catch{return null}},[g]),C=e(e=>{let t=Math.floor((Date.now()-e.getTime())/1e3);return t<60?`Vừa xong`:t<3600?`${Math.floor(t/h.MINUTE)} phút trước`:t<86400?`${Math.floor(t/h.HOUR)} giờ trước`:t<604800?`${Math.floor(t/h.DAY)} ngày trước`:t<2592e3?`${Math.floor(t/h.WEEK)} tuần trước`:t<31536e3?`${Math.floor(t/h.MONTH)} tháng trước`:`${Math.floor(t/h.YEAR)} năm trước`},[]),w=e((e,t=!1)=>t?p.weekdaysShort[e.getDay()]:p.weekdays[e.getDay()],[]),T=e((e,t=!1)=>t?p.monthsShort[e.getMonth()]:p.months[e.getMonth()],[]),E=e(e=>m[i(e,`MM-dd`)]||null,[]),D=e(e=>{if(c(e))return y?`Hôm nay ${i(e,`HH:mm`)}`:`Hôm nay`;if(d(e))return y?`Hôm qua ${i(e,`HH:mm`)}`:`Hôm qua`;if(l(e))return y?`Ngày mai ${i(e,`HH:mm`)}`:`Ngày mai`;if(o(e)){let t=w(e);return y?`${t} ${i(e,`HH:mm`)}`:t}if(a(e)){let t=i(e,`d`);return y?`${t}/${i(e,`M`)} ${i(e,`HH:mm`)}`:`${t}/${i(e,`M`)}`}return s(e)?y?i(e,`d/M HH:mm`):i(e,`d/M`):y?i(e,`d/M/yyyy HH:mm`):i(e,`d/M/yyyy`)},[w,y]),O=e((e,t)=>{let n=y?i(e,`, HH:mm:ss`):``;switch(t){case`short`:return i(e,`d/M/yy`)+n;case`medium`:return i(e,`dd/MM/yyyy`)+n;case`long`:return`${i(e,`d`)} ${T(e)} ${i(e,`yyyy`)}`+n;case`full`:return`${w(e)}, ngày ${i(e,`d`)} ${T(e)} năm ${i(e,`yyyy`)}`+n;case`relative`:return C(e);case`datetime`:return i(e,`d/M/yyyy HH:mm`);case`time`:return i(e,`HH:mm`);case`smart`:return D(e);default:return i(e,`d/M/yyyy`)+n}},[D,T,w,C,y]);if(!S)return r(`span`,{className:n(`text-sm text-text-positive-subtle`,b),children:`--/--/----`});let k=O(S,_),A=v?E(S):null,j=A?`${k} (${A})`:k,M=x||i(S,`EEEE, d MMMM yyyy HH:mm:ss`);return r(`time`,{"data-slot":`date-display`,dateTime:S.toISOString(),className:n(`tabular-nums text-xs text-text-positive-weak transition-colors`,b),title:M,children:j})};export{g as t};
|
|
2
|
+
//# sourceMappingURL=date-BQ0c19uk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-D_nB7Lh1.mjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-BQ0c19uk.mjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(
|
|
2
|
-
//# sourceMappingURL=date-
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`@customafk/react-toolkit/utils`),r=require(`react/jsx-runtime`),i=require(`@customafk/react-toolkit/date-fns`);const a={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 01`,`Tháng 02`,`Tháng 03`,`Tháng 04`,`Tháng 05`,`Tháng 06`,`Tháng 07`,`Tháng 08`,`Tháng 09`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},o={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`},s=Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3}),c=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60}),l=Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60}),u=({date:e,format:s=`medium`,showHoliday:l=!1,showTime:u=!1,className:d=``,title:f})=>{let p=(0,t.useMemo)(()=>{try{if(e instanceof Date)return(0,i.isValid)(e)?e:null;if(typeof e==`string`){let t=(0,i.parseISO)(e);return(0,i.isValid)(t)?t:new Date(e)}if(typeof e==`number`){let t=new Date(e);return(0,i.isValid)(t)?t:null}return null}catch{return null}},[e]),m=(0,t.useCallback)(e=>{let t=Math.floor((Date.now()-e.getTime())/1e3);return t<60?`Vừa xong`:t<3600?`${Math.floor(t/c.MINUTE)} phút trước`:t<86400?`${Math.floor(t/c.HOUR)} giờ trước`:t<604800?`${Math.floor(t/c.DAY)} ngày trước`:t<2592e3?`${Math.floor(t/c.WEEK)} tuần trước`:t<31536e3?`${Math.floor(t/c.MONTH)} tháng trước`:`${Math.floor(t/c.YEAR)} năm trước`},[]),h=(0,t.useCallback)((e,t=!1)=>t?a.weekdaysShort[e.getDay()]:a.weekdays[e.getDay()],[]),g=(0,t.useCallback)((e,t=!1)=>t?a.monthsShort[e.getMonth()]:a.months[e.getMonth()],[]),_=(0,t.useCallback)(e=>o[(0,i.format)(e,`MM-dd`)]||null,[]),v=(0,t.useCallback)(e=>{if((0,i.isToday)(e))return u?`Hôm nay ${(0,i.format)(e,`HH:mm`)}`:`Hôm nay`;if((0,i.isYesterday)(e))return u?`Hôm qua ${(0,i.format)(e,`HH:mm`)}`:`Hôm qua`;if((0,i.isTomorrow)(e))return u?`Ngày mai ${(0,i.format)(e,`HH:mm`)}`:`Ngày mai`;if((0,i.isThisWeek)(e)){let t=h(e);return u?`${t} ${(0,i.format)(e,`HH:mm`)}`:t}if((0,i.isThisMonth)(e)){let t=(0,i.format)(e,`d`);return u?`${t}/${(0,i.format)(e,`M`)} ${(0,i.format)(e,`HH:mm`)}`:`${t}/${(0,i.format)(e,`M`)}`}return(0,i.isThisYear)(e)?u?(0,i.format)(e,`d/M HH:mm`):(0,i.format)(e,`d/M`):u?(0,i.format)(e,`d/M/yyyy HH:mm`):(0,i.format)(e,`d/M/yyyy`)},[h,u]),y=(0,t.useCallback)((e,t)=>{let n=u?(0,i.format)(e,`, HH:mm:ss`):``;switch(t){case`short`:return(0,i.format)(e,`d/M/yy`)+n;case`medium`:return(0,i.format)(e,`dd/MM/yyyy`)+n;case`long`:return`${(0,i.format)(e,`d`)} ${g(e)} ${(0,i.format)(e,`yyyy`)}`+n;case`full`:return`${h(e)}, ngày ${(0,i.format)(e,`d`)} ${g(e)} năm ${(0,i.format)(e,`yyyy`)}`+n;case`relative`:return m(e);case`datetime`:return(0,i.format)(e,`d/M/yyyy HH:mm`);case`time`:return(0,i.format)(e,`HH:mm`);case`smart`:return v(e);default:return(0,i.format)(e,`d/M/yyyy`)+n}},[v,g,h,m,u]);if(!p)return(0,r.jsx)(`span`,{className:(0,n.cn)(`text-sm text-text-positive-subtle`,d),children:`--/--/----`});let b=y(p,s),x=l?_(p):null,S=x?`${b} (${x})`:b,C=f||(0,i.format)(p,`EEEE, d MMMM yyyy HH:mm:ss`);return(0,r.jsx)(`time`,{"data-slot":`date-display`,dateTime:p.toISOString(),className:(0,n.cn)(`tabular-nums text-xs text-text-positive-weak transition-colors`,d),title:C,children:S})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
|
|
2
|
+
//# sourceMappingURL=date-DtajzNoy.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-a3RI5Pwo.cjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-DtajzNoy.cjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react119 from "react";
|
|
2
2
|
import { Dialog } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/dialog.d.ts
|
|
@@ -33,24 +33,24 @@ import { Dialog } from "radix-ui";
|
|
|
33
33
|
*/
|
|
34
34
|
declare function Dialog$1({
|
|
35
35
|
...props
|
|
36
|
-
}: React.ComponentProps<typeof Dialog.Root>):
|
|
36
|
+
}: React.ComponentProps<typeof Dialog.Root>): react119.JSX.Element;
|
|
37
37
|
/** Element that opens the dialog when clicked; typically wrapped with `asChild` around a `Button`. */
|
|
38
38
|
declare function DialogTrigger({
|
|
39
39
|
...props
|
|
40
|
-
}: React.ComponentProps<typeof Dialog.Trigger>):
|
|
40
|
+
}: React.ComponentProps<typeof Dialog.Trigger>): react119.JSX.Element;
|
|
41
41
|
/** Renders dialog overlay and content into a portal outside the normal React tree. */
|
|
42
42
|
declare function DialogPortal({
|
|
43
43
|
...props
|
|
44
|
-
}: React.ComponentProps<typeof Dialog.Portal>):
|
|
44
|
+
}: React.ComponentProps<typeof Dialog.Portal>): react119.JSX.Element;
|
|
45
45
|
/** Button that closes the dialog; can be composed with `asChild` to use a custom element. */
|
|
46
46
|
declare function DialogClose({
|
|
47
47
|
...props
|
|
48
|
-
}: React.ComponentProps<typeof Dialog.Close>):
|
|
48
|
+
}: React.ComponentProps<typeof Dialog.Close>): react119.JSX.Element;
|
|
49
49
|
/** Semi-transparent backdrop rendered behind the dialog panel with fade-in/out animation. */
|
|
50
50
|
declare function DialogOverlay({
|
|
51
51
|
className,
|
|
52
52
|
...props
|
|
53
|
-
}: React.ComponentProps<typeof Dialog.Overlay>):
|
|
53
|
+
}: React.ComponentProps<typeof Dialog.Overlay>): react119.JSX.Element;
|
|
54
54
|
/**
|
|
55
55
|
* Animated dialog panel centred on screen; includes `DialogOverlay` and an optional close button.
|
|
56
56
|
*
|
|
@@ -64,27 +64,27 @@ declare function DialogContent({
|
|
|
64
64
|
}: React.ComponentProps<typeof Dialog.Content> & {
|
|
65
65
|
/** When `true` (default), renders an `×` close button fixed to the top-right corner of the panel. */
|
|
66
66
|
showCloseButton?: boolean;
|
|
67
|
-
}):
|
|
67
|
+
}): react119.JSX.Element;
|
|
68
68
|
/** Layout wrapper for the dialog title and description, stacked vertically with left alignment on wider screens. */
|
|
69
69
|
declare function DialogHeader({
|
|
70
70
|
className,
|
|
71
71
|
...props
|
|
72
|
-
}: React.ComponentProps<'div'>):
|
|
72
|
+
}: React.ComponentProps<'div'>): react119.JSX.Element;
|
|
73
73
|
/** Layout wrapper for dialog action buttons, stacked on mobile and right-aligned in a row on wider screens. */
|
|
74
74
|
declare function DialogFooter({
|
|
75
75
|
className,
|
|
76
76
|
...props
|
|
77
|
-
}: React.ComponentProps<'div'>):
|
|
77
|
+
}: React.ComponentProps<'div'>): react119.JSX.Element;
|
|
78
78
|
/** Accessible heading for the dialog panel, styled with the h3 heading variant and announced by screen readers. */
|
|
79
79
|
declare function DialogTitle({
|
|
80
80
|
className,
|
|
81
81
|
...props
|
|
82
|
-
}: React.ComponentProps<typeof Dialog.Title>):
|
|
82
|
+
}: React.ComponentProps<typeof Dialog.Title>): react119.JSX.Element;
|
|
83
83
|
/** Muted supporting text that describes the dialog's purpose; read by screen readers alongside the title. */
|
|
84
84
|
declare function DialogDescription({
|
|
85
85
|
className,
|
|
86
86
|
...props
|
|
87
|
-
}: React.ComponentProps<typeof Dialog.Description>):
|
|
87
|
+
}: React.ComponentProps<typeof Dialog.Description>): react119.JSX.Element;
|
|
88
88
|
//#endregion
|
|
89
89
|
export { DialogFooter as a, DialogPortal as c, DialogDescription as i, DialogTitle as l, DialogClose as n, DialogHeader as o, DialogContent as r, DialogOverlay as s, Dialog$1 as t, DialogTrigger as u };
|
|
90
|
-
//# sourceMappingURL=dialog-
|
|
90
|
+
//# sourceMappingURL=dialog-C0DdEwn5.d.cts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./heading-
|
|
2
|
-
//# sourceMappingURL=dialog-
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./heading-wUXEbicM.cjs`),n=require(`./paragraph-D-JHj7EP.cjs`),r=require(`./close-DUBEKxhw.cjs`);let i=require(`@customafk/react-toolkit/utils`),a=require(`react/jsx-runtime`),o=require(`radix-ui`);function s({...e}){return(0,a.jsx)(o.Dialog.Root,{"data-slot":`dialog`,...e})}function c({...e}){return(0,a.jsx)(o.Dialog.Trigger,{"data-slot":`dialog-trigger`,...e})}function l({...e}){return(0,a.jsx)(o.Dialog.Portal,{"data-slot":`dialog-portal`,...e})}function u({...e}){return(0,a.jsx)(o.Dialog.Close,{"data-slot":`dialog-close`,...e})}function d({className:e,...t}){return(0,a.jsx)(o.Dialog.Overlay,{"data-slot":`dialog-overlay`,className:(0,i.cn)(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in data-[state=open]:fade-in-0`,`data-[state=closed]:animate-out data-[state=closed]:fade-out-0`,e),...t})}function f({className:e,children:t,showCloseButton:n=!0,...s}){return(0,a.jsxs)(l,{children:[(0,a.jsx)(d,{}),(0,a.jsxs)(o.Dialog.Content,{"data-slot":`dialog-content`,className:(0,i.cn)(`fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2`,`grid w-full max-w-[calc(100%-2rem)] bg-background`,`max-h-[85dvh] gap-4 rounded-2xl p-6 shadow-dialog outline-none duration-200`,`sm:max-w-lg`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-80`,`data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-80`,e),...s,children:[t,n&&(0,a.jsx)(o.Dialog.Close,{"data-slot":`dialog-close`,tabIndex:-1,asChild:!0,className:`absolute top-3 right-3`,children:(0,a.jsx)(r.t,{})})]})]})}function p({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`dialog-header`,className:(0,i.cn)(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function m({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`dialog-footer`,className:(0,i.cn)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function h({className:e,...n}){return(0,a.jsx)(o.Dialog.Title,{"data-slot":`dialog-title`,className:(0,i.cn)(t.t({level:`h3`}),e),...n})}function g({className:e,...t}){return(0,a.jsx)(o.Dialog.Description,{"data-slot":`dialog-description`,className:(0,i.cn)(n.n({variant:`muted`}),e),...t})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return c}});
|
|
2
|
+
//# sourceMappingURL=dialog-DEnyBH2X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-DEnyBH2X.cjs","names":["DialogPrimitive","CloseButton","headingVariants","paragraphVariants"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport { CloseButton } from './buttons/close';\nimport { headingVariants } from '../typography/heading';\nimport { paragraphVariants } from '../typography/paragraph';\n\n/**\n * Accessible modal dialog built on Radix UI's Dialog primitives with animated overlay, close button, and responsive sizing.\n *\n * @example\n * ```tsx\n * import {\n * Dialog, DialogTrigger, DialogContent,\n * DialogHeader, DialogTitle, DialogDescription, DialogFooter,\n * } from '@customafk/lunas-ui/ui/dialog';\n * import { Button } from '@customafk/lunas-ui/ui/button';\n *\n * <Dialog>\n * <DialogTrigger asChild>\n * <Button>Open dialog</Button>\n * </DialogTrigger>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Confirm action</DialogTitle>\n * <DialogDescription>This cannot be undone.</DialogDescription>\n * </DialogHeader>\n * <DialogFooter>\n * <Button variant=\"outline\">Cancel</Button>\n * <Button>Confirm</Button>\n * </DialogFooter>\n * </DialogContent>\n * </Dialog>\n * ```\n */\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n/** Element that opens the dialog when clicked; typically wrapped with `asChild` around a `Button`. */\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n/** Renders dialog overlay and content into a portal outside the normal React tree. */\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\n/** Button that closes the dialog; can be composed with `asChild` to use a custom element. */\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the dialog panel with fade-in/out animation. */\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className\n )}\n {...props}\n />\n );\n}\n\n/**\n * Animated dialog panel centred on screen; includes `DialogOverlay` and an optional close button.\n *\n * @param showCloseButton - When `true` (default), renders a `CloseButton` in the top-right corner.\n */\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n /** When `true` (default), renders an `×` close button fixed to the top-right corner of the panel. */\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2',\n 'grid w-full max-w-[calc(100%-2rem)] bg-background',\n 'max-h-[85dvh] gap-4 rounded-2xl p-6 shadow-dialog outline-none duration-200',\n 'sm:max-w-lg',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-80',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-80',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" tabIndex={-1} asChild className=\"absolute top-3 right-3\">\n <CloseButton />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\n/** Layout wrapper for the dialog title and description, stacked vertically with left alignment on wider screens. */\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-header\" className={cn('flex flex-col gap-2 text-center sm:text-left', className)} {...props} />;\n}\n\n/** Layout wrapper for dialog action buttons, stacked on mobile and right-aligned in a row on wider screens. */\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-footer\" className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)} {...props} />;\n}\n\n/** Accessible heading for the dialog panel, styled with the h3 heading variant and announced by screen readers. */\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return <DialogPrimitive.Title data-slot=\"dialog-title\" className={cn(headingVariants({ level: 'h3' }), className)} {...props} />;\n}\n\n/** Muted supporting text that describes the dialog's purpose; read by screen readers alongside the title. */\nfunction DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return <DialogPrimitive.Description data-slot=\"dialog-description\" className={cn(paragraphVariants({ variant: 'muted' }), className)} {...props} />;\n}\n\nexport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };\n"],"mappings":"yPAqCA,SAAS,EAAO,CAAE,GAAG,GAA4D,CAC/E,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,GAAS,CAI/D,SAAS,EAAc,CAAE,GAAG,GAA+D,CACzF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,GAAS,CAI1E,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,GAAS,CAIxE,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAAS,CAItE,SAAS,EAAc,CAAE,YAAW,GAAG,GAA+D,CACpG,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,WAAA,EAAA,EAAA,IACE,iCACA,2DACA,iEACA,EACD,CACD,GAAI,GACJ,CASN,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,GAIF,CACD,OACE,EAAA,EAAA,MAAC,EAAA,CAAA,SAAA,EACC,EAAA,EAAA,KAAC,EAAA,EAAA,CAAgB,EACjB,EAAA,EAAA,MAACA,EAAAA,OAAgB,QAAA,CACf,YAAU,iBACV,WAAA,EAAA,EAAA,IACE,gEACA,oDACA,8EACA,cACA,wFACA,iGACA,EACD,CACD,GAAI,YAEH,EACA,IACC,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CAAM,YAAU,eAAe,SAAU,GAAI,QAAA,GAAQ,UAAU,mCAC9E,EAAA,EAAA,KAACC,EAAAA,EAAAA,EAAAA,CAAc,EACO,CAAA,EAEF,CAAA,CAAA,CACb,CAKnB,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,gBAAgB,WAAA,EAAA,EAAA,IAAc,+CAAgD,EAAU,CAAE,GAAI,GAAS,CAI/H,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,gBAAgB,WAAA,EAAA,EAAA,IAAc,yDAA0D,EAAU,CAAE,GAAI,GAAS,CAIzI,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OAAO,EAAA,EAAA,KAACD,EAAAA,OAAgB,MAAA,CAAM,YAAU,eAAe,WAAA,EAAA,EAAA,IAAcE,EAAAA,EAAgB,CAAE,MAAO,KAAM,CAAC,CAAE,EAAU,CAAE,GAAI,GAAS,CAIlI,SAAS,EAAkB,CAAE,YAAW,GAAG,GAAmE,CAC5G,OAAO,EAAA,EAAA,KAACF,EAAAA,OAAgB,YAAA,CAAY,YAAU,qBAAqB,WAAA,EAAA,EAAA,IAAcG,EAAAA,EAAkB,CAAE,QAAS,QAAS,CAAC,CAAE,EAAU,CAAE,GAAI,GAAS"}
|