@customafk/lunas-ui 0.2.51 → 0.2.53
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/FeatureDeveloping-Bpmk3ZyS.d.cts +43 -0
- package/dist/FeatureDeveloping-CVFrndc_.cjs +2 -0
- package/dist/FeatureDeveloping-CVFrndc_.cjs.map +1 -0
- package/dist/FeatureDeveloping-k_14m44U.mjs +2 -0
- package/dist/FeatureDeveloping-k_14m44U.mjs.map +1 -0
- package/dist/FeatureDeveloping-oS433qZK.d.mts +43 -0
- package/dist/FeatureFixing-CRTE4tkV.d.mts +43 -0
- package/dist/FeatureFixing-CqDnOmou.cjs +2 -0
- package/dist/FeatureFixing-CqDnOmou.cjs.map +1 -0
- package/dist/FeatureFixing-D7qYhigu.mjs +2 -0
- package/dist/FeatureFixing-D7qYhigu.mjs.map +1 -0
- package/dist/FeatureFixing-Vwb-odpJ.d.cts +43 -0
- package/dist/LoginPage-B7SgjP72.d.cts +55 -0
- package/dist/LoginPage-BDh57TIY.mjs +2 -0
- package/dist/LoginPage-BDh57TIY.mjs.map +1 -0
- package/dist/LoginPage-Bsh_Wo-4.d.mts +55 -0
- package/dist/LoginPage-CSewNEGN.cjs +2 -0
- package/dist/LoginPage-CSewNEGN.cjs.map +1 -0
- package/dist/NotAuthorized-B1nln3YY.d.mts +43 -0
- package/dist/NotAuthorized-BBlhgNjt.cjs +2 -0
- package/dist/NotAuthorized-BBlhgNjt.cjs.map +1 -0
- package/dist/NotAuthorized-DcXH7UbQ.d.cts +43 -0
- package/dist/NotAuthorized-xXIwCXtZ.mjs +2 -0
- package/dist/NotAuthorized-xXIwCXtZ.mjs.map +1 -0
- package/dist/NotFound-BOAR7QCc.cjs +2 -0
- package/dist/NotFound-BOAR7QCc.cjs.map +1 -0
- package/dist/NotFound-Co0y_Fpa.d.cts +43 -0
- package/dist/NotFound-H7T1wCkf.mjs +2 -0
- package/dist/NotFound-H7T1wCkf.mjs.map +1 -0
- package/dist/NotFound-Kvw-yvr_.d.mts +43 -0
- package/dist/RegisterPage-BI5efPEP.cjs +2 -0
- package/dist/RegisterPage-BI5efPEP.cjs.map +1 -0
- package/dist/RegisterPage-DKiXE8U6.d.mts +52 -0
- package/dist/RegisterPage-DluyCA1L.mjs +2 -0
- package/dist/RegisterPage-DluyCA1L.mjs.map +1 -0
- package/dist/RegisterPage-qEpX0gUP.d.cts +52 -0
- package/dist/VerifyEmailPage-D3U6V5IR.mjs +2 -0
- package/dist/VerifyEmailPage-D3U6V5IR.mjs.map +1 -0
- package/dist/VerifyEmailPage-DRQiyUqo.cjs +2 -0
- package/dist/VerifyEmailPage-DRQiyUqo.cjs.map +1 -0
- package/dist/VerifyEmailPage-Dd59Girn.d.cts +64 -0
- package/dist/VerifyEmailPage-ZaRE0r8m.d.mts +64 -0
- package/dist/add-new-B35fn_Bz.mjs +2 -0
- package/dist/add-new-B35fn_Bz.mjs.map +1 -0
- package/dist/add-new-DqRZeMNy.d.mts +17 -0
- package/dist/add-new-deaz-L5t.cjs +2 -0
- package/dist/add-new-deaz-L5t.cjs.map +1 -0
- package/dist/add-new-pqYC7xmc.d.cts +17 -0
- package/dist/alert-BEcGZfPW.mjs +2 -0
- package/dist/alert-BEcGZfPW.mjs.map +1 -0
- package/dist/alert-CB79DQwK.d.mts +88 -0
- package/dist/alert-Ca5wFNXF.d.cts +88 -0
- package/dist/alert-DDdHIRib.cjs +2 -0
- package/dist/alert-DDdHIRib.cjs.map +1 -0
- package/dist/alert-dialog-B9ThoUnv.cjs +2 -0
- package/dist/alert-dialog-B9ThoUnv.cjs.map +1 -0
- package/dist/alert-dialog-D0jOWqaA.d.mts +90 -0
- package/dist/alert-dialog-DqIS6qRz.mjs +2 -0
- package/dist/alert-dialog-DqIS6qRz.mjs.map +1 -0
- package/dist/alert-dialog-TBiCQ9Ty.d.cts +90 -0
- package/dist/aspect-ratio-BsfIALEV.d.mts +24 -0
- package/dist/aspect-ratio-Cd2mBXiE.cjs +2 -0
- package/dist/aspect-ratio-Cd2mBXiE.cjs.map +1 -0
- package/dist/aspect-ratio-DP12ssDX.mjs +2 -0
- package/dist/aspect-ratio-DP12ssDX.mjs.map +1 -0
- package/dist/aspect-ratio-Dy7SplBM.d.cts +24 -0
- package/dist/avatar-CVRRoJ05.cjs +2 -0
- package/dist/avatar-CVRRoJ05.cjs.map +1 -0
- package/dist/avatar-XFoz-EPk.d.cts +35 -0
- package/dist/avatar-tjgTFpVU.mjs +2 -0
- package/dist/avatar-tjgTFpVU.mjs.map +1 -0
- package/dist/avatar-zDJh1tw9.d.mts +35 -0
- package/dist/badge-7bcsD0vA.cjs +2 -0
- package/dist/badge-7bcsD0vA.cjs.map +1 -0
- package/dist/badge-CG6dbI29.mjs +2 -0
- package/dist/badge-CG6dbI29.mjs.map +1 -0
- package/dist/badge-CQygfYGk.d.mts +42 -0
- package/dist/badge-DYo5Diiy.d.cts +42 -0
- package/dist/breadcrumb-BhUXmEGd.d.cts +72 -0
- package/dist/breadcrumb-D5EVqGzZ.d.mts +72 -0
- package/dist/breadcrumb-DgCIacvh.cjs +2 -0
- package/dist/breadcrumb-DgCIacvh.cjs.map +1 -0
- package/dist/breadcrumb-RCZAaQ1l.mjs +2 -0
- package/dist/breadcrumb-RCZAaQ1l.mjs.map +1 -0
- package/dist/button-CCVJTHBI.mjs +2 -0
- package/dist/button-CCVJTHBI.mjs.map +1 -0
- package/dist/button-CwxEnAw3.d.mts +174 -0
- package/dist/button-D-pWsdxT.d.cts +174 -0
- package/dist/button-group-4oHvYHtz.cjs +2 -0
- package/dist/button-group-4oHvYHtz.cjs.map +1 -0
- package/dist/button-group-CDRMmMyT.d.cts +50 -0
- package/dist/button-group-CRuT_zEE.mjs +2 -0
- package/dist/button-group-CRuT_zEE.mjs.map +1 -0
- package/dist/button-group-wrn32Sqe.d.mts +50 -0
- package/dist/button.variants-DkMqWB8G.mjs +2 -0
- package/dist/button.variants-DkMqWB8G.mjs.map +1 -0
- package/dist/calendar-BUPDN6CU.d.cts +45 -0
- package/dist/calendar-Boz9U-O2.d.mts +45 -0
- package/dist/calendar-CTyL_3WY.cjs +2 -0
- package/dist/calendar-CTyL_3WY.cjs.map +1 -0
- package/dist/calendar-DyzwC2TQ.mjs +2 -0
- package/dist/calendar-DyzwC2TQ.mjs.map +1 -0
- package/dist/card-B8Pm6iEs.cjs +2 -0
- package/dist/card-B8Pm6iEs.cjs.map +1 -0
- package/dist/card-DDM5jg3U.d.mts +63 -0
- package/dist/card-DpQKFp4f.mjs +2 -0
- package/dist/card-DpQKFp4f.mjs.map +1 -0
- package/dist/card-a8tqytoT.d.cts +63 -0
- package/dist/cards/grid-product-card.cjs +1 -2
- package/dist/cards/grid-product-card.d.cts +2 -37
- package/dist/cards/grid-product-card.d.mts +2 -0
- package/dist/cards/grid-product-card.mjs +1 -0
- package/dist/cards/product-card.cjs +1 -2
- package/dist/cards/product-card.d.cts +2 -37
- package/dist/cards/product-card.d.mts +2 -0
- package/dist/cards/product-card.mjs +1 -0
- package/dist/cards/simple-card.cjs +1 -2
- package/dist/cards/simple-card.d.cts +2 -35
- package/dist/cards/simple-card.d.mts +2 -0
- package/dist/cards/simple-card.mjs +1 -0
- package/dist/carousel-BayGB372.cjs +2 -0
- package/dist/carousel-BayGB372.cjs.map +1 -0
- package/dist/carousel-Cm4szl4A.d.cts +71 -0
- package/dist/carousel-D8xUkFZ-.mjs +2 -0
- package/dist/carousel-D8xUkFZ-.mjs.map +1 -0
- package/dist/carousel-Y5TlCJ96.d.mts +71 -0
- package/dist/checkbox-Bbn3OZQd.d.mts +26 -0
- package/dist/checkbox-Bt4BgYMB.cjs +2 -0
- package/dist/checkbox-Bt4BgYMB.cjs.map +1 -0
- package/dist/checkbox-CBhlnGGv.mjs +2 -0
- package/dist/checkbox-CBhlnGGv.mjs.map +1 -0
- package/dist/checkbox-CccXRTYH.d.cts +26 -0
- package/dist/close-Co-WLsSG.mjs +2 -0
- package/dist/close-Co-WLsSG.mjs.map +1 -0
- package/dist/close-DYBVx-8O.cjs +2 -0
- package/dist/close-DYBVx-8O.cjs.map +1 -0
- package/dist/cms-layout-B7lc5hIX.mjs +2 -0
- package/dist/cms-layout-B7lc5hIX.mjs.map +1 -0
- package/dist/cms-layout-DeTdDLXr.cjs +2 -0
- package/dist/cms-layout-DeTdDLXr.cjs.map +1 -0
- package/dist/collapsible-CLr3JLeA.mjs +2 -0
- package/dist/collapsible-CLr3JLeA.mjs.map +1 -0
- package/dist/collapsible-LInIoQlU.d.cts +34 -0
- package/dist/collapsible-RWAWE2lS.d.mts +34 -0
- package/dist/collapsible-rx0m3LuF.cjs +2 -0
- package/dist/collapsible-rx0m3LuF.cjs.map +1 -0
- package/dist/command-BQFbzzTr.cjs +2 -0
- package/dist/command-BQFbzzTr.cjs.map +1 -0
- package/dist/command-BlvmwwTr.d.mts +89 -0
- package/dist/command-CQMdYoAm.mjs +2 -0
- package/dist/command-CQMdYoAm.mjs.map +1 -0
- package/dist/command-DAudAVpm.d.cts +89 -0
- package/dist/confirm-dialog-C5ULtwJE.cjs +2 -0
- package/dist/confirm-dialog-C5ULtwJE.cjs.map +1 -0
- package/dist/confirm-dialog-CNWJKBc9.d.mts +142 -0
- package/dist/confirm-dialog-DG_3RvTI.d.cts +142 -0
- package/dist/confirm-dialog-u2GP8uPi.mjs +2 -0
- package/dist/confirm-dialog-u2GP8uPi.mjs.map +1 -0
- package/dist/context-menu-C9nXY3Bq.d.cts +125 -0
- package/dist/context-menu-CplWspvB.cjs +2 -0
- package/dist/context-menu-CplWspvB.cjs.map +1 -0
- package/dist/context-menu-DrF_sQB1.d.mts +125 -0
- package/dist/context-menu-a50s2_E_.mjs +2 -0
- package/dist/context-menu-a50s2_E_.mjs.map +1 -0
- package/dist/country-BHMqKldc.d.mts +22 -0
- package/dist/country-CnXNnGmY.cjs +2 -0
- package/dist/country-CnXNnGmY.cjs.map +1 -0
- package/dist/country-DUD_q-yS.d.cts +22 -0
- package/dist/country-lc1l_viY.mjs +2 -0
- package/dist/country-lc1l_viY.mjs.map +1 -0
- package/dist/data-display/country.cjs +1 -2
- package/dist/data-display/country.d.cts +2 -22
- package/dist/data-display/country.d.mts +2 -0
- package/dist/data-display/country.mjs +1 -0
- package/dist/data-display/data-list.cjs +1 -2
- package/dist/data-display/data-list.d.cts +2 -43
- package/dist/data-display/data-list.d.mts +2 -0
- package/dist/data-display/data-list.mjs +1 -0
- package/dist/data-display/date-tooltip.cjs +1 -2
- package/dist/data-display/date-tooltip.d.cts +2 -19
- package/dist/data-display/date-tooltip.d.mts +2 -0
- package/dist/data-display/date-tooltip.mjs +1 -0
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.d.cts +2 -39
- package/dist/data-display/date.d.mts +2 -0
- package/dist/data-display/date.mjs +1 -0
- package/dist/data-display/empty.cjs +1 -2
- package/dist/data-display/empty.d.cts +2 -21
- package/dist/data-display/empty.d.mts +2 -0
- package/dist/data-display/empty.mjs +1 -0
- package/dist/data-display/name.cjs +1 -2
- package/dist/data-display/name.d.cts +2 -19
- package/dist/data-display/name.d.mts +2 -0
- package/dist/data-display/name.mjs +1 -0
- package/dist/data-display/phone-number.cjs +1 -2
- package/dist/data-display/phone-number.d.cts +2 -19
- package/dist/data-display/phone-number.d.mts +2 -0
- package/dist/data-display/phone-number.mjs +1 -0
- package/dist/data-display/role-badge.cjs +1 -2
- package/dist/data-display/role-badge.d.cts +2 -22
- package/dist/data-display/role-badge.d.mts +2 -0
- package/dist/data-display/role-badge.mjs +1 -0
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.d.cts +2 -57
- package/dist/data-display/statistic.d.mts +2 -0
- package/dist/data-display/statistic.mjs +1 -0
- package/dist/data-display/user.cjs +1 -1
- package/dist/data-display/user.d.cts +2 -23
- package/dist/data-display/user.d.mts +2 -0
- package/dist/data-display/user.mjs +1 -0
- package/dist/data-list-BGmCL71V.cjs +2 -0
- package/dist/data-list-BGmCL71V.cjs.map +1 -0
- package/dist/data-list-CXWcUFU1.mjs +2 -0
- package/dist/data-list-CXWcUFU1.mjs.map +1 -0
- package/dist/data-list-Chl3KU5n.d.mts +43 -0
- package/dist/data-list-DwyNusTs.d.cts +43 -0
- package/dist/date-88lk-VJF.mjs +2 -0
- package/dist/date-88lk-VJF.mjs.map +1 -0
- package/dist/date-BBBx-rIM.cjs +2 -0
- package/dist/date-BBBx-rIM.cjs.map +1 -0
- package/dist/date-tooltip-BdVWCJlg.cjs +2 -0
- package/dist/date-tooltip-BdVWCJlg.cjs.map +1 -0
- package/dist/date-tooltip-CoPcr3Ju.d.mts +19 -0
- package/dist/date-tooltip-DZ3NlfdZ.d.cts +19 -0
- package/dist/date-tooltip-OPAmlgBg.mjs +2 -0
- package/dist/date-tooltip-OPAmlgBg.mjs.map +1 -0
- package/dist/date-viiYGAtR.d.mts +39 -0
- package/dist/date-xQIXRJ71.d.cts +39 -0
- package/dist/descriptions-CgkBHjKD.mjs +2 -0
- package/dist/descriptions-CgkBHjKD.mjs.map +1 -0
- package/dist/descriptions-RNxfgfpM.cjs +2 -0
- package/dist/descriptions-RNxfgfpM.cjs.map +1 -0
- package/dist/detail-dialog-BLApH3eD.cjs +2 -0
- package/dist/detail-dialog-BLApH3eD.cjs.map +1 -0
- package/dist/detail-dialog-CXKrznrp.mjs +2 -0
- package/dist/detail-dialog-CXKrznrp.mjs.map +1 -0
- package/dist/dialog--BvCecaD.mjs +2 -0
- package/dist/dialog--BvCecaD.mjs.map +1 -0
- package/dist/dialog-DNEUhYSv.cjs +2 -0
- package/dist/dialog-DNEUhYSv.cjs.map +1 -0
- package/dist/dialog-DokGVUbC.d.mts +90 -0
- package/dist/dialog-xPhSkLmg.d.cts +90 -0
- package/dist/dialogs/confirm-dialog.cjs +1 -2
- package/dist/dialogs/confirm-dialog.d.cts +2 -142
- package/dist/dialogs/confirm-dialog.d.mts +2 -0
- package/dist/dialogs/confirm-dialog.mjs +1 -0
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +29 -29
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +209 -0
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -0
- package/dist/dialogs/detail-dialog/index.cjs +1 -2
- package/dist/dialogs/detail-dialog/index.d.cts +2 -45
- package/dist/dialogs/detail-dialog/index.d.mts +2 -0
- package/dist/dialogs/detail-dialog/index.mjs +1 -0
- package/dist/dialogs/error-dialog.cjs +1 -2
- package/dist/dialogs/error-dialog.d.cts +2 -25
- package/dist/dialogs/error-dialog.d.mts +2 -0
- package/dist/dialogs/error-dialog.mjs +1 -0
- package/dist/dialogs/loading-dialog.cjs +1 -2
- package/dist/dialogs/loading-dialog.d.cts +2 -21
- package/dist/dialogs/loading-dialog.d.mts +2 -0
- package/dist/dialogs/loading-dialog.mjs +1 -0
- package/dist/dist-DVrfqn8H.mjs +2 -0
- package/dist/dist-DVrfqn8H.mjs.map +1 -0
- package/dist/drawer-BYYCsheu.mjs +2 -0
- package/dist/drawer-BYYCsheu.mjs.map +1 -0
- package/dist/drawer-CjnhVMTw.d.mts +72 -0
- package/dist/drawer-DqAutQLS.d.cts +72 -0
- package/dist/drawer-H8uD0q-C.cjs +2 -0
- package/dist/drawer-H8uD0q-C.cjs.map +1 -0
- package/dist/dropdown-menu-CpA9s4II.d.cts +127 -0
- package/dist/dropdown-menu-CtJ_OM19.cjs +2 -0
- package/dist/dropdown-menu-CtJ_OM19.cjs.map +1 -0
- package/dist/dropdown-menu-DhKquziD.mjs +2 -0
- package/dist/dropdown-menu-DhKquziD.mjs.map +1 -0
- package/dist/dropdown-menu-aDVEkr4L.d.mts +127 -0
- package/dist/edit-B6hhKU53.d.cts +17 -0
- package/dist/edit-CJH1v_md.d.mts +17 -0
- package/dist/edit-DwHuMQMh.cjs +2 -0
- package/dist/edit-DwHuMQMh.cjs.map +1 -0
- package/dist/edit-FIiUWxZq.mjs +2 -0
- package/dist/edit-FIiUWxZq.mjs.map +1 -0
- package/dist/empty-BhV9ASYf.d.mts +68 -0
- package/dist/empty-CmIJYhmV.cjs +2 -0
- package/dist/empty-CmIJYhmV.cjs.map +1 -0
- package/dist/empty-CoKfJtGD.mjs +2 -0
- package/dist/empty-CoKfJtGD.mjs.map +1 -0
- package/dist/empty-D6t3C3WX.mjs +2 -0
- package/dist/empty-D6t3C3WX.mjs.map +1 -0
- package/dist/empty-DaK_4UmN.d.cts +68 -0
- package/dist/empty-OVsSwbVn.d.mts +21 -0
- package/dist/empty-dUZoxaBx.cjs +2 -0
- package/dist/empty-dUZoxaBx.cjs.map +1 -0
- package/dist/empty-z1Ft5uT1.d.cts +21 -0
- package/dist/error-dialog-B8CXPcst.cjs +2 -0
- package/dist/error-dialog-B8CXPcst.cjs.map +1 -0
- package/dist/error-dialog-D0jvqNoY.d.mts +25 -0
- package/dist/error-dialog-DlwWpKEY.d.cts +25 -0
- package/dist/error-dialog-DnntjOS9.mjs +2 -0
- package/dist/error-dialog-DnntjOS9.mjs.map +1 -0
- package/dist/features/descriptions/index.cjs +1 -2
- package/dist/features/descriptions/index.d.cts +2 -246
- package/dist/features/descriptions/index.d.mts +3 -0
- package/dist/features/descriptions/index.mjs +1 -0
- package/dist/features/search-modal/index.cjs +1 -1
- package/dist/features/search-modal/index.d.cts +2 -17
- package/dist/features/search-modal/index.d.mts +2 -0
- package/dist/features/search-modal/index.mjs +1 -0
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.d.cts +1 -1
- package/dist/features/tables/index.d.mts +3 -0
- package/dist/features/tables/index.mjs +1 -0
- 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 +2 -0
- package/dist/features/tanstack-form/index.mjs +1 -0
- 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 +2 -0
- package/dist/features/text-editor/index.mjs +1 -0
- package/dist/field-BxYoF5AX.mjs +2 -0
- package/dist/field-BxYoF5AX.mjs.map +1 -0
- package/dist/field-fIef7NR0.cjs +2 -0
- package/dist/field-fIef7NR0.cjs.map +1 -0
- package/dist/file-uploader-BM0x9VBh.cjs +3 -0
- package/dist/file-uploader-BM0x9VBh.cjs.map +1 -0
- package/dist/file-uploader-BTWXTBeQ.mjs +3 -0
- package/dist/file-uploader-BTWXTBeQ.mjs.map +1 -0
- package/dist/file-uploader-Bcq3zzxa.d.cts +103 -0
- package/dist/file-uploader-nUOkG_fv.d.mts +103 -0
- package/dist/flex-BSTiMh2t.d.mts +117 -0
- package/dist/flex-Bx9Nmr53.mjs +2 -0
- package/dist/flex-Bx9Nmr53.mjs.map +1 -0
- package/dist/flex-ClUVVSda.d.cts +117 -0
- package/dist/flex-ld7BqXoM.cjs +2 -0
- package/dist/flex-ld7BqXoM.cjs.map +1 -0
- package/dist/form-BZAtjwSL.d.mts +112 -0
- package/dist/form-Cek0ebE_.d.cts +112 -0
- package/dist/form-DvtaketZ.mjs +2 -0
- package/dist/form-DvtaketZ.mjs.map +1 -0
- package/dist/form-RLIQQ3uV.cjs +2 -0
- package/dist/form-RLIQQ3uV.cjs.map +1 -0
- package/dist/google-BWOrgvy8.d.mts +53 -0
- package/dist/google-C4F5wQ9e.mjs +2 -0
- package/dist/google-C4F5wQ9e.mjs.map +1 -0
- package/dist/google-Cy0_rdmN.cjs +2 -0
- package/dist/google-Cy0_rdmN.cjs.map +1 -0
- package/dist/google-Dyb44d8Y.d.cts +53 -0
- package/dist/grid-BOqzD6m6.d.cts +19 -0
- package/dist/grid-BXJ2x1oD.cjs +2 -0
- package/dist/grid-BXJ2x1oD.cjs.map +1 -0
- package/dist/grid-C4ogfMWr.mjs +2 -0
- package/dist/grid-C4ogfMWr.mjs.map +1 -0
- package/dist/grid-Dw7tBNxf.d.mts +19 -0
- package/dist/grid-product-card-BD8EVmk6.d.cts +37 -0
- package/dist/grid-product-card-BpciVETd.cjs +2 -0
- package/dist/grid-product-card-BpciVETd.cjs.map +1 -0
- package/dist/grid-product-card-BtZwWaMo.mjs +2 -0
- package/dist/grid-product-card-BtZwWaMo.mjs.map +1 -0
- package/dist/grid-product-card-CoFzQiFm.d.mts +37 -0
- package/dist/heading-De4Pn3mZ.mjs +2 -0
- package/dist/heading-De4Pn3mZ.mjs.map +1 -0
- package/dist/hover-card-D2gz257Y.d.cts +37 -0
- package/dist/hover-card-DMVePTD9.mjs +2 -0
- package/dist/hover-card-DMVePTD9.mjs.map +1 -0
- package/dist/hover-card-Dsf0S6eo.d.mts +37 -0
- package/dist/hover-card-Pde4G6Fc.cjs +2 -0
- package/dist/hover-card-Pde4G6Fc.cjs.map +1 -0
- package/dist/image-BBPrcvIr.d.cts +36 -0
- package/dist/image-CbZwvmmL.mjs +2 -0
- package/dist/image-CbZwvmmL.mjs.map +1 -0
- package/dist/image-CwnOaUW7.d.mts +36 -0
- package/dist/image-eYMg5TSJ.cjs +2 -0
- package/dist/image-eYMg5TSJ.cjs.map +1 -0
- package/dist/index-1T84UTtI.d.mts +1707 -0
- package/dist/index-B03QzDx1.d.mts +17 -0
- package/dist/index-BOLiQQmh.d.mts +1093 -0
- package/dist/index-BQZ2-xGQ.d.cts +246 -0
- package/dist/index-BUpm7Ukw.d.mts +90 -0
- package/dist/index-BWLHjQ6S.d.cts +74 -0
- package/dist/index-C33ZNe5s.d.cts +85 -0
- package/dist/index-D4T3Qd4m.d.cts +45 -0
- package/dist/index-DC7NHLfc.d.cts +17 -0
- package/dist/index-DYnzFF0T.d.mts +74 -0
- package/dist/index-DYp6lUbn.d.mts +45 -0
- package/dist/index-DtlnICYj.d.mts +85 -0
- package/dist/index-DvC_tPbo.d.cts +1093 -0
- package/dist/index-DyYcTYcv.d.mts +246 -0
- package/dist/index-e8PriyFP.d.cts +90 -0
- package/dist/index-x5md75cy.d.cts +1707 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +92 -92
- package/dist/index.d.mts +93 -0
- package/dist/index.mjs +1 -0
- package/dist/input-BDCw9qBl.d.cts +44 -0
- package/dist/input-BVTLQHpd.d.mts +44 -0
- package/dist/input-BatF2xqI.cjs +2 -0
- package/dist/input-BatF2xqI.cjs.map +1 -0
- package/dist/input-CFsouxvo.mjs +2 -0
- package/dist/input-CFsouxvo.mjs.map +1 -0
- package/dist/input-otp-C9SpN7qa.mjs +2 -0
- package/dist/input-otp-C9SpN7qa.mjs.map +1 -0
- package/dist/input-otp-CMEY_7IK.d.cts +59 -0
- package/dist/input-otp-DXt9rivn.d.mts +59 -0
- package/dist/input-otp-phGylVzo.cjs +2 -0
- package/dist/input-otp-phGylVzo.cjs.map +1 -0
- package/dist/item-DSaO7I07.d.cts +102 -0
- package/dist/item-Dq3WIh5a.d.mts +102 -0
- package/dist/item-uB0ZFXtc.cjs +2 -0
- package/dist/item-uB0ZFXtc.cjs.map +1 -0
- package/dist/item-ysEJO_2s.mjs +2 -0
- package/dist/item-ysEJO_2s.mjs.map +1 -0
- package/dist/label--hinNDHW.cjs +2 -0
- package/dist/label--hinNDHW.cjs.map +1 -0
- package/dist/label-BMVyfKu9.mjs +2 -0
- package/dist/label-BMVyfKu9.mjs.map +1 -0
- package/dist/label-CCE-kS4j.d.mts +24 -0
- package/dist/label-DGJL4U_f.d.cts +24 -0
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.d.cts +1 -1
- package/dist/layouts/cms-layout/index.d.mts +2 -0
- package/dist/layouts/cms-layout/index.mjs +1 -0
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +2 -117
- package/dist/layouts/flex.d.mts +2 -0
- package/dist/layouts/flex.mjs +1 -0
- package/dist/layouts/grid.cjs +1 -2
- package/dist/layouts/grid.d.cts +2 -19
- package/dist/layouts/grid.d.mts +2 -0
- package/dist/layouts/grid.mjs +1 -0
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.d.cts +2 -74
- package/dist/layouts/payment-layout/index.d.mts +2 -0
- package/dist/layouts/payment-layout/index.mjs +1 -0
- package/dist/loading-dialog-CEkua3Lh.mjs +2 -0
- package/dist/loading-dialog-CEkua3Lh.mjs.map +1 -0
- package/dist/loading-dialog-D8kCsJID.d.cts +21 -0
- package/dist/loading-dialog-DLvA8-yT.d.mts +21 -0
- package/dist/loading-dialog-DYZmHC1A.cjs +2 -0
- package/dist/loading-dialog-DYZmHC1A.cjs.map +1 -0
- package/dist/menubar-BBFgdkch.d.cts +135 -0
- package/dist/menubar-Bh9Ua6gx.mjs +2 -0
- package/dist/menubar-Bh9Ua6gx.mjs.map +1 -0
- package/dist/menubar-Sr0X6In7.cjs +2 -0
- package/dist/menubar-Sr0X6In7.cjs.map +1 -0
- package/dist/menubar-b3iR0kew.d.mts +135 -0
- package/dist/multi-select-BHqEpbWV.d.mts +117 -0
- package/dist/multi-select-CBZxsmZW.mjs +2 -0
- package/dist/multi-select-CBZxsmZW.mjs.map +1 -0
- package/dist/multi-select-DdXU9QtL.d.cts +117 -0
- package/dist/multi-select-uHi4rmly.cjs +2 -0
- package/dist/multi-select-uHi4rmly.cjs.map +1 -0
- package/dist/name-2FXVOGc1.d.mts +19 -0
- package/dist/name-D7oldyH4.cjs +2 -0
- package/dist/name-D7oldyH4.cjs.map +1 -0
- package/dist/name-EKzKeq0g.mjs +2 -0
- package/dist/name-EKzKeq0g.mjs.map +1 -0
- package/dist/name-r1ATxwPZ.d.cts +19 -0
- package/dist/navigation-menu-BNEtQ0JM.cjs +2 -0
- package/dist/navigation-menu-BNEtQ0JM.cjs.map +1 -0
- package/dist/navigation-menu-DT9LfEFB.d.mts +77 -0
- package/dist/navigation-menu-Dl0kgmce.d.cts +77 -0
- package/dist/navigation-menu-zlpQ6hqY.mjs +2 -0
- package/dist/navigation-menu-zlpQ6hqY.mjs.map +1 -0
- package/dist/pages/FeatureDeveloping.cjs +1 -2
- package/dist/pages/FeatureDeveloping.d.cts +2 -43
- package/dist/pages/FeatureDeveloping.d.mts +2 -0
- package/dist/pages/FeatureDeveloping.mjs +1 -0
- package/dist/pages/FeatureFixing.cjs +1 -2
- package/dist/pages/FeatureFixing.d.cts +2 -43
- package/dist/pages/FeatureFixing.d.mts +2 -0
- package/dist/pages/FeatureFixing.mjs +1 -0
- package/dist/pages/LoginPage.cjs +1 -2
- package/dist/pages/LoginPage.d.cts +2 -55
- package/dist/pages/LoginPage.d.mts +2 -0
- package/dist/pages/LoginPage.mjs +1 -0
- package/dist/pages/NotAuthorized.cjs +1 -2
- package/dist/pages/NotAuthorized.d.cts +2 -43
- package/dist/pages/NotAuthorized.d.mts +2 -0
- package/dist/pages/NotAuthorized.mjs +1 -0
- package/dist/pages/NotFound.cjs +1 -2
- package/dist/pages/NotFound.d.cts +2 -43
- package/dist/pages/NotFound.d.mts +2 -0
- package/dist/pages/NotFound.mjs +1 -0
- package/dist/pages/RegisterPage.cjs +1 -2
- package/dist/pages/RegisterPage.d.cts +2 -52
- package/dist/pages/RegisterPage.d.mts +2 -0
- package/dist/pages/RegisterPage.mjs +1 -0
- package/dist/pages/VerifyEmailPage.cjs +1 -2
- package/dist/pages/VerifyEmailPage.d.cts +2 -64
- package/dist/pages/VerifyEmailPage.d.mts +2 -0
- package/dist/pages/VerifyEmailPage.mjs +1 -0
- package/dist/pagination-D6lKOCca.cjs +2 -0
- package/dist/pagination-D6lKOCca.cjs.map +1 -0
- package/dist/pagination-DXpyiDJW.mjs +2 -0
- package/dist/pagination-DXpyiDJW.mjs.map +1 -0
- package/dist/pagination-DYHZgmcc.d.cts +67 -0
- package/dist/pagination-DYMPNWwJ.d.mts +67 -0
- package/dist/paragraph-CLhsGG8e.d.cts +48 -0
- package/dist/paragraph-DYLaQtTV.mjs +2 -0
- package/dist/paragraph-DYLaQtTV.mjs.map +1 -0
- package/dist/paragraph-o9QFeg6c.d.mts +48 -0
- package/dist/payment-layout-BTYaI9Mr.mjs +2 -0
- package/dist/payment-layout-BTYaI9Mr.mjs.map +1 -0
- package/dist/payment-layout-neLk_obm.cjs +2 -0
- package/dist/payment-layout-neLk_obm.cjs.map +1 -0
- package/dist/phone-number-BAqPxJ5z.d.cts +19 -0
- package/dist/phone-number-CUjSdoHG.d.mts +19 -0
- package/dist/phone-number-CdfMUTj2.cjs +2 -0
- package/dist/phone-number-CdfMUTj2.cjs.map +1 -0
- package/dist/phone-number-CkxEaxxg.mjs +2 -0
- package/dist/phone-number-CkxEaxxg.mjs.map +1 -0
- package/dist/popover-BGd0Tvmy.mjs +2 -0
- package/dist/popover-BGd0Tvmy.mjs.map +1 -0
- package/dist/popover-CaU_EoBJ.d.mts +52 -0
- package/dist/popover-eSwUy8WP.cjs +2 -0
- package/dist/popover-eSwUy8WP.cjs.map +1 -0
- package/dist/popover-m32DoRiq.d.cts +52 -0
- package/dist/product-card-10gaH8bg.cjs +2 -0
- package/dist/product-card-10gaH8bg.cjs.map +1 -0
- package/dist/product-card-C0l0q2Ve.d.cts +37 -0
- package/dist/product-card-CWrVGqZV.d.mts +37 -0
- package/dist/product-card-Rwd-o9hK.mjs +2 -0
- package/dist/product-card-Rwd-o9hK.mjs.map +1 -0
- package/dist/progress-BwbACJal.d.cts +23 -0
- package/dist/progress-Dlgbu5Ff.cjs +2 -0
- package/dist/progress-Dlgbu5Ff.cjs.map +1 -0
- package/dist/progress-RvyBMsxb.mjs +2 -0
- package/dist/progress-RvyBMsxb.mjs.map +1 -0
- package/dist/progress-sn0IL4k4.d.mts +23 -0
- package/dist/radio-group-C4sIDN68.cjs +2 -0
- package/dist/radio-group-C4sIDN68.cjs.map +1 -0
- package/dist/radio-group-CD-4vNQR.mjs +2 -0
- package/dist/radio-group-CD-4vNQR.mjs.map +1 -0
- package/dist/radio-group-Ck0NoDHp.d.cts +37 -0
- package/dist/radio-group-DeKN6NpB.d.mts +37 -0
- package/dist/refresh-BFJvyuJH.cjs +2 -0
- package/dist/refresh-BFJvyuJH.cjs.map +1 -0
- package/dist/refresh-BjdAiL4f.d.mts +17 -0
- package/dist/refresh-Bxm2I0Oe.mjs +2 -0
- package/dist/refresh-Bxm2I0Oe.mjs.map +1 -0
- package/dist/refresh-vK99pTVu.d.cts +17 -0
- package/dist/resizable-BilIxAxi.d.mts +63 -0
- package/dist/resizable-DYxHVdyf.d.cts +63 -0
- package/dist/resizable-p6zxjcHs.mjs +2 -0
- package/dist/resizable-p6zxjcHs.mjs.map +1 -0
- package/dist/resizable-yKKhHTqx.cjs +2 -0
- package/dist/resizable-yKKhHTqx.cjs.map +1 -0
- package/dist/role-badge-BIgdiY5P.mjs +2 -0
- package/dist/role-badge-BIgdiY5P.mjs.map +1 -0
- package/dist/role-badge-BwOEEepo.cjs +2 -0
- package/dist/role-badge-BwOEEepo.cjs.map +1 -0
- package/dist/role-badge-CBZdPHUc.d.cts +22 -0
- package/dist/role-badge-DeofJ2ep.d.mts +22 -0
- package/dist/scroll-area-C7s40z6d.d.mts +37 -0
- package/dist/scroll-area-CKWenzXh.d.cts +37 -0
- package/dist/scroll-area-Dn3a9ZCQ.cjs +2 -0
- package/dist/scroll-area-Dn3a9ZCQ.cjs.map +1 -0
- package/dist/scroll-area-DrZOWroA.mjs +2 -0
- package/dist/scroll-area-DrZOWroA.mjs.map +1 -0
- package/dist/search-input-7m30vApQ.d.mts +29 -0
- package/dist/search-input-BCYwlwtk.cjs +2 -0
- package/dist/search-input-BCYwlwtk.cjs.map +1 -0
- package/dist/search-input-DVtHPbme.d.cts +29 -0
- package/dist/search-input-D_nJ8McN.mjs +2 -0
- package/dist/search-input-D_nJ8McN.mjs.map +1 -0
- package/dist/search-modal-BJhXWOiv.cjs +2 -0
- package/dist/search-modal-BJhXWOiv.cjs.map +1 -0
- package/dist/search-modal-BpHuii66.mjs +2 -0
- package/dist/search-modal-BpHuii66.mjs.map +1 -0
- package/dist/select-B5q6krCq.cjs +2 -0
- package/dist/select-B5q6krCq.cjs.map +1 -0
- package/dist/select-CreOhvnP.mjs +2 -0
- package/dist/select-CreOhvnP.mjs.map +1 -0
- package/dist/select-D0mVxToc.d.mts +77 -0
- package/dist/select-D47FVDEv.d.cts +77 -0
- package/dist/separator-BRoS5sU8.cjs +2 -0
- package/dist/separator-BRoS5sU8.cjs.map +1 -0
- package/dist/separator-BT4tDBSP.d.mts +34 -0
- package/dist/separator-BjRgoiEx.mjs +2 -0
- package/dist/separator-BjRgoiEx.mjs.map +1 -0
- package/dist/separator-DOHFNx8Z.d.cts +34 -0
- package/dist/sheet-38e14yOJ.d.cts +69 -0
- package/dist/sheet-Bk6mK6TN.mjs +2 -0
- package/dist/sheet-Bk6mK6TN.mjs.map +1 -0
- package/dist/sheet-E5cMUzxr.cjs +2 -0
- package/dist/sheet-E5cMUzxr.cjs.map +1 -0
- package/dist/sheet-nSIzbJ1S.d.mts +69 -0
- package/dist/sidebar-DeiQjPc8.mjs +2 -0
- package/dist/sidebar-DeiQjPc8.mjs.map +1 -0
- package/dist/sidebar-DzqiY6IR.cjs +2 -0
- package/dist/sidebar-DzqiY6IR.cjs.map +1 -0
- package/dist/simple-card-C5Rr81Sm.cjs +2 -0
- package/dist/simple-card-C5Rr81Sm.cjs.map +1 -0
- package/dist/simple-card-CIB1_AO0.d.mts +35 -0
- package/dist/simple-card-CjJvBXKr.d.cts +35 -0
- package/dist/simple-card-HEzKjzGT.mjs +2 -0
- package/dist/simple-card-HEzKjzGT.mjs.map +1 -0
- package/dist/skeleton-BuscPZgb.cjs +2 -0
- package/dist/skeleton-BuscPZgb.cjs.map +1 -0
- package/dist/skeleton-Bw3-1Ifw.d.cts +27 -0
- package/dist/skeleton-teVJKfpX.mjs +2 -0
- package/dist/skeleton-teVJKfpX.mjs.map +1 -0
- package/dist/skeleton-wv8x-bmn.d.mts +27 -0
- package/dist/slider-CPRW5ByY.cjs +2 -0
- package/dist/slider-CPRW5ByY.cjs.map +1 -0
- package/dist/slider-CsNzhp4K.d.cts +26 -0
- package/dist/slider-RyNGQZH2.mjs +2 -0
- package/dist/slider-RyNGQZH2.mjs.map +1 -0
- package/dist/slider-axR5n-iU.d.mts +26 -0
- package/dist/sonner-BcwAttxz.d.cts +24 -0
- package/dist/sonner-DiKkRgL0.mjs +2 -0
- package/dist/sonner-DiKkRgL0.mjs.map +1 -0
- package/dist/sonner-hiZbh7Ma.d.mts +24 -0
- package/dist/sonner-tfvnW7f9.cjs +2 -0
- package/dist/sonner-tfvnW7f9.cjs.map +1 -0
- package/dist/spinner-8BhR5INj.d.cts +25 -0
- package/dist/spinner-BhIV1n_5.mjs +2 -0
- package/dist/spinner-BhIV1n_5.mjs.map +1 -0
- package/dist/spinner-BlcoDe44.cjs +2 -0
- package/dist/spinner-BlcoDe44.cjs.map +1 -0
- package/dist/spinner-YEHQDAMj.d.mts +25 -0
- package/dist/statistic-BGynCEWL.cjs +2 -0
- package/dist/statistic-BGynCEWL.cjs.map +1 -0
- package/dist/statistic-C7jb2YxN.d.cts +57 -0
- package/dist/statistic-DbQG1ymc.d.mts +57 -0
- package/dist/statistic-fawLJa99.mjs +2 -0
- package/dist/statistic-fawLJa99.mjs.map +1 -0
- package/dist/switch-BTU8yOgs.mjs +2 -0
- package/dist/switch-BTU8yOgs.mjs.map +1 -0
- package/dist/switch-BaLJWcs6.d.cts +26 -0
- package/dist/switch-DMEBc5Me.cjs +2 -0
- package/dist/switch-DMEBc5Me.cjs.map +1 -0
- package/dist/switch-gWDJ4yuM.d.mts +26 -0
- package/dist/systems/google.cjs +1 -2
- package/dist/systems/google.d.cts +2 -53
- package/dist/systems/google.d.mts +2 -0
- package/dist/systems/google.mjs +1 -0
- package/dist/table-B2rDsRr1.d.cts +73 -0
- package/dist/table-BmEJ-Ktq.d.mts +73 -0
- package/dist/table-DUDAeitX.mjs +2 -0
- package/dist/table-DUDAeitX.mjs.map +1 -0
- package/dist/table-DkGeuCS6.cjs +2 -0
- package/dist/table-DkGeuCS6.cjs.map +1 -0
- package/dist/tables-BhRUyHnO.cjs +4 -0
- package/dist/tables-BhRUyHnO.cjs.map +1 -0
- package/dist/tables-Dnu1akl3.mjs +4 -0
- package/dist/tables-Dnu1akl3.mjs.map +1 -0
- package/dist/tabs-564E0ez3.d.mts +44 -0
- package/dist/tabs-DFGhwbGp.mjs +2 -0
- package/dist/tabs-DFGhwbGp.mjs.map +1 -0
- package/dist/tabs-JR7-JzIe.cjs +2 -0
- package/dist/tabs-JR7-JzIe.cjs.map +1 -0
- package/dist/tabs-vAz8fioT.d.cts +44 -0
- package/dist/tanstack-form-4b7YcChW.cjs +12 -0
- package/dist/tanstack-form-4b7YcChW.cjs.map +1 -0
- package/dist/tanstack-form-Bo1AZA4L.mjs +12 -0
- package/dist/tanstack-form-Bo1AZA4L.mjs.map +1 -0
- package/dist/text-editor-D1vX6xed.mjs +2 -0
- package/dist/text-editor-D1vX6xed.mjs.map +1 -0
- package/dist/text-editor-Dr8BD9Bh.cjs +2 -0
- package/dist/text-editor-Dr8BD9Bh.cjs.map +1 -0
- package/dist/textarea-BNYJfmS1.cjs +2 -0
- package/dist/textarea-BNYJfmS1.cjs.map +1 -0
- package/dist/textarea-Be2gUM3T.d.mts +30 -0
- package/dist/textarea-Bh8TcWO-.mjs +2 -0
- package/dist/textarea-Bh8TcWO-.mjs.map +1 -0
- package/dist/textarea-DbmOLyAp.d.cts +30 -0
- package/dist/title-BlFwN8RM.d.mts +43 -0
- package/dist/title-CMLgxj8_.mjs +2 -0
- package/dist/title-CMLgxj8_.mjs.map +1 -0
- package/dist/title-DJuGuD0Q.d.cts +43 -0
- package/dist/title-DR8e6bHV.cjs +2 -0
- package/dist/title-DR8e6bHV.cjs.map +1 -0
- package/dist/toggle-B3j94Xvr.cjs +2 -0
- package/dist/toggle-B3j94Xvr.cjs.map +1 -0
- package/dist/toggle-BBOteSWq.d.mts +32 -0
- package/dist/toggle-D6bmp328.d.cts +32 -0
- package/dist/toggle-group-5CEKhPgb.d.mts +39 -0
- package/dist/toggle-group-BOubLcnF.d.cts +39 -0
- package/dist/toggle-group-CAIFsPEQ.cjs +2 -0
- package/dist/toggle-group-CAIFsPEQ.cjs.map +1 -0
- package/dist/toggle-group-DfzLXhuE.mjs +2 -0
- package/dist/toggle-group-DfzLXhuE.mjs.map +1 -0
- package/dist/toggle-jTYfZSWB.mjs +2 -0
- package/dist/toggle-jTYfZSWB.mjs.map +1 -0
- package/dist/tooltip-BBEcyuAE.mjs +2 -0
- package/dist/tooltip-BBEcyuAE.mjs.map +1 -0
- package/dist/tooltip-BFQy2Oca.d.mts +55 -0
- package/dist/tooltip-DBjqfkRe.d.cts +55 -0
- package/dist/tooltip-KEOJcYl8.cjs +2 -0
- package/dist/tooltip-KEOJcYl8.cjs.map +1 -0
- package/dist/trash-BxlUz9AR.cjs +2 -0
- package/dist/trash-BxlUz9AR.cjs.map +1 -0
- package/dist/trash-CV_nXOkW.d.mts +17 -0
- package/dist/trash-CZHL7ZuK.d.cts +17 -0
- package/dist/trash-UPoDDna-.mjs +2 -0
- package/dist/trash-UPoDDna-.mjs.map +1 -0
- package/dist/types-B-SuhI6Z.d.cts +24 -0
- package/dist/types-BAAJEExQ.cjs +2 -0
- package/dist/types-BAAJEExQ.cjs.map +1 -0
- package/dist/types-DodCf0NQ.mjs +2 -0
- package/dist/types-DodCf0NQ.mjs.map +1 -0
- package/dist/types-UB3NE0JY.d.mts +24 -0
- package/dist/typography/paragraph.d.cts +2 -48
- package/dist/typography/paragraph.d.mts +2 -0
- package/dist/typography/paragraph.mjs +1 -0
- package/dist/typography/title.cjs +1 -2
- package/dist/typography/title.d.cts +2 -43
- package/dist/typography/title.d.mts +2 -0
- package/dist/typography/title.mjs +1 -0
- package/dist/ui/alert-dialog.cjs +1 -2
- package/dist/ui/alert-dialog.d.cts +2 -90
- package/dist/ui/alert-dialog.d.mts +2 -0
- package/dist/ui/alert-dialog.mjs +1 -0
- package/dist/ui/alert.cjs +1 -1
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/alert.d.mts +2 -0
- package/dist/ui/alert.mjs +1 -0
- package/dist/ui/aspect-ratio.cjs +1 -2
- package/dist/ui/aspect-ratio.d.cts +2 -24
- package/dist/ui/aspect-ratio.d.mts +2 -0
- package/dist/ui/aspect-ratio.mjs +1 -0
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +2 -35
- package/dist/ui/avatar.d.mts +2 -0
- package/dist/ui/avatar.mjs +1 -0
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.mts +2 -0
- package/dist/ui/badge.mjs +1 -0
- package/dist/ui/breadcrumb.cjs +1 -2
- package/dist/ui/breadcrumb.d.cts +2 -72
- package/dist/ui/breadcrumb.d.mts +2 -0
- package/dist/ui/breadcrumb.mjs +1 -0
- package/dist/ui/button-group.cjs +1 -2
- package/dist/ui/button-group.d.cts +2 -50
- package/dist/ui/button-group.d.mts +3 -0
- package/dist/ui/button-group.mjs +1 -0
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +2 -0
- package/dist/ui/button.mjs +1 -0
- package/dist/ui/buttons/add-new.cjs +1 -2
- package/dist/ui/buttons/add-new.d.cts +2 -17
- package/dist/ui/buttons/add-new.d.mts +2 -0
- package/dist/ui/buttons/add-new.mjs +1 -0
- package/dist/ui/buttons/edit.cjs +1 -2
- package/dist/ui/buttons/edit.d.cts +2 -17
- package/dist/ui/buttons/edit.d.mts +2 -0
- package/dist/ui/buttons/edit.mjs +1 -0
- package/dist/ui/buttons/refresh.cjs +1 -2
- package/dist/ui/buttons/refresh.d.cts +2 -17
- package/dist/ui/buttons/refresh.d.mts +2 -0
- package/dist/ui/buttons/refresh.mjs +1 -0
- package/dist/ui/buttons/trash.cjs +1 -2
- package/dist/ui/buttons/trash.d.cts +2 -17
- package/dist/ui/buttons/trash.d.mts +2 -0
- package/dist/ui/buttons/trash.mjs +1 -0
- package/dist/ui/buttons/upload-image.cjs +1 -2
- package/dist/ui/buttons/upload-image.d.cts +2 -24
- package/dist/ui/buttons/upload-image.d.mts +2 -0
- package/dist/ui/buttons/upload-image.mjs +1 -0
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +2 -45
- package/dist/ui/calendar.d.mts +3 -0
- package/dist/ui/calendar.mjs +1 -0
- package/dist/ui/card.cjs +1 -2
- package/dist/ui/card.d.cts +2 -63
- package/dist/ui/card.d.mts +2 -0
- package/dist/ui/card.mjs +1 -0
- package/dist/ui/carousel.cjs +1 -2
- package/dist/ui/carousel.d.cts +2 -71
- package/dist/ui/carousel.d.mts +3 -0
- package/dist/ui/carousel.mjs +1 -0
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +2 -26
- package/dist/ui/checkbox.d.mts +2 -0
- package/dist/ui/checkbox.mjs +1 -0
- package/dist/ui/collapsible.cjs +1 -2
- package/dist/ui/collapsible.d.cts +2 -34
- package/dist/ui/collapsible.d.mts +2 -0
- package/dist/ui/collapsible.mjs +1 -0
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +2 -89
- package/dist/ui/command.d.mts +3 -0
- package/dist/ui/command.mjs +1 -0
- package/dist/ui/context-menu.cjs +1 -2
- package/dist/ui/context-menu.d.cts +2 -125
- package/dist/ui/context-menu.d.mts +2 -0
- package/dist/ui/context-menu.mjs +1 -0
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +2 -0
- package/dist/ui/dialog.mjs +1 -0
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.d.cts +2 -72
- package/dist/ui/drawer.d.mts +2 -0
- package/dist/ui/drawer.mjs +1 -0
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +2 -127
- package/dist/ui/dropdown-menu.d.mts +2 -0
- package/dist/ui/dropdown-menu.mjs +1 -0
- package/dist/ui/empty.cjs +1 -2
- package/dist/ui/empty.d.cts +2 -68
- package/dist/ui/empty.d.mts +2 -0
- package/dist/ui/empty.mjs +1 -0
- package/dist/ui/field.cjs +1 -1
- package/dist/ui/field.d.cts +24 -24
- package/dist/ui/field.d.mts +65 -0
- package/dist/ui/field.mjs +1 -0
- package/dist/ui/file-uploader.cjs +1 -3
- package/dist/ui/file-uploader.d.cts +2 -103
- package/dist/ui/file-uploader.d.mts +2 -0
- package/dist/ui/file-uploader.mjs +1 -0
- package/dist/ui/form.cjs +1 -2
- package/dist/ui/form.d.cts +2 -112
- package/dist/ui/form.d.mts +2 -0
- package/dist/ui/form.mjs +1 -0
- package/dist/ui/hover-card.cjs +1 -2
- package/dist/ui/hover-card.d.cts +2 -37
- package/dist/ui/hover-card.d.mts +2 -0
- package/dist/ui/hover-card.mjs +1 -0
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.d.cts +2 -36
- package/dist/ui/image.d.mts +2 -0
- package/dist/ui/image.mjs +1 -0
- package/dist/ui/input-otp.cjs +1 -2
- package/dist/ui/input-otp.d.cts +2 -59
- package/dist/ui/input-otp.d.mts +2 -0
- package/dist/ui/input-otp.mjs +1 -0
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +2 -0
- package/dist/ui/input.mjs +1 -0
- package/dist/ui/inputs/search-input.cjs +1 -2
- package/dist/ui/inputs/search-input.d.cts +2 -29
- package/dist/ui/inputs/search-input.d.mts +3 -0
- package/dist/ui/inputs/search-input.mjs +1 -0
- package/dist/ui/item.cjs +1 -2
- package/dist/ui/item.d.cts +2 -102
- package/dist/ui/item.d.mts +3 -0
- package/dist/ui/item.mjs +1 -0
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +2 -24
- package/dist/ui/label.d.mts +2 -0
- package/dist/ui/label.mjs +1 -0
- package/dist/ui/menubar.cjs +1 -2
- package/dist/ui/menubar.d.cts +2 -135
- package/dist/ui/menubar.d.mts +2 -0
- package/dist/ui/menubar.mjs +1 -0
- package/dist/ui/multi-select.cjs +1 -2
- package/dist/ui/multi-select.d.cts +2 -117
- package/dist/ui/multi-select.d.mts +4 -0
- package/dist/ui/multi-select.mjs +1 -0
- package/dist/ui/navigation-menu.cjs +1 -2
- package/dist/ui/navigation-menu.d.cts +2 -77
- package/dist/ui/navigation-menu.d.mts +2 -0
- package/dist/ui/navigation-menu.mjs +1 -0
- package/dist/ui/pagination.cjs +1 -2
- package/dist/ui/pagination.d.cts +2 -67
- package/dist/ui/pagination.d.mts +3 -0
- package/dist/ui/pagination.mjs +1 -0
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +2 -52
- package/dist/ui/popover.d.mts +2 -0
- package/dist/ui/popover.mjs +1 -0
- package/dist/ui/progress.cjs +1 -1
- package/dist/ui/progress.d.cts +2 -23
- package/dist/ui/progress.d.mts +2 -0
- package/dist/ui/progress.mjs +1 -0
- package/dist/ui/radio-group.cjs +1 -1
- package/dist/ui/radio-group.d.cts +2 -37
- package/dist/ui/radio-group.d.mts +2 -0
- package/dist/ui/radio-group.mjs +1 -0
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +2 -63
- package/dist/ui/resizable.d.mts +2 -0
- package/dist/ui/resizable.mjs +1 -0
- package/dist/ui/scroll-area.cjs +1 -2
- package/dist/ui/scroll-area.d.cts +2 -37
- package/dist/ui/scroll-area.d.mts +2 -0
- package/dist/ui/scroll-area.mjs +1 -0
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +2 -77
- package/dist/ui/select.d.mts +2 -0
- package/dist/ui/select.mjs +1 -0
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +2 -34
- package/dist/ui/separator.d.mts +2 -0
- package/dist/ui/separator.mjs +1 -0
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +2 -69
- package/dist/ui/sheet.d.mts +2 -0
- package/dist/ui/sheet.mjs +1 -0
- package/dist/ui/skeleton.cjs +1 -1
- package/dist/ui/skeleton.d.cts +2 -27
- package/dist/ui/skeleton.d.mts +2 -0
- package/dist/ui/skeleton.mjs +1 -0
- package/dist/ui/slider.cjs +1 -2
- package/dist/ui/slider.d.cts +2 -26
- package/dist/ui/slider.d.mts +2 -0
- package/dist/ui/slider.mjs +1 -0
- package/dist/ui/sonner.cjs +1 -2
- package/dist/ui/sonner.d.cts +2 -24
- package/dist/ui/sonner.d.mts +2 -0
- package/dist/ui/sonner.mjs +1 -0
- package/dist/ui/spinner.cjs +1 -1
- package/dist/ui/spinner.d.cts +2 -25
- package/dist/ui/spinner.d.mts +2 -0
- package/dist/ui/spinner.mjs +1 -0
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.d.cts +2 -26
- package/dist/ui/switch.d.mts +2 -0
- package/dist/ui/switch.mjs +1 -0
- package/dist/ui/table.cjs +1 -2
- package/dist/ui/table.d.cts +2 -73
- package/dist/ui/table.d.mts +2 -0
- package/dist/ui/table.mjs +1 -0
- package/dist/ui/tabs.cjs +1 -2
- package/dist/ui/tabs.d.cts +2 -44
- package/dist/ui/tabs.d.mts +2 -0
- package/dist/ui/tabs.mjs +1 -0
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +2 -30
- package/dist/ui/textarea.d.mts +2 -0
- package/dist/ui/textarea.mjs +1 -0
- package/dist/ui/toggle-group.cjs +1 -2
- package/dist/ui/toggle-group.d.cts +2 -39
- package/dist/ui/toggle-group.d.mts +3 -0
- package/dist/ui/toggle-group.mjs +1 -0
- package/dist/ui/toggle.cjs +1 -2
- package/dist/ui/toggle.d.cts +2 -32
- package/dist/ui/toggle.d.mts +2 -0
- package/dist/ui/toggle.mjs +1 -0
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +2 -55
- package/dist/ui/tooltip.d.mts +2 -0
- package/dist/ui/tooltip.mjs +1 -0
- package/dist/upload-image-BsCkSEXu.d.mts +24 -0
- package/dist/upload-image-CBVufZda.mjs +2 -0
- package/dist/upload-image-CBVufZda.mjs.map +1 -0
- package/dist/upload-image-CPWA9XOk.cjs +2 -0
- package/dist/upload-image-CPWA9XOk.cjs.map +1 -0
- package/dist/upload-image-CV3Xlq2w.d.cts +24 -0
- package/dist/user-B2Pml0ly.cjs +2 -0
- package/dist/user-B2Pml0ly.cjs.map +1 -0
- package/dist/user-B5efjaOf.d.cts +23 -0
- package/dist/user-Cl4BdxFy.d.mts +23 -0
- package/dist/user-DpBhqdvd.mjs +2 -0
- package/dist/user-DpBhqdvd.mjs.map +1 -0
- package/package.json +98 -98
- package/dist/alert-B2PaDJp6.cjs +0 -2
- package/dist/alert-B2PaDJp6.cjs.map +0 -1
- package/dist/alert-BzBDfGk2.js +0 -2
- package/dist/alert-BzBDfGk2.js.map +0 -1
- package/dist/alert-CWKKoukR.d.cts +0 -88
- package/dist/alert-DVzOoLJx.d.ts +0 -88
- package/dist/avatar-Hpj8lmux.js +0 -2
- package/dist/avatar-Hpj8lmux.js.map +0 -1
- package/dist/avatar-TyOphzGo.cjs +0 -2
- package/dist/avatar-TyOphzGo.cjs.map +0 -1
- package/dist/badge-C1qkt2tF.d.cts +0 -42
- package/dist/badge-C4uNX5js.d.ts +0 -42
- package/dist/badge-CRpRXSuO.js +0 -2
- package/dist/badge-CRpRXSuO.js.map +0 -1
- package/dist/badge-KW7xu5Ca.cjs +0 -2
- package/dist/badge-KW7xu5Ca.cjs.map +0 -1
- package/dist/button-C-YKF6eM.d.ts +0 -174
- package/dist/button-LMMbL-uH.js +0 -2
- package/dist/button-LMMbL-uH.js.map +0 -1
- package/dist/button-x1Fxuink.d.cts +0 -174
- package/dist/button.variants-CoSpd71B.js +0 -2
- package/dist/button.variants-CoSpd71B.js.map +0 -1
- package/dist/calendar-4weBDnXz.cjs +0 -2
- package/dist/calendar-4weBDnXz.cjs.map +0 -1
- package/dist/calendar-DzPt7b6k.js +0 -2
- package/dist/calendar-DzPt7b6k.js.map +0 -1
- package/dist/cards/grid-product-card.cjs.map +0 -1
- package/dist/cards/grid-product-card.d.ts +0 -37
- package/dist/cards/grid-product-card.js +0 -2
- package/dist/cards/grid-product-card.js.map +0 -1
- package/dist/cards/product-card.cjs.map +0 -1
- package/dist/cards/product-card.d.ts +0 -37
- package/dist/cards/product-card.js +0 -2
- package/dist/cards/product-card.js.map +0 -1
- package/dist/cards/simple-card.cjs.map +0 -1
- package/dist/cards/simple-card.d.ts +0 -35
- package/dist/cards/simple-card.js +0 -2
- package/dist/cards/simple-card.js.map +0 -1
- package/dist/checkbox-DLGDoU-1.js +0 -2
- package/dist/checkbox-DLGDoU-1.js.map +0 -1
- package/dist/checkbox-Dsq-MSbH.cjs +0 -2
- package/dist/checkbox-Dsq-MSbH.cjs.map +0 -1
- package/dist/close-C0PdZGxr.js +0 -2
- package/dist/close-C0PdZGxr.js.map +0 -1
- package/dist/close-Dlo1bI8x.cjs +0 -2
- package/dist/close-Dlo1bI8x.cjs.map +0 -1
- package/dist/cms-layout-BCH4NroR.cjs +0 -2
- package/dist/cms-layout-BCH4NroR.cjs.map +0 -1
- package/dist/cms-layout-tPwrgJZc.js +0 -2
- package/dist/cms-layout-tPwrgJZc.js.map +0 -1
- package/dist/command-2gUejA6g.js +0 -2
- package/dist/command-2gUejA6g.js.map +0 -1
- package/dist/command-CsP8a1Un.cjs +0 -2
- package/dist/command-CsP8a1Un.cjs.map +0 -1
- package/dist/data-display/country.cjs.map +0 -1
- package/dist/data-display/country.d.ts +0 -22
- package/dist/data-display/country.js +0 -2
- package/dist/data-display/country.js.map +0 -1
- package/dist/data-display/data-list.cjs.map +0 -1
- package/dist/data-display/data-list.d.ts +0 -43
- package/dist/data-display/data-list.js +0 -2
- package/dist/data-display/data-list.js.map +0 -1
- package/dist/data-display/date-tooltip.cjs.map +0 -1
- package/dist/data-display/date-tooltip.d.ts +0 -19
- package/dist/data-display/date-tooltip.js +0 -2
- package/dist/data-display/date-tooltip.js.map +0 -1
- package/dist/data-display/date.d.ts +0 -39
- package/dist/data-display/date.js +0 -1
- package/dist/data-display/empty.cjs.map +0 -1
- package/dist/data-display/empty.d.ts +0 -21
- package/dist/data-display/empty.js +0 -2
- package/dist/data-display/empty.js.map +0 -1
- package/dist/data-display/name.cjs.map +0 -1
- package/dist/data-display/name.d.ts +0 -19
- package/dist/data-display/name.js +0 -2
- package/dist/data-display/name.js.map +0 -1
- package/dist/data-display/phone-number.cjs.map +0 -1
- package/dist/data-display/phone-number.d.ts +0 -19
- package/dist/data-display/phone-number.js +0 -2
- package/dist/data-display/phone-number.js.map +0 -1
- package/dist/data-display/role-badge.cjs.map +0 -1
- package/dist/data-display/role-badge.d.ts +0 -22
- package/dist/data-display/role-badge.js +0 -2
- package/dist/data-display/role-badge.js.map +0 -1
- package/dist/data-display/statistic.d.ts +0 -57
- package/dist/data-display/statistic.js +0 -1
- package/dist/data-display/user.d.ts +0 -23
- package/dist/data-display/user.js +0 -1
- package/dist/date-BIqCFM1Z.js +0 -2
- package/dist/date-BIqCFM1Z.js.map +0 -1
- package/dist/date-D4NVl6C9.cjs +0 -2
- package/dist/date-D4NVl6C9.cjs.map +0 -1
- package/dist/dialog-BIJXF62m.d.ts +0 -90
- package/dist/dialog-BigPrWIj.cjs +0 -2
- package/dist/dialog-BigPrWIj.cjs.map +0 -1
- package/dist/dialog-CmutQ3rp.js +0 -2
- package/dist/dialog-CmutQ3rp.js.map +0 -1
- package/dist/dialog-D0zfwr8i.d.cts +0 -90
- package/dist/dialogs/confirm-dialog.cjs.map +0 -1
- package/dist/dialogs/confirm-dialog.d.ts +0 -142
- package/dist/dialogs/confirm-dialog.js +0 -2
- package/dist/dialogs/confirm-dialog.js.map +0 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.ts +0 -209
- package/dist/dialogs/detail-dialog/components/sidebar.js +0 -1
- package/dist/dialogs/detail-dialog/index.cjs.map +0 -1
- package/dist/dialogs/detail-dialog/index.d.ts +0 -45
- package/dist/dialogs/detail-dialog/index.js +0 -2
- package/dist/dialogs/detail-dialog/index.js.map +0 -1
- package/dist/dialogs/error-dialog.cjs.map +0 -1
- package/dist/dialogs/error-dialog.d.ts +0 -25
- package/dist/dialogs/error-dialog.js +0 -2
- package/dist/dialogs/error-dialog.js.map +0 -1
- package/dist/dialogs/loading-dialog.cjs.map +0 -1
- package/dist/dialogs/loading-dialog.d.ts +0 -21
- package/dist/dialogs/loading-dialog.js +0 -2
- package/dist/dialogs/loading-dialog.js.map +0 -1
- package/dist/dist-EPxjIRJp.js +0 -2
- package/dist/dist-EPxjIRJp.js.map +0 -1
- package/dist/drawer-B3qXaN5p.js +0 -2
- package/dist/drawer-B3qXaN5p.js.map +0 -1
- package/dist/drawer-BB8BZzDG.cjs +0 -2
- package/dist/drawer-BB8BZzDG.cjs.map +0 -1
- package/dist/dropdown-menu-CVh520yG.cjs +0 -2
- package/dist/dropdown-menu-CVh520yG.cjs.map +0 -1
- package/dist/dropdown-menu-DeHCVyby.js +0 -2
- package/dist/dropdown-menu-DeHCVyby.js.map +0 -1
- package/dist/features/descriptions/index.cjs.map +0 -1
- package/dist/features/descriptions/index.d.ts +0 -246
- package/dist/features/descriptions/index.js +0 -2
- package/dist/features/descriptions/index.js.map +0 -1
- package/dist/features/search-modal/index.d.ts +0 -17
- package/dist/features/search-modal/index.js +0 -1
- package/dist/features/tables/index.d.ts +0 -3
- package/dist/features/tables/index.js +0 -1
- package/dist/features/tanstack-form/index.d.ts +0 -2
- package/dist/features/tanstack-form/index.js +0 -1
- package/dist/features/text-editor/index.d.ts +0 -2
- package/dist/features/text-editor/index.js +0 -1
- package/dist/field-BrlETeXX.cjs +0 -2
- package/dist/field-BrlETeXX.cjs.map +0 -1
- package/dist/field-DpoKF1nY.js +0 -2
- package/dist/field-DpoKF1nY.js.map +0 -1
- package/dist/flex-CinRrgEy.js +0 -2
- package/dist/flex-CinRrgEy.js.map +0 -1
- package/dist/flex-DmWmOBn5.cjs +0 -2
- package/dist/flex-DmWmOBn5.cjs.map +0 -1
- package/dist/heading-Bz-hSatD.js +0 -2
- package/dist/heading-Bz-hSatD.js.map +0 -1
- package/dist/image-BpTuF_1w.js +0 -2
- package/dist/image-BpTuF_1w.js.map +0 -1
- package/dist/image-W_Yb0xTB.cjs +0 -2
- package/dist/image-W_Yb0xTB.cjs.map +0 -1
- package/dist/index-B1nDSKqT.d.ts +0 -85
- package/dist/index-BlQGXGqt.d.ts +0 -90
- package/dist/index-C3pqMcqX.d.ts +0 -1093
- package/dist/index-DiMGMuVl.d.cts +0 -1707
- package/dist/index-Dz0WJS8B.d.cts +0 -1093
- package/dist/index-Ilj04YNO.d.ts +0 -1707
- package/dist/index-KO98y6L0.d.cts +0 -90
- package/dist/index-c1Vzwwln.d.cts +0 -85
- package/dist/index.d.ts +0 -93
- package/dist/index.js +0 -1
- package/dist/input-BQpX4Zkc.d.ts +0 -44
- package/dist/input-BrlqspMT.d.cts +0 -44
- package/dist/input-DAfP6LZ7.js +0 -2
- package/dist/input-DAfP6LZ7.js.map +0 -1
- package/dist/input-WJ0DLHTR.cjs +0 -2
- package/dist/input-WJ0DLHTR.cjs.map +0 -1
- package/dist/label-B8cAG2kc.js +0 -2
- package/dist/label-B8cAG2kc.js.map +0 -1
- package/dist/label-CC6fXVbC.cjs +0 -2
- package/dist/label-CC6fXVbC.cjs.map +0 -1
- package/dist/layouts/cms-layout/index.d.ts +0 -2
- package/dist/layouts/cms-layout/index.js +0 -1
- package/dist/layouts/flex.d.ts +0 -117
- package/dist/layouts/flex.js +0 -1
- package/dist/layouts/grid.cjs.map +0 -1
- package/dist/layouts/grid.d.ts +0 -19
- package/dist/layouts/grid.js +0 -2
- package/dist/layouts/grid.js.map +0 -1
- package/dist/layouts/payment-layout/index.d.ts +0 -74
- package/dist/layouts/payment-layout/index.js +0 -1
- package/dist/pages/FeatureDeveloping.cjs.map +0 -1
- package/dist/pages/FeatureDeveloping.d.ts +0 -43
- package/dist/pages/FeatureDeveloping.js +0 -2
- package/dist/pages/FeatureDeveloping.js.map +0 -1
- package/dist/pages/FeatureFixing.cjs.map +0 -1
- package/dist/pages/FeatureFixing.d.ts +0 -43
- package/dist/pages/FeatureFixing.js +0 -2
- package/dist/pages/FeatureFixing.js.map +0 -1
- package/dist/pages/LoginPage.cjs.map +0 -1
- package/dist/pages/LoginPage.d.ts +0 -55
- package/dist/pages/LoginPage.js +0 -2
- package/dist/pages/LoginPage.js.map +0 -1
- package/dist/pages/NotAuthorized.cjs.map +0 -1
- package/dist/pages/NotAuthorized.d.ts +0 -43
- package/dist/pages/NotAuthorized.js +0 -2
- package/dist/pages/NotAuthorized.js.map +0 -1
- package/dist/pages/NotFound.cjs.map +0 -1
- package/dist/pages/NotFound.d.ts +0 -43
- package/dist/pages/NotFound.js +0 -2
- package/dist/pages/NotFound.js.map +0 -1
- package/dist/pages/RegisterPage.cjs.map +0 -1
- package/dist/pages/RegisterPage.d.ts +0 -52
- package/dist/pages/RegisterPage.js +0 -2
- package/dist/pages/RegisterPage.js.map +0 -1
- package/dist/pages/VerifyEmailPage.cjs.map +0 -1
- package/dist/pages/VerifyEmailPage.d.ts +0 -64
- package/dist/pages/VerifyEmailPage.js +0 -2
- package/dist/pages/VerifyEmailPage.js.map +0 -1
- package/dist/paragraph-Cc13ZI4d.js +0 -2
- package/dist/paragraph-Cc13ZI4d.js.map +0 -1
- package/dist/payment-layout-DyILfyVG.cjs +0 -2
- package/dist/payment-layout-DyILfyVG.cjs.map +0 -1
- package/dist/payment-layout-giaGvs8T.js +0 -2
- package/dist/payment-layout-giaGvs8T.js.map +0 -1
- package/dist/popover-6233wU1s.js +0 -2
- package/dist/popover-6233wU1s.js.map +0 -1
- package/dist/popover-DBsC8Ltp.cjs +0 -2
- package/dist/popover-DBsC8Ltp.cjs.map +0 -1
- package/dist/progress-AYknlEgK.js +0 -2
- package/dist/progress-AYknlEgK.js.map +0 -1
- package/dist/progress-gvBqNiHp.cjs +0 -2
- package/dist/progress-gvBqNiHp.cjs.map +0 -1
- package/dist/radio-group-ImoBjpqZ.js +0 -2
- package/dist/radio-group-ImoBjpqZ.js.map +0 -1
- package/dist/radio-group-_TdMkv8w.cjs +0 -2
- package/dist/radio-group-_TdMkv8w.cjs.map +0 -1
- package/dist/resizable-C-M-mu6b.js +0 -2
- package/dist/resizable-C-M-mu6b.js.map +0 -1
- package/dist/resizable-sgpaHAb8.cjs +0 -2
- package/dist/resizable-sgpaHAb8.cjs.map +0 -1
- package/dist/search-modal-B-pzGcfP.cjs +0 -2
- package/dist/search-modal-B-pzGcfP.cjs.map +0 -1
- package/dist/search-modal-b2AE5WEW.js +0 -2
- package/dist/search-modal-b2AE5WEW.js.map +0 -1
- package/dist/select-CWLQHh8x.cjs +0 -2
- package/dist/select-CWLQHh8x.cjs.map +0 -1
- package/dist/select-CryLzZA0.js +0 -2
- package/dist/select-CryLzZA0.js.map +0 -1
- package/dist/separator-BM8hA4DP.js +0 -2
- package/dist/separator-BM8hA4DP.js.map +0 -1
- package/dist/separator-KuymG9g0.cjs +0 -2
- package/dist/separator-KuymG9g0.cjs.map +0 -1
- package/dist/sheet-CvKSi0UC.cjs +0 -2
- package/dist/sheet-CvKSi0UC.cjs.map +0 -1
- package/dist/sheet-DGXXYgWB.js +0 -2
- package/dist/sheet-DGXXYgWB.js.map +0 -1
- package/dist/sidebar-BDrsbzo5.js +0 -2
- package/dist/sidebar-BDrsbzo5.js.map +0 -1
- package/dist/sidebar-D5J2gcTw.cjs +0 -2
- package/dist/sidebar-D5J2gcTw.cjs.map +0 -1
- package/dist/skeleton-CX1USu1w.cjs +0 -2
- package/dist/skeleton-CX1USu1w.cjs.map +0 -1
- package/dist/skeleton-DlRDNM97.js +0 -2
- package/dist/skeleton-DlRDNM97.js.map +0 -1
- package/dist/spinner-C1eamx3w.js +0 -2
- package/dist/spinner-C1eamx3w.js.map +0 -1
- package/dist/spinner-CFxorYEt.cjs +0 -2
- package/dist/spinner-CFxorYEt.cjs.map +0 -1
- package/dist/statistic-CYMqAYNc.js +0 -2
- package/dist/statistic-CYMqAYNc.js.map +0 -1
- package/dist/statistic-DDXilD7q.cjs +0 -2
- package/dist/statistic-DDXilD7q.cjs.map +0 -1
- package/dist/switch-BLHmdRq2.js +0 -2
- package/dist/switch-BLHmdRq2.js.map +0 -1
- package/dist/switch-DVfOV7wP.cjs +0 -2
- package/dist/switch-DVfOV7wP.cjs.map +0 -1
- package/dist/systems/google.cjs.map +0 -1
- package/dist/systems/google.d.ts +0 -53
- package/dist/systems/google.js +0 -2
- package/dist/systems/google.js.map +0 -1
- package/dist/tables-CPKHe3k-.cjs +0 -4
- package/dist/tables-CPKHe3k-.cjs.map +0 -1
- package/dist/tables-DWQytYNm.js +0 -4
- package/dist/tables-DWQytYNm.js.map +0 -1
- package/dist/tanstack-form-DqBFHFeg.js +0 -12
- package/dist/tanstack-form-DqBFHFeg.js.map +0 -1
- package/dist/tanstack-form-_NZZW9aT.cjs +0 -12
- package/dist/tanstack-form-_NZZW9aT.cjs.map +0 -1
- package/dist/text-editor-CvJN3nSL.cjs +0 -2
- package/dist/text-editor-CvJN3nSL.cjs.map +0 -1
- package/dist/text-editor-WbS7pJJs.js +0 -2
- package/dist/text-editor-WbS7pJJs.js.map +0 -1
- package/dist/textarea-Bp6VvhiA.js +0 -2
- package/dist/textarea-Bp6VvhiA.js.map +0 -1
- package/dist/textarea-Cc9CF8wD.cjs +0 -2
- package/dist/textarea-Cc9CF8wD.cjs.map +0 -1
- package/dist/tooltip-CBdoIzoM.cjs +0 -2
- package/dist/tooltip-CBdoIzoM.cjs.map +0 -1
- package/dist/tooltip-CVIl6Hln.js +0 -2
- package/dist/tooltip-CVIl6Hln.js.map +0 -1
- package/dist/types-BD1t0Bj8.cjs +0 -2
- package/dist/types-BD1t0Bj8.cjs.map +0 -1
- package/dist/types-BVSfF-1o.d.ts +0 -24
- package/dist/types-BZqffRVJ.js +0 -2
- package/dist/types-BZqffRVJ.js.map +0 -1
- package/dist/types-Cc_mLRAn.d.cts +0 -24
- package/dist/typography/paragraph.d.ts +0 -48
- package/dist/typography/paragraph.js +0 -1
- package/dist/typography/title.cjs.map +0 -1
- package/dist/typography/title.d.ts +0 -43
- package/dist/typography/title.js +0 -2
- package/dist/typography/title.js.map +0 -1
- package/dist/ui/alert-dialog.cjs.map +0 -1
- package/dist/ui/alert-dialog.d.ts +0 -90
- package/dist/ui/alert-dialog.js +0 -2
- package/dist/ui/alert-dialog.js.map +0 -1
- package/dist/ui/alert.d.ts +0 -2
- package/dist/ui/alert.js +0 -1
- package/dist/ui/aspect-ratio.cjs.map +0 -1
- package/dist/ui/aspect-ratio.d.ts +0 -24
- package/dist/ui/aspect-ratio.js +0 -2
- package/dist/ui/aspect-ratio.js.map +0 -1
- package/dist/ui/avatar.d.ts +0 -35
- package/dist/ui/avatar.js +0 -1
- package/dist/ui/badge.d.ts +0 -2
- package/dist/ui/badge.js +0 -1
- package/dist/ui/breadcrumb.cjs.map +0 -1
- package/dist/ui/breadcrumb.d.ts +0 -72
- package/dist/ui/breadcrumb.js +0 -2
- package/dist/ui/breadcrumb.js.map +0 -1
- package/dist/ui/button-group.cjs.map +0 -1
- package/dist/ui/button-group.d.ts +0 -50
- package/dist/ui/button-group.js +0 -2
- package/dist/ui/button-group.js.map +0 -1
- package/dist/ui/button.d.ts +0 -2
- package/dist/ui/button.js +0 -1
- package/dist/ui/buttons/add-new.cjs.map +0 -1
- package/dist/ui/buttons/add-new.d.ts +0 -17
- package/dist/ui/buttons/add-new.js +0 -2
- package/dist/ui/buttons/add-new.js.map +0 -1
- package/dist/ui/buttons/edit.cjs.map +0 -1
- package/dist/ui/buttons/edit.d.ts +0 -17
- package/dist/ui/buttons/edit.js +0 -2
- package/dist/ui/buttons/edit.js.map +0 -1
- package/dist/ui/buttons/refresh.cjs.map +0 -1
- package/dist/ui/buttons/refresh.d.ts +0 -17
- package/dist/ui/buttons/refresh.js +0 -2
- package/dist/ui/buttons/refresh.js.map +0 -1
- package/dist/ui/buttons/trash.cjs.map +0 -1
- package/dist/ui/buttons/trash.d.ts +0 -17
- package/dist/ui/buttons/trash.js +0 -2
- package/dist/ui/buttons/trash.js.map +0 -1
- package/dist/ui/buttons/upload-image.cjs.map +0 -1
- package/dist/ui/buttons/upload-image.d.ts +0 -24
- package/dist/ui/buttons/upload-image.js +0 -2
- package/dist/ui/buttons/upload-image.js.map +0 -1
- package/dist/ui/calendar.d.ts +0 -45
- package/dist/ui/calendar.js +0 -1
- package/dist/ui/card.cjs.map +0 -1
- package/dist/ui/card.d.ts +0 -63
- package/dist/ui/card.js +0 -2
- package/dist/ui/card.js.map +0 -1
- package/dist/ui/carousel.cjs.map +0 -1
- package/dist/ui/carousel.d.ts +0 -71
- package/dist/ui/carousel.js +0 -2
- package/dist/ui/carousel.js.map +0 -1
- package/dist/ui/checkbox.d.ts +0 -26
- package/dist/ui/checkbox.js +0 -1
- package/dist/ui/collapsible.cjs.map +0 -1
- package/dist/ui/collapsible.d.ts +0 -34
- package/dist/ui/collapsible.js +0 -2
- package/dist/ui/collapsible.js.map +0 -1
- package/dist/ui/command.d.ts +0 -89
- package/dist/ui/command.js +0 -1
- package/dist/ui/context-menu.cjs.map +0 -1
- package/dist/ui/context-menu.d.ts +0 -125
- package/dist/ui/context-menu.js +0 -2
- package/dist/ui/context-menu.js.map +0 -1
- package/dist/ui/dialog.d.ts +0 -2
- package/dist/ui/dialog.js +0 -1
- package/dist/ui/drawer.d.ts +0 -72
- package/dist/ui/drawer.js +0 -1
- package/dist/ui/dropdown-menu.d.ts +0 -127
- package/dist/ui/dropdown-menu.js +0 -1
- package/dist/ui/empty.cjs.map +0 -1
- package/dist/ui/empty.d.ts +0 -68
- package/dist/ui/empty.js +0 -2
- package/dist/ui/empty.js.map +0 -1
- package/dist/ui/field.d.ts +0 -65
- package/dist/ui/field.js +0 -1
- package/dist/ui/file-uploader.cjs.map +0 -1
- package/dist/ui/file-uploader.d.ts +0 -103
- package/dist/ui/file-uploader.js +0 -3
- package/dist/ui/file-uploader.js.map +0 -1
- package/dist/ui/form.cjs.map +0 -1
- package/dist/ui/form.d.ts +0 -112
- package/dist/ui/form.js +0 -2
- package/dist/ui/form.js.map +0 -1
- package/dist/ui/hover-card.cjs.map +0 -1
- package/dist/ui/hover-card.d.ts +0 -37
- package/dist/ui/hover-card.js +0 -2
- package/dist/ui/hover-card.js.map +0 -1
- package/dist/ui/image.d.ts +0 -36
- package/dist/ui/image.js +0 -1
- package/dist/ui/input-otp.cjs.map +0 -1
- package/dist/ui/input-otp.d.ts +0 -59
- package/dist/ui/input-otp.js +0 -2
- package/dist/ui/input-otp.js.map +0 -1
- package/dist/ui/input.d.ts +0 -2
- package/dist/ui/input.js +0 -1
- package/dist/ui/inputs/search-input.cjs.map +0 -1
- package/dist/ui/inputs/search-input.d.ts +0 -29
- package/dist/ui/inputs/search-input.js +0 -2
- package/dist/ui/inputs/search-input.js.map +0 -1
- package/dist/ui/item.cjs.map +0 -1
- package/dist/ui/item.d.ts +0 -102
- package/dist/ui/item.js +0 -2
- package/dist/ui/item.js.map +0 -1
- package/dist/ui/label.d.ts +0 -24
- package/dist/ui/label.js +0 -1
- package/dist/ui/menubar.cjs.map +0 -1
- package/dist/ui/menubar.d.ts +0 -135
- package/dist/ui/menubar.js +0 -2
- package/dist/ui/menubar.js.map +0 -1
- package/dist/ui/multi-select.cjs.map +0 -1
- package/dist/ui/multi-select.d.ts +0 -118
- package/dist/ui/multi-select.js +0 -2
- package/dist/ui/multi-select.js.map +0 -1
- package/dist/ui/navigation-menu.cjs.map +0 -1
- package/dist/ui/navigation-menu.d.ts +0 -77
- package/dist/ui/navigation-menu.js +0 -2
- package/dist/ui/navigation-menu.js.map +0 -1
- package/dist/ui/pagination.cjs.map +0 -1
- package/dist/ui/pagination.d.ts +0 -67
- package/dist/ui/pagination.js +0 -2
- package/dist/ui/pagination.js.map +0 -1
- package/dist/ui/popover.d.ts +0 -52
- package/dist/ui/popover.js +0 -1
- package/dist/ui/progress.d.ts +0 -23
- package/dist/ui/progress.js +0 -1
- package/dist/ui/radio-group.d.ts +0 -37
- package/dist/ui/radio-group.js +0 -1
- package/dist/ui/resizable.d.ts +0 -63
- package/dist/ui/resizable.js +0 -1
- package/dist/ui/scroll-area.cjs.map +0 -1
- package/dist/ui/scroll-area.d.ts +0 -37
- package/dist/ui/scroll-area.js +0 -2
- package/dist/ui/scroll-area.js.map +0 -1
- package/dist/ui/select.d.ts +0 -77
- package/dist/ui/select.js +0 -1
- package/dist/ui/separator.d.ts +0 -34
- package/dist/ui/separator.js +0 -1
- package/dist/ui/sheet.d.ts +0 -69
- package/dist/ui/sheet.js +0 -1
- package/dist/ui/skeleton.d.ts +0 -27
- package/dist/ui/skeleton.js +0 -1
- package/dist/ui/slider.cjs.map +0 -1
- package/dist/ui/slider.d.ts +0 -26
- package/dist/ui/slider.js +0 -2
- package/dist/ui/slider.js.map +0 -1
- package/dist/ui/sonner.cjs.map +0 -1
- package/dist/ui/sonner.d.ts +0 -24
- package/dist/ui/sonner.js +0 -2
- package/dist/ui/sonner.js.map +0 -1
- package/dist/ui/spinner.d.ts +0 -25
- package/dist/ui/spinner.js +0 -1
- package/dist/ui/switch.d.ts +0 -26
- package/dist/ui/switch.js +0 -1
- package/dist/ui/table.cjs.map +0 -1
- package/dist/ui/table.d.ts +0 -73
- package/dist/ui/table.js +0 -2
- package/dist/ui/table.js.map +0 -1
- package/dist/ui/tabs.cjs.map +0 -1
- package/dist/ui/tabs.d.ts +0 -44
- package/dist/ui/tabs.js +0 -2
- package/dist/ui/tabs.js.map +0 -1
- package/dist/ui/textarea.d.ts +0 -30
- package/dist/ui/textarea.js +0 -1
- package/dist/ui/toggle-group.cjs.map +0 -1
- package/dist/ui/toggle-group.d.ts +0 -39
- package/dist/ui/toggle-group.js +0 -2
- package/dist/ui/toggle-group.js.map +0 -1
- package/dist/ui/toggle.cjs.map +0 -1
- package/dist/ui/toggle.d.ts +0 -32
- package/dist/ui/toggle.js +0 -2
- package/dist/ui/toggle.js.map +0 -1
- package/dist/ui/tooltip.d.ts +0 -55
- package/dist/ui/tooltip.js +0 -1
- package/dist/user-BSpgswEC.js +0 -2
- package/dist/user-BSpgswEC.js.map +0 -1
- package/dist/user-ii4FBhO1.cjs +0 -2
- package/dist/user-ii4FBhO1.cjs.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as react3 from "react";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/pages/NotFound.d.ts
|
|
4
|
+
interface NotFoundProps {
|
|
5
|
+
/** Main heading shown beneath the file-question icon. Defaults to `'Không tìm thấy trang'`. */
|
|
6
|
+
title?: string;
|
|
7
|
+
/** Supporting text shown below the title. Defaults to a Vietnamese 404 message. */
|
|
8
|
+
subtitle?: string;
|
|
9
|
+
/** Label for the action button. Defaults to `'Trở về trang chủ'`. */
|
|
10
|
+
buttonText?: string;
|
|
11
|
+
/** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
|
|
12
|
+
onButtonClick?: () => void;
|
|
13
|
+
/** Additional class names applied to the root container element. */
|
|
14
|
+
className?: string;
|
|
15
|
+
/** Additional class names applied to the `FileQuestion` icon. */
|
|
16
|
+
iconClassName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Full-page 404 error screen displayed when a requested route or resource does not exist.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* import { NotFound } from '@customafk/lunas-ui/pages/NotFound';
|
|
24
|
+
*
|
|
25
|
+
* <NotFound
|
|
26
|
+
* title="Page Not Found"
|
|
27
|
+
* subtitle="The page you are looking for does not exist."
|
|
28
|
+
* buttonText="Go Home"
|
|
29
|
+
* onButtonClick={() => router.push('/')}
|
|
30
|
+
* />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare const NotFound: ({
|
|
34
|
+
title,
|
|
35
|
+
subtitle,
|
|
36
|
+
buttonText,
|
|
37
|
+
onButtonClick,
|
|
38
|
+
className,
|
|
39
|
+
iconClassName
|
|
40
|
+
}: NotFoundProps) => react3.JSX.Element;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { NotFoundProps as n, NotFound as t };
|
|
43
|
+
//# sourceMappingURL=NotFound-Kvw-yvr_.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./button-C--DAN1D.cjs`),n=require(`./dialog-DNEUhYSv.cjs`),r=require(`./input-BatF2xqI.cjs`),i=require(`./label--hinNDHW.cjs`),a=require(`./alert-DDdHIRib.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(8,`Mật khẩu phải có ít nhất 8 ký tự`).max(50,`Mật khẩu không được vượt quá 50 ký tự`).regex(/[A-Z]/,`Phải có ít nhất một chữ hoa`).regex(/[a-z]/,`Phải có ít nhất một chữ thường`).regex(/[0-9]/,`Phải có ít nhất một chữ số`).regex(/[^A-Za-z0-9]/,`Phải có ít nhất một ký tự đặc biệt`),confirmPassword:l.z.string().min(1,`Vui lòng xác nhận mật khẩu`)}).refine(e=>e.password===e.confirmPassword,{message:`Mật khẩu xác nhận không khớp`,path:[`confirmPassword`]}),d=({open:e,onOpenChange:l,onRegister:d,onLogin:f,isLoading:p=!1,errorMessage:m,title:h=`Đăng ký`,subtitle:g=`Tạo tài khoản mới để bắt đầu`})=>{let _=(0,s.useId)(),v=(0,s.useId)(),y=(0,s.useId)(),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(``),[w,T]=(0,s.useState)(``),[E,D]=(0,s.useState)(!1),[O,k]=(0,s.useState)(!1),[A,j]=(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:h}),(0,c.jsx)(n.i,{children:g})]}),(0,c.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=u.safeParse({email:b,password:S,confirmPassword:w});if(!t.success){let e=t.error.flatten().fieldErrors;j({email:e.email?.[0],password:e.password?.[0],confirmPassword:e.confirmPassword?.[0]});return}j({}),await d(b,S)},noValidate:!0,className:`flex flex-col gap-4`,children:[m&&(0,c.jsx)(a.t,{variant:`destructive`,children:(0,c.jsx)(a.n,{children:m})}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(i.t,{htmlFor:_,children:`Email`}),(0,c.jsx)(r.t,{id:_,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:b,onChange:e=>x(e.target.value),"aria-invalid":!!A.email,disabled:p}),A.email&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:A.email})]}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(i.t,{htmlFor:v,children:`Mật khẩu`}),(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsx)(r.t,{id:v,type:E?`text`:`password`,autoComplete:`new-password`,placeholder:`••••••••`,value:S,onChange:e=>C(e.target.value),"aria-invalid":!!A.password,disabled:p,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(),D(e=>!e)},"aria-label":E?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:E?(0,c.jsx)(o.EyeOff,{size:16}):(0,c.jsx)(o.Eye,{size:16})})]}),A.password?(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:A.password}):(0,c.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.`})]}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,c.jsx)(i.t,{htmlFor:y,children:`Xác nhận mật khẩu`}),(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsx)(r.t,{id:y,type:O?`text`:`password`,autoComplete:`new-password`,placeholder:`••••••••`,value:w,onChange:e=>T(e.target.value),"aria-invalid":!!A.confirmPassword,disabled:p,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(),k(e=>!e)},"aria-label":O?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:O?(0,c.jsx)(o.EyeOff,{size:16}):(0,c.jsx)(o.Eye,{size:16})})]}),A.confirmPassword&&(0,c.jsx)(`p`,{className:`text-destructive text-xs`,children:A.confirmPassword})]}),(0,c.jsx)(t.t,{type:`submit`,isLoading:p,className:`w-full`,children:`Đăng ký`}),(0,c.jsx)(t.t,{type:`button`,variant:`outline`,className:`w-full`,disabled:p,onClick:()=>l(!1),children:`Đóng hộp thoại`})]}),f&&(0,c.jsxs)(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[(0,c.jsx)(`span`,{children:`Đã có tài khoản?`}),(0,c.jsx)(t.t,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:f,children:`Đăng nhập`})]})]})})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
|
|
2
|
+
//# sourceMappingURL=RegisterPage-BI5efPEP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisterPage-BI5efPEP.cjs","names":["z","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Alert","AlertDescription","Label","Input","EyeOff","Eye","Button"],"sources":["../packages/components/pages/RegisterPage.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 RegisterPageProps {\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 registration credentials */\n onRegister: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Đăng nhập\" link is clicked */\n onLogin?: () => 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 ký\" */\n title?: string;\n /** Dialog subheading. Default: \"Tạo tài khoản mới để bắt đầu\" */\n subtitle?: string;\n}\n\nconst registerSchema = z\n .object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z\n .string()\n .min(8, 'Mật khẩu phải có ít nhất 8 ký tự')\n .max(50, 'Mật khẩu không được vượt quá 50 ký tự')\n .regex(/[A-Z]/, 'Phải có ít nhất một chữ hoa')\n .regex(/[a-z]/, 'Phải có ít nhất một chữ thường')\n .regex(/[0-9]/, 'Phải có ít nhất một chữ số')\n .regex(/[^A-Za-z0-9]/, 'Phải có ít nhất một ký tự đặc biệt'),\n confirmPassword: z.string().min(1, 'Vui lòng xác nhận mật khẩu'),\n })\n .refine(data => data.password === data.confirmPassword, {\n message: 'Mật khẩu xác nhận không khớp',\n path: ['confirmPassword'],\n });\n\n/**\n * Modal registration dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { RegisterPage } from '@customafk/lunas-ui/pages/RegisterPage';\n *\n * <RegisterPage\n * open={open}\n * onOpenChange={setOpen}\n * onRegister={async (email, password) => {\n * await authService.register(email, password);\n * setOpen(false);\n * }}\n * onLogin={() => { setOpen(false); setLoginOpen(true); }}\n * />\n * ```\n */\nexport const RegisterPage = ({\n open,\n onOpenChange,\n onRegister,\n onLogin,\n isLoading = false,\n errorMessage,\n title = 'Đăng ký',\n subtitle = 'Tạo tài khoản mới để bắt đầu',\n}: RegisterPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const confirmPasswordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{\n email?: string;\n password?: string;\n confirmPassword?: string;\n }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = registerSchema.safeParse({ email, password, confirmPassword });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({\n email: errors.email?.[0],\n password: errors.password?.[0],\n confirmPassword: errors.confirmPassword?.[0],\n });\n return;\n }\n setFieldErrors({});\n await onRegister(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 <Label htmlFor={passwordId}>Mật khẩu</Label>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"new-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 ? (\n <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>\n ) : (\n <p className=\"text-muted-foreground text-xs\">Tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.</p>\n )}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={confirmPasswordId}>Xác nhận mật khẩu</Label>\n <div className=\"relative\">\n <Input\n id={confirmPasswordId}\n type={showConfirmPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n placeholder=\"••••••••\"\n value={confirmPassword}\n onChange={e => setConfirmPassword(e.target.value)}\n aria-invalid={!!fieldErrors.confirmPassword}\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 setShowConfirmPassword(v => !v);\n }}\n aria-label={showConfirmPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showConfirmPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.confirmPassword && <p className=\"text-destructive text-xs\">{fieldErrors.confirmPassword}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng ký\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 {onLogin && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Đã có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onLogin}>\n Đăng nhập\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as react248 from "react";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/pages/RegisterPage.d.ts
|
|
4
|
+
interface RegisterPageProps {
|
|
5
|
+
/** Controls whether the dialog is open */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** Called when the dialog open state changes */
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** Called when the user submits registration credentials */
|
|
10
|
+
onRegister: (email: string, password: string) => Promise<void> | void;
|
|
11
|
+
/** Called when the "Đăng nhập" link is clicked */
|
|
12
|
+
onLogin?: () => void;
|
|
13
|
+
/** Disables the form and shows a spinner on the submit button */
|
|
14
|
+
isLoading?: boolean;
|
|
15
|
+
/** Server-side error message rendered in a destructive Alert */
|
|
16
|
+
errorMessage?: string;
|
|
17
|
+
/** Dialog heading. Default: "Đăng ký" */
|
|
18
|
+
title?: string;
|
|
19
|
+
/** Dialog subheading. Default: "Tạo tài khoản mới để bắt đầu" */
|
|
20
|
+
subtitle?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Modal registration dialog for the client authentication flow.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* import { RegisterPage } from '@customafk/lunas-ui/pages/RegisterPage';
|
|
28
|
+
*
|
|
29
|
+
* <RegisterPage
|
|
30
|
+
* open={open}
|
|
31
|
+
* onOpenChange={setOpen}
|
|
32
|
+
* onRegister={async (email, password) => {
|
|
33
|
+
* await authService.register(email, password);
|
|
34
|
+
* setOpen(false);
|
|
35
|
+
* }}
|
|
36
|
+
* onLogin={() => { setOpen(false); setLoginOpen(true); }}
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare const RegisterPage: ({
|
|
41
|
+
open,
|
|
42
|
+
onOpenChange,
|
|
43
|
+
onRegister,
|
|
44
|
+
onLogin,
|
|
45
|
+
isLoading,
|
|
46
|
+
errorMessage,
|
|
47
|
+
title,
|
|
48
|
+
subtitle
|
|
49
|
+
}: RegisterPageProps) => react248.JSX.Element;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { RegisterPageProps as n, RegisterPage as t };
|
|
52
|
+
//# sourceMappingURL=RegisterPage-DKiXE8U6.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./button-CCVJTHBI.mjs";import{i as t,l as n,o as r,r as i,t as a}from"./dialog--BvCecaD.mjs";import{t as o}from"./input-CFsouxvo.mjs";import{t as s}from"./label-BMVyfKu9.mjs";import{n as c,t as l}from"./alert-BEcGZfPW.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(8,`Mật khẩu phải có ít nhất 8 ký tự`).max(50,`Mật khẩu không được vượt quá 50 ký tự`).regex(/[A-Z]/,`Phải có ít nhất một chữ hoa`).regex(/[a-z]/,`Phải có ít nhất một chữ thường`).regex(/[0-9]/,`Phải có ít nhất một chữ số`).regex(/[^A-Za-z0-9]/,`Phải có ít nhất một ký tự đặc biệt`),confirmPassword:g.string().min(1,`Vui lòng xác nhận mật khẩu`)}).refine(e=>e.password===e.confirmPassword,{message:`Mật khẩu xác nhận không khớp`,path:[`confirmPassword`]}),v=({open:g,onOpenChange:v,onRegister:y,onLogin:b,isLoading:x=!1,errorMessage:S,title:C=`Đăng ký`,subtitle:w=`Tạo tài khoản mới để bắt đầu`})=>{let T=f(),E=f(),D=f(),[O,k]=p(``),[A,j]=p(``),[M,N]=p(``),[P,F]=p(!1),[I,L]=p(!1),[R,z]=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:C}),m(t,{children:w})]}),h(`form`,{onSubmit:async e=>{e.preventDefault();let t=_.safeParse({email:O,password:A,confirmPassword:M});if(!t.success){let e=t.error.flatten().fieldErrors;z({email:e.email?.[0],password:e.password?.[0],confirmPassword:e.confirmPassword?.[0]});return}z({}),await y(O,A)},noValidate:!0,className:`flex flex-col gap-4`,children:[S&&m(l,{variant:`destructive`,children:m(c,{children:S})}),h(`div`,{className:`flex flex-col gap-1.5`,children:[m(s,{htmlFor:T,children:`Email`}),m(o,{id:T,type:`email`,autoComplete:`email`,placeholder:`you@example.com`,value:O,onChange:e=>k(e.target.value),"aria-invalid":!!R.email,disabled:x}),R.email&&m(`p`,{className:`text-destructive text-xs`,children:R.email})]}),h(`div`,{className:`flex flex-col gap-1.5`,children:[m(s,{htmlFor:E,children:`Mật khẩu`}),h(`div`,{className:`relative`,children:[m(o,{id:E,type:P?`text`:`password`,autoComplete:`new-password`,placeholder:`••••••••`,value:A,onChange:e=>j(e.target.value),"aria-invalid":!!R.password,disabled:x,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(),F(e=>!e)},"aria-label":P?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:m(P?d:u,{size:16})})]}),R.password?m(`p`,{className:`text-destructive text-xs`,children:R.password}):m(`p`,{className:`text-muted-foreground text-xs`,children:`Tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.`})]}),h(`div`,{className:`flex flex-col gap-1.5`,children:[m(s,{htmlFor:D,children:`Xác nhận mật khẩu`}),h(`div`,{className:`relative`,children:[m(o,{id:D,type:I?`text`:`password`,autoComplete:`new-password`,placeholder:`••••••••`,value:M,onChange:e=>N(e.target.value),"aria-invalid":!!R.confirmPassword,disabled:x,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(),L(e=>!e)},"aria-label":I?`Ẩn mật khẩu`:`Hiện mật khẩu`,children:m(I?d:u,{size:16})})]}),R.confirmPassword&&m(`p`,{className:`text-destructive text-xs`,children:R.confirmPassword})]}),m(e,{type:`submit`,isLoading:x,className:`w-full`,children:`Đăng ký`}),m(e,{type:`button`,variant:`outline`,className:`w-full`,disabled:x,onClick:()=>v(!1),children:`Đóng hộp thoại`})]}),b&&h(`div`,{className:`flex justify-center gap-1 text-muted-foreground text-sm`,children:[m(`span`,{children:`Đã có tài khoản?`}),m(e,{variant:`link`,size:`sm`,className:`h-auto p-0`,onClick:b,children:`Đăng nhập`})]})]})})};export{v as t};
|
|
2
|
+
//# sourceMappingURL=RegisterPage-DluyCA1L.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisterPage-DluyCA1L.mjs","names":[],"sources":["../packages/components/pages/RegisterPage.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 RegisterPageProps {\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 registration credentials */\n onRegister: (email: string, password: string) => Promise<void> | void;\n /** Called when the \"Đăng nhập\" link is clicked */\n onLogin?: () => 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 ký\" */\n title?: string;\n /** Dialog subheading. Default: \"Tạo tài khoản mới để bắt đầu\" */\n subtitle?: string;\n}\n\nconst registerSchema = z\n .object({\n email: z.string().min(1, 'Vui lòng nhập email').email('Email không hợp lệ'),\n password: z\n .string()\n .min(8, 'Mật khẩu phải có ít nhất 8 ký tự')\n .max(50, 'Mật khẩu không được vượt quá 50 ký tự')\n .regex(/[A-Z]/, 'Phải có ít nhất một chữ hoa')\n .regex(/[a-z]/, 'Phải có ít nhất một chữ thường')\n .regex(/[0-9]/, 'Phải có ít nhất một chữ số')\n .regex(/[^A-Za-z0-9]/, 'Phải có ít nhất một ký tự đặc biệt'),\n confirmPassword: z.string().min(1, 'Vui lòng xác nhận mật khẩu'),\n })\n .refine(data => data.password === data.confirmPassword, {\n message: 'Mật khẩu xác nhận không khớp',\n path: ['confirmPassword'],\n });\n\n/**\n * Modal registration dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { RegisterPage } from '@customafk/lunas-ui/pages/RegisterPage';\n *\n * <RegisterPage\n * open={open}\n * onOpenChange={setOpen}\n * onRegister={async (email, password) => {\n * await authService.register(email, password);\n * setOpen(false);\n * }}\n * onLogin={() => { setOpen(false); setLoginOpen(true); }}\n * />\n * ```\n */\nexport const RegisterPage = ({\n open,\n onOpenChange,\n onRegister,\n onLogin,\n isLoading = false,\n errorMessage,\n title = 'Đăng ký',\n subtitle = 'Tạo tài khoản mới để bắt đầu',\n}: RegisterPageProps) => {\n const emailId = useId();\n const passwordId = useId();\n const confirmPasswordId = useId();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [fieldErrors, setFieldErrors] = useState<{\n email?: string;\n password?: string;\n confirmPassword?: string;\n }>({});\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const result = registerSchema.safeParse({ email, password, confirmPassword });\n if (!result.success) {\n const errors = result.error.flatten().fieldErrors;\n setFieldErrors({\n email: errors.email?.[0],\n password: errors.password?.[0],\n confirmPassword: errors.confirmPassword?.[0],\n });\n return;\n }\n setFieldErrors({});\n await onRegister(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 <Label htmlFor={passwordId}>Mật khẩu</Label>\n <div className=\"relative\">\n <Input\n id={passwordId}\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"new-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 ? (\n <p className=\"text-destructive text-xs\">{fieldErrors.password}</p>\n ) : (\n <p className=\"text-muted-foreground text-xs\">Tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.</p>\n )}\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={confirmPasswordId}>Xác nhận mật khẩu</Label>\n <div className=\"relative\">\n <Input\n id={confirmPasswordId}\n type={showConfirmPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n placeholder=\"••••••••\"\n value={confirmPassword}\n onChange={e => setConfirmPassword(e.target.value)}\n aria-invalid={!!fieldErrors.confirmPassword}\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 setShowConfirmPassword(v => !v);\n }}\n aria-label={showConfirmPassword ? 'Ẩn mật khẩu' : 'Hiện mật khẩu'}\n >\n {showConfirmPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {fieldErrors.confirmPassword && <p className=\"text-destructive text-xs\">{fieldErrors.confirmPassword}</p>}\n </div>\n\n <Button type=\"submit\" isLoading={isLoading} className=\"w-full\">\n Đăng ký\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 {onLogin && (\n <div className=\"flex justify-center gap-1 text-muted-foreground text-sm\">\n <span>Đã có tài khoản?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" onClick={onLogin}>\n Đăng nhập\n </Button>\n </div>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as react8 from "react";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/pages/RegisterPage.d.ts
|
|
4
|
+
interface RegisterPageProps {
|
|
5
|
+
/** Controls whether the dialog is open */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** Called when the dialog open state changes */
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** Called when the user submits registration credentials */
|
|
10
|
+
onRegister: (email: string, password: string) => Promise<void> | void;
|
|
11
|
+
/** Called when the "Đăng nhập" link is clicked */
|
|
12
|
+
onLogin?: () => void;
|
|
13
|
+
/** Disables the form and shows a spinner on the submit button */
|
|
14
|
+
isLoading?: boolean;
|
|
15
|
+
/** Server-side error message rendered in a destructive Alert */
|
|
16
|
+
errorMessage?: string;
|
|
17
|
+
/** Dialog heading. Default: "Đăng ký" */
|
|
18
|
+
title?: string;
|
|
19
|
+
/** Dialog subheading. Default: "Tạo tài khoản mới để bắt đầu" */
|
|
20
|
+
subtitle?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Modal registration dialog for the client authentication flow.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* import { RegisterPage } from '@customafk/lunas-ui/pages/RegisterPage';
|
|
28
|
+
*
|
|
29
|
+
* <RegisterPage
|
|
30
|
+
* open={open}
|
|
31
|
+
* onOpenChange={setOpen}
|
|
32
|
+
* onRegister={async (email, password) => {
|
|
33
|
+
* await authService.register(email, password);
|
|
34
|
+
* setOpen(false);
|
|
35
|
+
* }}
|
|
36
|
+
* onLogin={() => { setOpen(false); setLoginOpen(true); }}
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare const RegisterPage: ({
|
|
41
|
+
open,
|
|
42
|
+
onOpenChange,
|
|
43
|
+
onRegister,
|
|
44
|
+
onLogin,
|
|
45
|
+
isLoading,
|
|
46
|
+
errorMessage,
|
|
47
|
+
title,
|
|
48
|
+
subtitle
|
|
49
|
+
}: RegisterPageProps) => react8.JSX.Element;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { RegisterPageProps as n, RegisterPage as t };
|
|
52
|
+
//# sourceMappingURL=RegisterPage-qEpX0gUP.d.cts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./button-CCVJTHBI.mjs";import{i as t,l as n,o as r,r as i,t as a}from"./dialog--BvCecaD.mjs";import{n as o,t as s}from"./alert-BEcGZfPW.mjs";import{i as c,n as l,r as u,t as d}from"./input-otp-C9SpN7qa.mjs";import{useCallback as f,useEffect as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";const y=({open:y,onOpenChange:b,email:x,onVerify:S,onResend:C,onBack:w,isLoading:T=!1,errorMessage:E,title:D=`Xác thực email`,subtitle:O,resendCooldownSeconds:k=60})=>{let[A,j]=h(``),[M,N]=h(k),P=m(null),F=f(e=>{P.current&&clearInterval(P.current),N(e),P.current=setInterval(()=>{N(e=>e<=1?(P.current&&clearInterval(P.current),0):e-1)},1e3)},[]);p(()=>(y&&k>0&&F(k),()=>{P.current&&clearInterval(P.current)}),[y,k,F]);let I=f(async()=>{F(k),await C(x)},[x,C,k,F]),L=f(async()=>{A.length<6||await S(x,A)},[x,A,S]);return _(a,{open:y,onOpenChange:b,children:v(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:[v(r,{children:[_(n,{children:D}),_(t,{children:O??v(g,{children:[`Nhập mã OTP đã được gửi tới `,_(`span`,{className:`font-medium text-foreground`,children:x}),`. Mã có hiệu lực trong 10 phút.`]})})]}),v(`div`,{className:`flex flex-col items-center gap-4`,children:[E&&_(s,{variant:`destructive`,className:`w-full`,children:_(o,{children:E})}),v(d,{maxLength:6,value:A,onChange:j,onComplete:L,disabled:T,children:[v(l,{children:[_(c,{index:0}),_(c,{index:1}),_(c,{index:2})]}),_(u,{}),v(l,{children:[_(c,{index:3}),_(c,{index:4}),_(c,{index:5})]})]}),_(e,{type:`button`,isLoading:T,disabled:A.length<6,className:`w-full`,onClick:L,children:`Xác thực`}),v(`div`,{className:`flex items-center gap-1 text-muted-foreground text-sm`,children:[_(`span`,{children:`Chưa nhận được mã?`}),_(e,{variant:`link`,size:`sm`,className:`h-auto p-0`,disabled:M>0||T,onClick:I,children:M>0?`Gửi lại (${M}s)`:`Gửi lại`})]}),w&&_(e,{variant:`ghost`,size:`sm`,className:`w-full`,onClick:w,children:`Quay lại`})]})]})})};export{y as t};
|
|
2
|
+
//# sourceMappingURL=VerifyEmailPage-D3U6V5IR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifyEmailPage-D3U6V5IR.mjs","names":[],"sources":["../packages/components/pages/VerifyEmailPage.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from '../ui/input-otp';\n\nexport interface VerifyEmailPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** The email address the OTP was dispatched to — displayed as context and passed to callbacks */\n email: string;\n /** Called when the user submits the OTP code */\n onVerify: (email: string, otp: string) => Promise<void> | void;\n /** Called when the user requests a new OTP; triggers a fresh cooldown */\n onResend: (email: string) => Promise<void> | void;\n /** Called when the back link is clicked */\n onBack?: () => 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: \"Xác thực email\" */\n title?: string;\n /** Dialog subheading. Default: built from the email prop */\n subtitle?: string;\n /** Seconds before the resend button becomes available. Default: 60 */\n resendCooldownSeconds?: number;\n}\n\n/**\n * Modal email OTP verification dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { VerifyEmailPage } from '@customafk/lunas-ui/pages/VerifyEmailPage';\n *\n * <VerifyEmailPage\n * open={open}\n * onOpenChange={setOpen}\n * email=\"user@example.com\"\n * onVerify={async (email, otp) => {\n * await authService.verifyEmail(email, otp);\n * setOpen(false);\n * }}\n * onResend={async (email) => {\n * await authService.resendVerification(email);\n * }}\n * />\n * ```\n */\nexport const VerifyEmailPage = ({\n open,\n onOpenChange,\n email,\n onVerify,\n onResend,\n onBack,\n isLoading = false,\n errorMessage,\n title = 'Xác thực email',\n subtitle,\n resendCooldownSeconds = 60,\n}: VerifyEmailPageProps) => {\n const [otp, setOtp] = useState('');\n const [countdown, setCountdown] = useState(resendCooldownSeconds);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const startCountdown = useCallback((seconds: number) => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n setCountdown(seconds);\n intervalRef.current = setInterval(() => {\n setCountdown(prev => {\n if (prev <= 1) {\n if (intervalRef.current) clearInterval(intervalRef.current);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n }, []);\n\n useEffect(() => {\n if (open && resendCooldownSeconds > 0) startCountdown(resendCooldownSeconds);\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [open, resendCooldownSeconds, startCountdown]);\n\n const handleResend = useCallback(async () => {\n startCountdown(resendCooldownSeconds);\n await onResend(email);\n }, [email, onResend, resendCooldownSeconds, startCountdown]);\n\n const handleVerify = useCallback(async () => {\n if (otp.length < 6) return;\n await onVerify(email, otp);\n }, [email, otp, onVerify]);\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>\n {subtitle ?? (\n <>\n Nhập mã OTP đã được gửi tới <span className=\"font-medium text-foreground\">{email}</span>. Mã có hiệu lực trong 10 phút.\n </>\n )}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"flex flex-col items-center gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\" className=\"w-full\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <InputOTP maxLength={6} value={otp} onChange={setOtp} onComplete={handleVerify} disabled={isLoading}>\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n <InputOTPSlot index={3} />\n <InputOTPSlot index={4} />\n <InputOTPSlot index={5} />\n </InputOTPGroup>\n </InputOTP>\n\n <Button type=\"button\" isLoading={isLoading} disabled={otp.length < 6} className=\"w-full\" onClick={handleVerify}>\n Xác thực\n </Button>\n\n <div className=\"flex items-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa nhận được mã?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" disabled={countdown > 0 || isLoading} onClick={handleResend}>\n {countdown > 0 ? `Gửi lại (${countdown}s)` : 'Gửi lại'}\n </Button>\n </div>\n\n {onBack && (\n <Button variant=\"ghost\" size=\"sm\" className=\"w-full\" onClick={onBack}>\n Quay lại\n </Button>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"+WAuDA,MAAa,GAAmB,CAC9B,OACA,eACA,QACA,WACA,WACA,SACA,YAAY,GACZ,eACA,QAAQ,iBACR,WACA,wBAAwB,MACE,CAC1B,GAAM,CAAC,EAAK,GAAU,EAAS,GAAG,CAC5B,CAAC,EAAW,GAAgB,EAAS,EAAsB,CAC3D,EAAc,EAA8C,KAAK,CAEjE,EAAiB,EAAa,GAAoB,CAClD,EAAY,SAAS,cAAc,EAAY,QAAQ,CAC3D,EAAa,EAAQ,CACrB,EAAY,QAAU,gBAAkB,CACtC,EAAa,GACP,GAAQ,GACN,EAAY,SAAS,cAAc,EAAY,QAAQ,CACpD,GAEF,EAAO,EACd,EACD,IAAK,EACP,EAAE,CAAC,CAEN,OACM,GAAQ,EAAwB,GAAG,EAAe,EAAsB,KAC/D,CACP,EAAY,SAAS,cAAc,EAAY,QAAQ,GAE5D,CAAC,EAAM,EAAuB,EAAe,CAAC,CAEjD,IAAM,EAAe,EAAY,SAAY,CAC3C,EAAe,EAAsB,CACrC,MAAM,EAAS,EAAM,EACpB,CAAC,EAAO,EAAU,EAAuB,EAAe,CAAC,CAEtD,EAAe,EAAY,SAAY,CACvC,EAAI,OAAS,GACjB,MAAM,EAAS,EAAO,EAAI,EACzB,CAAC,EAAO,EAAK,EAAS,CAAC,CAE1B,OACE,EAAC,EAAA,CAAa,OAAoB,wBAChC,EAAC,EAAA,CAAc,UAAU,iVACvB,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAA,SAAa,EAAA,CAAoB,CAClC,EAAC,EAAA,CAAA,SACE,GACC,EAAA,EAAA,CAAA,SAAA,CAAE,+BAC4B,EAAC,OAAA,CAAK,UAAU,uCAA+B,GAAa,qCACvF,CAAA,CAEa,CAAA,CAAA,CACP,CAEf,EAAC,MAAA,CAAI,UAAU,6CACZ,GACC,EAAC,EAAA,CAAM,QAAQ,cAAc,UAAU,kBACrC,EAAC,EAAA,CAAA,SAAkB,EAAA,CAAgC,EAC7C,CAGV,EAAC,EAAA,CAAS,UAAW,EAAG,MAAO,EAAK,SAAU,EAAQ,WAAY,EAAc,SAAU,YACxF,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,CAC1B,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,CAC1B,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,GACZ,CAChB,EAAC,EAAA,EAAA,CAAoB,CACrB,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,CAC1B,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,CAC1B,EAAC,EAAA,CAAa,MAAO,EAAA,CAAK,GACZ,GACP,CAEX,EAAC,EAAA,CAAO,KAAK,SAAoB,YAAW,SAAU,EAAI,OAAS,EAAG,UAAU,SAAS,QAAS,WAAc,YAEvG,CAET,EAAC,MAAA,CAAI,UAAU,kEACb,EAAC,OAAA,CAAA,SAAK,qBAAA,CAAyB,CAC/B,EAAC,EAAA,CAAO,QAAQ,OAAO,KAAK,KAAK,UAAU,aAAa,SAAU,EAAY,GAAK,EAAW,QAAS,WACpG,EAAY,EAAI,YAAY,EAAU,IAAM,WACtC,CAAA,EACL,CAEL,GACC,EAAC,EAAA,CAAO,QAAQ,QAAQ,KAAK,KAAK,UAAU,SAAS,QAAS,WAAQ,YAE7D,GAEP,CAAA,EACQ,EACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./button-C--DAN1D.cjs`),n=require(`./dialog-DNEUhYSv.cjs`),r=require(`./alert-DDdHIRib.cjs`),i=require(`./input-otp-phGylVzo.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);const s=({open:e,onOpenChange:s,email:c,onVerify:l,onResend:u,onBack:d,isLoading:f=!1,errorMessage:p,title:m=`Xác thực email`,subtitle:h,resendCooldownSeconds:g=60})=>{let[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(g),x=(0,a.useRef)(null),S=(0,a.useCallback)(e=>{x.current&&clearInterval(x.current),b(e),x.current=setInterval(()=>{b(e=>e<=1?(x.current&&clearInterval(x.current),0):e-1)},1e3)},[]);(0,a.useEffect)(()=>(e&&g>0&&S(g),()=>{x.current&&clearInterval(x.current)}),[e,g,S]);let C=(0,a.useCallback)(async()=>{S(g),await u(c)},[c,u,g,S]),w=(0,a.useCallback)(async()=>{_.length<6||await l(c,_)},[c,_,l]);return(0,o.jsx)(n.t,{open:e,onOpenChange:s,children:(0,o.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,o.jsxs)(n.o,{children:[(0,o.jsx)(n.l,{children:m}),(0,o.jsx)(n.i,{children:h??(0,o.jsxs)(o.Fragment,{children:[`Nhập mã OTP đã được gửi tới `,(0,o.jsx)(`span`,{className:`font-medium text-foreground`,children:c}),`. Mã có hiệu lực trong 10 phút.`]})})]}),(0,o.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[p&&(0,o.jsx)(r.t,{variant:`destructive`,className:`w-full`,children:(0,o.jsx)(r.n,{children:p})}),(0,o.jsxs)(i.t,{maxLength:6,value:_,onChange:v,onComplete:w,disabled:f,children:[(0,o.jsxs)(i.n,{children:[(0,o.jsx)(i.i,{index:0}),(0,o.jsx)(i.i,{index:1}),(0,o.jsx)(i.i,{index:2})]}),(0,o.jsx)(i.r,{}),(0,o.jsxs)(i.n,{children:[(0,o.jsx)(i.i,{index:3}),(0,o.jsx)(i.i,{index:4}),(0,o.jsx)(i.i,{index:5})]})]}),(0,o.jsx)(t.t,{type:`button`,isLoading:f,disabled:_.length<6,className:`w-full`,onClick:w,children:`Xác thực`}),(0,o.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground text-sm`,children:[(0,o.jsx)(`span`,{children:`Chưa nhận được mã?`}),(0,o.jsx)(t.t,{variant:`link`,size:`sm`,className:`h-auto p-0`,disabled:y>0||f,onClick:C,children:y>0?`Gửi lại (${y}s)`:`Gửi lại`})]}),d&&(0,o.jsx)(t.t,{variant:`ghost`,size:`sm`,className:`w-full`,onClick:d,children:`Quay lại`})]})]})})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
|
2
|
+
//# sourceMappingURL=VerifyEmailPage-DRQiyUqo.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifyEmailPage-DRQiyUqo.cjs","names":["Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Alert","AlertDescription","InputOTP","InputOTPGroup","InputOTPSlot","InputOTPSeparator","Button"],"sources":["../packages/components/pages/VerifyEmailPage.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Alert, AlertDescription } from '../ui/alert';\nimport { Button } from '../ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/dialog';\nimport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from '../ui/input-otp';\n\nexport interface VerifyEmailPageProps {\n /** Controls whether the dialog is open */\n open: boolean;\n /** Called when the dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** The email address the OTP was dispatched to — displayed as context and passed to callbacks */\n email: string;\n /** Called when the user submits the OTP code */\n onVerify: (email: string, otp: string) => Promise<void> | void;\n /** Called when the user requests a new OTP; triggers a fresh cooldown */\n onResend: (email: string) => Promise<void> | void;\n /** Called when the back link is clicked */\n onBack?: () => 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: \"Xác thực email\" */\n title?: string;\n /** Dialog subheading. Default: built from the email prop */\n subtitle?: string;\n /** Seconds before the resend button becomes available. Default: 60 */\n resendCooldownSeconds?: number;\n}\n\n/**\n * Modal email OTP verification dialog for the client authentication flow.\n *\n * @example\n * ```tsx\n * import { VerifyEmailPage } from '@customafk/lunas-ui/pages/VerifyEmailPage';\n *\n * <VerifyEmailPage\n * open={open}\n * onOpenChange={setOpen}\n * email=\"user@example.com\"\n * onVerify={async (email, otp) => {\n * await authService.verifyEmail(email, otp);\n * setOpen(false);\n * }}\n * onResend={async (email) => {\n * await authService.resendVerification(email);\n * }}\n * />\n * ```\n */\nexport const VerifyEmailPage = ({\n open,\n onOpenChange,\n email,\n onVerify,\n onResend,\n onBack,\n isLoading = false,\n errorMessage,\n title = 'Xác thực email',\n subtitle,\n resendCooldownSeconds = 60,\n}: VerifyEmailPageProps) => {\n const [otp, setOtp] = useState('');\n const [countdown, setCountdown] = useState(resendCooldownSeconds);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const startCountdown = useCallback((seconds: number) => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n setCountdown(seconds);\n intervalRef.current = setInterval(() => {\n setCountdown(prev => {\n if (prev <= 1) {\n if (intervalRef.current) clearInterval(intervalRef.current);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n }, []);\n\n useEffect(() => {\n if (open && resendCooldownSeconds > 0) startCountdown(resendCooldownSeconds);\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [open, resendCooldownSeconds, startCountdown]);\n\n const handleResend = useCallback(async () => {\n startCountdown(resendCooldownSeconds);\n await onResend(email);\n }, [email, onResend, resendCooldownSeconds, startCountdown]);\n\n const handleVerify = useCallback(async () => {\n if (otp.length < 6) return;\n await onVerify(email, otp);\n }, [email, otp, onVerify]);\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>\n {subtitle ?? (\n <>\n Nhập mã OTP đã được gửi tới <span className=\"font-medium text-foreground\">{email}</span>. Mã có hiệu lực trong 10 phút.\n </>\n )}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"flex flex-col items-center gap-4\">\n {errorMessage && (\n <Alert variant=\"destructive\" className=\"w-full\">\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n )}\n\n <InputOTP maxLength={6} value={otp} onChange={setOtp} onComplete={handleVerify} disabled={isLoading}>\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n <InputOTPSlot index={3} />\n <InputOTPSlot index={4} />\n <InputOTPSlot index={5} />\n </InputOTPGroup>\n </InputOTP>\n\n <Button type=\"button\" isLoading={isLoading} disabled={otp.length < 6} className=\"w-full\" onClick={handleVerify}>\n Xác thực\n </Button>\n\n <div className=\"flex items-center gap-1 text-muted-foreground text-sm\">\n <span>Chưa nhận được mã?</span>\n <Button variant=\"link\" size=\"sm\" className=\"h-auto p-0\" disabled={countdown > 0 || isLoading} onClick={handleResend}>\n {countdown > 0 ? `Gửi lại (${countdown}s)` : 'Gửi lại'}\n </Button>\n </div>\n\n {onBack && (\n <Button variant=\"ghost\" size=\"sm\" className=\"w-full\" onClick={onBack}>\n Quay lại\n </Button>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as react33 from "react";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/pages/VerifyEmailPage.d.ts
|
|
4
|
+
interface VerifyEmailPageProps {
|
|
5
|
+
/** Controls whether the dialog is open */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** Called when the dialog open state changes */
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** The email address the OTP was dispatched to — displayed as context and passed to callbacks */
|
|
10
|
+
email: string;
|
|
11
|
+
/** Called when the user submits the OTP code */
|
|
12
|
+
onVerify: (email: string, otp: string) => Promise<void> | void;
|
|
13
|
+
/** Called when the user requests a new OTP; triggers a fresh cooldown */
|
|
14
|
+
onResend: (email: string) => Promise<void> | void;
|
|
15
|
+
/** Called when the back link is clicked */
|
|
16
|
+
onBack?: () => void;
|
|
17
|
+
/** Disables the form and shows a spinner on the submit button */
|
|
18
|
+
isLoading?: boolean;
|
|
19
|
+
/** Server-side error message rendered in a destructive Alert */
|
|
20
|
+
errorMessage?: string;
|
|
21
|
+
/** Dialog heading. Default: "Xác thực email" */
|
|
22
|
+
title?: string;
|
|
23
|
+
/** Dialog subheading. Default: built from the email prop */
|
|
24
|
+
subtitle?: string;
|
|
25
|
+
/** Seconds before the resend button becomes available. Default: 60 */
|
|
26
|
+
resendCooldownSeconds?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Modal email OTP verification dialog for the client authentication flow.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* import { VerifyEmailPage } from '@customafk/lunas-ui/pages/VerifyEmailPage';
|
|
34
|
+
*
|
|
35
|
+
* <VerifyEmailPage
|
|
36
|
+
* open={open}
|
|
37
|
+
* onOpenChange={setOpen}
|
|
38
|
+
* email="user@example.com"
|
|
39
|
+
* onVerify={async (email, otp) => {
|
|
40
|
+
* await authService.verifyEmail(email, otp);
|
|
41
|
+
* setOpen(false);
|
|
42
|
+
* }}
|
|
43
|
+
* onResend={async (email) => {
|
|
44
|
+
* await authService.resendVerification(email);
|
|
45
|
+
* }}
|
|
46
|
+
* />
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare const VerifyEmailPage: ({
|
|
50
|
+
open,
|
|
51
|
+
onOpenChange,
|
|
52
|
+
email,
|
|
53
|
+
onVerify,
|
|
54
|
+
onResend,
|
|
55
|
+
onBack,
|
|
56
|
+
isLoading,
|
|
57
|
+
errorMessage,
|
|
58
|
+
title,
|
|
59
|
+
subtitle,
|
|
60
|
+
resendCooldownSeconds
|
|
61
|
+
}: VerifyEmailPageProps) => react33.JSX.Element;
|
|
62
|
+
//#endregion
|
|
63
|
+
export { VerifyEmailPageProps as n, VerifyEmailPage as t };
|
|
64
|
+
//# sourceMappingURL=VerifyEmailPage-Dd59Girn.d.cts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as react134 from "react";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/pages/VerifyEmailPage.d.ts
|
|
4
|
+
interface VerifyEmailPageProps {
|
|
5
|
+
/** Controls whether the dialog is open */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** Called when the dialog open state changes */
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** The email address the OTP was dispatched to — displayed as context and passed to callbacks */
|
|
10
|
+
email: string;
|
|
11
|
+
/** Called when the user submits the OTP code */
|
|
12
|
+
onVerify: (email: string, otp: string) => Promise<void> | void;
|
|
13
|
+
/** Called when the user requests a new OTP; triggers a fresh cooldown */
|
|
14
|
+
onResend: (email: string) => Promise<void> | void;
|
|
15
|
+
/** Called when the back link is clicked */
|
|
16
|
+
onBack?: () => void;
|
|
17
|
+
/** Disables the form and shows a spinner on the submit button */
|
|
18
|
+
isLoading?: boolean;
|
|
19
|
+
/** Server-side error message rendered in a destructive Alert */
|
|
20
|
+
errorMessage?: string;
|
|
21
|
+
/** Dialog heading. Default: "Xác thực email" */
|
|
22
|
+
title?: string;
|
|
23
|
+
/** Dialog subheading. Default: built from the email prop */
|
|
24
|
+
subtitle?: string;
|
|
25
|
+
/** Seconds before the resend button becomes available. Default: 60 */
|
|
26
|
+
resendCooldownSeconds?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Modal email OTP verification dialog for the client authentication flow.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* import { VerifyEmailPage } from '@customafk/lunas-ui/pages/VerifyEmailPage';
|
|
34
|
+
*
|
|
35
|
+
* <VerifyEmailPage
|
|
36
|
+
* open={open}
|
|
37
|
+
* onOpenChange={setOpen}
|
|
38
|
+
* email="user@example.com"
|
|
39
|
+
* onVerify={async (email, otp) => {
|
|
40
|
+
* await authService.verifyEmail(email, otp);
|
|
41
|
+
* setOpen(false);
|
|
42
|
+
* }}
|
|
43
|
+
* onResend={async (email) => {
|
|
44
|
+
* await authService.resendVerification(email);
|
|
45
|
+
* }}
|
|
46
|
+
* />
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare const VerifyEmailPage: ({
|
|
50
|
+
open,
|
|
51
|
+
onOpenChange,
|
|
52
|
+
email,
|
|
53
|
+
onVerify,
|
|
54
|
+
onResend,
|
|
55
|
+
onBack,
|
|
56
|
+
isLoading,
|
|
57
|
+
errorMessage,
|
|
58
|
+
title,
|
|
59
|
+
subtitle,
|
|
60
|
+
resendCooldownSeconds
|
|
61
|
+
}: VerifyEmailPageProps) => react134.JSX.Element;
|
|
62
|
+
//#endregion
|
|
63
|
+
export { VerifyEmailPageProps as n, VerifyEmailPage as t };
|
|
64
|
+
//# sourceMappingURL=VerifyEmailPage-ZaRE0r8m.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./button-CCVJTHBI.mjs";import{t}from"./paragraph-DYLaQtTV.mjs";import{PlusIcon as n}from"lucide-react";import{jsx as r,jsxs as i}from"react/jsx-runtime";const a=({onClick:a=()=>{}})=>i(e,{"aria-label":`Tạo mới`,variant:`outline`,color:`muted`,className:`outline-border-weak max-sm:aspect-square max-sm:size-9 max-sm:p-0`,onClick:a,children:[r(n,{className:`opacity-60 sm:-ms-1`,size:16,"aria-hidden":`true`}),r(t,{variant:`sm`,className:`max-sm:sr-only`,children:`Create`})]});export{a as t};
|
|
2
|
+
//# sourceMappingURL=add-new-B35fn_Bz.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-new-B35fn_Bz.mjs","names":["AddNewBtn: React.FC<React.PropsWithChildren<Props>>"],"sources":["../packages/components/ui/buttons/add-new.tsx"],"sourcesContent":["import { PlusIcon } from 'lucide-react';\n\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { Button } from '../button';\n\ntype Props = {\n /** Callback invoked when the button is clicked. Defaults to a no-op. */\n onClick?: () => void;\n};\n\n/**\n * A toolbar button that triggers a \"create new\" action, displaying a plus icon alongside a \"Create\" label that is hidden on small screens.\n *\n * @example\n * import { AddNewBtn } from '@customafk/lunas-ui/ui/buttons/add-new';\n *\n * <AddNewBtn onClick={() => setOpen(true)} />\n */\nexport const AddNewBtn: React.FC<React.PropsWithChildren<Props>> = ({ onClick = () => {} }) => {\n return (\n <Button\n aria-label=\"Tạo mới\"\n variant=\"outline\"\n color=\"muted\"\n className=\"outline-border-weak max-sm:aspect-square max-sm:size-9 max-sm:p-0\"\n onClick={onClick}\n >\n <PlusIcon className=\"opacity-60 sm:-ms-1\" size={16} aria-hidden=\"true\" />\n <Paragraph variant=\"sm\" className=\"max-sm:sr-only\">\n Create\n </Paragraph>\n </Button>\n );\n};\n"],"mappings":"4KAmBA,MAAaA,GAAuD,CAAE,cAAgB,MAElF,EAAC,EAAA,CACC,aAAW,UACX,QAAQ,UACR,MAAM,QACN,UAAU,oEACD,oBAET,EAAC,EAAA,CAAS,UAAU,sBAAsB,KAAM,GAAI,cAAY,QAAS,CACzE,EAAC,EAAA,CAAU,QAAQ,KAAK,UAAU,0BAAiB,UAEvC,CAAA,EACL"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region packages/components/ui/buttons/add-new.d.ts
|
|
2
|
+
type Props = {
|
|
3
|
+
/** Callback invoked when the button is clicked. Defaults to a no-op. */
|
|
4
|
+
onClick?: () => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A toolbar button that triggers a "create new" action, displaying a plus icon alongside a "Create" label that is hidden on small screens.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { AddNewBtn } from '@customafk/lunas-ui/ui/buttons/add-new';
|
|
11
|
+
*
|
|
12
|
+
* <AddNewBtn onClick={() => setOpen(true)} />
|
|
13
|
+
*/
|
|
14
|
+
declare const AddNewBtn: React.FC<React.PropsWithChildren<Props>>;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AddNewBtn as t };
|
|
17
|
+
//# sourceMappingURL=add-new-DqRZeMNy.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./button-C--DAN1D.cjs`),n=require(`./paragraph-DvTZvbzw.cjs`);let r=require(`lucide-react`),i=require(`react/jsx-runtime`);const a=({onClick:e=()=>{}})=>(0,i.jsxs)(t.t,{"aria-label":`Tạo mới`,variant:`outline`,color:`muted`,className:`outline-border-weak max-sm:aspect-square max-sm:size-9 max-sm:p-0`,onClick:e,children:[(0,i.jsx)(r.PlusIcon,{className:`opacity-60 sm:-ms-1`,size:16,"aria-hidden":`true`}),(0,i.jsx)(n.t,{variant:`sm`,className:`max-sm:sr-only`,children:`Create`})]});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
2
|
+
//# sourceMappingURL=add-new-deaz-L5t.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-new-deaz-L5t.cjs","names":["AddNewBtn: React.FC<React.PropsWithChildren<Props>>","Button","PlusIcon","Paragraph"],"sources":["../packages/components/ui/buttons/add-new.tsx"],"sourcesContent":["import { PlusIcon } from 'lucide-react';\n\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { Button } from '../button';\n\ntype Props = {\n /** Callback invoked when the button is clicked. Defaults to a no-op. */\n onClick?: () => void;\n};\n\n/**\n * A toolbar button that triggers a \"create new\" action, displaying a plus icon alongside a \"Create\" label that is hidden on small screens.\n *\n * @example\n * import { AddNewBtn } from '@customafk/lunas-ui/ui/buttons/add-new';\n *\n * <AddNewBtn onClick={() => setOpen(true)} />\n */\nexport const AddNewBtn: React.FC<React.PropsWithChildren<Props>> = ({ onClick = () => {} }) => {\n return (\n <Button\n aria-label=\"Tạo mới\"\n variant=\"outline\"\n color=\"muted\"\n className=\"outline-border-weak max-sm:aspect-square max-sm:size-9 max-sm:p-0\"\n onClick={onClick}\n >\n <PlusIcon className=\"opacity-60 sm:-ms-1\" size={16} aria-hidden=\"true\" />\n <Paragraph variant=\"sm\" className=\"max-sm:sr-only\">\n Create\n </Paragraph>\n </Button>\n );\n};\n"],"mappings":"8KAmBA,MAAaA,GAAuD,CAAE,cAAgB,OAElF,EAAA,EAAA,MAACC,EAAAA,EAAAA,CACC,aAAW,UACX,QAAQ,UACR,MAAM,QACN,UAAU,oEACD,qBAET,EAAA,EAAA,KAACC,EAAAA,SAAAA,CAAS,UAAU,sBAAsB,KAAM,GAAI,cAAY,QAAS,EACzE,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAU,QAAQ,KAAK,UAAU,0BAAiB,UAEvC,CAAA,EACL"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region packages/components/ui/buttons/add-new.d.ts
|
|
2
|
+
type Props = {
|
|
3
|
+
/** Callback invoked when the button is clicked. Defaults to a no-op. */
|
|
4
|
+
onClick?: () => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A toolbar button that triggers a "create new" action, displaying a plus icon alongside a "Create" label that is hidden on small screens.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { AddNewBtn } from '@customafk/lunas-ui/ui/buttons/add-new';
|
|
11
|
+
*
|
|
12
|
+
* <AddNewBtn onClick={() => setOpen(true)} />
|
|
13
|
+
*/
|
|
14
|
+
declare const AddNewBtn: React.FC<React.PropsWithChildren<Props>>;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AddNewBtn as t };
|
|
17
|
+
//# sourceMappingURL=add-new-pqYC7xmc.d.cts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{AlertCircle as e,AlertTriangle as t,CheckCircle as n,Info as r,X as i}from"lucide-react";import{useMemo as a}from"react";import{cn as o}from"@customafk/react-toolkit/utils";import{cva as s}from"class-variance-authority";import{jsx as c,jsxs as l}from"react/jsx-runtime";const u=s([`relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm`,`grid-cols-[0_1fr]`,`has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3`,`[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,`transition-colors duration-150`],{variants:{variant:{default:`bg-card text-text-positive-strong border-border`,destructive:`bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong`,warning:`bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong`,success:`bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong`,info:`bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong`}},defaultVariants:{variant:`default`}});function d({className:s,variant:d,children:f,icon:p,dismissible:m,onDismiss:h,...g}){let _=a(()=>{if(!p)switch(d){case`destructive`:return c(e,{});case`warning`:return c(t,{});case`success`:return c(n,{});case`info`:return c(r,{});default:return null}return p},[p,d]);return l(`div`,{"data-slot":`alert`,role:`alert`,"data-variant":d,className:o(u({variant:d}),s),...g,children:[_,f,m&&c(`button`,{type:`button`,onClick:h,"aria-label":`Close alert`,className:`absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100`,"data-slot":`alert-close`,children:c(i,{size:16})})]})}function f({className:e,...t}){return c(`div`,{"data-slot":`alert-title`,className:o(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function p({className:e,...t}){return c(`div`,{"data-slot":`alert-description`,className:o(`text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}export{p as n,f as r,d as t};
|
|
2
|
+
//# sourceMappingURL=alert-BEcGZfPW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-BEcGZfPW.mjs","names":[],"sources":["../packages/components/ui/alert-variants.ts","../packages/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Alert component variants for styling using class-variance-authority\n */\nexport const alertVariants = cva(\n [\n 'relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm',\n 'grid-cols-[0_1fr]',\n 'has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3',\n '[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default: 'bg-card text-text-positive-strong border-border',\n destructive:\n 'bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong',\n warning:\n 'bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong',\n success:\n 'bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong',\n info: 'bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type AlertVariantProps = VariantProps<typeof alertVariants>;\n","'use client';\n\nimport { useMemo } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircle, AlertTriangle, CheckCircle, Info, X } from 'lucide-react';\n\nimport { type AlertVariantProps, alertVariants } from './alert-variants';\n\n/**\n * Props for the Alert component.\n */\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {\n /**\n * Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.\n */\n icon?: React.ReactNode;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback invoked when the dismiss button is clicked.\n */\n onDismiss?: () => void;\n}\n\n/**\n * Displays a contextual feedback message with optional icon, title, description, and dismiss button.\n *\n * @example\n * ```tsx\n * import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';\n *\n * <Alert variant=\"success\" dismissible onDismiss={() => setOpen(false)}>\n * <AlertTitle>Saved successfully</AlertTitle>\n * <AlertDescription>Your changes have been saved.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({ className, variant, children, icon, dismissible, onDismiss, ...props }: AlertProps) {\n // Default icons based on variant\n const defaultIcon = useMemo(() => {\n if (!icon) {\n switch (variant) {\n case 'destructive':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'success':\n return <CheckCircle />;\n case 'info':\n return <Info />;\n default:\n return null;\n }\n }\n return icon;\n }, [icon, variant]);\n\n return (\n <div data-slot=\"alert\" role=\"alert\" data-variant={variant} className={cn(alertVariants({ variant }), className)} {...props}>\n {defaultIcon}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Close alert\"\n className=\"absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100\"\n data-slot=\"alert-close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Props for the AlertTitle component.\n */\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Title text or elements to display.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the bold title line inside an Alert.\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return <div data-slot=\"alert-title\" className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)} {...props} />;\n}\n\n/**\n * Props for the AlertDescription component.\n */\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Descriptive text or elements displayed below the title.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the supporting body text inside an Alert.\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"mappings":"qRAKA,MAAa,EAAgB,EAC3B,CACE,iFACA,oBACA,qDACA,8DACA,iCACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,kDACT,YACE,6IACF,QACE,kJACF,QACE,kJACF,KAAM,mIACP,CACF,CACD,gBAAiB,CACf,QAAS,UACV,CACF,CACF,CCUD,SAAS,EAAM,CAAE,YAAW,UAAS,WAAU,OAAM,cAAa,YAAW,GAAG,GAAqB,CAEnG,IAAM,EAAc,MAAc,CAChC,GAAI,CAAC,EACH,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAgB,CAC1B,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,OACH,OAAO,EAAC,EAAA,EAAA,CAAO,CACjB,QACE,OAAO,KAGb,OAAO,GACN,CAAC,EAAM,EAAQ,CAAC,CAEnB,OACE,EAAC,MAAA,CAAI,YAAU,QAAQ,KAAK,QAAQ,eAAc,EAAS,UAAW,EAAG,EAAc,CAAE,UAAS,CAAC,CAAE,EAAU,CAAE,GAAI,YAClH,EACA,EACA,GACC,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,cACX,UAAU,4GACV,YAAU,uBAEV,EAAC,EAAA,CAAE,KAAM,GAAA,CAAM,EACR,GAEP,CAiBV,SAAS,EAAW,CAAE,YAAW,GAAG,GAA0B,CAC5D,OAAO,EAAC,MAAA,CAAI,YAAU,cAAc,UAAW,EAAG,8DAA+D,EAAU,CAAE,GAAI,GAAS,CAgB5I,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAgC,CACxE,OACE,EAAC,MAAA,CACC,YAAU,oBACV,UAAW,EAAG,mGAAoG,EAAU,CAC5H,GAAI,GACJ"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as react6 from "react";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import * as class_variance_authority_types14 from "class-variance-authority/types";
|
|
4
|
+
|
|
5
|
+
//#region packages/components/ui/alert-variants.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Alert component variants for styling using class-variance-authority
|
|
8
|
+
*/
|
|
9
|
+
declare const alertVariants: (props?: ({
|
|
10
|
+
variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
|
|
11
|
+
} & class_variance_authority_types14.ClassProp) | undefined) => string;
|
|
12
|
+
type AlertVariantProps = VariantProps<typeof alertVariants>;
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region packages/components/ui/alert.d.ts
|
|
15
|
+
/**
|
|
16
|
+
* Props for the Alert component.
|
|
17
|
+
*/
|
|
18
|
+
interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {
|
|
19
|
+
/**
|
|
20
|
+
* Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.
|
|
21
|
+
*/
|
|
22
|
+
icon?: React.ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the alert can be dismissed by the user.
|
|
25
|
+
*/
|
|
26
|
+
dismissible?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Callback invoked when the dismiss button is clicked.
|
|
29
|
+
*/
|
|
30
|
+
onDismiss?: () => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Displays a contextual feedback message with optional icon, title, description, and dismiss button.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';
|
|
38
|
+
*
|
|
39
|
+
* <Alert variant="success" dismissible onDismiss={() => setOpen(false)}>
|
|
40
|
+
* <AlertTitle>Saved successfully</AlertTitle>
|
|
41
|
+
* <AlertDescription>Your changes have been saved.</AlertDescription>
|
|
42
|
+
* </Alert>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function Alert({
|
|
46
|
+
className,
|
|
47
|
+
variant,
|
|
48
|
+
children,
|
|
49
|
+
icon,
|
|
50
|
+
dismissible,
|
|
51
|
+
onDismiss,
|
|
52
|
+
...props
|
|
53
|
+
}: AlertProps): react6.JSX.Element;
|
|
54
|
+
/**
|
|
55
|
+
* Props for the AlertTitle component.
|
|
56
|
+
*/
|
|
57
|
+
interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
58
|
+
/**
|
|
59
|
+
* Title text or elements to display.
|
|
60
|
+
*/
|
|
61
|
+
children: React.ReactNode;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Renders the bold title line inside an Alert.
|
|
65
|
+
*/
|
|
66
|
+
declare function AlertTitle({
|
|
67
|
+
className,
|
|
68
|
+
...props
|
|
69
|
+
}: AlertTitleProps): react6.JSX.Element;
|
|
70
|
+
/**
|
|
71
|
+
* Props for the AlertDescription component.
|
|
72
|
+
*/
|
|
73
|
+
interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
74
|
+
/**
|
|
75
|
+
* Descriptive text or elements displayed below the title.
|
|
76
|
+
*/
|
|
77
|
+
children: React.ReactNode;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Renders the supporting body text inside an Alert.
|
|
81
|
+
*/
|
|
82
|
+
declare function AlertDescription({
|
|
83
|
+
className,
|
|
84
|
+
...props
|
|
85
|
+
}: AlertDescriptionProps): react6.JSX.Element;
|
|
86
|
+
//#endregion
|
|
87
|
+
export { AlertTitle as a, AlertProps as i, AlertDescription as n, AlertTitleProps as o, AlertDescriptionProps as r, Alert as t };
|
|
88
|
+
//# sourceMappingURL=alert-CB79DQwK.d.mts.map
|