@customafk/lunas-ui 0.2.37 → 0.2.38
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-DubR6Szk.cjs → alert-B2PaDJp6.cjs} +2 -2
- package/dist/{alert-DubR6Szk.cjs.map → alert-B2PaDJp6.cjs.map} +1 -1
- package/dist/{alert-CT7oAzCC.d.mts → alert-C-bk-pne.d.mts} +5 -5
- package/dist/{alert-lqPNRRvJ.d.cts → alert-DDxGzOzi.d.cts} +5 -5
- package/dist/{avatar-CqRl9dge.cjs → avatar-TyOphzGo.cjs} +2 -2
- package/dist/{avatar-CqRl9dge.cjs.map → avatar-TyOphzGo.cjs.map} +1 -1
- package/dist/{avatar-m1LjDIil.mjs → avatar-fltdRVsJ.mjs} +1 -1
- package/dist/{avatar-m1LjDIil.mjs.map → avatar-fltdRVsJ.mjs.map} +1 -1
- package/dist/{badge-Bhbhmsic.mjs → badge-CDGBGq8X.mjs} +1 -1
- package/dist/{badge-Bhbhmsic.mjs.map → badge-CDGBGq8X.mjs.map} +1 -1
- package/dist/{badge-C4nTfJGX.d.mts → badge-IUtmECjN.d.cts} +7 -7
- package/dist/{badge-DMnKV_uW.cjs → badge-KW7xu5Ca.cjs} +2 -2
- package/dist/{badge-DMnKV_uW.cjs.map → badge-KW7xu5Ca.cjs.map} +1 -1
- package/dist/{badge-Dq-Yyus_.d.cts → badge-lvr8nB_0.d.mts} +7 -7
- package/dist/{button-CYLxBCfa.d.cts → button-Brw-tmr9.d.cts} +5 -5
- package/dist/{button-Bu4ejNOW.cjs → button-C--DAN1D.cjs} +2 -2
- package/dist/button-C--DAN1D.cjs.map +1 -0
- package/dist/button-CCVJTHBI.mjs +2 -0
- package/dist/button-CCVJTHBI.mjs.map +1 -0
- package/dist/{button-DlFsSFmT.d.mts → button-DhDRMeFA.d.mts} +5 -5
- package/dist/{button.variants-tnhb123u.cjs → button.variants-4kw6plrv.cjs} +2 -2
- package/dist/{button.variants-tnhb123u.cjs.map → button.variants-4kw6plrv.cjs.map} +1 -1
- package/dist/{button.variants-B8aRZ52K.mjs → button.variants-DkMqWB8G.mjs} +1 -1
- package/dist/{button.variants-B8aRZ52K.mjs.map → button.variants-DkMqWB8G.mjs.map} +1 -1
- package/dist/{calendar-CMd11yg9.cjs → calendar-4weBDnXz.cjs} +2 -2
- package/dist/{calendar-CMd11yg9.cjs.map → calendar-4weBDnXz.cjs.map} +1 -1
- package/dist/{calendar-BDhIfwPP.mjs → calendar-R866yyd1.mjs} +2 -2
- package/dist/{calendar-BDhIfwPP.mjs.map → calendar-R866yyd1.mjs.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.mts +2 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/{checkbox-CgHaRkuU.mjs → checkbox-Cat3i08X.mjs} +1 -1
- package/dist/{checkbox-CgHaRkuU.mjs.map → checkbox-Cat3i08X.mjs.map} +1 -1
- package/dist/{checkbox-BwDvS4De.cjs → checkbox-Dsq-MSbH.cjs} +2 -2
- package/dist/{checkbox-BwDvS4De.cjs.map → checkbox-Dsq-MSbH.cjs.map} +1 -1
- package/dist/chunk-350yNsax.cjs +1 -0
- package/dist/{close-DrCUWZt0.cjs → close-Dlo1bI8x.cjs} +2 -2
- package/dist/{close-DrCUWZt0.cjs.map → close-Dlo1bI8x.cjs.map} +1 -1
- package/dist/{close-B7OOMSZl.mjs → close-_UHFeiLS.mjs} +1 -1
- package/dist/{close-B7OOMSZl.mjs.map → close-_UHFeiLS.mjs.map} +1 -1
- package/dist/cms-layout-BCH4NroR.cjs +2 -0
- package/dist/cms-layout-BCH4NroR.cjs.map +1 -0
- package/dist/cms-layout-DkCR1AfG.mjs +2 -0
- package/dist/cms-layout-DkCR1AfG.mjs.map +1 -0
- package/dist/{command-DiXzSGc8.cjs → command-CsP8a1Un.cjs} +2 -2
- package/dist/{command-DiXzSGc8.cjs.map → command-CsP8a1Un.cjs.map} +1 -1
- package/dist/{command-FnbrPZ7_.mjs → command-D6_CSbwJ.mjs} +2 -2
- package/dist/{command-FnbrPZ7_.mjs.map → command-D6_CSbwJ.mjs.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/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/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 +3 -3
- package/dist/data-display/statistic.d.mts +3 -3
- 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-DtajzNoy.cjs → date-D4NVl6C9.cjs} +2 -2
- package/dist/{date-DtajzNoy.cjs.map → date-D4NVl6C9.cjs.map} +1 -1
- package/dist/{date-CFgc7pK3.mjs → date-fY3sUcLp.mjs} +1 -1
- package/dist/{date-CFgc7pK3.mjs.map → date-fY3sUcLp.mjs.map} +1 -1
- package/dist/{dialog-D1sWnn6n.cjs → dialog-BigPrWIj.cjs} +2 -2
- package/dist/{dialog-D1sWnn6n.cjs.map → dialog-BigPrWIj.cjs.map} +1 -1
- package/dist/{dialog-EGFZeITu.mjs → dialog-CLDnvNH_.mjs} +2 -2
- package/dist/{dialog-EGFZeITu.mjs.map → dialog-CLDnvNH_.mjs.map} +1 -1
- package/dist/{dialog-_zfOGo8B.d.mts → dialog-CsltUGHB.d.mts} +12 -12
- package/dist/{dialog-1ArhWB8r.d.cts → dialog-D0zfwr8i.d.cts} +12 -12
- 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 +24 -24
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +24 -24
- 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-Cx5ufCdr.cjs +2 -0
- package/dist/{dist-CAeolvAH.cjs.map → dist-Cx5ufCdr.cjs.map} +1 -1
- package/dist/dist-DVrfqn8H.mjs +2 -0
- package/dist/{dist-BQGL-YKY.mjs.map → dist-DVrfqn8H.mjs.map} +1 -1
- package/dist/{drawer-B6C8-Ndu.cjs → drawer-BB8BZzDG.cjs} +2 -2
- package/dist/{drawer-B6C8-Ndu.cjs.map → drawer-BB8BZzDG.cjs.map} +1 -1
- package/dist/{dropdown-menu-C6tRSumY.mjs → dropdown-menu-BWhiVsEf.mjs} +1 -1
- package/dist/{dropdown-menu-C6tRSumY.mjs.map → dropdown-menu-BWhiVsEf.mjs.map} +1 -1
- package/dist/{dropdown-menu-Bz7oMQ36.cjs → dropdown-menu-CVh520yG.cjs} +2 -2
- package/dist/{dropdown-menu-Bz7oMQ36.cjs.map → dropdown-menu-CVh520yG.cjs.map} +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +1 -1
- package/dist/features/descriptions/index.d.mts +6 -6
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/search-modal/index.cjs +1 -1
- 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 +2 -2
- package/dist/features/tables/index.d.mts +3 -3
- 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 +2 -2
- package/dist/features/tanstack-form/index.d.mts +2 -2
- 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-pfL7RWcN.cjs → field-BrlETeXX.cjs} +2 -2
- package/dist/{field-pfL7RWcN.cjs.map → field-BrlETeXX.cjs.map} +1 -1
- package/dist/{field-DhgAIueI.mjs → field-dYemS0hQ.mjs} +2 -2
- package/dist/{field-DhgAIueI.mjs.map → field-dYemS0hQ.mjs.map} +1 -1
- package/dist/{flex-BAcvp4lB.mjs → flex-B6YSJzGe.mjs} +1 -1
- package/dist/{flex-BAcvp4lB.mjs.map → flex-B6YSJzGe.mjs.map} +1 -1
- package/dist/{flex-DYh2t8ft.cjs → flex-DmWmOBn5.cjs} +2 -2
- package/dist/{flex-DYh2t8ft.cjs.map → flex-DmWmOBn5.cjs.map} +1 -1
- package/dist/{heading-woRh-IC7.mjs → heading-De4Pn3mZ.mjs} +1 -1
- package/dist/{heading-woRh-IC7.mjs.map → heading-De4Pn3mZ.mjs.map} +1 -1
- package/dist/{heading-wUXEbicM.cjs → heading-tGTqk3pA.cjs} +2 -2
- package/dist/{heading-wUXEbicM.cjs.map → heading-tGTqk3pA.cjs.map} +1 -1
- package/dist/image-D7OZ13Ib.mjs +2 -0
- package/dist/{image-D2U1SBw5.mjs.map → image-D7OZ13Ib.mjs.map} +1 -1
- package/dist/image-W_Yb0xTB.cjs +2 -0
- package/dist/{image-Y7gCz7uE.cjs.map → image-W_Yb0xTB.cjs.map} +1 -1
- package/dist/{index-C6nrbQ-E.d.cts → index-9eog5ilY.d.cts} +36 -4
- package/dist/{index-CJoz7sMc.d.mts → index-BuNzvvj3.d.mts} +64 -32
- package/dist/{index-DiW-62hY.d.mts → index-CG8iS6qj.d.cts} +3 -3
- package/dist/index-Cm62M0Ft.d.mts +90 -0
- package/dist/{index-Du_HLRsN.d.cts → index-DI8qmezw.d.mts} +7 -7
- package/dist/index-DsD83ZN8.d.cts +2348 -0
- package/dist/index-KO98y6L0.d.cts +90 -0
- package/dist/index-SMYnpHIM.d.mts +2348 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +10 -10
- package/dist/index.d.mts +10 -10
- package/dist/index.mjs +1 -1
- package/dist/{input-BAr0l-oA.d.cts → input-BFtFMzRG.d.mts} +6 -6
- package/dist/{input-DXO2mTgG.d.mts → input-DvkEND5a.d.cts} +6 -6
- package/dist/{input-5gk-Jv1y.mjs → input-NJP2wQOm.mjs} +1 -1
- package/dist/{input-5gk-Jv1y.mjs.map → input-NJP2wQOm.mjs.map} +1 -1
- package/dist/{input-BvzsfAUc.cjs → input-WJ0DLHTR.cjs} +2 -2
- package/dist/{input-BvzsfAUc.cjs.map → input-WJ0DLHTR.cjs.map} +1 -1
- package/dist/{label-eIyGIRyw.cjs → label-CC6fXVbC.cjs} +2 -2
- package/dist/{label-eIyGIRyw.cjs.map → label-CC6fXVbC.cjs.map} +1 -1
- package/dist/{label-D9uNQ9b_.mjs → label-CUCpwS5D.mjs} +1 -1
- package/dist/{label-D9uNQ9b_.mjs.map → label-CUCpwS5D.mjs.map} +1 -1
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.d.cts +2 -76
- package/dist/layouts/cms-layout/index.d.mts +2 -76
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +6 -6
- package/dist/layouts/flex.d.mts +6 -6
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/grid.cjs +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.cjs.map +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/LoginPage.mjs.map +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.cjs.map +1 -1
- package/dist/pages/RegisterPage.d.cts +2 -2
- package/dist/pages/RegisterPage.mjs +1 -1
- package/dist/pages/RegisterPage.mjs.map +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-CjstaJFj.mjs → paragraph-DYLaQtTV.mjs} +1 -1
- package/dist/{paragraph-CjstaJFj.mjs.map → paragraph-DYLaQtTV.mjs.map} +1 -1
- package/dist/{paragraph-D-JHj7EP.cjs → paragraph-DvTZvbzw.cjs} +2 -2
- package/dist/{paragraph-D-JHj7EP.cjs.map → paragraph-DvTZvbzw.cjs.map} +1 -1
- package/dist/{payment-layout-_ZM4uBy_.mjs → payment-layout-DrQ0kZPX.mjs} +2 -2
- package/dist/{payment-layout-_ZM4uBy_.mjs.map → payment-layout-DrQ0kZPX.mjs.map} +1 -1
- package/dist/{payment-layout-fsYTkw3r.cjs → payment-layout-DyILfyVG.cjs} +2 -2
- package/dist/{payment-layout-fsYTkw3r.cjs.map → payment-layout-DyILfyVG.cjs.map} +1 -1
- package/dist/{popover-DwgdOX8a.mjs → popover-C8rcemA3.mjs} +2 -2
- package/dist/{popover-DwgdOX8a.mjs.map → popover-C8rcemA3.mjs.map} +1 -1
- package/dist/{popover-fsTCOb6a.cjs → popover-DBsC8Ltp.cjs} +2 -2
- package/dist/{popover-fsTCOb6a.cjs.map → popover-DBsC8Ltp.cjs.map} +1 -1
- package/dist/{progress-DCBKnTx0.mjs → progress-CLeM0e7Z.mjs} +1 -1
- package/dist/{progress-DCBKnTx0.mjs.map → progress-CLeM0e7Z.mjs.map} +1 -1
- package/dist/{progress-CDYA2V-W.cjs → progress-gvBqNiHp.cjs} +2 -2
- package/dist/{progress-CDYA2V-W.cjs.map → progress-gvBqNiHp.cjs.map} +1 -1
- package/dist/{radio-group-B-M599Ys.cjs → radio-group-_TdMkv8w.cjs} +2 -2
- package/dist/{radio-group-B-M599Ys.cjs.map → radio-group-_TdMkv8w.cjs.map} +1 -1
- package/dist/{resizable-DP1BQAF_.mjs → resizable-CpCaSCFB.mjs} +1 -1
- package/dist/{resizable-DP1BQAF_.mjs.map → resizable-CpCaSCFB.mjs.map} +1 -1
- package/dist/{resizable-DATSh0Du.cjs → resizable-sgpaHAb8.cjs} +2 -2
- package/dist/{resizable-DATSh0Du.cjs.map → resizable-sgpaHAb8.cjs.map} +1 -1
- package/dist/{search-modal-CYRJEDE-.cjs → search-modal-B-pzGcfP.cjs} +2 -2
- package/dist/{search-modal-CYRJEDE-.cjs.map → search-modal-B-pzGcfP.cjs.map} +1 -1
- package/dist/{search-modal-DWu08xkE.mjs → search-modal-Bn-GOOCy.mjs} +2 -2
- package/dist/{search-modal-DWu08xkE.mjs.map → search-modal-Bn-GOOCy.mjs.map} +1 -1
- package/dist/select-CWLQHh8x.cjs +2 -0
- package/dist/select-CWLQHh8x.cjs.map +1 -0
- package/dist/{select-BAlA65tZ.mjs → select-LlPCZFSF.mjs} +2 -2
- package/dist/select-LlPCZFSF.mjs.map +1 -0
- package/dist/{separator-C6s-YvlT.mjs → separator-D3Gmkxzq.mjs} +1 -1
- package/dist/{separator-C6s-YvlT.mjs.map → separator-D3Gmkxzq.mjs.map} +1 -1
- package/dist/{separator-CBup_ah1.cjs → separator-KuymG9g0.cjs} +2 -2
- package/dist/{separator-CBup_ah1.cjs.map → separator-KuymG9g0.cjs.map} +1 -1
- package/dist/{sheet-Cj8hoftE.mjs → sheet-BFlIfNaA.mjs} +1 -1
- package/dist/{sheet-Cj8hoftE.mjs.map → sheet-BFlIfNaA.mjs.map} +1 -1
- package/dist/{sheet-DAjZ-Q6Q.cjs → sheet-CvKSi0UC.cjs} +2 -2
- package/dist/{sheet-DAjZ-Q6Q.cjs.map → sheet-CvKSi0UC.cjs.map} +1 -1
- package/dist/{sidebar-RcmDh50_.mjs → sidebar-ChtCyu-n.mjs} +2 -2
- package/dist/{sidebar-RcmDh50_.mjs.map → sidebar-ChtCyu-n.mjs.map} +1 -1
- package/dist/{sidebar-Drasn0Bx.cjs → sidebar-D5J2gcTw.cjs} +2 -2
- package/dist/{sidebar-Drasn0Bx.cjs.map → sidebar-D5J2gcTw.cjs.map} +1 -1
- package/dist/{skeleton-DupQ91XW.mjs → skeleton-C51IdOfK.mjs} +1 -1
- package/dist/{skeleton-DupQ91XW.mjs.map → skeleton-C51IdOfK.mjs.map} +1 -1
- package/dist/{skeleton-CHympz8k.cjs → skeleton-CX1USu1w.cjs} +2 -2
- package/dist/{skeleton-CHympz8k.cjs.map → skeleton-CX1USu1w.cjs.map} +1 -1
- package/dist/{spinner-Bdta7BMp.cjs → spinner-CFxorYEt.cjs} +2 -2
- package/dist/{spinner-Bdta7BMp.cjs.map → spinner-CFxorYEt.cjs.map} +1 -1
- package/dist/{spinner-BCnPYF1H.mjs → spinner-eClTgHjk.mjs} +1 -1
- package/dist/{spinner-BCnPYF1H.mjs.map → spinner-eClTgHjk.mjs.map} +1 -1
- package/dist/{statistic-DDDm5Om1.cjs → statistic-DDXilD7q.cjs} +2 -2
- package/dist/{statistic-DDDm5Om1.cjs.map → statistic-DDXilD7q.cjs.map} +1 -1
- package/dist/{statistic-Cm4nbkjQ.mjs → statistic-cwLwcukn.mjs} +1 -1
- package/dist/{statistic-Cm4nbkjQ.mjs.map → statistic-cwLwcukn.mjs.map} +1 -1
- package/dist/{switch-Dbc77c_D.cjs → switch-DVfOV7wP.cjs} +2 -2
- package/dist/{switch-Dbc77c_D.cjs.map → switch-DVfOV7wP.cjs.map} +1 -1
- package/dist/systems/google.cjs +1 -1
- package/dist/tables-CFrsk2lM.mjs +4 -0
- package/dist/tables-CFrsk2lM.mjs.map +1 -0
- package/dist/tables-CPKHe3k-.cjs +4 -0
- package/dist/tables-CPKHe3k-.cjs.map +1 -0
- package/dist/tanstack-form-DT1TqIDl.mjs +12 -0
- package/dist/tanstack-form-DT1TqIDl.mjs.map +1 -0
- package/dist/tanstack-form-DatI41wz.cjs +12 -0
- package/dist/tanstack-form-DatI41wz.cjs.map +1 -0
- package/dist/{text-editor-Bg0Wtnt3.mjs → text-editor-5mA7XyaI.mjs} +2 -2
- package/dist/{text-editor-Bg0Wtnt3.mjs.map → text-editor-5mA7XyaI.mjs.map} +1 -1
- package/dist/{text-editor-DtLcsiR7.cjs → text-editor-CvJN3nSL.cjs} +2 -2
- package/dist/{text-editor-DtLcsiR7.cjs.map → text-editor-CvJN3nSL.cjs.map} +1 -1
- package/dist/{textarea-Byo8E8oi.cjs → textarea-Cc9CF8wD.cjs} +2 -2
- package/dist/{textarea-Byo8E8oi.cjs.map → textarea-Cc9CF8wD.cjs.map} +1 -1
- package/dist/{tooltip-DC6i1A25.cjs → tooltip-CBdoIzoM.cjs} +2 -2
- package/dist/{tooltip-DC6i1A25.cjs.map → tooltip-CBdoIzoM.cjs.map} +1 -1
- package/dist/{tooltip-BfBJRYpc.mjs → tooltip-Dxl5Wa8i.mjs} +1 -1
- package/dist/{tooltip-BfBJRYpc.mjs.map → tooltip-Dxl5Wa8i.mjs.map} +1 -1
- package/dist/{types-CFXgrpTm.mjs → types-B5nyTWtO.mjs} +1 -1
- package/dist/{types-CFXgrpTm.mjs.map → types-B5nyTWtO.mjs.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +5 -5
- package/dist/typography/paragraph.d.mts +5 -5
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/typography/title.cjs +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/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/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.cjs +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/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/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/field.cjs +1 -1
- package/dist/ui/field.d.cts +23 -23
- package/dist/ui/field.d.mts +23 -23
- package/dist/ui/field.mjs +1 -1
- package/dist/ui/file-uploader.cjs +1 -1
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/file-uploader.mjs +1 -1
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.d.cts +10 -10
- package/dist/ui/form.d.mts +10 -10
- 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/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.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 +3 -3
- package/dist/ui/item.d.mts +11 -11
- 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/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 +11 -11
- 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/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 -5
- package/dist/ui/scroll-area.d.mts +5 -5
- 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/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/sonner.cjs +1 -1
- package/dist/ui/sonner.cjs.map +1 -1
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/sonner.mjs +1 -1
- package/dist/ui/sonner.mjs.map +1 -1
- 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/table.cjs +1 -1
- package/dist/ui/table.d.cts +17 -17
- package/dist/ui/table.d.mts +17 -17
- 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/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/toggle-group.cjs +1 -1
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle.cjs +1 -1
- package/dist/ui/toggle.d.cts +4 -4
- package/dist/ui/toggle.d.mts +4 -4
- 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-D8Skw8dI.mjs → user-DtZy4P9d.mjs} +2 -2
- package/dist/{user-D8Skw8dI.mjs.map → user-DtZy4P9d.mjs.map} +1 -1
- package/dist/{user-Dns1BKaT.cjs → user-ii4FBhO1.cjs} +2 -2
- package/dist/{user-Dns1BKaT.cjs.map → user-ii4FBhO1.cjs.map} +1 -1
- package/package.json +20 -5
- package/styles/spacing.css +186 -0
- package/dist/button-Bu4ejNOW.cjs.map +0 -1
- package/dist/button-CfPTDyoq.mjs +0 -2
- package/dist/button-CfPTDyoq.mjs.map +0 -1
- package/dist/chunk-Bmb41Sf3.cjs +0 -1
- package/dist/cms-layout-BrubV8D8.cjs +0 -2
- package/dist/cms-layout-BrubV8D8.cjs.map +0 -1
- package/dist/cms-layout-C2-yysO2.mjs +0 -2
- package/dist/cms-layout-C2-yysO2.mjs.map +0 -1
- package/dist/dist-BQGL-YKY.mjs +0 -2
- package/dist/dist-CAeolvAH.cjs +0 -2
- package/dist/image-D2U1SBw5.mjs +0 -2
- package/dist/image-Y7gCz7uE.cjs +0 -2
- package/dist/index-9dZXIJo5.d.mts +0 -2749
- package/dist/index-CQkuntSj.d.cts +0 -2749
- package/dist/select-BAlA65tZ.mjs.map +0 -1
- package/dist/select-Cib2aiw5.cjs +0 -2
- package/dist/select-Cib2aiw5.cjs.map +0 -1
- package/dist/tables-B3Ald6An.cjs +0 -4
- package/dist/tables-B3Ald6An.cjs.map +0 -1
- package/dist/tables-C3asiSD4.mjs +0 -4
- package/dist/tables-C3asiSD4.mjs.map +0 -1
- package/dist/tanstack-form-Byb7E1m9.cjs +0 -2
- package/dist/tanstack-form-Byb7E1m9.cjs.map +0 -1
- package/dist/tanstack-form-Dg_0hFwX.mjs +0 -2
- package/dist/tanstack-form-Dg_0hFwX.mjs.map +0 -1
|
@@ -1,76 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** Unique identifier for the nav item, used as React key and for active-state comparison. */
|
|
4
|
-
id: string;
|
|
5
|
-
/** Human-readable label rendered inside the sidebar button. */
|
|
6
|
-
label: string;
|
|
7
|
-
/** Optional icon element rendered to the left of the label. */
|
|
8
|
-
icon?: React.ReactNode;
|
|
9
|
-
/** Callback fired when the sidebar button is clicked. */
|
|
10
|
-
onClick?: () => void;
|
|
11
|
-
};
|
|
12
|
-
type NavGroup = {
|
|
13
|
-
/** Unique identifier for the group, used as React key. */
|
|
14
|
-
id: string;
|
|
15
|
-
/** Optional section heading rendered above the group's items. */
|
|
16
|
-
label?: string;
|
|
17
|
-
/** Navigation items that belong to this group. */
|
|
18
|
-
items: NavItem[];
|
|
19
|
-
};
|
|
20
|
-
type CMSLayoutProps = {
|
|
21
|
-
/** Text label used by the header for language-toggle or i18n display. */
|
|
22
|
-
i18nText?: string;
|
|
23
|
-
/** ID of the currently active navigation item; matched against `NavItem.id` to highlight the active button. */
|
|
24
|
-
activeNavItemId?: string;
|
|
25
|
-
/** Sidebar navigation definition; omitting this prop renders an empty sidebar. */
|
|
26
|
-
sidebar?: {
|
|
27
|
-
groupcontent: NavGroup[];
|
|
28
|
-
};
|
|
29
|
-
/** Callback fired when the logout button is clicked. */
|
|
30
|
-
onLogout?: () => void;
|
|
31
|
-
/** Callback fired when the user switches the UI locale to English. */
|
|
32
|
-
onChangeToEnLocale?: () => void;
|
|
33
|
-
/** Callback fired when the user switches the UI locale to Vietnamese. */
|
|
34
|
-
onChangeToViLocale?: () => void;
|
|
35
|
-
/**
|
|
36
|
-
* Label displayed on the logout button.
|
|
37
|
-
* @default 'Log out'
|
|
38
|
-
*/
|
|
39
|
-
logoutLabel?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Copyright string shown at the bottom of the sidebar.
|
|
42
|
-
* @default `Copyright © <current year>, Lunas.`
|
|
43
|
-
*/
|
|
44
|
-
copyright?: string;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Full-page CMS application shell with a collapsible inset sidebar, header, and main content area.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```tsx
|
|
51
|
-
* import { CMSLayout } from '@customafk/lunas-ui/layouts/cms-layout';
|
|
52
|
-
* import { LayoutDashboardIcon } from 'lucide-react';
|
|
53
|
-
*
|
|
54
|
-
* <CMSLayout
|
|
55
|
-
* activeNavItemId="dashboard"
|
|
56
|
-
* sidebar={{
|
|
57
|
-
* groupcontent: [
|
|
58
|
-
* {
|
|
59
|
-
* id: 'main',
|
|
60
|
-
* label: 'Main',
|
|
61
|
-
* items: [
|
|
62
|
-
* { id: 'dashboard', label: 'Dashboard', icon: <LayoutDashboardIcon />, onClick: () => router.push('/') },
|
|
63
|
-
* ],
|
|
64
|
-
* },
|
|
65
|
-
* ],
|
|
66
|
-
* }}
|
|
67
|
-
* onLogout={() => signOut()}
|
|
68
|
-
* >
|
|
69
|
-
* <DashboardPage />
|
|
70
|
-
* </CMSLayout>
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
declare const CMSLayout: React.FC<React.PropsWithChildren<CMSLayoutProps>>;
|
|
74
|
-
//#endregion
|
|
75
|
-
export { CMSLayout, CMSLayoutProps };
|
|
76
|
-
//# sourceMappingURL=index.d.cts.map
|
|
1
|
+
import { n as CMSLayoutProps, r as CMSLayoutUser, t as CMSLayout } from "../../index-KO98y6L0.cjs";
|
|
2
|
+
export { CMSLayout, CMSLayoutProps, CMSLayoutUser };
|
|
@@ -1,76 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** Unique identifier for the nav item, used as React key and for active-state comparison. */
|
|
4
|
-
id: string;
|
|
5
|
-
/** Human-readable label rendered inside the sidebar button. */
|
|
6
|
-
label: string;
|
|
7
|
-
/** Optional icon element rendered to the left of the label. */
|
|
8
|
-
icon?: React.ReactNode;
|
|
9
|
-
/** Callback fired when the sidebar button is clicked. */
|
|
10
|
-
onClick?: () => void;
|
|
11
|
-
};
|
|
12
|
-
type NavGroup = {
|
|
13
|
-
/** Unique identifier for the group, used as React key. */
|
|
14
|
-
id: string;
|
|
15
|
-
/** Optional section heading rendered above the group's items. */
|
|
16
|
-
label?: string;
|
|
17
|
-
/** Navigation items that belong to this group. */
|
|
18
|
-
items: NavItem[];
|
|
19
|
-
};
|
|
20
|
-
type CMSLayoutProps = {
|
|
21
|
-
/** Text label used by the header for language-toggle or i18n display. */
|
|
22
|
-
i18nText?: string;
|
|
23
|
-
/** ID of the currently active navigation item; matched against `NavItem.id` to highlight the active button. */
|
|
24
|
-
activeNavItemId?: string;
|
|
25
|
-
/** Sidebar navigation definition; omitting this prop renders an empty sidebar. */
|
|
26
|
-
sidebar?: {
|
|
27
|
-
groupcontent: NavGroup[];
|
|
28
|
-
};
|
|
29
|
-
/** Callback fired when the logout button is clicked. */
|
|
30
|
-
onLogout?: () => void;
|
|
31
|
-
/** Callback fired when the user switches the UI locale to English. */
|
|
32
|
-
onChangeToEnLocale?: () => void;
|
|
33
|
-
/** Callback fired when the user switches the UI locale to Vietnamese. */
|
|
34
|
-
onChangeToViLocale?: () => void;
|
|
35
|
-
/**
|
|
36
|
-
* Label displayed on the logout button.
|
|
37
|
-
* @default 'Log out'
|
|
38
|
-
*/
|
|
39
|
-
logoutLabel?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Copyright string shown at the bottom of the sidebar.
|
|
42
|
-
* @default `Copyright © <current year>, Lunas.`
|
|
43
|
-
*/
|
|
44
|
-
copyright?: string;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Full-page CMS application shell with a collapsible inset sidebar, header, and main content area.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```tsx
|
|
51
|
-
* import { CMSLayout } from '@customafk/lunas-ui/layouts/cms-layout';
|
|
52
|
-
* import { LayoutDashboardIcon } from 'lucide-react';
|
|
53
|
-
*
|
|
54
|
-
* <CMSLayout
|
|
55
|
-
* activeNavItemId="dashboard"
|
|
56
|
-
* sidebar={{
|
|
57
|
-
* groupcontent: [
|
|
58
|
-
* {
|
|
59
|
-
* id: 'main',
|
|
60
|
-
* label: 'Main',
|
|
61
|
-
* items: [
|
|
62
|
-
* { id: 'dashboard', label: 'Dashboard', icon: <LayoutDashboardIcon />, onClick: () => router.push('/') },
|
|
63
|
-
* ],
|
|
64
|
-
* },
|
|
65
|
-
* ],
|
|
66
|
-
* }}
|
|
67
|
-
* onLogout={() => signOut()}
|
|
68
|
-
* >
|
|
69
|
-
* <DashboardPage />
|
|
70
|
-
* </CMSLayout>
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
declare const CMSLayout: React.FC<React.PropsWithChildren<CMSLayoutProps>>;
|
|
74
|
-
//#endregion
|
|
75
|
-
export { CMSLayout, CMSLayoutProps };
|
|
76
|
-
//# sourceMappingURL=index.d.mts.map
|
|
1
|
+
import { n as CMSLayoutProps, r as CMSLayoutUser, t as CMSLayout } from "../../index-Cm62M0Ft.mjs";
|
|
2
|
+
export { CMSLayout, CMSLayoutProps, CMSLayoutUser };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import"../../button.variants-
|
|
1
|
+
"use client";import"../../button.variants-DkMqWB8G.mjs";import"../../button-CCVJTHBI.mjs";import"../../skeleton-C51IdOfK.mjs";import"../../tooltip-Dxl5Wa8i.mjs";import"../../avatar-fltdRVsJ.mjs";import"../../separator-D3Gmkxzq.mjs";import"../../sheet-BFlIfNaA.mjs";import"../../dropdown-menu-BWhiVsEf.mjs";import"../../input-NJP2wQOm.mjs";import{t as e}from"../../cms-layout-DkCR1AfG.mjs";export{e as CMSLayout};
|
package/dist/layouts/flex.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../flex-
|
|
1
|
+
"use client";const e=require(`../flex-DmWmOBn5.cjs`);exports.Flex=e.t;
|
package/dist/layouts/flex.d.cts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as react44 from "react";
|
|
2
|
+
import * as class_variance_authority_types2 from "class-variance-authority/types";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
4
|
|
|
5
5
|
//#region packages/components/layouts/flex.d.ts
|
|
6
6
|
declare const flexVariants: (props?: ({
|
|
7
7
|
vertical?: boolean | null | undefined;
|
|
8
|
-
width?: "
|
|
8
|
+
width?: "auto" | "full" | "fit" | "screen" | "min" | "max" | "null" | null | undefined;
|
|
9
9
|
wrap?: boolean | null | undefined;
|
|
10
10
|
margin?: "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
11
11
|
padding?: "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
12
12
|
gap?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
13
13
|
justify?: "start" | "center" | "end" | "between" | "around" | "evenly" | "stretch" | null | undefined;
|
|
14
14
|
align?: "start" | "center" | "end" | "stretch" | "baseline" | null | undefined;
|
|
15
|
-
} &
|
|
15
|
+
} & class_variance_authority_types2.ClassProp) | undefined) => string;
|
|
16
16
|
type Props = {
|
|
17
17
|
/** Additional Tailwind classes merged on top of the variant-generated classes. */
|
|
18
18
|
className?: string;
|
|
@@ -100,7 +100,7 @@ type Props = {
|
|
|
100
100
|
* </Flex>
|
|
101
101
|
* ```
|
|
102
102
|
*/
|
|
103
|
-
declare const Flex:
|
|
103
|
+
declare const Flex: react44.MemoExoticComponent<({
|
|
104
104
|
vertical,
|
|
105
105
|
wrap,
|
|
106
106
|
width,
|
|
@@ -111,7 +111,7 @@ declare const Flex: react26.MemoExoticComponent<({
|
|
|
111
111
|
align,
|
|
112
112
|
className,
|
|
113
113
|
children
|
|
114
|
-
}: React.PropsWithChildren<Props>) =>
|
|
114
|
+
}: React.PropsWithChildren<Props>) => react44.JSX.Element>;
|
|
115
115
|
//#endregion
|
|
116
116
|
export { Flex };
|
|
117
117
|
//# sourceMappingURL=flex.d.cts.map
|
package/dist/layouts/flex.d.mts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react55 from "react";
|
|
2
2
|
import { VariantProps } from "class-variance-authority";
|
|
3
|
-
import * as
|
|
3
|
+
import * as class_variance_authority_types1 from "class-variance-authority/types";
|
|
4
4
|
|
|
5
5
|
//#region packages/components/layouts/flex.d.ts
|
|
6
6
|
declare const flexVariants: (props?: ({
|
|
7
7
|
vertical?: boolean | null | undefined;
|
|
8
|
-
width?: "
|
|
8
|
+
width?: "auto" | "full" | "fit" | "screen" | "min" | "max" | "null" | null | undefined;
|
|
9
9
|
wrap?: boolean | null | undefined;
|
|
10
10
|
margin?: "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
11
11
|
padding?: "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
12
12
|
gap?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | null | undefined;
|
|
13
13
|
justify?: "start" | "center" | "end" | "between" | "around" | "evenly" | "stretch" | null | undefined;
|
|
14
14
|
align?: "start" | "center" | "end" | "stretch" | "baseline" | null | undefined;
|
|
15
|
-
} &
|
|
15
|
+
} & class_variance_authority_types1.ClassProp) | undefined) => string;
|
|
16
16
|
type Props = {
|
|
17
17
|
/** Additional Tailwind classes merged on top of the variant-generated classes. */
|
|
18
18
|
className?: string;
|
|
@@ -100,7 +100,7 @@ type Props = {
|
|
|
100
100
|
* </Flex>
|
|
101
101
|
* ```
|
|
102
102
|
*/
|
|
103
|
-
declare const Flex:
|
|
103
|
+
declare const Flex: react55.MemoExoticComponent<({
|
|
104
104
|
vertical,
|
|
105
105
|
wrap,
|
|
106
106
|
width,
|
|
@@ -111,7 +111,7 @@ declare const Flex: react262.MemoExoticComponent<({
|
|
|
111
111
|
align,
|
|
112
112
|
className,
|
|
113
113
|
children
|
|
114
|
-
}: React.PropsWithChildren<Props>) =>
|
|
114
|
+
}: React.PropsWithChildren<Props>) => react55.JSX.Element>;
|
|
115
115
|
//#endregion
|
|
116
116
|
export { Flex };
|
|
117
117
|
//# sourceMappingURL=flex.d.mts.map
|
package/dist/layouts/flex.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{t as e}from"../flex-
|
|
1
|
+
"use client";import{t as e}from"../flex-B6YSJzGe.mjs";export{e as Flex};
|
package/dist/layouts/grid.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-
|
|
1
|
+
"use client";const e=require(`../chunk-350yNsax.cjs`);let t=require(`@customafk/react-toolkit/utils`),n=require(`react/jsx-runtime`);const r=({children:e})=>(0,n.jsx)(`div`,{className:`@container size-full`,children:(0,n.jsx)(`div`,{className:(0,t.cn)(`grid grid-cols-1 gap-4`,`@3xs:grid-cols-1`,`@2xs:grid-cols-1`,`@xs:grid-cols-1`,`@sm:grid-cols-1`,`@md:grid-cols-2`,`@lg:grid-cols-2`,`@xl:grid-cols-2`,`@2xl:grid-cols-2`,`@3xl:grid-cols-3`,`@4xl:grid-cols-3`,`@5xl:grid-cols-4`,`@6xl:grid-cols-4`,`@7xl:grid-cols-5`,`@8xl:grid-cols-6`,`@9xl:grid-cols-7`,`@10xl:grid-cols-8`),children:e})});exports.Grid=r;
|
|
2
2
|
//# sourceMappingURL=grid.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../button.variants-
|
|
1
|
+
require(`../../button.variants-4kw6plrv.cjs`),require(`../../button-C--DAN1D.cjs`),require(`../../paragraph-DvTZvbzw.cjs`),require(`../../skeleton-CX1USu1w.cjs`),require(`../../flex-DmWmOBn5.cjs`),require(`../../tooltip-CBdoIzoM.cjs`),require(`../../avatar-TyOphzGo.cjs`),require(`../../separator-KuymG9g0.cjs`),require(`../../sheet-CvKSi0UC.cjs`),require(`../../dropdown-menu-CVh520yG.cjs`),require(`../../input-WJ0DLHTR.cjs`);const e=require(`../../payment-layout-DyILfyVG.cjs`);exports.PaymentLayout=e.t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../button.variants-
|
|
1
|
+
import"../../button.variants-DkMqWB8G.mjs";import"../../button-CCVJTHBI.mjs";import"../../paragraph-DYLaQtTV.mjs";import"../../skeleton-C51IdOfK.mjs";import"../../flex-B6YSJzGe.mjs";import"../../tooltip-Dxl5Wa8i.mjs";import"../../avatar-fltdRVsJ.mjs";import"../../separator-D3Gmkxzq.mjs";import"../../sheet-BFlIfNaA.mjs";import"../../dropdown-menu-BWhiVsEf.mjs";import"../../input-NJP2wQOm.mjs";import{t as e}from"../../payment-layout-DrQ0kZPX.mjs";export{e as PaymentLayout};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-350yNsax.cjs`);require(`../button.variants-4kw6plrv.cjs`);const t=require(`../button-C--DAN1D.cjs`);let n=require(`lucide-react`),r=require(`@customafk/react-toolkit/utils`),i=require(`react/jsx-runtime`);const a=({title:e=`Tính năng đang phát triển`,subtitle:a=`Chúng tôi đang phát triển tính năng này. Vui lòng quay lại sau.`,buttonText:o=`Quay lại`,onButtonClick:s=()=>window.history.back(),className:c,iconClassName:l})=>(0,i.jsxs)(`div`,{className:(0,r.cn)(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,c),children:[(0,i.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,i.jsx)(n.Construction,{className:(0,r.cn)(`size-16 sm:size-24 text-yellow-500`,l)}),(0,i.jsx)(`div`,{className:`text-3xl sm:text-5xl font-bold text-yellow-500`})]}),(0,i.jsx)(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:e}),(0,i.jsx)(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:a}),(0,i.jsx)(t.t,{onClick:s,variant:`default`,className:`mt-2`,size:`sm`,children:o})]});var o=a;exports.FeatureDeveloping=a,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=FeatureDeveloping.cjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react29 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/FeatureDeveloping.d.ts
|
|
4
4
|
interface FeatureDevelopingProps {
|
|
@@ -37,7 +37,7 @@ declare const FeatureDeveloping: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: FeatureDevelopingProps) =>
|
|
40
|
+
}: FeatureDevelopingProps) => react29.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|
|
43
43
|
//# sourceMappingURL=FeatureDeveloping.d.cts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react13 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/FeatureDeveloping.d.ts
|
|
4
4
|
interface FeatureDevelopingProps {
|
|
@@ -37,7 +37,7 @@ declare const FeatureDeveloping: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: FeatureDevelopingProps) =>
|
|
40
|
+
}: FeatureDevelopingProps) => react13.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|
|
43
43
|
//# sourceMappingURL=FeatureDeveloping.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../button.variants-
|
|
1
|
+
import"../button.variants-DkMqWB8G.mjs";import{t as e}from"../button-CCVJTHBI.mjs";import{Construction as t}from"lucide-react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r,jsxs as i}from"react/jsx-runtime";const a=({title:a=`Tính năng đang phát triển`,subtitle:o=`Chúng tôi đang phát triển tính năng này. Vui lòng quay lại sau.`,buttonText:s=`Quay lại`,onButtonClick:c=()=>window.history.back(),className:l,iconClassName:u})=>i(`div`,{className:n(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,l),children:[i(`div`,{className:`flex flex-col items-center gap-2`,children:[r(t,{className:n(`size-16 sm:size-24 text-yellow-500`,u)}),r(`div`,{className:`text-3xl sm:text-5xl font-bold text-yellow-500`})]}),r(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:a}),r(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:o}),r(e,{onClick:c,variant:`default`,className:`mt-2`,size:`sm`,children:s})]});var o=a;export{a as FeatureDeveloping,o as default};
|
|
2
2
|
//# sourceMappingURL=FeatureDeveloping.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-350yNsax.cjs`);require(`../button.variants-4kw6plrv.cjs`);const t=require(`../button-C--DAN1D.cjs`);let n=require(`lucide-react`),r=require(`@customafk/react-toolkit/utils`),i=require(`react/jsx-runtime`);const a=({title:e=`Tính năng đang bảo trì`,subtitle:a=`Chúng tôi đang khắc phục vấn đề với tính năng này. Vui lòng quay lại sau.`,buttonText:o=`Quay lại`,onButtonClick:s=()=>window.history.back(),className:c,iconClassName:l})=>(0,i.jsxs)(`div`,{className:(0,r.cn)(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,c),children:[(0,i.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,i.jsx)(n.Wrench,{className:(0,r.cn)(`size-16 sm:size-24 text-orange-500`,l)}),(0,i.jsx)(`div`,{className:`text-3xl sm:text-5xl font-bold text-orange-500`})]}),(0,i.jsx)(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:e}),(0,i.jsx)(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:a}),(0,i.jsx)(t.t,{onClick:s,variant:`default`,className:`mt-2`,size:`sm`,children:o})]});var o=a;exports.FeatureFixing=a,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=FeatureFixing.cjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react30 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/FeatureFixing.d.ts
|
|
4
4
|
interface FeatureFixingProps {
|
|
@@ -37,7 +37,7 @@ declare const FeatureFixing: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: FeatureFixingProps) =>
|
|
40
|
+
}: FeatureFixingProps) => react30.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
|
|
43
43
|
//# sourceMappingURL=FeatureFixing.d.cts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react2 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/FeatureFixing.d.ts
|
|
4
4
|
interface FeatureFixingProps {
|
|
@@ -37,7 +37,7 @@ declare const FeatureFixing: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: FeatureFixingProps) =>
|
|
40
|
+
}: FeatureFixingProps) => react2.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { FeatureFixing, FeatureFixing as default, FeatureFixingProps };
|
|
43
43
|
//# sourceMappingURL=FeatureFixing.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../button.variants-
|
|
1
|
+
import"../button.variants-DkMqWB8G.mjs";import{t as e}from"../button-CCVJTHBI.mjs";import{Wrench as t}from"lucide-react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r,jsxs as i}from"react/jsx-runtime";const a=({title:a=`Tính năng đang bảo trì`,subtitle:o=`Chúng tôi đang khắc phục vấn đề với tính năng này. Vui lòng quay lại sau.`,buttonText:s=`Quay lại`,onButtonClick:c=()=>window.history.back(),className:l,iconClassName:u})=>i(`div`,{className:n(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,l),children:[i(`div`,{className:`flex flex-col items-center gap-2`,children:[r(t,{className:n(`size-16 sm:size-24 text-orange-500`,u)}),r(`div`,{className:`text-3xl sm:text-5xl font-bold text-orange-500`})]}),r(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:a}),r(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:o}),r(e,{onClick:c,variant:`default`,className:`mt-2`,size:`sm`,children:s})]});var o=a;export{a as FeatureFixing,o as default};
|
|
2
2
|
//# sourceMappingURL=FeatureFixing.mjs.map
|
package/dist/pages/LoginPage.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-
|
|
1
|
+
"use client";const e=require(`../chunk-350yNsax.cjs`);require(`../button.variants-4kw6plrv.cjs`);const t=require(`../button-C--DAN1D.cjs`);require(`../heading-tGTqk3pA.cjs`),require(`../paragraph-DvTZvbzw.cjs`),require(`../close-Dlo1bI8x.cjs`);const n=require(`../dialog-BigPrWIj.cjs`),r=require(`../input-WJ0DLHTR.cjs`),i=require(`../label-CC6fXVbC.cjs`),a=require(`../alert-B2PaDJp6.cjs`);let o=require(`lucide-react`),s=require(`react`),c=require(`react/jsx-runtime`),l=require(`zod`);const u=l.z.object({email:l.z.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:l.z.string().min(1,`Vui lòng nhập mật khẩu`)}),d=({open:e,onOpenChange:l,onLogin:d,onForgotPassword:f,onRegister:p,isLoading:m=!1,errorMessage:h,title:g=`Đăng nhập`,subtitle:_=`Nhập thông tin để tiếp tục`})=>{let v=(0,s.useId)(),y=(0,s.useId)(),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(``),[w,T]=(0,s.useState)(!1),[E,D]=(0,s.useState)({});return(0,c.jsx)(n.t,{open:e,onOpenChange:l,children:(0,c.jsxs)(n.r,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[(0,c.jsxs)(n.o,{children:[(0,c.jsx)(n.l,{children:g}),(0,c.jsx)(n.i,{children:_})]}),(0,c.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=u.safeParse({email:b,password:S});if(!t.success){let e=t.error.flatten().fieldErrors;D({email:e.email?.[0],password:e.password?.[0]});return}D({}),await d(b,S)},noValidate:!0,className:`flex flex-col gap-4`,children:[h&&(0,c.jsx)(a.t,{variant:`destructive`,children:(0,c.jsx)(a.n,{children:h})}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(i.t,{htmlFor:v,children:`Email`}),(0,c.jsx)(r.t,{id:v,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:b,onChange:e=>x(e.target.value),"aria-invalid":!!E.email,disabled:m}),E.email&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:E.email})]}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,c.jsx)(i.t,{htmlFor:y,children:`Mật khẩu`}),f&&(0,c.jsx)(t.t,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:f,children:`Quên mật khẩu?`})]}),(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsx)(r.t,{id:y,type:w?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:S,onChange:e=>C(e.target.value),"aria-invalid":!!E.password,disabled:m,className:`pr-10`}),(0,c.jsx)(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),T(e=>!e)},"aria-label":w?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:w?(0,c.jsx)(o.EyeOff,{size:16}):(0,c.jsx)(o.Eye,{size:16})})]}),E.password&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:E.password})]}),(0,c.jsx)(t.t,{type:`submit`,isLoading:m,className:`w-full`,children:`Đăng nhập`}),(0,c.jsx)(t.t,{type:`button`,variant:`outline`,className:`w-full`,disabled:m,onClick:()=>l(!1),children:`Đóng hộp thoại`})]}),p&&(0,c.jsxs)(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[(0,c.jsx)(`span`,{children:`Chưa có tài khoản?`}),(0,c.jsx)(t.t,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:p,children:`Đăng ký`})]})]})})};exports.LoginPage=d;
|
|
2
2
|
//# sourceMappingURL=LoginPage.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginPage.cjs","names":["z","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Alert","AlertDescription","Label","Input","Button","EyeOff","Eye"],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LoginPage.cjs","names":["z","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Alert","AlertDescription","Label","Input","Button","EyeOff","Eye"],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" disabled={isLoading} onClick={() => onOpenChange(false)}>\n Đóng hộp thoại\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react4 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/LoginPage.d.ts
|
|
4
4
|
interface LoginPageProps {
|
|
@@ -49,7 +49,7 @@ declare const LoginPage: ({
|
|
|
49
49
|
errorMessage,
|
|
50
50
|
title,
|
|
51
51
|
subtitle
|
|
52
|
-
}: LoginPageProps) =>
|
|
52
|
+
}: LoginPageProps) => react4.JSX.Element;
|
|
53
53
|
//#endregion
|
|
54
54
|
export { LoginPage, LoginPageProps };
|
|
55
55
|
//# sourceMappingURL=LoginPage.d.cts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react10 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/LoginPage.d.ts
|
|
4
4
|
interface LoginPageProps {
|
|
@@ -49,7 +49,7 @@ declare const LoginPage: ({
|
|
|
49
49
|
errorMessage,
|
|
50
50
|
title,
|
|
51
51
|
subtitle
|
|
52
|
-
}: LoginPageProps) =>
|
|
52
|
+
}: LoginPageProps) => react10.JSX.Element;
|
|
53
53
|
//#endregion
|
|
54
54
|
export { LoginPage, LoginPageProps };
|
|
55
55
|
//# sourceMappingURL=LoginPage.d.mts.map
|
package/dist/pages/LoginPage.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import"../button.variants-
|
|
1
|
+
"use client";import"../button.variants-DkMqWB8G.mjs";import{t as e}from"../button-CCVJTHBI.mjs";import"../heading-De4Pn3mZ.mjs";import"../paragraph-DYLaQtTV.mjs";import"../close-_UHFeiLS.mjs";import{i as t,l as n,o as r,r as i,t as a}from"../dialog-CLDnvNH_.mjs";import{t as o}from"../input-NJP2wQOm.mjs";import{t as s}from"../label-CUCpwS5D.mjs";import{n as c,t as l}from"../alert-BbvPwf2x.mjs";import{Eye as u,EyeOff as d}from"lucide-react";import{useId as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{z as g}from"zod";const _=g.object({email:g.string().min(1,`Vui lòng nhập email`).email(`Email không hợp lệ`),password:g.string().min(1,`Vui lòng nhập mật khẩu`)}),v=({open:g,onOpenChange:v,onLogin:y,onForgotPassword:b,onRegister:x,isLoading:S=!1,errorMessage:C,title:w=`Đăng nhập`,subtitle:T=`Nhập thông tin để tiếp tục`})=>{let E=f(),D=f(),[O,k]=p(``),[A,j]=p(``),[M,N]=p(!1),[P,F]=p({});return m(a,{open:g,onOpenChange:v,children:h(i,{className:`max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm`,children:[h(r,{children:[m(n,{children:w}),m(t,{children:T})]}),h(`form`,{onSubmit:async e=>{e.preventDefault();let t=_.safeParse({email:O,password:A});if(!t.success){let e=t.error.flatten().fieldErrors;F({email:e.email?.[0],password:e.password?.[0]});return}F({}),await y(O,A)},noValidate:!0,className:`flex flex-col gap-4`,children:[C&&m(l,{variant:`destructive`,children:m(c,{children:C})}),h(`div`,{className:`flex flex-col gap-1.5`,children:[m(s,{htmlFor:E,children:`Email`}),m(o,{id:E,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:O,onChange:e=>k(e.target.value),"aria-invalid":!!P.email,disabled:S}),P.email&&m(`p`,{className:`text-destructive text-xs`,children:P.email})]}),h(`div`,{className:`flex flex-col gap-1.5`,children:[h(`div`,{className:`flex items-center justify-between`,children:[m(s,{htmlFor:D,children:`Mật khẩu`}),b&&m(e,{type:`button`,variant:`link`,size:`sm`,className:`h-auto p-0 text-xs`,onClick:b,children:`Quên mật khẩu?`})]}),h(`div`,{className:`relative`,children:[m(o,{id:D,type:M?`text`:`password`,autoComplete:`current-password`,placeholder:`••••••••`,value:A,onChange:e=>j(e.target.value),"aria-invalid":!!P.password,disabled:S,className:`pr-10`}),m(`button`,{type:`button`,className:`absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground`,onMouseDown:e=>{e.preventDefault(),N(e=>!e)},"aria-label":M?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:m(M?d:u,{size:16})})]}),P.password&&m(`p`,{className:`text-destructive text-xs`,children:P.password})]}),m(e,{type:`submit`,isLoading:S,className:`w-full`,children:`Đăng nhập`}),m(e,{type:`button`,variant:`outline`,className:`w-full`,disabled:S,onClick:()=>v(!1),children:`Đóng hộp thoại`})]}),x&&h(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[m(`span`,{children:`Chưa có tài khoản?`}),m(e,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:x,children:`Đăng ký`})]})]})})};export{v as LoginPage};
|
|
2
2
|
//# sourceMappingURL=LoginPage.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginPage.mjs","names":[],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LoginPage.mjs","names":[],"sources":["../../packages/components/pages/LoginPage.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useState } from 'react';\n\nimport { Eye, EyeOff } from 'lucide-react';\nimport { z } from 'zod';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport interface LoginPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Called when the user submits login credentials */\n onLogin: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Quên mật khẩu?\" link is clicked */\n onForgotPassword?: () => void;\n /** Called when the \"Đăng ký\" link is clicked */\n onRegister?: () => void;\n /** Disables the form and shows a spinner on the submit button */\n isLoading?: boolean;\n /** Server-side error message rendered in a destructive Alert */\n errorMessage?: string;\n /** Dialog heading. Default: \"Đăng nhập\" */\n title?: string;\n /** Dialog subheading. Default: \"Nhập thông tin để tiếp tục\" */\n subtitle?: string;\n}\n\nconst loginSchema = z.object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z.string().min(1, 'Vui lòng nhập mật khẩu'),\n});\n\n/**\n * Modal login dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { LoginPage } from '@customafk/lunas-ui/pages/LoginPage';\n *\n * <LoginPage\n * open={open}\n * onOpenChange={setOpen}\n * onLogin={async (email, password) => {\n * await authService.login(email, password);\n * setOpen(false);\n * }}\n * onRegister={() => { setOpen(false); setRegisterOpen(true); }}\n * />\n * ```\n */\nexport const LoginPage = ({\n open,\n onOpenChange,\n onLogin,\n onForgotPassword,\n onRegister,\n isLoading = false,\n errorMessage,\n title = 'Đăng nhập',\n subtitle = 'Nhập thông tin để tiếp tục',\n}: LoginPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = loginSchema.safeParse({ email, password });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({ email: errors.email?.[0], password: errors.password?.[0] });\n return;\n }\n setFieldErrors({});\n await onLogin(email, password);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=open]:zoom-in-100 max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=closed]:zoom-out-100 max-sm:top-auto max-sm:right-0 max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-b-none sm:max-w-sm\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{subtitle}</DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} noValidate className=\"flex flex-col gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={emailId}>Email</Label>\n <Input\n id={emailId}\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={e => setEmail(e.target.value)}\n aria-invalid={!!fieldErrors.email}\n disabled={isLoading}\n />\n {fieldErrors.email && <p className=\"text-destructive text-xs\">{fieldErrors.email}</p>}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={passwordId}>Mật khẩu</Label>\n {onForgotPassword && (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"h-auto p-0 text-xs\" onClick={onForgotPassword}>\n Quên mật khẩu?\n </Button>\n )}\n </div>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n placeholder=\"••••••••\"\n value={password}\n onChange={e => setPassword(e.target.value)}\n aria-invalid={!!fieldErrors.password}\n disabled={isLoading}\n className=\"pr-10\"\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground\"\n onMouseDown={e => {\n e.preventDefault();\n setShowPassword(v => !v);\n }}\n aria-label={showPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.password && <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng nhập\n </Button>\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" disabled={isLoading} onClick={() => onOpenChange(false)}>\n Đóng hộp thoại\n </Button>\n </form>\n\n {onRegister && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onRegister}>\n Đăng ký\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-350yNsax.cjs`);require(`../button.variants-4kw6plrv.cjs`);const t=require(`../button-C--DAN1D.cjs`);let n=require(`lucide-react`),r=require(`@customafk/react-toolkit/utils`),i=require(`react/jsx-runtime`);const a=({title:e=`Quyền truy cập bị từ chối`,subtitle:a=`Xin lỗi, bạn không có quyền truy cập vào trang này.`,buttonText:o=`Quay lại`,onButtonClick:s=()=>window.history.back(),className:c,iconClassName:l})=>(0,i.jsxs)(`div`,{className:(0,r.cn)(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,c),children:[(0,i.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,i.jsx)(n.ShieldAlert,{className:(0,r.cn)(`size-16 sm:size-24 text-primary`,l)}),(0,i.jsx)(`div`,{className:`text-4xl sm:text-6xl font-bold text-primary`,children:`403`})]}),(0,i.jsx)(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:e}),(0,i.jsx)(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:a}),(0,i.jsx)(t.t,{onClick:s,variant:`default`,className:`mt-2`,size:`sm`,children:o})]});var o=a;exports.NotAuthorized=a,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=NotAuthorized.cjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react1 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/NotAuthorized.d.ts
|
|
4
4
|
interface NotAuthorizedProps {
|
|
@@ -37,7 +37,7 @@ declare const NotAuthorized: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: NotAuthorizedProps) =>
|
|
40
|
+
}: NotAuthorizedProps) => react1.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { NotAuthorized, NotAuthorized as default, NotAuthorizedProps };
|
|
43
43
|
//# sourceMappingURL=NotAuthorized.d.cts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react8 from "react";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/pages/NotAuthorized.d.ts
|
|
4
4
|
interface NotAuthorizedProps {
|
|
@@ -37,7 +37,7 @@ declare const NotAuthorized: ({
|
|
|
37
37
|
onButtonClick,
|
|
38
38
|
className,
|
|
39
39
|
iconClassName
|
|
40
|
-
}: NotAuthorizedProps) =>
|
|
40
|
+
}: NotAuthorizedProps) => react8.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { NotAuthorized, NotAuthorized as default, NotAuthorizedProps };
|
|
43
43
|
//# sourceMappingURL=NotAuthorized.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../button.variants-
|
|
1
|
+
import"../button.variants-DkMqWB8G.mjs";import{t as e}from"../button-CCVJTHBI.mjs";import{ShieldAlert as t}from"lucide-react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r,jsxs as i}from"react/jsx-runtime";const a=({title:a=`Quyền truy cập bị từ chối`,subtitle:o=`Xin lỗi, bạn không có quyền truy cập vào trang này.`,buttonText:s=`Quay lại`,onButtonClick:c=()=>window.history.back(),className:l,iconClassName:u})=>i(`div`,{className:n(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,l),children:[i(`div`,{className:`flex flex-col items-center gap-2`,children:[r(t,{className:n(`size-16 sm:size-24 text-primary`,u)}),r(`div`,{className:`text-4xl sm:text-6xl font-bold text-primary`,children:`403`})]}),r(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:a}),r(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:o}),r(e,{onClick:c,variant:`default`,className:`mt-2`,size:`sm`,children:s})]});var o=a;export{a as NotAuthorized,o as default};
|
|
2
2
|
//# sourceMappingURL=NotAuthorized.mjs.map
|
package/dist/pages/NotFound.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-350yNsax.cjs`);require(`../button.variants-4kw6plrv.cjs`);const t=require(`../button-C--DAN1D.cjs`);let n=require(`lucide-react`),r=require(`@customafk/react-toolkit/utils`),i=require(`react/jsx-runtime`);const a=({title:e=`Không tìm thấy trang`,subtitle:a=`Xin lỗi, trang bạn đang tìm kiếm không tồn tại hoặc đã bị di chuyển.`,buttonText:o=`Trở về trang chủ`,onButtonClick:s=()=>window.history.back(),className:c,iconClassName:l})=>(0,i.jsxs)(`div`,{className:(0,r.cn)(`flex flex-col items-center justify-center min-h-[50vh] gap-4 sm:gap-6 py-8 sm:py-10 px-4 text-center w-full`,c),children:[(0,i.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,i.jsx)(n.FileQuestion,{className:(0,r.cn)(`size-16 sm:size-24 text-primary`,l)}),(0,i.jsx)(`div`,{className:`text-4xl sm:text-6xl font-bold text-primary`,children:`404`})]}),(0,i.jsx)(`h1`,{className:`text-xl sm:text-2xl font-semibold mt-2`,children:e}),(0,i.jsx)(`p`,{className:`text-muted-foreground max-w-md text-sm sm:text-base`,children:a}),(0,i.jsx)(t.t,{onClick:s,variant:`default`,className:`mt-2`,size:`sm`,children:o})]});var o=a;exports.NotFound=a,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=NotFound.cjs.map
|