@customafk/lunas-ui 0.2.64 → 0.2.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FeatureDeveloping-zuTTDIh_.d.cts +41 -0
- package/dist/FeatureDeveloping-zuTTDIh_.d.mts +41 -0
- package/dist/FeatureFixing-DYQlgHPk.d.cts +41 -0
- package/dist/FeatureFixing-DYQlgHPk.d.mts +41 -0
- package/dist/LoginPage-vMXvwtxf.d.cts +53 -0
- package/dist/LoginPage-vMXvwtxf.d.mts +53 -0
- package/dist/NotAuthorized-CZIQ6EaA.d.cts +41 -0
- package/dist/NotAuthorized-CZIQ6EaA.d.mts +41 -0
- package/dist/NotFound-CRSKxhV8.d.cts +41 -0
- package/dist/NotFound-CRSKxhV8.d.mts +41 -0
- package/dist/RegisterPage-BBtpEzvL.d.cts +50 -0
- package/dist/RegisterPage-BBtpEzvL.d.mts +50 -0
- package/dist/VerifyEmailPage-CsmIeYLu.d.cts +62 -0
- package/dist/VerifyEmailPage-CsmIeYLu.d.mts +62 -0
- package/dist/action-submit-42PxGLsR.cjs +2 -0
- package/dist/action-submit-42PxGLsR.cjs.map +1 -0
- package/dist/action-submit-SviPJW3i.mjs +2 -0
- package/dist/action-submit-SviPJW3i.mjs.map +1 -0
- package/dist/actions-form-Bo46j_dH.cjs +2 -0
- package/dist/actions-form-Bo46j_dH.cjs.map +1 -0
- package/dist/actions-form-QdAsKwcQ.mjs +2 -0
- package/dist/actions-form-QdAsKwcQ.mjs.map +1 -0
- package/dist/activity-heatmap-chart-DufvFndI.mjs +2 -0
- package/dist/activity-heatmap-chart-DufvFndI.mjs.map +1 -0
- package/dist/activity-heatmap-chart-gDcvIAK_.cjs +2 -0
- package/dist/activity-heatmap-chart-gDcvIAK_.cjs.map +1 -0
- package/dist/add-new-DkBwXh0Q.d.cts +16 -0
- package/dist/add-new-DkBwXh0Q.d.mts +16 -0
- package/dist/alert-dialog-Cdhz7jSj.d.cts +88 -0
- package/dist/alert-dialog-Cdhz7jSj.d.mts +88 -0
- package/dist/analysis-panel-DzsZKA9l.cjs +2 -0
- package/dist/analysis-panel-DzsZKA9l.cjs.map +1 -0
- package/dist/analysis-panel-ikcRtzG9.mjs +2 -0
- package/dist/analysis-panel-ikcRtzG9.mjs.map +1 -0
- package/dist/aspect-ratio-huscluwJ.d.cts +22 -0
- package/dist/aspect-ratio-huscluwJ.d.mts +22 -0
- package/dist/avatar-BpeFwSkQ.d.cts +33 -0
- package/dist/avatar-BpeFwSkQ.d.mts +33 -0
- package/dist/avatar-name-display-BrpnTqa_.mjs +2 -0
- package/dist/avatar-name-display-BrpnTqa_.mjs.map +1 -0
- package/dist/avatar-name-display-CLi1DJUs.cjs +2 -0
- package/dist/avatar-name-display-CLi1DJUs.cjs.map +1 -0
- package/dist/{badge-D0InQSvM.d.cts → badge-MRT40pxM.d.cts} +3 -3
- package/dist/{badge-D0InQSvM.d.mts → badge-MRT40pxM.d.mts} +3 -3
- package/dist/badge-display-9WXwgQgH.cjs +2 -0
- package/dist/badge-display-9WXwgQgH.cjs.map +1 -0
- package/dist/badge-display-Dx-dITLB.mjs +2 -0
- package/dist/badge-display-Dx-dITLB.mjs.map +1 -0
- package/dist/boolean-display-OVCtvzI1.mjs +2 -0
- package/dist/boolean-display-OVCtvzI1.mjs.map +1 -0
- package/dist/boolean-display-pmzYS-ND.cjs +2 -0
- package/dist/boolean-display-pmzYS-ND.cjs.map +1 -0
- package/dist/breadcrumb-CSpScKZm.d.cts +69 -0
- package/dist/breadcrumb-CSpScKZm.d.mts +69 -0
- package/dist/{button-DIqm3YRo.d.cts → button-Bk4Y6_9I.d.cts} +3 -3
- package/dist/{button-DIqm3YRo.d.mts → button-Bk4Y6_9I.d.mts} +3 -3
- package/dist/button-group-Cd5m5G3p.d.mts +48 -0
- package/dist/button-group-CiKhLVCg.d.cts +48 -0
- package/dist/calendar-DPKt7D3w.d.mts +43 -0
- package/dist/calendar-stv2bJv0.d.cts +43 -0
- package/dist/candlestick-chart-CiBiCU3y.mjs +2 -0
- package/dist/candlestick-chart-CiBiCU3y.mjs.map +1 -0
- package/dist/candlestick-chart-CqmRkfXj.cjs +2 -0
- package/dist/candlestick-chart-CqmRkfXj.cjs.map +1 -0
- package/dist/card-DOnx7RKz.d.cts +60 -0
- package/dist/card-DOnx7RKz.d.mts +60 -0
- package/dist/card-form-BR5kDTzB.cjs +2 -0
- package/dist/card-form-BR5kDTzB.cjs.map +1 -0
- package/dist/card-form-D9fNO-6F.mjs +2 -0
- package/dist/card-form-D9fNO-6F.mjs.map +1 -0
- package/dist/cards/grid-product-card.d.cts +2 -30
- package/dist/cards/grid-product-card.d.mts +2 -30
- package/dist/cards/product-card.d.cts +2 -30
- package/dist/cards/product-card.d.mts +2 -30
- package/dist/cards/simple-card.d.cts +2 -29
- package/dist/cards/simple-card.d.mts +2 -29
- package/dist/carousel-CV3IZ96x.d.mts +70 -0
- package/dist/carousel-c2XuzmYN.d.cts +70 -0
- package/dist/chart-sYFksFMk.d.cts +80 -0
- package/dist/chart-sYFksFMk.d.mts +80 -0
- package/dist/checkbox-XfLNnG0S.d.cts +24 -0
- package/dist/checkbox-XfLNnG0S.d.mts +24 -0
- package/dist/checkbox-field-B1vCz-Wf.cjs +2 -0
- package/dist/checkbox-field-B1vCz-Wf.cjs.map +1 -0
- package/dist/checkbox-field-FqCe38_D.mjs +2 -0
- package/dist/checkbox-field-FqCe38_D.mjs.map +1 -0
- package/dist/{cms-layout-SubgSF72.cjs → cms-layout-CGGJqbr0.cjs} +2 -2
- package/dist/{cms-layout-SubgSF72.cjs.map → cms-layout-CGGJqbr0.cjs.map} +1 -1
- package/dist/{cms-layout-CuF5ahpj.mjs → cms-layout-ePySxIQN.mjs} +2 -2
- package/dist/{cms-layout-CuF5ahpj.mjs.map → cms-layout-ePySxIQN.mjs.map} +1 -1
- package/dist/collapsible-liIHmFuw.d.cts +32 -0
- package/dist/collapsible-liIHmFuw.d.mts +32 -0
- package/dist/combobox-field-D6fiCcvU.mjs +2 -0
- package/dist/combobox-field-D6fiCcvU.mjs.map +1 -0
- package/dist/combobox-field-DLpH6J9H.cjs +2 -0
- package/dist/combobox-field-DLpH6J9H.cjs.map +1 -0
- package/dist/command-Bb6SneVI.d.mts +87 -0
- package/dist/command-CHSJVU9o.d.cts +87 -0
- package/dist/confirm-dialog-B8Vu0z8S.d.cts +142 -0
- package/dist/confirm-dialog-B8Vu0z8S.d.mts +142 -0
- package/dist/container-form-BdsEX0NH.mjs +2 -0
- package/dist/container-form-BdsEX0NH.mjs.map +1 -0
- package/dist/container-form-CxxUYctk.cjs +2 -0
- package/dist/container-form-CxxUYctk.cjs.map +1 -0
- package/dist/context-menu-BOlGSuep.d.cts +123 -0
- package/dist/context-menu-BOlGSuep.d.mts +123 -0
- package/dist/conversion-funnel-chart-CW_zDfKS.mjs +2 -0
- package/dist/conversion-funnel-chart-CW_zDfKS.mjs.map +1 -0
- package/dist/conversion-funnel-chart-r2m2QbiQ.cjs +2 -0
- package/dist/conversion-funnel-chart-r2m2QbiQ.cjs.map +1 -0
- package/dist/correlation-scatter-chart-Djtt7NU7.mjs +2 -0
- package/dist/correlation-scatter-chart-Djtt7NU7.mjs.map +1 -0
- package/dist/correlation-scatter-chart-HF48YUIB.cjs +2 -0
- package/dist/correlation-scatter-chart-HF48YUIB.cjs.map +1 -0
- package/dist/country-C8QijcHF.d.mts +21 -0
- package/dist/country-CJIaO0I7.d.cts +21 -0
- package/dist/currency-display-B91H66HM.cjs +2 -0
- package/dist/currency-display-B91H66HM.cjs.map +1 -0
- package/dist/currency-display-BN1i8jnU.mjs +2 -0
- package/dist/currency-display-BN1i8jnU.mjs.map +1 -0
- package/dist/data-display/country.d.cts +2 -21
- package/dist/data-display/country.d.mts +2 -21
- package/dist/data-display/data-list.d.cts +2 -38
- package/dist/data-display/data-list.d.mts +2 -38
- package/dist/data-display/date-tooltip.d.cts +2 -18
- package/dist/data-display/date-tooltip.d.mts +2 -18
- package/dist/data-display/date.d.cts +2 -39
- package/dist/data-display/date.d.mts +2 -39
- package/dist/data-display/empty.d.cts +2 -19
- package/dist/data-display/empty.d.mts +2 -19
- package/dist/data-display/name.d.cts +2 -18
- package/dist/data-display/name.d.mts +2 -18
- package/dist/data-display/phone-number.d.cts +2 -18
- package/dist/data-display/phone-number.d.mts +2 -18
- package/dist/data-display/role-badge.d.cts +2 -21
- package/dist/data-display/role-badge.d.mts +2 -21
- package/dist/data-display/statistic.d.cts +2 -45
- package/dist/data-display/statistic.d.mts +2 -45
- package/dist/data-display/user.d.cts +2 -20
- package/dist/data-display/user.d.mts +2 -20
- package/dist/data-list-Cg510z2m.d.cts +38 -0
- package/dist/data-list-Cg510z2m.d.mts +38 -0
- package/dist/date-KANPBbN4.d.cts +39 -0
- package/dist/date-KANPBbN4.d.mts +39 -0
- package/dist/date-display-BWtvWDHK.mjs +2 -0
- package/dist/date-display-BWtvWDHK.mjs.map +1 -0
- package/dist/date-display-odcC9NcB.cjs +2 -0
- package/dist/date-display-odcC9NcB.cjs.map +1 -0
- package/dist/date-field-Cxbrc0Vl.mjs +2 -0
- package/dist/date-field-Cxbrc0Vl.mjs.map +1 -0
- package/dist/date-field-RvEB9F1r.cjs +2 -0
- package/dist/date-field-RvEB9F1r.cjs.map +1 -0
- package/dist/date-tooltip-DptxGOj_.d.cts +18 -0
- package/dist/date-tooltip-DptxGOj_.d.mts +18 -0
- package/dist/description-display-BubAcFan.mjs +2 -0
- package/dist/description-display-BubAcFan.mjs.map +1 -0
- package/dist/description-display-CKe0j3q-.cjs +2 -0
- package/dist/description-display-CKe0j3q-.cjs.map +1 -0
- package/dist/dialog-form-C0W5C0u9.mjs +2 -0
- package/dist/dialog-form-C0W5C0u9.mjs.map +1 -0
- package/dist/dialog-form-CkNCwzWG.cjs +2 -0
- package/dist/dialog-form-CkNCwzWG.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 +2 -142
- package/dist/dialogs/confirm-dialog.d.mts +2 -142
- 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 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +50 -38
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +50 -38
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.mjs.map +1 -1
- 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 +2 -36
- package/dist/dialogs/detail-dialog/index.d.mts +2 -36
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
- package/dist/dialogs/error-dialog.d.cts +2 -22
- package/dist/dialogs/error-dialog.d.mts +2 -22
- package/dist/dialogs/loading-dialog.d.cts +2 -19
- package/dist/dialogs/loading-dialog.d.mts +2 -19
- package/dist/donut-chart-CsPPKy0G.cjs +2 -0
- package/dist/donut-chart-CsPPKy0G.cjs.map +1 -0
- package/dist/donut-chart-eKZjuzW0.mjs +2 -0
- package/dist/donut-chart-eKZjuzW0.mjs.map +1 -0
- package/dist/drawer-Dwx99ff3.d.cts +70 -0
- package/dist/drawer-Dwx99ff3.d.mts +70 -0
- package/dist/dropdown-menu-CcMccVns.d.cts +125 -0
- package/dist/dropdown-menu-CcMccVns.d.mts +125 -0
- package/dist/edit-button-0_FLZoT3.cjs +2 -0
- package/dist/edit-button-0_FLZoT3.cjs.map +1 -0
- package/dist/edit-button-DmMFMzG0.mjs +2 -0
- package/dist/edit-button-DmMFMzG0.mjs.map +1 -0
- package/dist/edit-qfS5kOtM.d.cts +16 -0
- package/dist/edit-qfS5kOtM.d.mts +16 -0
- package/dist/email-display-BLt60GQ1.cjs +2 -0
- package/dist/email-display-BLt60GQ1.cjs.map +1 -0
- package/dist/email-display-CMme47S9.mjs +2 -0
- package/dist/email-display-CMme47S9.mjs.map +1 -0
- package/dist/email-field-BErx3liY.cjs +2 -0
- package/dist/email-field-BErx3liY.cjs.map +1 -0
- package/dist/email-field-BtcdBWL4.mjs +2 -0
- package/dist/email-field-BtcdBWL4.mjs.map +1 -0
- package/dist/empty-CaNJjp05.d.cts +65 -0
- package/dist/empty-CaNJjp05.d.mts +65 -0
- package/dist/empty-ClQptIZH.d.cts +19 -0
- package/dist/empty-ClQptIZH.d.mts +19 -0
- package/dist/error-dialog-D4jOPhmw.d.cts +22 -0
- package/dist/error-dialog-D4jOPhmw.d.mts +22 -0
- package/dist/features/charts/index.cjs +1 -1
- package/dist/features/charts/index.cjs.map +1 -1
- package/dist/features/charts/index.d.cts +2 -904
- package/dist/features/charts/index.d.mts +2 -904
- package/dist/features/charts/index.mjs +1 -1
- package/dist/features/charts/index.mjs.map +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +2 -231
- package/dist/features/descriptions/index.d.mts +2 -231
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/search-modal/index.d.cts +2 -14
- package/dist/features/search-modal/index.d.mts +2 -14
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.d.cts +2 -2
- package/dist/features/tables/index.d.mts +2 -2
- package/dist/features/tables/index.mjs +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +1 -1
- package/dist/features/tanstack-form/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/index.d.mts +1 -1
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/field-BKyUqvzh.mjs +2 -0
- package/dist/field-BKyUqvzh.mjs.map +1 -0
- package/dist/field-BV5twmKA.cjs +2 -0
- package/dist/field-BV5twmKA.cjs.map +1 -0
- package/dist/file-uploader-U64lH0zG.d.cts +101 -0
- package/dist/file-uploader-U64lH0zG.d.mts +101 -0
- package/dist/filter-CMzD5h0M.mjs +2 -0
- package/dist/filter-CMzD5h0M.mjs.map +1 -0
- package/dist/filter-Cmg6SHMu.cjs +2 -0
- package/dist/filter-Cmg6SHMu.cjs.map +1 -0
- package/dist/flex-CT71VV-I.d.cts +114 -0
- package/dist/flex-CT71VV-I.d.mts +114 -0
- package/dist/form-CMP15S4r.d.cts +109 -0
- package/dist/form-CMP15S4r.d.mts +109 -0
- package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs +2 -0
- package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs.map +1 -0
- package/dist/gain-loss-bar-chart-FUzN7DxF.cjs +2 -0
- package/dist/gain-loss-bar-chart-FUzN7DxF.cjs.map +1 -0
- package/dist/google-Bl-jBW8L.d.cts +48 -0
- package/dist/google-Bl-jBW8L.d.mts +48 -0
- package/dist/grid-i7Oz2Izf.d.cts +19 -0
- package/dist/grid-i7Oz2Izf.d.mts +19 -0
- package/dist/grid-product-card-bpADqDOQ.d.cts +30 -0
- package/dist/grid-product-card-bpADqDOQ.d.mts +30 -0
- package/dist/group-field-0kStiX8n.cjs +2 -0
- package/dist/group-field-0kStiX8n.cjs.map +1 -0
- package/dist/group-field-bviEXmo4.mjs +2 -0
- package/dist/group-field-bviEXmo4.mjs.map +1 -0
- package/dist/hover-card-Prwm-0Q4.d.cts +35 -0
- package/dist/hover-card-Prwm-0Q4.d.mts +35 -0
- package/dist/image-Cln0r7Eb.d.cts +27 -0
- package/dist/image-Cln0r7Eb.d.mts +27 -0
- package/dist/{index-CGpGIM1H.d.cts → index-BRE7tL8d.d.cts} +121 -500
- package/dist/index-C2HFO3a9.d.mts +231 -0
- package/dist/index-C9eXmnvk.d.cts +36 -0
- package/dist/index-C9eXmnvk.d.mts +36 -0
- package/dist/index-CBntsHIg.d.cts +520 -0
- package/dist/index-CBntsHIg.d.mts +520 -0
- package/dist/{index-DOaKN0wJ.d.cts → index-D9bKlLiM.d.cts} +2 -22
- package/dist/{index-DOaKN0wJ.d.mts → index-D9bKlLiM.d.mts} +2 -22
- package/dist/{index-C2KjuFXQ.d.cts → index-DDROD2y9.d.cts} +596 -1117
- package/dist/{index-C2KjuFXQ.d.mts → index-DDROD2y9.d.mts} +596 -1117
- package/dist/index-DJiiPHPf.d.cts +59 -0
- package/dist/index-DJiiPHPf.d.mts +59 -0
- package/dist/index-DtIL69PB.d.cts +14 -0
- package/dist/index-DtIL69PB.d.mts +14 -0
- package/dist/{index-DueBB0rP.d.mts → index-DvoLzsh0.d.mts} +121 -500
- package/dist/index-fZChR7MS.d.cts +231 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +92 -92
- package/dist/index.d.mts +92 -92
- package/dist/index.mjs +1 -1
- package/dist/indexed-performance-line-chart-CT79KOM6.cjs +2 -0
- package/dist/indexed-performance-line-chart-CT79KOM6.cjs.map +1 -0
- package/dist/indexed-performance-line-chart-D7F-rIMv.mjs +2 -0
- package/dist/indexed-performance-line-chart-D7F-rIMv.mjs.map +1 -0
- package/dist/{input-BJMvABEL.d.cts → input-BieGEIDf.d.cts} +2 -2
- package/dist/{input-BJMvABEL.d.mts → input-BieGEIDf.d.mts} +2 -2
- package/dist/input-otp-6hJfhBHX.d.cts +56 -0
- package/dist/input-otp-6hJfhBHX.d.mts +56 -0
- package/dist/item-DTR2f2CX.d.cts +99 -0
- package/dist/item-cIhkI3ZI.d.mts +99 -0
- package/dist/label-DPG_GY7h.d.cts +22 -0
- package/dist/label-DPG_GY7h.d.mts +22 -0
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.d.cts +2 -114
- package/dist/layouts/flex.d.mts +2 -114
- package/dist/layouts/grid.d.cts +2 -19
- package/dist/layouts/grid.d.mts +2 -19
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.d.cts +2 -59
- package/dist/layouts/payment-layout/index.d.mts +2 -59
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/list-display-BuRCso6J.mjs +2 -0
- package/dist/list-display-BuRCso6J.mjs.map +1 -0
- package/dist/list-display-DEU6yFa9.cjs +2 -0
- package/dist/list-display-DEU6yFa9.cjs.map +1 -0
- package/dist/loading-dialog-C73EJx9s.d.cts +19 -0
- package/dist/loading-dialog-C73EJx9s.d.mts +19 -0
- package/dist/menubar-CFrn3S96.d.cts +133 -0
- package/dist/menubar-CFrn3S96.d.mts +133 -0
- package/dist/metric-radar-chart-6LTGQHsL.mjs +2 -0
- package/dist/metric-radar-chart-6LTGQHsL.mjs.map +1 -0
- package/dist/metric-radar-chart-DwgbXgJX.cjs +2 -0
- package/dist/metric-radar-chart-DwgbXgJX.cjs.map +1 -0
- package/dist/mirrored-bar-chart-BT7AYPJB.mjs +2 -0
- package/dist/mirrored-bar-chart-BT7AYPJB.mjs.map +1 -0
- package/dist/mirrored-bar-chart-BwjtExjh.cjs +2 -0
- package/dist/mirrored-bar-chart-BwjtExjh.cjs.map +1 -0
- package/dist/more-button-BKBcXz6E.mjs +2 -0
- package/dist/more-button-BKBcXz6E.mjs.map +1 -0
- package/dist/more-button-RYvZgYiu.cjs +2 -0
- package/dist/more-button-RYvZgYiu.cjs.map +1 -0
- package/dist/multi-select-BbiKgAYs.d.cts +116 -0
- package/dist/multi-select-BoBHt_Z9.d.mts +116 -0
- package/dist/name-7aoM5rAW.d.cts +18 -0
- package/dist/name-7aoM5rAW.d.mts +18 -0
- package/dist/name-display-B6X52ip_.cjs +2 -0
- package/dist/name-display-B6X52ip_.cjs.map +1 -0
- package/dist/name-display-DXMZ8Lug.mjs +2 -0
- package/dist/name-display-DXMZ8Lug.mjs.map +1 -0
- package/dist/navigation-menu-B1BY9Zll.d.cts +73 -0
- package/dist/navigation-menu-B1BY9Zll.d.mts +73 -0
- package/dist/number-field-BjVjf6s4.mjs +2 -0
- package/dist/number-field-BjVjf6s4.mjs.map +1 -0
- package/dist/number-field-DmKh7bbY.cjs +2 -0
- package/dist/number-field-DmKh7bbY.cjs.map +1 -0
- package/dist/number-input-CqkegUWs.mjs +2 -0
- package/dist/number-input-CqkegUWs.mjs.map +1 -0
- package/dist/number-input-kTh9zzr7.cjs +2 -0
- package/dist/number-input-kTh9zzr7.cjs.map +1 -0
- package/dist/orders-bar-chart-9RmtP6In.cjs +2 -0
- package/dist/orders-bar-chart-9RmtP6In.cjs.map +1 -0
- package/dist/orders-bar-chart-DQhJGmwY.mjs +2 -0
- package/dist/orders-bar-chart-DQhJGmwY.mjs.map +1 -0
- package/dist/pages/FeatureDeveloping.d.cts +2 -41
- package/dist/pages/FeatureDeveloping.d.mts +2 -41
- package/dist/pages/FeatureFixing.d.cts +2 -41
- package/dist/pages/FeatureFixing.d.mts +2 -41
- package/dist/pages/LoginPage.cjs +1 -1
- package/dist/pages/LoginPage.cjs.map +1 -1
- package/dist/pages/LoginPage.d.cts +2 -53
- package/dist/pages/LoginPage.d.mts +2 -53
- package/dist/pages/LoginPage.mjs +1 -1
- package/dist/pages/LoginPage.mjs.map +1 -1
- package/dist/pages/NotAuthorized.d.cts +2 -41
- package/dist/pages/NotAuthorized.d.mts +2 -41
- package/dist/pages/NotFound.d.cts +2 -41
- package/dist/pages/NotFound.d.mts +2 -41
- package/dist/pages/RegisterPage.cjs +1 -1
- package/dist/pages/RegisterPage.cjs.map +1 -1
- package/dist/pages/RegisterPage.d.cts +2 -50
- package/dist/pages/RegisterPage.d.mts +2 -50
- package/dist/pages/RegisterPage.mjs +1 -1
- package/dist/pages/RegisterPage.mjs.map +1 -1
- package/dist/pages/VerifyEmailPage.d.cts +2 -62
- package/dist/pages/VerifyEmailPage.d.mts +2 -62
- package/dist/pagination-B2fyP0J2.d.cts +64 -0
- package/dist/pagination-DY0PBCnI.d.mts +64 -0
- package/dist/paragraph-BTmvVS1S.d.mts +46 -0
- package/dist/paragraph-DbYYv0A0.d.cts +46 -0
- package/dist/password-field-C5FsQUa8.mjs +2 -0
- package/dist/password-field-C5FsQUa8.mjs.map +1 -0
- package/dist/password-field-gHYDiXWY.cjs +2 -0
- package/dist/password-field-gHYDiXWY.cjs.map +1 -0
- package/dist/payment-layout-Cb-Q8KD2.cjs +2 -0
- package/dist/{payment-layout-BLrXT-oc.cjs.map → payment-layout-Cb-Q8KD2.cjs.map} +1 -1
- package/dist/{payment-layout-Dsz6wYT1.mjs → payment-layout-DS5CEH1h.mjs} +2 -2
- package/dist/{payment-layout-Dsz6wYT1.mjs.map → payment-layout-DS5CEH1h.mjs.map} +1 -1
- package/dist/permalink-CZ3g9daG.mjs +2 -0
- package/dist/permalink-CZ3g9daG.mjs.map +1 -0
- package/dist/permalink-DeeEKhfc.cjs +2 -0
- package/dist/permalink-DeeEKhfc.cjs.map +1 -0
- package/dist/phone-number-6b_pkGI1.d.cts +18 -0
- package/dist/phone-number-6b_pkGI1.d.mts +18 -0
- package/dist/phone-number-C43z68gT.mjs +2 -0
- package/dist/phone-number-C43z68gT.mjs.map +1 -0
- package/dist/phone-number-DhThJwd6.cjs +2 -0
- package/dist/phone-number-DhThJwd6.cjs.map +1 -0
- package/dist/popover-CdOCi0xg.d.cts +50 -0
- package/dist/popover-CdOCi0xg.d.mts +50 -0
- package/dist/popover-form-B2taDBAh.mjs +2 -0
- package/dist/popover-form-B2taDBAh.mjs.map +1 -0
- package/dist/popover-form-_hQQpfAB.cjs +2 -0
- package/dist/popover-form-_hQQpfAB.cjs.map +1 -0
- package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs +2 -0
- package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs.map +1 -0
- package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs +2 -0
- package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs.map +1 -0
- package/dist/price-range-area-chart-BW6RQb_9.cjs +2 -0
- package/dist/price-range-area-chart-BW6RQb_9.cjs.map +1 -0
- package/dist/price-range-area-chart-Dy01mhWJ.mjs +2 -0
- package/dist/price-range-area-chart-Dy01mhWJ.mjs.map +1 -0
- package/dist/product-card-CvXLXbpV.d.cts +30 -0
- package/dist/product-card-CvXLXbpV.d.mts +30 -0
- package/dist/progress-Bp-5keO8.d.cts +21 -0
- package/dist/progress-Bp-5keO8.d.mts +21 -0
- package/dist/progress-display-Bp0xVhln.cjs +2 -0
- package/dist/progress-display-Bp0xVhln.cjs.map +1 -0
- package/dist/progress-display-DYj7vAe9.mjs +2 -0
- package/dist/progress-display-DYj7vAe9.mjs.map +1 -0
- package/dist/radio-group-field-McpjpLW-.cjs +2 -0
- package/dist/radio-group-field-McpjpLW-.cjs.map +1 -0
- package/dist/radio-group-field-ZqMrf9Dx.mjs +2 -0
- package/dist/radio-group-field-ZqMrf9Dx.mjs.map +1 -0
- package/dist/radio-group-ycQQrPGn.d.cts +35 -0
- package/dist/radio-group-ycQQrPGn.d.mts +35 -0
- package/dist/refresh-BiyrZAXL.d.cts +16 -0
- package/dist/refresh-BiyrZAXL.d.mts +16 -0
- package/dist/remove-button-B3qFw-M5.cjs +2 -0
- package/dist/remove-button-B3qFw-M5.cjs.map +1 -0
- package/dist/remove-button-Db5oSj4h.mjs +2 -0
- package/dist/remove-button-Db5oSj4h.mjs.map +1 -0
- package/dist/{resizable-BLfxHCf4.d.cts → resizable-CAyWR1At.d.cts} +2 -2
- package/dist/{resizable-BLfxHCf4.d.mts → resizable-CAyWR1At.d.mts} +2 -2
- package/dist/revenue-area-chart-BwzeTRzD.mjs +2 -0
- package/dist/revenue-area-chart-BwzeTRzD.mjs.map +1 -0
- package/dist/revenue-area-chart-w2FZCl_7.cjs +2 -0
- package/dist/revenue-area-chart-w2FZCl_7.cjs.map +1 -0
- package/dist/revenue-orders-composed-chart-BttOWYGt.cjs +2 -0
- package/dist/revenue-orders-composed-chart-BttOWYGt.cjs.map +1 -0
- package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs +2 -0
- package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs.map +1 -0
- package/dist/role-badge-Bl4Rimpk.d.mts +21 -0
- package/dist/role-badge-IdZW0tsN.d.cts +21 -0
- package/dist/sales-target-radial-chart-BFLxBT2m.mjs +2 -0
- package/dist/sales-target-radial-chart-BFLxBT2m.mjs.map +1 -0
- package/dist/sales-target-radial-chart-BoxSk7hW.cjs +2 -0
- package/dist/sales-target-radial-chart-BoxSk7hW.cjs.map +1 -0
- package/dist/sankey-flow-chart-CDUqIRMZ.cjs +2 -0
- package/dist/sankey-flow-chart-CDUqIRMZ.cjs.map +1 -0
- package/dist/sankey-flow-chart-bQ3Dffet.mjs +2 -0
- package/dist/sankey-flow-chart-bQ3Dffet.mjs.map +1 -0
- package/dist/scroll-area-PbkqIAaH.d.cts +35 -0
- package/dist/scroll-area-PbkqIAaH.d.mts +35 -0
- package/dist/search-input-Bq4enQzR.d.cts +27 -0
- package/dist/search-input-D51_mAY-.d.mts +27 -0
- package/dist/section-form-B9iTs2we.cjs +2 -0
- package/dist/section-form-B9iTs2we.cjs.map +1 -0
- package/dist/section-form-B_AZr7jZ.mjs +2 -0
- package/dist/section-form-B_AZr7jZ.mjs.map +1 -0
- package/dist/select-B5j4WvPM.d.cts +74 -0
- package/dist/select-B5j4WvPM.d.mts +74 -0
- package/dist/select-field-DG8sQ5iN.cjs +2 -0
- package/dist/select-field-DG8sQ5iN.cjs.map +1 -0
- package/dist/select-field-Kq5iQCRQ.mjs +2 -0
- package/dist/select-field-Kq5iQCRQ.mjs.map +1 -0
- package/dist/separator-BlNAFSJv.mjs +2 -0
- package/dist/separator-BlNAFSJv.mjs.map +1 -0
- package/dist/separator-D6_fMJtM.d.cts +32 -0
- package/dist/separator-D6_fMJtM.d.mts +32 -0
- package/dist/separator-sBz__BXC.cjs +2 -0
- package/dist/separator-sBz__BXC.cjs.map +1 -0
- package/dist/sheet-cHLLSvvt.d.cts +66 -0
- package/dist/sheet-cHLLSvvt.d.mts +66 -0
- package/dist/sidebar-core-Bh0dZXsm.mjs +2 -0
- package/dist/sidebar-core-Bh0dZXsm.mjs.map +1 -0
- package/dist/sidebar-core-DQE6ymo4.cjs +2 -0
- package/dist/sidebar-core-DQE6ymo4.cjs.map +1 -0
- package/dist/simple-array-field-4paKpxXk.cjs +2 -0
- package/dist/simple-array-field-4paKpxXk.cjs.map +1 -0
- package/dist/simple-array-field-C5XdemXa.mjs +2 -0
- package/dist/simple-array-field-C5XdemXa.mjs.map +1 -0
- package/dist/simple-boolean-field-B9T_fHk9.cjs +2 -0
- package/dist/simple-boolean-field-B9T_fHk9.cjs.map +1 -0
- package/dist/simple-boolean-field-DpJ-fSQk.mjs +2 -0
- package/dist/simple-boolean-field-DpJ-fSQk.mjs.map +1 -0
- package/dist/simple-card-6P377r4A.d.cts +29 -0
- package/dist/simple-card-6P377r4A.d.mts +29 -0
- package/dist/simple-combobox-field-Ch4SBHCH.mjs +2 -0
- package/dist/simple-combobox-field-Ch4SBHCH.mjs.map +1 -0
- package/dist/simple-combobox-field-ChMKk7xp.cjs +2 -0
- package/dist/simple-combobox-field-ChMKk7xp.cjs.map +1 -0
- package/dist/simple-date-field-BGGlsHzG.cjs +2 -0
- package/dist/simple-date-field-BGGlsHzG.cjs.map +1 -0
- package/dist/simple-date-field-CVKqIrEs.mjs +2 -0
- package/dist/simple-date-field-CVKqIrEs.mjs.map +1 -0
- package/dist/simple-email-field-98w0846B.mjs +2 -0
- package/dist/simple-email-field-98w0846B.mjs.map +1 -0
- package/dist/simple-email-field-DYqCWprP.cjs +2 -0
- package/dist/simple-email-field-DYqCWprP.cjs.map +1 -0
- package/dist/simple-number-field-otvv2xq-.cjs +2 -0
- package/dist/simple-number-field-otvv2xq-.cjs.map +1 -0
- package/dist/simple-number-field-zF3oqS8d.mjs +2 -0
- package/dist/simple-number-field-zF3oqS8d.mjs.map +1 -0
- package/dist/simple-password-field-CuC10c70.mjs +2 -0
- package/dist/simple-password-field-CuC10c70.mjs.map +1 -0
- package/dist/simple-password-field-D2UMmghM.cjs +2 -0
- package/dist/simple-password-field-D2UMmghM.cjs.map +1 -0
- package/dist/simple-radio-group-field-C2DDfIUs.cjs +2 -0
- package/dist/simple-radio-group-field-C2DDfIUs.cjs.map +1 -0
- package/dist/simple-radio-group-field-CfziNlLf.mjs +2 -0
- package/dist/simple-radio-group-field-CfziNlLf.mjs.map +1 -0
- package/dist/simple-select-field-CeNnXUHN.cjs +2 -0
- package/dist/simple-select-field-CeNnXUHN.cjs.map +1 -0
- package/dist/simple-select-field-DIaxhi1-.mjs +2 -0
- package/dist/simple-select-field-DIaxhi1-.mjs.map +1 -0
- package/dist/simple-text-field-D8jyznSd.mjs +2 -0
- package/dist/simple-text-field-D8jyznSd.mjs.map +1 -0
- package/dist/simple-text-field-LYWVIAfQ.cjs +2 -0
- package/dist/simple-text-field-LYWVIAfQ.cjs.map +1 -0
- package/dist/simple-textarea-field-DcEvaizE.cjs +2 -0
- package/dist/simple-textarea-field-DcEvaizE.cjs.map +1 -0
- package/dist/simple-textarea-field-p9qX_n7m.mjs +2 -0
- package/dist/simple-textarea-field-p9qX_n7m.mjs.map +1 -0
- package/dist/skeleton-Ct4sYEKk.d.cts +24 -0
- package/dist/skeleton-Ct4sYEKk.d.mts +24 -0
- package/dist/slider-DwR1MhR8.d.cts +24 -0
- package/dist/slider-DwR1MhR8.d.mts +24 -0
- package/dist/sonner-B6LxJMYT.d.mts +22 -0
- package/dist/sonner-BcNgR0GP.d.cts +22 -0
- package/dist/sparkline-chart-TbGzakUl.mjs +2 -0
- package/dist/sparkline-chart-TbGzakUl.mjs.map +1 -0
- package/dist/sparkline-chart-sPqaJHep.cjs +2 -0
- package/dist/sparkline-chart-sPqaJHep.cjs.map +1 -0
- package/dist/spinner-CXuqcoB5.d.cts +22 -0
- package/dist/spinner-CXuqcoB5.d.mts +22 -0
- package/dist/stacked-area-chart-DyxY96_l.cjs +2 -0
- package/dist/stacked-area-chart-DyxY96_l.cjs.map +1 -0
- package/dist/stacked-area-chart-UIWIxTmq.mjs +2 -0
- package/dist/stacked-area-chart-UIWIxTmq.mjs.map +1 -0
- package/dist/statistic-8zBJMdRa.d.cts +45 -0
- package/dist/statistic-8zBJMdRa.d.mts +45 -0
- package/dist/statistic-BUGIRhL9.cjs +2 -0
- package/dist/statistic-BUGIRhL9.cjs.map +1 -0
- package/dist/statistic-Ug9Zgi3N.mjs +2 -0
- package/dist/statistic-Ug9Zgi3N.mjs.map +1 -0
- package/dist/status-display-B-6KKttX.mjs +2 -0
- package/dist/status-display-B-6KKttX.mjs.map +1 -0
- package/dist/status-display-DkI9UwAu.cjs +2 -0
- package/dist/status-display-DkI9UwAu.cjs.map +1 -0
- package/dist/submit-button-CGBaPzE9.mjs +2 -0
- package/dist/submit-button-CGBaPzE9.mjs.map +1 -0
- package/dist/submit-button-CvINfld5.cjs +2 -0
- package/dist/submit-button-CvINfld5.cjs.map +1 -0
- package/dist/summary-bar-CZHeAORf.mjs +2 -0
- package/dist/summary-bar-CZHeAORf.mjs.map +1 -0
- package/dist/summary-bar-DTFVpBZn.cjs +2 -0
- package/dist/summary-bar-DTFVpBZn.cjs.map +1 -0
- package/dist/switch-9v4AYqJb.d.cts +24 -0
- package/dist/switch-9v4AYqJb.d.mts +24 -0
- package/dist/switch-field-CIoNsRWN.mjs +2 -0
- package/dist/switch-field-CIoNsRWN.mjs.map +1 -0
- package/dist/switch-field-n6a5SaEM.cjs +2 -0
- package/dist/switch-field-n6a5SaEM.cjs.map +1 -0
- package/dist/systems/google.d.cts +2 -48
- package/dist/systems/google.d.mts +2 -48
- package/dist/table-Dg2D0v87.d.cts +70 -0
- package/dist/table-Dg2D0v87.d.mts +70 -0
- package/dist/tables-7aC9WFs9.cjs +2 -0
- package/dist/tables-7aC9WFs9.cjs.map +1 -0
- package/dist/tables-UikqnT9q.mjs +2 -0
- package/dist/tables-UikqnT9q.mjs.map +1 -0
- package/dist/tabs-CJ6qZcFU.d.cts +42 -0
- package/dist/tabs-CJ6qZcFU.d.mts +42 -0
- package/dist/tanstack-form-CNrZQZhn.cjs +2 -0
- package/dist/tanstack-form-CNrZQZhn.cjs.map +1 -0
- package/dist/tanstack-form-PC9YNeeo.mjs +2 -0
- package/dist/tanstack-form-PC9YNeeo.mjs.map +1 -0
- package/dist/text-editor-BYE2-G5K.mjs +2 -0
- package/dist/text-editor-BYE2-G5K.mjs.map +1 -0
- package/dist/text-editor-CfQk5dIx.cjs +2 -0
- package/dist/text-editor-CfQk5dIx.cjs.map +1 -0
- package/dist/text-editor-field-fso-sw29.mjs +2 -0
- package/dist/text-editor-field-fso-sw29.mjs.map +1 -0
- package/dist/text-editor-field-gas5r-xy.cjs +2 -0
- package/dist/text-editor-field-gas5r-xy.cjs.map +1 -0
- package/dist/text-field-B67oTV62.mjs +2 -0
- package/dist/text-field-B67oTV62.mjs.map +1 -0
- package/dist/text-field-BMo-8rsq.cjs +2 -0
- package/dist/text-field-BMo-8rsq.cjs.map +1 -0
- package/dist/textarea-C8ZIZh-y.d.cts +26 -0
- package/dist/textarea-C8ZIZh-y.d.mts +26 -0
- package/dist/textarea-field-BUGcITwp.cjs +2 -0
- package/dist/textarea-field-BUGcITwp.cjs.map +1 -0
- package/dist/textarea-field-D70rGYIk.mjs +2 -0
- package/dist/textarea-field-D70rGYIk.mjs.map +1 -0
- package/dist/title-BT9guhSU.d.cts +41 -0
- package/dist/title-BT9guhSU.d.mts +41 -0
- package/dist/title-field-84EnHPvl.mjs +2 -0
- package/dist/title-field-84EnHPvl.mjs.map +1 -0
- package/dist/title-field-CKxwzMOM.cjs +2 -0
- package/dist/title-field-CKxwzMOM.cjs.map +1 -0
- package/dist/toggle-Bh4EazxT.d.cts +30 -0
- package/dist/toggle-Bh4EazxT.d.mts +30 -0
- package/dist/toggle-button-DNLtfjJC.mjs +2 -0
- package/dist/toggle-button-DNLtfjJC.mjs.map +1 -0
- package/dist/toggle-button-Dq78v8cH.cjs +2 -0
- package/dist/toggle-button-Dq78v8cH.cjs.map +1 -0
- package/dist/toggle-group-BpqkL1ds.d.cts +37 -0
- package/dist/toggle-group-DzNE38v5.d.mts +37 -0
- package/dist/tooltip-B-yLj6pe.mjs +4 -0
- package/dist/tooltip-B-yLj6pe.mjs.map +1 -0
- package/dist/tooltip-D4U-RhIu.d.cts +53 -0
- package/dist/tooltip-D4U-RhIu.d.mts +53 -0
- package/dist/tooltip-octglTPf.cjs +4 -0
- package/dist/tooltip-octglTPf.cjs.map +1 -0
- package/dist/top-products-bar-chart-5EJFSkeo.cjs +2 -0
- package/dist/top-products-bar-chart-5EJFSkeo.cjs.map +1 -0
- package/dist/top-products-bar-chart-CKYaOGWT.mjs +2 -0
- package/dist/top-products-bar-chart-CKYaOGWT.mjs.map +1 -0
- package/dist/trash-BfWSqlL4.d.cts +16 -0
- package/dist/trash-BfWSqlL4.d.mts +16 -0
- package/dist/typography/paragraph.d.cts +2 -46
- package/dist/typography/paragraph.d.mts +2 -46
- package/dist/typography/title.d.cts +2 -41
- package/dist/typography/title.d.mts +2 -41
- package/dist/ui/alert-dialog.d.cts +2 -88
- package/dist/ui/alert-dialog.d.mts +2 -88
- package/dist/ui/aspect-ratio.d.cts +2 -22
- package/dist/ui/aspect-ratio.d.mts +2 -22
- package/dist/ui/avatar.d.cts +2 -33
- package/dist/ui/avatar.d.mts +2 -33
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.cjs.map +1 -1
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.mts +1 -1
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/badge.mjs.map +1 -1
- package/dist/ui/breadcrumb.d.cts +2 -69
- package/dist/ui/breadcrumb.d.mts +2 -69
- package/dist/ui/button-group.d.cts +2 -48
- package/dist/ui/button-group.d.mts +2 -48
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/buttons/add-new.d.cts +2 -16
- package/dist/ui/buttons/add-new.d.mts +2 -16
- package/dist/ui/buttons/edit.d.cts +2 -16
- package/dist/ui/buttons/edit.d.mts +2 -16
- package/dist/ui/buttons/refresh.d.cts +2 -16
- package/dist/ui/buttons/refresh.d.mts +2 -16
- package/dist/ui/buttons/trash.d.cts +2 -16
- package/dist/ui/buttons/trash.d.mts +2 -16
- package/dist/ui/buttons/upload-image.d.cts +2 -23
- package/dist/ui/buttons/upload-image.d.mts +2 -23
- package/dist/ui/calendar.d.cts +2 -43
- package/dist/ui/calendar.d.mts +2 -43
- package/dist/ui/card.d.cts +2 -60
- package/dist/ui/card.d.mts +2 -60
- package/dist/ui/carousel.d.cts +2 -70
- package/dist/ui/carousel.d.mts +2 -70
- package/dist/ui/chart.d.cts +2 -80
- package/dist/ui/chart.d.mts +2 -80
- package/dist/ui/checkbox.d.cts +2 -24
- package/dist/ui/checkbox.d.mts +2 -24
- package/dist/ui/collapsible.d.cts +2 -32
- package/dist/ui/collapsible.d.mts +2 -32
- package/dist/ui/command.d.cts +2 -87
- package/dist/ui/command.d.mts +2 -87
- package/dist/ui/context-menu.d.cts +2 -123
- package/dist/ui/context-menu.d.mts +2 -123
- package/dist/ui/drawer.d.cts +2 -70
- package/dist/ui/drawer.d.mts +2 -70
- package/dist/ui/dropdown-menu.d.cts +2 -125
- package/dist/ui/dropdown-menu.d.mts +2 -125
- package/dist/ui/empty.d.cts +2 -65
- package/dist/ui/empty.d.mts +2 -65
- package/dist/ui/field.d.cts +1 -1
- package/dist/ui/field.d.mts +1 -1
- package/dist/ui/file-uploader.d.cts +2 -101
- package/dist/ui/file-uploader.d.mts +2 -101
- package/dist/ui/form.d.cts +2 -109
- package/dist/ui/form.d.mts +2 -109
- package/dist/ui/hover-card.d.cts +2 -35
- package/dist/ui/hover-card.d.mts +2 -35
- package/dist/ui/image.d.cts +2 -27
- package/dist/ui/image.d.mts +2 -27
- package/dist/ui/input-otp.d.cts +2 -56
- package/dist/ui/input-otp.d.mts +2 -56
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/inputs/search-input.d.cts +2 -27
- package/dist/ui/inputs/search-input.d.mts +2 -27
- package/dist/ui/item.d.cts +2 -99
- package/dist/ui/item.d.mts +2 -99
- package/dist/ui/label.d.cts +2 -22
- package/dist/ui/label.d.mts +2 -22
- package/dist/ui/menubar.d.cts +2 -133
- package/dist/ui/menubar.d.mts +2 -133
- package/dist/ui/multi-select.d.cts +2 -116
- package/dist/ui/multi-select.d.mts +2 -116
- package/dist/ui/navigation-menu.d.cts +2 -73
- package/dist/ui/navigation-menu.d.mts +2 -73
- package/dist/ui/pagination.d.cts +2 -64
- package/dist/ui/pagination.d.mts +2 -64
- package/dist/ui/popover.d.cts +2 -50
- package/dist/ui/popover.d.mts +2 -50
- package/dist/ui/progress.d.cts +2 -21
- package/dist/ui/progress.d.mts +2 -21
- package/dist/ui/radio-group.d.cts +2 -35
- package/dist/ui/radio-group.d.mts +2 -35
- package/dist/ui/resizable.d.cts +1 -1
- package/dist/ui/resizable.d.mts +1 -1
- package/dist/ui/scroll-area.d.cts +2 -35
- package/dist/ui/scroll-area.d.mts +2 -35
- package/dist/ui/select.d.cts +2 -74
- package/dist/ui/select.d.mts +2 -74
- package/dist/ui/separator.d.cts +2 -32
- package/dist/ui/separator.d.mts +2 -32
- package/dist/ui/sheet.d.cts +2 -66
- package/dist/ui/sheet.d.mts +2 -66
- package/dist/ui/skeleton.d.cts +2 -24
- package/dist/ui/skeleton.d.mts +2 -24
- package/dist/ui/slider.d.cts +2 -24
- package/dist/ui/slider.d.mts +2 -24
- package/dist/ui/sonner.d.cts +2 -22
- package/dist/ui/sonner.d.mts +2 -22
- package/dist/ui/spinner.d.cts +2 -22
- package/dist/ui/spinner.d.mts +2 -22
- package/dist/ui/switch.d.cts +2 -24
- package/dist/ui/switch.d.mts +2 -24
- package/dist/ui/table.d.cts +2 -70
- package/dist/ui/table.d.mts +2 -70
- package/dist/ui/tabs.d.cts +2 -42
- package/dist/ui/tabs.d.mts +2 -42
- package/dist/ui/textarea.d.cts +2 -26
- package/dist/ui/textarea.d.mts +2 -26
- package/dist/ui/toggle-group.d.cts +2 -37
- package/dist/ui/toggle-group.d.mts +2 -37
- package/dist/ui/toggle.d.cts +2 -30
- package/dist/ui/toggle.d.mts +2 -30
- package/dist/ui/tooltip.d.cts +2 -53
- package/dist/ui/tooltip.d.mts +2 -53
- package/dist/upload-image-D4VZU3IA.d.cts +23 -0
- package/dist/upload-image-D4VZU3IA.d.mts +23 -0
- package/dist/user-BymzvsYp.mjs +2 -0
- package/dist/user-BymzvsYp.mjs.map +1 -0
- package/dist/user-CvesQf42.d.cts +20 -0
- package/dist/user-CvesQf42.d.mts +20 -0
- package/dist/user-Dn53Fu5q.cjs +2 -0
- package/dist/user-Dn53Fu5q.cjs.map +1 -0
- package/dist/volume-bar-chart-BRpC_8-X.mjs +2 -0
- package/dist/volume-bar-chart-BRpC_8-X.mjs.map +1 -0
- package/dist/volume-bar-chart-CRxZPZIn.cjs +2 -0
- package/dist/volume-bar-chart-CRxZPZIn.cjs.map +1 -0
- package/dist/waterfall-chart-CTB2f5eh.cjs +2 -0
- package/dist/waterfall-chart-CTB2f5eh.cjs.map +1 -0
- package/dist/waterfall-chart-DwetaJFJ.mjs +2 -0
- package/dist/waterfall-chart-DwetaJFJ.mjs.map +1 -0
- package/package.json +1 -5
- package/dist/payment-layout-BLrXT-oc.cjs +0 -2
- package/dist/tables-B0Jl8Osc.cjs +0 -4
- package/dist/tables-B0Jl8Osc.cjs.map +0 -1
- package/dist/tables-Cylalxey.mjs +0 -4
- package/dist/tables-Cylalxey.mjs.map +0 -1
- package/dist/tanstack-form-BMVn8ai_.cjs +0 -2
- package/dist/tanstack-form-BMVn8ai_.cjs.map +0 -1
- package/dist/tanstack-form-DTCgWGCA.mjs +0 -2
- package/dist/tanstack-form-DTCgWGCA.mjs.map +0 -1
- package/dist/text-editor-BQtIXOpM.mjs +0 -2
- package/dist/text-editor-BQtIXOpM.mjs.map +0 -1
- package/dist/text-editor-DJYQXXtP.cjs +0 -2
- package/dist/text-editor-DJYQXXtP.cjs.map +0 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { t as Command$1 } from "./command-Bb6SneVI.mjs";
|
|
2
|
+
import { Command } from "cmdk";
|
|
3
|
+
|
|
4
|
+
//#region packages/components/ui/multi-select.d.ts
|
|
5
|
+
/** Represents a single selectable option in the MultipleSelector. */
|
|
6
|
+
interface Option {
|
|
7
|
+
/** Unique value used for selection and comparison. */
|
|
8
|
+
value: string;
|
|
9
|
+
/** Human-readable label displayed in the dropdown and as a badge. */
|
|
10
|
+
label: string;
|
|
11
|
+
/** When true, the option is disabled and cannot be selected. */
|
|
12
|
+
disable?: boolean;
|
|
13
|
+
/** fixed option that can‘t be removed. */
|
|
14
|
+
fixed?: boolean;
|
|
15
|
+
/** Group the options by providing key. */
|
|
16
|
+
[key: string]: string | boolean | undefined;
|
|
17
|
+
}
|
|
18
|
+
/** Props for the MultipleSelector component. */
|
|
19
|
+
interface MultipleSelectorProps {
|
|
20
|
+
/** Controlled list of currently selected options. */
|
|
21
|
+
value?: Option[];
|
|
22
|
+
/** Initial options pre-loaded into the dropdown (uncontrolled). */
|
|
23
|
+
defaultOptions?: Option[];
|
|
24
|
+
/** manually controlled options */
|
|
25
|
+
options?: Option[];
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
/** Loading component. */
|
|
28
|
+
loadingIndicator?: React.ReactNode;
|
|
29
|
+
/** Empty component. */
|
|
30
|
+
emptyIndicator?: React.ReactNode;
|
|
31
|
+
/** Debounce time for async search. Only work with `onSearch`. */
|
|
32
|
+
delay?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Only work with `onSearch` prop. Trigger search when `onFocus`.
|
|
35
|
+
* For example, when user click on the input, it will trigger the search to get initial options.
|
|
36
|
+
**/
|
|
37
|
+
triggerSearchOnFocus?: boolean;
|
|
38
|
+
/** async search */
|
|
39
|
+
onSearch?: (value: string) => Promise<Option[]>;
|
|
40
|
+
/**
|
|
41
|
+
* sync search. This search will not showing loadingIndicator.
|
|
42
|
+
* The rest props are the same as async search.
|
|
43
|
+
* i.e.: creatable, groupBy, delay.
|
|
44
|
+
**/
|
|
45
|
+
onSearchSync?: (value: string) => Option[];
|
|
46
|
+
onChange?: (options: Option[]) => void;
|
|
47
|
+
/** Limit the maximum number of selected options. */
|
|
48
|
+
maxSelected?: number;
|
|
49
|
+
/** When the number of selected options exceeds the limit, the onMaxSelected will be called. */
|
|
50
|
+
onMaxSelected?: (maxLimit: number) => void;
|
|
51
|
+
/** Hide the placeholder when there are options selected. */
|
|
52
|
+
hidePlaceholderWhenSelected?: boolean;
|
|
53
|
+
disabled?: boolean;
|
|
54
|
+
/** Group the options base on provided key. */
|
|
55
|
+
groupBy?: string;
|
|
56
|
+
className?: string;
|
|
57
|
+
badgeClassName?: string;
|
|
58
|
+
/**
|
|
59
|
+
* First item selected is a default behavior by cmdk. That is why the default is true.
|
|
60
|
+
* This is a workaround solution by add a dummy item.
|
|
61
|
+
*
|
|
62
|
+
* @reference: https://github.com/pacocoursey/cmdk/issues/171
|
|
63
|
+
*/
|
|
64
|
+
selectFirstItem?: boolean;
|
|
65
|
+
/** Allow user to create option when there is no option matched. */
|
|
66
|
+
creatable?: boolean;
|
|
67
|
+
/** Props of `Command` */
|
|
68
|
+
commandProps?: React.ComponentPropsWithoutRef<typeof Command$1>;
|
|
69
|
+
/** Props of `CommandInput` */
|
|
70
|
+
inputProps?: Omit<React.ComponentPropsWithoutRef<typeof Command.Input>, 'value' | 'placeholder' | 'disabled'>;
|
|
71
|
+
/** hide the clear all button. */
|
|
72
|
+
hideClearAllButton?: boolean;
|
|
73
|
+
/** Add new item event for select with search */
|
|
74
|
+
onAddNewItem?: () => void;
|
|
75
|
+
}
|
|
76
|
+
/** Imperative handle exposed by MultipleSelector via `ref`. */
|
|
77
|
+
interface MultipleSelectorRef {
|
|
78
|
+
/** The currently selected options. */
|
|
79
|
+
selectedValue: Option[];
|
|
80
|
+
/** The underlying `<input>` DOM element. */
|
|
81
|
+
input: HTMLInputElement;
|
|
82
|
+
/** Programmatically focus the search input. */
|
|
83
|
+
focus: () => void;
|
|
84
|
+
/** Clear all selected options. */
|
|
85
|
+
reset: () => void;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns a debounced copy of `value` that only updates after `delay` ms of inactivity.
|
|
89
|
+
*
|
|
90
|
+
* @param value - The value to debounce.
|
|
91
|
+
* @param delay - Debounce delay in milliseconds (default 500).
|
|
92
|
+
*/
|
|
93
|
+
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
94
|
+
/**
|
|
95
|
+
* A combobox-style input that allows selecting multiple options displayed as removable badge chips, with optional async search and creatable mode.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```tsx
|
|
99
|
+
* import { MultipleSelector } from '@customafk/lunas-ui/ui/multi-select';
|
|
100
|
+
*
|
|
101
|
+
* const options = [
|
|
102
|
+
* { value: 'react', label: 'React' },
|
|
103
|
+
* { value: 'vue', label: 'Vue' },
|
|
104
|
+
* ];
|
|
105
|
+
*
|
|
106
|
+
* <MultipleSelector
|
|
107
|
+
* options={options}
|
|
108
|
+
* placeholder="Select frameworks…"
|
|
109
|
+
* onChange={(selected) => console.log(selected)}
|
|
110
|
+
* />
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
declare const MultipleSelector: import("react").ForwardRefExoticComponent<MultipleSelectorProps & import("react").RefAttributes<MultipleSelectorRef>>;
|
|
114
|
+
//#endregion
|
|
115
|
+
export { useDebounce as i, MultipleSelectorRef as n, Option as r, MultipleSelector as t };
|
|
116
|
+
//# sourceMappingURL=multi-select-BoBHt_Z9.d.mts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region packages/components/data-display/name.d.ts
|
|
2
|
+
type NameDisplayProps = {
|
|
3
|
+
/** The full name string to display; shown truncated inline and in full via tooltip. */name: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Renders a clamped, truncated name with a tooltip that reveals the complete text on hover.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { NameDisplay } from '@customafk/lunas-ui/data-display/name';
|
|
11
|
+
*
|
|
12
|
+
* <NameDisplay name="Nguyễn Văn An" />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const NameDisplay: React.FC<NameDisplayProps>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { NameDisplay as t };
|
|
18
|
+
//# sourceMappingURL=name-7aoM5rAW.d.cts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region packages/components/data-display/name.d.ts
|
|
2
|
+
type NameDisplayProps = {
|
|
3
|
+
/** The full name string to display; shown truncated inline and in full via tooltip. */name: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Renders a clamped, truncated name with a tooltip that reveals the complete text on hover.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { NameDisplay } from '@customafk/lunas-ui/data-display/name';
|
|
11
|
+
*
|
|
12
|
+
* <NameDisplay name="Nguyễn Văn An" />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const NameDisplay: React.FC<NameDisplayProps>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { NameDisplay as t };
|
|
18
|
+
//# sourceMappingURL=name-7aoM5rAW.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./typography/paragraph.cjs"),t=require("./ui/tooltip.cjs"),n=require("./tables-7aC9WFs9.cjs");let r=require("react/jsx-runtime");const i=({name:i})=>i?(0,r.jsxs)(t.Tooltip,{children:[(0,r.jsx)(t.TooltipTrigger,{children:(0,r.jsx)(e.Paragraph,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:i})}),(0,r.jsx)(t.TooltipContent,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:(0,r.jsxs)(`div`,{className:`flex flex-col gap-y-2`,children:[(0,r.jsx)(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:i}),(0,r.jsxs)(`p`,{className:`w-full text-end`,children:[i.length,` chars`]})]})})]}):(0,r.jsx)(n.Y,{});exports.UITableNameDisplay=i;
|
|
2
|
+
//# sourceMappingURL=name-display-B6X52ip_.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-display-B6X52ip_.cjs","names":["UITableEmpty","Tooltip","TooltipTrigger","Paragraph","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"kJAqBA,MAAa,GAAkD,CAAE,UAC1D,GAEH,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,QAAQ,KAAK,UAAU,mEAC/B,CACQ,CAAA,CACG,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,yCACtC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,iCAAf,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,oDAA4C,CAAQ,CAAA,GACjE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAU,2BAAb,CAAgC,EAAK,OAAO,QAAS,GAClD,GACS,CAAA,CACT,CAAA,CAAA,GAdO,EAAA,EAAA,IAAA,CAACJ,EAAAA,EAAD,CAAe,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Paragraph as e}from"./typography/paragraph.mjs";import{Tooltip as t,TooltipContent as n,TooltipTrigger as r}from"./ui/tooltip.mjs";import{Y as i}from"./tables-UikqnT9q.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=({name:s})=>s?o(t,{children:[a(r,{children:a(e,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:s})}),a(n,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:o(`div`,{className:`flex flex-col gap-y-2`,children:[a(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:s}),o(`p`,{className:`w-full text-end`,children:[s.length,` chars`]})]})})]}):a(i,{});export{s as UITableNameDisplay};
|
|
2
|
+
//# sourceMappingURL=name-display-DXMZ8Lug.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-display-DXMZ8Lug.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/name-display.tsx"],"sourcesContent":["import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { Paragraph } from '@/components/typography/paragraph';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableNameDisplay} component. */\ntype NameDisplayProps = {\n /** The name string to display; renders an empty placeholder when falsy. */\n name?: string | null | undefined;\n};\n\n/**\n * Renders a clamped, truncated name string inside a tooltip that shows the full\n * text and character count on hover; falls back to {@link UITableEmpty} when the\n * value is absent.\n *\n * @example\n * import { UITableNameDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableNameDisplay name=\"John Doe\" />\n */\nexport const UITableNameDisplay: React.FC<NameDisplayProps> = ({ name }) => {\n if (!name) return <UITableEmpty />;\n return (\n <Tooltip>\n <TooltipTrigger>\n <Paragraph variant=\"sm\" className=\"line-clamp-2 w-full truncate text-wrap pb-px text-start\">\n {name}\n </Paragraph>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"h-fit min-w-48 max-w-80 pt-4\">\n <div className=\"flex flex-col gap-y-2\">\n <p className=\"whitespace-pre-line text-wrap break-keep\">{name}</p>\n <p className=\"w-full text-end\">{name.length} chars</p>\n </div>\n </TooltipContent>\n </Tooltip>\n );\n};\n"],"mappings":"sOAqBA,MAAa,GAAkD,CAAE,UAC1D,EAEH,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAW,QAAQ,KAAK,UAAU,mEAC/B,CACQ,CAAA,CACG,CAAA,EAChB,EAAC,EAAD,CAAgB,MAAM,QAAQ,UAAU,wCACtC,EAAC,MAAD,CAAK,UAAU,iCAAf,CACE,EAAC,IAAD,CAAG,UAAU,oDAA4C,CAAQ,CAAA,EACjE,EAAC,IAAD,CAAG,UAAU,2BAAb,CAAgC,EAAK,OAAO,QAAS,GAClD,GACS,CAAA,CACT,CAAA,CAAA,EAdO,EAAC,EAAD,CAAe,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { NavigationMenu } from "radix-ui";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/ui/navigation-menu.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Root provider for the NavigationMenu — a horizontal nav bar with dropdown content panels.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import {
|
|
10
|
+
* NavigationMenu, NavigationMenuList, NavigationMenuItem,
|
|
11
|
+
* NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink,
|
|
12
|
+
* } from '@customafk/lunas-ui/ui/navigation-menu';
|
|
13
|
+
*
|
|
14
|
+
* <NavigationMenu>
|
|
15
|
+
* <NavigationMenuList>
|
|
16
|
+
* <NavigationMenuItem>
|
|
17
|
+
* <NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
18
|
+
* <NavigationMenuContent>
|
|
19
|
+
* <NavigationMenuLink href="/products">All Products</NavigationMenuLink>
|
|
20
|
+
* </NavigationMenuContent>
|
|
21
|
+
* </NavigationMenuItem>
|
|
22
|
+
* </NavigationMenuList>
|
|
23
|
+
* </NavigationMenu>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
declare function NavigationMenu$1({
|
|
27
|
+
className,
|
|
28
|
+
children,
|
|
29
|
+
viewport,
|
|
30
|
+
...props
|
|
31
|
+
}: React.ComponentProps<typeof NavigationMenu.Root> & {
|
|
32
|
+
/** When false, the viewport animation panel is omitted (useful for inline menus). */viewport?: boolean;
|
|
33
|
+
}): import("react").JSX.Element;
|
|
34
|
+
/** Horizontal list that holds NavigationMenuItems. */
|
|
35
|
+
declare function NavigationMenuList({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: React.ComponentProps<typeof NavigationMenu.List>): import("react").JSX.Element;
|
|
39
|
+
/** A single navigation entry that may contain a trigger and a dropdown content panel. */
|
|
40
|
+
declare function NavigationMenuItem({
|
|
41
|
+
className,
|
|
42
|
+
...props
|
|
43
|
+
}: React.ComponentProps<typeof NavigationMenu.Item>): import("react").JSX.Element;
|
|
44
|
+
declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
45
|
+
/** Button that opens the associated NavigationMenuContent panel on focus or hover. */
|
|
46
|
+
declare function NavigationMenuTrigger({
|
|
47
|
+
className,
|
|
48
|
+
children,
|
|
49
|
+
...props
|
|
50
|
+
}: React.ComponentProps<typeof NavigationMenu.Trigger>): import("react").JSX.Element;
|
|
51
|
+
/** Dropdown content panel revealed when a NavigationMenuTrigger is activated. */
|
|
52
|
+
declare function NavigationMenuContent({
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
}: React.ComponentProps<typeof NavigationMenu.Content>): import("react").JSX.Element;
|
|
56
|
+
/** Animated viewport container that hosts the active NavigationMenuContent. */
|
|
57
|
+
declare function NavigationMenuViewport({
|
|
58
|
+
className,
|
|
59
|
+
...props
|
|
60
|
+
}: React.ComponentProps<typeof NavigationMenu.Viewport>): import("react").JSX.Element;
|
|
61
|
+
/** A styled link used inside NavigationMenuContent that highlights when active. */
|
|
62
|
+
declare function NavigationMenuLink({
|
|
63
|
+
className,
|
|
64
|
+
...props
|
|
65
|
+
}: React.ComponentProps<typeof NavigationMenu.Link>): import("react").JSX.Element;
|
|
66
|
+
/** Small arrow indicator that points from the active NavigationMenuTrigger to its content panel. */
|
|
67
|
+
declare function NavigationMenuIndicator({
|
|
68
|
+
className,
|
|
69
|
+
...props
|
|
70
|
+
}: React.ComponentProps<typeof NavigationMenu.Indicator>): import("react").JSX.Element;
|
|
71
|
+
//#endregion
|
|
72
|
+
export { NavigationMenuLink as a, NavigationMenuViewport as c, NavigationMenuItem as i, navigationMenuTriggerStyle as l, NavigationMenuContent as n, NavigationMenuList as o, NavigationMenuIndicator as r, NavigationMenuTrigger as s, NavigationMenu$1 as t };
|
|
73
|
+
//# sourceMappingURL=navigation-menu-B1BY9Zll.d.cts.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { NavigationMenu } from "radix-ui";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/ui/navigation-menu.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Root provider for the NavigationMenu — a horizontal nav bar with dropdown content panels.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import {
|
|
10
|
+
* NavigationMenu, NavigationMenuList, NavigationMenuItem,
|
|
11
|
+
* NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink,
|
|
12
|
+
* } from '@customafk/lunas-ui/ui/navigation-menu';
|
|
13
|
+
*
|
|
14
|
+
* <NavigationMenu>
|
|
15
|
+
* <NavigationMenuList>
|
|
16
|
+
* <NavigationMenuItem>
|
|
17
|
+
* <NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
18
|
+
* <NavigationMenuContent>
|
|
19
|
+
* <NavigationMenuLink href="/products">All Products</NavigationMenuLink>
|
|
20
|
+
* </NavigationMenuContent>
|
|
21
|
+
* </NavigationMenuItem>
|
|
22
|
+
* </NavigationMenuList>
|
|
23
|
+
* </NavigationMenu>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
declare function NavigationMenu$1({
|
|
27
|
+
className,
|
|
28
|
+
children,
|
|
29
|
+
viewport,
|
|
30
|
+
...props
|
|
31
|
+
}: React.ComponentProps<typeof NavigationMenu.Root> & {
|
|
32
|
+
/** When false, the viewport animation panel is omitted (useful for inline menus). */viewport?: boolean;
|
|
33
|
+
}): import("react").JSX.Element;
|
|
34
|
+
/** Horizontal list that holds NavigationMenuItems. */
|
|
35
|
+
declare function NavigationMenuList({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: React.ComponentProps<typeof NavigationMenu.List>): import("react").JSX.Element;
|
|
39
|
+
/** A single navigation entry that may contain a trigger and a dropdown content panel. */
|
|
40
|
+
declare function NavigationMenuItem({
|
|
41
|
+
className,
|
|
42
|
+
...props
|
|
43
|
+
}: React.ComponentProps<typeof NavigationMenu.Item>): import("react").JSX.Element;
|
|
44
|
+
declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
45
|
+
/** Button that opens the associated NavigationMenuContent panel on focus or hover. */
|
|
46
|
+
declare function NavigationMenuTrigger({
|
|
47
|
+
className,
|
|
48
|
+
children,
|
|
49
|
+
...props
|
|
50
|
+
}: React.ComponentProps<typeof NavigationMenu.Trigger>): import("react").JSX.Element;
|
|
51
|
+
/** Dropdown content panel revealed when a NavigationMenuTrigger is activated. */
|
|
52
|
+
declare function NavigationMenuContent({
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
}: React.ComponentProps<typeof NavigationMenu.Content>): import("react").JSX.Element;
|
|
56
|
+
/** Animated viewport container that hosts the active NavigationMenuContent. */
|
|
57
|
+
declare function NavigationMenuViewport({
|
|
58
|
+
className,
|
|
59
|
+
...props
|
|
60
|
+
}: React.ComponentProps<typeof NavigationMenu.Viewport>): import("react").JSX.Element;
|
|
61
|
+
/** A styled link used inside NavigationMenuContent that highlights when active. */
|
|
62
|
+
declare function NavigationMenuLink({
|
|
63
|
+
className,
|
|
64
|
+
...props
|
|
65
|
+
}: React.ComponentProps<typeof NavigationMenu.Link>): import("react").JSX.Element;
|
|
66
|
+
/** Small arrow indicator that points from the active NavigationMenuTrigger to its content panel. */
|
|
67
|
+
declare function NavigationMenuIndicator({
|
|
68
|
+
className,
|
|
69
|
+
...props
|
|
70
|
+
}: React.ComponentProps<typeof NavigationMenu.Indicator>): import("react").JSX.Element;
|
|
71
|
+
//#endregion
|
|
72
|
+
export { NavigationMenuLink as a, NavigationMenuViewport as c, NavigationMenuItem as i, navigationMenuTriggerStyle as l, NavigationMenuContent as n, NavigationMenuList as o, NavigationMenuIndicator as r, NavigationMenuTrigger as s, NavigationMenu$1 as t };
|
|
73
|
+
//# sourceMappingURL=navigation-menu-B1BY9Zll.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{G as e}from"./tanstack-form-PC9YNeeo.mjs";import{Field as t,FieldContent as n,FieldContentMain as r,FieldDescription as i,FieldError as a,FieldGroup as o,FieldLabel as s,FieldNote as c,FieldSeparator as l,FieldTooltip as u}from"./field-BKyUqvzh.mjs";import{t as d}from"./number-input-CqkegUWs.mjs";import{BanIcon as f,Loader2Icon as p}from"lucide-react";import{memo as m,useCallback as h,useId as g}from"react";import{cn as _}from"@customafk/react-toolkit/utils";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useStore as b}from"@tanstack/react-form";const x=m(({label:m,description:x,placeholder:S,tooltip:C,helperText:w,orientation:T=`responsive`,showErrorMessage:E=!0,rounding:D,decimalPlaces:O,precision:k,unit:A,required:j=!1,disabled:M=!1,allowNegative:N})=>{let P=g(),F=g(),I=e(),L=b(I.form.store,({isSubmitting:e})=>e),R=M||L,z=I.state.meta.isDirty||I.state.meta.isTouched,B=z&&!I.state.meta.isValid,V=j&&I.state.value===null,H=!!I.state.meta.errors.length,U=h(e=>{R||I.handleChange(e)},[R,I.handleChange]);return y(o,{className:`gap-y-4 px-4`,children:[y(t,{orientation:T,"data-invalid":B,children:[y(n,{children:[y(s,{htmlFor:P,"aria-required":V,children:[m,C&&v(u,{tooltip:C})]}),v(i,{children:x})]}),y(r,{children:[y(`div`,{className:`relative w-full`,children:[v(d,{id:P,value:I.state.value,"aria-invalid":B,"aria-describedby":F,placeholder:S,disabled:R,roundingRule:D,numberAfterDecimalPoint:O,precision:k,unitText:A,allowNegative:N,className:_(R&&`pointer-events-none opacity-60`),onBlur:I.handleBlur,onValueChange:U}),L&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:v(p,{className:`animate-spin text-primary-strong`})}),!L&&z&&E&&H&&v(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:v(f,{})}),v(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:z&&E?v(a,{id:F,className:`flex-1`,errors:I.state.meta.errors}):v(`div`,{})})]}),v(c,{isShow:!!w,children:w})]})]}),v(l,{})]})});x.displayName=`NumberField`;export{x as NumberField};
|
|
2
|
+
//# sourceMappingURL=number-field-BjVjf6s4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-field-BjVjf6s4.mjs","names":[],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"wjBA+CA,MAAa,EAAc,GACxB,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,EAAK,EAAM,EACX,EAAU,EAAM,EAEhB,EAAQ,EAAuC,EAE/C,EAAe,EAAS,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,EAAgB,EACnB,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAC,EAAD,CAAY,UAAU,wBAAtB,CACE,EAAC,EAAD,CAAoB,cAAa,eAAc,WAA/C,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,GAAW,EAAC,EAAD,CAAuB,SAAU,CAAA,CACnC,IACZ,EAAC,EAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,EAEd,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAU,2BAAf,CACE,EAAC,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,UAAW,EAAG,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,GACC,EAAC,MAAD,CAAK,UAAU,qFACb,EAAC,EAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,GAChD,EAAC,MAAD,CAAK,UAAU,yGACb,EAAC,EAAD,CAAU,CAAA,CACP,CAAA,EAEP,EAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,EAAmB,EAAC,EAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,EAAI,EAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,IACL,EAAC,EAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,IACP,EAAC,EAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./tanstack-form-CNrZQZhn.cjs"),t=require("./field-BV5twmKA.cjs"),n=require("./number-input-kTh9zzr7.cjs");let r=require("lucide-react"),i=require("react"),a=require("@customafk/react-toolkit/utils"),o=require("react/jsx-runtime"),s=require("@tanstack/react-form");const c=(0,i.memo)(({label:c,description:l,placeholder:u,tooltip:d,helperText:f,orientation:p=`responsive`,showErrorMessage:m=!0,rounding:h,decimalPlaces:g,precision:_,unit:v,required:y=!1,disabled:b=!1,allowNegative:x})=>{let S=(0,i.useId)(),C=(0,i.useId)(),w=e.G(),T=(0,s.useStore)(w.form.store,({isSubmitting:e})=>e),E=b||T,D=w.state.meta.isDirty||w.state.meta.isTouched,O=D&&!w.state.meta.isValid,k=y&&w.state.value===null,A=!!w.state.meta.errors.length,j=(0,i.useCallback)(e=>{E||w.handleChange(e)},[E,w.handleChange]);return(0,o.jsxs)(t.FieldGroup,{className:`gap-y-4 px-4`,children:[(0,o.jsxs)(t.Field,{orientation:p,"data-invalid":O,children:[(0,o.jsxs)(t.FieldContent,{children:[(0,o.jsxs)(t.FieldLabel,{htmlFor:S,"aria-required":k,children:[c,d&&(0,o.jsx)(t.FieldTooltip,{tooltip:d})]}),(0,o.jsx)(t.FieldDescription,{children:l})]}),(0,o.jsxs)(t.FieldContentMain,{children:[(0,o.jsxs)(`div`,{className:`relative w-full`,children:[(0,o.jsx)(n.t,{id:S,value:w.state.value,"aria-invalid":O,"aria-describedby":C,placeholder:u,disabled:E,roundingRule:h,numberAfterDecimalPoint:g,precision:_,unitText:v,allowNegative:x,className:(0,a.cn)(E&&`pointer-events-none opacity-60`),onBlur:w.handleBlur,onValueChange:j}),T&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5`,children:(0,o.jsx)(r.Loader2Icon,{className:`animate-spin text-primary-strong`})}),!T&&D&&m&&A&&(0,o.jsx)(`div`,{className:`pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5`,children:(0,o.jsx)(r.BanIcon,{})}),(0,o.jsx)(`div`,{className:`mt-1 flex w-full items-start justify-between gap-x-2`,children:D&&m?(0,o.jsx)(t.FieldError,{id:C,className:`flex-1`,errors:w.state.meta.errors}):(0,o.jsx)(`div`,{})})]}),(0,o.jsx)(t.FieldNote,{isShow:!!f,children:f})]})]}),(0,o.jsx)(t.FieldSeparator,{})]})});c.displayName=`NumberField`,exports.NumberField=c;
|
|
2
|
+
//# sourceMappingURL=number-field-DmKh7bbY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-field-DmKh7bbY.cjs","names":["useTanStackFieldContext","FieldGroup","Field","FieldContent","FieldLabel","FieldTooltip","FieldDescription","FieldContentMain","NumberInput","Loader2Icon","BanIcon","FieldError","FieldNote","FieldSeparator"],"sources":["../packages/components/features/tanstack-form/components/fields/number-field.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useId } from 'react';\n\nimport { useStore } from '@tanstack/react-form';\n\nimport { BanIcon, Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { NumberInput } from '@/components/ui/inputs/number-input';\n\nimport { useTanStackFieldContext } from '../form-context';\nimport {\n Field,\n FieldContent,\n FieldContentMain,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldNote,\n FieldSeparator,\n FieldTooltip,\n} from '../ui/field';\n\nimport type { NumberFieldProps } from '../../types';\n\n/**\n * A TanStack Form-connected numeric input field supporting rounding rules,\n * decimal precision, unit labels, and submission-state feedback.\n *\n * @example\n * import { NumberField } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * <form.Field name=\"quantity\">\n * {() => (\n * <NumberField\n * label=\"Quantity\"\n * placeholder=\"0\"\n * unit=\"pcs\"\n * decimalPlaces={2}\n * required\n * />\n * )}\n * </form.Field>\n */\nexport const NumberField = memo<NumberFieldProps>(\n ({\n label,\n description,\n placeholder,\n tooltip,\n helperText,\n orientation = 'responsive',\n showErrorMessage = true,\n rounding,\n decimalPlaces,\n precision,\n unit,\n required = false,\n disabled = false,\n allowNegative,\n }) => {\n const id = useId();\n const errorId = useId();\n\n const field = useTanStackFieldContext<number | null>();\n\n const isSubmitting = useStore(field.form.store, ({ isSubmitting }) => isSubmitting);\n const isDisabled = disabled || isSubmitting;\n\n const _touched = field.state.meta.isDirty || field.state.meta.isTouched;\n const _invalid = _touched && !field.state.meta.isValid;\n const _isEmpty = required && field.state.value === null;\n const _hasErrors = !!field.state.meta.errors.length;\n\n const onValueChange = useCallback(\n (value: number | null) => {\n if (isDisabled) return;\n field.handleChange(value);\n },\n [isDisabled, field.handleChange]\n );\n\n return (\n <FieldGroup className=\"gap-y-4 px-4\">\n <Field orientation={orientation} data-invalid={_invalid}>\n <FieldContent>\n <FieldLabel htmlFor={id} aria-required={_isEmpty}>\n {label}\n {tooltip && <FieldTooltip tooltip={tooltip} />}\n </FieldLabel>\n <FieldDescription>{description}</FieldDescription>\n </FieldContent>\n\n <FieldContentMain>\n <div className=\"relative w-full\">\n <NumberInput\n id={id}\n value={field.state.value}\n aria-invalid={_invalid}\n aria-describedby={errorId}\n placeholder={placeholder}\n disabled={isDisabled}\n roundingRule={rounding}\n numberAfterDecimalPoint={decimalPlaces}\n precision={precision}\n unitText={unit}\n allowNegative={allowNegative}\n className={cn(isDisabled && 'pointer-events-none opacity-60')}\n onBlur={field.handleBlur}\n onValueChange={onValueChange}\n />\n {isSubmitting && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.5 [&>svg]:size-3.5\">\n <Loader2Icon className=\"animate-spin text-primary-strong\" />\n </div>\n )}\n {!isSubmitting && _touched && showErrorMessage && _hasErrors && (\n <div className=\"pointer-events-none absolute inset-s-2 inset-y-0 top-2.75 text-danger-strong [&>svg]:size-3.5\">\n <BanIcon />\n </div>\n )}\n <div className=\"mt-1 flex w-full items-start justify-between gap-x-2\">\n {_touched && showErrorMessage ? <FieldError id={errorId} className=\"flex-1\" errors={field.state.meta.errors} /> : <div />}\n </div>\n </div>\n <FieldNote isShow={!!helperText}>{helperText}</FieldNote>\n </FieldContentMain>\n </Field>\n <FieldSeparator />\n </FieldGroup>\n );\n }\n);\n\nNumberField.displayName = 'NumberField';\n"],"mappings":"yRA+CA,MAAa,GAAA,EAAA,EAAA,KAAA,EACV,CACC,QACA,cACA,cACA,UACA,aACA,cAAc,aACd,mBAAmB,GACnB,WACA,gBACA,YACA,OACA,WAAW,GACX,WAAW,GACX,mBACI,CACJ,IAAM,GAAA,EAAA,EAAA,MAAA,CAAW,EACX,GAAA,EAAA,EAAA,MAAA,CAAgB,EAEhB,EAAQA,EAAAA,EAAuC,EAE/C,GAAA,EAAA,EAAA,SAAA,CAAwB,EAAM,KAAK,OAAQ,CAAE,kBAAmB,CAAY,EAC5E,EAAa,GAAY,EAEzB,EAAW,EAAM,MAAM,KAAK,SAAW,EAAM,MAAM,KAAK,UACxD,EAAW,GAAY,CAAC,EAAM,MAAM,KAAK,QACzC,EAAW,GAAY,EAAM,MAAM,QAAU,KAC7C,EAAa,CAAC,CAAC,EAAM,MAAM,KAAK,OAAO,OAEvC,GAAA,EAAA,EAAA,YAAA,CACH,GAAyB,CACpB,GACJ,EAAM,aAAa,CAAK,CAC1B,EACA,CAAC,EAAY,EAAM,YAAY,CACjC,EAEA,OACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,UAAU,wBAAtB,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,MAAD,CAAoB,cAAa,eAAc,WAA/C,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAACC,EAAAA,WAAD,CAAY,QAAS,EAAI,gBAAe,WAAxC,CACG,EACA,IAAW,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CAAuB,SAAU,CAAA,CACnC,KACZ,EAAA,EAAA,IAAA,CAACC,EAAAA,iBAAD,CAAA,SAAmB,CAA8B,CAAA,CACrC,CAAA,CAAA,GAEd,EAAA,EAAA,KAAA,CAACC,EAAAA,iBAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,2BAAf,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,EAAD,CACM,KACJ,MAAO,EAAM,MAAM,MACnB,eAAc,EACd,mBAAkB,EACL,cACb,SAAU,EACV,aAAc,EACd,wBAAyB,EACd,YACX,SAAU,EACK,gBACf,WAAA,EAAA,EAAA,GAAA,CAAc,GAAc,gCAAgC,EAC5D,OAAQ,EAAM,WACC,eAChB,CAAA,EACA,IACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sFACb,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,UAAU,kCAAoC,CAAA,CACxD,CAAA,EAEN,CAAC,GAAgB,GAAY,GAAoB,IAChD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0GACb,EAAA,EAAA,IAAA,CAACC,EAAAA,QAAD,CAAU,CAAA,CACP,CAAA,GAEP,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gEACZ,GAAY,GAAmB,EAAA,EAAA,IAAA,CAACC,EAAAA,WAAD,CAAY,GAAI,EAAS,UAAU,SAAS,OAAQ,EAAM,MAAM,KAAK,MAAS,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAM,CAAA,CACrH,CAAA,CACF,KACL,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,OAAQ,CAAC,CAAC,WAAa,CAAsB,CAAA,CACxC,CAAA,CAAA,CACb,KACP,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAiB,CAAA,CACP,GAEhB,CACF,EAEA,EAAY,YAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Input as e}from"./ui/input.mjs";import{useCallback as t,useEffect as n,useMemo as r,useRef as i,useState as a}from"react";import{cn as o}from"@customafk/react-toolkit/utils";import{jsx as s,jsxs as c}from"react/jsx-runtime";const l=e=>e?/^-?\d*\.?\d*$/:/^\d*\.?\d*$/,u=e=>Number(e).toLocaleString(),d=(e,t,n)=>{if(n===`none`)return e;let r=10**t,i=e*r;switch(n){case`up`:return Math.ceil(i)/r;case`down`:return Math.floor(i)/r;case`nearest`:return i%1<.1?Math.floor(i)/r:i%1>=.59?Math.ceil(i)/r:(Math.floor(i)+.5)/r;default:return e}},f=({disabled:f=!1,readOnly:p=!1,allowNegative:m=!1,numberAfterDecimalPoint:h=2,roundingRule:g=`none`,value:_=null,unitText:v,decimal:y,placeholder:b,precision:x,wrapperClassName:S,className:C,onChange:w,onValueChange:T,onFocus:E,onBlur:D,...O})=>{let k=i(null),A=i(null),[j,M]=a(_?.toString()??null),N=r(()=>y?.[1]??h,[y,h]),P=r(()=>y&&y[0]-y[1],[y]),F=r(()=>l(m),[m]),I=t(e=>{if(!N||e===`-`)return!0;let[t,n=``]=e.split(`.`),r=t.startsWith(`-`)?t.length-1:t.length;return n.length<=N&&r<=(P??1/0)},[N,P]),L=t(e=>{if(e===`0`)return`0`;if(!Number(e))return null;let[t,n=``]=d(parseFloat(e),Math.min(N-1,x||0),g).toString().split(`.`),r=u(t);return n?`${r}.${n}`:r},[N,x,g]),R=t(e=>{let t=e===`0`,n=e===`-`||/^-0+(\.0+)?$/.test(e)||/^-0*\.$/.test(e);if(t){T?.(0),M(e);return}if(n){M(()=>(T?.(0),e));return}},[T]),z=t(e=>{w?.(e);let{value:t}=e.target;if(t===``||t===void 0){T?.(null),M(null);return}R(t),!(!F.test(t)||!I(t))&&(T?.(parseFloat(t)||0),M(t))},[I,w,T,R,F]),B=t(e=>{p||(E?.(e),M(e=>typeof e==`string`?e.replace(/,/g,``):null))},[p,E]),V=t(e=>{p||(D?.(e),M(e=>e===null?null:e===`0`||e===`-`||/^-0+(\.0+)?$/.test(e)||/^-0*\.$/.test(e)?`0`:typeof e==`string`?L(e):null))},[p,L,D]);return n(()=>{let e=document.activeElement===A.current;if(_==null||!F.test(_.toString())||!I(_.toString())){M(null);return}M(t=>e?t:L(_.toString()))},[L,_,I,F]),n(()=>{if(!k.current||!A.current||!v)return;let e=k.current.offsetWidth;A.current.style.setProperty(`padding-right`,`${(e+10)/16}rem`)},[v]),c(`div`,{className:o(`relative`,S),children:[s(e,{...O,ref:A,value:j||(p?`0`:``),placeholder:b,disabled:f,readOnly:p,className:o(`text-end font-number text-sm slashed-zero lining-nums tabular-nums`,p&&`bg-muted text-muted-foreground`,C),onChange:z,onFocus:B,onBlur:V}),v&&s(`span`,{ref:k,className:`-translate-y-1/2 pointer-events-none absolute top-1/2 right-2 text-muted-foreground text-sm`,children:v})]})};export{f as t};
|
|
2
|
+
//# sourceMappingURL=number-input-CqkegUWs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-input-CqkegUWs.mjs","names":[],"sources":["../packages/components/ui/inputs/number-input.tsx"],"sourcesContent":["'use client';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Input } from '@/components/ui/input';\n\nconst createValidationRegex = (allowNegative: boolean): RegExp => {\n return allowNegative ? /^-?\\d*\\.?\\d*$/ : /^\\d*\\.?\\d*$/;\n};\n\nconst formatNumberWithCommas = (num: number | string): string => {\n return Number(num).toLocaleString();\n};\n\nconst customRoundedValue = (value: number, precision: number, roundingRule: 'up' | 'down' | 'nearest' | 'none') => {\n if (roundingRule === 'none') return value;\n\n const factor = 10 ** precision;\n const scaledValue = value * factor;\n\n switch (roundingRule) {\n case 'up':\n return Math.ceil(scaledValue) / factor;\n case 'down':\n return Math.floor(scaledValue) / factor;\n case 'nearest': {\n if (scaledValue % 1 < 0.1) return Math.floor(scaledValue) / factor;\n if (scaledValue % 1 >= 0.59) return Math.ceil(scaledValue) / factor;\n return (Math.floor(scaledValue) + 0.5) / factor;\n }\n default: {\n return value;\n }\n }\n};\n\ntype TProps = React.HTMLAttributes<HTMLInputElement> & {\n /**\n * Description: Value for the text field\n *\n * Default: ''\n *\n * Usage: Value for the text field\n */\n value?: number | null | undefined;\n /**\n * Description: Disabled state of the text field\n *\n * Default: `false`\n *\n * Usage: Disabled state of the text field\n *\n * Note: If true, the text field will be disabled\n */\n disabled?: boolean;\n /**\n * Description: Readonly state of the text field\n *\n * Default: `false`\n *\n * Usage: Readonly state of the text field\n */\n readOnly?: boolean;\n /**\n * Description: Allow negative value for the text field\n *\n * Default: `false`\n *\n * Usage: Allow negative value for the text field\n */\n allowNegative?: boolean;\n /**\n * Description: Decimal point for the text field\n *\n * Default: `undefined`\n *\n * Usage: Ex: [12,3] => console.log(2323.23) // True\n *\n * Note: IF use this prop, `numberAfterDecimalPoint` will be ignored\n */\n decimal?: [number, number];\n /**\n * Description: Rounding rule for the text field\n *\n * Default: `nearest`\n *\n * Usage: Rounding rule for the text field\n * - 'up': Round up\n * - 'down': Round down\n * - 'nearest': Round to nearest\n * - 'none': No rounding\n *\n * E.g.\n * - Value: 2.135, precision: 2\n * - 'up' => 2.14\n * - 'down' => 2.13\n * - 'nearest' => 2.13\n * - 'none' => 2.135\n */\n roundingRule?: 'up' | 'down' | 'nearest' | 'none';\n /**\n * Description: Number of digits after the decimal point\n *\n * Default: `2`\n *\n * Usage: Number of digits after the decimal point\n */\n numberAfterDecimalPoint?: number;\n /**\n * Description: Placeholder for the text field\n *\n * Default: ''\n *\n * Usage: Placeholder for the text field\n */\n placeholder?: string;\n /**\n * Description: Unit text for the text field\n *\n * Default: ''\n *\n * E.g. 'kg', 'm', 'USD'...\n */\n unitText?: string;\n /**\n * Description: Invalid state of the text field\n *\n * Default: `false`\n *\n * Usage: Invalid state of the text field\n */\n invalid?: boolean;\n /**\n * Description: Precision for the text field\n *\n * Default: `undefined`\n * E.g.\n * - 2.13 => 2.1 when precision is 1\n * - 2.134 => 2.13 when precision is 2\n */\n precision?: number;\n /**\n * Description: Callback function for the value change\n * Usage: Callback function for the value change\n */\n wrapperClassName?: string;\n /**\n * Description: Callback function for the value change\n * Usage: Callback function for the value change\n */\n onValueChange?: (value: number | null) => void;\n /**\n * Description: Callback function for the blur event\n * Usage: Callback function for the blur event\n */\n onBlur?: () => void;\n};\n/**\n * ## Unit Text Field Component\n *\n * **Description**: This component is to display common text field with unit\n *\n * **Usage**: Text field with unit example: 1000 (kg), 100 (m), 1000 (USD)...\n */\nexport const NumberInput: React.FC<TProps> = ({\n disabled = false,\n readOnly = false,\n allowNegative = false,\n numberAfterDecimalPoint = 2,\n roundingRule = 'none',\n value = null,\n unitText,\n decimal,\n placeholder,\n precision,\n wrapperClassName,\n className,\n onChange,\n onValueChange,\n onFocus,\n onBlur,\n ...props\n}) => {\n const _unitRef = useRef<HTMLSpanElement>(null);\n const _inputRef = useRef<HTMLInputElement>(null);\n\n const [_value, _setValue] = useState<string | null>(value?.toString() ?? null);\n\n // Memoized values for validation and formatting\n const maxDecimalPlaces = useMemo(() => decimal?.[1] ?? numberAfterDecimalPoint, [decimal, numberAfterDecimalPoint]);\n const maxIntegerLength = useMemo(() => decimal && decimal[0] - decimal[1], [decimal]);\n const validationRegex = useMemo(() => createValidationRegex(allowNegative), [allowNegative]);\n\n // Validate decimal point is less than or equal to the limit\n const validateDecimalPoint = useCallback(\n (value: string) => {\n if (!maxDecimalPlaces || value === '-') return true;\n\n const [integerPart, decimalPart = ''] = value.split('.') as [string, string];\n const integerPartLength = integerPart.startsWith('-') ? integerPart.length - 1 : integerPart.length;\n const decimalPartLength = decimalPart.length;\n\n return decimalPartLength <= maxDecimalPlaces && integerPartLength <= (maxIntegerLength ?? Infinity);\n },\n [maxDecimalPlaces, maxIntegerLength]\n );\n const formattedValue = useCallback(\n (val: string) => {\n if (val === '0') return '0';\n if (!Number(val)) return null;\n\n const numValue = parseFloat(val);\n const effectivePrecision = Math.min(maxDecimalPlaces - 1, precision || 0);\n const roundedValue = customRoundedValue(numValue, effectivePrecision, roundingRule).toString();\n const [integerPart, decimalPart = ''] = roundedValue.split('.');\n const formattedInteger = formatNumberWithCommas(integerPart);\n return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger;\n },\n [maxDecimalPlaces, precision, roundingRule]\n );\n\n const handleZeroCase = useCallback(\n (value: string) => {\n // Check for zero\n const isZero = value === '0';\n // Check for negative zero patterns. E.g., '-0', '-0.0', '-0.000', '-0.'\n const isNegativeZero = value === '-' || /^-0+(\\.0+)?$/.test(value) || /^-0*\\.$/.test(value);\n if (isZero) {\n onValueChange?.(0);\n _setValue(value);\n return;\n }\n if (isNegativeZero) {\n _setValue(() => {\n onValueChange?.(0);\n return value;\n });\n return;\n }\n },\n [onValueChange]\n );\n const handleChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n e => {\n // Don't prevent default behavior of input change\n onChange?.(e);\n\n // Custom event handler for value change\n const { value: inputValue } = e.target;\n\n // Handle empty input\n if (inputValue === '' || inputValue === undefined) {\n onValueChange?.(null);\n _setValue(null);\n return;\n }\n\n // Handle zero and negative zero\n handleZeroCase(inputValue);\n\n // Validate input format\n if (!validationRegex.test(inputValue) || !validateDecimalPoint(inputValue)) return;\n\n const numericValue = parseFloat(inputValue) || 0;\n onValueChange?.(numericValue);\n _setValue(inputValue);\n },\n [validateDecimalPoint, onChange, onValueChange, handleZeroCase, validationRegex]\n );\n\n const handleFocus = useCallback<React.FocusEventHandler<HTMLInputElement>>(\n e => {\n if (readOnly) return;\n onFocus?.(e);\n _setValue(prev => (typeof prev === 'string' ? prev.replace(/,/g, '') : null)); // Remove commas for easier editing\n },\n [readOnly, onFocus]\n );\n\n const handleBlur = useCallback<React.FocusEventHandler<HTMLInputElement>>(\n e => {\n if (readOnly) return;\n onBlur?.(e);\n _setValue(prev => {\n if (prev === null) return null;\n const isZero = prev === '0' || prev === '-' || /^-0+(\\.0+)?$/.test(prev) || /^-0*\\.$/.test(prev);\n if (isZero) return '0';\n return typeof prev === 'string' ? formattedValue(prev) : null;\n });\n },\n [readOnly, formattedValue, onBlur]\n );\n\n // Set initial value\n useEffect(() => {\n const isFocused = document.activeElement === _inputRef.current;\n\n if (value === undefined || value === null || !validationRegex.test(value.toString()) || !validateDecimalPoint(value.toString())) {\n _setValue(null);\n return;\n }\n\n _setValue(prev => (isFocused ? prev : formattedValue(value.toString())));\n }, [formattedValue, value, validateDecimalPoint, validationRegex]);\n\n // Set padding right for the input field\n useEffect(() => {\n if (!_unitRef.current || !_inputRef.current || !unitText) return;\n const unitWidth = _unitRef.current.offsetWidth;\n _inputRef.current.style.setProperty('padding-right', `${(unitWidth + 10) / 16}rem`);\n }, [unitText]);\n\n return (\n <div className={cn('relative', wrapperClassName)}>\n <Input\n {...props}\n ref={_inputRef}\n value={_value || (readOnly ? '0' : '')}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n className={cn('text-end font-number text-sm slashed-zero lining-nums tabular-nums', readOnly && 'bg-muted text-muted-foreground', className)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n {unitText && (\n <span ref={_unitRef} className=\"-translate-y-1/2 pointer-events-none absolute top-1/2 right-2 text-muted-foreground text-sm\">\n {unitText}\n </span>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./ui/input.cjs");let t=require("react"),n=require("@customafk/react-toolkit/utils"),r=require("react/jsx-runtime");const i=e=>e?/^-?\d*\.?\d*$/:/^\d*\.?\d*$/,a=e=>Number(e).toLocaleString(),o=(e,t,n)=>{if(n===`none`)return e;let r=10**t,i=e*r;switch(n){case`up`:return Math.ceil(i)/r;case`down`:return Math.floor(i)/r;case`nearest`:return i%1<.1?Math.floor(i)/r:i%1>=.59?Math.ceil(i)/r:(Math.floor(i)+.5)/r;default:return e}},s=({disabled:s=!1,readOnly:c=!1,allowNegative:l=!1,numberAfterDecimalPoint:u=2,roundingRule:d=`none`,value:f=null,unitText:p,decimal:m,placeholder:h,precision:g,wrapperClassName:_,className:v,onChange:y,onValueChange:b,onFocus:x,onBlur:S,...C})=>{let w=(0,t.useRef)(null),T=(0,t.useRef)(null),[E,D]=(0,t.useState)(f?.toString()??null),O=(0,t.useMemo)(()=>m?.[1]??u,[m,u]),k=(0,t.useMemo)(()=>m&&m[0]-m[1],[m]),A=(0,t.useMemo)(()=>i(l),[l]),j=(0,t.useCallback)(e=>{if(!O||e===`-`)return!0;let[t,n=``]=e.split(`.`),r=t.startsWith(`-`)?t.length-1:t.length;return n.length<=O&&r<=(k??1/0)},[O,k]),M=(0,t.useCallback)(e=>{if(e===`0`)return`0`;if(!Number(e))return null;let[t,n=``]=o(parseFloat(e),Math.min(O-1,g||0),d).toString().split(`.`),r=a(t);return n?`${r}.${n}`:r},[O,g,d]),N=(0,t.useCallback)(e=>{let t=e===`0`,n=e===`-`||/^-0+(\.0+)?$/.test(e)||/^-0*\.$/.test(e);if(t){b?.(0),D(e);return}if(n){D(()=>(b?.(0),e));return}},[b]),P=(0,t.useCallback)(e=>{y?.(e);let{value:t}=e.target;if(t===``||t===void 0){b?.(null),D(null);return}N(t),!(!A.test(t)||!j(t))&&(b?.(parseFloat(t)||0),D(t))},[j,y,b,N,A]),F=(0,t.useCallback)(e=>{c||(x?.(e),D(e=>typeof e==`string`?e.replace(/,/g,``):null))},[c,x]),I=(0,t.useCallback)(e=>{c||(S?.(e),D(e=>e===null?null:e===`0`||e===`-`||/^-0+(\.0+)?$/.test(e)||/^-0*\.$/.test(e)?`0`:typeof e==`string`?M(e):null))},[c,M,S]);return(0,t.useEffect)(()=>{let e=document.activeElement===T.current;if(f==null||!A.test(f.toString())||!j(f.toString())){D(null);return}D(t=>e?t:M(f.toString()))},[M,f,j,A]),(0,t.useEffect)(()=>{if(!w.current||!T.current||!p)return;let e=w.current.offsetWidth;T.current.style.setProperty(`padding-right`,`${(e+10)/16}rem`)},[p]),(0,r.jsxs)(`div`,{className:(0,n.cn)(`relative`,_),children:[(0,r.jsx)(e.Input,{...C,ref:T,value:E||(c?`0`:``),placeholder:h,disabled:s,readOnly:c,className:(0,n.cn)(`text-end font-number text-sm slashed-zero lining-nums tabular-nums`,c&&`bg-muted text-muted-foreground`,v),onChange:P,onFocus:F,onBlur:I}),p&&(0,r.jsx)(`span`,{ref:w,className:`-translate-y-1/2 pointer-events-none absolute top-1/2 right-2 text-muted-foreground text-sm`,children:p})]})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
|
|
2
|
+
//# sourceMappingURL=number-input-kTh9zzr7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-input-kTh9zzr7.cjs","names":["Input"],"sources":["../packages/components/ui/inputs/number-input.tsx"],"sourcesContent":["'use client';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Input } from '@/components/ui/input';\n\nconst createValidationRegex = (allowNegative: boolean): RegExp => {\n return allowNegative ? /^-?\\d*\\.?\\d*$/ : /^\\d*\\.?\\d*$/;\n};\n\nconst formatNumberWithCommas = (num: number | string): string => {\n return Number(num).toLocaleString();\n};\n\nconst customRoundedValue = (value: number, precision: number, roundingRule: 'up' | 'down' | 'nearest' | 'none') => {\n if (roundingRule === 'none') return value;\n\n const factor = 10 ** precision;\n const scaledValue = value * factor;\n\n switch (roundingRule) {\n case 'up':\n return Math.ceil(scaledValue) / factor;\n case 'down':\n return Math.floor(scaledValue) / factor;\n case 'nearest': {\n if (scaledValue % 1 < 0.1) return Math.floor(scaledValue) / factor;\n if (scaledValue % 1 >= 0.59) return Math.ceil(scaledValue) / factor;\n return (Math.floor(scaledValue) + 0.5) / factor;\n }\n default: {\n return value;\n }\n }\n};\n\ntype TProps = React.HTMLAttributes<HTMLInputElement> & {\n /**\n * Description: Value for the text field\n *\n * Default: ''\n *\n * Usage: Value for the text field\n */\n value?: number | null | undefined;\n /**\n * Description: Disabled state of the text field\n *\n * Default: `false`\n *\n * Usage: Disabled state of the text field\n *\n * Note: If true, the text field will be disabled\n */\n disabled?: boolean;\n /**\n * Description: Readonly state of the text field\n *\n * Default: `false`\n *\n * Usage: Readonly state of the text field\n */\n readOnly?: boolean;\n /**\n * Description: Allow negative value for the text field\n *\n * Default: `false`\n *\n * Usage: Allow negative value for the text field\n */\n allowNegative?: boolean;\n /**\n * Description: Decimal point for the text field\n *\n * Default: `undefined`\n *\n * Usage: Ex: [12,3] => console.log(2323.23) // True\n *\n * Note: IF use this prop, `numberAfterDecimalPoint` will be ignored\n */\n decimal?: [number, number];\n /**\n * Description: Rounding rule for the text field\n *\n * Default: `nearest`\n *\n * Usage: Rounding rule for the text field\n * - 'up': Round up\n * - 'down': Round down\n * - 'nearest': Round to nearest\n * - 'none': No rounding\n *\n * E.g.\n * - Value: 2.135, precision: 2\n * - 'up' => 2.14\n * - 'down' => 2.13\n * - 'nearest' => 2.13\n * - 'none' => 2.135\n */\n roundingRule?: 'up' | 'down' | 'nearest' | 'none';\n /**\n * Description: Number of digits after the decimal point\n *\n * Default: `2`\n *\n * Usage: Number of digits after the decimal point\n */\n numberAfterDecimalPoint?: number;\n /**\n * Description: Placeholder for the text field\n *\n * Default: ''\n *\n * Usage: Placeholder for the text field\n */\n placeholder?: string;\n /**\n * Description: Unit text for the text field\n *\n * Default: ''\n *\n * E.g. 'kg', 'm', 'USD'...\n */\n unitText?: string;\n /**\n * Description: Invalid state of the text field\n *\n * Default: `false`\n *\n * Usage: Invalid state of the text field\n */\n invalid?: boolean;\n /**\n * Description: Precision for the text field\n *\n * Default: `undefined`\n * E.g.\n * - 2.13 => 2.1 when precision is 1\n * - 2.134 => 2.13 when precision is 2\n */\n precision?: number;\n /**\n * Description: Callback function for the value change\n * Usage: Callback function for the value change\n */\n wrapperClassName?: string;\n /**\n * Description: Callback function for the value change\n * Usage: Callback function for the value change\n */\n onValueChange?: (value: number | null) => void;\n /**\n * Description: Callback function for the blur event\n * Usage: Callback function for the blur event\n */\n onBlur?: () => void;\n};\n/**\n * ## Unit Text Field Component\n *\n * **Description**: This component is to display common text field with unit\n *\n * **Usage**: Text field with unit example: 1000 (kg), 100 (m), 1000 (USD)...\n */\nexport const NumberInput: React.FC<TProps> = ({\n disabled = false,\n readOnly = false,\n allowNegative = false,\n numberAfterDecimalPoint = 2,\n roundingRule = 'none',\n value = null,\n unitText,\n decimal,\n placeholder,\n precision,\n wrapperClassName,\n className,\n onChange,\n onValueChange,\n onFocus,\n onBlur,\n ...props\n}) => {\n const _unitRef = useRef<HTMLSpanElement>(null);\n const _inputRef = useRef<HTMLInputElement>(null);\n\n const [_value, _setValue] = useState<string | null>(value?.toString() ?? null);\n\n // Memoized values for validation and formatting\n const maxDecimalPlaces = useMemo(() => decimal?.[1] ?? numberAfterDecimalPoint, [decimal, numberAfterDecimalPoint]);\n const maxIntegerLength = useMemo(() => decimal && decimal[0] - decimal[1], [decimal]);\n const validationRegex = useMemo(() => createValidationRegex(allowNegative), [allowNegative]);\n\n // Validate decimal point is less than or equal to the limit\n const validateDecimalPoint = useCallback(\n (value: string) => {\n if (!maxDecimalPlaces || value === '-') return true;\n\n const [integerPart, decimalPart = ''] = value.split('.') as [string, string];\n const integerPartLength = integerPart.startsWith('-') ? integerPart.length - 1 : integerPart.length;\n const decimalPartLength = decimalPart.length;\n\n return decimalPartLength <= maxDecimalPlaces && integerPartLength <= (maxIntegerLength ?? Infinity);\n },\n [maxDecimalPlaces, maxIntegerLength]\n );\n const formattedValue = useCallback(\n (val: string) => {\n if (val === '0') return '0';\n if (!Number(val)) return null;\n\n const numValue = parseFloat(val);\n const effectivePrecision = Math.min(maxDecimalPlaces - 1, precision || 0);\n const roundedValue = customRoundedValue(numValue, effectivePrecision, roundingRule).toString();\n const [integerPart, decimalPart = ''] = roundedValue.split('.');\n const formattedInteger = formatNumberWithCommas(integerPart);\n return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger;\n },\n [maxDecimalPlaces, precision, roundingRule]\n );\n\n const handleZeroCase = useCallback(\n (value: string) => {\n // Check for zero\n const isZero = value === '0';\n // Check for negative zero patterns. E.g., '-0', '-0.0', '-0.000', '-0.'\n const isNegativeZero = value === '-' || /^-0+(\\.0+)?$/.test(value) || /^-0*\\.$/.test(value);\n if (isZero) {\n onValueChange?.(0);\n _setValue(value);\n return;\n }\n if (isNegativeZero) {\n _setValue(() => {\n onValueChange?.(0);\n return value;\n });\n return;\n }\n },\n [onValueChange]\n );\n const handleChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n e => {\n // Don't prevent default behavior of input change\n onChange?.(e);\n\n // Custom event handler for value change\n const { value: inputValue } = e.target;\n\n // Handle empty input\n if (inputValue === '' || inputValue === undefined) {\n onValueChange?.(null);\n _setValue(null);\n return;\n }\n\n // Handle zero and negative zero\n handleZeroCase(inputValue);\n\n // Validate input format\n if (!validationRegex.test(inputValue) || !validateDecimalPoint(inputValue)) return;\n\n const numericValue = parseFloat(inputValue) || 0;\n onValueChange?.(numericValue);\n _setValue(inputValue);\n },\n [validateDecimalPoint, onChange, onValueChange, handleZeroCase, validationRegex]\n );\n\n const handleFocus = useCallback<React.FocusEventHandler<HTMLInputElement>>(\n e => {\n if (readOnly) return;\n onFocus?.(e);\n _setValue(prev => (typeof prev === 'string' ? prev.replace(/,/g, '') : null)); // Remove commas for easier editing\n },\n [readOnly, onFocus]\n );\n\n const handleBlur = useCallback<React.FocusEventHandler<HTMLInputElement>>(\n e => {\n if (readOnly) return;\n onBlur?.(e);\n _setValue(prev => {\n if (prev === null) return null;\n const isZero = prev === '0' || prev === '-' || /^-0+(\\.0+)?$/.test(prev) || /^-0*\\.$/.test(prev);\n if (isZero) return '0';\n return typeof prev === 'string' ? formattedValue(prev) : null;\n });\n },\n [readOnly, formattedValue, onBlur]\n );\n\n // Set initial value\n useEffect(() => {\n const isFocused = document.activeElement === _inputRef.current;\n\n if (value === undefined || value === null || !validationRegex.test(value.toString()) || !validateDecimalPoint(value.toString())) {\n _setValue(null);\n return;\n }\n\n _setValue(prev => (isFocused ? prev : formattedValue(value.toString())));\n }, [formattedValue, value, validateDecimalPoint, validationRegex]);\n\n // Set padding right for the input field\n useEffect(() => {\n if (!_unitRef.current || !_inputRef.current || !unitText) return;\n const unitWidth = _unitRef.current.offsetWidth;\n _inputRef.current.style.setProperty('padding-right', `${(unitWidth + 10) / 16}rem`);\n }, [unitText]);\n\n return (\n <div className={cn('relative', wrapperClassName)}>\n <Input\n {...props}\n ref={_inputRef}\n value={_value || (readOnly ? '0' : '')}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n className={cn('text-end font-number text-sm slashed-zero lining-nums tabular-nums', readOnly && 'bg-muted text-muted-foreground', className)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n {unitText && (\n <span ref={_unitRef} className=\"-translate-y-1/2 pointer-events-none absolute top-1/2 right-2 text-muted-foreground text-sm\">\n {unitText}\n </span>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./features/charts/index.cjs"),t=require("./ui/chart.cjs");let n=require("react"),r=require("@customafk/react-toolkit/utils"),i=require("react/jsx-runtime"),a=require("recharts");const o=({data:o,dataKey:s=`orders`,label:c=`Orders`,statuses:l,color:u=`var(--chart-1)`,valueFormatter:d=e=>e.toLocaleString(`en-US`),dateFormatter:f=e.toDateLabel,showLegend:p=!!l,showGrid:m=!0,className:h,animate:g=!0,height:_})=>(0,i.jsx)(t.ChartContainer,{"data-slot":`orders-bar-chart`,config:(0,n.useMemo)(()=>l?Object.fromEntries(l.map((t,n)=>[t.key,{label:t.label,color:t.color||e.getChartColor(n)}])):{[s]:{label:c,color:u}},[l,s,c,u]),className:(0,r.cn)(`w-full`,h),style:_===void 0?void 0:{height:_,aspectRatio:`auto`},children:(0,i.jsxs)(a.BarChart,{data:o,margin:{top:8,right:12,bottom:0,left:12},children:[m&&(0,i.jsx)(a.CartesianGrid,{vertical:!1}),(0,i.jsx)(a.XAxis,{dataKey:`date`,tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:f}),(0,i.jsx)(a.YAxis,{tickLine:!1,axisLine:!1,tickMargin:8,width:48,allowDecimals:!1,tickFormatter:d}),(0,i.jsx)(t.ChartTooltip,{content:(0,i.jsx)(t.ChartTooltipContent,{labelFormatter:(e,t)=>{let n=t?.[0]?.payload?.date;return n?f(n):null}})}),l?l.map((t,n)=>(0,i.jsx)(a.Bar,{dataKey:t.key,stackId:`orders`,fill:t.color||e.getChartColor(n),radius:n===l.length-1?[4,4,0,0]:[0,0,0,0],isAnimationActive:g},t.key)):(0,i.jsx)(a.Bar,{dataKey:s,fill:u,radius:[4,4,0,0],isAnimationActive:g}),p&&(0,i.jsx)(t.ChartLegend,{content:(0,i.jsx)(t.ChartLegendContent,{})})]})});exports.OrdersBarChart=o;
|
|
2
|
+
//# sourceMappingURL=orders-bar-chart-9RmtP6In.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-bar-chart-9RmtP6In.cjs","names":["toDateLabel","ChartContainer","getChartColor","BarChart","CartesianGrid","XAxis","YAxis","ChartTooltip","ChartTooltipContent","Bar","ChartLegend","ChartLegendContent"],"sources":["../packages/components/features/charts/components/orders-bar-chart.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\n\nimport { Bar, BarChart, CartesianGrid, XAxis, YAxis } from 'recharts';\nimport type { BaseChartProps, ChartSeries } from '../types';\nimport { getChartColor, toDateLabel } from '../utils';\n\nexport type OrdersBarChartProps = BaseChartProps & {\n data: Array<{ date: string | Date } & Record<string, unknown>>;\n /** Simple mode: the key holding each period's count. Defaults to `'orders'`. */\n dataKey?: string;\n /** Series label in simple mode. Defaults to `'Orders'`. */\n label?: string;\n /** Stacked mode: one series per order status; each `key` indexes into the data rows. */\n statuses?: ChartSeries[];\n color?: string;\n valueFormatter?: (value: number) => string;\n dateFormatter?: (date: string | Date) => string;\n /** Defaults to `true` when `statuses` is provided. */\n showLegend?: boolean;\n showGrid?: boolean;\n};\n\n/**\n * A bar chart for order volume per period — a single series by default, or stacked by order\n * status when `statuses` is provided.\n *\n * @example\n * ```tsx\n * import { OrdersBarChart } from '@customafk/lunas-ui/features/charts';\n *\n * <OrdersBarChart\n * data={[{ date: '2026-06-01', completed: 32, pending: 6, cancelled: 2 }]}\n * statuses={[\n * { key: 'completed', label: 'Completed' },\n * { key: 'pending', label: 'Pending' },\n * { key: 'cancelled', label: 'Cancelled' },\n * ]}\n * />\n * ```\n */\nexport const OrdersBarChart = ({\n data,\n dataKey = 'orders',\n label = 'Orders',\n statuses,\n color = 'var(--chart-1)',\n valueFormatter = value => value.toLocaleString('en-US'),\n dateFormatter = toDateLabel,\n showLegend = !!statuses,\n showGrid = true,\n className,\n animate = true,\n height,\n}: OrdersBarChartProps) => {\n const config = useMemo<ChartConfig>(() => {\n if (!statuses) return { [dataKey]: { label, color } };\n return Object.fromEntries(statuses.map((status, index) => [status.key, { label: status.label, color: status.color || getChartColor(index) }]));\n }, [statuses, dataKey, label, color]);\n\n return (\n <ChartContainer\n data-slot=\"orders-bar-chart\"\n config={config}\n className={cn('w-full', className)}\n style={height !== undefined ? { height, aspectRatio: 'auto' } : undefined}\n >\n <BarChart data={data} margin={{ top: 8, right: 12, bottom: 0, left: 12 }}>\n {showGrid && <CartesianGrid vertical={false} />}\n <XAxis dataKey=\"date\" tickLine={false} axisLine={false} tickMargin={8} tickFormatter={dateFormatter} />\n <YAxis tickLine={false} axisLine={false} tickMargin={8} width={48} allowDecimals={false} tickFormatter={valueFormatter} />\n <ChartTooltip\n content={\n <ChartTooltipContent\n labelFormatter={(_, payload) => {\n const date = payload?.[0]?.payload?.date;\n return date ? dateFormatter(date) : null;\n }}\n />\n }\n />\n {statuses ? (\n statuses.map((status, index) => (\n <Bar\n key={status.key}\n dataKey={status.key}\n stackId=\"orders\"\n fill={status.color || getChartColor(index)}\n radius={index === statuses.length - 1 ? [4, 4, 0, 0] : [0, 0, 0, 0]}\n isAnimationActive={animate}\n />\n ))\n ) : (\n <Bar dataKey={dataKey} fill={color} radius={[4, 4, 0, 0]} isAnimationActive={animate} />\n )}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n </BarChart>\n </ChartContainer>\n );\n};\n"],"mappings":"mMA8CA,MAAa,GAAkB,CAC7B,OACA,UAAU,SACV,QAAQ,SACR,WACA,QAAQ,iBACR,iBAAiB,GAAS,EAAM,eAAe,OAAO,EACtD,gBAAgBA,EAAAA,YAChB,aAAa,CAAC,CAAC,EACf,WAAW,GACX,YACA,UAAU,GACV,aAQE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CACE,YAAU,mBACV,QAAA,EAAA,EAAA,QAAA,KAPG,EACE,OAAO,YAAY,EAAS,KAAK,EAAQ,IAAU,CAAC,EAAO,IAAK,CAAE,MAAO,EAAO,MAAO,MAAO,EAAO,OAASC,EAAAA,cAAc,CAAK,CAAE,CAAC,CAAC,CAAC,EADvH,EAAG,GAAU,CAAE,QAAO,OAAM,CAAE,EAEnD,CAAC,EAAU,EAAS,EAAO,CAAK,CAKlB,EACb,WAAA,EAAA,EAAA,GAAA,CAAc,SAAU,CAAS,EACjC,MAAO,IAAW,IAAA,GAA8C,IAAA,GAAlC,CAAE,SAAQ,YAAa,MAAO,YAE5D,EAAA,EAAA,KAAA,CAACC,EAAAA,SAAD,CAAgB,OAAM,OAAQ,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,EAAG,KAAM,EAAG,WAAvE,CACG,IAAY,EAAA,EAAA,IAAA,CAACC,EAAAA,cAAD,CAAe,SAAU,EAAQ,CAAA,GAC9C,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CAAO,QAAQ,OAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,cAAe,CAAgB,CAAA,GACtG,EAAA,EAAA,IAAA,CAACC,EAAAA,MAAD,CAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,MAAO,GAAI,cAAe,GAAO,cAAe,CAAiB,CAAA,GACzH,EAAA,EAAA,IAAA,CAACC,EAAAA,aAAD,CACE,SACE,EAAA,EAAA,IAAA,CAACC,EAAAA,oBAAD,CACE,gBAAiB,EAAG,IAAY,CAC9B,IAAM,EAAO,IAAU,EAAE,EAAE,SAAS,KACpC,OAAO,EAAO,EAAc,CAAI,EAAI,IACtC,CACD,CAAA,CAEJ,CAAA,EACA,EACC,EAAS,KAAK,EAAQ,KACpB,EAAA,EAAA,IAAA,CAACC,EAAAA,IAAD,CAEE,QAAS,EAAO,IAChB,QAAQ,SACR,KAAM,EAAO,OAASP,EAAAA,cAAc,CAAK,EACzC,OAAQ,IAAU,EAAS,OAAS,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAClE,kBAAmB,CACpB,EANM,EAAO,GAMb,CACF,GAED,EAAA,EAAA,IAAA,CAACO,EAAAA,IAAD,CAAc,UAAS,KAAM,EAAO,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,kBAAmB,CAAU,CAAA,EAExF,IAAc,EAAA,EAAA,IAAA,CAACC,EAAAA,YAAD,CAAa,SAAS,EAAA,EAAA,IAAA,CAACC,EAAAA,mBAAD,CAAqB,CAAA,CAAI,CAAA,CACtD,GACI,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{getChartColor as e,toDateLabel as t}from"./features/charts/index.mjs";import{ChartContainer as n,ChartLegend as r,ChartLegendContent as i,ChartTooltip as a,ChartTooltipContent as o}from"./ui/chart.mjs";import{useMemo as s}from"react";import{cn as c}from"@customafk/react-toolkit/utils";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{Bar as d,BarChart as f,CartesianGrid as p,XAxis as m,YAxis as h}from"recharts";const g=({data:g,dataKey:_=`orders`,label:v=`Orders`,statuses:y,color:b=`var(--chart-1)`,valueFormatter:x=e=>e.toLocaleString(`en-US`),dateFormatter:S=t,showLegend:C=!!y,showGrid:w=!0,className:T,animate:E=!0,height:D})=>l(n,{"data-slot":`orders-bar-chart`,config:s(()=>y?Object.fromEntries(y.map((t,n)=>[t.key,{label:t.label,color:t.color||e(n)}])):{[_]:{label:v,color:b}},[y,_,v,b]),className:c(`w-full`,T),style:D===void 0?void 0:{height:D,aspectRatio:`auto`},children:u(f,{data:g,margin:{top:8,right:12,bottom:0,left:12},children:[w&&l(p,{vertical:!1}),l(m,{dataKey:`date`,tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:S}),l(h,{tickLine:!1,axisLine:!1,tickMargin:8,width:48,allowDecimals:!1,tickFormatter:x}),l(a,{content:l(o,{labelFormatter:(e,t)=>{let n=t?.[0]?.payload?.date;return n?S(n):null}})}),y?y.map((t,n)=>l(d,{dataKey:t.key,stackId:`orders`,fill:t.color||e(n),radius:n===y.length-1?[4,4,0,0]:[0,0,0,0],isAnimationActive:E},t.key)):l(d,{dataKey:_,fill:b,radius:[4,4,0,0],isAnimationActive:E}),C&&l(r,{content:l(i,{})})]})});export{g as OrdersBarChart};
|
|
2
|
+
//# sourceMappingURL=orders-bar-chart-DQhJGmwY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-bar-chart-DQhJGmwY.mjs","names":[],"sources":["../packages/components/features/charts/components/orders-bar-chart.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart';\n\nimport { Bar, BarChart, CartesianGrid, XAxis, YAxis } from 'recharts';\nimport type { BaseChartProps, ChartSeries } from '../types';\nimport { getChartColor, toDateLabel } from '../utils';\n\nexport type OrdersBarChartProps = BaseChartProps & {\n data: Array<{ date: string | Date } & Record<string, unknown>>;\n /** Simple mode: the key holding each period's count. Defaults to `'orders'`. */\n dataKey?: string;\n /** Series label in simple mode. Defaults to `'Orders'`. */\n label?: string;\n /** Stacked mode: one series per order status; each `key` indexes into the data rows. */\n statuses?: ChartSeries[];\n color?: string;\n valueFormatter?: (value: number) => string;\n dateFormatter?: (date: string | Date) => string;\n /** Defaults to `true` when `statuses` is provided. */\n showLegend?: boolean;\n showGrid?: boolean;\n};\n\n/**\n * A bar chart for order volume per period — a single series by default, or stacked by order\n * status when `statuses` is provided.\n *\n * @example\n * ```tsx\n * import { OrdersBarChart } from '@customafk/lunas-ui/features/charts';\n *\n * <OrdersBarChart\n * data={[{ date: '2026-06-01', completed: 32, pending: 6, cancelled: 2 }]}\n * statuses={[\n * { key: 'completed', label: 'Completed' },\n * { key: 'pending', label: 'Pending' },\n * { key: 'cancelled', label: 'Cancelled' },\n * ]}\n * />\n * ```\n */\nexport const OrdersBarChart = ({\n data,\n dataKey = 'orders',\n label = 'Orders',\n statuses,\n color = 'var(--chart-1)',\n valueFormatter = value => value.toLocaleString('en-US'),\n dateFormatter = toDateLabel,\n showLegend = !!statuses,\n showGrid = true,\n className,\n animate = true,\n height,\n}: OrdersBarChartProps) => {\n const config = useMemo<ChartConfig>(() => {\n if (!statuses) return { [dataKey]: { label, color } };\n return Object.fromEntries(statuses.map((status, index) => [status.key, { label: status.label, color: status.color || getChartColor(index) }]));\n }, [statuses, dataKey, label, color]);\n\n return (\n <ChartContainer\n data-slot=\"orders-bar-chart\"\n config={config}\n className={cn('w-full', className)}\n style={height !== undefined ? { height, aspectRatio: 'auto' } : undefined}\n >\n <BarChart data={data} margin={{ top: 8, right: 12, bottom: 0, left: 12 }}>\n {showGrid && <CartesianGrid vertical={false} />}\n <XAxis dataKey=\"date\" tickLine={false} axisLine={false} tickMargin={8} tickFormatter={dateFormatter} />\n <YAxis tickLine={false} axisLine={false} tickMargin={8} width={48} allowDecimals={false} tickFormatter={valueFormatter} />\n <ChartTooltip\n content={\n <ChartTooltipContent\n labelFormatter={(_, payload) => {\n const date = payload?.[0]?.payload?.date;\n return date ? dateFormatter(date) : null;\n }}\n />\n }\n />\n {statuses ? (\n statuses.map((status, index) => (\n <Bar\n key={status.key}\n dataKey={status.key}\n stackId=\"orders\"\n fill={status.color || getChartColor(index)}\n radius={index === statuses.length - 1 ? [4, 4, 0, 0] : [0, 0, 0, 0]}\n isAnimationActive={animate}\n />\n ))\n ) : (\n <Bar dataKey={dataKey} fill={color} radius={[4, 4, 0, 0]} isAnimationActive={animate} />\n )}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n </BarChart>\n </ChartContainer>\n );\n};\n"],"mappings":"6aA8CA,MAAa,GAAkB,CAC7B,OACA,UAAU,SACV,QAAQ,SACR,WACA,QAAQ,iBACR,iBAAiB,GAAS,EAAM,eAAe,OAAO,EACtD,gBAAgB,EAChB,aAAa,CAAC,CAAC,EACf,WAAW,GACX,YACA,UAAU,GACV,YAQE,EAAC,EAAD,CACE,YAAU,mBACV,OARW,MACR,EACE,OAAO,YAAY,EAAS,KAAK,EAAQ,IAAU,CAAC,EAAO,IAAK,CAAE,MAAO,EAAO,MAAO,MAAO,EAAO,OAAS,EAAc,CAAK,CAAE,CAAC,CAAC,CAAC,EADvH,EAAG,GAAU,CAAE,QAAO,OAAM,CAAE,EAEnD,CAAC,EAAU,EAAS,EAAO,CAAK,CAKlB,EACb,UAAW,EAAG,SAAU,CAAS,EACjC,MAAO,IAAW,IAAA,GAA8C,IAAA,GAAlC,CAAE,SAAQ,YAAa,MAAO,WAE5D,EAAC,EAAD,CAAgB,OAAM,OAAQ,CAAE,IAAK,EAAG,MAAO,GAAI,OAAQ,EAAG,KAAM,EAAG,WAAvE,CACG,GAAY,EAAC,EAAD,CAAe,SAAU,EAAQ,CAAA,EAC9C,EAAC,EAAD,CAAO,QAAQ,OAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,cAAe,CAAgB,CAAA,EACtG,EAAC,EAAD,CAAO,SAAU,GAAO,SAAU,GAAO,WAAY,EAAG,MAAO,GAAI,cAAe,GAAO,cAAe,CAAiB,CAAA,EACzH,EAAC,EAAD,CACE,QACE,EAAC,EAAD,CACE,gBAAiB,EAAG,IAAY,CAC9B,IAAM,EAAO,IAAU,EAAE,EAAE,SAAS,KACpC,OAAO,EAAO,EAAc,CAAI,EAAI,IACtC,CACD,CAAA,CAEJ,CAAA,EACA,EACC,EAAS,KAAK,EAAQ,IACpB,EAAC,EAAD,CAEE,QAAS,EAAO,IAChB,QAAQ,SACR,KAAM,EAAO,OAAS,EAAc,CAAK,EACzC,OAAQ,IAAU,EAAS,OAAS,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EAClE,kBAAmB,CACpB,EANM,EAAO,GAMb,CACF,EAED,EAAC,EAAD,CAAc,UAAS,KAAM,EAAO,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,kBAAmB,CAAU,CAAA,EAExF,GAAc,EAAC,EAAD,CAAa,QAAS,EAAC,EAAD,CAAqB,CAAA,CAAI,CAAA,CACtD,GACI,CAAA"}
|
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** Main heading shown beneath the construction icon. Defaults to `'Tính năng đang phát triển'`. */
|
|
4
|
-
title?: string;
|
|
5
|
-
/** Supporting text shown below the title. Defaults to a Vietnamese message asking the user to check back later. */
|
|
6
|
-
subtitle?: string;
|
|
7
|
-
/** Label for the action button. Defaults to `'Quay lại'`. */
|
|
8
|
-
buttonText?: string;
|
|
9
|
-
/** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
|
|
10
|
-
onButtonClick?: () => void;
|
|
11
|
-
/** Additional class names applied to the root container element. */
|
|
12
|
-
className?: string;
|
|
13
|
-
/** Additional class names applied to the `Construction` icon. */
|
|
14
|
-
iconClassName?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Full-page placeholder displayed when a feature is still under active development.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* import { FeatureDeveloping } from '@customafk/lunas-ui/pages/FeatureDeveloping';
|
|
22
|
-
*
|
|
23
|
-
* <FeatureDeveloping
|
|
24
|
-
* title="Coming Soon"
|
|
25
|
-
* subtitle="This feature is not ready yet."
|
|
26
|
-
* buttonText="Go Back"
|
|
27
|
-
* onButtonClick={() => router.back()}
|
|
28
|
-
* />
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
declare const FeatureDeveloping: ({
|
|
32
|
-
title,
|
|
33
|
-
subtitle,
|
|
34
|
-
buttonText,
|
|
35
|
-
onButtonClick,
|
|
36
|
-
className,
|
|
37
|
-
iconClassName
|
|
38
|
-
}: FeatureDevelopingProps) => import("react").JSX.Element;
|
|
39
|
-
//#endregion
|
|
40
|
-
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|
|
41
|
-
//# sourceMappingURL=FeatureDeveloping.d.cts.map
|
|
1
|
+
import { n as FeatureDevelopingProps, t as FeatureDeveloping } from "../FeatureDeveloping-zuTTDIh_.cjs";
|
|
2
|
+
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** Main heading shown beneath the construction icon. Defaults to `'Tính năng đang phát triển'`. */
|
|
4
|
-
title?: string;
|
|
5
|
-
/** Supporting text shown below the title. Defaults to a Vietnamese message asking the user to check back later. */
|
|
6
|
-
subtitle?: string;
|
|
7
|
-
/** Label for the action button. Defaults to `'Quay lại'`. */
|
|
8
|
-
buttonText?: string;
|
|
9
|
-
/** Handler called when the action button is clicked. Defaults to `window.history.back()`. */
|
|
10
|
-
onButtonClick?: () => void;
|
|
11
|
-
/** Additional class names applied to the root container element. */
|
|
12
|
-
className?: string;
|
|
13
|
-
/** Additional class names applied to the `Construction` icon. */
|
|
14
|
-
iconClassName?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Full-page placeholder displayed when a feature is still under active development.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* import { FeatureDeveloping } from '@customafk/lunas-ui/pages/FeatureDeveloping';
|
|
22
|
-
*
|
|
23
|
-
* <FeatureDeveloping
|
|
24
|
-
* title="Coming Soon"
|
|
25
|
-
* subtitle="This feature is not ready yet."
|
|
26
|
-
* buttonText="Go Back"
|
|
27
|
-
* onButtonClick={() => router.back()}
|
|
28
|
-
* />
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
declare const FeatureDeveloping: ({
|
|
32
|
-
title,
|
|
33
|
-
subtitle,
|
|
34
|
-
buttonText,
|
|
35
|
-
onButtonClick,
|
|
36
|
-
className,
|
|
37
|
-
iconClassName
|
|
38
|
-
}: FeatureDevelopingProps) => import("react").JSX.Element;
|
|
39
|
-
//#endregion
|
|
40
|
-
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|
|
41
|
-
//# sourceMappingURL=FeatureDeveloping.d.mts.map
|
|
1
|
+
import { n as FeatureDevelopingProps, t as FeatureDeveloping } from "../FeatureDeveloping-zuTTDIh_.mjs";
|
|
2
|
+
export { FeatureDeveloping, FeatureDeveloping as default, FeatureDevelopingProps };
|