@customafk/lunas-ui 0.2.5 → 0.2.7
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/README.md +39 -9
- package/ai-docs.md +419 -0
- package/dist/alert-CA1RS1CG.d.cts +88 -0
- package/dist/alert-DDL82_U3.d.mts +88 -0
- package/dist/alert-DIC1_ymv.cjs +2 -0
- package/dist/alert-DIC1_ymv.cjs.map +1 -0
- package/dist/alert-VP3giy31.mjs +2 -0
- package/dist/alert-VP3giy31.mjs.map +1 -0
- package/dist/avatar-CTS9-raY.cjs +2 -0
- package/dist/avatar-CTS9-raY.cjs.map +1 -0
- package/dist/avatar-DbxqvCjT.mjs +2 -0
- package/dist/avatar-DbxqvCjT.mjs.map +1 -0
- package/dist/badge-B8bw2UEY.mjs +2 -0
- package/dist/badge-B8bw2UEY.mjs.map +1 -0
- package/dist/badge-BFTGDsBm.d.cts +42 -0
- package/dist/badge-Cg0e-djv.d.mts +42 -0
- package/dist/badge-uQ0pIZbQ.cjs +2 -0
- package/dist/badge-uQ0pIZbQ.cjs.map +1 -0
- package/dist/button-Bn54lPVz.d.cts +174 -0
- package/dist/button-C6ybzxxj.mjs +2 -0
- package/dist/button-C6ybzxxj.mjs.map +1 -0
- package/dist/button-C76drZpd.d.mts +174 -0
- package/dist/{button-Cd7YtPlT.cjs → button-CwDT3m4m.cjs} +2 -2
- package/dist/button-CwDT3m4m.cjs.map +1 -0
- package/dist/button.variants-DeCyas1F.mjs +2 -0
- package/dist/button.variants-DeCyas1F.mjs.map +1 -0
- package/dist/button.variants-tnhb123u.cjs +2 -0
- package/dist/button.variants-tnhb123u.cjs.map +1 -0
- package/dist/calendar-CyAPpT2m.cjs +2 -0
- package/dist/calendar-CyAPpT2m.cjs.map +1 -0
- package/dist/calendar-JKxWM6AF.mjs +2 -0
- package/dist/calendar-JKxWM6AF.mjs.map +1 -0
- package/dist/cards/grid-product-card.cjs +1 -1
- package/dist/cards/grid-product-card.cjs.map +1 -1
- package/dist/cards/grid-product-card.d.cts +23 -0
- package/dist/cards/grid-product-card.d.mts +23 -0
- package/dist/cards/grid-product-card.mjs +1 -1
- package/dist/cards/grid-product-card.mjs.map +1 -1
- package/dist/cards/product-card.cjs +1 -1
- package/dist/cards/product-card.cjs.map +1 -1
- package/dist/cards/product-card.d.cts +23 -0
- package/dist/cards/product-card.d.mts +23 -0
- package/dist/cards/product-card.mjs +1 -1
- package/dist/cards/product-card.mjs.map +1 -1
- package/dist/cards/simple-card.cjs +1 -1
- package/dist/cards/simple-card.cjs.map +1 -1
- package/dist/cards/simple-card.d.cts +16 -0
- package/dist/cards/simple-card.d.mts +18 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/cards/simple-card.mjs.map +1 -1
- package/dist/{checkbox-Bg2FiuQw.mjs → checkbox-DJEdYOjA.mjs} +2 -2
- package/dist/checkbox-DJEdYOjA.mjs.map +1 -0
- package/dist/{checkbox-C0fSWwmD.cjs → checkbox-RZrRNYP2.cjs} +2 -2
- package/dist/checkbox-RZrRNYP2.cjs.map +1 -0
- package/dist/close-BU0kWRVo.mjs +2 -0
- package/dist/{close-DfuHB7kq.mjs.map → close-BU0kWRVo.mjs.map} +1 -1
- package/dist/close-DXk_H3Gt.cjs +2 -0
- package/dist/{close-D_Ge7gnP.cjs.map → close-DXk_H3Gt.cjs.map} +1 -1
- package/dist/cms-layout-Dc4moos1.cjs +2 -0
- package/dist/cms-layout-Dc4moos1.cjs.map +1 -0
- package/dist/cms-layout-HfnOQS16.mjs +2 -0
- package/dist/cms-layout-HfnOQS16.mjs.map +1 -0
- package/dist/{command-IfPmQiyJ.cjs → command-SHd-d_o0.cjs} +2 -2
- package/dist/command-SHd-d_o0.cjs.map +1 -0
- package/dist/{command-Bma4ivZz.mjs → command-bpcnKEbR.mjs} +2 -2
- package/dist/command-bpcnKEbR.mjs.map +1 -0
- package/dist/data-display/country.cjs +1 -1
- package/dist/data-display/country.cjs.map +1 -1
- package/dist/data-display/country.d.cts +15 -3
- package/dist/data-display/country.d.mts +15 -3
- package/dist/data-display/country.mjs +1 -1
- package/dist/data-display/country.mjs.map +1 -1
- package/dist/data-display/data-list.cjs +1 -1
- package/dist/data-display/data-list.cjs.map +1 -1
- package/dist/data-display/data-list.d.cts +31 -2
- package/dist/data-display/data-list.d.mts +31 -2
- package/dist/data-display/data-list.mjs +1 -1
- package/dist/data-display/data-list.mjs.map +1 -1
- package/dist/data-display/date-tooltip.cjs +1 -1
- package/dist/data-display/date-tooltip.cjs.map +1 -1
- package/dist/data-display/date-tooltip.d.cts +13 -2
- package/dist/data-display/date-tooltip.d.mts +13 -2
- package/dist/data-display/date-tooltip.mjs +1 -1
- package/dist/data-display/date-tooltip.mjs.map +1 -1
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.d.cts +28 -2
- package/dist/data-display/date.d.mts +28 -2
- package/dist/data-display/date.mjs +1 -1
- package/dist/data-display/empty.cjs +1 -1
- package/dist/data-display/empty.cjs.map +1 -1
- package/dist/data-display/empty.d.cts +17 -3
- package/dist/data-display/empty.d.mts +17 -3
- package/dist/data-display/empty.mjs +1 -1
- package/dist/data-display/empty.mjs.map +1 -1
- package/dist/data-display/name.cjs +1 -1
- package/dist/data-display/name.cjs.map +1 -1
- package/dist/data-display/name.d.cts +12 -1
- package/dist/data-display/name.d.mts +12 -1
- package/dist/data-display/name.mjs +1 -1
- package/dist/data-display/name.mjs.map +1 -1
- package/dist/data-display/phone-number.cjs +1 -1
- package/dist/data-display/phone-number.cjs.map +1 -1
- package/dist/data-display/phone-number.d.cts +14 -2
- package/dist/data-display/phone-number.d.mts +14 -2
- package/dist/data-display/phone-number.mjs +1 -1
- package/dist/data-display/phone-number.mjs.map +1 -1
- package/dist/data-display/role-badge.cjs +1 -1
- package/dist/data-display/role-badge.cjs.map +1 -1
- package/dist/data-display/role-badge.d.cts +15 -3
- package/dist/data-display/role-badge.d.mts +15 -3
- package/dist/data-display/role-badge.mjs +1 -1
- package/dist/data-display/role-badge.mjs.map +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.cjs.map +1 -1
- package/dist/data-display/statistic.d.cts +35 -6
- package/dist/data-display/statistic.d.mts +37 -8
- package/dist/data-display/statistic.mjs +1 -1
- package/dist/data-display/statistic.mjs.map +1 -1
- package/dist/data-display/user.cjs +1 -2
- package/dist/data-display/user.d.cts +14 -1
- package/dist/data-display/user.d.mts +14 -1
- package/dist/data-display/user.mjs +1 -2
- package/dist/date-CVz9xdCg.mjs +2 -0
- package/dist/date-CVz9xdCg.mjs.map +1 -0
- package/dist/date-a3RI5Pwo.cjs +2 -0
- package/dist/date-a3RI5Pwo.cjs.map +1 -0
- package/dist/dialog-BchwY6-N.mjs +2 -0
- package/dist/dialog-BchwY6-N.mjs.map +1 -0
- package/dist/dialog-CNhwBcEl.d.cts +90 -0
- package/dist/dialog-D6ygAOSV.d.mts +90 -0
- package/dist/dialog-o_68LQXd.cjs +2 -0
- package/dist/dialog-o_68LQXd.cjs.map +1 -0
- package/dist/dialogs/confirm-dialog.cjs +1 -1
- package/dist/dialogs/confirm-dialog.cjs.map +1 -1
- package/dist/dialogs/confirm-dialog.d.cts +129 -3
- package/dist/dialogs/confirm-dialog.d.mts +129 -3
- package/dist/dialogs/confirm-dialog.mjs +1 -1
- package/dist/dialogs/confirm-dialog.mjs.map +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -2
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +73 -26
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +73 -26
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -2
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
- package/dist/dialogs/detail-dialog/index.d.cts +37 -8
- package/dist/dialogs/detail-dialog/index.d.mts +37 -8
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
- package/dist/dialogs/error-dialog.cjs +1 -1
- package/dist/dialogs/error-dialog.cjs.map +1 -1
- package/dist/dialogs/error-dialog.d.cts +18 -4
- package/dist/dialogs/error-dialog.d.mts +18 -4
- package/dist/dialogs/error-dialog.mjs +1 -1
- package/dist/dialogs/error-dialog.mjs.map +1 -1
- package/dist/dialogs/loading-dialog.cjs +1 -1
- package/dist/dialogs/loading-dialog.cjs.map +1 -1
- package/dist/dialogs/loading-dialog.d.cts +15 -3
- package/dist/dialogs/loading-dialog.d.mts +15 -3
- package/dist/dialogs/loading-dialog.mjs +1 -1
- package/dist/dialogs/loading-dialog.mjs.map +1 -1
- package/dist/dist-CIN9T2FB.mjs +2 -0
- package/dist/{dist-DP1ehOL8.mjs.map → dist-CIN9T2FB.mjs.map} +1 -1
- package/dist/dist-Dh8WwRa8.cjs +2 -0
- package/dist/{dist-Q1UyT_bc.cjs.map → dist-Dh8WwRa8.cjs.map} +1 -1
- package/dist/dropdown-menu-Ct9BLGfa.cjs +2 -0
- package/dist/dropdown-menu-Ct9BLGfa.cjs.map +1 -0
- package/dist/dropdown-menu-DWSfXhHo.mjs +2 -0
- package/dist/dropdown-menu-DWSfXhHo.mjs.map +1 -0
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +158 -19
- package/dist/features/descriptions/index.d.mts +158 -19
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/search-modal/index.cjs +1 -2
- package/dist/features/search-modal/index.d.cts +12 -2
- package/dist/features/search-modal/index.d.mts +12 -2
- package/dist/features/search-modal/index.mjs +1 -2
- package/dist/features/tables/index.cjs +1 -2
- package/dist/features/tables/index.d.cts +746 -24
- package/dist/features/tables/index.d.mts +746 -24
- package/dist/features/tables/index.mjs +1 -2
- package/dist/features/tanstack-form/index.cjs +1 -2
- package/dist/features/tanstack-form/index.d.cts +2 -1786
- package/dist/features/tanstack-form/index.d.mts +2 -1786
- package/dist/features/tanstack-form/index.mjs +1 -2
- package/dist/field-CXVnw75a.mjs +2 -0
- package/dist/field-CXVnw75a.mjs.map +1 -0
- package/dist/field-CppNvoxV.cjs +2 -0
- package/dist/field-CppNvoxV.cjs.map +1 -0
- package/dist/{flex-CeizYtXs.mjs → flex-BLMTj7Ev.mjs} +2 -2
- package/dist/flex-BLMTj7Ev.mjs.map +1 -0
- package/dist/{flex-BsoSgWFN.cjs → flex-BbbogTsZ.cjs} +2 -2
- package/dist/flex-BbbogTsZ.cjs.map +1 -0
- package/dist/heading-AKz5ewy-.cjs +2 -0
- package/dist/heading-AKz5ewy-.cjs.map +1 -0
- package/dist/heading-DN67djxs.mjs +2 -0
- package/dist/heading-DN67djxs.mjs.map +1 -0
- package/dist/image-B1Dm5LWk.cjs +2 -0
- package/dist/image-B1Dm5LWk.cjs.map +1 -0
- package/dist/image-BlzrSaoE.mjs +2 -0
- package/dist/image-BlzrSaoE.mjs.map +1 -0
- package/dist/index-75nSAiSe.d.mts +2030 -0
- package/dist/index-aTMCQQms.d.cts +2030 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +90 -0
- package/dist/index.d.mts +90 -0
- package/dist/index.mjs +1 -0
- package/dist/{input-DMjPBcJO.mjs → input-Cd0G5y-9.mjs} +2 -2
- package/dist/input-Cd0G5y-9.mjs.map +1 -0
- package/dist/{input-BoMJaF_N.cjs → input-Cl5VkKQh.cjs} +2 -2
- package/dist/input-Cl5VkKQh.cjs.map +1 -0
- package/dist/input-D5dtkW6g.d.mts +44 -0
- package/dist/input-t2hpPP2K.d.cts +44 -0
- package/dist/{label-BzfsTrVt.cjs → label-DkMTQ3Ch.cjs} +2 -2
- package/dist/label-DkMTQ3Ch.cjs.map +1 -0
- package/dist/label-OmlGaZ5h.mjs +2 -0
- package/dist/label-OmlGaZ5h.mjs.map +1 -0
- package/dist/layouts/cms-layout/index.cjs +1 -2
- package/dist/layouts/cms-layout/index.d.cts +66 -13
- package/dist/layouts/cms-layout/index.d.mts +66 -13
- package/dist/layouts/cms-layout/index.mjs +1 -2
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +91 -7
- package/dist/layouts/flex.d.mts +93 -9
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/grid.cjs +1 -1
- package/dist/layouts/grid.cjs.map +1 -1
- package/dist/layouts/grid.d.cts +14 -0
- package/dist/layouts/grid.d.mts +14 -0
- package/dist/layouts/grid.mjs +1 -1
- package/dist/layouts/grid.mjs.map +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -2
- package/dist/layouts/payment-layout/index.d.cts +35 -0
- package/dist/layouts/payment-layout/index.d.mts +35 -0
- package/dist/layouts/payment-layout/index.mjs +1 -2
- package/dist/pages/FeatureDeveloping.cjs +1 -1
- package/dist/pages/FeatureDeveloping.cjs.map +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +21 -3
- package/dist/pages/FeatureDeveloping.d.mts +21 -3
- package/dist/pages/FeatureDeveloping.mjs +1 -1
- package/dist/pages/FeatureDeveloping.mjs.map +1 -1
- package/dist/pages/FeatureFixing.cjs +1 -1
- package/dist/pages/FeatureFixing.cjs.map +1 -1
- package/dist/pages/FeatureFixing.d.cts +21 -3
- package/dist/pages/FeatureFixing.d.mts +21 -3
- package/dist/pages/FeatureFixing.mjs +1 -1
- package/dist/pages/FeatureFixing.mjs.map +1 -1
- package/dist/pages/NotAuthorized.cjs +1 -1
- package/dist/pages/NotAuthorized.cjs.map +1 -1
- package/dist/pages/NotAuthorized.d.cts +21 -3
- package/dist/pages/NotAuthorized.d.mts +21 -3
- package/dist/pages/NotAuthorized.mjs +1 -1
- package/dist/pages/NotAuthorized.mjs.map +1 -1
- package/dist/pages/NotFound.cjs +1 -1
- package/dist/pages/NotFound.cjs.map +1 -1
- package/dist/pages/NotFound.d.cts +21 -3
- package/dist/pages/NotFound.d.mts +21 -3
- package/dist/pages/NotFound.mjs +1 -1
- package/dist/pages/NotFound.mjs.map +1 -1
- package/dist/{paragraph-DmiXlAnE.mjs → paragraph-Ch5TvEqL.mjs} +2 -2
- package/dist/paragraph-Ch5TvEqL.mjs.map +1 -0
- package/dist/{paragraph-Co2e-y5c.cjs → paragraph-DN85Huc4.cjs} +2 -2
- package/dist/paragraph-DN85Huc4.cjs.map +1 -0
- package/dist/payment-layout-Da29dHJe.cjs +2 -0
- package/dist/payment-layout-Da29dHJe.cjs.map +1 -0
- package/dist/payment-layout-wN5c7MCM.mjs +2 -0
- package/dist/payment-layout-wN5c7MCM.mjs.map +1 -0
- package/dist/{popover-DzDrgttC.cjs → popover-AEt-aSy3.cjs} +2 -2
- package/dist/popover-AEt-aSy3.cjs.map +1 -0
- package/dist/popover-OJXFbqJi.mjs +2 -0
- package/dist/popover-OJXFbqJi.mjs.map +1 -0
- package/dist/{radio-group-CBhRsUjN.cjs → radio-group-BWLdQw7M.cjs} +2 -2
- package/dist/radio-group-BWLdQw7M.cjs.map +1 -0
- package/dist/{radio-group-Cem8O6BK.mjs → radio-group-CAgfOr7-.mjs} +2 -2
- package/dist/radio-group-CAgfOr7-.mjs.map +1 -0
- package/dist/{resizable-B8tRShQI.cjs → resizable-D6UKwvFa.cjs} +2 -2
- package/dist/resizable-D6UKwvFa.cjs.map +1 -0
- package/dist/{resizable-RPObV6jc.mjs → resizable-DWh_mp5P.mjs} +2 -2
- package/dist/resizable-DWh_mp5P.mjs.map +1 -0
- package/dist/search-modal-BxjKY8I7.mjs +2 -0
- package/dist/search-modal-BxjKY8I7.mjs.map +1 -0
- package/dist/search-modal-C-jNqQI1.cjs +2 -0
- package/dist/search-modal-C-jNqQI1.cjs.map +1 -0
- package/dist/{select-2CgwiefV.cjs → select-Py_t2nX1.cjs} +2 -2
- package/dist/select-Py_t2nX1.cjs.map +1 -0
- package/dist/{select-CivtMKTM.mjs → select-Ze8Fq88G.mjs} +2 -2
- package/dist/select-Ze8Fq88G.mjs.map +1 -0
- package/dist/separator-BMsbHAVt.mjs +2 -0
- package/dist/separator-BMsbHAVt.mjs.map +1 -0
- package/dist/{separator-C3ip6sbh.cjs → separator-BwZb12bh.cjs} +2 -2
- package/dist/separator-BwZb12bh.cjs.map +1 -0
- package/dist/{sheet-5MJRtrfG.cjs → sheet-CaDXTx7n.cjs} +2 -2
- package/dist/sheet-CaDXTx7n.cjs.map +1 -0
- package/dist/{sheet-oadGRiie.mjs → sheet-DMIqn1iv.mjs} +2 -2
- package/dist/sheet-DMIqn1iv.mjs.map +1 -0
- package/dist/sidebar-C27_pwLR.cjs +2 -0
- package/dist/sidebar-C27_pwLR.cjs.map +1 -0
- package/dist/sidebar-meLttL0V.mjs +2 -0
- package/dist/sidebar-meLttL0V.mjs.map +1 -0
- package/dist/skeleton-BPxcW2yu.mjs +2 -0
- package/dist/skeleton-BPxcW2yu.mjs.map +1 -0
- package/dist/skeleton-BfMCjXYM.cjs +2 -0
- package/dist/skeleton-BfMCjXYM.cjs.map +1 -0
- package/dist/spinner-EgMJOaQi.mjs +2 -0
- package/dist/spinner-EgMJOaQi.mjs.map +1 -0
- package/dist/spinner-MKXqwF9G.cjs +2 -0
- package/dist/spinner-MKXqwF9G.cjs.map +1 -0
- package/dist/systems/google.cjs +1 -1
- package/dist/systems/google.cjs.map +1 -1
- package/dist/systems/google.d.cts +36 -0
- package/dist/systems/google.d.mts +36 -0
- package/dist/systems/google.mjs +1 -1
- package/dist/systems/google.mjs.map +1 -1
- package/dist/tables-Cc3Wik4i.cjs +2 -0
- package/dist/tables-Cc3Wik4i.cjs.map +1 -0
- package/dist/tables-DrJKQPsT.mjs +2 -0
- package/dist/tables-DrJKQPsT.mjs.map +1 -0
- package/dist/tanstack-form-BmV2BXDz.cjs +2 -0
- package/dist/tanstack-form-BmV2BXDz.cjs.map +1 -0
- package/dist/tanstack-form-CJ43hVb_.mjs +2 -0
- package/dist/tanstack-form-CJ43hVb_.mjs.map +1 -0
- package/dist/{textarea-Dlwbg6TY.cjs → textarea-BsgmN4jy.cjs} +2 -2
- package/dist/textarea-BsgmN4jy.cjs.map +1 -0
- package/dist/{textarea-RjL2DtNf.mjs → textarea-CdGSEkZB.mjs} +2 -2
- package/dist/textarea-CdGSEkZB.mjs.map +1 -0
- package/dist/tooltip-Bj0iOG4s.mjs +2 -0
- package/dist/tooltip-Bj0iOG4s.mjs.map +1 -0
- package/dist/{tooltip-DC6i1A25.cjs → tooltip-itUmYz9k.cjs} +2 -2
- package/dist/tooltip-itUmYz9k.cjs.map +1 -0
- package/dist/{types-Bd0JePtp.d.cts → types-B_32Ieia.d.mts} +1 -1
- package/dist/{types-BpHcqlOI.d.mts → types-CDYHkcOk.d.cts} +1 -1
- package/dist/{types-DBD4LOem.mjs → types-DNphnTW-.mjs} +1 -1
- package/dist/{types-DBD4LOem.mjs.map → types-DNphnTW-.mjs.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +35 -5
- package/dist/typography/paragraph.d.mts +36 -6
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/typography/title.cjs +1 -1
- package/dist/typography/title.cjs.map +1 -1
- package/dist/typography/title.d.cts +31 -4
- package/dist/typography/title.d.mts +31 -4
- package/dist/typography/title.mjs +1 -1
- package/dist/typography/title.mjs.map +1 -1
- package/dist/ui/alert-dialog.cjs +1 -1
- package/dist/ui/alert-dialog.cjs.map +1 -1
- package/dist/ui/alert-dialog.d.cts +54 -12
- package/dist/ui/alert-dialog.d.mts +54 -12
- package/dist/ui/alert-dialog.mjs +1 -1
- package/dist/ui/alert-dialog.mjs.map +1 -1
- package/dist/ui/alert.cjs +1 -2
- package/dist/ui/alert.d.cts +2 -69
- package/dist/ui/alert.d.mts +2 -69
- package/dist/ui/alert.mjs +1 -2
- package/dist/ui/aspect-ratio.cjs +1 -1
- package/dist/ui/aspect-ratio.cjs.map +1 -1
- package/dist/ui/aspect-ratio.d.cts +15 -2
- package/dist/ui/aspect-ratio.d.mts +15 -2
- package/dist/ui/aspect-ratio.mjs +1 -1
- package/dist/ui/aspect-ratio.mjs.map +1 -1
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +20 -4
- package/dist/ui/avatar.d.mts +20 -4
- package/dist/ui/avatar.mjs +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +2 -21
- package/dist/ui/badge.d.mts +2 -21
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/breadcrumb.cjs +1 -1
- package/dist/ui/breadcrumb.cjs.map +1 -1
- package/dist/ui/breadcrumb.d.cts +38 -25
- package/dist/ui/breadcrumb.d.mts +38 -25
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/breadcrumb.mjs.map +1 -1
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.cjs.map +1 -1
- package/dist/ui/button-group.d.cts +27 -6
- package/dist/ui/button-group.d.mts +27 -6
- package/dist/ui/button-group.mjs +1 -1
- package/dist/ui/button-group.mjs.map +1 -1
- package/dist/ui/button.cjs +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/button.mjs +1 -1
- package/dist/ui/buttons/add-new.cjs +1 -1
- package/dist/ui/buttons/add-new.cjs.map +1 -1
- package/dist/ui/buttons/add-new.d.cts +9 -0
- package/dist/ui/buttons/add-new.d.mts +9 -0
- package/dist/ui/buttons/add-new.mjs +1 -1
- package/dist/ui/buttons/add-new.mjs.map +1 -1
- package/dist/ui/buttons/edit.cjs +1 -1
- package/dist/ui/buttons/edit.cjs.map +1 -1
- package/dist/ui/buttons/edit.d.cts +9 -0
- package/dist/ui/buttons/edit.d.mts +9 -0
- package/dist/ui/buttons/edit.mjs +1 -1
- package/dist/ui/buttons/edit.mjs.map +1 -1
- package/dist/ui/buttons/refresh.cjs +1 -1
- package/dist/ui/buttons/refresh.cjs.map +1 -1
- package/dist/ui/buttons/refresh.d.cts +9 -0
- package/dist/ui/buttons/refresh.d.mts +9 -0
- package/dist/ui/buttons/refresh.mjs +1 -1
- package/dist/ui/buttons/refresh.mjs.map +1 -1
- package/dist/ui/buttons/trash.cjs +1 -1
- package/dist/ui/buttons/trash.cjs.map +1 -1
- package/dist/ui/buttons/trash.d.cts +9 -0
- package/dist/ui/buttons/trash.d.mts +9 -0
- package/dist/ui/buttons/trash.mjs +1 -1
- package/dist/ui/buttons/trash.mjs.map +1 -1
- package/dist/ui/buttons/upload-image.cjs +1 -1
- package/dist/ui/buttons/upload-image.cjs.map +1 -1
- package/dist/ui/buttons/upload-image.d.cts +13 -0
- package/dist/ui/buttons/upload-image.d.mts +13 -0
- package/dist/ui/buttons/upload-image.mjs +1 -1
- package/dist/ui/buttons/upload-image.mjs.map +1 -1
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +22 -4
- package/dist/ui/calendar.d.mts +22 -4
- package/dist/ui/calendar.mjs +1 -1
- package/dist/ui/card.cjs +1 -1
- package/dist/ui/card.cjs.map +1 -1
- package/dist/ui/card.d.cts +37 -8
- package/dist/ui/card.d.mts +37 -8
- package/dist/ui/card.mjs +1 -1
- package/dist/ui/card.mjs.map +1 -1
- package/dist/ui/carousel.cjs +1 -1
- package/dist/ui/carousel.cjs.map +1 -1
- package/dist/ui/carousel.d.cts +31 -7
- package/dist/ui/carousel.d.mts +31 -7
- package/dist/ui/carousel.mjs +1 -1
- package/dist/ui/carousel.mjs.map +1 -1
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +17 -2
- package/dist/ui/checkbox.d.mts +17 -2
- package/dist/ui/checkbox.mjs +1 -1
- package/dist/ui/collapsible.cjs.map +1 -1
- package/dist/ui/collapsible.d.cts +22 -4
- package/dist/ui/collapsible.d.mts +22 -4
- package/dist/ui/collapsible.mjs.map +1 -1
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +48 -11
- package/dist/ui/command.d.mts +48 -11
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.d.cts +65 -16
- package/dist/ui/context-menu.d.mts +65 -16
- package/dist/ui/context-menu.mjs +1 -1
- package/dist/ui/context-menu.mjs.map +1 -1
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/dialog.mjs +1 -1
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.cjs.map +1 -1
- package/dist/ui/drawer.d.cts +39 -11
- package/dist/ui/drawer.d.mts +39 -11
- package/dist/ui/drawer.mjs +1 -1
- package/dist/ui/drawer.mjs.map +1 -1
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +65 -16
- package/dist/ui/dropdown-menu.d.mts +65 -16
- package/dist/ui/dropdown-menu.mjs +1 -1
- package/dist/ui/empty.cjs +1 -1
- package/dist/ui/empty.cjs.map +1 -1
- package/dist/ui/empty.d.cts +41 -9
- package/dist/ui/empty.d.mts +39 -7
- package/dist/ui/empty.mjs +1 -1
- package/dist/ui/empty.mjs.map +1 -1
- package/dist/ui/field.cjs +1 -2
- package/dist/ui/field.d.cts +13 -13
- package/dist/ui/field.d.mts +22 -22
- package/dist/ui/field.mjs +1 -2
- package/dist/ui/file-uploader.cjs +2 -2
- package/dist/ui/file-uploader.cjs.map +1 -1
- package/dist/ui/file-uploader.d.cts +27 -2
- package/dist/ui/file-uploader.d.mts +27 -2
- package/dist/ui/file-uploader.mjs +2 -2
- package/dist/ui/file-uploader.mjs.map +1 -1
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.cjs.map +1 -1
- package/dist/ui/form.d.cts +55 -11
- package/dist/ui/form.d.mts +55 -11
- package/dist/ui/form.mjs +1 -1
- package/dist/ui/form.mjs.map +1 -1
- package/dist/ui/hover-card.cjs +1 -1
- package/dist/ui/hover-card.cjs.map +1 -1
- package/dist/ui/hover-card.d.cts +22 -4
- package/dist/ui/hover-card.d.mts +22 -4
- package/dist/ui/hover-card.mjs +1 -1
- package/dist/ui/hover-card.mjs.map +1 -1
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.d.cts +20 -0
- package/dist/ui/image.d.mts +20 -0
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/input-otp.cjs +1 -1
- package/dist/ui/input-otp.cjs.map +1 -1
- package/dist/ui/input-otp.d.cts +36 -5
- package/dist/ui/input-otp.d.mts +36 -5
- package/dist/ui/input-otp.mjs +1 -1
- package/dist/ui/input-otp.mjs.map +1 -1
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.cjs.map +1 -1
- package/dist/ui/inputs/search-input.d.cts +20 -3
- package/dist/ui/inputs/search-input.d.mts +20 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/inputs/search-input.mjs.map +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.cjs.map +1 -1
- package/dist/ui/item.d.cts +55 -15
- package/dist/ui/item.d.mts +55 -15
- package/dist/ui/item.mjs +1 -1
- package/dist/ui/item.mjs.map +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +15 -2
- package/dist/ui/label.d.mts +15 -2
- package/dist/ui/label.mjs +1 -1
- package/dist/ui/menubar.cjs +1 -1
- package/dist/ui/menubar.cjs.map +1 -1
- package/dist/ui/menubar.d.cts +68 -17
- package/dist/ui/menubar.d.mts +68 -17
- package/dist/ui/menubar.mjs +1 -1
- package/dist/ui/menubar.mjs.map +1 -1
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.cjs.map +1 -1
- package/dist/ui/multi-select.d.cts +39 -2
- package/dist/ui/multi-select.d.mts +40 -3
- package/dist/ui/multi-select.mjs +1 -1
- package/dist/ui/multi-select.mjs.map +1 -1
- package/dist/ui/navigation-menu.cjs +1 -1
- package/dist/ui/navigation-menu.cjs.map +1 -1
- package/dist/ui/navigation-menu.d.cts +42 -11
- package/dist/ui/navigation-menu.d.mts +42 -11
- package/dist/ui/navigation-menu.mjs +1 -1
- package/dist/ui/navigation-menu.mjs.map +1 -1
- package/dist/ui/pagination.cjs +1 -1
- package/dist/ui/pagination.cjs.map +1 -1
- package/dist/ui/pagination.d.cts +37 -9
- package/dist/ui/pagination.d.mts +37 -9
- package/dist/ui/pagination.mjs +1 -1
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +32 -6
- package/dist/ui/popover.d.mts +32 -6
- package/dist/ui/popover.mjs +1 -1
- package/dist/ui/progress.cjs +1 -1
- package/dist/ui/progress.cjs.map +1 -1
- package/dist/ui/progress.d.cts +13 -2
- package/dist/ui/progress.d.mts +13 -2
- package/dist/ui/progress.mjs +1 -1
- package/dist/ui/progress.mjs.map +1 -1
- package/dist/ui/radio-group.cjs +1 -1
- package/dist/ui/radio-group.d.cts +25 -3
- package/dist/ui/radio-group.d.mts +25 -3
- package/dist/ui/radio-group.mjs +1 -1
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +29 -9
- package/dist/ui/resizable.d.mts +29 -9
- package/dist/ui/resizable.mjs +1 -1
- package/dist/ui/scroll-area.cjs +1 -1
- package/dist/ui/scroll-area.cjs.map +1 -1
- package/dist/ui/scroll-area.d.cts +24 -6
- package/dist/ui/scroll-area.d.mts +24 -6
- package/dist/ui/scroll-area.mjs +1 -1
- package/dist/ui/scroll-area.mjs.map +1 -1
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +43 -9
- package/dist/ui/select.d.mts +43 -9
- package/dist/ui/select.mjs +1 -1
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +23 -2
- package/dist/ui/separator.d.mts +23 -2
- package/dist/ui/separator.mjs +1 -1
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +38 -9
- package/dist/ui/sheet.d.mts +38 -9
- package/dist/ui/sheet.mjs +1 -1
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.cjs.map +1 -1
- package/dist/ui/sidebar.d.cts +125 -28
- package/dist/ui/sidebar.d.mts +125 -28
- package/dist/ui/sidebar.mjs +1 -1
- package/dist/ui/sidebar.mjs.map +1 -1
- package/dist/ui/skeleton.cjs +1 -1
- package/dist/ui/skeleton.d.cts +19 -2
- package/dist/ui/skeleton.d.mts +19 -2
- package/dist/ui/skeleton.mjs +1 -1
- package/dist/ui/slider.cjs +1 -1
- package/dist/ui/slider.cjs.map +1 -1
- package/dist/ui/slider.d.cts +13 -2
- package/dist/ui/slider.d.mts +13 -2
- package/dist/ui/slider.mjs +1 -1
- package/dist/ui/slider.mjs.map +1 -1
- package/dist/ui/sonner.cjs +1 -1
- package/dist/ui/sonner.cjs.map +1 -1
- package/dist/ui/sonner.d.cts +18 -2
- package/dist/ui/sonner.d.mts +18 -2
- package/dist/ui/sonner.mjs +1 -1
- package/dist/ui/sonner.mjs.map +1 -1
- package/dist/ui/spinner.cjs +1 -1
- package/dist/ui/spinner.d.cts +17 -2
- package/dist/ui/spinner.d.mts +17 -2
- package/dist/ui/spinner.mjs +1 -1
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.cjs.map +1 -1
- package/dist/ui/switch.d.cts +17 -2
- package/dist/ui/switch.d.mts +17 -2
- package/dist/ui/switch.mjs +1 -1
- package/dist/ui/switch.mjs.map +1 -1
- package/dist/ui/table.cjs +1 -1
- package/dist/ui/table.cjs.map +1 -1
- package/dist/ui/table.d.cts +53 -18
- package/dist/ui/table.d.mts +53 -18
- package/dist/ui/table.mjs +1 -1
- package/dist/ui/table.mjs.map +1 -1
- package/dist/ui/tabs.cjs +1 -1
- package/dist/ui/tabs.cjs.map +1 -1
- package/dist/ui/tabs.d.cts +26 -5
- package/dist/ui/tabs.d.mts +26 -5
- package/dist/ui/tabs.mjs +1 -1
- package/dist/ui/tabs.mjs.map +1 -1
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +18 -2
- package/dist/ui/textarea.d.mts +18 -2
- package/dist/ui/textarea.mjs +1 -1
- package/dist/ui/toggle-group.cjs +1 -1
- package/dist/ui/toggle-group.cjs.map +1 -1
- package/dist/ui/toggle-group.d.cts +19 -3
- package/dist/ui/toggle-group.d.mts +19 -3
- package/dist/ui/toggle-group.mjs +1 -1
- package/dist/ui/toggle-group.mjs.map +1 -1
- package/dist/ui/toggle.cjs +1 -1
- package/dist/ui/toggle.cjs.map +1 -1
- package/dist/ui/toggle.d.cts +17 -4
- package/dist/ui/toggle.d.mts +17 -4
- package/dist/ui/toggle.mjs +1 -1
- package/dist/ui/toggle.mjs.map +1 -1
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +37 -5
- package/dist/ui/tooltip.d.mts +37 -5
- package/dist/ui/tooltip.mjs +1 -1
- package/dist/user-BEyYLDNK.cjs +2 -0
- package/dist/user-BEyYLDNK.cjs.map +1 -0
- package/dist/user-DONsffqr.mjs +2 -0
- package/dist/user-DONsffqr.mjs.map +1 -0
- package/package.json +11 -3
- package/styles/theme.css +27 -6
- package/dist/avatar-DReNH6rV.mjs +0 -2
- package/dist/avatar-DReNH6rV.mjs.map +0 -1
- package/dist/avatar-aVxo69zP.cjs +0 -2
- package/dist/avatar-aVxo69zP.cjs.map +0 -1
- package/dist/badge-B4Fa7-J3.mjs +0 -2
- package/dist/badge-B4Fa7-J3.mjs.map +0 -1
- package/dist/badge-cvLJyaCA.cjs +0 -2
- package/dist/badge-cvLJyaCA.cjs.map +0 -1
- package/dist/button-B5a1UlC_.d.mts +0 -59
- package/dist/button-Cd7YtPlT.cjs.map +0 -1
- package/dist/button-D8BUqpI2.mjs +0 -2
- package/dist/button-D8BUqpI2.mjs.map +0 -1
- package/dist/button-DYZCqN6A.d.cts +0 -59
- package/dist/button.variants-B_dFX3i2.mjs +0 -2
- package/dist/button.variants-B_dFX3i2.mjs.map +0 -1
- package/dist/button.variants-aqkTmzFu.cjs +0 -2
- package/dist/button.variants-aqkTmzFu.cjs.map +0 -1
- package/dist/calendar-B-PDpHK5.mjs +0 -2
- package/dist/calendar-B-PDpHK5.mjs.map +0 -1
- package/dist/calendar-Cq3_5u0k.cjs +0 -2
- package/dist/calendar-Cq3_5u0k.cjs.map +0 -1
- package/dist/checkbox-Bg2FiuQw.mjs.map +0 -1
- package/dist/checkbox-C0fSWwmD.cjs.map +0 -1
- package/dist/close-D_Ge7gnP.cjs +0 -2
- package/dist/close-DfuHB7kq.mjs +0 -2
- package/dist/command-Bma4ivZz.mjs.map +0 -1
- package/dist/command-IfPmQiyJ.cjs.map +0 -1
- package/dist/data-display/user.cjs.map +0 -1
- package/dist/data-display/user.mjs.map +0 -1
- package/dist/date-WraHGsbb.cjs +0 -2
- package/dist/date-WraHGsbb.cjs.map +0 -1
- package/dist/date-uVTm7J09.mjs +0 -2
- package/dist/date-uVTm7J09.mjs.map +0 -1
- package/dist/dialog-B50k7HnL.mjs +0 -2
- package/dist/dialog-B50k7HnL.mjs.map +0 -1
- package/dist/dialog-BoNhIQYJ.cjs +0 -2
- package/dist/dialog-BoNhIQYJ.cjs.map +0 -1
- package/dist/dialog-CuZxUWfc.d.cts +0 -47
- package/dist/dialog-D4LnpcNL.d.mts +0 -47
- package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +0 -1
- package/dist/dialogs/detail-dialog/components/sidebar.mjs.map +0 -1
- package/dist/dist-DP1ehOL8.mjs +0 -2
- package/dist/dist-Q1UyT_bc.cjs +0 -2
- package/dist/dropdown-menu-B8GUTfTp.mjs +0 -2
- package/dist/dropdown-menu-B8GUTfTp.mjs.map +0 -1
- package/dist/dropdown-menu-BuyuU6uF.cjs +0 -2
- package/dist/dropdown-menu-BuyuU6uF.cjs.map +0 -1
- package/dist/features/search-modal/index.cjs.map +0 -1
- package/dist/features/search-modal/index.mjs.map +0 -1
- package/dist/features/tables/index.cjs.map +0 -1
- package/dist/features/tables/index.mjs.map +0 -1
- package/dist/features/tanstack-form/index.cjs.map +0 -1
- package/dist/features/tanstack-form/index.mjs.map +0 -1
- package/dist/flex-BsoSgWFN.cjs.map +0 -1
- package/dist/flex-CeizYtXs.mjs.map +0 -1
- package/dist/heading-BEbpIiLg.cjs +0 -2
- package/dist/heading-BEbpIiLg.cjs.map +0 -1
- package/dist/heading-CrF1CFWS.mjs +0 -2
- package/dist/heading-CrF1CFWS.mjs.map +0 -1
- package/dist/image-BBZUipoU.cjs +0 -2
- package/dist/image-BBZUipoU.cjs.map +0 -1
- package/dist/image-CZji4Q26.mjs +0 -2
- package/dist/image-CZji4Q26.mjs.map +0 -1
- package/dist/input-BoMJaF_N.cjs.map +0 -1
- package/dist/input-DMjPBcJO.mjs.map +0 -1
- package/dist/input-DszdZdbJ.d.cts +0 -25
- package/dist/input-Dv7UKl6Z.d.mts +0 -25
- package/dist/label-BzfsTrVt.cjs.map +0 -1
- package/dist/label-Dqr8nxWi.mjs +0 -2
- package/dist/label-Dqr8nxWi.mjs.map +0 -1
- package/dist/layouts/cms-layout/index.cjs.map +0 -1
- package/dist/layouts/cms-layout/index.mjs.map +0 -1
- package/dist/layouts/payment-layout/index.cjs.map +0 -1
- package/dist/layouts/payment-layout/index.mjs.map +0 -1
- package/dist/paragraph-Co2e-y5c.cjs.map +0 -1
- package/dist/paragraph-DmiXlAnE.mjs.map +0 -1
- package/dist/popover-BckwBuuD.mjs +0 -2
- package/dist/popover-BckwBuuD.mjs.map +0 -1
- package/dist/popover-DzDrgttC.cjs.map +0 -1
- package/dist/radio-group-CBhRsUjN.cjs.map +0 -1
- package/dist/radio-group-Cem8O6BK.mjs.map +0 -1
- package/dist/resizable-B8tRShQI.cjs.map +0 -1
- package/dist/resizable-RPObV6jc.mjs.map +0 -1
- package/dist/select-2CgwiefV.cjs.map +0 -1
- package/dist/select-CivtMKTM.mjs.map +0 -1
- package/dist/separator-Bf0gymN4.mjs +0 -2
- package/dist/separator-Bf0gymN4.mjs.map +0 -1
- package/dist/separator-C3ip6sbh.cjs.map +0 -1
- package/dist/sheet-5MJRtrfG.cjs.map +0 -1
- package/dist/sheet-oadGRiie.mjs.map +0 -1
- package/dist/skeleton-Ba6koCVf.mjs +0 -2
- package/dist/skeleton-Ba6koCVf.mjs.map +0 -1
- package/dist/skeleton-CHympz8k.cjs +0 -2
- package/dist/skeleton-CHympz8k.cjs.map +0 -1
- package/dist/spinner-Chm_2fLr.cjs +0 -2
- package/dist/spinner-Chm_2fLr.cjs.map +0 -1
- package/dist/spinner-D1v3Bard.mjs +0 -2
- package/dist/spinner-D1v3Bard.mjs.map +0 -1
- package/dist/textarea-Dlwbg6TY.cjs.map +0 -1
- package/dist/textarea-RjL2DtNf.mjs.map +0 -1
- package/dist/tooltip-B3dTcgcc.mjs +0 -2
- package/dist/tooltip-B3dTcgcc.mjs.map +0 -1
- package/dist/tooltip-DC6i1A25.cjs.map +0 -1
- package/dist/ui/alert.cjs.map +0 -1
- package/dist/ui/alert.mjs.map +0 -1
- package/dist/ui/field.cjs.map +0 -1
- package/dist/ui/field.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../types-BD1t0Bj8.cjs`),n=require(`../badge-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../types-BD1t0Bj8.cjs`),n=require(`../badge-uQ0pIZbQ.cjs`);let r=require(`react/jsx-runtime`);const i={[t.n.ADMIN]:`primary`,[t.n.SUPER_ADMIN]:`danger`,[t.n.MODERATOR]:`info`,[t.n.STAFF]:`accent`,[t.n.USER]:`muted`},a={[t.n.SUPER_ADMIN]:`Super Admin`,[t.n.ADMIN]:`Admin`,[t.n.MODERATOR]:`Moderator`,[t.n.STAFF]:`Staff`,[t.n.USER]:`User`},o=({status:e})=>(0,r.jsx)(n.t,{"data-slot":`role-badge`,color:i[e],className:`min-w-24 justify-center`,children:a[e]});exports.RoleBadge=o;
|
|
2
2
|
//# sourceMappingURL=role-badge.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-badge.cjs","names":["
|
|
1
|
+
{"version":3,"file":"role-badge.cjs","names":["ROLE_COLORS: Record<ERole, React.ComponentProps<typeof Badge>['color']>","ERole","ROLE_LABELS: Record<ERole, string>","RoleBadge: React.FC<RoleBadgeProps>","Badge"],"sources":["../../packages/components/data-display/role-badge.tsx"],"sourcesContent":["'use client';\n\nimport { ERole } from '@/types';\n\nimport { Badge } from '../ui/badge';\n\nconst ROLE_COLORS: Record<ERole, React.ComponentProps<typeof Badge>['color']> = {\n [ERole.ADMIN]: 'primary',\n [ERole.SUPER_ADMIN]: 'danger',\n [ERole.MODERATOR]: 'info',\n [ERole.STAFF]: 'accent',\n [ERole.USER]: 'muted',\n};\n\nconst ROLE_LABELS: Record<ERole, string> = {\n [ERole.SUPER_ADMIN]: 'Super Admin',\n [ERole.ADMIN]: 'Admin',\n [ERole.MODERATOR]: 'Moderator',\n [ERole.STAFF]: 'Staff',\n [ERole.USER]: 'User',\n};\n\ntype RoleBadgeProps = {\n /** The user role enum value that determines the badge label and colour. */\n status: ERole;\n};\n\n/**\n * Renders a colour-coded badge for a user role (e.g. Admin, Staff, User).\n *\n * @example\n * ```tsx\n * import { RoleBadge } from '@customafk/lunas-ui/data-display/role-badge';\n * import { ERole } from '@customafk/lunas-ui/types';\n *\n * <RoleBadge status={ERole.ADMIN} />\n * ```\n */\nexport const RoleBadge: React.FC<RoleBadgeProps> = ({ status }) => {\n return (\n <Badge data-slot=\"role-badge\" color={ROLE_COLORS[status]} className=\"min-w-24 justify-center\">\n {ROLE_LABELS[status]}\n </Badge>\n );\n};\n"],"mappings":"+JAMA,MAAMA,EAA0E,EAC7EC,EAAAA,EAAM,OAAQ,WACdA,EAAAA,EAAM,aAAc,UACpBA,EAAAA,EAAM,WAAY,QAClBA,EAAAA,EAAM,OAAQ,UACdA,EAAAA,EAAM,MAAO,QACf,CAEKC,EAAqC,EACxCD,EAAAA,EAAM,aAAc,eACpBA,EAAAA,EAAM,OAAQ,SACdA,EAAAA,EAAM,WAAY,aAClBA,EAAAA,EAAM,OAAQ,SACdA,EAAAA,EAAM,MAAO,OACf,CAkBYE,GAAuC,CAAE,aAElD,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAM,YAAU,aAAa,MAAO,EAAY,GAAS,UAAU,mCACjE,EAAY,IACP"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { r as ERole } from "../types-
|
|
1
|
+
import { r as ERole } from "../types-CDYHkcOk.cjs";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/data-display/role-badge.d.ts
|
|
4
|
-
type
|
|
4
|
+
type RoleBadgeProps = {
|
|
5
|
+
/** The user role enum value that determines the badge label and colour. */
|
|
5
6
|
status: ERole;
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Renders a colour-coded badge for a user role (e.g. Admin, Staff, User).
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { RoleBadge } from '@customafk/lunas-ui/data-display/role-badge';
|
|
14
|
+
* import { ERole } from '@customafk/lunas-ui/types';
|
|
15
|
+
*
|
|
16
|
+
* <RoleBadge status={ERole.ADMIN} />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const RoleBadge: React.FC<RoleBadgeProps>;
|
|
8
20
|
//#endregion
|
|
9
21
|
export { RoleBadge };
|
|
10
22
|
//# sourceMappingURL=role-badge.d.cts.map
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { r as ERole } from "../types-
|
|
1
|
+
import { r as ERole } from "../types-B_32Ieia.mjs";
|
|
2
2
|
|
|
3
3
|
//#region packages/components/data-display/role-badge.d.ts
|
|
4
|
-
type
|
|
4
|
+
type RoleBadgeProps = {
|
|
5
|
+
/** The user role enum value that determines the badge label and colour. */
|
|
5
6
|
status: ERole;
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Renders a colour-coded badge for a user role (e.g. Admin, Staff, User).
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { RoleBadge } from '@customafk/lunas-ui/data-display/role-badge';
|
|
14
|
+
* import { ERole } from '@customafk/lunas-ui/types';
|
|
15
|
+
*
|
|
16
|
+
* <RoleBadge status={ERole.ADMIN} />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const RoleBadge: React.FC<RoleBadgeProps>;
|
|
8
20
|
//#endregion
|
|
9
21
|
export { RoleBadge };
|
|
10
22
|
//# sourceMappingURL=role-badge.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"../types-
|
|
1
|
+
"use client";import{n as e}from"../types-DNphnTW-.mjs";import{t}from"../badge-B8bw2UEY.mjs";import{jsx as n}from"react/jsx-runtime";const r={[e.ADMIN]:`primary`,[e.SUPER_ADMIN]:`danger`,[e.MODERATOR]:`info`,[e.STAFF]:`accent`,[e.USER]:`muted`},i={[e.SUPER_ADMIN]:`Super Admin`,[e.ADMIN]:`Admin`,[e.MODERATOR]:`Moderator`,[e.STAFF]:`Staff`,[e.USER]:`User`},a=({status:e})=>n(t,{"data-slot":`role-badge`,color:r[e],className:`min-w-24 justify-center`,children:i[e]});export{a as RoleBadge};
|
|
2
2
|
//# sourceMappingURL=role-badge.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-badge.mjs","names":["
|
|
1
|
+
{"version":3,"file":"role-badge.mjs","names":["ROLE_COLORS: Record<ERole, React.ComponentProps<typeof Badge>['color']>","ROLE_LABELS: Record<ERole, string>","RoleBadge: React.FC<RoleBadgeProps>"],"sources":["../../packages/components/data-display/role-badge.tsx"],"sourcesContent":["'use client';\n\nimport { ERole } from '@/types';\n\nimport { Badge } from '../ui/badge';\n\nconst ROLE_COLORS: Record<ERole, React.ComponentProps<typeof Badge>['color']> = {\n [ERole.ADMIN]: 'primary',\n [ERole.SUPER_ADMIN]: 'danger',\n [ERole.MODERATOR]: 'info',\n [ERole.STAFF]: 'accent',\n [ERole.USER]: 'muted',\n};\n\nconst ROLE_LABELS: Record<ERole, string> = {\n [ERole.SUPER_ADMIN]: 'Super Admin',\n [ERole.ADMIN]: 'Admin',\n [ERole.MODERATOR]: 'Moderator',\n [ERole.STAFF]: 'Staff',\n [ERole.USER]: 'User',\n};\n\ntype RoleBadgeProps = {\n /** The user role enum value that determines the badge label and colour. */\n status: ERole;\n};\n\n/**\n * Renders a colour-coded badge for a user role (e.g. Admin, Staff, User).\n *\n * @example\n * ```tsx\n * import { RoleBadge } from '@customafk/lunas-ui/data-display/role-badge';\n * import { ERole } from '@customafk/lunas-ui/types';\n *\n * <RoleBadge status={ERole.ADMIN} />\n * ```\n */\nexport const RoleBadge: React.FC<RoleBadgeProps> = ({ status }) => {\n return (\n <Badge data-slot=\"role-badge\" color={ROLE_COLORS[status]} className=\"min-w-24 justify-center\">\n {ROLE_LABELS[status]}\n </Badge>\n );\n};\n"],"mappings":"oIAMA,MAAMA,EAA0E,EAC7E,EAAM,OAAQ,WACd,EAAM,aAAc,UACpB,EAAM,WAAY,QAClB,EAAM,OAAQ,UACd,EAAM,MAAO,QACf,CAEKC,EAAqC,EACxC,EAAM,aAAc,eACpB,EAAM,OAAQ,SACd,EAAM,WAAY,aAClB,EAAM,OAAQ,SACd,EAAM,MAAO,OACf,CAkBYC,GAAuC,CAAE,YAElD,EAAC,EAAA,CAAM,YAAU,aAAa,MAAO,EAAY,GAAS,UAAU,mCACjE,EAAY,IACP"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../chunk-Bmb41Sf3.cjs`)
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@customafk/react-toolkit/utils`),i=require(`class-variance-authority`);const a=(0,i.cva)(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive-strong`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`lg`,trend:`neutral`}}),o=(0,t.memo)(({decimalSeparator:e=`.`,groupSeparator:i=`,`,prefix:o,suffix:s,precision:c,roundingMode:l=`round`,showTrailingZeros:u=!1,size:d=`lg`,trend:f=`neutral`,value:p,className:m})=>{let h=(0,t.useCallback)((e,t)=>{let n=10**t;switch(l){case`floor`:return Math.floor(e*n)/n;case`ceil`:return Math.ceil(e*n)/n;default:return Math.round(e*n)/n}},[l]),g=(0,t.useMemo)(()=>{let e={};return typeof c==`number`&&c>=0&&(u&&(e.minimumFractionDigits=c),e.maximumFractionDigits=c),e},[c,u]),_=(0,t.useCallback)(e=>{let t=e;return typeof c==`number`&&c>=0&&(t=h(e,c)),t.toLocaleString(`en-US`,g)},[h,g,c]),v=(0,t.useMemo)(()=>{if(typeof p==`number`)return Number.isNaN(p)||!Number.isFinite(p)?`N/A`:_(p);if(typeof p==`string`){let e=p.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:_(t)}return`N/A`},[p,_]),y=(0,t.useMemo)(()=>e===`.`&&i===`,`?v:v.replace(/,/g,i).replace(/\./g,e),[v,e,i]);return(0,n.jsxs)(`div`,{"data-slot":`statistic`,className:(0,r.cn)(a({size:d,trend:f}),m),children:[o&&(0,n.jsx)(`span`,{"data-slot":`statistic-prefix`,children:o}),(0,n.jsx)(`p`,{"data-slot":`statistic-value`,children:y}),s&&(0,n.jsx)(`span`,{"data-slot":`statistic-suffix`,children:s})]})});o.displayName=`Statistic`,exports.Statistic=o;
|
|
2
2
|
//# sourceMappingURL=statistic.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistic.cjs","names":["options: Intl.NumberFormatOptions"
|
|
1
|
+
{"version":3,"file":"statistic.cjs","names":["options: Intl.NumberFormatOptions"],"sources":["../../packages/components/data-display/statistic.tsx"],"sourcesContent":["'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\nconst statisticVariants = 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-strong',\n up: 'text-success',\n down: 'text-danger',\n },\n },\n defaultVariants: {\n size: 'lg',\n trend: 'neutral',\n },\n});\n\nexport type StatisticProps = VariantProps<typeof statisticVariants> & {\n /** Character used to separate the decimal part. Defaults to `'.'`. */\n decimalSeparator?: string;\n /** Character used to separate thousands groups. Defaults to `','`. */\n groupSeparator?: string;\n /** Optional node rendered before the numeric value (e.g. a currency symbol). */\n prefix?: React.ReactNode;\n /** Optional node rendered after the numeric value (e.g. a unit label). */\n suffix?: React.ReactNode;\n /** Number of decimal digits to display; omit to show all significant digits. */\n precision?: number;\n /** Rounding strategy applied before formatting. Defaults to `'round'`. */\n roundingMode?: 'round' | 'floor' | 'ceil';\n /** When `true`, pads the decimal part with trailing zeros up to `precision`. Defaults to `false`. */\n showTrailingZeros?: boolean;\n /** The numeric (or numeric-string) value to format and display. */\n value: number | string;\n /** Additional CSS classes applied to the wrapper element. */\n className?: string;\n /** Colour trend indicator: `'neutral'` (default), `'up'` (green), or `'down'` (red). */\n trend?: 'neutral' | 'up' | 'down';\n};\n\n/**\n * A memoised numeric display component with locale-aware formatting, optional prefix/suffix, trend colouring, and configurable rounding.\n *\n * @example\n * ```tsx\n * import { Statistic } from '@customafk/lunas-ui/data-display/statistic';\n *\n * <Statistic value={1234567.89} precision={2} prefix=\"$\" trend=\"up\" size=\"lg\" />\n * ```\n */\nexport const Statistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'lg',\n trend = 'neutral',\n value,\n className,\n }: StatisticProps) => {\n const applyRounding = useCallback(\n (num: number, precisionValue: number): number => {\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 [roundingMode]\n );\n\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);\n }\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [applyRounding, 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 return (\n <div data-slot=\"statistic\" className={cn(statisticVariants({ size, trend }), className)}>\n {Prefix && <span data-slot=\"statistic-prefix\">{Prefix}</span>}\n <p data-slot=\"statistic-value\">{finalFormattedValue}</p>\n {Suffix && <span data-slot=\"statistic-suffix\">{Suffix}</span>}\n </div>\n );\n }\n);\nStatistic.displayName = 'Statistic';\n"],"mappings":"8LAMA,MAAM,GAAA,EAAA,EAAA,KAAwB,4EAA6E,CACzG,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,UACL,CACD,MAAO,CACL,QAAS,4BACT,GAAI,eACJ,KAAM,cACP,CACF,CACD,gBAAiB,CACf,KAAM,KACN,MAAO,UACR,CACF,CAAC,CAmCW,GAAA,EAAA,EAAA,OACV,CACC,mBAAmB,IACnB,iBAAiB,IACjB,OAAQ,EACR,OAAQ,EACR,YACA,eAAe,QACf,oBAAoB,GACpB,OAAO,KACP,QAAQ,UACR,QACA,eACoB,CACpB,IAAM,GAAA,EAAA,EAAA,cACH,EAAa,IAAmC,CAC/C,IAAM,EAAa,IAAM,EACzB,OAAQ,EAAR,CACE,IAAK,QACH,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,EACxC,IAAK,OACH,OAAO,KAAK,KAAK,EAAM,EAAW,CAAG,EACvC,QACE,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,IAG5C,CAAC,EAAa,CACf,CAEK,GAAA,EAAA,EAAA,aAAwD,CAC5D,IAAMA,EAAoC,EAAE,CAS5C,OARI,OAAO,GAAc,UAAY,GAAa,IAC5C,IACF,EAAQ,sBAAwB,GAGhC,EAAQ,sBAAwB,GAG7B,GACN,CAAC,EAAW,EAAkB,CAAC,CAE5B,GAAA,EAAA,EAAA,aACH,GAAwB,CACvB,IAAI,EAAe,EAInB,OAHI,OAAO,GAAc,UAAY,GAAa,IAChD,EAAe,EAAc,EAAK,EAAU,EAEvC,EAAa,eAAe,QAAS,EAAc,EAE5D,CAAC,EAAe,EAAe,EAAU,CAC1C,CAEK,GAAA,EAAA,EAAA,aAAuC,CAC3C,GAAI,OAAO,GAAU,SAEnB,OADI,OAAO,MAAM,EAAM,EAAI,CAAC,OAAO,SAAS,EAAM,CAAS,MACpD,EAAa,EAAM,CAE5B,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAe,EAAM,MAAM,CACjC,GAAI,CAAC,EAAc,MAAO,MAC1B,IAAM,EAAW,OAAO,EAAa,CAErC,OADI,OAAO,MAAM,EAAS,EAAI,CAAC,OAAO,SAAS,EAAS,CAAS,MAC1D,EAAa,EAAS,CAE/B,MAAO,OACN,CAAC,EAAO,EAAa,CAAC,CAEnB,GAAA,EAAA,EAAA,aACA,IAAqB,KAAO,IAAmB,IAAY,EACxD,EAAe,QAAQ,KAAM,EAAe,CAAC,QAAQ,MAAO,EAAiB,CACnF,CAAC,EAAgB,EAAkB,EAAe,CAAC,CAEtD,OACE,EAAA,EAAA,MAAC,MAAA,CAAI,YAAU,YAAY,WAAA,EAAA,EAAA,IAAc,EAAkB,CAAE,OAAM,QAAO,CAAC,CAAE,EAAU,WACpF,IAAU,EAAA,EAAA,KAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,EAC7D,EAAA,EAAA,KAAC,IAAA,CAAE,YAAU,2BAAmB,GAAwB,CACvD,IAAU,EAAA,EAAA,KAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,GACzD,EAGX,CACD,EAAU,YAAc"}
|
|
@@ -1,18 +1,45 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
2
3
|
import * as react0 from "react";
|
|
4
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
5
|
|
|
4
6
|
//#region packages/components/data-display/statistic.d.ts
|
|
5
|
-
|
|
7
|
+
declare const statisticVariants: (props?: ({
|
|
8
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
|
|
9
|
+
trend?: "neutral" | "up" | "down" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
11
|
+
type StatisticProps = VariantProps<typeof statisticVariants> & {
|
|
12
|
+
/** Character used to separate the decimal part. Defaults to `'.'`. */
|
|
6
13
|
decimalSeparator?: string;
|
|
14
|
+
/** Character used to separate thousands groups. Defaults to `','`. */
|
|
7
15
|
groupSeparator?: string;
|
|
16
|
+
/** Optional node rendered before the numeric value (e.g. a currency symbol). */
|
|
8
17
|
prefix?: React.ReactNode;
|
|
18
|
+
/** Optional node rendered after the numeric value (e.g. a unit label). */
|
|
9
19
|
suffix?: React.ReactNode;
|
|
20
|
+
/** Number of decimal digits to display; omit to show all significant digits. */
|
|
10
21
|
precision?: number;
|
|
22
|
+
/** Rounding strategy applied before formatting. Defaults to `'round'`. */
|
|
11
23
|
roundingMode?: 'round' | 'floor' | 'ceil';
|
|
24
|
+
/** When `true`, pads the decimal part with trailing zeros up to `precision`. Defaults to `false`. */
|
|
12
25
|
showTrailingZeros?: boolean;
|
|
13
|
-
|
|
26
|
+
/** The numeric (or numeric-string) value to format and display. */
|
|
14
27
|
value: number | string;
|
|
28
|
+
/** Additional CSS classes applied to the wrapper element. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Colour trend indicator: `'neutral'` (default), `'up'` (green), or `'down'` (red). */
|
|
31
|
+
trend?: 'neutral' | 'up' | 'down';
|
|
15
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* A memoised numeric display component with locale-aware formatting, optional prefix/suffix, trend colouring, and configurable rounding.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* import { Statistic } from '@customafk/lunas-ui/data-display/statistic';
|
|
39
|
+
*
|
|
40
|
+
* <Statistic value={1234567.89} precision={2} prefix="$" trend="up" size="lg" />
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
16
43
|
declare const Statistic: react0.MemoExoticComponent<({
|
|
17
44
|
decimalSeparator,
|
|
18
45
|
groupSeparator,
|
|
@@ -22,8 +49,10 @@ declare const Statistic: react0.MemoExoticComponent<({
|
|
|
22
49
|
roundingMode,
|
|
23
50
|
showTrailingZeros,
|
|
24
51
|
size,
|
|
25
|
-
|
|
26
|
-
|
|
52
|
+
trend,
|
|
53
|
+
value,
|
|
54
|
+
className
|
|
55
|
+
}: StatisticProps) => react_jsx_runtime0.JSX.Element>;
|
|
27
56
|
//#endregion
|
|
28
|
-
export { Statistic };
|
|
57
|
+
export { Statistic, StatisticProps };
|
|
29
58
|
//# sourceMappingURL=statistic.d.cts.map
|
|
@@ -1,19 +1,46 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as react0 from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
3
5
|
|
|
4
6
|
//#region packages/components/data-display/statistic.d.ts
|
|
5
|
-
|
|
7
|
+
declare const statisticVariants: (props?: ({
|
|
8
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
|
|
9
|
+
trend?: "neutral" | "up" | "down" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
11
|
+
type StatisticProps = VariantProps<typeof statisticVariants> & {
|
|
12
|
+
/** Character used to separate the decimal part. Defaults to `'.'`. */
|
|
6
13
|
decimalSeparator?: string;
|
|
14
|
+
/** Character used to separate thousands groups. Defaults to `','`. */
|
|
7
15
|
groupSeparator?: string;
|
|
16
|
+
/** Optional node rendered before the numeric value (e.g. a currency symbol). */
|
|
8
17
|
prefix?: React.ReactNode;
|
|
18
|
+
/** Optional node rendered after the numeric value (e.g. a unit label). */
|
|
9
19
|
suffix?: React.ReactNode;
|
|
20
|
+
/** Number of decimal digits to display; omit to show all significant digits. */
|
|
10
21
|
precision?: number;
|
|
22
|
+
/** Rounding strategy applied before formatting. Defaults to `'round'`. */
|
|
11
23
|
roundingMode?: 'round' | 'floor' | 'ceil';
|
|
24
|
+
/** When `true`, pads the decimal part with trailing zeros up to `precision`. Defaults to `false`. */
|
|
12
25
|
showTrailingZeros?: boolean;
|
|
13
|
-
|
|
26
|
+
/** The numeric (or numeric-string) value to format and display. */
|
|
14
27
|
value: number | string;
|
|
28
|
+
/** Additional CSS classes applied to the wrapper element. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Colour trend indicator: `'neutral'` (default), `'up'` (green), or `'down'` (red). */
|
|
31
|
+
trend?: 'neutral' | 'up' | 'down';
|
|
15
32
|
};
|
|
16
|
-
|
|
33
|
+
/**
|
|
34
|
+
* A memoised numeric display component with locale-aware formatting, optional prefix/suffix, trend colouring, and configurable rounding.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* import { Statistic } from '@customafk/lunas-ui/data-display/statistic';
|
|
39
|
+
*
|
|
40
|
+
* <Statistic value={1234567.89} precision={2} prefix="$" trend="up" size="lg" />
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
declare const Statistic: react0.MemoExoticComponent<({
|
|
17
44
|
decimalSeparator,
|
|
18
45
|
groupSeparator,
|
|
19
46
|
prefix: Prefix,
|
|
@@ -22,8 +49,10 @@ declare const Statistic: react9.MemoExoticComponent<({
|
|
|
22
49
|
roundingMode,
|
|
23
50
|
showTrailingZeros,
|
|
24
51
|
size,
|
|
25
|
-
|
|
26
|
-
|
|
52
|
+
trend,
|
|
53
|
+
value,
|
|
54
|
+
className
|
|
55
|
+
}: StatisticProps) => react_jsx_runtime0.JSX.Element>;
|
|
27
56
|
//#endregion
|
|
28
|
-
export { Statistic };
|
|
57
|
+
export { Statistic, StatisticProps };
|
|
29
58
|
//# sourceMappingURL=statistic.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{memo as e,useCallback as t,useMemo as n}from"react";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{cn as a}from"@customafk/react-toolkit/utils";import{cva as o}from"class-variance-authority";const s=o(`inline-flex items-center gap-1 font-number tabular-nums transition-colors`,{variants:{size:{xs:`text-xs`,sm:`text-sm`,md:`text-base`,lg:`text-lg`,xl:`text-xl`},trend:{neutral:`text-text-positive-strong`,up:`text-success`,down:`text-danger`}},defaultVariants:{size:`lg`,trend:`neutral`}}),c=e(({decimalSeparator:e=`.`,groupSeparator:o=`,`,prefix:c,suffix:l,precision:u,roundingMode:d=`round`,showTrailingZeros:f=!1,size:p=`lg`,trend:m=`neutral`,value:h,className:g})=>{let _=t((e,t)=>{let n=10**t;switch(d){case`floor`:return Math.floor(e*n)/n;case`ceil`:return Math.ceil(e*n)/n;default:return Math.round(e*n)/n}},[d]),v=n(()=>{let e={};return typeof u==`number`&&u>=0&&(f&&(e.minimumFractionDigits=u),e.maximumFractionDigits=u),e},[u,f]),y=t(e=>{let t=e;return typeof u==`number`&&u>=0&&(t=_(e,u)),t.toLocaleString(`en-US`,v)},[_,v,u]),b=n(()=>{if(typeof h==`number`)return Number.isNaN(h)||!Number.isFinite(h)?`N/A`:y(h);if(typeof h==`string`){let e=h.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:y(t)}return`N/A`},[h,y]),x=n(()=>e===`.`&&o===`,`?b:b.replace(/,/g,o).replace(/\./g,e),[b,e,o]);return i(`div`,{"data-slot":`statistic`,className:a(s({size:p,trend:m}),g),children:[c&&r(`span`,{"data-slot":`statistic-prefix`,children:c}),r(`p`,{"data-slot":`statistic-value`,children:x}),l&&r(`span`,{"data-slot":`statistic-suffix`,children:l})]})});c.displayName=`Statistic`;export{c as Statistic};
|
|
2
2
|
//# sourceMappingURL=statistic.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistic.mjs","names":["options: Intl.NumberFormatOptions"],"sources":["../../packages/components/data-display/statistic.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"statistic.mjs","names":["options: Intl.NumberFormatOptions"],"sources":["../../packages/components/data-display/statistic.tsx"],"sourcesContent":["'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\nconst statisticVariants = 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-strong',\n up: 'text-success',\n down: 'text-danger',\n },\n },\n defaultVariants: {\n size: 'lg',\n trend: 'neutral',\n },\n});\n\nexport type StatisticProps = VariantProps<typeof statisticVariants> & {\n /** Character used to separate the decimal part. Defaults to `'.'`. */\n decimalSeparator?: string;\n /** Character used to separate thousands groups. Defaults to `','`. */\n groupSeparator?: string;\n /** Optional node rendered before the numeric value (e.g. a currency symbol). */\n prefix?: React.ReactNode;\n /** Optional node rendered after the numeric value (e.g. a unit label). */\n suffix?: React.ReactNode;\n /** Number of decimal digits to display; omit to show all significant digits. */\n precision?: number;\n /** Rounding strategy applied before formatting. Defaults to `'round'`. */\n roundingMode?: 'round' | 'floor' | 'ceil';\n /** When `true`, pads the decimal part with trailing zeros up to `precision`. Defaults to `false`. */\n showTrailingZeros?: boolean;\n /** The numeric (or numeric-string) value to format and display. */\n value: number | string;\n /** Additional CSS classes applied to the wrapper element. */\n className?: string;\n /** Colour trend indicator: `'neutral'` (default), `'up'` (green), or `'down'` (red). */\n trend?: 'neutral' | 'up' | 'down';\n};\n\n/**\n * A memoised numeric display component with locale-aware formatting, optional prefix/suffix, trend colouring, and configurable rounding.\n *\n * @example\n * ```tsx\n * import { Statistic } from '@customafk/lunas-ui/data-display/statistic';\n *\n * <Statistic value={1234567.89} precision={2} prefix=\"$\" trend=\"up\" size=\"lg\" />\n * ```\n */\nexport const Statistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'lg',\n trend = 'neutral',\n value,\n className,\n }: StatisticProps) => {\n const applyRounding = useCallback(\n (num: number, precisionValue: number): number => {\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 [roundingMode]\n );\n\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);\n }\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [applyRounding, 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 return (\n <div data-slot=\"statistic\" className={cn(statisticVariants({ size, trend }), className)}>\n {Prefix && <span data-slot=\"statistic-prefix\">{Prefix}</span>}\n <p data-slot=\"statistic-value\">{finalFormattedValue}</p>\n {Suffix && <span data-slot=\"statistic-suffix\">{Suffix}</span>}\n </div>\n );\n }\n);\nStatistic.displayName = 'Statistic';\n"],"mappings":"6NAMA,MAAM,EAAoB,EAAI,4EAA6E,CACzG,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,UACL,CACD,MAAO,CACL,QAAS,4BACT,GAAI,eACJ,KAAM,cACP,CACF,CACD,gBAAiB,CACf,KAAM,KACN,MAAO,UACR,CACF,CAAC,CAmCW,EAAY,GACtB,CACC,mBAAmB,IACnB,iBAAiB,IACjB,OAAQ,EACR,OAAQ,EACR,YACA,eAAe,QACf,oBAAoB,GACpB,OAAO,KACP,QAAQ,UACR,QACA,eACoB,CACpB,IAAM,EAAgB,GACnB,EAAa,IAAmC,CAC/C,IAAM,EAAa,IAAM,EACzB,OAAQ,EAAR,CACE,IAAK,QACH,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,EACxC,IAAK,OACH,OAAO,KAAK,KAAK,EAAM,EAAW,CAAG,EACvC,QACE,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,IAG5C,CAAC,EAAa,CACf,CAEK,EAAgB,MAAwC,CAC5D,IAAMA,EAAoC,EAAE,CAS5C,OARI,OAAO,GAAc,UAAY,GAAa,IAC5C,IACF,EAAQ,sBAAwB,GAGhC,EAAQ,sBAAwB,GAG7B,GACN,CAAC,EAAW,EAAkB,CAAC,CAE5B,EAAe,EAClB,GAAwB,CACvB,IAAI,EAAe,EAInB,OAHI,OAAO,GAAc,UAAY,GAAa,IAChD,EAAe,EAAc,EAAK,EAAU,EAEvC,EAAa,eAAe,QAAS,EAAc,EAE5D,CAAC,EAAe,EAAe,EAAU,CAC1C,CAEK,EAAiB,MAAsB,CAC3C,GAAI,OAAO,GAAU,SAEnB,OADI,OAAO,MAAM,EAAM,EAAI,CAAC,OAAO,SAAS,EAAM,CAAS,MACpD,EAAa,EAAM,CAE5B,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAe,EAAM,MAAM,CACjC,GAAI,CAAC,EAAc,MAAO,MAC1B,IAAM,EAAW,OAAO,EAAa,CAErC,OADI,OAAO,MAAM,EAAS,EAAI,CAAC,OAAO,SAAS,EAAS,CAAS,MAC1D,EAAa,EAAS,CAE/B,MAAO,OACN,CAAC,EAAO,EAAa,CAAC,CAEnB,EAAsB,MACtB,IAAqB,KAAO,IAAmB,IAAY,EACxD,EAAe,QAAQ,KAAM,EAAe,CAAC,QAAQ,MAAO,EAAiB,CACnF,CAAC,EAAgB,EAAkB,EAAe,CAAC,CAEtD,OACE,EAAC,MAAA,CAAI,YAAU,YAAY,UAAW,EAAG,EAAkB,CAAE,OAAM,QAAO,CAAC,CAAE,EAAU,WACpF,GAAU,EAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,CAC7D,EAAC,IAAA,CAAE,YAAU,2BAAmB,GAAwB,CACvD,GAAU,EAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,GACzD,EAGX,CACD,EAAU,YAAc"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=user.cjs.map
|
|
1
|
+
"use client";require(`../paragraph-DN85Huc4.cjs`),require(`../flex-BbbogTsZ.cjs`),require(`../avatar-CTS9-raY.cjs`);const e=require(`../user-BEyYLDNK.cjs`);exports.UserDataDisplay=e.t;
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
//#region packages/components/data-display/user.d.ts
|
|
2
2
|
type UserDataDisplayProps = {
|
|
3
|
+
/** Unique identifier used to deterministically generate the avatar background colour. */
|
|
3
4
|
uuid: string;
|
|
5
|
+
/** Display name rendered as the primary line of the user card. */
|
|
4
6
|
username: string;
|
|
7
|
+
/** Email address rendered as the secondary, muted line below the username. */
|
|
5
8
|
email: string;
|
|
6
9
|
};
|
|
7
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Displays a user identity card with a colour-hashed avatar, username, and email address.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { UserDataDisplay } from '@customafk/lunas-ui/data-display/user';
|
|
16
|
+
*
|
|
17
|
+
* <UserDataDisplay uuid="abc-123" username="Nguyễn Văn An" email="an@example.com" />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare const UserDataDisplay: React.FC<UserDataDisplayProps>;
|
|
8
21
|
//#endregion
|
|
9
22
|
export { UserDataDisplay };
|
|
10
23
|
//# sourceMappingURL=user.d.cts.map
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
//#region packages/components/data-display/user.d.ts
|
|
2
2
|
type UserDataDisplayProps = {
|
|
3
|
+
/** Unique identifier used to deterministically generate the avatar background colour. */
|
|
3
4
|
uuid: string;
|
|
5
|
+
/** Display name rendered as the primary line of the user card. */
|
|
4
6
|
username: string;
|
|
7
|
+
/** Email address rendered as the secondary, muted line below the username. */
|
|
5
8
|
email: string;
|
|
6
9
|
};
|
|
7
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Displays a user identity card with a colour-hashed avatar, username, and email address.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { UserDataDisplay } from '@customafk/lunas-ui/data-display/user';
|
|
16
|
+
*
|
|
17
|
+
* <UserDataDisplay uuid="abc-123" username="Nguyễn Văn An" email="an@example.com" />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare const UserDataDisplay: React.FC<UserDataDisplayProps>;
|
|
8
21
|
//#endregion
|
|
9
22
|
export { UserDataDisplay };
|
|
10
23
|
//# sourceMappingURL=user.d.mts.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=user.mjs.map
|
|
1
|
+
"use client";import"../paragraph-Ch5TvEqL.mjs";import"../flex-BLMTj7Ev.mjs";import"../avatar-DbxqvCjT.mjs";import{t as e}from"../user-DONsffqr.mjs";export{e as UserDataDisplay};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as e,useMemo as t}from"react";import{jsx as n}from"react/jsx-runtime";import{cn as r}from"@customafk/react-toolkit/utils";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 n(`span`,{className:r(`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 n(`time`,{"data-slot":`date-display`,dateTime:S.toISOString(),className:r(`tabular-nums text-xs text-text-positive-weak transition-colors`,b),title:M,children:j})};export{g as t};
|
|
2
|
+
//# sourceMappingURL=date-CVz9xdCg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-CVz9xdCg.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-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@customafk/react-toolkit/utils`),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,n.jsx)(`span`,{className:(0,r.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,n.jsx)(`time`,{"data-slot":`date-display`,dateTime:p.toISOString(),className:(0,r.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-a3RI5Pwo.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-a3RI5Pwo.cjs","names":["DateDisplay: React.FC<DateDisplayProps>"],"sources":["../packages/constants.tsx","../packages/components/data-display/date.tsx"],"sourcesContent":["// Vietnamese locale configuration\nexport const vietnameseLocale = {\n weekdays: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n months: ['Tháng 01', 'Tháng 02', 'Tháng 03', 'Tháng 04', 'Tháng 05', 'Tháng 06', 'Tháng 07', 'Tháng 08', 'Tháng 09', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n monthsShort: ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'],\n};\n\n// Vietnamese holidays\nexport const vietnameseHolidays = {\n '01-01': 'Tết Dương lịch',\n '03-08': 'Quốc tế Phụ nữ',\n '04-30': 'Ngày Giải phóng miền Nam',\n '05-01': 'Quốc tế Lao động',\n '09-02': 'Quốc khánh',\n '10-20': 'Ngày Phụ nữ Việt Nam',\n '11-20': 'Ngày Nhà giáo Việt Nam',\n};\n\n// Time Constants in milliseconds, seconds, and minutes\nexport const TIME_IN_MS = Object.freeze({\n SECOND: 1000,\n MINUTE: 60 * 1000,\n HOUR: 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000, // Approximation for month length = 30 days\n YEAR: 365 * 24 * 60 * 60 * 1000,\n});\n\nexport const TIME_IN_SECONDS = Object.freeze({\n MINUTE: 60,\n HOUR: 60 * 60,\n DAY: 24 * 60 * 60,\n WEEK: 7 * 24 * 60 * 60,\n MONTH: 30 * 24 * 60 * 60,\n YEAR: 365 * 24 * 60 * 60,\n});\n\nexport const TIME_IN_MINUTES = Object.freeze({\n HOUR: 60,\n DAY: 24 * 60,\n WEEK: 7 * 24 * 60,\n MONTH: 30 * 24 * 60,\n});\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { format, isThisMonth, isThisWeek, isThisYear, isToday, isTomorrow, isValid, isYesterday, parseISO } from '@customafk/react-toolkit/date-fns';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TIME_IN_SECONDS, vietnameseHolidays, vietnameseLocale } from '@/constants';\n\ninterface DateDisplayProps {\n /** The date value to display; accepts a `Date` object, an ISO string, or a Unix timestamp (ms). */\n date: Date | string | number;\n /**\n * Controls how the date is formatted.\n * - `'short'` — `15/03/24`\n * - `'medium'` — `15/03/2024` (default)\n * - `'long'` — `15 tháng 3, 2024`\n * - `'full'` — `Thứ Sáu, ngày 15 tháng 3 năm 2024`\n * - `'relative'` — `2 giờ trước`\n * - `'datetime'` — `15/03/2024 14:30`\n * - `'time'` — `14:30`\n * - `'smart'` — auto-selects the most human-readable format based on recency\n */\n format?:\n | 'short' // 15/03/24\n | 'medium' // 15/03/2024\n | 'long' // 15 tháng 3, 2024\n | 'full' // Thứ Sáu, ngày 15 tháng 3 năm 2024\n | 'relative' // 2 giờ trước\n | 'datetime' // 15/03/2024 14:30\n | 'time' // 14:30\n | 'smart'; // auto-selects format based on recency\n /** When `true`, appends any recognised Vietnamese public holiday name to the formatted date. Defaults to `false`. */\n showHoliday?: boolean;\n /** When `true`, appends the time component to the formatted output. Defaults to `false`. */\n showTime?: boolean;\n /** Additional CSS classes applied to the `<time>` element. */\n className?: string;\n /** Custom HTML `title` attribute; defaults to the full ISO datetime string. */\n title?: string;\n}\n\n/**\n * Renders a formatted date using Vietnamese locale conventions inside a semantic `<time>` element.\n *\n * @example\n * ```tsx\n * import { DateDisplay } from '@customafk/lunas-ui/data-display/date';\n *\n * <DateDisplay date=\"2024-03-15T14:30:00Z\" format=\"medium\" showTime />\n * ```\n */\nexport const DateDisplay: React.FC<DateDisplayProps> = ({\n date,\n format: formatType = 'medium',\n showHoliday = false,\n showTime = false,\n className = '',\n title,\n}) => {\n const parsedDate = useMemo(() => {\n try {\n if (date instanceof Date) return isValid(date) ? date : null;\n if (typeof date === 'string') {\n const parsed = parseISO(date);\n return isValid(parsed) ? parsed : new Date(date);\n }\n if (typeof date === 'number') {\n const parsed = new Date(date);\n return isValid(parsed) ? parsed : null;\n }\n return null;\n } catch {\n return null;\n }\n }, [date]);\n\n const formatRelativeTime = useCallback((d: Date): string => {\n const diffInSeconds = Math.floor((Date.now() - d.getTime()) / 1000);\n if (diffInSeconds < 60) return 'Vừa xong';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MINUTE)} phút trước`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.HOUR)} giờ trước`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.DAY)} ngày trước`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.WEEK)} tuần trước`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.MONTH)} tháng trước`;\n return `${Math.floor(diffInSeconds / TIME_IN_SECONDS.YEAR)} năm trước`;\n }, []);\n\n const getVietnameseWeekday = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.weekdaysShort[d.getDay()] : vietnameseLocale.weekdays[d.getDay()];\n }, []);\n\n const getVietnameseMonth = useCallback((d: Date, short = false): string => {\n return short ? vietnameseLocale.monthsShort[d.getMonth()] : vietnameseLocale.months[d.getMonth()];\n }, []);\n\n const getHoliday = useCallback((d: Date): string | null => {\n const monthDay = format(d, 'MM-dd') as keyof typeof vietnameseHolidays;\n return vietnameseHolidays[monthDay] || null;\n }, []);\n\n const getSmartFormat = useCallback(\n (d: Date): string => {\n if (isToday(d)) return showTime ? `Hôm nay ${format(d, 'HH:mm')}` : 'Hôm nay';\n if (isYesterday(d)) return showTime ? `Hôm qua ${format(d, 'HH:mm')}` : 'Hôm qua';\n if (isTomorrow(d)) return showTime ? `Ngày mai ${format(d, 'HH:mm')}` : 'Ngày mai';\n if (isThisWeek(d)) {\n const weekday = getVietnameseWeekday(d);\n return showTime ? `${weekday} ${format(d, 'HH:mm')}` : weekday;\n }\n if (isThisMonth(d)) {\n const day = format(d, 'd');\n return showTime ? `${day}/${format(d, 'M')} ${format(d, 'HH:mm')}` : `${day}/${format(d, 'M')}`;\n }\n if (isThisYear(d)) return showTime ? format(d, 'd/M HH:mm') : format(d, 'd/M');\n return showTime ? format(d, 'd/M/yyyy HH:mm') : format(d, 'd/M/yyyy');\n },\n [getVietnameseWeekday, showTime]\n );\n\n const formatDate = useCallback(\n (d: Date, type: string): string => {\n const timeStr = showTime ? format(d, ', HH:mm:ss') : '';\n switch (type) {\n case 'short':\n return format(d, 'd/M/yy') + timeStr;\n case 'medium':\n return format(d, 'dd/MM/yyyy') + timeStr;\n case 'long':\n return `${format(d, 'd')} ${getVietnameseMonth(d)} ${format(d, 'yyyy')}` + timeStr;\n case 'full':\n return `${getVietnameseWeekday(d)}, ngày ${format(d, 'd')} ${getVietnameseMonth(d)} năm ${format(d, 'yyyy')}` + timeStr;\n case 'relative':\n return formatRelativeTime(d);\n case 'datetime':\n return format(d, 'd/M/yyyy HH:mm');\n case 'time':\n return format(d, 'HH:mm');\n case 'smart':\n return getSmartFormat(d);\n default:\n return format(d, 'd/M/yyyy') + timeStr;\n }\n },\n [getSmartFormat, getVietnameseMonth, getVietnameseWeekday, formatRelativeTime, showTime]\n );\n\n if (!parsedDate) {\n return <span className={cn('text-sm text-text-positive-subtle', className)}>--/--/----</span>;\n }\n\n const formattedDate = formatDate(parsedDate, formatType);\n const holiday = showHoliday ? getHoliday(parsedDate) : null;\n const displayText = holiday ? `${formattedDate} (${holiday})` : formattedDate;\n const tooltipTitle = title || format(parsedDate, 'EEEE, d MMMM yyyy HH:mm:ss');\n\n return (\n <time\n data-slot=\"date-display\"\n dateTime={parsedDate.toISOString()}\n className={cn('tabular-nums text-xs text-text-positive-weak transition-colors', className)}\n title={tooltipTitle}\n >\n {displayText}\n </time>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./heading-DN67djxs.mjs";import{n as t}from"./paragraph-Ch5TvEqL.mjs";import{t as n}from"./close-BU0kWRVo.mjs";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{cn as a}from"@customafk/react-toolkit/utils";import{Dialog as o}from"radix-ui";function s({...e}){return r(o.Root,{"data-slot":`dialog`,...e})}function c({...e}){return r(o.Trigger,{"data-slot":`dialog-trigger`,...e})}function l({...e}){return r(o.Portal,{"data-slot":`dialog-portal`,...e})}function u({...e}){return r(o.Close,{"data-slot":`dialog-close`,...e})}function d({className:e,...t}){return r(o.Overlay,{"data-slot":`dialog-overlay`,className:a(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in data-[state=open]:fade-in-0`,`data-[state=closed]:animate-out data-[state=closed]:fade-out-0`,e),...t})}function f({className:e,children:t,showCloseButton:s=!0,...c}){return i(l,{children:[r(d,{}),i(o.Content,{"data-slot":`dialog-content`,className:a(`fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2`,`grid w-full max-w-[calc(100%-2rem)] bg-background`,`max-h-[85dvh] gap-4 rounded-2xl p-6 shadow-dialog outline-none duration-200`,`sm:max-w-lg`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-80`,`data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-80`,e),...c,children:[t,s&&r(o.Close,{"data-slot":`dialog-close`,tabIndex:-1,asChild:!0,className:`absolute top-3 right-3`,children:r(n,{})})]})]})}function p({className:e,...t}){return r(`div`,{"data-slot":`dialog-header`,className:a(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function m({className:e,...t}){return r(`div`,{"data-slot":`dialog-footer`,className:a(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function h({className:t,...n}){return r(o.Title,{"data-slot":`dialog-title`,className:a(e({level:`h3`}),t),...n})}function g({className:e,...n}){return r(o.Description,{"data-slot":`dialog-description`,className:a(t({variant:`muted`}),e),...n})}export{m as a,l as c,g as i,h as l,u as n,p as o,f as r,d as s,s as t,c as u};
|
|
2
|
+
//# sourceMappingURL=dialog-BchwY6-N.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-BchwY6-N.mjs","names":["Dialog","DialogPrimitive"],"sources":["../packages/components/ui/dialog.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport { CloseButton } from './buttons/close';\nimport { headingVariants } from '../typography/heading';\nimport { paragraphVariants } from '../typography/paragraph';\n\n/**\n * Accessible modal dialog built on Radix UI's Dialog primitives with animated overlay, close button, and responsive sizing.\n *\n * @example\n * ```tsx\n * import {\n * Dialog, DialogTrigger, DialogContent,\n * DialogHeader, DialogTitle, DialogDescription, DialogFooter,\n * } from '@customafk/lunas-ui/ui/dialog';\n * import { Button } from '@customafk/lunas-ui/ui/button';\n *\n * <Dialog>\n * <DialogTrigger asChild>\n * <Button>Open dialog</Button>\n * </DialogTrigger>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Confirm action</DialogTitle>\n * <DialogDescription>This cannot be undone.</DialogDescription>\n * </DialogHeader>\n * <DialogFooter>\n * <Button variant=\"outline\">Cancel</Button>\n * <Button>Confirm</Button>\n * </DialogFooter>\n * </DialogContent>\n * </Dialog>\n * ```\n */\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n/** Element that opens the dialog when clicked; typically wrapped with `asChild` around a `Button`. */\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n/** Renders dialog overlay and content into a portal outside the normal React tree. */\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\n/** Button that closes the dialog; can be composed with `asChild` to use a custom element. */\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the dialog panel with fade-in/out animation. */\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className\n )}\n {...props}\n />\n );\n}\n\n/**\n * Animated dialog panel centred on screen; includes `DialogOverlay` and an optional close button.\n *\n * @param showCloseButton - When `true` (default), renders a `CloseButton` in the top-right corner.\n */\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n /** When `true` (default), renders an `×` close button fixed to the top-right corner of the panel. */\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 -translate-x-1/2 -translate-y-1/2',\n 'grid w-full max-w-[calc(100%-2rem)] bg-background',\n 'max-h-[85dvh] gap-4 rounded-2xl p-6 shadow-dialog outline-none duration-200',\n 'sm:max-w-lg',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-80',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-80',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" tabIndex={-1} asChild className=\"absolute top-3 right-3\">\n <CloseButton />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\n/** Layout wrapper for the dialog title and description, stacked vertically with left alignment on wider screens. */\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-header\" className={cn('flex flex-col gap-2 text-center sm:text-left', className)} {...props} />;\n}\n\n/** Layout wrapper for dialog action buttons, stacked on mobile and right-aligned in a row on wider screens. */\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"dialog-footer\" className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)} {...props} />;\n}\n\n/** Accessible heading for the dialog panel, styled with the h3 heading variant and announced by screen readers. */\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return <DialogPrimitive.Title data-slot=\"dialog-title\" className={cn(headingVariants({ level: 'h3' }), className)} {...props} />;\n}\n\n/** Muted supporting text that describes the dialog's purpose; read by screen readers alongside the title. */\nfunction DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return <DialogPrimitive.Description data-slot=\"dialog-description\" className={cn(paragraphVariants({ variant: 'muted' }), className)} {...props} />;\n}\n\nexport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };\n"],"mappings":"yQAqCA,SAASA,EAAO,CAAE,GAAG,GAA4D,CAC/E,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,GAAS,CAI/D,SAAS,EAAc,CAAE,GAAG,GAA+D,CACzF,OAAO,EAACA,EAAgB,QAAA,CAAQ,YAAU,iBAAiB,GAAI,GAAS,CAI1E,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAACA,EAAgB,OAAA,CAAO,YAAU,gBAAgB,GAAI,GAAS,CAIxE,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAAS,CAItE,SAAS,EAAc,CAAE,YAAW,GAAG,GAA+D,CACpG,OACE,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,iCACA,2DACA,iEACA,EACD,CACD,GAAI,GACJ,CASN,SAAS,EAAc,CACrB,YACA,WACA,kBAAkB,GAClB,GAAG,GAIF,CACD,OACE,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,EAAA,CAAgB,CACjB,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,gEACA,oDACA,8EACA,cACA,wFACA,iGACA,EACD,CACD,GAAI,YAEH,EACA,GACC,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,SAAU,GAAI,QAAA,GAAQ,UAAU,kCAC9E,EAAC,EAAA,EAAA,CAAc,EACO,CAAA,EAEF,CAAA,CAAA,CACb,CAKnB,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OAAO,EAAC,MAAA,CAAI,YAAU,gBAAgB,UAAW,EAAG,+CAAgD,EAAU,CAAE,GAAI,GAAS,CAI/H,SAAS,EAAa,CAAE,YAAW,GAAG,GAAsC,CAC1E,OAAO,EAAC,MAAA,CAAI,YAAU,gBAAgB,UAAW,EAAG,yDAA0D,EAAU,CAAE,GAAI,GAAS,CAIzI,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,UAAW,EAAG,EAAgB,CAAE,MAAO,KAAM,CAAC,CAAE,EAAU,CAAE,GAAI,GAAS,CAIlI,SAAS,EAAkB,CAAE,YAAW,GAAG,GAAmE,CAC5G,OAAO,EAACA,EAAgB,YAAA,CAAY,YAAU,qBAAqB,UAAW,EAAG,EAAkB,CAAE,QAAS,QAAS,CAAC,CAAE,EAAU,CAAE,GAAI,GAAS"}
|