@customafk/lunas-ui 0.2.50 → 0.2.52
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 +103 -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
|
+
//#region packages/components/data-display/data-list.d.ts
|
|
2
|
+
type DataListProps = {
|
|
3
|
+
/** Additional CSS classes applied to the wrapping container. */
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A vertical container that stacks `DataListItem` rows with consistent spacing.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { DataList, DataListItem } from '@customafk/lunas-ui/data-display/data-list';
|
|
12
|
+
*
|
|
13
|
+
* <DataList>
|
|
14
|
+
* <DataListItem label="Status" value="Active" />
|
|
15
|
+
* <DataListItem label="Created" value="2024-01-15" />
|
|
16
|
+
* </DataList>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const DataList: React.FC<React.PropsWithChildren<DataListProps>>;
|
|
20
|
+
type DataListItemProps = {
|
|
21
|
+
/** Descriptive label shown to the left of (or above, on mobile) the value. */
|
|
22
|
+
label: string;
|
|
23
|
+
/** The value to display; accepts strings, numbers, or arbitrary React nodes. */
|
|
24
|
+
value: string | number | React.ReactNode;
|
|
25
|
+
/** Minimum width applied to the label column. Defaults to `'120px'`. */
|
|
26
|
+
minLabelWidth?: string;
|
|
27
|
+
/** Additional CSS classes applied to the row container. */
|
|
28
|
+
className?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* A single label–value row inside a `DataList`, responsive to mobile (stacks vertically) and desktop (inline) layouts.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* import { DataListItem } from '@customafk/lunas-ui/data-display/data-list';
|
|
36
|
+
*
|
|
37
|
+
* <DataListItem label="Email" value="user@example.com" />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare const DataListItem: React.FC<DataListItemProps>;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { DataListItem as n, DataList as t };
|
|
43
|
+
//# sourceMappingURL=data-list-DwyNusTs.d.cts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as e,useMemo as t}from"react";import{cn as n}from"@customafk/react-toolkit/utils";import{jsx as r}from"react/jsx-runtime";import{format as i,isThisMonth as a,isThisWeek as o,isThisYear as s,isToday as c,isTomorrow as l,isValid as u,isYesterday as d,parseISO as f}from"@customafk/react-toolkit/date-fns";const p={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 01`,`Tháng 02`,`Tháng 03`,`Tháng 04`,`Tháng 05`,`Tháng 06`,`Tháng 07`,`Tháng 08`,`Tháng 09`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},m={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`};Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3});const h=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60});Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60});const g=({date:g,format:_=`medium`,showHoliday:v=!1,showTime:y=!1,className:b=``,title:x})=>{let S=t(()=>{try{if(g instanceof Date)return u(g)?g:null;if(typeof g==`string`){let e=f(g);return u(e)?e:new Date(g)}if(typeof g==`number`){let e=new Date(g);return u(e)?e:null}return null}catch{return null}},[g]),C=e(e=>{let t=Math.floor((Date.now()-e.getTime())/1e3);return t<60?`Vừa xong`:t<3600?`${Math.floor(t/h.MINUTE)} phút trước`:t<86400?`${Math.floor(t/h.HOUR)} giờ trước`:t<604800?`${Math.floor(t/h.DAY)} ngày trước`:t<2592e3?`${Math.floor(t/h.WEEK)} tuần trước`:t<31536e3?`${Math.floor(t/h.MONTH)} tháng trước`:`${Math.floor(t/h.YEAR)} năm trước`},[]),w=e((e,t=!1)=>t?p.weekdaysShort[e.getDay()]:p.weekdays[e.getDay()],[]),T=e((e,t=!1)=>t?p.monthsShort[e.getMonth()]:p.months[e.getMonth()],[]),E=e(e=>m[i(e,`MM-dd`)]||null,[]),D=e(e=>{if(c(e))return y?`Hôm nay ${i(e,`HH:mm`)}`:`Hôm nay`;if(d(e))return y?`Hôm qua ${i(e,`HH:mm`)}`:`Hôm qua`;if(l(e))return y?`Ngày mai ${i(e,`HH:mm`)}`:`Ngày mai`;if(o(e)){let t=w(e);return y?`${t} ${i(e,`HH:mm`)}`:t}if(a(e)){let t=i(e,`d`);return y?`${t}/${i(e,`M`)} ${i(e,`HH:mm`)}`:`${t}/${i(e,`M`)}`}return s(e)?y?i(e,`d/M HH:mm`):i(e,`d/M`):y?i(e,`d/M/yyyy HH:mm`):i(e,`d/M/yyyy`)},[w,y]),O=e((e,t)=>{let n=y?i(e,`, HH:mm:ss`):``;switch(t){case`short`:return i(e,`d/M/yy`)+n;case`medium`:return i(e,`dd/MM/yyyy`)+n;case`long`:return`${i(e,`d`)} ${T(e)} ${i(e,`yyyy`)}`+n;case`full`:return`${w(e)}, ngày ${i(e,`d`)} ${T(e)} năm ${i(e,`yyyy`)}`+n;case`relative`:return C(e);case`datetime`:return i(e,`d/M/yyyy HH:mm`);case`time`:return i(e,`HH:mm`);case`smart`:return D(e);default:return i(e,`d/M/yyyy`)+n}},[D,T,w,C,y]);if(!S)return r(`span`,{className:n(`text-sm text-text-positive-subtle`,b),children:`--/--/----`});let k=O(S,_),A=v?E(S):null,j=A?`${k} (${A})`:k,M=x||i(S,`EEEE, d MMMM yyyy HH:mm:ss`);return r(`time`,{"data-slot":`date-display`,dateTime:S.toISOString(),className:n(`tabular-nums text-xs text-text-positive-weak transition-colors`,b),title:M,children:j})};export{g as t};
|
|
2
|
+
//# sourceMappingURL=date-88lk-VJF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-88lk-VJF.mjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`);let t=require(`react`),n=require(`@customafk/react-toolkit/utils`),r=require(`react/jsx-runtime`),i=require(`@customafk/react-toolkit/date-fns`);const a={weekdays:[`Chủ Nhật`,`Thứ Hai`,`Thứ Ba`,`Thứ Tư`,`Thứ Năm`,`Thứ Sáu`,`Thứ Bảy`],weekdaysShort:[`CN`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`],months:[`Tháng 01`,`Tháng 02`,`Tháng 03`,`Tháng 04`,`Tháng 05`,`Tháng 06`,`Tháng 07`,`Tháng 08`,`Tháng 09`,`Tháng 10`,`Tháng 11`,`Tháng 12`],monthsShort:[`T1`,`T2`,`T3`,`T4`,`T5`,`T6`,`T7`,`T8`,`T9`,`T10`,`T11`,`T12`]},o={"01-01":`Tết Dương lịch`,"03-08":`Quốc tế Phụ nữ`,"04-30":`Ngày Giải phóng miền Nam`,"05-01":`Quốc tế Lao động`,"09-02":`Quốc khánh`,"10-20":`Ngày Phụ nữ Việt Nam`,"11-20":`Ngày Nhà giáo Việt Nam`},s=Object.freeze({SECOND:1e3,MINUTE:60*1e3,HOUR:3600*1e3,DAY:1440*60*1e3,WEEK:10080*60*1e3,MONTH:720*60*60*1e3,YEAR:365*24*60*60*1e3}),c=Object.freeze({MINUTE:60,HOUR:3600,DAY:1440*60,WEEK:10080*60,MONTH:720*60*60,YEAR:365*24*60*60}),l=Object.freeze({HOUR:60,DAY:1440,WEEK:10080,MONTH:720*60}),u=({date:e,format:s=`medium`,showHoliday:l=!1,showTime:u=!1,className:d=``,title:f})=>{let p=(0,t.useMemo)(()=>{try{if(e instanceof Date)return(0,i.isValid)(e)?e:null;if(typeof e==`string`){let t=(0,i.parseISO)(e);return(0,i.isValid)(t)?t:new Date(e)}if(typeof e==`number`){let t=new Date(e);return(0,i.isValid)(t)?t:null}return null}catch{return null}},[e]),m=(0,t.useCallback)(e=>{let t=Math.floor((Date.now()-e.getTime())/1e3);return t<60?`Vừa xong`:t<3600?`${Math.floor(t/c.MINUTE)} phút trước`:t<86400?`${Math.floor(t/c.HOUR)} giờ trước`:t<604800?`${Math.floor(t/c.DAY)} ngày trước`:t<2592e3?`${Math.floor(t/c.WEEK)} tuần trước`:t<31536e3?`${Math.floor(t/c.MONTH)} tháng trước`:`${Math.floor(t/c.YEAR)} năm trước`},[]),h=(0,t.useCallback)((e,t=!1)=>t?a.weekdaysShort[e.getDay()]:a.weekdays[e.getDay()],[]),g=(0,t.useCallback)((e,t=!1)=>t?a.monthsShort[e.getMonth()]:a.months[e.getMonth()],[]),_=(0,t.useCallback)(e=>o[(0,i.format)(e,`MM-dd`)]||null,[]),v=(0,t.useCallback)(e=>{if((0,i.isToday)(e))return u?`Hôm nay ${(0,i.format)(e,`HH:mm`)}`:`Hôm nay`;if((0,i.isYesterday)(e))return u?`Hôm qua ${(0,i.format)(e,`HH:mm`)}`:`Hôm qua`;if((0,i.isTomorrow)(e))return u?`Ngày mai ${(0,i.format)(e,`HH:mm`)}`:`Ngày mai`;if((0,i.isThisWeek)(e)){let t=h(e);return u?`${t} ${(0,i.format)(e,`HH:mm`)}`:t}if((0,i.isThisMonth)(e)){let t=(0,i.format)(e,`d`);return u?`${t}/${(0,i.format)(e,`M`)} ${(0,i.format)(e,`HH:mm`)}`:`${t}/${(0,i.format)(e,`M`)}`}return(0,i.isThisYear)(e)?u?(0,i.format)(e,`d/M HH:mm`):(0,i.format)(e,`d/M`):u?(0,i.format)(e,`d/M/yyyy HH:mm`):(0,i.format)(e,`d/M/yyyy`)},[h,u]),y=(0,t.useCallback)((e,t)=>{let n=u?(0,i.format)(e,`, HH:mm:ss`):``;switch(t){case`short`:return(0,i.format)(e,`d/M/yy`)+n;case`medium`:return(0,i.format)(e,`dd/MM/yyyy`)+n;case`long`:return`${(0,i.format)(e,`d`)} ${g(e)} ${(0,i.format)(e,`yyyy`)}`+n;case`full`:return`${h(e)}, ngày ${(0,i.format)(e,`d`)} ${g(e)} năm ${(0,i.format)(e,`yyyy`)}`+n;case`relative`:return m(e);case`datetime`:return(0,i.format)(e,`d/M/yyyy HH:mm`);case`time`:return(0,i.format)(e,`HH:mm`);case`smart`:return v(e);default:return(0,i.format)(e,`d/M/yyyy`)+n}},[v,g,h,m,u]);if(!p)return(0,r.jsx)(`span`,{className:(0,n.cn)(`text-sm text-text-positive-subtle`,d),children:`--/--/----`});let b=y(p,s),x=l?_(p):null,S=x?`${b} (${x})`:b,C=f||(0,i.format)(p,`EEEE, d MMMM yyyy HH:mm:ss`);return(0,r.jsx)(`time`,{"data-slot":`date-display`,dateTime:p.toISOString(),className:(0,n.cn)(`tabular-nums text-xs text-text-positive-weak transition-colors`,d),title:C,children:S})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
|
|
2
|
+
//# sourceMappingURL=date-BBBx-rIM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-BBBx-rIM.cjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./date-BBBx-rIM.cjs`),n=require(`./badge-7bcsD0vA.cjs`),r=require(`./tooltip-KEOJcYl8.cjs`);let i=require(`react/jsx-runtime`);const a=({date:e})=>(0,i.jsx)(r.r,{children:(0,i.jsxs)(r.t,{children:[(0,i.jsx)(r.i,{asChild:!0,children:(0,i.jsx)(n.t,{"data-slot":`date-tooltip-trigger`,className:`h-fit`,children:(0,i.jsx)(t.t,{date:e,format:`medium`,className:`text-xs font-normal text-text-negative`})})}),(0,i.jsx)(r.n,{"data-slot":`date-tooltip-content`,children:(0,i.jsx)(t.t,{date:e,format:`full`,showTime:!0,className:`font-[Inter]! font-medium`})})]})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
2
|
+
//# sourceMappingURL=date-tooltip-BdVWCJlg.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-tooltip-BdVWCJlg.cjs","names":["DateTooltip: React.FC<DateTooltipProps>","TooltipProvider","Tooltip","TooltipTrigger","Badge","DateDisplay","TooltipContent"],"sources":["../packages/components/data-display/date-tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from './date';\n\ntype DateTooltipProps = {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n};\n\n/**\n * Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.\n *\n * @example\n * ```tsx\n * import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';\n *\n * <DateTooltip date=\"2024-03-15T14:30:00Z\" />\n * ```\n */\nexport const DateTooltip: React.FC<DateTooltipProps> = ({ date }) => {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge data-slot=\"date-tooltip-trigger\" className=\"h-fit\">\n <DateDisplay date={date} format=\"medium\" className=\"text-xs font-normal text-text-negative\" />\n </Badge>\n </TooltipTrigger>\n <TooltipContent data-slot=\"date-tooltip-content\">\n <DateDisplay date={date} format=\"full\" showTime className=\"font-[Inter]! font-medium\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n"],"mappings":"kLAsBA,MAAaA,GAA2C,CAAE,WAEtD,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAAA,UACC,EAAA,EAAA,MAACC,EAAAA,EAAAA,CAAAA,SAAAA,EACC,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAe,QAAA,aACd,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAM,YAAU,uBAAuB,UAAU,kBAChD,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAkB,OAAM,OAAO,SAAS,UAAU,0CAA2C,EACxF,EACO,EACjB,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAe,YAAU,iCACxB,EAAA,EAAA,KAACD,EAAAA,EAAAA,CAAkB,OAAM,OAAO,OAAO,SAAA,GAAS,UAAU,6BAA8B,EACzE,CAAA,CAAA,CACT,CAAA,CACM"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region packages/components/data-display/date-tooltip.d.ts
|
|
2
|
+
type DateTooltipProps = {
|
|
3
|
+
/** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
|
|
4
|
+
date: Date | string | number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';
|
|
12
|
+
*
|
|
13
|
+
* <DateTooltip date="2024-03-15T14:30:00Z" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const DateTooltip: React.FC<DateTooltipProps>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DateTooltip as t };
|
|
19
|
+
//# sourceMappingURL=date-tooltip-CoPcr3Ju.d.mts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region packages/components/data-display/date-tooltip.d.ts
|
|
2
|
+
type DateTooltipProps = {
|
|
3
|
+
/** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
|
|
4
|
+
date: Date | string | number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';
|
|
12
|
+
*
|
|
13
|
+
* <DateTooltip date="2024-03-15T14:30:00Z" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const DateTooltip: React.FC<DateTooltipProps>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DateTooltip as t };
|
|
19
|
+
//# sourceMappingURL=date-tooltip-DZ3NlfdZ.d.cts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./date-88lk-VJF.mjs";import{t}from"./badge-CG6dbI29.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-BBEcyuAE.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=({date:c})=>o(i,{children:s(a,{children:[o(n,{asChild:!0,children:o(t,{"data-slot":`date-tooltip-trigger`,className:`h-fit`,children:o(e,{date:c,format:`medium`,className:`text-xs font-normal text-text-negative`})})}),o(r,{"data-slot":`date-tooltip-content`,children:o(e,{date:c,format:`full`,showTime:!0,className:`font-[Inter]! font-medium`})})]})});export{c as t};
|
|
2
|
+
//# sourceMappingURL=date-tooltip-OPAmlgBg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-tooltip-OPAmlgBg.mjs","names":["DateTooltip: React.FC<DateTooltipProps>"],"sources":["../packages/components/data-display/date-tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { DateDisplay } from './date';\n\ntype DateTooltipProps = {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n};\n\n/**\n * Displays a date as a badge; hovering reveals a tooltip with the full Vietnamese weekday and time.\n *\n * @example\n * ```tsx\n * import { DateTooltip } from '@customafk/lunas-ui/data-display/date-tooltip';\n *\n * <DateTooltip date=\"2024-03-15T14:30:00Z\" />\n * ```\n */\nexport const DateTooltip: React.FC<DateTooltipProps> = ({ date }) => {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge data-slot=\"date-tooltip-trigger\" className=\"h-fit\">\n <DateDisplay date={date} format=\"medium\" className=\"text-xs font-normal text-text-negative\" />\n </Badge>\n </TooltipTrigger>\n <TooltipContent data-slot=\"date-tooltip-content\">\n <DateDisplay date={date} format=\"full\" showTime className=\"font-[Inter]! font-medium\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n"],"mappings":"8LAsBA,MAAaA,GAA2C,CAAE,UAEtD,EAAC,EAAA,CAAA,SACC,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,CAAe,QAAA,YACd,EAAC,EAAA,CAAM,YAAU,uBAAuB,UAAU,iBAChD,EAAC,EAAA,CAAkB,OAAM,OAAO,SAAS,UAAU,0CAA2C,EACxF,EACO,CACjB,EAAC,EAAA,CAAe,YAAU,gCACxB,EAAC,EAAA,CAAkB,OAAM,OAAO,OAAO,SAAA,GAAS,UAAU,6BAA8B,EACzE,CAAA,CAAA,CACT,CAAA,CACM"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region packages/components/data-display/date.d.ts
|
|
2
|
+
interface DateDisplayProps {
|
|
3
|
+
/** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
|
|
4
|
+
date: Date | string | number;
|
|
5
|
+
/**
|
|
6
|
+
* Controls how the date is formatted.
|
|
7
|
+
* - `'short'` — `15/03/24`
|
|
8
|
+
* - `'medium'` — `15/03/2024` (default)
|
|
9
|
+
* - `'long'` — `15 tháng 3, 2024`
|
|
10
|
+
* - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`
|
|
11
|
+
* - `'relative'` — `2 giờ trước`
|
|
12
|
+
* - `'datetime'` — `15/03/2024 14:30`
|
|
13
|
+
* - `'time'` — `14:30`
|
|
14
|
+
* - `'smart'` — auto-selects the most human-readable format based on recency
|
|
15
|
+
*/
|
|
16
|
+
format?: 'short' | 'medium' | 'long' | 'full' | 'relative' | 'datetime' | 'time' | 'smart';
|
|
17
|
+
/** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */
|
|
18
|
+
showHoliday?: boolean;
|
|
19
|
+
/** When `true`, appends the time component to the formatted output. Defaults to `false`. */
|
|
20
|
+
showTime?: boolean;
|
|
21
|
+
/** Additional CSS classes applied to the `<time>` element. */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Custom HTML `title` attribute; defaults to the full ISO datetime string. */
|
|
24
|
+
title?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* import { DateDisplay } from '@customafk/lunas-ui/data-display/date';
|
|
32
|
+
*
|
|
33
|
+
* <DateDisplay date="2024-03-15T14:30:00Z" format="medium" showTime />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
declare const DateDisplay: React.FC<DateDisplayProps>;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { DateDisplay as t };
|
|
39
|
+
//# sourceMappingURL=date-viiYGAtR.d.mts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region packages/components/data-display/date.d.ts
|
|
2
|
+
interface DateDisplayProps {
|
|
3
|
+
/** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */
|
|
4
|
+
date: Date | string | number;
|
|
5
|
+
/**
|
|
6
|
+
* Controls how the date is formatted.
|
|
7
|
+
* - `'short'` — `15/03/24`
|
|
8
|
+
* - `'medium'` — `15/03/2024` (default)
|
|
9
|
+
* - `'long'` — `15 tháng 3, 2024`
|
|
10
|
+
* - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`
|
|
11
|
+
* - `'relative'` — `2 giờ trước`
|
|
12
|
+
* - `'datetime'` — `15/03/2024 14:30`
|
|
13
|
+
* - `'time'` — `14:30`
|
|
14
|
+
* - `'smart'` — auto-selects the most human-readable format based on recency
|
|
15
|
+
*/
|
|
16
|
+
format?: 'short' | 'medium' | 'long' | 'full' | 'relative' | 'datetime' | 'time' | 'smart';
|
|
17
|
+
/** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */
|
|
18
|
+
showHoliday?: boolean;
|
|
19
|
+
/** When `true`, appends the time component to the formatted output. Defaults to `false`. */
|
|
20
|
+
showTime?: boolean;
|
|
21
|
+
/** Additional CSS classes applied to the `<time>` element. */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Custom HTML `title` attribute; defaults to the full ISO datetime string. */
|
|
24
|
+
title?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* import { DateDisplay } from '@customafk/lunas-ui/data-display/date';
|
|
32
|
+
*
|
|
33
|
+
* <DateDisplay date="2024-03-15T14:30:00Z" format="medium" showTime />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
declare const DateDisplay: React.FC<DateDisplayProps>;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { DateDisplay as t };
|
|
39
|
+
//# sourceMappingURL=date-xQIXRJ71.d.cts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./paragraph-DYLaQtTV.mjs";import{t}from"./image-CbZwvmmL.mjs";import{t as n}from"./date-88lk-VJF.mjs";import{t as r}from"./badge-CG6dbI29.mjs";import{i,n as a,r as o,t as s}from"./tooltip-BBEcyuAE.mjs";import{t as c}from"./user-DpBhqdvd.mjs";import{CheckIcon as l,CopyIcon as u,ExternalLinkIcon as d,LinkIcon as f}from"lucide-react";import{createContext as p,memo as m,useCallback as h,useContext as g,useMemo as _,useState as v}from"react";import{cn as y}from"@customafk/react-toolkit/utils";import{cva as b}from"class-variance-authority";import{jsx as x,jsxs as S}from"react/jsx-runtime";const C=()=>x(`span`,{"data-slot":`description-empty`,"aria-label":`Empty value`,className:`select-none font-medium text-sm text-text-positive-muted`,children:`—`}),w=({label:e,color:t=`secondary`,variant:n=`soft`,size:i=`sm`})=>e?x(r,{"data-slot":`description-badge`,color:t,variant:n,size:i,children:e}):x(C,{}),T=({value:e,trueLabel:t=`Yes`,falseLabel:n=`No`})=>e==null?x(C,{}):x(r,{"data-slot":`description-boolean`,variant:`soft`,color:e?`success`:`danger`,size:`sm`,children:e?t:n}),E=({value:e,truncate:t=!0})=>{let[n,r]=v(!1),i=h(async()=>{e&&(await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500))},[e]);return e?S(`button`,{type:`button`,"data-slot":`description-copy`,onClick:i,className:y(`group inline-flex max-w-full cursor-pointer items-center gap-1.5 rounded-sm border border-border-weak bg-secondary-muted px-2 py-0.5 font-mono text-xs text-text-positive-weak transition-[border-color,color,box-shadow] hover:border-border hover:text-text-positive hover:shadow-xs`,t&&`min-w-0`),children:[x(`span`,{className:y(`tabular-nums`,t&&`truncate`),children:e}),n?x(l,{size:12,className:`shrink-0 text-success`}):x(u,{size:12,className:`shrink-0 opacity-50 group-hover:opacity-100`})]}):x(C,{})},D=({date:e})=>e==null?x(C,{}):x(o,{children:S(s,{children:[x(i,{asChild:!0,children:x(n,{"data-slot":`description-date`,date:e,format:`medium`,className:`cursor-help`})}),x(a,{children:x(n,{date:e,format:`full`,showTime:!0,className:`text-xs font-medium`})})]})}),O=({images:e})=>{if(!e?.length)return x(C,{});let n=e.length===1;return x(`div`,{"data-slot":`description-images`,className:`flex flex-wrap gap-4`,children:e.map(e=>x(`div`,{className:n?`group relative size-42 overflow-hidden rounded-sm border border-border shadow-xs transition-shadow hover:shadow-card`:`group relative size-16 overflow-hidden rounded-lg border border-border shadow-xs transition-shadow hover:shadow-card`,children:x(t,{src:e.src,alt:e.alt,width:`100%`,height:`100%`,className:`transition-transform duration-200 group-hover:scale-105`})},e.id))})},k=({href:e,label:t,external:n=!0,className:r})=>e?S(`a`,{"data-slot":`description-link`,href:e,target:n?`_blank`:void 0,rel:n?`noopener noreferrer`:void 0,className:y(`inline-flex max-w-full items-center gap-1 text-sm text-primary underline decoration-dashed underline-offset-2 transition-colors hover:text-primary-strong hover:decoration-solid`,r),children:[!n&&x(f,{size:12,className:`shrink-0 opacity-70`}),x(`span`,{className:`truncate`,children:t??e}),n&&x(d,{size:12,className:`shrink-0 opacity-70`})]}):x(C,{}),A=({content:t})=>t==null?x(C,{}):S(s,{children:[x(i,{asChild:!0,children:x(e,{"data-slot":`description-longtext`,variant:`sm`,className:`line-clamp-2 cursor-pointer whitespace-pre-line break-all text-start text-sm hover:text-text-positive transition-colors`,children:t})}),x(a,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:S(`div`,{className:`flex flex-col gap-y-2`,children:[x(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:t}),S(`p`,{className:`w-full text-end text-text-positive-subtle`,children:[t.toString().length,` chars`]})]})})]}),j=({name:t})=>t?S(s,{children:[x(i,{asChild:!0,children:x(e,{"data-slot":`description-name`,variant:`sm`,className:`line-clamp-2 w-full cursor-pointer truncate hover:text-text-positive transition-colors`,children:t})}),x(a,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:S(`div`,{className:`flex flex-col gap-y-2`,children:[x(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:t}),S(`p`,{className:`w-full text-end text-text-positive-subtle`,children:[t.length,` chars`]})]})})]}):x(C,{}),M=({value:t})=>S(s,{children:[x(i,{"data-slot":`description-phone`,children:x(e,{variant:`sm`,className:`tabular-nums transition-colors`,children:t.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),x(a,{align:`start`,children:x(`p`,{className:`tabular-nums`,children:t.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),N=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},P=b(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`sm`,trend:`neutral`}}),F=m(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:n,suffix:r,precision:i,roundingMode:a=`round`,showTrailingZeros:o=!1,size:s=`sm`,trend:c=`neutral`,value:l=0,className:u})=>{let d=_(()=>{let e={};return typeof i==`number`&&i>=0&&(o&&(e.minimumFractionDigits=i),e.maximumFractionDigits=i),e},[i,o]),f=h(e=>{let t=e;return typeof i==`number`&&i>=0&&(t=N(e,i,a)),t.toLocaleString(`en-US`,d)},[a,d,i]),p=_(()=>{if(typeof l==`number`)return Number.isNaN(l)||!Number.isFinite(l)?`N/A`:f(l);if(typeof l==`string`){let e=l.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:f(t)}return`N/A`},[l,f]),m=_(()=>e===`.`&&t===`,`?p:p.replace(/,/g,t).replace(/\./g,e),[p,e,t]);return m===`0`||m===`N/A`||!m?x(C,{}):S(`div`,{"data-slot":`description-statistic`,className:y(P({size:s,trend:c}),u),children:[n&&x(`span`,{"data-slot":`description-statistic-prefix`,children:n}),x(`p`,{"data-slot":`description-statistic-value`,children:m}),r&&x(`span`,{"data-slot":`description-statistic-suffix`,children:r})]})});F.displayName=`DescriptionStatistic`;const I={primary:`bg-primary`,secondary:`bg-secondary`,muted:`bg-muted`,accent:`bg-accent`,info:`bg-info`,success:`bg-success`,warning:`bg-warning`,danger:`bg-danger`},L=({label:e,color:t=`info`,dot:n=!0})=>e?S(r,{"data-slot":`description-status`,variant:`soft`,color:t,size:`sm`,className:`gap-1.5`,children:[n&&x(`span`,{className:y(`inline-block size-1.5 shrink-0 rounded-full`,I[t])}),e]}):x(C,{}),R=({tags:e,max:t=5,color:n=`secondary`,variant:i=`soft`})=>{if(!e?.length)return x(C,{});let a=e.slice(0,t),o=e.length-a.length;return S(`div`,{"data-slot":`description-tag-list`,className:`flex flex-wrap gap-1`,children:[a.map((e,t)=>x(r,{variant:i,color:n,size:`sm`,children:e},t)),o>0&&S(r,{variant:`outline`,color:`muted`,size:`sm`,children:[`+`,o]})]})},z=({uuid:e,username:t,email:n})=>!e||!t||!n?x(C,{}):x(c,{uuid:e,username:t,email:n}),B=p(!1),V=({label:e,labelColSpan:t=3,orientation:n=`horizontal`,action:r,children:i})=>n===`vertical`?S(`div`,{"data-slot":`description-item`,className:`flex flex-col border-b border-b-border last:border-b-0`,children:[S(`div`,{"data-slot":`description-item-label`,className:`flex items-center justify-between border-b border-b-border bg-secondary-muted py-2 pr-2 pl-4 text-sm font-medium text-text-positive-weak`,children:[x(`span`,{children:e}),r&&x(`div`,{className:`shrink-0`,children:r})]}),x(`div`,{"data-slot":`description-item-value`,className:`flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive`,children:i})]}):S(`div`,{"data-slot":`description-item`,style:{display:`grid`,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},className:`grid border-b border-b-border last:border-b-0`,children:[S(`div`,{"data-slot":`description-item-label`,style:{gridColumn:`span ${t} / span ${t}`},className:`flex min-w-full items-center justify-between overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm font-medium text-text-positive-weak tabular-nums`,children:[x(`span`,{children:e}),r&&x(`div`,{className:`shrink-0 pr-1`,children:r})]}),x(`div`,{"data-slot":`description-item-value`,style:{gridColumn:`span ${12-t} / span ${12-t}`},className:`flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive`,children:i})]}),H=({title:e,description:t,extra:n,className:r})=>S(`div`,{"data-slot":`description-header`,className:y(`sticky top-0 z-10 flex items-center justify-between gap-4 border-b border-b-border bg-card px-4 py-3`,r),children:[S(`div`,{className:`flex flex-col gap-0.5`,children:[x(`p`,{className:`text-sm font-semibold text-text-positive`,children:e}),t&&x(`p`,{className:`text-xs text-text-positive-muted`,children:t})]}),n&&x(`div`,{className:`shrink-0`,children:n})]}),U=({title:e,className:t})=>S(`div`,{"data-slot":`description-section`,className:y(`flex items-center gap-3 border-b border-b-border px-4 py-2.5`,t),children:[e&&x(`p`,{className:`shrink-0 text-xs font-semibold uppercase tracking-widest text-text-positive-muted`,children:e}),x(`div`,{className:`h-px flex-1 bg-border`})]}),W=({rows:e})=>S(`div`,{"data-slot":`description-loading`,className:`animate-pulse`,children:[S(`div`,{className:`flex items-center justify-between border-b border-b-border px-4 py-3`,children:[S(`div`,{className:`flex flex-col gap-1.5`,children:[x(`div`,{className:`h-3.5 w-36 rounded bg-border`}),x(`div`,{className:`h-2.5 w-24 rounded bg-border-weak`})]}),x(`div`,{className:`h-5 w-16 rounded bg-border-weak`})]}),Array.from({length:e}).map((e,t)=>S(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},className:`grid border-b border-b-border last:border-b-0`,children:[x(`div`,{style:{gridColumn:`span 3 / span 3`},className:`flex items-center border-r border-r-border bg-secondary-muted py-3 pl-4 pr-2`,children:x(`div`,{className:`h-3 w-20 rounded bg-border`})}),x(`div`,{style:{gridColumn:`span 9 / span 9`},className:`flex items-center py-3 pl-4 pr-2`,children:x(`div`,{className:`h-3 w-28 rounded bg-border-weak`})})]},t))]}),G=({children:e,className:t,nested:n=!1,loading:r=!1,loadingRows:i=4})=>{let a=g(B);return x(`div`,{"data-slot":`description`,className:y(`relative flex flex-col bg-card`,a?`border-b border-b-border last:border-b-0`:n?`w-full overflow-hidden rounded-md border border-border`:`size-full overflow-y-auto rounded-lg border border-border shadow-card ring-1 ring-border-weak`,t),children:r?x(W,{rows:i}):e})},K=({children:e,className:t})=>x(B.Provider,{value:!0,children:x(`div`,{"data-slot":`description-group`,className:y(`relative size-full overflow-y-auto rounded-lg border border-border bg-card shadow-card ring-1 ring-border-weak`,t),children:e})});export{T as _,U as a,L as c,j as d,A as f,E as g,D as h,V as i,F as l,O as m,K as n,z as o,k as p,H as r,R as s,G as t,M as u,w as v,C as y};
|
|
2
|
+
//# sourceMappingURL=descriptions-CgkBHjKD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptions-CgkBHjKD.mjs","names":["DescriptionEmpty: React.FC","DescriptionBadge: React.FC<DescriptionBadgeProps>","DescriptionBoolean: React.FC<DescriptionBooleanProps>","DescriptionCopy: React.FC<DescriptionCopyProps>","DescriptionDate: React.FC<DescriptionDateProps>","DescriptionImages: React.FC<{\n images?: Array<ImageItem> | null | undefined;\n}>","Image","DescriptionLink: React.FC<DescriptionLinkProps>","DescriptionLongText: React.FC<{ content: string | null | undefined | number }>","DescriptionName: React.FC<{\n name?: string | null | undefined;\n}>","DescriptionNumberPhone: React.FC<{ value: string }>","options: Intl.NumberFormatOptions","dotColorMap: Record<StatusColor, string>","DescriptionStatus: React.FC<DescriptionStatusProps>","DescriptionTagList: React.FC<DescriptionTagListProps>","DescriptionUser: React.FC<DescriptionUserProps>","DescriptionItem: React.FC<\n React.PropsWithChildren<{\n /** Text displayed in the label column. */\n label: string;\n /**\n * Number of grid columns (out of 12) allocated to the label in horizontal orientation.\n * @default 3\n */\n labelColSpan?: number;\n /**\n * Layout direction of the label/value pair.\n * - `'horizontal'` — label and value are side by side.\n * - `'vertical'` — label sits above the value.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Optional node rendered in the top-right corner of the label area (e.g. an edit action). */\n action?: React.ReactNode;\n }>\n>","DescriptionHeader: React.FC<{\n /** Primary heading text. */\n title: string;\n /** Optional secondary text rendered below the title in a smaller, muted style. */\n description?: string;\n /** Optional node rendered on the right side of the header (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Additional CSS class names applied to the header wrapper. */\n className?: string;\n}>","DescriptionSection: React.FC<{\n /** Optional section label rendered as uppercase small-caps text beside the divider line. */\n title?: string;\n /** Additional CSS class names applied to the section wrapper. */\n className?: string;\n}>","DescriptionLoadingSkeleton: React.FC<{ rows: number }>","Description: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the root wrapper element. */\n className?: string;\n /** Strips the outer card shadow/ring and adapts sizing for embedding inside another Description. */\n nested?: boolean;\n /** Replaces children with animated skeleton rows while data is loading. */\n loading?: boolean;\n /** Number of skeleton rows shown when `loading` is true. @default 4 */\n loadingRows?: number;\n }>\n>","DescriptionGroup: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the group wrapper. */\n className?: string;\n }>\n>"],"sources":["../packages/components/features/descriptions/components/empty.tsx","../packages/components/features/descriptions/components/badge.tsx","../packages/components/features/descriptions/components/boolean.tsx","../packages/components/features/descriptions/components/copy.tsx","../packages/components/features/descriptions/components/date.tsx","../packages/components/features/descriptions/components/images.tsx","../packages/components/features/descriptions/components/link.tsx","../packages/components/features/descriptions/components/longtext.tsx","../packages/components/features/descriptions/components/name.tsx","../packages/components/features/descriptions/components/number-phone.tsx","../packages/components/features/descriptions/components/statistic.tsx","../packages/components/features/descriptions/components/status.tsx","../packages/components/features/descriptions/components/tag-list.tsx","../packages/components/features/descriptions/components/user.tsx","../packages/components/features/descriptions/index.tsx"],"sourcesContent":["'use client';\n\nexport const DescriptionEmpty: React.FC = () => {\n return (\n <span data-slot=\"description-empty\" aria-label=\"Empty value\" className=\"select-none font-medium text-sm text-text-positive-muted\">\n —\n </span>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionBadgeProps = {\n label: string | number | null | undefined;\n color?: BadgeProps['color'];\n variant?: BadgeProps['variant'];\n size?: BadgeProps['size'];\n};\n\nexport const DescriptionBadge: React.FC<DescriptionBadgeProps> = ({ label, color = 'secondary', variant = 'soft', size = 'sm' }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-badge\" color={color} variant={variant} size={size}>\n {label}\n </Badge>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionBooleanProps = {\n value: boolean | null | undefined;\n trueLabel?: string;\n falseLabel?: string;\n};\n\nexport const DescriptionBoolean: React.FC<DescriptionBooleanProps> = ({ value, trueLabel = 'Yes', falseLabel = 'No' }) => {\n if (value == null) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-boolean\" variant=\"soft\" color={value ? 'success' : 'danger'} size=\"sm\">\n {value ? trueLabel : falseLabel}\n </Badge>\n );\n};\n","'use client';\n\nimport { useCallback, useState } from 'react';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionCopyProps = {\n value: string | null | undefined;\n truncate?: boolean;\n};\n\nexport const DescriptionCopy: React.FC<DescriptionCopyProps> = ({ value, truncate = true }) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n if (!value) return;\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }, [value]);\n\n if (!value) return <DescriptionEmpty />;\n\n return (\n <button\n type=\"button\"\n data-slot=\"description-copy\"\n onClick={handleCopy}\n className={cn(\n 'group inline-flex max-w-full cursor-pointer items-center gap-1.5 rounded-sm border border-border-weak bg-secondary-muted px-2 py-0.5 font-mono text-xs text-text-positive-weak transition-[border-color,color,box-shadow] hover:border-border hover:text-text-positive hover:shadow-xs',\n truncate && 'min-w-0'\n )}\n >\n <span className={cn('tabular-nums', truncate && 'truncate')}>{value}</span>\n {copied ? <CheckIcon size={12} className=\"shrink-0 text-success\" /> : <CopyIcon size={12} className=\"shrink-0 opacity-50 group-hover:opacity-100\" />}\n </button>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { DateDisplay } from '@/components/data-display/date';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionDateProps = {\n date: Date | string | number | null | undefined;\n};\n\nexport const DescriptionDate: React.FC<DescriptionDateProps> = ({ date }) => {\n if (date == null) return <DescriptionEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DateDisplay data-slot=\"description-date\" date={date} format=\"medium\" className=\"cursor-help\" />\n </TooltipTrigger>\n <TooltipContent>\n <DateDisplay date={date} format=\"full\" showTime className=\"text-xs font-medium\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n","'use client';\n\nimport { Image } from '@/components/ui/image';\n\nimport { DescriptionEmpty } from './empty';\n\ntype ImageItem = { id: string; src: string; alt: string };\n\nexport const DescriptionImages: React.FC<{\n images?: Array<ImageItem> | null | undefined;\n}> = ({ images }) => {\n if (!images?.length) return <DescriptionEmpty />;\n\n const isSingle = images.length === 1;\n\n return (\n <div data-slot=\"description-images\" className=\"flex flex-wrap gap-4\">\n {images.map(image => (\n <div\n key={image.id}\n className={\n isSingle\n ? 'group relative size-42 overflow-hidden rounded-sm border border-border shadow-xs transition-shadow hover:shadow-card'\n : 'group relative size-16 overflow-hidden rounded-lg border border-border shadow-xs transition-shadow hover:shadow-card'\n }\n >\n <Image src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" className=\"transition-transform duration-200 group-hover:scale-105\" />\n </div>\n ))}\n </div>\n );\n};\n","'use client';\n\nimport { ExternalLinkIcon, LinkIcon } from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionLinkProps = {\n href: string | null | undefined;\n label?: string;\n external?: boolean;\n className?: string;\n};\n\nexport const DescriptionLink: React.FC<DescriptionLinkProps> = ({ href, label, external = true, className }) => {\n if (!href) return <DescriptionEmpty />;\n\n return (\n <a\n data-slot=\"description-link\"\n href={href}\n target={external ? '_blank' : undefined}\n rel={external ? 'noopener noreferrer' : undefined}\n className={cn(\n 'inline-flex max-w-full items-center gap-1 text-sm text-primary underline decoration-dashed underline-offset-2 transition-colors hover:text-primary-strong hover:decoration-solid',\n className\n )}\n >\n {!external && <LinkIcon size={12} className=\"shrink-0 opacity-70\" />}\n <span className=\"truncate\">{label ?? href}</span>\n {external && <ExternalLinkIcon size={12} className=\"shrink-0 opacity-70\" />}\n </a>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionLongText: React.FC<{ content: string | null | undefined | number }> = ({ content }) => {\n if (content == null) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Paragraph\n data-slot=\"description-longtext\"\n variant=\"sm\"\n className=\"line-clamp-2 cursor-pointer whitespace-pre-line break-all text-start text-sm hover:text-text-positive transition-colors\"\n >\n {content}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{content}</p>\n <p className=\"w-full text-end text-text-positive-subtle\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionName: React.FC<{\n name?: string | null | undefined;\n}> = ({ name }) => {\n if (!name) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Paragraph data-slot=\"description-name\" variant=\"sm\" className=\"line-clamp-2 w-full cursor-pointer truncate hover:text-text-positive transition-colors\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end text-text-positive-subtle\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nexport const DescriptionNumberPhone: React.FC<{ value: string }> = ({ value }) => {\n return (\n <Tooltip>\n <TooltipTrigger data-slot=\"description-phone\">\n <Paragraph variant=\"sm\" className=\"tabular-nums transition-colors\">\n {value.replace(/(\\d{3})(\\d{3})(\\d{4})/, '($1) $2-$3')}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\">\n <p className=\"tabular-nums\">{value.slice(1).replace(/(\\d{2})(\\d{3})(\\d{4})/, '(00) (+84) ($1) $2-$3')}</p>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { memo, useCallback, useMemo } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\nconst applyRounding = (num: number, precisionValue: number, roundingMode?: 'round' | 'floor' | 'ceil') => {\n const multiplier = 10 ** precisionValue;\n switch (roundingMode) {\n case 'floor':\n return Math.floor(num * multiplier) / multiplier;\n case 'ceil':\n return Math.ceil(num * multiplier) / multiplier;\n default:\n return Math.round(num * multiplier) / multiplier;\n }\n};\n\nconst descriptionStatisticVariants = cva('inline-flex items-center gap-1 font-number tabular-nums transition-colors', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n trend: {\n neutral: 'text-text-positive',\n up: 'text-success',\n down: 'text-danger',\n },\n },\n defaultVariants: {\n size: 'sm',\n trend: 'neutral',\n },\n});\n\nexport type DescriptionStatisticProps = VariantProps<typeof descriptionStatisticVariants> & {\n decimalSeparator?: string;\n groupSeparator?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n precision?: number;\n roundingMode?: 'round' | 'floor' | 'ceil';\n showTrailingZeros?: boolean;\n value: number | string | null | undefined;\n className?: string;\n};\n\nexport const DescriptionStatistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'sm',\n trend = 'neutral',\n value = 0,\n className,\n }: DescriptionStatisticProps) => {\n const formatOptions = useMemo((): Intl.NumberFormatOptions => {\n const options: Intl.NumberFormatOptions = {};\n if (typeof precision === 'number' && precision >= 0) {\n if (showTrailingZeros) {\n options.minimumFractionDigits = precision;\n options.maximumFractionDigits = precision;\n } else {\n options.maximumFractionDigits = precision;\n }\n }\n return options;\n }, [precision, showTrailingZeros]);\n\n const formatNumber = useCallback(\n (num: number): string => {\n let processedNum = num;\n if (typeof precision === 'number' && precision >= 0) {\n processedNum = applyRounding(num, precision, roundingMode);\n }\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [roundingMode, formatOptions, precision]\n );\n\n const processedValue = useMemo((): string => {\n if (typeof value === 'number') {\n if (Number.isNaN(value) || !Number.isFinite(value)) return 'N/A';\n return formatNumber(value);\n }\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n if (!trimmedValue) return 'N/A';\n const numValue = Number(trimmedValue);\n if (Number.isNaN(numValue) || !Number.isFinite(numValue)) return 'N/A';\n return formatNumber(numValue);\n }\n return 'N/A';\n }, [value, formatNumber]);\n\n const finalFormattedValue = useMemo((): string => {\n if (decimalSeparator === '.' && groupSeparator === ',') return processedValue;\n return processedValue.replace(/,/g, groupSeparator).replace(/\\./g, decimalSeparator);\n }, [processedValue, decimalSeparator, groupSeparator]);\n\n if (finalFormattedValue === '0' || finalFormattedValue === 'N/A' || !finalFormattedValue) {\n return <DescriptionEmpty />;\n }\n\n return (\n <div data-slot=\"description-statistic\" className={cn(descriptionStatisticVariants({ size, trend }), className)}>\n {Prefix && <span data-slot=\"description-statistic-prefix\">{Prefix}</span>}\n <p data-slot=\"description-statistic-value\">{finalFormattedValue}</p>\n {Suffix && <span data-slot=\"description-statistic-suffix\">{Suffix}</span>}\n </div>\n );\n }\n);\nDescriptionStatistic.displayName = 'DescriptionStatistic';\n","'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype StatusColor = NonNullable<BadgeProps['color']>;\n\nconst dotColorMap: Record<StatusColor, string> = {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n muted: 'bg-muted',\n accent: 'bg-accent',\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-danger',\n};\n\ntype DescriptionStatusProps = {\n label: string | null | undefined;\n color?: StatusColor;\n dot?: boolean;\n};\n\nexport const DescriptionStatus: React.FC<DescriptionStatusProps> = ({ label, color = 'info', dot = true }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-status\" variant=\"soft\" color={color} size=\"sm\" className=\"gap-1.5\">\n {dot && <span className={cn('inline-block size-1.5 shrink-0 rounded-full', dotColorMap[color])} />}\n {label}\n </Badge>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionTagListProps = {\n tags: Array<string | number> | null | undefined;\n max?: number;\n color?: BadgeProps['color'];\n variant?: BadgeProps['variant'];\n};\n\nexport const DescriptionTagList: React.FC<DescriptionTagListProps> = ({ tags, max = 5, color = 'secondary', variant = 'soft' }) => {\n if (!tags?.length) return <DescriptionEmpty />;\n\n const visible = tags.slice(0, max);\n const overflow = tags.length - visible.length;\n\n return (\n <div data-slot=\"description-tag-list\" className=\"flex flex-wrap gap-1\">\n {visible.map((tag, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: static display list\n <Badge key={i} variant={variant} color={color} size=\"sm\">\n {tag}\n </Badge>\n ))}\n {overflow > 0 && (\n <Badge variant=\"outline\" color=\"muted\" size=\"sm\">\n +{overflow}\n </Badge>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { UserDataDisplay } from '@/components/data-display/user';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionUserProps = {\n uuid?: string | null;\n username?: string | null;\n email?: string | null;\n};\n\nexport const DescriptionUser: React.FC<DescriptionUserProps> = ({ uuid, username, email }) => {\n if (!uuid || !username || !email) return <DescriptionEmpty />;\n return <UserDataDisplay uuid={uuid} username={username} email={email} />;\n};\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nexport * from './components';\n\nconst DescriptionGroupContext = createContext(false);\n\n/**\n * A single labeled row within a {@link Description} container, supporting both horizontal (side-by-side label/value) and vertical (stacked) layouts.\n *\n * @example\n * import { Description, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionItem label=\"Full name\">John Doe</DescriptionItem>\n * <DescriptionItem label=\"Email\" orientation=\"vertical\">john@example.com</DescriptionItem>\n * </Description>\n */\nexport const DescriptionItem: React.FC<\n React.PropsWithChildren<{\n /** Text displayed in the label column. */\n label: string;\n /**\n * Number of grid columns (out of 12) allocated to the label in horizontal orientation.\n * @default 3\n */\n labelColSpan?: number;\n /**\n * Layout direction of the label/value pair.\n * - `'horizontal'` — label and value are side by side.\n * - `'vertical'` — label sits above the value.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Optional node rendered in the top-right corner of the label area (e.g. an edit action). */\n action?: React.ReactNode;\n }>\n> = ({ label, labelColSpan = 3, orientation = 'horizontal', action, children }) => {\n if (orientation === 'vertical') {\n return (\n <div data-slot=\"description-item\" className=\"flex flex-col border-b border-b-border last:border-b-0\">\n <div\n data-slot=\"description-item-label\"\n className=\"flex items-center justify-between border-b border-b-border bg-secondary-muted py-2 pr-2 pl-4 text-sm font-medium text-text-positive-weak\"\n >\n <span>{label}</span>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n <div data-slot=\"description-item-value\" className=\"flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\">\n {children}\n </div>\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"description-item\"\n style={{ display: 'grid', gridTemplateColumns: 'repeat(12, minmax(0, 1fr))' }}\n className=\"grid border-b border-b-border last:border-b-0\"\n >\n <div\n data-slot=\"description-item-label\"\n style={{ gridColumn: `span ${labelColSpan} / span ${labelColSpan}` }}\n className=\"flex min-w-full items-center justify-between overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm font-medium text-text-positive-weak tabular-nums\"\n >\n <span>{label}</span>\n {action && <div className=\"shrink-0 pr-1\">{action}</div>}\n </div>\n <div\n data-slot=\"description-item-value\"\n style={{ gridColumn: `span ${12 - labelColSpan} / span ${12 - labelColSpan}` }}\n className=\"flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\"\n >\n {children}\n </div>\n </div>\n );\n};\n\n/**\n * A header bar for a {@link Description} block, showing a title, an optional subtitle, and an optional trailing action area.\n *\n * @example\n * import { Description, DescriptionHeader } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionHeader title=\"User details\" description=\"Read-only overview\" extra={<EditBtn />} />\n * </Description>\n */\nexport const DescriptionHeader: React.FC<{\n /** Primary heading text. */\n title: string;\n /** Optional secondary text rendered below the title in a smaller, muted style. */\n description?: string;\n /** Optional node rendered on the right side of the header (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Additional CSS class names applied to the header wrapper. */\n className?: string;\n}> = ({ title, description, extra, className }) => {\n return (\n <div\n data-slot=\"description-header\"\n className={cn('sticky top-0 z-10 flex items-center justify-between gap-4 border-b border-b-border bg-card px-4 py-3', className)}\n >\n <div className=\"flex flex-col gap-0.5\">\n <p className=\"text-sm font-semibold text-text-positive\">{title}</p>\n {description && <p className=\"text-xs text-text-positive-muted\">{description}</p>}\n </div>\n {extra && <div className=\"shrink-0\">{extra}</div>}\n </div>\n );\n};\n\n/**\n * A visual section divider inside a {@link Description} container that optionally displays a section title with a decorative horizontal rule.\n *\n * @example\n * import { Description, DescriptionSection, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionSection title=\"Contact\" />\n * <DescriptionItem label=\"Email\">john@example.com</DescriptionItem>\n * </Description>\n */\nexport const DescriptionSection: React.FC<{\n /** Optional section label rendered as uppercase small-caps text beside the divider line. */\n title?: string;\n /** Additional CSS class names applied to the section wrapper. */\n className?: string;\n}> = ({ title, className }) => {\n return (\n <div data-slot=\"description-section\" className={cn('flex items-center gap-3 border-b border-b-border px-4 py-2.5', className)}>\n {title && <p className=\"shrink-0 text-xs font-semibold uppercase tracking-widest text-text-positive-muted\">{title}</p>}\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n );\n};\n\nconst DescriptionLoadingSkeleton: React.FC<{ rows: number }> = ({ rows }) => (\n <div data-slot=\"description-loading\" className=\"animate-pulse\">\n <div className=\"flex items-center justify-between border-b border-b-border px-4 py-3\">\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"h-3.5 w-36 rounded bg-border\" />\n <div className=\"h-2.5 w-24 rounded bg-border-weak\" />\n </div>\n <div className=\"h-5 w-16 rounded bg-border-weak\" />\n </div>\n {Array.from({ length: rows }).map((_, i) => (\n <div key={i} style={{ display: 'grid', gridTemplateColumns: 'repeat(12, minmax(0, 1fr))' }} className=\"grid border-b border-b-border last:border-b-0\">\n <div style={{ gridColumn: 'span 3 / span 3' }} className=\"flex items-center border-r border-r-border bg-secondary-muted py-3 pl-4 pr-2\">\n <div className=\"h-3 w-20 rounded bg-border\" />\n </div>\n <div style={{ gridColumn: 'span 9 / span 9' }} className=\"flex items-center py-3 pl-4 pr-2\">\n <div className=\"h-3 w-28 rounded bg-border-weak\" />\n </div>\n </div>\n ))}\n </div>\n);\n\n/**\n * Root container for a description block — a bordered, rounded card that groups {@link DescriptionHeader}, {@link DescriptionSection}, and {@link DescriptionItem} elements.\n *\n * Set `nested` when embedding one `Description` inside another (removes the outer card shadow/ring and constrains sizing).\n * Set `loading` to replace content with animated skeleton rows while data is being fetched.\n *\n * @example\n * import { Description, DescriptionHeader, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionHeader title=\"Order #1234\" />\n * <DescriptionItem label=\"Status\">Shipped</DescriptionItem>\n * <DescriptionItem label=\"Total\">$99.00</DescriptionItem>\n * </Description>\n */\nexport const Description: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the root wrapper element. */\n className?: string;\n /** Strips the outer card shadow/ring and adapts sizing for embedding inside another Description. */\n nested?: boolean;\n /** Replaces children with animated skeleton rows while data is loading. */\n loading?: boolean;\n /** Number of skeleton rows shown when `loading` is true. @default 4 */\n loadingRows?: number;\n }>\n> = ({ children, className, nested = false, loading = false, loadingRows = 4 }) => {\n const inGroup = useContext(DescriptionGroupContext);\n\n return (\n <div\n data-slot=\"description\"\n className={cn(\n 'relative flex flex-col bg-card',\n inGroup\n ? 'border-b border-b-border last:border-b-0'\n : nested\n ? 'w-full overflow-hidden rounded-md border border-border'\n : 'size-full overflow-y-auto rounded-lg border border-border shadow-card ring-1 ring-border-weak',\n className\n )}\n >\n {loading ? <DescriptionLoadingSkeleton rows={loadingRows} /> : children}\n </div>\n );\n};\n\n/**\n * A scrollable container that groups multiple {@link Description} blocks and makes each\n * {@link DescriptionHeader} sticky. As you scroll, the next section header stacks above\n * (pushes out) the previous one — standard CSS sticky behaviour within a single scroll context.\n *\n * @example\n * import { DescriptionGroup, Description, DescriptionHeader, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <DescriptionGroup>\n * <Description>\n * <DescriptionHeader title=\"Personal info\" />\n * <DescriptionItem label=\"Name\">John Doe</DescriptionItem>\n * </Description>\n * <Description>\n * <DescriptionHeader title=\"Contact\" />\n * <DescriptionItem label=\"Email\">john@example.com</DescriptionItem>\n * </Description>\n * </DescriptionGroup>\n */\nexport const DescriptionGroup: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the group wrapper. */\n className?: string;\n }>\n> = ({ children, className }) => {\n return (\n <DescriptionGroupContext.Provider value={true}>\n <div\n data-slot=\"description-group\"\n className={cn('relative size-full overflow-y-auto rounded-lg border border-border bg-card shadow-card ring-1 ring-border-weak', className)}\n >\n {children}\n </div>\n </DescriptionGroupContext.Provider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./paragraph-DvTZvbzw.cjs`),n=require(`./image-eYMg5TSJ.cjs`),r=require(`./date-BBBx-rIM.cjs`),i=require(`./badge-7bcsD0vA.cjs`),a=require(`./tooltip-KEOJcYl8.cjs`),o=require(`./user-B2Pml0ly.cjs`);let s=require(`lucide-react`),c=require(`react`),l=require(`@customafk/react-toolkit/utils`),u=require(`class-variance-authority`),d=require(`react/jsx-runtime`);const f=()=>(0,d.jsx)(`span`,{"data-slot":`description-empty`,"aria-label":`Empty value`,className:`select-none font-medium text-sm text-text-positive-muted`,children:`—`}),p=({label:e,color:t=`secondary`,variant:n=`soft`,size:r=`sm`})=>e?(0,d.jsx)(i.t,{"data-slot":`description-badge`,color:t,variant:n,size:r,children:e}):(0,d.jsx)(f,{}),m=({value:e,trueLabel:t=`Yes`,falseLabel:n=`No`})=>e==null?(0,d.jsx)(f,{}):(0,d.jsx)(i.t,{"data-slot":`description-boolean`,variant:`soft`,color:e?`success`:`danger`,size:`sm`,children:e?t:n}),h=({value:e,truncate:t=!0})=>{let[n,r]=(0,c.useState)(!1),i=(0,c.useCallback)(async()=>{e&&(await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500))},[e]);return e?(0,d.jsxs)(`button`,{type:`button`,"data-slot":`description-copy`,onClick:i,className:(0,l.cn)(`group inline-flex max-w-full cursor-pointer items-center gap-1.5 rounded-sm border border-border-weak bg-secondary-muted px-2 py-0.5 font-mono text-xs text-text-positive-weak transition-[border-color,color,box-shadow] hover:border-border hover:text-text-positive hover:shadow-xs`,t&&`min-w-0`),children:[(0,d.jsx)(`span`,{className:(0,l.cn)(`tabular-nums`,t&&`truncate`),children:e}),n?(0,d.jsx)(s.CheckIcon,{size:12,className:`shrink-0 text-success`}):(0,d.jsx)(s.CopyIcon,{size:12,className:`shrink-0 opacity-50 group-hover:opacity-100`})]}):(0,d.jsx)(f,{})},g=({date:e})=>e==null?(0,d.jsx)(f,{}):(0,d.jsx)(a.r,{children:(0,d.jsxs)(a.t,{children:[(0,d.jsx)(a.i,{asChild:!0,children:(0,d.jsx)(r.t,{"data-slot":`description-date`,date:e,format:`medium`,className:`cursor-help`})}),(0,d.jsx)(a.n,{children:(0,d.jsx)(r.t,{date:e,format:`full`,showTime:!0,className:`text-xs font-medium`})})]})}),_=({images:e})=>{if(!e?.length)return(0,d.jsx)(f,{});let t=e.length===1;return(0,d.jsx)(`div`,{"data-slot":`description-images`,className:`flex flex-wrap gap-4`,children:e.map(e=>(0,d.jsx)(`div`,{className:t?`group relative size-42 overflow-hidden rounded-sm border border-border shadow-xs transition-shadow hover:shadow-card`:`group relative size-16 overflow-hidden rounded-lg border border-border shadow-xs transition-shadow hover:shadow-card`,children:(0,d.jsx)(n.t,{src:e.src,alt:e.alt,width:`100%`,height:`100%`,className:`transition-transform duration-200 group-hover:scale-105`})},e.id))})},v=({href:e,label:t,external:n=!0,className:r})=>e?(0,d.jsxs)(`a`,{"data-slot":`description-link`,href:e,target:n?`_blank`:void 0,rel:n?`noopener noreferrer`:void 0,className:(0,l.cn)(`inline-flex max-w-full items-center gap-1 text-sm text-primary underline decoration-dashed underline-offset-2 transition-colors hover:text-primary-strong hover:decoration-solid`,r),children:[!n&&(0,d.jsx)(s.LinkIcon,{size:12,className:`shrink-0 opacity-70`}),(0,d.jsx)(`span`,{className:`truncate`,children:t??e}),n&&(0,d.jsx)(s.ExternalLinkIcon,{size:12,className:`shrink-0 opacity-70`})]}):(0,d.jsx)(f,{}),y=({content:e})=>e==null?(0,d.jsx)(f,{}):(0,d.jsxs)(a.t,{children:[(0,d.jsx)(a.i,{asChild:!0,children:(0,d.jsx)(t.t,{"data-slot":`description-longtext`,variant:`sm`,className:`line-clamp-2 cursor-pointer whitespace-pre-line break-all text-start text-sm hover:text-text-positive transition-colors`,children:e})}),(0,d.jsx)(a.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,d.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,d.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,d.jsxs)(`p`,{className:`w-full text-end text-text-positive-subtle`,children:[e.toString().length,` chars`]})]})})]}),b=({name:e})=>e?(0,d.jsxs)(a.t,{children:[(0,d.jsx)(a.i,{asChild:!0,children:(0,d.jsx)(t.t,{"data-slot":`description-name`,variant:`sm`,className:`line-clamp-2 w-full cursor-pointer truncate hover:text-text-positive transition-colors`,children:e})}),(0,d.jsx)(a.n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,d.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,d.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),(0,d.jsxs)(`p`,{className:`w-full text-end text-text-positive-subtle`,children:[e.length,` chars`]})]})})]}):(0,d.jsx)(f,{}),x=({value:e})=>(0,d.jsxs)(a.t,{children:[(0,d.jsx)(a.i,{"data-slot":`description-phone`,children:(0,d.jsx)(t.t,{variant:`sm`,className:`tabular-nums transition-colors`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),(0,d.jsx)(a.n,{align:`start`,children:(0,d.jsx)(`p`,{className:`tabular-nums`,children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),S=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},C=(0,u.cva)(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`sm`,trend:`neutral`}}),w=(0,c.memo)(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:n,suffix:r,precision:i,roundingMode:a=`round`,showTrailingZeros:o=!1,size:s=`sm`,trend:u=`neutral`,value:p=0,className:m})=>{let h=(0,c.useMemo)(()=>{let e={};return typeof i==`number`&&i>=0&&(o&&(e.minimumFractionDigits=i),e.maximumFractionDigits=i),e},[i,o]),g=(0,c.useCallback)(e=>{let t=e;return typeof i==`number`&&i>=0&&(t=S(e,i,a)),t.toLocaleString(`en-US`,h)},[a,h,i]),_=(0,c.useMemo)(()=>{if(typeof p==`number`)return Number.isNaN(p)||!Number.isFinite(p)?`N/A`:g(p);if(typeof p==`string`){let e=p.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:g(t)}return`N/A`},[p,g]),v=(0,c.useMemo)(()=>e===`.`&&t===`,`?_:_.replace(/,/g,t).replace(/\./g,e),[_,e,t]);return v===`0`||v===`N/A`||!v?(0,d.jsx)(f,{}):(0,d.jsxs)(`div`,{"data-slot":`description-statistic`,className:(0,l.cn)(C({size:s,trend:u}),m),children:[n&&(0,d.jsx)(`span`,{"data-slot":`description-statistic-prefix`,children:n}),(0,d.jsx)(`p`,{"data-slot":`description-statistic-value`,children:v}),r&&(0,d.jsx)(`span`,{"data-slot":`description-statistic-suffix`,children:r})]})});w.displayName=`DescriptionStatistic`;const T={primary:`bg-primary`,secondary:`bg-secondary`,muted:`bg-muted`,accent:`bg-accent`,info:`bg-info`,success:`bg-success`,warning:`bg-warning`,danger:`bg-danger`},E=({label:e,color:t=`info`,dot:n=!0})=>e?(0,d.jsxs)(i.t,{"data-slot":`description-status`,variant:`soft`,color:t,size:`sm`,className:`gap-1.5`,children:[n&&(0,d.jsx)(`span`,{className:(0,l.cn)(`inline-block size-1.5 shrink-0 rounded-full`,T[t])}),e]}):(0,d.jsx)(f,{}),D=({tags:e,max:t=5,color:n=`secondary`,variant:r=`soft`})=>{if(!e?.length)return(0,d.jsx)(f,{});let a=e.slice(0,t),o=e.length-a.length;return(0,d.jsxs)(`div`,{"data-slot":`description-tag-list`,className:`flex flex-wrap gap-1`,children:[a.map((e,t)=>(0,d.jsx)(i.t,{variant:r,color:n,size:`sm`,children:e},t)),o>0&&(0,d.jsxs)(i.t,{variant:`outline`,color:`muted`,size:`sm`,children:[`+`,o]})]})},O=({uuid:e,username:t,email:n})=>!e||!t||!n?(0,d.jsx)(f,{}):(0,d.jsx)(o.t,{uuid:e,username:t,email:n}),k=(0,c.createContext)(!1),A=({label:e,labelColSpan:t=3,orientation:n=`horizontal`,action:r,children:i})=>n===`vertical`?(0,d.jsxs)(`div`,{"data-slot":`description-item`,className:`flex flex-col border-b border-b-border last:border-b-0`,children:[(0,d.jsxs)(`div`,{"data-slot":`description-item-label`,className:`flex items-center justify-between border-b border-b-border bg-secondary-muted py-2 pr-2 pl-4 text-sm font-medium text-text-positive-weak`,children:[(0,d.jsx)(`span`,{children:e}),r&&(0,d.jsx)(`div`,{className:`shrink-0`,children:r})]}),(0,d.jsx)(`div`,{"data-slot":`description-item-value`,className:`flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive`,children:i})]}):(0,d.jsxs)(`div`,{"data-slot":`description-item`,style:{display:`grid`,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},className:`grid border-b border-b-border last:border-b-0`,children:[(0,d.jsxs)(`div`,{"data-slot":`description-item-label`,style:{gridColumn:`span ${t} / span ${t}`},className:`flex min-w-full items-center justify-between overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm font-medium text-text-positive-weak tabular-nums`,children:[(0,d.jsx)(`span`,{children:e}),r&&(0,d.jsx)(`div`,{className:`shrink-0 pr-1`,children:r})]}),(0,d.jsx)(`div`,{"data-slot":`description-item-value`,style:{gridColumn:`span ${12-t} / span ${12-t}`},className:`flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive`,children:i})]}),j=({title:e,description:t,extra:n,className:r})=>(0,d.jsxs)(`div`,{"data-slot":`description-header`,className:(0,l.cn)(`sticky top-0 z-10 flex items-center justify-between gap-4 border-b border-b-border bg-card px-4 py-3`,r),children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,d.jsx)(`p`,{className:`text-sm font-semibold text-text-positive`,children:e}),t&&(0,d.jsx)(`p`,{className:`text-xs text-text-positive-muted`,children:t})]}),n&&(0,d.jsx)(`div`,{className:`shrink-0`,children:n})]}),M=({title:e,className:t})=>(0,d.jsxs)(`div`,{"data-slot":`description-section`,className:(0,l.cn)(`flex items-center gap-3 border-b border-b-border px-4 py-2.5`,t),children:[e&&(0,d.jsx)(`p`,{className:`shrink-0 text-xs font-semibold uppercase tracking-widest text-text-positive-muted`,children:e}),(0,d.jsx)(`div`,{className:`h-px flex-1 bg-border`})]}),N=({rows:e})=>(0,d.jsxs)(`div`,{"data-slot":`description-loading`,className:`animate-pulse`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between border-b border-b-border px-4 py-3`,children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,d.jsx)(`div`,{className:`h-3.5 w-36 rounded bg-border`}),(0,d.jsx)(`div`,{className:`h-2.5 w-24 rounded bg-border-weak`})]}),(0,d.jsx)(`div`,{className:`h-5 w-16 rounded bg-border-weak`})]}),Array.from({length:e}).map((e,t)=>(0,d.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},className:`grid border-b border-b-border last:border-b-0`,children:[(0,d.jsx)(`div`,{style:{gridColumn:`span 3 / span 3`},className:`flex items-center border-r border-r-border bg-secondary-muted py-3 pl-4 pr-2`,children:(0,d.jsx)(`div`,{className:`h-3 w-20 rounded bg-border`})}),(0,d.jsx)(`div`,{style:{gridColumn:`span 9 / span 9`},className:`flex items-center py-3 pl-4 pr-2`,children:(0,d.jsx)(`div`,{className:`h-3 w-28 rounded bg-border-weak`})})]},t))]}),P=({children:e,className:t,nested:n=!1,loading:r=!1,loadingRows:i=4})=>{let a=(0,c.useContext)(k);return(0,d.jsx)(`div`,{"data-slot":`description`,className:(0,l.cn)(`relative flex flex-col bg-card`,a?`border-b border-b-border last:border-b-0`:n?`w-full overflow-hidden rounded-md border border-border`:`size-full overflow-y-auto rounded-lg border border-border shadow-card ring-1 ring-border-weak`,t),children:r?(0,d.jsx)(N,{rows:i}):e})},F=({children:e,className:t})=>(0,d.jsx)(k.Provider,{value:!0,children:(0,d.jsx)(`div`,{"data-slot":`description-group`,className:(0,l.cn)(`relative size-full overflow-y-auto rounded-lg border border-border bg-card shadow-card ring-1 ring-border-weak`,t),children:e})});Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return f}});
|
|
2
|
+
//# sourceMappingURL=descriptions-RNxfgfpM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptions-RNxfgfpM.cjs","names":["DescriptionEmpty: React.FC","DescriptionBadge: React.FC<DescriptionBadgeProps>","Badge","DescriptionBoolean: React.FC<DescriptionBooleanProps>","Badge","DescriptionCopy: React.FC<DescriptionCopyProps>","CheckIcon","CopyIcon","DescriptionDate: React.FC<DescriptionDateProps>","TooltipProvider","Tooltip","TooltipTrigger","DateDisplay","TooltipContent","DescriptionImages: React.FC<{\n images?: Array<ImageItem> | null | undefined;\n}>","Image","DescriptionLink: React.FC<DescriptionLinkProps>","LinkIcon","ExternalLinkIcon","DescriptionLongText: React.FC<{ content: string | null | undefined | number }>","Tooltip","TooltipTrigger","Paragraph","TooltipContent","DescriptionName: React.FC<{\n name?: string | null | undefined;\n}>","Tooltip","TooltipTrigger","Paragraph","TooltipContent","DescriptionNumberPhone: React.FC<{ value: string }>","Tooltip","TooltipTrigger","Paragraph","TooltipContent","options: Intl.NumberFormatOptions","dotColorMap: Record<StatusColor, string>","DescriptionStatus: React.FC<DescriptionStatusProps>","Badge","DescriptionTagList: React.FC<DescriptionTagListProps>","Badge","DescriptionUser: React.FC<DescriptionUserProps>","UserDataDisplay","DescriptionItem: React.FC<\n React.PropsWithChildren<{\n /** Text displayed in the label column. */\n label: string;\n /**\n * Number of grid columns (out of 12) allocated to the label in horizontal orientation.\n * @default 3\n */\n labelColSpan?: number;\n /**\n * Layout direction of the label/value pair.\n * - `'horizontal'` — label and value are side by side.\n * - `'vertical'` — label sits above the value.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Optional node rendered in the top-right corner of the label area (e.g. an edit action). */\n action?: React.ReactNode;\n }>\n>","DescriptionHeader: React.FC<{\n /** Primary heading text. */\n title: string;\n /** Optional secondary text rendered below the title in a smaller, muted style. */\n description?: string;\n /** Optional node rendered on the right side of the header (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Additional CSS class names applied to the header wrapper. */\n className?: string;\n}>","DescriptionSection: React.FC<{\n /** Optional section label rendered as uppercase small-caps text beside the divider line. */\n title?: string;\n /** Additional CSS class names applied to the section wrapper. */\n className?: string;\n}>","DescriptionLoadingSkeleton: React.FC<{ rows: number }>","Description: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the root wrapper element. */\n className?: string;\n /** Strips the outer card shadow/ring and adapts sizing for embedding inside another Description. */\n nested?: boolean;\n /** Replaces children with animated skeleton rows while data is loading. */\n loading?: boolean;\n /** Number of skeleton rows shown when `loading` is true. @default 4 */\n loadingRows?: number;\n }>\n>","DescriptionGroup: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the group wrapper. */\n className?: string;\n }>\n>"],"sources":["../packages/components/features/descriptions/components/empty.tsx","../packages/components/features/descriptions/components/badge.tsx","../packages/components/features/descriptions/components/boolean.tsx","../packages/components/features/descriptions/components/copy.tsx","../packages/components/features/descriptions/components/date.tsx","../packages/components/features/descriptions/components/images.tsx","../packages/components/features/descriptions/components/link.tsx","../packages/components/features/descriptions/components/longtext.tsx","../packages/components/features/descriptions/components/name.tsx","../packages/components/features/descriptions/components/number-phone.tsx","../packages/components/features/descriptions/components/statistic.tsx","../packages/components/features/descriptions/components/status.tsx","../packages/components/features/descriptions/components/tag-list.tsx","../packages/components/features/descriptions/components/user.tsx","../packages/components/features/descriptions/index.tsx"],"sourcesContent":["'use client';\n\nexport const DescriptionEmpty: React.FC = () => {\n return (\n <span data-slot=\"description-empty\" aria-label=\"Empty value\" className=\"select-none font-medium text-sm text-text-positive-muted\">\n —\n </span>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionBadgeProps = {\n label: string | number | null | undefined;\n color?: BadgeProps['color'];\n variant?: BadgeProps['variant'];\n size?: BadgeProps['size'];\n};\n\nexport const DescriptionBadge: React.FC<DescriptionBadgeProps> = ({ label, color = 'secondary', variant = 'soft', size = 'sm' }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-badge\" color={color} variant={variant} size={size}>\n {label}\n </Badge>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionBooleanProps = {\n value: boolean | null | undefined;\n trueLabel?: string;\n falseLabel?: string;\n};\n\nexport const DescriptionBoolean: React.FC<DescriptionBooleanProps> = ({ value, trueLabel = 'Yes', falseLabel = 'No' }) => {\n if (value == null) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-boolean\" variant=\"soft\" color={value ? 'success' : 'danger'} size=\"sm\">\n {value ? trueLabel : falseLabel}\n </Badge>\n );\n};\n","'use client';\n\nimport { useCallback, useState } from 'react';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionCopyProps = {\n value: string | null | undefined;\n truncate?: boolean;\n};\n\nexport const DescriptionCopy: React.FC<DescriptionCopyProps> = ({ value, truncate = true }) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n if (!value) return;\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }, [value]);\n\n if (!value) return <DescriptionEmpty />;\n\n return (\n <button\n type=\"button\"\n data-slot=\"description-copy\"\n onClick={handleCopy}\n className={cn(\n 'group inline-flex max-w-full cursor-pointer items-center gap-1.5 rounded-sm border border-border-weak bg-secondary-muted px-2 py-0.5 font-mono text-xs text-text-positive-weak transition-[border-color,color,box-shadow] hover:border-border hover:text-text-positive hover:shadow-xs',\n truncate && 'min-w-0'\n )}\n >\n <span className={cn('tabular-nums', truncate && 'truncate')}>{value}</span>\n {copied ? <CheckIcon size={12} className=\"shrink-0 text-success\" /> : <CopyIcon size={12} className=\"shrink-0 opacity-50 group-hover:opacity-100\" />}\n </button>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { DateDisplay } from '@/components/data-display/date';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionDateProps = {\n date: Date | string | number | null | undefined;\n};\n\nexport const DescriptionDate: React.FC<DescriptionDateProps> = ({ date }) => {\n if (date == null) return <DescriptionEmpty />;\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DateDisplay data-slot=\"description-date\" date={date} format=\"medium\" className=\"cursor-help\" />\n </TooltipTrigger>\n <TooltipContent>\n <DateDisplay date={date} format=\"full\" showTime className=\"text-xs font-medium\" />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n};\n","'use client';\n\nimport { Image } from '@/components/ui/image';\n\nimport { DescriptionEmpty } from './empty';\n\ntype ImageItem = { id: string; src: string; alt: string };\n\nexport const DescriptionImages: React.FC<{\n images?: Array<ImageItem> | null | undefined;\n}> = ({ images }) => {\n if (!images?.length) return <DescriptionEmpty />;\n\n const isSingle = images.length === 1;\n\n return (\n <div data-slot=\"description-images\" className=\"flex flex-wrap gap-4\">\n {images.map(image => (\n <div\n key={image.id}\n className={\n isSingle\n ? 'group relative size-42 overflow-hidden rounded-sm border border-border shadow-xs transition-shadow hover:shadow-card'\n : 'group relative size-16 overflow-hidden rounded-lg border border-border shadow-xs transition-shadow hover:shadow-card'\n }\n >\n <Image src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" className=\"transition-transform duration-200 group-hover:scale-105\" />\n </div>\n ))}\n </div>\n );\n};\n","'use client';\n\nimport { ExternalLinkIcon, LinkIcon } from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionLinkProps = {\n href: string | null | undefined;\n label?: string;\n external?: boolean;\n className?: string;\n};\n\nexport const DescriptionLink: React.FC<DescriptionLinkProps> = ({ href, label, external = true, className }) => {\n if (!href) return <DescriptionEmpty />;\n\n return (\n <a\n data-slot=\"description-link\"\n href={href}\n target={external ? '_blank' : undefined}\n rel={external ? 'noopener noreferrer' : undefined}\n className={cn(\n 'inline-flex max-w-full items-center gap-1 text-sm text-primary underline decoration-dashed underline-offset-2 transition-colors hover:text-primary-strong hover:decoration-solid',\n className\n )}\n >\n {!external && <LinkIcon size={12} className=\"shrink-0 opacity-70\" />}\n <span className=\"truncate\">{label ?? href}</span>\n {external && <ExternalLinkIcon size={12} className=\"shrink-0 opacity-70\" />}\n </a>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionLongText: React.FC<{ content: string | null | undefined | number }> = ({ content }) => {\n if (content == null) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Paragraph\n data-slot=\"description-longtext\"\n variant=\"sm\"\n className=\"line-clamp-2 cursor-pointer whitespace-pre-line break-all text-start text-sm hover:text-text-positive transition-colors\"\n >\n {content}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{content}</p>\n <p className=\"w-full text-end text-text-positive-subtle\">{content.toString().length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nimport { DescriptionEmpty } from './empty';\n\nexport const DescriptionName: React.FC<{\n name?: string | null | undefined;\n}> = ({ name }) => {\n if (!name) return <DescriptionEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Paragraph data-slot=\"description-name\" variant=\"sm\" className=\"line-clamp-2 w-full cursor-pointer truncate hover:text-text-positive transition-colors\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end text-text-positive-subtle\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Paragraph } from '@/components/typography/paragraph';\n\nexport const DescriptionNumberPhone: React.FC<{ value: string }> = ({ value }) => {\n return (\n <Tooltip>\n <TooltipTrigger data-slot=\"description-phone\">\n <Paragraph variant=\"sm\" className=\"tabular-nums transition-colors\">\n {value.replace(/(\\d{3})(\\d{3})(\\d{4})/, '($1) $2-$3')}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\">\n <p className=\"tabular-nums\">{value.slice(1).replace(/(\\d{2})(\\d{3})(\\d{4})/, '(00) (+84) ($1) $2-$3')}</p>\n </TooltipContent>\n </Tooltip>\n );\n};\n","'use client';\n\nimport { memo, useCallback, useMemo } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DescriptionEmpty } from './empty';\n\nconst applyRounding = (num: number, precisionValue: number, roundingMode?: 'round' | 'floor' | 'ceil') => {\n const multiplier = 10 ** precisionValue;\n switch (roundingMode) {\n case 'floor':\n return Math.floor(num * multiplier) / multiplier;\n case 'ceil':\n return Math.ceil(num * multiplier) / multiplier;\n default:\n return Math.round(num * multiplier) / multiplier;\n }\n};\n\nconst descriptionStatisticVariants = cva('inline-flex items-center gap-1 font-number tabular-nums transition-colors', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n trend: {\n neutral: 'text-text-positive',\n up: 'text-success',\n down: 'text-danger',\n },\n },\n defaultVariants: {\n size: 'sm',\n trend: 'neutral',\n },\n});\n\nexport type DescriptionStatisticProps = VariantProps<typeof descriptionStatisticVariants> & {\n decimalSeparator?: string;\n groupSeparator?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n precision?: number;\n roundingMode?: 'round' | 'floor' | 'ceil';\n showTrailingZeros?: boolean;\n value: number | string | null | undefined;\n className?: string;\n};\n\nexport const DescriptionStatistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'sm',\n trend = 'neutral',\n value = 0,\n className,\n }: DescriptionStatisticProps) => {\n const formatOptions = useMemo((): Intl.NumberFormatOptions => {\n const options: Intl.NumberFormatOptions = {};\n if (typeof precision === 'number' && precision >= 0) {\n if (showTrailingZeros) {\n options.minimumFractionDigits = precision;\n options.maximumFractionDigits = precision;\n } else {\n options.maximumFractionDigits = precision;\n }\n }\n return options;\n }, [precision, showTrailingZeros]);\n\n const formatNumber = useCallback(\n (num: number): string => {\n let processedNum = num;\n if (typeof precision === 'number' && precision >= 0) {\n processedNum = applyRounding(num, precision, roundingMode);\n }\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [roundingMode, formatOptions, precision]\n );\n\n const processedValue = useMemo((): string => {\n if (typeof value === 'number') {\n if (Number.isNaN(value) || !Number.isFinite(value)) return 'N/A';\n return formatNumber(value);\n }\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n if (!trimmedValue) return 'N/A';\n const numValue = Number(trimmedValue);\n if (Number.isNaN(numValue) || !Number.isFinite(numValue)) return 'N/A';\n return formatNumber(numValue);\n }\n return 'N/A';\n }, [value, formatNumber]);\n\n const finalFormattedValue = useMemo((): string => {\n if (decimalSeparator === '.' && groupSeparator === ',') return processedValue;\n return processedValue.replace(/,/g, groupSeparator).replace(/\\./g, decimalSeparator);\n }, [processedValue, decimalSeparator, groupSeparator]);\n\n if (finalFormattedValue === '0' || finalFormattedValue === 'N/A' || !finalFormattedValue) {\n return <DescriptionEmpty />;\n }\n\n return (\n <div data-slot=\"description-statistic\" className={cn(descriptionStatisticVariants({ size, trend }), className)}>\n {Prefix && <span data-slot=\"description-statistic-prefix\">{Prefix}</span>}\n <p data-slot=\"description-statistic-value\">{finalFormattedValue}</p>\n {Suffix && <span data-slot=\"description-statistic-suffix\">{Suffix}</span>}\n </div>\n );\n }\n);\nDescriptionStatistic.displayName = 'DescriptionStatistic';\n","'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype StatusColor = NonNullable<BadgeProps['color']>;\n\nconst dotColorMap: Record<StatusColor, string> = {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n muted: 'bg-muted',\n accent: 'bg-accent',\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-danger',\n};\n\ntype DescriptionStatusProps = {\n label: string | null | undefined;\n color?: StatusColor;\n dot?: boolean;\n};\n\nexport const DescriptionStatus: React.FC<DescriptionStatusProps> = ({ label, color = 'info', dot = true }) => {\n if (!label) return <DescriptionEmpty />;\n return (\n <Badge data-slot=\"description-status\" variant=\"soft\" color={color} size=\"sm\" className=\"gap-1.5\">\n {dot && <span className={cn('inline-block size-1.5 shrink-0 rounded-full', dotColorMap[color])} />}\n {label}\n </Badge>\n );\n};\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport type { BadgeProps } from '@/components/ui/badge';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionTagListProps = {\n tags: Array<string | number> | null | undefined;\n max?: number;\n color?: BadgeProps['color'];\n variant?: BadgeProps['variant'];\n};\n\nexport const DescriptionTagList: React.FC<DescriptionTagListProps> = ({ tags, max = 5, color = 'secondary', variant = 'soft' }) => {\n if (!tags?.length) return <DescriptionEmpty />;\n\n const visible = tags.slice(0, max);\n const overflow = tags.length - visible.length;\n\n return (\n <div data-slot=\"description-tag-list\" className=\"flex flex-wrap gap-1\">\n {visible.map((tag, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: static display list\n <Badge key={i} variant={variant} color={color} size=\"sm\">\n {tag}\n </Badge>\n ))}\n {overflow > 0 && (\n <Badge variant=\"outline\" color=\"muted\" size=\"sm\">\n +{overflow}\n </Badge>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { UserDataDisplay } from '@/components/data-display/user';\n\nimport { DescriptionEmpty } from './empty';\n\ntype DescriptionUserProps = {\n uuid?: string | null;\n username?: string | null;\n email?: string | null;\n};\n\nexport const DescriptionUser: React.FC<DescriptionUserProps> = ({ uuid, username, email }) => {\n if (!uuid || !username || !email) return <DescriptionEmpty />;\n return <UserDataDisplay uuid={uuid} username={username} email={email} />;\n};\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nexport * from './components';\n\nconst DescriptionGroupContext = createContext(false);\n\n/**\n * A single labeled row within a {@link Description} container, supporting both horizontal (side-by-side label/value) and vertical (stacked) layouts.\n *\n * @example\n * import { Description, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionItem label=\"Full name\">John Doe</DescriptionItem>\n * <DescriptionItem label=\"Email\" orientation=\"vertical\">john@example.com</DescriptionItem>\n * </Description>\n */\nexport const DescriptionItem: React.FC<\n React.PropsWithChildren<{\n /** Text displayed in the label column. */\n label: string;\n /**\n * Number of grid columns (out of 12) allocated to the label in horizontal orientation.\n * @default 3\n */\n labelColSpan?: number;\n /**\n * Layout direction of the label/value pair.\n * - `'horizontal'` — label and value are side by side.\n * - `'vertical'` — label sits above the value.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Optional node rendered in the top-right corner of the label area (e.g. an edit action). */\n action?: React.ReactNode;\n }>\n> = ({ label, labelColSpan = 3, orientation = 'horizontal', action, children }) => {\n if (orientation === 'vertical') {\n return (\n <div data-slot=\"description-item\" className=\"flex flex-col border-b border-b-border last:border-b-0\">\n <div\n data-slot=\"description-item-label\"\n className=\"flex items-center justify-between border-b border-b-border bg-secondary-muted py-2 pr-2 pl-4 text-sm font-medium text-text-positive-weak\"\n >\n <span>{label}</span>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n <div data-slot=\"description-item-value\" className=\"flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\">\n {children}\n </div>\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"description-item\"\n style={{ display: 'grid', gridTemplateColumns: 'repeat(12, minmax(0, 1fr))' }}\n className=\"grid border-b border-b-border last:border-b-0\"\n >\n <div\n data-slot=\"description-item-label\"\n style={{ gridColumn: `span ${labelColSpan} / span ${labelColSpan}` }}\n className=\"flex min-w-full items-center justify-between overflow-x-hidden text-wrap break-all border-r border-r-border bg-secondary-muted py-3 pr-2 pl-4 text-sm font-medium text-text-positive-weak tabular-nums\"\n >\n <span>{label}</span>\n {action && <div className=\"shrink-0 pr-1\">{action}</div>}\n </div>\n <div\n data-slot=\"description-item-value\"\n style={{ gridColumn: `span ${12 - labelColSpan} / span ${12 - labelColSpan}` }}\n className=\"flex flex-wrap items-center gap-2 py-3 pr-2 pl-4 text-sm text-text-positive\"\n >\n {children}\n </div>\n </div>\n );\n};\n\n/**\n * A header bar for a {@link Description} block, showing a title, an optional subtitle, and an optional trailing action area.\n *\n * @example\n * import { Description, DescriptionHeader } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionHeader title=\"User details\" description=\"Read-only overview\" extra={<EditBtn />} />\n * </Description>\n */\nexport const DescriptionHeader: React.FC<{\n /** Primary heading text. */\n title: string;\n /** Optional secondary text rendered below the title in a smaller, muted style. */\n description?: string;\n /** Optional node rendered on the right side of the header (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Additional CSS class names applied to the header wrapper. */\n className?: string;\n}> = ({ title, description, extra, className }) => {\n return (\n <div\n data-slot=\"description-header\"\n className={cn('sticky top-0 z-10 flex items-center justify-between gap-4 border-b border-b-border bg-card px-4 py-3', className)}\n >\n <div className=\"flex flex-col gap-0.5\">\n <p className=\"text-sm font-semibold text-text-positive\">{title}</p>\n {description && <p className=\"text-xs text-text-positive-muted\">{description}</p>}\n </div>\n {extra && <div className=\"shrink-0\">{extra}</div>}\n </div>\n );\n};\n\n/**\n * A visual section divider inside a {@link Description} container that optionally displays a section title with a decorative horizontal rule.\n *\n * @example\n * import { Description, DescriptionSection, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionSection title=\"Contact\" />\n * <DescriptionItem label=\"Email\">john@example.com</DescriptionItem>\n * </Description>\n */\nexport const DescriptionSection: React.FC<{\n /** Optional section label rendered as uppercase small-caps text beside the divider line. */\n title?: string;\n /** Additional CSS class names applied to the section wrapper. */\n className?: string;\n}> = ({ title, className }) => {\n return (\n <div data-slot=\"description-section\" className={cn('flex items-center gap-3 border-b border-b-border px-4 py-2.5', className)}>\n {title && <p className=\"shrink-0 text-xs font-semibold uppercase tracking-widest text-text-positive-muted\">{title}</p>}\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n );\n};\n\nconst DescriptionLoadingSkeleton: React.FC<{ rows: number }> = ({ rows }) => (\n <div data-slot=\"description-loading\" className=\"animate-pulse\">\n <div className=\"flex items-center justify-between border-b border-b-border px-4 py-3\">\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"h-3.5 w-36 rounded bg-border\" />\n <div className=\"h-2.5 w-24 rounded bg-border-weak\" />\n </div>\n <div className=\"h-5 w-16 rounded bg-border-weak\" />\n </div>\n {Array.from({ length: rows }).map((_, i) => (\n <div key={i} style={{ display: 'grid', gridTemplateColumns: 'repeat(12, minmax(0, 1fr))' }} className=\"grid border-b border-b-border last:border-b-0\">\n <div style={{ gridColumn: 'span 3 / span 3' }} className=\"flex items-center border-r border-r-border bg-secondary-muted py-3 pl-4 pr-2\">\n <div className=\"h-3 w-20 rounded bg-border\" />\n </div>\n <div style={{ gridColumn: 'span 9 / span 9' }} className=\"flex items-center py-3 pl-4 pr-2\">\n <div className=\"h-3 w-28 rounded bg-border-weak\" />\n </div>\n </div>\n ))}\n </div>\n);\n\n/**\n * Root container for a description block — a bordered, rounded card that groups {@link DescriptionHeader}, {@link DescriptionSection}, and {@link DescriptionItem} elements.\n *\n * Set `nested` when embedding one `Description` inside another (removes the outer card shadow/ring and constrains sizing).\n * Set `loading` to replace content with animated skeleton rows while data is being fetched.\n *\n * @example\n * import { Description, DescriptionHeader, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <Description>\n * <DescriptionHeader title=\"Order #1234\" />\n * <DescriptionItem label=\"Status\">Shipped</DescriptionItem>\n * <DescriptionItem label=\"Total\">$99.00</DescriptionItem>\n * </Description>\n */\nexport const Description: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the root wrapper element. */\n className?: string;\n /** Strips the outer card shadow/ring and adapts sizing for embedding inside another Description. */\n nested?: boolean;\n /** Replaces children with animated skeleton rows while data is loading. */\n loading?: boolean;\n /** Number of skeleton rows shown when `loading` is true. @default 4 */\n loadingRows?: number;\n }>\n> = ({ children, className, nested = false, loading = false, loadingRows = 4 }) => {\n const inGroup = useContext(DescriptionGroupContext);\n\n return (\n <div\n data-slot=\"description\"\n className={cn(\n 'relative flex flex-col bg-card',\n inGroup\n ? 'border-b border-b-border last:border-b-0'\n : nested\n ? 'w-full overflow-hidden rounded-md border border-border'\n : 'size-full overflow-y-auto rounded-lg border border-border shadow-card ring-1 ring-border-weak',\n className\n )}\n >\n {loading ? <DescriptionLoadingSkeleton rows={loadingRows} /> : children}\n </div>\n );\n};\n\n/**\n * A scrollable container that groups multiple {@link Description} blocks and makes each\n * {@link DescriptionHeader} sticky. As you scroll, the next section header stacks above\n * (pushes out) the previous one — standard CSS sticky behaviour within a single scroll context.\n *\n * @example\n * import { DescriptionGroup, Description, DescriptionHeader, DescriptionItem } from '@customafk/lunas-ui/features/descriptions';\n *\n * <DescriptionGroup>\n * <Description>\n * <DescriptionHeader title=\"Personal info\" />\n * <DescriptionItem label=\"Name\">John Doe</DescriptionItem>\n * </Description>\n * <Description>\n * <DescriptionHeader title=\"Contact\" />\n * <DescriptionItem label=\"Email\">john@example.com</DescriptionItem>\n * </Description>\n * </DescriptionGroup>\n */\nexport const DescriptionGroup: React.FC<\n React.PropsWithChildren<{\n /** Additional CSS class names applied to the group wrapper. */\n className?: string;\n }>\n> = ({ children, className }) => {\n return (\n <DescriptionGroupContext.Provider value={true}>\n <div\n data-slot=\"description-group\"\n className={cn('relative size-full overflow-y-auto rounded-lg border border-border bg-card shadow-card ring-1 ring-border-weak', className)}\n >\n {children}\n </div>\n </DescriptionGroupContext.Provider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-350yNsax.cjs`),t=require(`./flex-ld7BqXoM.cjs`),n=require(`./date-BBBx-rIM.cjs`),r=require(`./title-DR8e6bHV.cjs`),i=require(`./sidebar-DzqiY6IR.cjs`);let a=require(`lucide-react`),o=require(`react`),s=require(`@customafk/react-toolkit/utils`),c=require(`react/jsx-runtime`),l=require(`radix-ui`);const u=({open:e,isLoading:u,title:d,createdAt:f,onOpenChange:p,sidebar:m,children:h})=>{let{content:g,footer:_}=m||{},v=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]);return(0,c.jsx)(l.Dialog.Root,{"data-slot":`detail-dialog`,open:e,onOpenChange:p,children:(0,c.jsxs)(l.Dialog.Portal,{"data-slot":`detail-dialog-portal`,children:[(0,c.jsx)(l.Dialog.Overlay,{"data-slot":`detail-dialog-overlay`,className:`fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`}),(0,c.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:(0,c.jsxs)(l.Dialog.Content,{"data-slot":`dialog-content`,className:(0,s.cn)(`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-80 data-[state=open]:zoom-in-80`,`relative z-50 grid`,`gap-4 overflow-hidden rounded-none border-none bg-background p-0 shadow-dialog outline-none duration-200`,`h-full max-h-dvh w-full max-w-svw`,`sm:rounded-lg`,`sm:max-w-lg`,`md:max-h-[calc(100dvh-2rem)]`,`md:max-w-[calc(100svw-2rem)]`),onInteractOutside:v,children:[(0,c.jsxs)(i.S,{children:[(0,c.jsxs)(i.b,{collapsible:`icon`,children:[(0,c.jsx)(i.s,{children:(0,c.jsx)(i.c,{children:(0,c.jsx)(i.f,{children:(0,c.jsxs)(i.d,{size:`lg`,tabIndex:-1,children:[(0,c.jsx)(`div`,{className:`flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:(0,c.jsx)(a.CatIcon,{size:16})}),(0,c.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,c.jsx)(`span`,{className:`truncate font-medium`,children:m?.title||`Detail Dialog`}),(0,c.jsx)(`span`,{className:`truncate text-xs`,children:`Lunas Enterprise`})]})]})})})}),(0,c.jsx)(i.t,{children:g}),(0,c.jsx)(i.n,{children:_})]}),(0,c.jsx)(`main`,{"data-slot":`detail-dialog-main`,className:`relative h-full flex-1`,children:(0,c.jsxs)(t.t,{padding:`none`,gap:`none`,vertical:!0,align:`stretch`,className:`absolute inset-0 size-full`,children:[(0,c.jsxs)(`header`,{className:`flex w-full flex-0 items-start gap-x-2.5 border-b border-border-weak bg-card py-2.5 pr-12 pl-2`,children:[(0,c.jsx)(i.y,{}),(0,c.jsxs)(t.t,{vertical:!0,align:`start`,padding:`none`,width:`null`,wrap:!1,className:`flex-1 gap-0`,children:[(0,c.jsx)(r.t,{level:5,className:`line-clamp-1 truncate text-wrap`,children:d||`Detail Dialog`}),!!f&&(0,c.jsxs)(t.t,{padding:`none`,className:`relative items-center text-text-positive-weak`,children:[(0,c.jsx)(a.CalendarIcon,{size:12}),(0,c.jsx)(n.t,{showTime:!0,showHoliday:!0,date:f,format:`full`})]})]})]}),u?(0,c.jsx)(t.t,{justify:`center`,className:`inset-shadow-sm w-full flex-1 bg-muted-muted`,children:(0,c.jsx)(`div`,{className:`loader`})}):(0,c.jsx)(`section`,{"data-slot":`detail-dialog-body`,className:`relative inset-shadow-sm flex flex-1 snap-y flex-col gap-0 overflow-y-auto bg-white`,children:h})]})})]}),(0,c.jsx)(l.Dialog.Close,{"data-slot":`dialog-close`,tabIndex:-1,asChild:!0,className:`absolute top-3 right-3`,children:(0,c.jsx)(`button`,{className:`flex cursor-pointer items-center justify-center rounded-full p-2 text-text-positive-weak transition-colors hover:bg-muted-muted hover:text-text-positive active:bg-muted-weak active:text-text-positive-strong disabled:pointer-events-none disabled:opacity-60`,children:(0,c.jsx)(a.XIcon,{size:24})})})]})})]})})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
|
|
2
|
+
//# sourceMappingURL=detail-dialog-BLApH3eD.cjs.map
|