@customafk/lunas-ui 0.2.65 → 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-3kZ7JOop.cjs → action-submit-42PxGLsR.cjs} +2 -2
- package/dist/{action-submit-3kZ7JOop.cjs.map → action-submit-42PxGLsR.cjs.map} +1 -1
- package/dist/{action-submit-Dg5GvYz5.mjs → action-submit-SviPJW3i.mjs} +2 -2
- package/dist/{action-submit-Dg5GvYz5.mjs.map → action-submit-SviPJW3i.mjs.map} +1 -1
- package/dist/{actions-form-CE_enCgE.cjs → actions-form-Bo46j_dH.cjs} +2 -2
- package/dist/{actions-form-CE_enCgE.cjs.map → actions-form-Bo46j_dH.cjs.map} +1 -1
- package/dist/{actions-form-BL_B81Vg.mjs → actions-form-QdAsKwcQ.mjs} +2 -2
- package/dist/{actions-form-BL_B81Vg.mjs.map → actions-form-QdAsKwcQ.mjs.map} +1 -1
- 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/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-DdeohRmi.cjs → checkbox-field-B1vCz-Wf.cjs} +2 -2
- package/dist/{checkbox-field-DdeohRmi.cjs.map → checkbox-field-B1vCz-Wf.cjs.map} +1 -1
- package/dist/{checkbox-field-CRcfuDu1.mjs → checkbox-field-FqCe38_D.mjs} +2 -2
- package/dist/{checkbox-field-CRcfuDu1.mjs.map → checkbox-field-FqCe38_D.mjs.map} +1 -1
- 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-BGChwajc.mjs.map → combobox-field-D6fiCcvU.mjs.map} +1 -1
- package/dist/{combobox-field-D9NdSih1.cjs → combobox-field-DLpH6J9H.cjs} +2 -2
- package/dist/{combobox-field-D9NdSih1.cjs.map → combobox-field-DLpH6J9H.cjs.map} +1 -1
- 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/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-Dm4ki1HS.mjs → date-field-Cxbrc0Vl.mjs} +2 -2
- package/dist/{date-field-Dm4ki1HS.mjs.map → date-field-Cxbrc0Vl.mjs.map} +1 -1
- package/dist/{date-field-BqAX4M_h.cjs → date-field-RvEB9F1r.cjs} +2 -2
- package/dist/{date-field-BqAX4M_h.cjs.map → date-field-RvEB9F1r.cjs.map} +1 -1
- 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-ClWBZbUN.mjs → dialog-form-C0W5C0u9.mjs} +2 -2
- package/dist/{dialog-form-ClWBZbUN.mjs.map → dialog-form-C0W5C0u9.mjs.map} +1 -1
- package/dist/{dialog-form-DN-NlQFO.cjs → dialog-form-CkNCwzWG.cjs} +2 -2
- package/dist/{dialog-form-DN-NlQFO.cjs.map → dialog-form-CkNCwzWG.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/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-lDd9ouFN.cjs → email-field-BErx3liY.cjs} +2 -2
- package/dist/{email-field-lDd9ouFN.cjs.map → email-field-BErx3liY.cjs.map} +1 -1
- package/dist/{email-field-DZNR_JbT.mjs → email-field-BtcdBWL4.mjs} +2 -2
- package/dist/{email-field-DZNR_JbT.mjs.map → email-field-BtcdBWL4.mjs.map} +1 -1
- 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.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/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/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-C4isgHWG.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.mts → index-D9bKlLiM.d.cts} +2 -22
- package/dist/{index-DOaKN0wJ.d.cts → index-D9bKlLiM.d.mts} +2 -22
- 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-C8W56XKm.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 +91 -91
- package/dist/index.d.mts +91 -91
- 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-go3H4EQz.d.cts → input-BieGEIDf.d.cts} +2 -2
- package/dist/{input-go3H4EQz.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-Baj9Yhiv.mjs → number-field-BjVjf6s4.mjs} +2 -2
- package/dist/{number-field-Baj9Yhiv.mjs.map → number-field-BjVjf6s4.mjs.map} +1 -1
- package/dist/{number-field-BqeSbMvE.cjs → number-field-DmKh7bbY.cjs} +2 -2
- package/dist/{number-field-BqeSbMvE.cjs.map → number-field-DmKh7bbY.cjs.map} +1 -1
- 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-fzpU42sV.mjs → password-field-C5FsQUa8.mjs} +2 -2
- package/dist/{password-field-fzpU42sV.mjs.map → password-field-C5FsQUa8.mjs.map} +1 -1
- package/dist/{password-field-Cq0S949S.cjs → password-field-gHYDiXWY.cjs} +2 -2
- package/dist/{password-field-Cq0S949S.cjs.map → password-field-gHYDiXWY.cjs.map} +1 -1
- 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-DNbBGWVF.mjs → popover-form-B2taDBAh.mjs} +2 -2
- package/dist/{popover-form-DNbBGWVF.mjs.map → popover-form-B2taDBAh.mjs.map} +1 -1
- package/dist/{popover-form-KLmew1Vd.cjs → popover-form-_hQQpfAB.cjs} +2 -2
- package/dist/{popover-form-KLmew1Vd.cjs.map → popover-form-_hQQpfAB.cjs.map} +1 -1
- 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-DjzD3i-f.cjs → radio-group-field-McpjpLW-.cjs} +2 -2
- package/dist/{radio-group-field-DjzD3i-f.cjs.map → radio-group-field-McpjpLW-.cjs.map} +1 -1
- package/dist/{radio-group-field-Ps8yHpnH.mjs → radio-group-field-ZqMrf9Dx.mjs} +2 -2
- package/dist/{radio-group-field-Ps8yHpnH.mjs.map → radio-group-field-ZqMrf9Dx.mjs.map} +1 -1
- 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/select-B5j4WvPM.d.cts +74 -0
- package/dist/select-B5j4WvPM.d.mts +74 -0
- package/dist/{select-field-B4eU65OI.cjs → select-field-DG8sQ5iN.cjs} +2 -2
- package/dist/{select-field-B4eU65OI.cjs.map → select-field-DG8sQ5iN.cjs.map} +1 -1
- package/dist/{select-field-D6Dw-Jwg.mjs → select-field-Kq5iQCRQ.mjs} +2 -2
- package/dist/{select-field-D6Dw-Jwg.mjs.map → select-field-Kq5iQCRQ.mjs.map} +1 -1
- package/dist/separator-D6_fMJtM.d.cts +32 -0
- package/dist/separator-D6_fMJtM.d.mts +32 -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-Bcs2pHdp.cjs → simple-array-field-4paKpxXk.cjs} +2 -2
- package/dist/{simple-array-field-Bcs2pHdp.cjs.map → simple-array-field-4paKpxXk.cjs.map} +1 -1
- package/dist/{simple-array-field-9oZ-Smzp.mjs → simple-array-field-C5XdemXa.mjs} +2 -2
- package/dist/{simple-array-field-9oZ-Smzp.mjs.map → simple-array-field-C5XdemXa.mjs.map} +1 -1
- package/dist/{simple-boolean-field-C-qq6Vlt.cjs → simple-boolean-field-B9T_fHk9.cjs} +2 -2
- package/dist/{simple-boolean-field-C-qq6Vlt.cjs.map → simple-boolean-field-B9T_fHk9.cjs.map} +1 -1
- package/dist/{simple-boolean-field-CkJUMxNU.mjs → simple-boolean-field-DpJ-fSQk.mjs} +2 -2
- package/dist/{simple-boolean-field-CkJUMxNU.mjs.map → simple-boolean-field-DpJ-fSQk.mjs.map} +1 -1
- package/dist/simple-card-6P377r4A.d.cts +29 -0
- package/dist/simple-card-6P377r4A.d.mts +29 -0
- package/dist/{simple-combobox-field-5dfMd49B.mjs → simple-combobox-field-Ch4SBHCH.mjs} +2 -2
- package/dist/{simple-combobox-field-5dfMd49B.mjs.map → simple-combobox-field-Ch4SBHCH.mjs.map} +1 -1
- package/dist/{simple-combobox-field-BtmQGEo5.cjs → simple-combobox-field-ChMKk7xp.cjs} +2 -2
- package/dist/{simple-combobox-field-BtmQGEo5.cjs.map → simple-combobox-field-ChMKk7xp.cjs.map} +1 -1
- package/dist/{simple-date-field-LVfNhVJi.cjs → simple-date-field-BGGlsHzG.cjs} +2 -2
- package/dist/{simple-date-field-LVfNhVJi.cjs.map → simple-date-field-BGGlsHzG.cjs.map} +1 -1
- package/dist/{simple-date-field-BXoLb496.mjs → simple-date-field-CVKqIrEs.mjs} +2 -2
- package/dist/{simple-date-field-BXoLb496.mjs.map → simple-date-field-CVKqIrEs.mjs.map} +1 -1
- package/dist/{simple-email-field-rZZIXu7S.mjs → simple-email-field-98w0846B.mjs} +2 -2
- package/dist/{simple-email-field-rZZIXu7S.mjs.map → simple-email-field-98w0846B.mjs.map} +1 -1
- package/dist/{simple-email-field-QVUrm8f7.cjs → simple-email-field-DYqCWprP.cjs} +2 -2
- package/dist/{simple-email-field-QVUrm8f7.cjs.map → simple-email-field-DYqCWprP.cjs.map} +1 -1
- package/dist/{simple-number-field-P9PTwcs4.cjs → simple-number-field-otvv2xq-.cjs} +2 -2
- package/dist/{simple-number-field-P9PTwcs4.cjs.map → simple-number-field-otvv2xq-.cjs.map} +1 -1
- package/dist/{simple-number-field-PJAyAOMO.mjs → simple-number-field-zF3oqS8d.mjs} +2 -2
- package/dist/{simple-number-field-PJAyAOMO.mjs.map → simple-number-field-zF3oqS8d.mjs.map} +1 -1
- package/dist/{simple-password-field-BEuFXAsk.mjs → simple-password-field-CuC10c70.mjs} +2 -2
- package/dist/{simple-password-field-BEuFXAsk.mjs.map → simple-password-field-CuC10c70.mjs.map} +1 -1
- package/dist/{simple-password-field-BW6YkfSP.cjs → simple-password-field-D2UMmghM.cjs} +2 -2
- package/dist/{simple-password-field-BW6YkfSP.cjs.map → simple-password-field-D2UMmghM.cjs.map} +1 -1
- package/dist/{simple-radio-group-field-BtQHJpOz.cjs → simple-radio-group-field-C2DDfIUs.cjs} +2 -2
- package/dist/{simple-radio-group-field-BtQHJpOz.cjs.map → simple-radio-group-field-C2DDfIUs.cjs.map} +1 -1
- package/dist/{simple-radio-group-field-DiYQfgts.mjs → simple-radio-group-field-CfziNlLf.mjs} +2 -2
- package/dist/{simple-radio-group-field-DiYQfgts.mjs.map → simple-radio-group-field-CfziNlLf.mjs.map} +1 -1
- package/dist/{simple-select-field--zJMLBUY.cjs → simple-select-field-CeNnXUHN.cjs} +2 -2
- package/dist/{simple-select-field--zJMLBUY.cjs.map → simple-select-field-CeNnXUHN.cjs.map} +1 -1
- package/dist/{simple-select-field-Df4DLsbi.mjs → simple-select-field-DIaxhi1-.mjs} +2 -2
- package/dist/{simple-select-field-Df4DLsbi.mjs.map → simple-select-field-DIaxhi1-.mjs.map} +1 -1
- package/dist/{simple-text-field-zAfkmlhc.mjs → simple-text-field-D8jyznSd.mjs} +2 -2
- package/dist/{simple-text-field-zAfkmlhc.mjs.map → simple-text-field-D8jyznSd.mjs.map} +1 -1
- package/dist/{simple-text-field-DVkuHrhF.cjs → simple-text-field-LYWVIAfQ.cjs} +2 -2
- package/dist/{simple-text-field-DVkuHrhF.cjs.map → simple-text-field-LYWVIAfQ.cjs.map} +1 -1
- package/dist/{simple-textarea-field-BaMK0feA.cjs → simple-textarea-field-DcEvaizE.cjs} +2 -2
- package/dist/{simple-textarea-field-BaMK0feA.cjs.map → simple-textarea-field-DcEvaizE.cjs.map} +1 -1
- package/dist/{simple-textarea-field-q9DeFByl.mjs → simple-textarea-field-p9qX_n7m.mjs} +2 -2
- package/dist/{simple-textarea-field-q9DeFByl.mjs.map → simple-textarea-field-p9qX_n7m.mjs.map} +1 -1
- 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/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-B8HVvc2f.mjs → switch-field-CIoNsRWN.mjs} +2 -2
- package/dist/{switch-field-B8HVvc2f.mjs.map → switch-field-CIoNsRWN.mjs.map} +1 -1
- package/dist/{switch-field-C1uNuuku.cjs → switch-field-n6a5SaEM.cjs} +2 -2
- package/dist/{switch-field-C1uNuuku.cjs.map → switch-field-n6a5SaEM.cjs.map} +1 -1
- 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-CcsR48Jw.mjs → text-editor-field-fso-sw29.mjs} +2 -2
- package/dist/{text-editor-field-CcsR48Jw.mjs.map → text-editor-field-fso-sw29.mjs.map} +1 -1
- package/dist/{text-editor-field-BBDgCPuc.cjs → text-editor-field-gas5r-xy.cjs} +2 -2
- package/dist/{text-editor-field-BBDgCPuc.cjs.map → text-editor-field-gas5r-xy.cjs.map} +1 -1
- package/dist/{text-field-qhiYvQKt.mjs → text-field-B67oTV62.mjs} +2 -2
- package/dist/{text-field-qhiYvQKt.mjs.map → text-field-B67oTV62.mjs.map} +1 -1
- package/dist/{text-field-BhC_ik5w.cjs → text-field-BMo-8rsq.cjs} +2 -2
- package/dist/{text-field-BhC_ik5w.cjs.map → text-field-BMo-8rsq.cjs.map} +1 -1
- package/dist/textarea-C8ZIZh-y.d.cts +26 -0
- package/dist/textarea-C8ZIZh-y.d.mts +26 -0
- package/dist/{textarea-field-C-7ZoUMz.cjs → textarea-field-BUGcITwp.cjs} +2 -2
- package/dist/{textarea-field-C-7ZoUMz.cjs.map → textarea-field-BUGcITwp.cjs.map} +1 -1
- package/dist/{textarea-field-DqDciVSB.mjs → textarea-field-D70rGYIk.mjs} +2 -2
- package/dist/{textarea-field-DqDciVSB.mjs.map → textarea-field-D70rGYIk.mjs.map} +1 -1
- package/dist/title-BT9guhSU.d.cts +41 -0
- package/dist/title-BT9guhSU.d.mts +41 -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.d.cts +1 -1
- package/dist/ui/badge.d.mts +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 -1
- package/dist/combobox-field-BGChwajc.mjs +0 -2
- 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-CM_Hb3JT.mjs +0 -2
- package/dist/tanstack-form-CM_Hb3JT.mjs.map +0 -1
- package/dist/tanstack-form-DS_ZvRl8.cjs +0 -2
- package/dist/tanstack-form-DS_ZvRl8.cjs.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,2 @@
|
|
|
1
|
+
import{Statistic as e}from"./data-display/statistic.mjs";import{Checkbox as t}from"./ui/checkbox.mjs";import{DropdownMenu as n,DropdownMenuContent as r,DropdownMenuGroup as i,DropdownMenuItem as a,DropdownMenuShortcut as o,DropdownMenuTrigger as s}from"./ui/dropdown-menu.mjs";import{Spinner as c}from"./ui/spinner.mjs";import{ResizableHandle as l,ResizablePanel as u,ResizablePanelGroup as d}from"./ui/resizable.mjs";import{AlertTriangle as f,BoxIcon as p,ChevronDown as m,EllipsisVerticalIcon as h,MinusIcon as g,MoveLeftIcon as _,MoveRightIcon as v,PinOffIcon as y}from"lucide-react";import{Activity as b,Suspense as ee,createContext as x,lazy as S,memo as C,use as w,useCallback as T,useEffect as E,useId as te,useMemo as D,useRef as O,useState as k}from"react";import{cn as A}from"@customafk/react-toolkit/utils";import{cva as j}from"class-variance-authority";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{flexRender as F,getCoreRowModel as ne,getExpandedRowModel as re,getGroupedRowModel as ie,useReactTable as ae}from"@tanstack/react-table";const oe=()=>P(`div`,{className:`flex gap-0 text-text-positive-weak`,children:[N(g,{size:16}),N(g,{size:16})]}),I=x(null),L=()=>{let e=w(I);if(!e)throw Error(`useTableInnerWrapperContext must be used within a TableInnerWrapperProvider`);return e},R=x(null),z=()=>{let e=w(R);if(!e)throw Error(`useTableInnerTableContext must be used within a TableInnerTableProvider`);return e},B=x(null),se=()=>{let e=w(B);if(!e)throw Error(`useTableHeaderRowContext must be used within a TableHeaderRowProvider`);return e},V=x(null),H=()=>{let e=w(V);if(!e)throw Error(`useTableBodyContext must be used within a TableBodyProvider`);return e},U=x(null),ce=()=>{let e=w(U);if(!e)throw Error(`useTableRowContext must be used within a TableRowProvider`);return e},le=x(null),W=()=>{let e=w(le);if(!e)throw Error(`useTableContext must be used within a TableProvider`);return e},ue=x(null),G=()=>{let e=w(ue);if(!e)throw Error(`useUITableFilterContext must be used within a UITableProvider`);return e},de=x(null),K=()=>{let e=w(de);if(!e)throw Error(`useUITableAnalysisContext must be used within a UITableProvider`);return e},fe=j([`absolute right-2 z-10 p-0.5 opacity-0 bg-card`,`cursor-pointer rounded-full transition-all`,`text-text-positive-weak`,`[&>svg]:size-4`,`group-hover:opacity-100`,`hover:bg-muted-muted hover:text-text-positive`]),q=j([`sticky left-0 flex flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100`]),J=j([`relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2`]),pe=j([`relative w-full flex-1 min-h-0 overflow-auto border-b border-b-border border-l border-l-border`]),Y=j([`grid w-full table-fixed caption-bottom border-collapse border-spacing-0 flex-col content-start`]),X=j([`sticky top-0 z-40 h-9 w-full`,`grid select-none bg-white`,`border-b border-b-border shadow`,`font-medium text-[13px] text-text-positive-weak`,`[&_tr:not(:last-child)_td]:border-b`,`[&_th]:inline-flex`,`[&_th]:bg-card`,`[&_th]:items-center`,`[&_th]:transition-all`,`[&_th]:duration-300`,`[&_th]:whitespace-nowrap`,`[&_th]:border-border`,`[&_th]:border-r`,`[&_th]:first:border-l-0`,`[&_tr_th:not([data-pinned=false])]:bg-card`]),Z=j([`flex`]),me=j([`group flex`],{variants:{isPinned:{left:`sticky`,right:`sticky`,false:`relative`},isActions:{true:`border-r-0!`,false:``},isLastCell:{true:``,false:``},isFirstCell:{true:``,false:``},position:{start:`justify-start`,center:`justify-center`,end:`justify-end`}},compoundVariants:[{isPinned:`left`,isLastCell:!0,className:`border-r border-r-border`},{isPinned:`right`,isFirstCell:!0,className:`border-l border-l-border`}]}),Q=j([`relative w-full`,`[&_tr]:flex`,`[&_tr]:flex-none`,`[&_tr]:w-full`,`[&_tr]:cursor-pointer [&_tr]:focus:outline-none`,`[&_tr]:border-b [&_tr]:border-b-border`,`[&_td]:z-10`,`[&_td]:transition-all`,`[&_td]:flex`,`[&_td]:flex-none`,`[&_td]:overflow-hidden`,`[&_td]:whitespace-nowrap`,`[&_td]:px-4`,`[&_td]:py-2.5`,`[&_td]:align-middle`,`[&_td]:border-border`,`[&_td]:data-[selected=true]:bg-muted-muted!`,`[&_td]:data-[selected=true]:hover:bg-muted-muted!`,`[&_td>div]:inline-flex`,`[&_td>div]:items-center`,`[&_td>div]:w-full`,`[&_td:not([data-pinned=false])]:z-20`,`[&_td:not([data-pinned=false])]:sticky`,`[&_td:not([data-pinned=false])]:bg-muted-bg-subtle`]),he=j([`group transition-colors hover:bg-muted-muted hover:[&_td]:bg-muted-muted! [&_td]:border-r [&_td]:border-r-border`]),ge=j([`group-hover:bg-muted-muted!`],{variants:{isPinned:{left:`sticky`,right:`sticky`,false:`relative`}},defaultVariants:{isPinned:void 0}}),_e=j([`sticky border-r-0! inset-y-0 right-0 z-30 flex items-center pr-4 group-hover:bg-muted-muted!`]),ve=j([`group-hover:bg-muted-muted!`],{variants:{isPinned:{left:``,right:``,false:``},isLastCell:{true:``,false:``},isFirstCell:{true:``,false:``}},compoundVariants:[{isPinned:`left`,isLastCell:!0,className:`border-r border-r-border`},{isPinned:`right`,isFirstCell:!0,className:`border-l border-l-border`}]}),ye=j([`overflow-x-hidden`],{variants:{position:{start:`justify-start`,center:`justify-center`,end:`justify-end`}},defaultVariants:{position:`start`}}),be=j([`shrink-0 flex w-full justify-center border-t border-border-weak font-medium`]),xe=j([`flex w-full`,`text-[13px] font-medium text-text-positive-weak`]),Se=j([`flex flex-none items-center overflow-hidden whitespace-nowrap px-4 py-2`,`border-r border-r-border`],{variants:{isPinned:{left:`sticky z-20 bg-white`,right:`sticky z-20 bg-white`,false:`relative`},isFirstCell:{true:`border-l border-l-border`,false:``},isLastCell:{true:`border-r border-r-border`,false:``}}}),Ce=j([`flex cursor-pointer gap-x-0.5`],{variants:{state:{idle:`text-text-positive-weak hover:text-text-positive`,fetching:`cursor-not-allowed`,error:`text-danger hover:text-danger-strong`}},defaultVariants:{state:`idle`}}),we=C(({className:e,children:t,...n})=>{let{isFetching:r,isRefetching:i,isEmpty:a}=H();return a||r||i?null:N(`tbody`,{slot:`table-body`,className:A(Q(),e),...n,children:t})});we.displayName=`UITableBody`;const Te=C(({isPinned:e=!1,isFirstCell:t=!1,isLastCell:n=!1,colId:r,position:i=`start`,column:a,getContext:o,...s})=>{let{innerTableId:c,table:l}=z(),u=O(null),d=O(null),f=D(()=>{let t=a?.getStart(`left`);return e===`left`&&typeof t==`number`?`${t}px`:void 0},[e,a]),p=D(()=>{let t=a?.getAfter(`right`);return e===`right`&&typeof t==`number`?`${t}px`:void 0},[e,a]),m=D(()=>`calc(var(--col-${r}-size) * 1px)`,[r]),h=D(()=>a?.columnDef.minSize?`calc(var(--col-${r}-minSize) * 1px)`:void 0,[r,a]),g=D(()=>a?.columnDef.maxSize?`calc(var(--col-${r}-maxSize) * 1px)`:void 0,[r,a]),_=D(()=>F(a?.columnDef.cell,o()),[a,o]);return E(()=>{u.current=document.querySelector(`table[id="${c}"]`)},[c]),E(()=>{if(!d.current)return;let e=d.current.scrollWidth,t=a?.getSize();t!=null&&e>t&&u.current instanceof HTMLTableElement&&typeof r==`string`&&a?.columnDef.meta?.fitContent&&l.setColumnSizing(t=>({...t,[r]:e+32}))},[r,a,l]),N(`td`,{slot:`table-body-cell`,"data-pinned":e,"data-lastcell":n||void 0,"data-firstcell":t||void 0,style:{left:f,right:p,width:m,minWidth:h,maxWidth:g},className:ve({isPinned:e||void 0,isLastCell:n,isFirstCell:t}),...s,children:N(`div`,{ref:d,slot:`table-body-cell-inner`,className:ye({position:i}),children:_})})});Te.displayName=`UITableCell`;const Ee=C(({column:e,getContext:t,className:n,...r})=>{let i=D(()=>F(e?.columnDef.cell,t()),[e,t]);return N(`td`,{"data-col":`actions`,className:_e(),...r,children:i})});Ee.displayName=`UITableCellActions`;const De=C(({isPinned:e,isSelected:n=!1,className:r,onToggleRowSelected:i,...a})=>{let o=T(e=>{i?.(!!e)},[i]);return N(`td`,{slot:`table-body-cell`,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:A(ge({isPinned:e}),r),...a,children:N(`div`,{"data-slot":`table-cell-inner`,className:`flex! w-full! items-center justify-center bg-transparent text-center align-middle`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:N(t,{"aria-label":`Select Row`,checked:n,onCheckedChange:o})})})});De.displayName=`UITableCellSelect`;const Oe=C(()=>{let{table:e,isFetching:t,isRefetching:n,loadingDisplayRow:r=3}=W();return!t&&!n?null:N(`tbody`,{className:A(Q(),`pointer-events-none`),children:Array.from({length:r}).map((t,n)=>N(`tr`,{"data-slot":`table-row`,"data-index":n,className:A(he(),`animate-pulse relative!`),children:e.getAllColumns().map((t,r)=>{let i=t.getIsPinned(),a=t.getStart(`left`),o=t.getAfter(`right`);return t.id===`actions`?N(`td`,{"data-slot":`table-body-cell`,"data-col":t.id,"data-cell":r,style:{width:60},className:_e(),children:N(`div`,{className:`w-full h-4 bg-muted-muted rounded-full`})},`${t.id}-${r}`):t.id===`select`?N(`td`,{"data-slot":`table-body-cell`,"data-col":t.id,"data-cell":r,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:ge({isPinned:`left`}),children:N(`div`,{className:`w-full flex justify-center`,children:N(`div`,{className:`size-4 bg-muted-muted rounded-full`})})},`${t.id}-${n}`):N(`td`,{"data-col":t.id,"data-cell":r,"data-selected":void 0,"data-lastcell":t.id===e.getAllColumns()[e.getAllColumns().length-1].id||void 0,"data-firstcell":t.id===e.getAllColumns()[0].id||void 0,style:{zIndex:i?20:0,left:i===`left`&&typeof a==`number`?`${a}px`:void 0,right:i===`right`&&typeof o==`number`?`${o}px`:void 0,width:`calc(var(--col-${t.id}-size) * 1px)`,minWidth:t.columnDef.minSize?`calc(var(--col-${t.id}-minSize) * 1px)`:void 0,maxWidth:t.columnDef.maxSize?`calc(var(--col-${t.id}-maxSize) * 1px)`:void 0},className:ve({isPinned:t.getIsPinned(),isFirstCell:t.id===e.getRightHeaderGroups()[0]?.headers[0]?.id,isLastCell:t.id===e.getLeftHeaderGroups()[0]?.headers[e.getLeftHeaderGroups()[0].headers.length-1]?.id}),children:N(`div`,{className:ye({position:t.columnDef.meta?.position??`start`}),children:N(`div`,{className:`w-full h-4 bg-muted-muted rounded-full`})})},`${t.id}-${r}`)})},n))})}),ke=C(()=>{let{isEmpty:e,emptyDisplayHeight:t}=W();return e?N(M,{children:e&&N(`div`,{className:q(),style:{minHeight:t??`24rem`},children:P(`div`,{className:`flex flex-col items-center gap-1`,children:[N(p,{strokeWidth:1,size:48}),N(`p`,{children:`Không có dữ liệu`})]})})}):null});ke.displayName=`UITableEmptyDisplay`;const Ae=C(({className:e,children:t,...n})=>N(`div`,{slot:`table-footer`,className:A(be(),e),...n,children:t}));Ae.displayName=`UITableFooter`;function je(e,t,n){switch(n){case`count`:return e;case`sum`:return t.reduce((e,t)=>e+t,0);case`avg`:return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length;case`min`:return t.length===0?0:Math.min(...t);case`max`:return t.length===0?0:Math.max(...t)}}function Me(e,t){return e.map(e=>{let n=e.getValue(t);return typeof n==`string`?Number(n):typeof n==`number`?n:NaN}).filter(e=>!Number.isNaN(e))}const Ne=C(()=>{let{table:t}=W(),{rowSelectionState:n}=H(),r=D(()=>t.getHeaderGroups()[0]?.headers??[],[t.getHeaderGroups()]),i=D(()=>r.some(e=>e.column.columnDef.meta?.aggregation),[r]),a=D(()=>t.getSelectedRowModel().flatRows,[t,n]),o=D(()=>t.getRowModel().rows,[t]),s=a.length>0?a:o,c=D(()=>{let e={};for(let t of r){let n=t.column.columnDef.meta?.aggregation;if(!n)continue;let r=Me(s,t.id);e[t.id]=je(s.length,r,n.type)}return e},[r,s]),l=t.getState().columnPinning,u=l.left??[],d=l.right??[],f=r.find(e=>d.includes(e.id))?.id,p=[...r].reverse().find(e=>u.includes(e.id))?.id;if(!i)return null;let m=a.length>0?`${a.length}`:`${o.length}`;return N(`div`,{slot:`table-footer-row`,className:xe(),children:r.map(t=>{let n=t.id,r=u.includes(n)?`left`:d.includes(n)?`right`:!1,i=n===f,a=n===p,o=r===`left`?`${t.column.getStart(`left`)}px`:void 0,s=r===`right`?`${t.column.getAfter(`right`)}px`:void 0;if(n===`select`)return N(`div`,{slot:`table-footer-select`,"data-pinned":`left`,style:{left:`0px`,width:`60px`},className:A(Se({isPinned:`left`,isFirstCell:!1,isLastCell:!1}),`justify-center`),children:N(`span`,{className:`truncate text-[11px] items-center text-text-positive-weak`,children:m})},n);if(n===`actions`)return N(`div`,{slot:`table-footer-actions`,style:{width:`calc(var(--col-${n}-size) * 1px)`,right:`0px`},className:Se({isPinned:!1,isFirstCell:!1,isLastCell:!1})},n);let l=t.column.columnDef.meta?.aggregation,h=c[n]??null;return N(`div`,{slot:`table-footer-cell`,"data-pinned":r,style:{left:o,right:s,width:`calc(var(--col-${n}-size) * 1px)`},className:Se({isPinned:r||`left`,isFirstCell:i,isLastCell:a}),children:l&&h!==null?N(e,{value:h,prefix:l.prefix,suffix:l.suffix,precision:l.precision,size:`sm`}):N(`span`,{className:`text-text-positive-weak`,children:`—`})},n)})})});Ne.displayName=`UITableFooterRow`;const Pe=C(({className:e,children:t,...n})=>N(`thead`,{slot:`table-head`,className:A(X(),e),...n,children:t}));Pe.displayName=`UITableHead`;const Fe=C(({isPinned:e,onLeftPin:t,onRightPin:c,onUnpin:l,className:u})=>{let d=T(()=>{t?.(`left`)},[t]),f=T(()=>{c?.(`right`)},[c]),p=T(()=>{l?.(!1)},[l]);return P(n,{children:[N(s,{asChild:!0,children:N(`button`,{type:`button`,className:A(fe(),u),children:N(h,{})})}),N(r,{align:`end`,className:`w-64 p-4`,children:P(i,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:[N(b,{mode:e?`visible`:`hidden`,children:P(a,{onClick:p,children:[!!e&&`Bỏ ghim`,N(o,{children:N(y,{className:`size-4`})})]})}),P(b,{mode:e?`hidden`:`visible`,children:[P(a,{onClick:d,children:[e?`Bỏ ghim`:`Ghim trái`,N(o,{children:N(_,{className:`size-4`})})]}),P(a,{onClick:f,children:[e?`Bỏ ghim`:`Ghim phải`,N(o,{children:N(v,{className:`size-4`})})]})]})]})})]})});Fe.displayName=`UITableHeadCellOption`;const Ie=C(({isVisible:e=!0,isPinned:t=!1,isFirstCell:n=!1,isLastCell:r=!1,isOptionsVisible:i=!0,headerId:a,headerColumn:o,className:s,children:c,onColumnPin:l,onToggleVisibility:u,...d})=>{let f=o?.columnDef.meta?.position;return P(`th`,{slot:`table-head-cell`,"data-pinned":t,"data-header":a,style:{zIndex:D(()=>t?20:void 0,[t]),left:D(()=>{let e=o?.getStart?.(`left`);return t===`left`&&typeof e==`number`?`${e}px`:void 0},[t,o]),right:D(()=>{let e=o?.getAfter?.(`right`);return t===`right`&&typeof e==`number`?`${e}px`:void 0},[t,o]),width:D(()=>`calc(var(--header-${a}-size) * 1px)`,[a]),minWidth:D(()=>o?.columnDef.minSize?`calc(var(--col-${a}-minSize) * 1px)`:void 0,[a,o]),maxWidth:D(()=>o?.columnDef.maxSize?`calc(var(--col-${a}-maxSize) * 1px)`:void 0,[a,o])},className:A(me({isPinned:t||`false`,isActions:a===`actions`,isLastCell:r,isFirstCell:n,position:f}),s),...d,children:[N(`div`,{className:`truncate px-4`,children:c}),i&&N(Fe,{isPinned:t,isVisible:e,onLeftPin:l,onRightPin:l,onUnpin:l})]})});Ie.displayName=`UITableHeadCell`;const Le=C(({isPinned:e,isAllRowsSelected:n,style:r,onToggleAllRowsSelected:i,...a})=>{let o=T(e=>{i?.(!!e)},[i]);return N(`th`,{slot:`table-header-cell`,"data-pinned":!0,style:{left:0,zIndex:40,width:60,maxWidth:60},className:ge({isPinned:e}),...a,children:N(`div`,{className:`absolute inset-0 flex items-center justify-center`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:N(t,{"aria-label":`Select All Rows`,checked:n,onCheckedChange:o})})})});Le.displayName=`UITableHeadCellSelect`;const Re=C(({headerGroup:e,className:t,...n})=>{let{isAllRowsSelected:r,columnPinningState:i,leftPinnedHeaders:a,rightPinnedHeaders:o,onToggleAllRowsSelected:s}=se(),c=o[0]?.id,l=a[a.length-1]?.id;return N(`tr`,{slot:`table-head-row`,className:A(Z(),t),...n,children:e.headers.map((e,t)=>{let n=e.column.getIsVisible(),a=i.left?.includes(e.id)?`left`:i.right?.includes(e.id)?`right`:!1;return e.id===`select`?N(Le,{isPinned:a,isAllRowsSelected:r,onToggleAllRowsSelected:s},e.id):N(Ie,{isVisible:n,isPinned:a,isFirstCell:e.id===c,isLastCell:e.id===l,isOptionsVisible:![`select`,`actions`].includes(e.id),headerId:e.id,headerColumn:e.column,colSpan:e.colSpan,onColumnPin:e.column.pin,onToggleVisibility:e.column.toggleVisibility,children:F(e.column.columnDef.header,e.getContext())},`${e.id}-${t}`)})})});Re.displayName=`UITableHeadRow`;const ze=C(({children:e,...t})=>{let{table:n,innerTableId:r,totalSize:i}=z(),a=O(null);return E(()=>{if(!a.current)return;let e=n.getFlatHeaders(),t,r=new ResizeObserver(r=>{t!==void 0&&cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let t=r[0];if(!t)return;let i=t.target;if(!(i instanceof HTMLTableElement))return;let a=t.contentRect.width,{left:o=[],right:s=[]}=n.getState().columnPinning,c=0,l=0,u=0,d=e.map(e=>{let{id:t}=e,n=t===`select`||t===`actions`,r=o.includes(t)||s.includes(t),i=e.getSize(),a=e.column.columnDef.maxSize;return n?(c+=60,{id:t,isFlex:!1,width:60}):r?(c+=i,{id:t,isFlex:!1,width:i}):e.column.columnDef.size||i!==150?(u+=i,{id:t,isFlex:!1,width:i}):(l++,{id:t,isFlex:!0,maxSize:a})}),f=a-c-u,p=l>0?Math.max(0,Math.floor(f/l)):0,m=i.closest(`[data-slot="table-scroll-host"]`);d.forEach(e=>{if(e.isFlex){let t=e.maxSize?Math.min(p,e.maxSize):p;i.style.setProperty(`--header-${e.id}-size`,`${t}`),i.style.setProperty(`--col-${e.id}-size`,`${t}`),m?.style.setProperty(`--col-${e.id}-size`,`${t}`),e.maxSize&&i.style.setProperty(`--col-${e.id}-maxSize`,`${e.maxSize}`)}else i.style.setProperty(`--header-${e.id}-size`,`${e.width}`),i.style.setProperty(`--col-${e.id}-size`,`${e.width}`),m?.style.setProperty(`--col-${e.id}-size`,`${e.width}`)})})});return r.observe(a.current),()=>{t!==void 0&&cancelAnimationFrame(t),r.disconnect()}},[n.getState().columnSizingInfo,n.getState().columnSizing,n.getState().columnPinning]),N(`table`,{id:r,ref:a,slot:`table-inner-table`,className:Y(),style:{minWidth:i},...t,children:e})});ze.displayName=`UITableInnerTable`;const Be=C(({children:e,...t})=>{let{innerWrapperId:n}=L();return N(`div`,{id:n,slot:`table-inner-wrapper`,className:pe(),...t,children:e})});Be.displayName=`UITableInnerWrapper`;const Ve=C(({fetchMoreData:e})=>{let{innerWrapperId:t}=L(),[n,r]=k(`idle`),[i,a]=k(0),o=T(async()=>{try{r(`fetching`),await e?.(),r(`idle`)}catch(e){console.error(`Error fetching more data:`,e),r(`error`)}},[e]);return E(()=>{let e=document.querySelector(`div[id="${t}"]`);if(!e)return;let n=new ResizeObserver(e=>{a(e[0].contentRect.width)});return n.observe(e),()=>n.disconnect()},[t]),e?N(`tr`,{className:`sticky! left-0 h-10`,style:{width:i},children:N(`td`,{className:`absolute left-0 flex w-full items-center justify-center text-xs`,children:P(`button`,{type:`button`,disabled:n===`fetching`,className:Ce({state:n}),onClick:o,children:[n===`idle`&&N(m,{className:`size-4`}),n===`fetching`&&N(c,{className:`size-4 animate-spin`}),n===`error`&&N(f,{className:`size-4 text-danger`}),n===`idle`&&`Tải thêm`,n===`fetching`&&`Đang tải...`,n===`error`&&`Lỗi! Thử lại?`]})})}):null});Ve.displayName=`UITableLoadMore`;const He=C(({row:e,isSelected:t,rowIndex:n,children:r,...i})=>{let{keyOfClickRow:a,isAllRowsSelected:o,columnPinningState:s,leftPinnedHeaders:c,rightPinnedHeaders:l,onClickRow:u}=ce(),d=D(()=>s.left??[],[s]),f=D(()=>s.right??[],[s]),p=D(()=>l?.[0]?.id,[l]),m=D(()=>c?.[c.length-1]?.id,[c]),h=D(()=>e.getVisibleCells().some(e=>e.column.id===`select`),[e]),g=T(t=>{if(u){let t=a?e.original?.[a]:void 0;u(n,typeof t==`string`||typeof t==`number`?t:void 0)}else h&&e.toggleSelected();t.preventDefault(),t.stopPropagation()},[a,u,e,n,h]);return N(`tr`,{slot:`table-row`,"data-index":n,className:he(),onClick:g,...i,children:e.getVisibleCells().map((e,r)=>{let i=d.includes(e.column.id),a=f.includes(e.column.id),s=i?`left`:a?`right`:!1;return e.column.id===`actions`?N(Ee,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,column:e.column,getContext:e.getContext},`${e.id}-${r}`):e.column.id===`select`?N(De,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:s,isSelected:o||t,onToggleRowSelected:e.row.toggleSelected},`${e.id}-${r}`):N(Te,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:s,isFirstCell:e.column.id===p,isLastCell:e.column.id===m,colId:e.column.id,position:e.column.columnDef.meta?.position??`start`,column:e.column,getContext:e.getContext},`${e.id}-${r}`)})})});He.displayName=`UITableRow`;const Ue=C(({className:e,children:t,...n})=>N(`div`,{slot:`table-wrapper`,className:A(J(),e),...n,children:t}));Ue.displayName=`UITableWrapper`;const We=({children:e})=>{let{table:t,fetchMoreData:n}=W(),{rowSelectionState:r}=H(),{rows:i}=t.getRowModel();return P(d,{direction:`horizontal`,style:{direction:t.options.columnResizeDirection},className:`relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border border-r border-r-border p-0 text-sm`,children:[N(u,{"data-slot":`table-scroll-host`,className:`relative flex flex-col`,children:P(Be,{children:[P(ze,{children:[N(Pe,{children:t.getHeaderGroups().map(e=>N(Re,{headerGroup:e},e.id))}),P(we,{children:[i.map((e,t)=>N(He,{row:e,isSelected:r[e.id]===!0,rowIndex:t},e.id)),n&&N(Ve,{fetchMoreData:n})]}),N(Oe,{})]}),N(ke,{})]})}),e&&P(M,{children:[N(l,{}),e]})]})};function Ge(e){switch(e){case`tag`:return{type:`tag`,values:[]};case`single-tag`:return{type:`single-tag`,value:null};case`date-range`:return{type:`date-range`};case`number`:return{type:`number`,operator:`eq`};case`text`:return{type:`text`,operator:`contains`,value:``};case`boolean`:return{type:`boolean`,value:null}}}const Ke=C(({innerWrapperId:e,children:t})=>{let n=D(()=>({innerWrapperId:e}),[e]);return N(I.Provider,{value:n,children:t})});Ke.displayName=`UITableInnerWrapperProvider`;const qe=C(({table:e,innerTableId:t,totalSize:n,children:r})=>{let i=D(()=>({table:e,innerTableId:t,totalSize:n}),[e,t,n]);return N(R.Provider,{value:i,children:r})});qe.displayName=`UITableInnerTableProvider`;const Je=C(({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i,children:a})=>{let o=D(()=>({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i}),[e,t,n,r,i]);return N(B.Provider,{value:o,children:a})});Je.displayName=`UITableHeadRowProvider`;const Ye=C(({isFetching:e,isRefetching:t,isEmpty:n,rowSelectionState:r,children:i})=>{let a=D(()=>({isFetching:e,isRefetching:t,isEmpty:n,rowSelectionState:r}),[e,n,r]);return N(V.Provider,{value:a,children:i})});Ye.displayName=`UITableBodyProvider`;const Xe=C(({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a,children:o})=>{let s=D(()=>({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a}),[e,t,n,r,i,a]);return N(U.Provider,{value:s,children:o})});Xe.displayName=`UITableRowProvider`;const Ze=({title:e,isFetching:t=!1,isRefetching:n=!1,isLoading:r=!1,loadingDisplayRow:i=3,data:a,columns:o,totalRows:s,leftPinnedColumns:c=[],rightPinnedColumns:l=[],keyOfClickRow:u,onClickRow:d,onRowSelection:f,onColumnPinning:p,fetchMoreData:m,emptyDisplayHeight:h,csvData:g,csvFileName:_,filterDefinitions:v=[],onFilterChange:y,summary:b=[],onSummaryItemClick:ee,showAnalysisPanel:x=!1,description:S,headerActions:C,children:w})=>{let E=te(),O=te(),[A,j]=k(!1),[M,P]=k({}),[F,oe]=k({right:l,left:[`select`,...c]}),[I,L]=k({}),[R,z]=k([]),B=T(e=>(P(e),f?.(e instanceof Function?e(M):e),e),[M,f]),se=T(e=>{oe(e),p?.(e instanceof Function?e(F):e)},[F,p]),V=T(e=>{let t=v.find(t=>t.id===e);if(!t)return;let n={id:`${e}-${crypto.randomUUID()}`,definitionId:e,value:Ge(t.type)};z(e=>{let t=[...e,n];return y?.(t),t})},[v,y]),H=T(e=>{z(t=>{let n=t.filter(t=>t.id!==e);return y?.(n),n})},[y]),U=T((e,t)=>{z(n=>{let r=n.map(n=>n.id===e?{...n,value:t}:n);return y?.(r),r})},[y]),ce=D(()=>({filterDefinitions:v,activeFilters:R,addFilter:V,removeFilter:H,updateFilter:U}),[v,R,V,H,U]),W=ae({data:a,columns:o,state:{rowSelection:M,columnPinning:F,expanded:I},defaultColumn:{enableResizing:!1,size:void 0,minSize:void 0,maxSize:void 0},columnResizeMode:`onChange`,columnResizeDirection:`ltr`,enableColumnPinning:!0,enableRowSelection:!0,enableColumnResizing:!0,enableMultiRowSelection:!0,autoResetAll:!1,autoResetExpanded:!1,autoResetPageIndex:!1,getSubRows:e=>e.subRows,getCoreRowModel:ne(),getGroupedRowModel:ie(),getExpandedRowModel:re(),onRowSelectionChange:B,onColumnPinningChange:se,onExpandedChange:L}),G=D(()=>{let{rows:e}=W.getRowModel();return e},[W.getRowModel().rows,W.getState().columnPinning]),K=D(()=>!t&&!n&&G.length===0,[G,t,n]),fe=D(()=>({title:e,table:W,isEmpty:K,isFetching:t,isRefetching:n,isLoading:r,loadingDisplayRow:i,totalRows:s,fetchMoreData:m,emptyDisplayHeight:h,csvData:g,csvFileName:_,summary:b,onSummaryItemClick:ee,showAnalysisPanel:x,description:S,headerActions:C}),[e,W,K,n,t,r,i,s,m,h,W.getState().columnPinning,W.getState().expanded,g,_,b,ee,x,S,C]),q=D(()=>W.getState(),[W.getState()]),J=D(()=>W.getIsAllRowsSelected(),[W.getIsAllRowsSelected()]),pe=D(()=>q.rowSelection,[q.rowSelection]),Y=D(()=>q.columnPinning,[q.columnPinning]),X=D(()=>W.getLeftHeaderGroups()[0]?.headers||[],[W.getState().columnPinning]),Z=D(()=>W.getRightHeaderGroups()[0]?.headers||[],[W.getState().columnPinning]),me=D(()=>W.getTotalSize(),[W.getTotalSize()]),Q=T(()=>j(e=>!e),[]),he=D(()=>({isOpen:A,toggle:Q}),[A,Q]);return N(de.Provider,{value:he,children:N(ue.Provider,{value:ce,children:N(le.Provider,{value:fe,children:N(Ke,{innerWrapperId:E,children:N(qe,{table:W,innerTableId:O,totalSize:me,children:N(Je,{isAllRowsSelected:J,columnPinningState:Y,leftPinnedHeaders:X,rightPinnedHeaders:Z,onToggleAllRowsSelected:W.toggleAllRowsSelected,children:N(Ye,{isFetching:t,isRefetching:n,isEmpty:K,rowSelectionState:pe,children:N(Xe,{keyOfClickRow:u,isAllRowsSelected:J,columnPinningState:Y,leftPinnedHeaders:X,rightPinnedHeaders:Z,onClickRow:d,children:w})})})})})})})})};function $(e){let t=S(e);return e=>N(ee,{fallback:null,children:N(t,{...e})})}const Qe=$(()=>import(`./avatar-name-display-BrpnTqa_.mjs`).then(e=>({default:e.UITableAvatarNameDisplay}))),$e=$(()=>import(`./badge-display-Dx-dITLB.mjs`).then(e=>({default:e.UITableBadgeDisplay}))),et=$(()=>import(`./boolean-display-OVCtvzI1.mjs`).then(e=>({default:e.UITableBooleanDisplay}))),tt=$(()=>import(`./currency-display-BN1i8jnU.mjs`).then(e=>({default:e.UITableCurrencyDisplay}))),nt=$(()=>import(`./date-display-BWtvWDHK.mjs`).then(e=>({default:e.UITableDateDisplay}))),rt=$(()=>import(`./description-display-BubAcFan.mjs`).then(e=>({default:e.UITableDescriptionDisplay}))),it=$(()=>import(`./edit-button-DmMFMzG0.mjs`).then(e=>({default:e.UITableEditButton}))),at=$(()=>import(`./email-display-CMme47S9.mjs`).then(e=>({default:e.UITableEmailDisplay}))),ot=$(()=>import(`./list-display-BuRCso6J.mjs`).then(e=>({default:e.UITableListDisplay}))),st=$(()=>import(`./more-button-BKBcXz6E.mjs`).then(e=>({default:e.UITableMoreButton}))),ct=$(()=>import(`./name-display-DXMZ8Lug.mjs`).then(e=>({default:e.UITableNameDisplay}))),lt=$(()=>import(`./permalink-CZ3g9daG.mjs`).then(e=>({default:e.UITablePermalink}))),ut=$(()=>import(`./phone-number-C43z68gT.mjs`).then(e=>({default:e.UITablePhoneNumberDisplay}))),dt=$(()=>import(`./progress-display-DYj7vAe9.mjs`).then(e=>({default:e.UITableProgressDisplay}))),ft=$(()=>import(`./remove-button-Db5oSj4h.mjs`).then(e=>({default:e.UITableRemoveButton}))),pt=$(()=>import(`./statistic-Ug9Zgi3N.mjs`).then(e=>({default:e.UITableStatisticDisplay}))),mt=$(()=>import(`./status-display-B-6KKttX.mjs`).then(e=>({default:e.UITableStatusDisplay}))),ht=$(()=>import(`./toggle-button-DNLtfjJC.mjs`).then(e=>({default:e.UITableToggleButton}))),gt=$(()=>import(`./user-BymzvsYp.mjs`).then(e=>({default:e.UITableUserDataDisplay}))),_t=$(()=>import(`./filter-CMzD5h0M.mjs`).then(e=>({default:e.UITableFilter}))),vt=$(()=>import(`./analysis-panel-ikcRtzG9.mjs`).then(e=>({default:e.UITableAnalysisPanel}))),yt=$(()=>import(`./summary-bar-CZHeAORf.mjs`).then(e=>({default:e.UITableSummaryBar}))),bt=$(()=>import(`./tooltip-B-yLj6pe.mjs`).then(e=>({default:e.UITableTooltip}))),xt=$(()=>import(`./tooltip-B-yLj6pe.mjs`).then(e=>({default:e.UITableTooltipFilter}))),St=$(()=>import(`./tooltip-B-yLj6pe.mjs`).then(e=>({default:e.UITableTooltipActions})));export{Ve as A,ke as B,St as C,We as D,Ze as E,Ie as F,K as G,Ee as H,Fe as I,G as J,H as K,Pe as L,ze as M,Re as N,Ue as O,Le as P,Ne as R,bt as S,gt as T,Te as U,De as V,we as W,oe as Y,ft as _,tt as a,yt as b,it as c,ot as d,st as f,dt as g,ut as h,et as i,Be as j,He as k,at as l,lt as m,Qe as n,nt as o,ct as p,W as q,$e as r,rt as s,vt as t,_t as u,pt as v,xt as w,ht as x,mt as y,Ae as z};
|
|
2
|
+
//# sourceMappingURL=tables-UikqnT9q.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables-UikqnT9q.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/empty.tsx","../packages/components/features/tables/hooks/use-context.ts","../packages/components/features/tables/components/table.variants.ts","../packages/components/features/tables/components/commons/body.tsx","../packages/components/features/tables/components/commons/cell.tsx","../packages/components/features/tables/components/commons/cell-actions.tsx","../packages/components/features/tables/components/commons/cell-select.tsx","../packages/components/features/tables/components/commons/empty-display.tsx","../packages/components/features/tables/components/commons/footer.tsx","../packages/components/features/tables/components/commons/footer-row.tsx","../packages/components/features/tables/components/commons/head.tsx","../packages/components/features/tables/components/commons/head-cell-option.tsx","../packages/components/features/tables/components/commons/head-cell.tsx","../packages/components/features/tables/components/commons/head-cell-select.tsx","../packages/components/features/tables/components/commons/head-row.tsx","../packages/components/features/tables/components/commons/inner-table.tsx","../packages/components/features/tables/components/commons/inner-wrapper.tsx","../packages/components/features/tables/components/commons/load-more.tsx","../packages/components/features/tables/components/commons/row.tsx","../packages/components/features/tables/components/commons/wrapper.tsx","../packages/components/features/tables/components/table.tsx","../packages/components/features/tables/components/table/provider.tsx","../packages/components/features/tables/index.tsx"],"sourcesContent":["import { MinusIcon } from 'lucide-react';\n\n/**\n * Renders a double-dash placeholder used across table atom components to\n * indicate that a cell has no data to display.\n *\n * @example\n * import { UITableEmpty } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableEmpty />\n */\nexport const UITableEmpty: React.FC = () => {\n return (\n <div className=\"flex gap-0 text-text-positive-weak\">\n <MinusIcon size={16} />\n <MinusIcon size={16} />\n </div>\n );\n};\n","import { createContext, use } from 'react';\n\nimport type { AnyEntity } from '@/types';\nimport type {\n TTableAnalysisContext,\n TTableBodyContext,\n TTableContext,\n TTableFilterContext,\n TTableHeadRowContext,\n TTableInnerTableContext,\n TTableInnerWrapperContext,\n TTableRowContext,\n} from '../types';\n\nexport const TableInnerWrapperContext = createContext<TTableInnerWrapperContext | null>(null);\n\nexport const useUITableInnerWrapperContext = () => {\n const ctx = use(TableInnerWrapperContext);\n if (!ctx) {\n throw new Error('useTableInnerWrapperContext must be used within a TableInnerWrapperProvider');\n }\n return ctx;\n};\n\nexport const TableInnerTableContext = createContext<TTableInnerTableContext | null>(null);\n\nexport const useUITableInnerTableContext = () => {\n const ctx = use(TableInnerTableContext);\n if (!ctx) {\n throw new Error('useTableInnerTableContext must be used within a TableInnerTableProvider');\n }\n return ctx;\n};\n\nexport const TableHeadRowContext = createContext<TTableHeadRowContext | null>(null);\n\nexport const useUITableHeadRowContext = () => {\n const ctx = use(TableHeadRowContext);\n if (!ctx) {\n throw new Error('useTableHeaderRowContext must be used within a TableHeaderRowProvider');\n }\n return ctx;\n};\n\nexport const TableBodyContext = createContext<TTableBodyContext | null>(null);\n\nexport const useUITableBodyContext = () => {\n const ctx = use(TableBodyContext);\n if (!ctx) {\n throw new Error('useTableBodyContext must be used within a TableBodyProvider');\n }\n return ctx;\n};\n\nexport const TableRowContext = createContext<TTableRowContext<AnyEntity, AnyEntity> | null>(null);\n\nexport const useUITableRowContext = () => {\n const ctx = use(TableRowContext);\n if (!ctx) {\n throw new Error('useTableRowContext must be used within a TableRowProvider');\n }\n return ctx;\n};\n\nexport const TableContext = createContext<TTableContext<AnyEntity> | null>(null);\n\nexport const useUITableContext = () => {\n const context = use(TableContext);\n if (!context) {\n throw new Error('useTableContext must be used within a TableProvider');\n }\n return context;\n};\n\nexport const TableFilterContext = createContext<TTableFilterContext | null>(null);\n\nexport const useUITableFilterContext = () => {\n const ctx = use(TableFilterContext);\n if (!ctx) {\n throw new Error('useUITableFilterContext must be used within a UITableProvider');\n }\n return ctx;\n};\n\nexport const TableAnalysisContext = createContext<TTableAnalysisContext | null>(null);\n\nexport const useUITableAnalysisContext = () => {\n const ctx = use(TableAnalysisContext);\n if (!ctx) {\n throw new Error('useUITableAnalysisContext must be used within a UITableProvider');\n }\n return ctx;\n};\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const tableHeadCellOptionTriggerVariants = cva([\n 'absolute right-2 z-10 p-0.5 opacity-0 bg-card',\n 'cursor-pointer rounded-full transition-all',\n 'text-text-positive-weak',\n '[&>svg]:size-4',\n 'group-hover:opacity-100',\n 'hover:bg-muted-muted hover:text-text-positive',\n]);\n\nexport const tableEmptyDisplayVariants = cva(['sticky left-0 flex flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100']);\n\nexport const tableWrapperVariants = cva(['relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2']);\n\nexport const tableInnerWrapperVariants = cva(['relative w-full flex-1 min-h-0 overflow-auto border-b border-b-border border-l border-l-border']);\n\nexport const tableInnerTableVariants = cva(['grid w-full table-fixed caption-bottom border-collapse border-spacing-0 flex-col content-start']);\n\nexport const tableHeadVariants = cva([\n 'sticky top-0 z-40 h-9 w-full',\n 'grid select-none bg-white',\n 'border-b border-b-border shadow',\n 'font-medium text-[13px] text-text-positive-weak',\n '[&_tr:not(:last-child)_td]:border-b',\n '[&_th]:inline-flex',\n '[&_th]:bg-card',\n '[&_th]:items-center',\n '[&_th]:transition-all',\n '[&_th]:duration-300',\n '[&_th]:whitespace-nowrap',\n '[&_th]:border-border',\n '[&_th]:border-r',\n '[&_th]:first:border-l-0',\n '[&_tr_th:not([data-pinned=false])]:bg-card',\n]);\n\nexport const tableHeadRowVariants = cva(['flex']);\n\nexport const tableHeadCellVariants = cva(['group flex'], {\n variants: {\n isPinned: {\n left: 'sticky',\n right: 'sticky',\n false: 'relative',\n },\n isActions: {\n true: 'border-r-0!',\n false: '',\n },\n isLastCell: {\n true: '',\n false: '',\n },\n isFirstCell: {\n true: '',\n false: '',\n },\n position: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n },\n },\n compoundVariants: [\n { isPinned: 'left', isLastCell: true, className: 'border-r border-r-border' },\n { isPinned: 'right', isFirstCell: true, className: 'border-l border-l-border' },\n ],\n});\n\nexport const tableBodyVariants = cva([\n 'relative w-full',\n '[&_tr]:flex',\n '[&_tr]:flex-none',\n '[&_tr]:w-full',\n '[&_tr]:cursor-pointer [&_tr]:focus:outline-none',\n '[&_tr]:border-b [&_tr]:border-b-border',\n '[&_td]:z-10',\n '[&_td]:transition-all',\n '[&_td]:flex',\n '[&_td]:flex-none',\n '[&_td]:overflow-hidden',\n '[&_td]:whitespace-nowrap',\n '[&_td]:px-4',\n '[&_td]:py-2.5',\n '[&_td]:align-middle',\n '[&_td]:border-border',\n '[&_td]:data-[selected=true]:bg-muted-muted!',\n '[&_td]:data-[selected=true]:hover:bg-muted-muted!',\n '[&_td>div]:inline-flex',\n '[&_td>div]:items-center',\n '[&_td>div]:w-full',\n '[&_td:not([data-pinned=false])]:z-20',\n '[&_td:not([data-pinned=false])]:sticky',\n '[&_td:not([data-pinned=false])]:bg-muted-bg-subtle',\n]);\n\nexport const tableRowVariants = cva(['group transition-colors hover:bg-muted-muted hover:[&_td]:bg-muted-muted! [&_td]:border-r [&_td]:border-r-border']);\n\nexport const tableCellSelectVariants = cva(['group-hover:bg-muted-muted!'], {\n variants: {\n isPinned: {\n left: 'sticky',\n right: 'sticky',\n false: 'relative',\n },\n },\n defaultVariants: {\n isPinned: undefined,\n },\n});\n\nexport const tableCellActionsVariants = cva(['sticky border-r-0! inset-y-0 right-0 z-30 flex items-center pr-4 group-hover:bg-muted-muted!']);\n\nexport const tableCellVariants = cva(['group-hover:bg-muted-muted!'], {\n variants: {\n isPinned: {\n left: '',\n right: '',\n false: '',\n },\n isLastCell: {\n true: '',\n false: '',\n },\n isFirstCell: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n { isPinned: 'left', isLastCell: true, className: 'border-r border-r-border' },\n { isPinned: 'right', isFirstCell: true, className: 'border-l border-l-border' },\n ],\n});\n\nexport const tableCellInnerVariants = cva(['overflow-x-hidden'], {\n variants: {\n position: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n },\n },\n defaultVariants: {\n position: 'start',\n },\n});\n\nexport const tableFooterVariants = cva(['shrink-0 flex w-full justify-center border-t border-border-weak font-medium']);\n\nexport const tableFooterRowVariants = cva(['flex w-full', 'text-[13px] font-medium text-text-positive-weak']);\n\nexport const tableFooterCellVariants = cva(['flex flex-none items-center overflow-hidden whitespace-nowrap px-4 py-2', 'border-r border-r-border'], {\n variants: {\n isPinned: {\n left: 'sticky z-20 bg-white',\n right: 'sticky z-20 bg-white',\n false: 'relative',\n },\n isFirstCell: { true: 'border-l border-l-border', false: '' },\n isLastCell: { true: 'border-r border-r-border', false: '' },\n },\n});\n\nexport const tableLoadMoreButtonVariants = cva(['flex cursor-pointer gap-x-0.5'], {\n variants: {\n state: {\n idle: 'text-text-positive-weak hover:text-text-positive',\n fetching: 'cursor-not-allowed',\n error: 'text-danger hover:text-danger-strong',\n },\n },\n defaultVariants: {\n state: 'idle',\n },\n});\n\nexport type TableHeadCellVariantProps = VariantProps<typeof tableHeadCellVariants>;\nexport type TableCellSelectVariantProps = VariantProps<typeof tableCellSelectVariants>;\nexport type TableCellVariantProps = VariantProps<typeof tableCellVariants>;\nexport type TableCellInnerVariantProps = VariantProps<typeof tableCellInnerVariants>;\nexport type TableLoadMoreButtonVariantProps = VariantProps<typeof tableLoadMoreButtonVariants>;\n","'use client';\nimport { memo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { useUITableBodyContext } from '../../hooks/use-context';\nimport type { TUITableBody } from '../../types';\nimport { tableBodyVariants } from '../table.variants';\n\nexport const UITableBody = memo<TUITableBody>(({ className, children, ...props }) => {\n const { isFetching, isRefetching, isEmpty } = useUITableBodyContext();\n if (isEmpty || isFetching || isRefetching) return null;\n return (\n <tbody slot=\"table-body\" className={cn(tableBodyVariants(), className)} {...props}>\n {children}\n </tbody>\n );\n});\nUITableBody.displayName = 'UITableBody';\n","'use client';\nimport { memo, useEffect, useMemo, useRef } from 'react';\n\nimport { flexRender } from '@tanstack/react-table';\n\nimport type { AnyEntity } from '@/types';\n\nimport { useUITableInnerTableContext } from '../../hooks/use-context';\nimport type { TUITableCell } from '../../types';\nimport { tableCellInnerVariants, tableCellVariants } from '../table.variants';\n\nexport const UITableCell = memo<TUITableCell>(\n ({ isPinned = false, isFirstCell = false, isLastCell = false, colId, position = 'start', column, getContext, ...props }) => {\n const { innerTableId, table } = useUITableInnerTableContext();\n const tableRef = useRef<HTMLTableElement | null>(null);\n const cellRef = useRef<HTMLDivElement>(null);\n\n const left = useMemo(() => {\n const axis = column?.getStart('left');\n return isPinned === 'left' && typeof axis === 'number' ? `${axis}px` : undefined;\n }, [isPinned, column]);\n\n const right = useMemo(() => {\n const axis = column?.getAfter('right');\n return isPinned === 'right' && typeof axis === 'number' ? `${axis}px` : undefined;\n }, [isPinned, column]);\n\n const width = useMemo(() => {\n return `calc(var(--col-${colId}-size) * 1px)`;\n }, [colId]);\n\n const minSize = useMemo(() => {\n return column?.columnDef.minSize ? `calc(var(--col-${colId}-minSize) * 1px)` : undefined;\n }, [colId, column]);\n\n const maxSize = useMemo(() => {\n return column?.columnDef.maxSize ? `calc(var(--col-${colId}-maxSize) * 1px)` : undefined;\n }, [colId, column]);\n\n const render = useMemo(() => {\n return flexRender(column?.columnDef.cell, getContext());\n }, [column, getContext]);\n\n useEffect(() => {\n tableRef.current = document.querySelector(`table[id=\"${innerTableId}\"]`);\n }, [innerTableId]);\n\n useEffect(() => {\n if (!cellRef.current) return;\n\n const width = cellRef.current.scrollWidth;\n const currentSize = column?.getSize();\n\n if (currentSize != null && width > currentSize) {\n if (tableRef.current instanceof HTMLTableElement && typeof colId === 'string' && (column?.columnDef.meta as AnyEntity)?.['fitContent']) {\n table.setColumnSizing(old => ({\n ...old,\n [colId]: width + 32,\n }));\n }\n }\n }, [colId, column, table]);\n\n return (\n <td\n slot=\"table-body-cell\"\n data-pinned={isPinned}\n data-lastcell={isLastCell || undefined}\n data-firstcell={isFirstCell || undefined}\n style={{ left, right, width, minWidth: minSize, maxWidth: maxSize }}\n className={tableCellVariants({ isPinned: isPinned || undefined, isLastCell, isFirstCell })}\n {...props}\n >\n <div ref={cellRef} slot=\"table-body-cell-inner\" className={tableCellInnerVariants({ position })}>\n {render}\n </div>\n </td>\n );\n }\n);\nUITableCell.displayName = 'UITableCell';\n","'use client';\nimport { memo, useMemo } from 'react';\n\nimport { flexRender } from '@tanstack/react-table';\n\nimport type { TUITableCellActions } from '../../types';\nimport { tableCellActionsVariants } from '../table.variants';\n\nexport const UITableCellActions = memo<TUITableCellActions>(({ column, getContext, className, ...props }) => {\n const render = useMemo(() => {\n return flexRender(column?.columnDef.cell, getContext());\n }, [column, getContext]);\n return (\n <td data-col=\"actions\" className={tableCellActionsVariants()} {...props}>\n {render}\n </td>\n );\n});\nUITableCellActions.displayName = 'UITableCellActions';\n","'use client';\nimport { memo, useCallback } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox } from '@/components/ui/checkbox';\n\nimport { PINNED_COLUMN_Z_INDEX, SELECT_WIDTH } from '../../constants';\nimport type { TUITableCellSelect } from '../../types';\nimport { tableCellSelectVariants } from '../table.variants';\n\nexport const UITableCellSelect = memo<TUITableCellSelect>(({ isPinned, isSelected = false, className, onToggleRowSelected, ...props }) => {\n const handleToggleRowSelected = useCallback(\n (value: boolean | 'indeterminate') => {\n onToggleRowSelected?.(!!value);\n },\n [onToggleRowSelected]\n );\n return (\n <td\n slot=\"table-body-cell\"\n data-pinned={true}\n style={{ left: 0, zIndex: PINNED_COLUMN_Z_INDEX, width: SELECT_WIDTH, maxWidth: SELECT_WIDTH }}\n className={cn(tableCellSelectVariants({ isPinned }), className)}\n {...props}\n >\n <div\n data-slot=\"table-cell-inner\"\n className=\"flex! w-full! items-center justify-center bg-transparent text-center align-middle\"\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Checkbox aria-label=\"Select Row\" checked={isSelected} onCheckedChange={handleToggleRowSelected} />\n </div>\n </td>\n );\n});\nUITableCellSelect.displayName = 'UITableCellSelect';\n","'use client';\nimport { memo } from 'react';\n\nimport { BoxIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { useUITableContext } from '../../hooks/use-context';\nimport type { TUITableEmptyDisplay } from '../../types';\nimport {\n tableBodyVariants,\n tableCellActionsVariants,\n tableCellInnerVariants,\n tableCellSelectVariants,\n tableCellVariants,\n tableEmptyDisplayVariants,\n tableRowVariants,\n} from '../table.variants';\nimport { PINNED_COLUMN_Z_INDEX, SELECT_WIDTH } from '../../constants';\nimport type { AnyEntity } from '@/types';\n\nexport const UITableLoadingDisplay = memo<TUITableEmptyDisplay>(() => {\n const { table, isFetching, isRefetching, loadingDisplayRow = 3 } = useUITableContext();\n if (!isFetching && !isRefetching) return null;\n return (\n <tbody className={cn(tableBodyVariants(), 'pointer-events-none')}>\n {Array.from({ length: loadingDisplayRow }).map((_, index) => (\n <tr key={index} data-slot=\"table-row\" data-index={index} className={cn(tableRowVariants(), 'animate-pulse relative!')}>\n {table.getAllColumns().map((column, _index) => {\n const isPinned = column.getIsPinned();\n const leftAxis = column.getStart('left');\n const rightAxis = column.getAfter('right');\n if (column.id === 'actions') {\n return (\n <td\n key={`${column.id}-${_index}`}\n data-slot=\"table-body-cell\"\n data-col={column.id}\n data-cell={_index}\n style={{\n width: 60,\n }}\n className={tableCellActionsVariants()}\n >\n <div className=\"w-full h-4 bg-muted-muted rounded-full\" />\n </td>\n );\n }\n if (column.id === 'select') {\n return (\n <td\n key={`${column.id}-${index}`}\n data-slot=\"table-body-cell\"\n data-col={column.id}\n data-cell={_index}\n data-pinned={true}\n style={{\n left: 0,\n zIndex: 20,\n width: SELECT_WIDTH,\n maxWidth: SELECT_WIDTH,\n }}\n className={tableCellSelectVariants({ isPinned: 'left' })}\n >\n <div className=\"w-full flex justify-center\">\n <div className=\"size-4 bg-muted-muted rounded-full\" />\n </div>\n </td>\n );\n }\n return (\n <td\n key={`${column.id}-${_index}`}\n data-col={column.id}\n data-cell={_index}\n data-selected={undefined}\n data-lastcell={column.id === table.getAllColumns()[table.getAllColumns().length - 1].id || undefined}\n data-firstcell={column.id === table.getAllColumns()[0].id || undefined}\n style={{\n zIndex: isPinned ? PINNED_COLUMN_Z_INDEX : 0,\n left: isPinned === 'left' && typeof leftAxis === 'number' ? `${leftAxis}px` : undefined,\n right: isPinned === 'right' && typeof rightAxis === 'number' ? `${rightAxis}px` : undefined,\n width: `calc(var(--col-${column.id}-size) * 1px)`,\n minWidth: column.columnDef.minSize ? `calc(var(--col-${column.id}-minSize) * 1px)` : undefined,\n maxWidth: column.columnDef.maxSize ? `calc(var(--col-${column.id}-maxSize) * 1px)` : undefined,\n }}\n className={tableCellVariants({\n isPinned: column.getIsPinned(),\n isFirstCell: column.id === table.getRightHeaderGroups()[0]?.headers[0]?.id,\n isLastCell: column.id === table.getLeftHeaderGroups()[0]?.headers[table.getLeftHeaderGroups()[0].headers.length - 1]?.id,\n })}\n >\n <div\n className={tableCellInnerVariants({\n position: (column.columnDef.meta as AnyEntity)?.position ?? 'start',\n })}\n >\n <div className=\"w-full h-4 bg-muted-muted rounded-full\" />\n </div>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n );\n});\n\nexport const UITableEmptyDisplay = memo<TUITableEmptyDisplay>(() => {\n const { isEmpty, emptyDisplayHeight } = useUITableContext();\n if (!isEmpty) return null;\n return (\n <>\n {isEmpty && (\n <div className={tableEmptyDisplayVariants()} style={{ minHeight: emptyDisplayHeight ?? '24rem' }}>\n <div className=\"flex flex-col items-center gap-1\">\n <BoxIcon strokeWidth={1} size={48} />\n <p>Không có dữ liệu</p>\n </div>\n </div>\n )}\n </>\n );\n});\nUITableEmptyDisplay.displayName = 'UITableEmptyDisplay';\n","'use client';\nimport { memo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { TUITableFooter } from '../../types';\nimport { tableFooterVariants } from '../table.variants';\n\nexport const UITableFooter = memo<TUITableFooter>(({ className, children, ...props }) => {\n return (\n <div slot=\"table-footer\" className={cn(tableFooterVariants(), className)} {...props}>\n {children}\n </div>\n );\n});\nUITableFooter.displayName = 'UITableFooter';\n","'use client';\nimport { memo, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Statistic } from '@/components/data-display/statistic';\nimport type { AnyEntity } from '@/types';\nimport { SELECT_WIDTH } from '../../constants';\nimport { useUITableBodyContext, useUITableContext } from '../../hooks/use-context';\nimport type { ColumnAggregation, ColumnAggregationType } from '../../types';\nimport { tableFooterCellVariants, tableFooterRowVariants } from '../table.variants';\n\nfunction computeAggregation(rowCount: number, values: number[], type: ColumnAggregationType): number {\n switch (type) {\n case 'count':\n return rowCount;\n case 'sum':\n return values.reduce((a, b) => a + b, 0);\n case 'avg':\n return values.length === 0 ? 0 : values.reduce((a, b) => a + b, 0) / values.length;\n case 'min':\n return values.length === 0 ? 0 : Math.min(...values);\n case 'max':\n return values.length === 0 ? 0 : Math.max(...values);\n }\n}\n\nfunction extractNumericValues(rows: { getValue: (id: string) => unknown }[], colId: string): number[] {\n return rows\n .map(r => {\n const v = r.getValue(colId);\n const n = typeof v === 'string' ? Number(v) : typeof v === 'number' ? v : NaN;\n return n;\n })\n .filter(n => !Number.isNaN(n));\n}\n\nexport const UITableFooterRow = memo(() => {\n const { table } = useUITableContext();\n const { rowSelectionState } = useUITableBodyContext();\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table header groups\n const headers = useMemo(() => table.getHeaderGroups()[0]?.headers ?? [], [table.getHeaderGroups()]);\n\n const hasAggregation = useMemo(() => headers.some(h => (h.column.columnDef.meta as AnyEntity)?.aggregation), [headers]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: selected rows\n const selectedRows = useMemo(() => table.getSelectedRowModel().flatRows, [table, rowSelectionState]);\n\n const allRows = useMemo(() => table.getRowModel().rows, [table]);\n\n const activeRows = selectedRows.length > 0 ? selectedRows : allRows;\n\n const aggregatedValues = useMemo(() => {\n const result: Record<string, number | null> = {};\n for (const header of headers) {\n const agg = (header.column.columnDef.meta as AnyEntity)?.aggregation as ColumnAggregation | undefined;\n if (!agg) continue;\n const values = extractNumericValues(activeRows, header.id);\n result[header.id] = computeAggregation(activeRows.length, values, agg.type);\n }\n return result;\n }, [headers, activeRows]);\n\n const columnPinningState = table.getState().columnPinning;\n const leftPinnedIds = columnPinningState.left ?? [];\n const rightPinnedIds = columnPinningState.right ?? [];\n const firstRightPinnedId = headers.find(h => rightPinnedIds.includes(h.id))?.id;\n const lastLeftPinnedId = [...headers].reverse().find(h => leftPinnedIds.includes(h.id))?.id;\n\n if (!hasAggregation) return null;\n\n const rowCountLabel = selectedRows.length > 0 ? `${selectedRows.length}` : `${allRows.length}`;\n\n return (\n <div slot=\"table-footer-row\" className={tableFooterRowVariants()}>\n {headers.map(header => {\n const colId = header.id;\n const isPinned = leftPinnedIds.includes(colId) ? ('left' as const) : rightPinnedIds.includes(colId) ? ('right' as const) : (false as const);\n const isFirstCell = colId === firstRightPinnedId;\n const isLastCell = colId === lastLeftPinnedId;\n\n const left = isPinned === 'left' ? `${header.column.getStart('left')}px` : undefined;\n const right = isPinned === 'right' ? `${header.column.getAfter('right')}px` : undefined;\n\n if (colId === 'select') {\n return (\n <div\n key={colId}\n slot=\"table-footer-select\"\n data-pinned=\"left\"\n style={{ left: '0px', width: `${SELECT_WIDTH}px` }}\n className={cn(tableFooterCellVariants({ isPinned: 'left', isFirstCell: false, isLastCell: false }), 'justify-center')}\n >\n <span className=\"truncate text-[11px] items-center text-text-positive-weak\">{rowCountLabel}</span>\n </div>\n );\n }\n\n if (colId === 'actions') {\n return (\n <div\n key={colId}\n slot=\"table-footer-actions\"\n style={{ width: `calc(var(--col-${colId}-size) * 1px)`, right: '0px' }}\n className={tableFooterCellVariants({ isPinned: false, isFirstCell: false, isLastCell: false })}\n />\n );\n }\n\n const aggregation = (header.column.columnDef.meta as AnyEntity)?.aggregation as ColumnAggregation | undefined;\n const aggregatedValue = aggregatedValues[colId] ?? null;\n\n return (\n <div\n key={colId}\n slot=\"table-footer-cell\"\n data-pinned={isPinned}\n style={{\n left,\n right,\n width: `calc(var(--col-${colId}-size) * 1px)`,\n }}\n className={tableFooterCellVariants({ isPinned: isPinned || 'left', isFirstCell, isLastCell })}\n >\n {aggregation && aggregatedValue !== null ? (\n <Statistic value={aggregatedValue} prefix={aggregation.prefix} suffix={aggregation.suffix} precision={aggregation.precision} size=\"sm\" />\n ) : (\n <span className=\"text-text-positive-weak\">—</span>\n )}\n </div>\n );\n })}\n </div>\n );\n});\nUITableFooterRow.displayName = 'UITableFooterRow';\n","'use client';\nimport { memo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { TUITableHead } from '../../types';\nimport { tableHeadVariants } from '../table.variants';\n\nexport const UITableHead = memo<TUITableHead>(({ className, children, ...props }) => {\n return (\n <thead slot=\"table-head\" className={cn(tableHeadVariants(), className)} {...props}>\n {children}\n </thead>\n );\n});\nUITableHead.displayName = 'UITableHead';\n","'use client';\nimport { Activity, memo, useCallback } from 'react';\n\nimport { EllipsisVerticalIcon, MoveLeftIcon, MoveRightIcon, PinOffIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\n\nimport type { TUITableHeadCellOption } from '../../types';\nimport { tableHeadCellOptionTriggerVariants } from '../table.variants';\n\nexport const UITableHeadCellOption = memo<TUITableHeadCellOption>(({ isPinned, onLeftPin, onRightPin, onUnpin, className }) => {\n const handleLeftPin = useCallback(() => {\n onLeftPin?.('left');\n }, [onLeftPin]);\n\n const handleRightPin = useCallback(() => {\n onRightPin?.('right');\n }, [onRightPin]);\n\n const handleUnpin = useCallback(() => {\n onUnpin?.(false);\n }, [onUnpin]);\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button type=\"button\" className={cn(tableHeadCellOptionTriggerVariants(), className)}>\n <EllipsisVerticalIcon />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-64 p-4\">\n <DropdownMenuGroup className=\"*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2\">\n <Activity mode={isPinned ? 'visible' : 'hidden'}>\n <DropdownMenuItem onClick={handleUnpin}>\n {!!isPinned && 'Bỏ ghim'}\n <DropdownMenuShortcut>\n <PinOffIcon className=\"size-4\" />\n </DropdownMenuShortcut>\n </DropdownMenuItem>\n </Activity>\n <Activity mode={!isPinned ? 'visible' : 'hidden'}>\n <DropdownMenuItem onClick={handleLeftPin}>\n {isPinned ? 'Bỏ ghim' : 'Ghim trái'}\n <DropdownMenuShortcut>\n <MoveLeftIcon className=\"size-4\" />\n </DropdownMenuShortcut>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={handleRightPin}>\n {isPinned ? 'Bỏ ghim' : 'Ghim phải'}\n <DropdownMenuShortcut>\n <MoveRightIcon className=\"size-4\" />\n </DropdownMenuShortcut>\n </DropdownMenuItem>\n </Activity>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n});\nUITableHeadCellOption.displayName = 'UITableHeadCellOption';\n","'use client';\nimport { memo, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { AnyEntity } from '@/types';\n\nimport { PINNED_COLUMN_Z_INDEX } from '../../constants';\nimport type { TUITableHeadCell } from '../../types';\nimport { tableHeadCellVariants } from '../table.variants';\nimport { UITableHeadCellOption } from './head-cell-option';\n\nexport const UITableHeadCell = memo<TUITableHeadCell>(\n ({\n isVisible = true,\n isPinned = false,\n isFirstCell = false,\n isLastCell = false,\n isOptionsVisible = true,\n headerId,\n headerColumn,\n className,\n children,\n onColumnPin,\n onToggleVisibility,\n ...props\n }) => {\n const position = (headerColumn?.columnDef.meta as AnyEntity)?.position as 'start' | 'center' | 'end' | undefined;\n\n const zIndex = useMemo(() => {\n return isPinned ? PINNED_COLUMN_Z_INDEX : undefined;\n }, [isPinned]);\n\n const left = useMemo(() => {\n const axis = headerColumn?.getStart?.('left');\n return isPinned === 'left' && typeof axis === 'number' ? `${axis}px` : undefined;\n }, [isPinned, headerColumn]);\n\n const right = useMemo(() => {\n const axis = headerColumn?.getAfter?.('right');\n return isPinned === 'right' && typeof axis === 'number' ? `${axis}px` : undefined;\n }, [isPinned, headerColumn]);\n\n const width = useMemo(() => {\n return `calc(var(--header-${headerId}-size) * 1px)`;\n }, [headerId]);\n\n const minSize = useMemo(() => {\n return headerColumn?.columnDef.minSize ? `calc(var(--col-${headerId}-minSize) * 1px)` : undefined;\n }, [headerId, headerColumn]);\n\n const maxSize = useMemo(() => {\n return headerColumn?.columnDef.maxSize ? `calc(var(--col-${headerId}-maxSize) * 1px)` : undefined;\n }, [headerId, headerColumn]);\n\n return (\n <th\n slot=\"table-head-cell\"\n data-pinned={isPinned}\n data-header={headerId}\n style={{ zIndex, left, right, width, minWidth: minSize, maxWidth: maxSize }}\n className={cn(\n tableHeadCellVariants({\n isPinned: isPinned || 'false',\n isActions: headerId === 'actions',\n isLastCell,\n isFirstCell,\n position,\n }),\n className\n )}\n {...props}\n >\n <div className=\"truncate px-4\">{children}</div>\n {isOptionsVisible && (\n <UITableHeadCellOption isPinned={isPinned} isVisible={isVisible} onLeftPin={onColumnPin} onRightPin={onColumnPin} onUnpin={onColumnPin} />\n )}\n </th>\n );\n }\n);\nUITableHeadCell.displayName = 'UITableHeadCell';\n","'use client';\nimport { memo, useCallback } from 'react';\n\nimport { Checkbox } from '@/components/ui/checkbox';\n\nimport { SELECT_WIDTH, TABLE_HEADER_Z_INDEX } from '../../constants';\nimport type { TUITableHeadCellSelect } from '../../types';\nimport { tableCellSelectVariants } from '../table.variants';\n\nexport const UITableHeadCellSelect = memo<TUITableHeadCellSelect>(({ isPinned, isAllRowsSelected, style, onToggleAllRowsSelected, ...props }) => {\n const handleToggleAllRowsSelected = useCallback(\n (value: boolean | 'indeterminate') => {\n onToggleAllRowsSelected?.(!!value);\n },\n [onToggleAllRowsSelected]\n );\n return (\n <th\n slot=\"table-header-cell\"\n data-pinned={true}\n style={{ left: 0, zIndex: TABLE_HEADER_Z_INDEX, width: SELECT_WIDTH, maxWidth: SELECT_WIDTH }}\n className={tableCellSelectVariants({ isPinned })}\n {...props}\n >\n <div\n className=\"absolute inset-0 flex items-center justify-center\"\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Checkbox aria-label=\"Select All Rows\" checked={isAllRowsSelected} onCheckedChange={handleToggleAllRowsSelected} />\n </div>\n </th>\n );\n});\nUITableHeadCellSelect.displayName = 'UITableHeadCellSelect';\n","'use client';\nimport { memo } from 'react';\n\nimport { flexRender } from '@tanstack/react-table';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { useUITableHeadRowContext } from '../../hooks/use-context';\nimport type { TUITableHeadRow } from '../../types';\nimport { tableHeadRowVariants } from '../table.variants';\nimport { UITableHeadCell } from './head-cell';\nimport { UITableHeadCellSelect } from './head-cell-select';\n\nexport const UITableHeadRow = memo<TUITableHeadRow>(({ headerGroup, className, ...props }) => {\n const { isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onToggleAllRowsSelected } = useUITableHeadRowContext();\n const firstRightPinnedHeaderId = rightPinnedHeaders[0]?.id;\n const lastLeftPinnedHeaderId = leftPinnedHeaders[leftPinnedHeaders.length - 1]?.id;\n return (\n <tr slot=\"table-head-row\" className={cn(tableHeadRowVariants(), className)} {...props}>\n {headerGroup.headers.map((header, index) => {\n const isVisible = header.column.getIsVisible();\n const isPinned = columnPinningState.left?.includes(header.id) ? 'left' : columnPinningState.right?.includes(header.id) ? 'right' : false;\n if (header.id === 'select') {\n return (\n <UITableHeadCellSelect\n key={header.id}\n isPinned={isPinned}\n isAllRowsSelected={isAllRowsSelected}\n onToggleAllRowsSelected={onToggleAllRowsSelected}\n />\n );\n }\n return (\n <UITableHeadCell\n key={`${header.id}-${index}`}\n isVisible={isVisible}\n isPinned={isPinned}\n isFirstCell={header.id === firstRightPinnedHeaderId}\n isLastCell={header.id === lastLeftPinnedHeaderId}\n isOptionsVisible={!['select', 'actions'].includes(header.id)}\n headerId={header.id}\n headerColumn={header.column}\n colSpan={header.colSpan}\n onColumnPin={header.column.pin}\n onToggleVisibility={header.column.toggleVisibility}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n </UITableHeadCell>\n );\n })}\n </tr>\n );\n});\nUITableHeadRow.displayName = 'UITableHeadRow';\n","'use client';\nimport { memo, useEffect, useRef } from 'react';\n\nimport { ACTION_WIDTH, SELECT_WIDTH } from '../../constants';\nimport { useUITableInnerTableContext } from '../../hooks/use-context';\nimport type { TUITableInnerTable } from '../../types';\nimport { tableInnerTableVariants } from '../table.variants';\n\nexport const UITableInnerTable = memo<TUITableInnerTable>(({ children, ...props }) => {\n const { table, innerTableId, totalSize } = useUITableInnerTableContext();\n const tableRef = useRef<HTMLTableElement>(null);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table element.\n useEffect(() => {\n if (!tableRef.current) return;\n\n const headers = table.getFlatHeaders();\n\n let rafId: number | undefined;\n const observer = new ResizeObserver(entries => {\n if (rafId !== undefined) cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(() => {\n const entry = entries[0];\n if (!entry) return;\n const tableElement = entry.target;\n if (!(tableElement instanceof HTMLTableElement)) return;\n const tableContentRectWidth = entry.contentRect.width;\n\n const { left: leftColumnPinning = [], right: rightColumnPinning = [] } = table.getState().columnPinning;\n\n let pinnedWidth: number = 0;\n let flexibleColumnsCount: number = 0;\n let fixedSizeTotal: number = 0;\n const columnSpecs = headers.map(header => {\n const { id } = header;\n const isSpecial = id === 'select' || id === 'actions';\n const isPinned = leftColumnPinning.includes(id) || rightColumnPinning.includes(id);\n const size = header.getSize();\n const maxSize = header.column.columnDef.maxSize;\n\n if (isSpecial) {\n const width = id === 'select' ? SELECT_WIDTH : ACTION_WIDTH;\n pinnedWidth += width;\n return { id, isFlex: false, width };\n }\n\n if (isPinned) {\n pinnedWidth += size;\n return { id, isFlex: false, width: size };\n }\n\n if (header.column.columnDef.size || size !== 150) {\n fixedSizeTotal += size;\n return { id, isFlex: false, width: size };\n }\n\n flexibleColumnsCount++;\n return { id, isFlex: true, maxSize };\n });\n\n const remainingWidth = tableContentRectWidth - pinnedWidth - fixedSizeTotal;\n const rawFlexWidth = flexibleColumnsCount > 0 ? Math.max(0, Math.floor(remainingWidth / flexibleColumnsCount)) : 0;\n\n const scrollHost = tableElement.closest<HTMLElement>('[data-slot=\"table-scroll-host\"]');\n\n columnSpecs.forEach(col => {\n if (col.isFlex) {\n const finalWidth = col.maxSize ? Math.min(rawFlexWidth, col.maxSize) : rawFlexWidth;\n tableElement.style.setProperty(`--header-${col.id}-size`, `${finalWidth}`);\n tableElement.style.setProperty(`--col-${col.id}-size`, `${finalWidth}`);\n scrollHost?.style.setProperty(`--col-${col.id}-size`, `${finalWidth}`);\n if (col.maxSize) {\n tableElement.style.setProperty(`--col-${col.id}-maxSize`, `${col.maxSize}`);\n }\n } else {\n tableElement.style.setProperty(`--header-${col.id}-size`, `${col.width}`);\n tableElement.style.setProperty(`--col-${col.id}-size`, `${col.width}`);\n scrollHost?.style.setProperty(`--col-${col.id}-size`, `${col.width}`);\n }\n });\n });\n });\n observer.observe(tableRef.current);\n return () => {\n if (rafId !== undefined) cancelAnimationFrame(rafId);\n observer.disconnect();\n };\n }, [table.getState().columnSizingInfo, table.getState().columnSizing, table.getState().columnPinning]);\n\n return (\n <table id={innerTableId} ref={tableRef} slot=\"table-inner-table\" className={tableInnerTableVariants()} style={{ minWidth: totalSize }} {...props}>\n {children}\n </table>\n );\n});\nUITableInnerTable.displayName = 'UITableInnerTable';\n","'use client';\nimport { memo } from 'react';\n\nimport { useUITableInnerWrapperContext } from '../../hooks/use-context';\nimport type { TUITableInnerWrapper } from '../../types';\nimport { tableInnerWrapperVariants } from '../table.variants';\n\nexport const UITableInnerWrapper = memo<TUITableInnerWrapper>(({ children, ...props }) => {\n const { innerWrapperId } = useUITableInnerWrapperContext();\n return (\n <div id={innerWrapperId} slot=\"table-inner-wrapper\" className={tableInnerWrapperVariants()} {...props}>\n {children}\n </div>\n );\n});\nUITableInnerWrapper.displayName = 'UITableInnerWrapper';\n","'use client';\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport { AlertTriangle, ChevronDown } from 'lucide-react';\n\nimport { Spinner } from '@/components/ui/spinner';\n\nimport { useUITableInnerWrapperContext } from '../../hooks/use-context';\nimport type { TUITableLoadMore } from '../../types';\nimport { tableLoadMoreButtonVariants } from '../table.variants';\n\nexport const UITableLoadMore = memo<TUITableLoadMore>(({ fetchMoreData }) => {\n const { innerWrapperId } = useUITableInnerWrapperContext();\n\n const [fetchingState, setFetchingState] = useState<'idle' | 'fetching' | 'error'>('idle');\n const [width, setWidth] = useState<number>(0);\n\n const handleFetchMoreData = useCallback(async () => {\n try {\n setFetchingState('fetching');\n await fetchMoreData?.();\n setFetchingState('idle');\n } catch (error) {\n console.error('Error fetching more data:', error);\n setFetchingState('error');\n }\n }, [fetchMoreData]);\n\n useEffect(() => {\n const el = document.querySelector(`div[id=\"${innerWrapperId}\"]`);\n if (!el) return;\n const observer = new ResizeObserver(entries => {\n setWidth(entries[0].contentRect.width);\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, [innerWrapperId]);\n\n if (!fetchMoreData) return null;\n\n return (\n <tr className=\"sticky! left-0 h-10\" style={{ width }}>\n <td className=\"absolute left-0 flex w-full items-center justify-center text-xs\">\n <button\n type=\"button\"\n disabled={fetchingState === 'fetching'}\n className={tableLoadMoreButtonVariants({ state: fetchingState })}\n onClick={handleFetchMoreData}\n >\n {fetchingState === 'idle' && <ChevronDown className=\"size-4\" />}\n {fetchingState === 'fetching' && <Spinner className=\"size-4 animate-spin\" />}\n {fetchingState === 'error' && <AlertTriangle className=\"size-4 text-danger\" />}\n {fetchingState === 'idle' && 'Tải thêm'}\n {fetchingState === 'fetching' && 'Đang tải...'}\n {fetchingState === 'error' && 'Lỗi! Thử lại?'}\n </button>\n </td>\n </tr>\n );\n});\nUITableLoadMore.displayName = 'UITableLoadMore';\n","'use client';\nimport { memo, useCallback, useMemo } from 'react';\n\nimport type { AnyEntity } from '@/types';\n\nimport { useUITableRowContext } from '../../hooks/use-context';\nimport type { TUITableRow } from '../../types';\nimport { tableRowVariants } from '../table.variants';\nimport { UITableCell } from './cell';\nimport { UITableCellActions } from './cell-actions';\nimport { UITableCellSelect } from './cell-select';\n\nexport const UITableRow = memo<TUITableRow>(({ row, isSelected, rowIndex, children, ...props }) => {\n const { keyOfClickRow, isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onClickRow } = useUITableRowContext();\n\n const pinnedLeftColumns = useMemo(() => columnPinningState.left ?? [], [columnPinningState]);\n const pinnedRightColumns = useMemo(() => columnPinningState.right ?? [], [columnPinningState]);\n const firstRightPinnedHeaderId = useMemo(() => rightPinnedHeaders?.[0]?.id, [rightPinnedHeaders]);\n const lastLeftPinnedHeaderId = useMemo(() => leftPinnedHeaders?.[leftPinnedHeaders.length - 1]?.id, [leftPinnedHeaders]);\n\n const hasSelectColumn = useMemo(() => row.getVisibleCells().some(c => c.column.id === 'select'), [row]);\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLTableRowElement>>(\n e => {\n if (onClickRow) {\n const value = keyOfClickRow ? row.original?.[keyOfClickRow] : undefined;\n onClickRow(rowIndex, typeof value === 'string' || typeof value === 'number' ? value : undefined);\n } else if (hasSelectColumn) {\n row.toggleSelected();\n }\n e.preventDefault();\n e.stopPropagation();\n },\n [keyOfClickRow, onClickRow, row, rowIndex, hasSelectColumn]\n );\n\n return (\n <tr slot=\"table-row\" data-index={rowIndex} className={tableRowVariants()} onClick={handleClick} {...props}>\n {row.getVisibleCells().map((cell, index) => {\n const isPinnedLeft = pinnedLeftColumns.includes(cell.column.id);\n const isPinnedRight = pinnedRightColumns.includes(cell.column.id);\n const isPinned = isPinnedLeft ? 'left' : isPinnedRight ? 'right' : false;\n if (cell.column.id === 'actions') {\n return (\n <UITableCellActions\n key={`${cell.id}-${index}`}\n data-col={cell.column.id}\n data-cell={rowIndex}\n data-selected={isSelected || undefined}\n column={cell.column}\n getContext={cell.getContext}\n />\n );\n }\n if (cell.column.id === 'select') {\n return (\n <UITableCellSelect\n key={`${cell.id}-${index}`}\n data-col={cell.column.id}\n data-cell={rowIndex}\n data-selected={isSelected || undefined}\n isPinned={isPinned}\n isSelected={isAllRowsSelected || isSelected}\n onToggleRowSelected={cell.row.toggleSelected}\n />\n );\n }\n return (\n <UITableCell\n key={`${cell.id}-${index}`}\n data-col={cell.column.id}\n data-cell={rowIndex}\n data-selected={isSelected || undefined}\n isPinned={isPinned}\n isFirstCell={cell.column.id === firstRightPinnedHeaderId}\n isLastCell={cell.column.id === lastLeftPinnedHeaderId}\n colId={cell.column.id}\n position={(cell.column.columnDef.meta as AnyEntity)?.position ?? 'start'}\n column={cell.column}\n getContext={cell.getContext}\n />\n );\n })}\n </tr>\n );\n});\nUITableRow.displayName = 'UITableRow';\n","'use client';\nimport { memo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { TUITableWrapper } from '../../types';\nimport { tableWrapperVariants } from '../table.variants';\n\nexport const UITableWrapper = memo<TUITableWrapper>(({ className, children, ...props }) => {\n return (\n <div slot=\"table-wrapper\" className={cn(tableWrapperVariants(), className)} {...props}>\n {children}\n </div>\n );\n});\nUITableWrapper.displayName = 'UITableWrapper';\n","'use client';\n\nimport { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable';\n\nimport { useUITableBodyContext, useUITableContext } from '../hooks/use-context';\nimport { UITableBody, UITableEmptyDisplay, UITableHead, UITableHeadRow, UITableInnerTable, UITableInnerWrapper, UITableLoadMore, UITableRow } from './common';\nimport { UITableLoadingDisplay } from './commons/empty-display';\n\nexport const UITableContainer: React.FC<React.PropsWithChildren> = ({ children }) => {\n const { table, fetchMoreData } = useUITableContext();\n const { rowSelectionState } = useUITableBodyContext();\n\n const { rows } = table.getRowModel();\n\n return (\n <ResizablePanelGroup\n direction=\"horizontal\"\n style={{ direction: table.options.columnResizeDirection }}\n className=\"relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border border-r border-r-border p-0 text-sm\"\n >\n <ResizablePanel data-slot=\"table-scroll-host\" className=\"relative flex flex-col\">\n <UITableInnerWrapper>\n <UITableInnerTable>\n <UITableHead>\n {table.getHeaderGroups().map(headerGroup => (\n <UITableHeadRow key={headerGroup.id} headerGroup={headerGroup} />\n ))}\n </UITableHead>\n <UITableBody>\n {rows.map((row, index) => {\n const isSelected = rowSelectionState[row.id] === true;\n return <UITableRow key={row.id} row={row} isSelected={isSelected} rowIndex={index} />;\n })}\n {fetchMoreData && <UITableLoadMore fetchMoreData={fetchMoreData} />}\n </UITableBody>\n <UITableLoadingDisplay />\n </UITableInnerTable>\n <UITableEmptyDisplay />\n </UITableInnerWrapper>\n </ResizablePanel>\n {children && (\n <>\n <ResizableHandle />\n {children}\n </>\n )}\n </ResizablePanelGroup>\n );\n};\n","/**\n * @file provider.tsx\n * Context providers that wire TanStack Table state into the UITable component tree.\n *\n * Each sub-provider is a memoised wrapper around a single React context so that\n * only the subtree that consumes a particular slice of state re-renders when that\n * slice changes.\n */\nimport { memo, useCallback, useId, useMemo, useState } from 'react';\n\nimport type { ColumnDef, ColumnPinningState, ExpandedState, RowSelectionState } from '@tanstack/react-table';\nimport { getCoreRowModel, getExpandedRowModel, getGroupedRowModel, useReactTable } from '@tanstack/react-table';\n\nimport type { AnyEntity } from '@/types';\nimport {\n TableAnalysisContext,\n TableBodyContext,\n TableContext,\n TableFilterContext,\n TableHeadRowContext,\n TableInnerTableContext,\n TableInnerWrapperContext,\n TableRowContext,\n} from '../../hooks/use-context';\nimport type {\n ActiveFilter,\n FilterDefinition,\n FilterType,\n FilterValue,\n RowData,\n TableProviderProps,\n TTableAnalysisContext,\n TTableBodyContext,\n TTableContext,\n TTableFilterContext,\n TTableHeadRowContext,\n TTableInnerTableContext,\n TTableInnerWrapperContext,\n TTableRowContext,\n TUITableColumn,\n} from '../../types';\n\nfunction createDefaultFilterValue(type: FilterType): FilterValue {\n switch (type) {\n case 'tag':\n return { type: 'tag', values: [] };\n case 'single-tag':\n return { type: 'single-tag', value: null };\n case 'date-range':\n return { type: 'date-range' };\n case 'number':\n return { type: 'number', operator: 'eq' };\n case 'text':\n return { type: 'text', operator: 'contains', value: '' };\n case 'boolean':\n return { type: 'boolean', value: null };\n }\n}\n\n/**\n * Provides the inner-wrapper DOM element id to all descendants via\n * `TableInnerWrapperContext`, enabling virtual-scroll sentinels to locate the\n * scrollable container without prop-drilling.\n */\nconst UITableInnerWrapperProvider = memo<React.PropsWithChildren<TTableInnerWrapperContext>>(({ innerWrapperId, children }) => {\n const value = useMemo<TTableInnerWrapperContext>(() => ({ innerWrapperId }), [innerWrapperId]);\n return <TableInnerWrapperContext.Provider value={value}>{children}</TableInnerWrapperContext.Provider>;\n});\nUITableInnerWrapperProvider.displayName = 'UITableInnerWrapperProvider';\n\n/**\n * Provides the TanStack `table` instance, the inner `<table>` element id, and\n * the pre-computed `totalSize` (sum of all column widths) to descendants via\n * `TableInnerTableContext`.\n */\nconst UITableInnerTableProvider = memo<React.PropsWithChildren<TTableInnerTableContext>>(({ table, innerTableId, totalSize, children }) => {\n const value = useMemo<TTableInnerTableContext>(() => ({ table, innerTableId, totalSize }), [table, innerTableId, totalSize]);\n return <TableInnerTableContext.Provider value={value}>{children}</TableInnerTableContext.Provider>;\n});\nUITableInnerTableProvider.displayName = 'UITableInnerTableProvider';\n\n/**\n * Provides column-pinning state and the \"select all\" toggle to the header-row\n * layer via `TableHeadRowContext`, preventing unnecessary re-renders in the body.\n */\nconst UITableHeadRowProvider = memo<React.PropsWithChildren<TTableHeadRowContext>>(\n ({ isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onToggleAllRowsSelected, children }) => {\n const value = useMemo<TTableHeadRowContext>(\n () => ({ isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onToggleAllRowsSelected }),\n [isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onToggleAllRowsSelected]\n );\n return <TableHeadRowContext.Provider value={value}>{children}</TableHeadRowContext.Provider>;\n }\n);\nUITableHeadRowProvider.displayName = 'UITableHeadRowProvider';\n\n/**\n * Provides loading/empty state and the current row-selection map to the table\n * body layer via `TableBodyContext`.\n */\nconst UITableBodyProvider = memo<React.PropsWithChildren<TTableBodyContext>>(({ isFetching, isRefetching, isEmpty, rowSelectionState, children }) => {\n const value = useMemo<TTableBodyContext>(() => ({ isFetching, isRefetching, isEmpty, rowSelectionState }), [isFetching, isEmpty, rowSelectionState]);\n return <TableBodyContext.Provider value={value}>{children}</TableBodyContext.Provider>;\n});\nUITableBodyProvider.displayName = 'UITableBodyProvider';\n\n/**\n * Provides per-row interaction state — click handler, pinning, and the\n * \"select all\" flag — to individual row renderers via `TableRowContext`.\n */\nconst UITableRowProvider = memo<React.PropsWithChildren<TTableRowContext<AnyEntity, AnyEntity>>>(\n ({ keyOfClickRow, isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onClickRow, children }) => {\n const value = useMemo<TTableRowContext<AnyEntity, AnyEntity>>(\n () => ({\n keyOfClickRow,\n isAllRowsSelected,\n columnPinningState,\n leftPinnedHeaders,\n rightPinnedHeaders,\n onClickRow,\n }),\n [keyOfClickRow, isAllRowsSelected, columnPinningState, leftPinnedHeaders, rightPinnedHeaders, onClickRow]\n );\n return <TableRowContext.Provider value={value}>{children}</TableRowContext.Provider>;\n }\n);\nUITableRowProvider.displayName = 'UITableRowProvider';\n\n/**\n * Root context provider for the UITable component family.\n *\n * Instantiates a TanStack Table instance with virtualisation-friendly settings\n * (column pinning, row selection, row grouping, row expansion) and propagates\n * all derived state through a nested set of memoised context providers so that\n * each layer only re-renders when its own slice of state changes.\n *\n * @example\n * ```tsx\n * import { UITableProvider } from '@customafk/lunas-ui/features/tables';\n *\n * const columns = [\n * { accessorKey: 'name', header: 'Name' },\n * { accessorKey: 'email', header: 'Email' },\n * ];\n *\n * function MyPage() {\n * return (\n * <UITableProvider\n * title=\"Users\"\n * data={users}\n * columns={columns}\n * isFetching={isLoading}\n * onClickRow={(index, id) => console.log(index, id)}\n * >\n * <UITable />\n * </UITableProvider>\n * );\n * }\n * ```\n */\nexport const UITableProvider = <\n TData extends RowData<TData> = RowData<AnyEntity>,\n TKey extends keyof TData = keyof TData,\n TColumns extends ReadonlyArray<TUITableColumn<TData>> = TUITableColumn<TData>[],\n>({\n title,\n\n isFetching = false,\n isRefetching = false,\n isLoading = false,\n loadingDisplayRow = 3,\n\n data,\n columns,\n totalRows,\n\n leftPinnedColumns = [],\n rightPinnedColumns = [],\n\n keyOfClickRow,\n onClickRow,\n onRowSelection,\n onColumnPinning,\n\n fetchMoreData,\n emptyDisplayHeight,\n csvData,\n csvFileName,\n\n filterDefinitions = [],\n onFilterChange,\n\n summary = [],\n onSummaryItemClick,\n showAnalysisPanel = false,\n\n description,\n headerActions,\n\n children,\n}: React.PropsWithChildren<TableProviderProps<TData, TKey, TColumns>>) => {\n const innerWrapperId = useId();\n const innerTableId = useId();\n\n const [isAnalysisPanelOpen, setIsAnalysisPanelOpen] = useState(false);\n\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({\n right: rightPinnedColumns as unknown as string[],\n left: ['select', ...leftPinnedColumns] as unknown as string[],\n });\n const [expanded, setExpanded] = useState<ExpandedState>({});\n const [activeFilters, setActiveFilters] = useState<ActiveFilter[]>([]);\n\n const handleRowSelectionChange = useCallback<React.Dispatch<React.SetStateAction<RowSelectionState>>>(\n newRowSelection => {\n setRowSelection(newRowSelection);\n onRowSelection?.(newRowSelection instanceof Function ? newRowSelection(rowSelection) : newRowSelection);\n return newRowSelection;\n },\n [rowSelection, onRowSelection]\n );\n\n const handleColumnPinningChange = useCallback<React.Dispatch<React.SetStateAction<ColumnPinningState>>>(\n newColumnPinning => {\n setColumnPinning(newColumnPinning);\n onColumnPinning?.(newColumnPinning instanceof Function ? newColumnPinning(columnPinning) : newColumnPinning);\n },\n [columnPinning, onColumnPinning]\n );\n\n const addFilter = useCallback(\n (definitionId: string) => {\n const def = (filterDefinitions as FilterDefinition[]).find(d => d.id === definitionId);\n if (!def) return;\n const newFilter: ActiveFilter = {\n id: `${definitionId}-${crypto.randomUUID()}`,\n definitionId,\n value: createDefaultFilterValue(def.type),\n };\n setActiveFilters(prev => {\n const next = [...prev, newFilter];\n onFilterChange?.(next);\n return next;\n });\n },\n [filterDefinitions, onFilterChange]\n );\n\n const removeFilter = useCallback(\n (filterId: string) => {\n setActiveFilters(prev => {\n const next = prev.filter(f => f.id !== filterId);\n onFilterChange?.(next);\n return next;\n });\n },\n [onFilterChange]\n );\n\n const updateFilter = useCallback(\n (filterId: string, value: FilterValue) => {\n setActiveFilters(prev => {\n const next = prev.map(f => (f.id === filterId ? { ...f, value } : f));\n onFilterChange?.(next);\n return next;\n });\n },\n [onFilterChange]\n );\n\n const filterContextValue = useMemo<TTableFilterContext>(\n () => ({\n filterDefinitions: filterDefinitions as FilterDefinition[],\n activeFilters,\n addFilter,\n removeFilter,\n updateFilter,\n }),\n [filterDefinitions, activeFilters, addFilter, removeFilter, updateFilter]\n );\n\n const table = useReactTable<TData>({\n data: data,\n columns: columns as unknown as ColumnDef<AnyEntity, unknown>[],\n state: {\n rowSelection,\n columnPinning,\n expanded,\n },\n defaultColumn: {\n enableResizing: false,\n size: undefined,\n minSize: undefined,\n maxSize: undefined,\n },\n columnResizeMode: 'onChange',\n columnResizeDirection: 'ltr',\n\n enableColumnPinning: true,\n enableRowSelection: true,\n enableColumnResizing: true,\n enableMultiRowSelection: true,\n\n autoResetAll: false,\n autoResetExpanded: false,\n autoResetPageIndex: false,\n\n getSubRows: row => row.subRows,\n getCoreRowModel: getCoreRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n onRowSelectionChange: handleRowSelectionChange,\n onColumnPinningChange: handleColumnPinningChange,\n onExpandedChange: setExpanded,\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: rows\n const rows = useMemo(() => {\n const { rows } = table.getRowModel();\n return rows;\n }, [table.getRowModel().rows, table.getState().columnPinning]);\n\n const isEmpty = useMemo<boolean>(() => {\n return !isFetching && !isRefetching && rows.length === 0;\n }, [rows, isFetching, isRefetching]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get state\n const value = useMemo<TTableContext<TData>>(\n () => ({\n title,\n table,\n\n isEmpty,\n isFetching,\n isRefetching,\n isLoading,\n loadingDisplayRow,\n\n totalRows,\n\n fetchMoreData,\n emptyDisplayHeight,\n\n csvData,\n csvFileName,\n\n summary,\n onSummaryItemClick,\n showAnalysisPanel,\n\n description,\n headerActions,\n }),\n [\n title,\n table,\n\n isEmpty,\n isRefetching,\n isFetching,\n isLoading,\n loadingDisplayRow,\n\n totalRows,\n\n fetchMoreData,\n emptyDisplayHeight,\n table.getState().columnPinning,\n table.getState().expanded,\n\n csvData,\n csvFileName,\n\n summary,\n onSummaryItemClick,\n showAnalysisPanel,\n\n description,\n headerActions,\n ]\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get state\n const tableState = useMemo(() => {\n return table.getState();\n }, [table.getState()]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get state\n const isAllRowsSelected = useMemo(() => {\n return table.getIsAllRowsSelected();\n }, [table.getIsAllRowsSelected()]);\n\n const rowSelectionState = useMemo(() => {\n return tableState.rowSelection;\n }, [tableState.rowSelection]);\n\n const columnPinningState = useMemo(() => {\n return tableState.columnPinning;\n }, [tableState.columnPinning]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get state\n const leftPinnedHeaders = useMemo(() => {\n return table.getLeftHeaderGroups()[0]?.headers || [];\n }, [table.getState().columnPinning]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get state\n const rightPinnedHeaders = useMemo(() => {\n return table.getRightHeaderGroups()[0]?.headers || [];\n }, [table.getState().columnPinning]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: table get total size\n const totalSize = useMemo(() => {\n return table.getTotalSize();\n }, [table.getTotalSize()]);\n\n const toggleAnalysisPanel = useCallback(() => setIsAnalysisPanelOpen(prev => !prev), []);\n\n const analysisContextValue = useMemo<TTableAnalysisContext>(\n () => ({ isOpen: isAnalysisPanelOpen, toggle: toggleAnalysisPanel }),\n [isAnalysisPanelOpen, toggleAnalysisPanel]\n );\n\n return (\n <TableAnalysisContext.Provider value={analysisContextValue}>\n <TableFilterContext.Provider value={filterContextValue}>\n <TableContext.Provider value={value as TTableContext<TData>}>\n <UITableInnerWrapperProvider innerWrapperId={innerWrapperId}>\n <UITableInnerTableProvider table={table} innerTableId={innerTableId} totalSize={totalSize}>\n <UITableHeadRowProvider\n isAllRowsSelected={isAllRowsSelected}\n columnPinningState={columnPinningState}\n leftPinnedHeaders={leftPinnedHeaders}\n rightPinnedHeaders={rightPinnedHeaders}\n onToggleAllRowsSelected={table.toggleAllRowsSelected}\n >\n <UITableBodyProvider isFetching={isFetching} isRefetching={isRefetching} isEmpty={isEmpty} rowSelectionState={rowSelectionState}>\n <UITableRowProvider\n keyOfClickRow={keyOfClickRow}\n isAllRowsSelected={isAllRowsSelected}\n columnPinningState={columnPinningState}\n leftPinnedHeaders={leftPinnedHeaders}\n rightPinnedHeaders={rightPinnedHeaders}\n onClickRow={onClickRow}\n >\n {children}\n </UITableRowProvider>\n </UITableBodyProvider>\n </UITableHeadRowProvider>\n </UITableInnerTableProvider>\n </UITableInnerWrapperProvider>\n </TableContext.Provider>\n </TableFilterContext.Provider>\n </TableAnalysisContext.Provider>\n );\n};\n","'use client';\n\n/**\n * @module @customafk/lunas-ui/features/tables\n *\n * Public surface of the UITable feature module.\n *\n * Re-exports the required building blocks (root `UITableProvider`, the\n * `commons/*` DOM primitives, and `UITableContainer`) eagerly, and the\n * optional/composable pieces — the 18 cell-renderer atoms plus the filter\n * panel, analysis panel, summary bar, and toolbar — behind `React.lazy` so\n * that importing this module only pays for what a given table actually\n * renders. Mirrors the `lazyField` pattern used by\n * `@customafk/lunas-ui/features/tanstack-form`.\n *\n * @example\n * ```tsx\n * import {\n * UITableProvider,\n * UITableWrapper,\n * UITableTooltip,\n * UITableTooltipFilter,\n * UITableTooltipActions,\n * UITableFilter,\n * } from '@customafk/lunas-ui/features/tables';\n * ```\n */\nimport type { ComponentProps, ComponentType } from 'react';\nimport { lazy, Suspense } from 'react';\n\nexport { UITableEmpty } from './components/atoms/empty';\nexport * from './components/common';\nexport * from './components/table';\nexport { UITableProvider } from './components/table/provider';\nexport * from './types';\n\nimport type { UITableAvatarNameDisplay as UITableAvatarNameDisplayType } from './components/atoms/avatar-name-display';\nimport type { UITableBadgeDisplay as UITableBadgeDisplayType } from './components/atoms/badge-display';\nimport type { UITableBooleanDisplay as UITableBooleanDisplayType } from './components/atoms/boolean-display';\nimport type { UITableCurrencyDisplay as UITableCurrencyDisplayType } from './components/atoms/currency-display';\nimport type { UITableDateDisplay as UITableDateDisplayType } from './components/atoms/date-display';\nimport type { UITableDescriptionDisplay as UITableDescriptionDisplayType } from './components/atoms/description-display';\nimport type { UITableEditButton as UITableEditButtonType } from './components/atoms/edit-button';\nimport type { UITableEmailDisplay as UITableEmailDisplayType } from './components/atoms/email-display';\nimport type { UITableListDisplay as UITableListDisplayType } from './components/atoms/list-display';\nimport type { UITableMoreButton as UITableMoreButtonType } from './components/atoms/more-button';\nimport type { UITableNameDisplay as UITableNameDisplayType } from './components/atoms/name-display';\nimport type { UITablePermalink as UITablePermalinkType } from './components/atoms/permalink';\nimport type { UITablePhoneNumberDisplay as UITablePhoneNumberDisplayType } from './components/atoms/phone-number';\nimport type { UITableProgressDisplay as UITableProgressDisplayType } from './components/atoms/progress-display';\nimport type { UITableRemoveButton as UITableRemoveButtonType } from './components/atoms/remove-button';\nimport type { UITableStatisticDisplay as UITableStatisticDisplayType } from './components/atoms/statistic';\nimport type { UITableStatusDisplay as UITableStatusDisplayType } from './components/atoms/status-display';\nimport type { UITableToggleButton as UITableToggleButtonType } from './components/atoms/toggle-button';\nimport type { UITableUserDataDisplay as UITableUserDataDisplayType } from './components/atoms/user';\nimport type {\n UITableTooltipActions as UITableTooltipActionsType,\n UITableTooltipFilter as UITableTooltipFilterType,\n UITableTooltip as UITableTooltipType,\n} from './components/table/tooltip';\n\n/**\n * Wraps a `lazy()`-loaded component in its own `Suspense` boundary so it can be dropped\n * anywhere without callers needing to set up Suspense themselves. Keeps this file itself\n * small — the heavy per-atom/per-panel implementations (Radix primitives, lucide icon sets,\n * the filter builder, CSV export, etc.) only load when a table actually renders that piece.\n */\nfunction lazyField<P extends object>(loader: () => Promise<{ default: ComponentType<P> }>): ComponentType<P> {\n const LazyComponent = lazy(loader);\n return (props: P) => (\n <Suspense fallback={null}>\n <LazyComponent {...props} />\n </Suspense>\n );\n}\n\n// ─── Cell-renderer atoms (lazy) ────────────────────────────────────────────────\n\nconst UITableAvatarNameDisplay = lazyField<ComponentProps<typeof UITableAvatarNameDisplayType>>(() =>\n import('./components/atoms/avatar-name-display').then(m => ({ default: m.UITableAvatarNameDisplay }))\n);\nconst UITableBadgeDisplay = lazyField<ComponentProps<typeof UITableBadgeDisplayType>>(() =>\n import('./components/atoms/badge-display').then(m => ({ default: m.UITableBadgeDisplay }))\n);\nconst UITableBooleanDisplay = lazyField<ComponentProps<typeof UITableBooleanDisplayType>>(() =>\n import('./components/atoms/boolean-display').then(m => ({ default: m.UITableBooleanDisplay }))\n);\nconst UITableCurrencyDisplay = lazyField<ComponentProps<typeof UITableCurrencyDisplayType>>(() =>\n import('./components/atoms/currency-display').then(m => ({ default: m.UITableCurrencyDisplay }))\n);\nconst UITableDateDisplay = lazyField<ComponentProps<typeof UITableDateDisplayType>>(() =>\n import('./components/atoms/date-display').then(m => ({ default: m.UITableDateDisplay }))\n);\nconst UITableDescriptionDisplay = lazyField<ComponentProps<typeof UITableDescriptionDisplayType>>(() =>\n import('./components/atoms/description-display').then(m => ({ default: m.UITableDescriptionDisplay }))\n);\nconst UITableEditButton = lazyField<ComponentProps<typeof UITableEditButtonType>>(() =>\n import('./components/atoms/edit-button').then(m => ({ default: m.UITableEditButton }))\n);\nconst UITableEmailDisplay = lazyField<ComponentProps<typeof UITableEmailDisplayType>>(() =>\n import('./components/atoms/email-display').then(m => ({ default: m.UITableEmailDisplay }))\n);\nconst UITableListDisplay = lazyField<ComponentProps<typeof UITableListDisplayType>>(() =>\n import('./components/atoms/list-display').then(m => ({ default: m.UITableListDisplay }))\n);\nconst UITableMoreButton = lazyField<ComponentProps<typeof UITableMoreButtonType>>(() =>\n import('./components/atoms/more-button').then(m => ({ default: m.UITableMoreButton }))\n);\nconst UITableNameDisplay = lazyField<ComponentProps<typeof UITableNameDisplayType>>(() =>\n import('./components/atoms/name-display').then(m => ({ default: m.UITableNameDisplay }))\n);\nconst UITablePermalink = lazyField<ComponentProps<typeof UITablePermalinkType>>(() =>\n import('./components/atoms/permalink').then(m => ({ default: m.UITablePermalink }))\n);\nconst UITablePhoneNumberDisplay = lazyField<ComponentProps<typeof UITablePhoneNumberDisplayType>>(() =>\n import('./components/atoms/phone-number').then(m => ({ default: m.UITablePhoneNumberDisplay }))\n);\nconst UITableProgressDisplay = lazyField<ComponentProps<typeof UITableProgressDisplayType>>(() =>\n import('./components/atoms/progress-display').then(m => ({ default: m.UITableProgressDisplay }))\n);\nconst UITableRemoveButton = lazyField<ComponentProps<typeof UITableRemoveButtonType>>(() =>\n import('./components/atoms/remove-button').then(m => ({ default: m.UITableRemoveButton }))\n);\nconst UITableStatisticDisplay = lazyField<ComponentProps<typeof UITableStatisticDisplayType>>(() =>\n import('./components/atoms/statistic').then(m => ({ default: m.UITableStatisticDisplay }))\n);\nconst UITableStatusDisplay = lazyField<ComponentProps<typeof UITableStatusDisplayType>>(() =>\n import('./components/atoms/status-display').then(m => ({ default: m.UITableStatusDisplay }))\n);\nconst UITableToggleButton = lazyField<ComponentProps<typeof UITableToggleButtonType>>(() =>\n import('./components/atoms/toggle-button').then(m => ({ default: m.UITableToggleButton }))\n);\nconst UITableUserDataDisplay = lazyField<ComponentProps<typeof UITableUserDataDisplayType>>(() =>\n import('./components/atoms/user').then(m => ({ default: m.UITableUserDataDisplay }))\n);\n\n// ─── Optional panels & toolbar (lazy) ──────────────────────────────────────────\n\nconst UITableFilter = lazyField<Record<string, never>>(() => import('./components/table/filter').then(m => ({ default: m.UITableFilter })));\nconst UITableAnalysisPanel = lazyField<Record<string, never>>(() =>\n import('./components/table/analysis-panel').then(m => ({ default: m.UITableAnalysisPanel }))\n);\nconst UITableSummaryBar = lazyField<Record<string, never>>(() => import('./components/table/summary-bar').then(m => ({ default: m.UITableSummaryBar })));\nconst UITableTooltip = lazyField<ComponentProps<typeof UITableTooltipType>>(() =>\n import('./components/table/tooltip').then(m => ({ default: m.UITableTooltip }))\n);\nconst UITableTooltipFilter = lazyField<ComponentProps<typeof UITableTooltipFilterType>>(() =>\n import('./components/table/tooltip').then(m => ({ default: m.UITableTooltipFilter }))\n);\nconst UITableTooltipActions = lazyField<ComponentProps<typeof UITableTooltipActionsType>>(() =>\n import('./components/table/tooltip').then(m => ({ default: m.UITableTooltipActions }))\n);\n\nexport {\n UITableAnalysisPanel,\n // Cell-renderer atoms\n UITableAvatarNameDisplay,\n UITableBadgeDisplay,\n UITableBooleanDisplay,\n UITableCurrencyDisplay,\n UITableDateDisplay,\n UITableDescriptionDisplay,\n UITableEditButton,\n UITableEmailDisplay,\n // Optional panels & toolbar\n UITableFilter,\n UITableListDisplay,\n UITableMoreButton,\n UITableNameDisplay,\n UITablePermalink,\n UITablePhoneNumberDisplay,\n UITableProgressDisplay,\n UITableRemoveButton,\n UITableStatisticDisplay,\n UITableStatusDisplay,\n UITableSummaryBar,\n UITableToggleButton,\n UITableTooltip,\n UITableTooltipActions,\n UITableTooltipFilter,\n UITableUserDataDisplay,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Tabs } from "radix-ui";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/ui/tabs.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Keyboard-accessible tabbed panel built on Radix UI's Tabs primitives, composed from `Tabs`, `TabsList`, `TabsTrigger`, and `TabsContent`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { Tabs, TabsList, TabsTrigger, TabsContent } from '@customafk/lunas-ui/ui/tabs';
|
|
10
|
+
*
|
|
11
|
+
* <Tabs defaultValue="overview">
|
|
12
|
+
* <TabsList>
|
|
13
|
+
* <TabsTrigger value="overview">Overview</TabsTrigger>
|
|
14
|
+
* <TabsTrigger value="settings">Settings</TabsTrigger>
|
|
15
|
+
* </TabsList>
|
|
16
|
+
* <TabsContent value="overview">Overview content here.</TabsContent>
|
|
17
|
+
* <TabsContent value="settings">Settings content here.</TabsContent>
|
|
18
|
+
* </Tabs>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare function Tabs$1({
|
|
22
|
+
className,
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<typeof Tabs.Root>): import("react").JSX.Element;
|
|
25
|
+
/** Container that holds the row of `TabsTrigger` buttons with a muted background pill style. */
|
|
26
|
+
declare function TabsList({
|
|
27
|
+
className,
|
|
28
|
+
...props
|
|
29
|
+
}: React.ComponentProps<typeof Tabs.List>): import("react").JSX.Element;
|
|
30
|
+
/** Individual tab button that activates its associated `TabsContent` panel when clicked. */
|
|
31
|
+
declare function TabsTrigger({
|
|
32
|
+
className,
|
|
33
|
+
...props
|
|
34
|
+
}: React.ComponentProps<typeof Tabs.Trigger>): import("react").JSX.Element;
|
|
35
|
+
/** Panel whose visibility is controlled by the active `TabsTrigger`; each panel must have a matching `value`. */
|
|
36
|
+
declare function TabsContent({
|
|
37
|
+
className,
|
|
38
|
+
...props
|
|
39
|
+
}: React.ComponentProps<typeof Tabs.Content>): import("react").JSX.Element;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { TabsTrigger as i, TabsContent as n, TabsList as r, Tabs$1 as t };
|
|
42
|
+
//# sourceMappingURL=tabs-CJ6qZcFU.d.cts.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Tabs } from "radix-ui";
|
|
2
|
+
|
|
3
|
+
//#region packages/components/ui/tabs.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Keyboard-accessible tabbed panel built on Radix UI's Tabs primitives, composed from `Tabs`, `TabsList`, `TabsTrigger`, and `TabsContent`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { Tabs, TabsList, TabsTrigger, TabsContent } from '@customafk/lunas-ui/ui/tabs';
|
|
10
|
+
*
|
|
11
|
+
* <Tabs defaultValue="overview">
|
|
12
|
+
* <TabsList>
|
|
13
|
+
* <TabsTrigger value="overview">Overview</TabsTrigger>
|
|
14
|
+
* <TabsTrigger value="settings">Settings</TabsTrigger>
|
|
15
|
+
* </TabsList>
|
|
16
|
+
* <TabsContent value="overview">Overview content here.</TabsContent>
|
|
17
|
+
* <TabsContent value="settings">Settings content here.</TabsContent>
|
|
18
|
+
* </Tabs>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare function Tabs$1({
|
|
22
|
+
className,
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<typeof Tabs.Root>): import("react").JSX.Element;
|
|
25
|
+
/** Container that holds the row of `TabsTrigger` buttons with a muted background pill style. */
|
|
26
|
+
declare function TabsList({
|
|
27
|
+
className,
|
|
28
|
+
...props
|
|
29
|
+
}: React.ComponentProps<typeof Tabs.List>): import("react").JSX.Element;
|
|
30
|
+
/** Individual tab button that activates its associated `TabsContent` panel when clicked. */
|
|
31
|
+
declare function TabsTrigger({
|
|
32
|
+
className,
|
|
33
|
+
...props
|
|
34
|
+
}: React.ComponentProps<typeof Tabs.Trigger>): import("react").JSX.Element;
|
|
35
|
+
/** Panel whose visibility is controlled by the active `TabsTrigger`; each panel must have a matching `value`. */
|
|
36
|
+
declare function TabsContent({
|
|
37
|
+
className,
|
|
38
|
+
...props
|
|
39
|
+
}: React.ComponentProps<typeof Tabs.Content>): import("react").JSX.Element;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { TabsTrigger as i, TabsContent as n, TabsList as r, Tabs$1 as t };
|
|
42
|
+
//# sourceMappingURL=tabs-CJ6qZcFU.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./ui/skeleton.cjs");let t=require("react"),n=require("react/jsx-runtime"),r=require("@tanstack/react-form");const{fieldContext:i,formContext:a,useFieldContext:o,useFormContext:s}=(0,r.createFormHookContexts)();function c(){return(0,n.jsx)(e.Skeleton,{"data-slot":`tanstack-field-skeleton`,className:`h-9 w-full rounded`})}function l(e){let r=(0,t.lazy)(e);return e=>(0,n.jsx)(t.Suspense,{fallback:(0,n.jsx)(c,{}),children:(0,n.jsx)(r,{...e})})}const u=l(()=>Promise.resolve().then(()=>require("./text-field-BMo-8rsq.cjs")).then(e=>({default:e.TextField}))),d=l(()=>Promise.resolve().then(()=>require("./textarea-field-BUGcITwp.cjs")).then(e=>({default:e.TextareaField}))),f=l(()=>Promise.resolve().then(()=>require("./text-editor-field-gas5r-xy.cjs")).then(e=>({default:e.TextEditorField}))),p=l(()=>Promise.resolve().then(()=>require("./number-field-DmKh7bbY.cjs")).then(e=>({default:e.NumberField}))),m=l(()=>Promise.resolve().then(()=>require("./email-field-BErx3liY.cjs")).then(e=>({default:e.EmailField}))),h=l(()=>Promise.resolve().then(()=>require("./password-field-gHYDiXWY.cjs")).then(e=>({default:e.PasswordField}))),g=l(()=>Promise.resolve().then(()=>require("./select-field-DG8sQ5iN.cjs")).then(e=>({default:e.SelectField}))),_=l(()=>Promise.resolve().then(()=>require("./combobox-field-DLpH6J9H.cjs")).then(e=>({default:e.ComboboxField}))),v=l(()=>Promise.resolve().then(()=>require("./date-field-RvEB9F1r.cjs")).then(e=>({default:e.DateField}))),y=l(()=>Promise.resolve().then(()=>require("./switch-field-n6a5SaEM.cjs")).then(e=>({default:e.SwitchField}))),b=l(()=>Promise.resolve().then(()=>require("./radio-group-field-McpjpLW-.cjs")).then(e=>({default:e.RadioGroupField}))),x=l(()=>Promise.resolve().then(()=>require("./checkbox-field-B1vCz-Wf.cjs")).then(e=>({default:e.CheckboxField}))),S=l(()=>Promise.resolve().then(()=>require("./simple-text-field-LYWVIAfQ.cjs")).then(e=>({default:e.SimpleTextField}))),C=l(()=>Promise.resolve().then(()=>require("./simple-email-field-DYqCWprP.cjs")).then(e=>({default:e.SimpleEmailField}))),w=l(()=>Promise.resolve().then(()=>require("./simple-password-field-D2UMmghM.cjs")).then(e=>({default:e.SimplePasswordField}))),T=l(()=>Promise.resolve().then(()=>require("./simple-textarea-field-DcEvaizE.cjs")).then(e=>({default:e.SimpleTextareaField}))),E=l(()=>Promise.resolve().then(()=>require("./simple-number-field-otvv2xq-.cjs")).then(e=>({default:e.SimpleNumberField}))),D=l(()=>Promise.resolve().then(()=>require("./simple-select-field-CeNnXUHN.cjs")).then(e=>({default:e.SimpleSelectField}))),O=(0,t.lazy)(()=>Promise.resolve().then(()=>require("./simple-array-field-4paKpxXk.cjs")).then(e=>({default:e.SimpleArrayField})));function k(e){return(0,n.jsx)(t.Suspense,{fallback:(0,n.jsx)(c,{}),children:(0,n.jsx)(O,{...e})})}const A=l(()=>Promise.resolve().then(()=>require("./simple-boolean-field-B9T_fHk9.cjs")).then(e=>({default:e.SimpleBooleanField}))),j=l(()=>Promise.resolve().then(()=>require("./simple-combobox-field-ChMKk7xp.cjs")).then(e=>({default:e.SimpleComboboxField}))),M=l(()=>Promise.resolve().then(()=>require("./simple-date-field-BGGlsHzG.cjs")).then(e=>({default:e.SimpleDateField}))),N=l(()=>Promise.resolve().then(()=>require("./simple-radio-group-field-C2DDfIUs.cjs")).then(e=>({default:e.SimpleRadioGroupField}))),P=l(()=>Promise.resolve().then(()=>require("./simple-array-field-4paKpxXk.cjs")).then(e=>({default:e.ArrayCol}))),F=l(()=>Promise.resolve().then(()=>require("./simple-array-field-4paKpxXk.cjs")).then(e=>({default:e.ArrayHeaderRow}))),I=l(()=>Promise.resolve().then(()=>require("./dialog-form-CkNCwzWG.cjs")).then(e=>({default:e.TanStackDialogForm}))),L=l(()=>Promise.resolve().then(()=>require("./popover-form-_hQQpfAB.cjs")).then(e=>({default:e.TanStackPopoverForm}))),R=l(()=>Promise.resolve().then(()=>require("./container-form-CxxUYctk.cjs")).then(e=>({default:e.TanStackContainerForm}))),z=l(()=>Promise.resolve().then(()=>require("./section-form-B9iTs2we.cjs")).then(e=>({default:e.TanStackSectionForm}))),B=l(()=>Promise.resolve().then(()=>require("./card-form-BR5kDTzB.cjs")).then(e=>({default:e.TanStackCardForm}))),V=l(()=>Promise.resolve().then(()=>require("./group-field-0kStiX8n.cjs")).then(e=>({default:e.TanStackFieldGroup}))),H=l(()=>Promise.resolve().then(()=>require("./title-field-CKxwzMOM.cjs")).then(e=>({default:e.TanStackTitleField}))),U=l(()=>Promise.resolve().then(()=>require("./actions-form-Bo46j_dH.cjs")).then(e=>({default:e.TanStackActionsForm}))),W=l(()=>Promise.resolve().then(()=>require("./action-submit-42PxGLsR.cjs")).then(e=>({default:e.TanStackActionSubmit}))),G=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldGroup}))),K=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.Field}))),q=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldContent}))),J=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldLabel}))),Y=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldContentMain}))),X=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldSeparator}))),Z=l(()=>Promise.resolve().then(()=>require("./field-BV5twmKA.cjs")).then(e=>({default:e.FieldError}))),{useAppForm:Q,withForm:$,withFieldGroup:ee}=(0,r.createFormHook)({fieldContext:i,formContext:a,fieldComponents:{TextField:u,TextareaField:d,TextEditorField:f,NumberField:p,EmailField:m,PasswordField:h,SelectField:g,ComboboxField:_,DateField:v,SwitchField:y,RadioGroupField:b,CheckboxField:x,SimpleTextField:S,SimpleEmailField:C,SimplePasswordField:w,SimpleTextareaField:T,SimpleNumberField:E,SimpleSelectField:D,SimpleArrayField:k,SimpleBooleanField:A,SimpleComboboxField:j,SimpleDateField:M,SimpleRadioGroupField:N,FieldGroup:G,Field:K,FieldContent:q,FieldLabel:J,FieldContentMain:Y,FieldSeparator:X,FieldError:Z},formComponents:{TanStackDialogForm:I,TanStackPopoverForm:L,TanStackContainerForm:R,TanStackSectionForm:z,TanStackCardForm:B,TanStackFieldGroup:V,TanStackTitleField:H,TanStackActionsForm:U,TanStackActionSubmit:W,ArrayCol:P,ArrayHeaderRow:F}});Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return f}});
|
|
2
|
+
//# sourceMappingURL=tanstack-form-CNrZQZhn.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-form-CNrZQZhn.cjs","names":["Skeleton","Suspense","Impl"],"sources":["../packages/components/features/tanstack-form/components/form-context.ts","../packages/components/features/tanstack-form/tanstack-form.tsx"],"sourcesContent":["'use client';\n\nimport { createFormHookContexts } from '@tanstack/react-form';\n\n/**\n * Shared field/form contexts, split out from `tanstack-form.tsx` so that field and form\n * components can depend on them directly instead of importing back through the file that\n * lazy-loads those same components (which would reintroduce a circular import).\n */\nexport const { fieldContext, formContext, useFieldContext: useTanStackFieldContext, useFormContext: useTanStackFormContext } = createFormHookContexts();\n","'use client';\n\nimport type { ComponentProps, ComponentType } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport { createFormHook } from '@tanstack/react-form';\n\nimport { Skeleton } from '@/components/ui/skeleton';\n\nimport type { ArrayCol as ArrayColType, ArrayHeaderRow as ArrayHeaderRowType, SimpleArrayFieldProps } from './components/atoms/simple-array-field';\nimport type { SimpleBooleanField as SimpleBooleanFieldType } from './components/atoms/simple-boolean-field';\nimport type { SimpleComboboxField as SimpleComboboxFieldType } from './components/atoms/simple-combobox-field';\nimport type { SimpleDateField as SimpleDateFieldType } from './components/atoms/simple-date-field';\nimport type { SimpleEmailField as SimpleEmailFieldType } from './components/atoms/simple-email-field';\nimport type { SimpleNumberField as SimpleNumberFieldType } from './components/atoms/simple-number-field';\nimport type { SimplePasswordField as SimplePasswordFieldType } from './components/atoms/simple-password-field';\nimport type { SimpleRadioGroupField as SimpleRadioGroupFieldType } from './components/atoms/simple-radio-group-field';\nimport type { SimpleSelectField as SimpleSelectFieldType } from './components/atoms/simple-select-field';\nimport type { SimpleTextField as SimpleTextFieldType } from './components/atoms/simple-text-field';\nimport type { SimpleTextareaField as SimpleTextareaFieldType } from './components/atoms/simple-textarea-field';\nimport type { CheckboxField as CheckboxFieldType } from './components/fields/checkbox-field';\nimport type { ComboboxField as ComboboxFieldType } from './components/fields/combobox-field';\nimport type { DateField as DateFieldType } from './components/fields/date-field';\nimport type { EmailField as EmailFieldType } from './components/fields/email-field';\nimport type { NumberField as NumberFieldType } from './components/fields/number-field';\nimport type { PasswordField as PasswordFieldType } from './components/fields/password-field';\nimport type { RadioGroupField as RadioGroupFieldType } from './components/fields/radio-group-field';\nimport type { SelectField as SelectFieldType } from './components/fields/select-field';\nimport type { SwitchField as SwitchFieldType } from './components/fields/switch-field';\nimport type { TextEditorField as TextEditorFieldType } from './components/fields/text-editor-field';\nimport type { TextField as TextFieldType } from './components/fields/text-field';\nimport type { TextareaField as TextareaFieldType } from './components/fields/textarea-field';\nimport { fieldContext, formContext, useTanStackFieldContext, useTanStackFormContext } from './components/form-context';\nimport type { TanStackActionSubmit as TanStackActionSubmitType } from './components/forms/action-submit';\nimport type { TanStackActionsForm as TanStackActionsFormType } from './components/forms/actions-form';\nimport type { TanStackCardForm as TanStackCardFormType } from './components/forms/card-form';\nimport type { TanStackContainerForm as TanStackContainerFormType } from './components/forms/container-form';\nimport type { TanStackDialogForm as TanStackDialogFormType } from './components/forms/dialog-form';\nimport type { TanStackFieldGroup as TanStackFieldGroupType } from './components/forms/group-field';\nimport type { TanStackPopoverForm as TanStackPopoverFormType } from './components/forms/popover-form';\nimport type { TanStackSectionForm as TanStackSectionFormType } from './components/forms/section-form';\nimport type { TanStackTitleField as TanStackTitleFieldType } from './components/forms/title-field';\nimport type {\n FieldContentMain as FieldContentMainType,\n FieldContent as FieldContentType,\n FieldError as FieldErrorType,\n FieldGroup as FieldGroupType,\n FieldLabel as FieldLabelType,\n FieldSeparator as FieldSeparatorType,\n Field as FieldType,\n} from './components/ui/field';\n\n/** Input-shaped pulse placeholder shown while a lazy field/form chunk is still loading. */\nfunction FieldSkeleton() {\n return <Skeleton data-slot=\"tanstack-field-skeleton\" className=\"h-9 w-full rounded\" />;\n}\n\n/**\n * Wraps a `lazy()`-loaded component in its own `Suspense` boundary so it can be dropped\n * anywhere (inside or outside our own form containers) without callers needing to set up\n * Suspense themselves. Keeps this file itself small — the heavy per-field-type\n * implementations (Radix Select/Combobox/date-picker, the rich text editor, etc.) only load\n * when a form actually renders that field type.\n */\nfunction lazyField<P extends object>(loader: () => Promise<{ default: ComponentType<P> }>): ComponentType<P> {\n const LazyComponent = lazy(loader);\n return (props: P) => (\n <Suspense fallback={<FieldSkeleton />}>\n <LazyComponent {...props} />\n </Suspense>\n );\n}\n\n// ─── Rich field components (lazy) ─────────────────────────────────────────────\n\nconst TextField = lazyField<ComponentProps<typeof TextFieldType>>(() => import('./components/fields/text-field').then(m => ({ default: m.TextField })));\nconst TextareaField = lazyField<ComponentProps<typeof TextareaFieldType>>(() =>\n import('./components/fields/textarea-field').then(m => ({ default: m.TextareaField }))\n);\nconst TextEditorField = lazyField<ComponentProps<typeof TextEditorFieldType>>(() =>\n import('./components/fields/text-editor-field').then(m => ({ default: m.TextEditorField }))\n);\nconst NumberField = lazyField<ComponentProps<typeof NumberFieldType>>(() => import('./components/fields/number-field').then(m => ({ default: m.NumberField })));\nconst EmailField = lazyField<ComponentProps<typeof EmailFieldType>>(() => import('./components/fields/email-field').then(m => ({ default: m.EmailField })));\nconst PasswordField = lazyField<ComponentProps<typeof PasswordFieldType>>(() =>\n import('./components/fields/password-field').then(m => ({ default: m.PasswordField }))\n);\nconst SelectField = lazyField<ComponentProps<typeof SelectFieldType>>(() => import('./components/fields/select-field').then(m => ({ default: m.SelectField })));\nconst ComboboxField = lazyField<ComponentProps<typeof ComboboxFieldType>>(() =>\n import('./components/fields/combobox-field').then(m => ({ default: m.ComboboxField }))\n);\nconst DateField = lazyField<ComponentProps<typeof DateFieldType>>(() => import('./components/fields/date-field').then(m => ({ default: m.DateField })));\nconst SwitchField = lazyField<ComponentProps<typeof SwitchFieldType>>(() => import('./components/fields/switch-field').then(m => ({ default: m.SwitchField })));\nconst RadioGroupField = lazyField<ComponentProps<typeof RadioGroupFieldType>>(() =>\n import('./components/fields/radio-group-field').then(m => ({ default: m.RadioGroupField }))\n);\nconst CheckboxField = lazyField<ComponentProps<typeof CheckboxFieldType>>(() =>\n import('./components/fields/checkbox-field').then(m => ({ default: m.CheckboxField }))\n);\n\n// ─── Simple (minimal) field components (lazy) ─────────────────────────────────\n\nconst SimpleTextField = lazyField<ComponentProps<typeof SimpleTextFieldType>>(() =>\n import('./components/atoms/simple-text-field').then(m => ({ default: m.SimpleTextField }))\n);\nconst SimpleEmailField = lazyField<ComponentProps<typeof SimpleEmailFieldType>>(() =>\n import('./components/atoms/simple-email-field').then(m => ({ default: m.SimpleEmailField }))\n);\nconst SimplePasswordField = lazyField<ComponentProps<typeof SimplePasswordFieldType>>(() =>\n import('./components/atoms/simple-password-field').then(m => ({ default: m.SimplePasswordField }))\n);\nconst SimpleTextareaField = lazyField<ComponentProps<typeof SimpleTextareaFieldType>>(() =>\n import('./components/atoms/simple-textarea-field').then(m => ({ default: m.SimpleTextareaField }))\n);\nconst SimpleNumberField = lazyField<ComponentProps<typeof SimpleNumberFieldType>>(() =>\n import('./components/atoms/simple-number-field').then(m => ({ default: m.SimpleNumberField }))\n);\nconst SimpleSelectField = lazyField<ComponentProps<typeof SimpleSelectFieldType>>(() =>\n import('./components/atoms/simple-select-field').then(m => ({ default: m.SimpleSelectField }))\n);\nconst LazySimpleArrayField = lazy(() =>\n import('./components/atoms/simple-array-field').then(m => ({ default: m.SimpleArrayField as ComponentType<SimpleArrayFieldProps<unknown>> }))\n);\n\n/** Kept as its own generic wrapper (instead of `lazyField`) so callers can still write `<SimpleArrayField<Row> />`. */\nfunction SimpleArrayField<T>(props: SimpleArrayFieldProps<T>) {\n const Impl = LazySimpleArrayField as ComponentType<SimpleArrayFieldProps<T>>;\n return (\n <Suspense fallback={<FieldSkeleton />}>\n <Impl {...props} />\n </Suspense>\n );\n}\n\nconst SimpleBooleanField = lazyField<ComponentProps<typeof SimpleBooleanFieldType>>(() =>\n import('./components/atoms/simple-boolean-field').then(m => ({ default: m.SimpleBooleanField }))\n);\nconst SimpleComboboxField = lazyField<ComponentProps<typeof SimpleComboboxFieldType>>(() =>\n import('./components/atoms/simple-combobox-field').then(m => ({ default: m.SimpleComboboxField }))\n);\nconst SimpleDateField = lazyField<ComponentProps<typeof SimpleDateFieldType>>(() =>\n import('./components/atoms/simple-date-field').then(m => ({ default: m.SimpleDateField }))\n);\nconst SimpleRadioGroupField = lazyField<ComponentProps<typeof SimpleRadioGroupFieldType>>(() =>\n import('./components/atoms/simple-radio-group-field').then(m => ({ default: m.SimpleRadioGroupField }))\n);\n\n// ─── Array field layout helpers (lazy, co-located with SimpleArrayField) ──────\n\nconst ArrayCol = lazyField<ComponentProps<typeof ArrayColType>>(() => import('./components/atoms/simple-array-field').then(m => ({ default: m.ArrayCol })));\nconst ArrayHeaderRow = lazyField<ComponentProps<typeof ArrayHeaderRowType>>(() =>\n import('./components/atoms/simple-array-field').then(m => ({ default: m.ArrayHeaderRow }))\n);\n\n// ─── Form containers (lazy) ───────────────────────────────────────────────────\n\nconst TanStackDialogForm = lazyField<ComponentProps<typeof TanStackDialogFormType>>(() =>\n import('./components/forms/dialog-form').then(m => ({ default: m.TanStackDialogForm }))\n);\nconst TanStackPopoverForm = lazyField<ComponentProps<typeof TanStackPopoverFormType>>(() =>\n import('./components/forms/popover-form').then(m => ({ default: m.TanStackPopoverForm }))\n);\nconst TanStackContainerForm = lazyField<ComponentProps<typeof TanStackContainerFormType>>(() =>\n import('./components/forms/container-form').then(m => ({ default: m.TanStackContainerForm }))\n);\nconst TanStackSectionForm = lazyField<ComponentProps<typeof TanStackSectionFormType>>(() =>\n import('./components/forms/section-form').then(m => ({ default: m.TanStackSectionForm }))\n);\nconst TanStackCardForm = lazyField<ComponentProps<typeof TanStackCardFormType>>(() =>\n import('./components/forms/card-form').then(m => ({ default: m.TanStackCardForm }))\n);\nconst TanStackFieldGroup = lazyField<ComponentProps<typeof TanStackFieldGroupType>>(() =>\n import('./components/forms/group-field').then(m => ({ default: m.TanStackFieldGroup }))\n);\nconst TanStackTitleField = lazyField<ComponentProps<typeof TanStackTitleFieldType>>(() =>\n import('./components/forms/title-field').then(m => ({ default: m.TanStackTitleField }))\n);\nconst TanStackActionsForm = lazyField<ComponentProps<typeof TanStackActionsFormType>>(() =>\n import('./components/forms/actions-form').then(m => ({ default: m.TanStackActionsForm }))\n);\nconst TanStackActionSubmit = lazyField<ComponentProps<typeof TanStackActionSubmitType>>(() =>\n import('./components/forms/action-submit').then(m => ({ default: m.TanStackActionSubmit }))\n);\n\n// ─── Field UI primitives (lazy) ───────────────────────────────────────────────\n\nconst FieldGroup = lazyField<ComponentProps<typeof FieldGroupType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldGroup })));\nconst Field = lazyField<ComponentProps<typeof FieldType>>(() => import('./components/ui/field').then(m => ({ default: m.Field })));\nconst FieldContent = lazyField<ComponentProps<typeof FieldContentType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldContent })));\nconst FieldLabel = lazyField<ComponentProps<typeof FieldLabelType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldLabel })));\nconst FieldContentMain = lazyField<ComponentProps<typeof FieldContentMainType>>(() =>\n import('./components/ui/field').then(m => ({ default: m.FieldContentMain }))\n);\nconst FieldSeparator = lazyField<ComponentProps<typeof FieldSeparatorType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldSeparator })));\nconst FieldError = lazyField<ComponentProps<typeof FieldErrorType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldError })));\n\n/**\n * Factory result from {@link createFormHook} pre-wired with all Lunas UI field and form components.\n *\n * ### `useTanStackForm`\n * Pre-configured TanStack Form hook that returns a type-safe form instance bound to all Lunas UI\n * field and form components.\n *\n * @example\n * import { useTanStackForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const form = useTanStackForm({\n * defaultValues: { name: '', email: '' },\n * onSubmit: async ({ value }) => console.log(value),\n * });\n *\n * return (\n * <form.Provider>\n * <form.AppForm>\n * <form.AppField name=\"name\" children={(field) => <field.TextField label=\"Name\" />} />\n * <form.Subscribe selector={(s) => s.canSubmit}>\n * {(canSubmit) => <form.TanStackActionSubmit disabled={!canSubmit} />}\n * </form.Subscribe>\n * </form.AppForm>\n * </form.Provider>\n * );\n *\n * ### `withTanStackForm`\n * Higher-order component that wraps a sub-form component with access to the parent\n * `useTanStackForm` form context, enabling isolated field groups that still participate in the\n * top-level form state.\n *\n * @example\n * import { withTanStackForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const AddressFields = withTanStackForm(\n * { street: '', city: '' } as const,\n * ({ form }) => (\n * <>\n * <form.AppField name=\"street\" children={(f) => <f.TextField label=\"Street\" />} />\n * <form.AppField name=\"city\" children={(f) => <f.TextField label=\"City\" />} />\n * </>\n * ),\n * );\n *\n * ### `withTanStackFieldGroup`\n * Higher-order component that creates a reusable field-group component sharing the enclosing\n * `useTanStackForm` context without requiring additional form providers.\n *\n * @example\n * import { withTanStackFieldGroup } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const ContactGroup = withTanStackFieldGroup(({ form }) => (\n * <form.AppField name=\"phone\" children={(f) => <f.TextField label=\"Phone\" />} />\n * ));\n */\nconst {\n useAppForm: useTanStackForm,\n withForm: withTanStackForm,\n withFieldGroup: withTanStackFieldGroup,\n} = createFormHook({\n fieldContext,\n formContext,\n\n fieldComponents: {\n TextField,\n TextareaField,\n TextEditorField,\n NumberField,\n EmailField,\n PasswordField,\n\n SelectField,\n ComboboxField,\n DateField,\n SwitchField,\n RadioGroupField,\n CheckboxField,\n\n SimpleTextField,\n SimpleEmailField,\n SimplePasswordField,\n SimpleTextareaField,\n SimpleNumberField,\n SimpleSelectField,\n SimpleArrayField,\n SimpleBooleanField,\n SimpleComboboxField,\n SimpleDateField,\n SimpleRadioGroupField,\n\n FieldGroup,\n Field,\n FieldContent,\n FieldLabel,\n FieldContentMain,\n FieldSeparator,\n FieldError,\n },\n formComponents: {\n TanStackDialogForm,\n TanStackPopoverForm,\n TanStackContainerForm,\n TanStackSectionForm,\n TanStackCardForm,\n TanStackFieldGroup,\n TanStackTitleField,\n\n TanStackActionsForm,\n TanStackActionSubmit,\n\n ArrayCol,\n ArrayHeaderRow,\n },\n});\n\nexport {\n // Array helpers\n ArrayCol,\n ArrayHeaderRow,\n CheckboxField,\n ComboboxField,\n DateField,\n EmailField,\n Field,\n FieldContent,\n FieldContentMain,\n FieldError,\n // Field UI primitives\n FieldGroup,\n FieldLabel,\n FieldSeparator,\n NumberField,\n PasswordField,\n RadioGroupField,\n SelectField,\n SimpleArrayField,\n SimpleBooleanField,\n SimpleComboboxField,\n SimpleDateField,\n SimpleEmailField,\n SimpleNumberField,\n SimplePasswordField,\n SimpleRadioGroupField,\n SimpleSelectField,\n SimpleTextareaField,\n // Simple (minimal) field components\n SimpleTextField,\n SwitchField,\n TanStackActionSubmit,\n // Form actions\n TanStackActionsForm,\n TanStackCardForm,\n TanStackContainerForm,\n // Form containers\n TanStackDialogForm,\n TanStackFieldGroup,\n TanStackPopoverForm,\n TanStackSectionForm,\n TanStackTitleField,\n TextareaField,\n TextEditorField,\n // Rich field components\n TextField,\n useTanStackFieldContext,\n // Hooks & HOCs\n useTanStackForm,\n useTanStackFormContext,\n withTanStackFieldGroup,\n withTanStackForm,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Skeleton as e}from"./ui/skeleton.mjs";import{Suspense as t,lazy as n}from"react";import{jsx as r}from"react/jsx-runtime";import{createFormHook as i,createFormHookContexts as a}from"@tanstack/react-form";const{fieldContext:o,formContext:s,useFieldContext:c,useFormContext:l}=a();function u(){return r(e,{"data-slot":`tanstack-field-skeleton`,className:`h-9 w-full rounded`})}function d(e){let i=n(e);return e=>r(t,{fallback:r(u,{}),children:r(i,{...e})})}const f=d(()=>import(`./text-field-B67oTV62.mjs`).then(e=>({default:e.TextField}))),p=d(()=>import(`./textarea-field-D70rGYIk.mjs`).then(e=>({default:e.TextareaField}))),m=d(()=>import(`./text-editor-field-fso-sw29.mjs`).then(e=>({default:e.TextEditorField}))),h=d(()=>import(`./number-field-BjVjf6s4.mjs`).then(e=>({default:e.NumberField}))),g=d(()=>import(`./email-field-BtcdBWL4.mjs`).then(e=>({default:e.EmailField}))),_=d(()=>import(`./password-field-C5FsQUa8.mjs`).then(e=>({default:e.PasswordField}))),v=d(()=>import(`./select-field-Kq5iQCRQ.mjs`).then(e=>({default:e.SelectField}))),y=d(()=>import(`./combobox-field-D6fiCcvU.mjs`).then(e=>({default:e.ComboboxField}))),b=d(()=>import(`./date-field-Cxbrc0Vl.mjs`).then(e=>({default:e.DateField}))),x=d(()=>import(`./switch-field-CIoNsRWN.mjs`).then(e=>({default:e.SwitchField}))),S=d(()=>import(`./radio-group-field-ZqMrf9Dx.mjs`).then(e=>({default:e.RadioGroupField}))),C=d(()=>import(`./checkbox-field-FqCe38_D.mjs`).then(e=>({default:e.CheckboxField}))),w=d(()=>import(`./simple-text-field-D8jyznSd.mjs`).then(e=>({default:e.SimpleTextField}))),T=d(()=>import(`./simple-email-field-98w0846B.mjs`).then(e=>({default:e.SimpleEmailField}))),E=d(()=>import(`./simple-password-field-CuC10c70.mjs`).then(e=>({default:e.SimplePasswordField}))),D=d(()=>import(`./simple-textarea-field-p9qX_n7m.mjs`).then(e=>({default:e.SimpleTextareaField}))),O=d(()=>import(`./simple-number-field-zF3oqS8d.mjs`).then(e=>({default:e.SimpleNumberField}))),k=d(()=>import(`./simple-select-field-DIaxhi1-.mjs`).then(e=>({default:e.SimpleSelectField}))),A=n(()=>import(`./simple-array-field-C5XdemXa.mjs`).then(e=>({default:e.SimpleArrayField})));function j(e){return r(t,{fallback:r(u,{}),children:r(A,{...e})})}const M=d(()=>import(`./simple-boolean-field-DpJ-fSQk.mjs`).then(e=>({default:e.SimpleBooleanField}))),N=d(()=>import(`./simple-combobox-field-Ch4SBHCH.mjs`).then(e=>({default:e.SimpleComboboxField}))),P=d(()=>import(`./simple-date-field-CVKqIrEs.mjs`).then(e=>({default:e.SimpleDateField}))),F=d(()=>import(`./simple-radio-group-field-CfziNlLf.mjs`).then(e=>({default:e.SimpleRadioGroupField}))),I=d(()=>import(`./simple-array-field-C5XdemXa.mjs`).then(e=>({default:e.ArrayCol}))),L=d(()=>import(`./simple-array-field-C5XdemXa.mjs`).then(e=>({default:e.ArrayHeaderRow}))),R=d(()=>import(`./dialog-form-C0W5C0u9.mjs`).then(e=>({default:e.TanStackDialogForm}))),z=d(()=>import(`./popover-form-B2taDBAh.mjs`).then(e=>({default:e.TanStackPopoverForm}))),B=d(()=>import(`./container-form-BdsEX0NH.mjs`).then(e=>({default:e.TanStackContainerForm}))),V=d(()=>import(`./section-form-B_AZr7jZ.mjs`).then(e=>({default:e.TanStackSectionForm}))),H=d(()=>import(`./card-form-D9fNO-6F.mjs`).then(e=>({default:e.TanStackCardForm}))),U=d(()=>import(`./group-field-bviEXmo4.mjs`).then(e=>({default:e.TanStackFieldGroup}))),W=d(()=>import(`./title-field-84EnHPvl.mjs`).then(e=>({default:e.TanStackTitleField}))),G=d(()=>import(`./actions-form-QdAsKwcQ.mjs`).then(e=>({default:e.TanStackActionsForm}))),K=d(()=>import(`./action-submit-SviPJW3i.mjs`).then(e=>({default:e.TanStackActionSubmit}))),q=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldGroup}))),J=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.Field}))),Y=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldContent}))),X=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldLabel}))),Z=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldContentMain}))),Q=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldSeparator}))),$=d(()=>import(`./field-BKyUqvzh.mjs`).then(e=>({default:e.FieldError}))),{useAppForm:ee,withForm:te,withFieldGroup:ne}=i({fieldContext:o,formContext:s,fieldComponents:{TextField:f,TextareaField:p,TextEditorField:m,NumberField:h,EmailField:g,PasswordField:_,SelectField:v,ComboboxField:y,DateField:b,SwitchField:x,RadioGroupField:S,CheckboxField:C,SimpleTextField:w,SimpleEmailField:T,SimplePasswordField:E,SimpleTextareaField:D,SimpleNumberField:O,SimpleSelectField:k,SimpleArrayField:j,SimpleBooleanField:M,SimpleComboboxField:N,SimpleDateField:P,SimpleRadioGroupField:F,FieldGroup:q,Field:J,FieldContent:Y,FieldLabel:X,FieldContentMain:Z,FieldSeparator:Q,FieldError:$},formComponents:{TanStackDialogForm:R,TanStackPopoverForm:z,TanStackContainerForm:B,TanStackSectionForm:V,TanStackCardForm:H,TanStackFieldGroup:U,TanStackTitleField:W,TanStackActionsForm:G,TanStackActionSubmit:K,ArrayCol:I,ArrayHeaderRow:L}});export{K as A,f as B,O as C,w as D,k as E,U as F,c as G,ee as H,z as I,l as K,V as L,H as M,B as N,D as O,R as P,W as R,T as S,F as T,ne as U,p as V,te as W,v as _,b as a,N as b,Y as c,q as d,X as f,S as g,_ as h,y as i,G as j,x as k,Z as l,h as m,L as n,g as o,Q as p,C as r,J as s,I as t,$ as u,j as v,E as w,P as x,M as y,m as z};
|
|
2
|
+
//# sourceMappingURL=tanstack-form-PC9YNeeo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-form-PC9YNeeo.mjs","names":["Impl"],"sources":["../packages/components/features/tanstack-form/components/form-context.ts","../packages/components/features/tanstack-form/tanstack-form.tsx"],"sourcesContent":["'use client';\n\nimport { createFormHookContexts } from '@tanstack/react-form';\n\n/**\n * Shared field/form contexts, split out from `tanstack-form.tsx` so that field and form\n * components can depend on them directly instead of importing back through the file that\n * lazy-loads those same components (which would reintroduce a circular import).\n */\nexport const { fieldContext, formContext, useFieldContext: useTanStackFieldContext, useFormContext: useTanStackFormContext } = createFormHookContexts();\n","'use client';\n\nimport type { ComponentProps, ComponentType } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport { createFormHook } from '@tanstack/react-form';\n\nimport { Skeleton } from '@/components/ui/skeleton';\n\nimport type { ArrayCol as ArrayColType, ArrayHeaderRow as ArrayHeaderRowType, SimpleArrayFieldProps } from './components/atoms/simple-array-field';\nimport type { SimpleBooleanField as SimpleBooleanFieldType } from './components/atoms/simple-boolean-field';\nimport type { SimpleComboboxField as SimpleComboboxFieldType } from './components/atoms/simple-combobox-field';\nimport type { SimpleDateField as SimpleDateFieldType } from './components/atoms/simple-date-field';\nimport type { SimpleEmailField as SimpleEmailFieldType } from './components/atoms/simple-email-field';\nimport type { SimpleNumberField as SimpleNumberFieldType } from './components/atoms/simple-number-field';\nimport type { SimplePasswordField as SimplePasswordFieldType } from './components/atoms/simple-password-field';\nimport type { SimpleRadioGroupField as SimpleRadioGroupFieldType } from './components/atoms/simple-radio-group-field';\nimport type { SimpleSelectField as SimpleSelectFieldType } from './components/atoms/simple-select-field';\nimport type { SimpleTextField as SimpleTextFieldType } from './components/atoms/simple-text-field';\nimport type { SimpleTextareaField as SimpleTextareaFieldType } from './components/atoms/simple-textarea-field';\nimport type { CheckboxField as CheckboxFieldType } from './components/fields/checkbox-field';\nimport type { ComboboxField as ComboboxFieldType } from './components/fields/combobox-field';\nimport type { DateField as DateFieldType } from './components/fields/date-field';\nimport type { EmailField as EmailFieldType } from './components/fields/email-field';\nimport type { NumberField as NumberFieldType } from './components/fields/number-field';\nimport type { PasswordField as PasswordFieldType } from './components/fields/password-field';\nimport type { RadioGroupField as RadioGroupFieldType } from './components/fields/radio-group-field';\nimport type { SelectField as SelectFieldType } from './components/fields/select-field';\nimport type { SwitchField as SwitchFieldType } from './components/fields/switch-field';\nimport type { TextEditorField as TextEditorFieldType } from './components/fields/text-editor-field';\nimport type { TextField as TextFieldType } from './components/fields/text-field';\nimport type { TextareaField as TextareaFieldType } from './components/fields/textarea-field';\nimport { fieldContext, formContext, useTanStackFieldContext, useTanStackFormContext } from './components/form-context';\nimport type { TanStackActionSubmit as TanStackActionSubmitType } from './components/forms/action-submit';\nimport type { TanStackActionsForm as TanStackActionsFormType } from './components/forms/actions-form';\nimport type { TanStackCardForm as TanStackCardFormType } from './components/forms/card-form';\nimport type { TanStackContainerForm as TanStackContainerFormType } from './components/forms/container-form';\nimport type { TanStackDialogForm as TanStackDialogFormType } from './components/forms/dialog-form';\nimport type { TanStackFieldGroup as TanStackFieldGroupType } from './components/forms/group-field';\nimport type { TanStackPopoverForm as TanStackPopoverFormType } from './components/forms/popover-form';\nimport type { TanStackSectionForm as TanStackSectionFormType } from './components/forms/section-form';\nimport type { TanStackTitleField as TanStackTitleFieldType } from './components/forms/title-field';\nimport type {\n FieldContentMain as FieldContentMainType,\n FieldContent as FieldContentType,\n FieldError as FieldErrorType,\n FieldGroup as FieldGroupType,\n FieldLabel as FieldLabelType,\n FieldSeparator as FieldSeparatorType,\n Field as FieldType,\n} from './components/ui/field';\n\n/** Input-shaped pulse placeholder shown while a lazy field/form chunk is still loading. */\nfunction FieldSkeleton() {\n return <Skeleton data-slot=\"tanstack-field-skeleton\" className=\"h-9 w-full rounded\" />;\n}\n\n/**\n * Wraps a `lazy()`-loaded component in its own `Suspense` boundary so it can be dropped\n * anywhere (inside or outside our own form containers) without callers needing to set up\n * Suspense themselves. Keeps this file itself small — the heavy per-field-type\n * implementations (Radix Select/Combobox/date-picker, the rich text editor, etc.) only load\n * when a form actually renders that field type.\n */\nfunction lazyField<P extends object>(loader: () => Promise<{ default: ComponentType<P> }>): ComponentType<P> {\n const LazyComponent = lazy(loader);\n return (props: P) => (\n <Suspense fallback={<FieldSkeleton />}>\n <LazyComponent {...props} />\n </Suspense>\n );\n}\n\n// ─── Rich field components (lazy) ─────────────────────────────────────────────\n\nconst TextField = lazyField<ComponentProps<typeof TextFieldType>>(() => import('./components/fields/text-field').then(m => ({ default: m.TextField })));\nconst TextareaField = lazyField<ComponentProps<typeof TextareaFieldType>>(() =>\n import('./components/fields/textarea-field').then(m => ({ default: m.TextareaField }))\n);\nconst TextEditorField = lazyField<ComponentProps<typeof TextEditorFieldType>>(() =>\n import('./components/fields/text-editor-field').then(m => ({ default: m.TextEditorField }))\n);\nconst NumberField = lazyField<ComponentProps<typeof NumberFieldType>>(() => import('./components/fields/number-field').then(m => ({ default: m.NumberField })));\nconst EmailField = lazyField<ComponentProps<typeof EmailFieldType>>(() => import('./components/fields/email-field').then(m => ({ default: m.EmailField })));\nconst PasswordField = lazyField<ComponentProps<typeof PasswordFieldType>>(() =>\n import('./components/fields/password-field').then(m => ({ default: m.PasswordField }))\n);\nconst SelectField = lazyField<ComponentProps<typeof SelectFieldType>>(() => import('./components/fields/select-field').then(m => ({ default: m.SelectField })));\nconst ComboboxField = lazyField<ComponentProps<typeof ComboboxFieldType>>(() =>\n import('./components/fields/combobox-field').then(m => ({ default: m.ComboboxField }))\n);\nconst DateField = lazyField<ComponentProps<typeof DateFieldType>>(() => import('./components/fields/date-field').then(m => ({ default: m.DateField })));\nconst SwitchField = lazyField<ComponentProps<typeof SwitchFieldType>>(() => import('./components/fields/switch-field').then(m => ({ default: m.SwitchField })));\nconst RadioGroupField = lazyField<ComponentProps<typeof RadioGroupFieldType>>(() =>\n import('./components/fields/radio-group-field').then(m => ({ default: m.RadioGroupField }))\n);\nconst CheckboxField = lazyField<ComponentProps<typeof CheckboxFieldType>>(() =>\n import('./components/fields/checkbox-field').then(m => ({ default: m.CheckboxField }))\n);\n\n// ─── Simple (minimal) field components (lazy) ─────────────────────────────────\n\nconst SimpleTextField = lazyField<ComponentProps<typeof SimpleTextFieldType>>(() =>\n import('./components/atoms/simple-text-field').then(m => ({ default: m.SimpleTextField }))\n);\nconst SimpleEmailField = lazyField<ComponentProps<typeof SimpleEmailFieldType>>(() =>\n import('./components/atoms/simple-email-field').then(m => ({ default: m.SimpleEmailField }))\n);\nconst SimplePasswordField = lazyField<ComponentProps<typeof SimplePasswordFieldType>>(() =>\n import('./components/atoms/simple-password-field').then(m => ({ default: m.SimplePasswordField }))\n);\nconst SimpleTextareaField = lazyField<ComponentProps<typeof SimpleTextareaFieldType>>(() =>\n import('./components/atoms/simple-textarea-field').then(m => ({ default: m.SimpleTextareaField }))\n);\nconst SimpleNumberField = lazyField<ComponentProps<typeof SimpleNumberFieldType>>(() =>\n import('./components/atoms/simple-number-field').then(m => ({ default: m.SimpleNumberField }))\n);\nconst SimpleSelectField = lazyField<ComponentProps<typeof SimpleSelectFieldType>>(() =>\n import('./components/atoms/simple-select-field').then(m => ({ default: m.SimpleSelectField }))\n);\nconst LazySimpleArrayField = lazy(() =>\n import('./components/atoms/simple-array-field').then(m => ({ default: m.SimpleArrayField as ComponentType<SimpleArrayFieldProps<unknown>> }))\n);\n\n/** Kept as its own generic wrapper (instead of `lazyField`) so callers can still write `<SimpleArrayField<Row> />`. */\nfunction SimpleArrayField<T>(props: SimpleArrayFieldProps<T>) {\n const Impl = LazySimpleArrayField as ComponentType<SimpleArrayFieldProps<T>>;\n return (\n <Suspense fallback={<FieldSkeleton />}>\n <Impl {...props} />\n </Suspense>\n );\n}\n\nconst SimpleBooleanField = lazyField<ComponentProps<typeof SimpleBooleanFieldType>>(() =>\n import('./components/atoms/simple-boolean-field').then(m => ({ default: m.SimpleBooleanField }))\n);\nconst SimpleComboboxField = lazyField<ComponentProps<typeof SimpleComboboxFieldType>>(() =>\n import('./components/atoms/simple-combobox-field').then(m => ({ default: m.SimpleComboboxField }))\n);\nconst SimpleDateField = lazyField<ComponentProps<typeof SimpleDateFieldType>>(() =>\n import('./components/atoms/simple-date-field').then(m => ({ default: m.SimpleDateField }))\n);\nconst SimpleRadioGroupField = lazyField<ComponentProps<typeof SimpleRadioGroupFieldType>>(() =>\n import('./components/atoms/simple-radio-group-field').then(m => ({ default: m.SimpleRadioGroupField }))\n);\n\n// ─── Array field layout helpers (lazy, co-located with SimpleArrayField) ──────\n\nconst ArrayCol = lazyField<ComponentProps<typeof ArrayColType>>(() => import('./components/atoms/simple-array-field').then(m => ({ default: m.ArrayCol })));\nconst ArrayHeaderRow = lazyField<ComponentProps<typeof ArrayHeaderRowType>>(() =>\n import('./components/atoms/simple-array-field').then(m => ({ default: m.ArrayHeaderRow }))\n);\n\n// ─── Form containers (lazy) ───────────────────────────────────────────────────\n\nconst TanStackDialogForm = lazyField<ComponentProps<typeof TanStackDialogFormType>>(() =>\n import('./components/forms/dialog-form').then(m => ({ default: m.TanStackDialogForm }))\n);\nconst TanStackPopoverForm = lazyField<ComponentProps<typeof TanStackPopoverFormType>>(() =>\n import('./components/forms/popover-form').then(m => ({ default: m.TanStackPopoverForm }))\n);\nconst TanStackContainerForm = lazyField<ComponentProps<typeof TanStackContainerFormType>>(() =>\n import('./components/forms/container-form').then(m => ({ default: m.TanStackContainerForm }))\n);\nconst TanStackSectionForm = lazyField<ComponentProps<typeof TanStackSectionFormType>>(() =>\n import('./components/forms/section-form').then(m => ({ default: m.TanStackSectionForm }))\n);\nconst TanStackCardForm = lazyField<ComponentProps<typeof TanStackCardFormType>>(() =>\n import('./components/forms/card-form').then(m => ({ default: m.TanStackCardForm }))\n);\nconst TanStackFieldGroup = lazyField<ComponentProps<typeof TanStackFieldGroupType>>(() =>\n import('./components/forms/group-field').then(m => ({ default: m.TanStackFieldGroup }))\n);\nconst TanStackTitleField = lazyField<ComponentProps<typeof TanStackTitleFieldType>>(() =>\n import('./components/forms/title-field').then(m => ({ default: m.TanStackTitleField }))\n);\nconst TanStackActionsForm = lazyField<ComponentProps<typeof TanStackActionsFormType>>(() =>\n import('./components/forms/actions-form').then(m => ({ default: m.TanStackActionsForm }))\n);\nconst TanStackActionSubmit = lazyField<ComponentProps<typeof TanStackActionSubmitType>>(() =>\n import('./components/forms/action-submit').then(m => ({ default: m.TanStackActionSubmit }))\n);\n\n// ─── Field UI primitives (lazy) ───────────────────────────────────────────────\n\nconst FieldGroup = lazyField<ComponentProps<typeof FieldGroupType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldGroup })));\nconst Field = lazyField<ComponentProps<typeof FieldType>>(() => import('./components/ui/field').then(m => ({ default: m.Field })));\nconst FieldContent = lazyField<ComponentProps<typeof FieldContentType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldContent })));\nconst FieldLabel = lazyField<ComponentProps<typeof FieldLabelType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldLabel })));\nconst FieldContentMain = lazyField<ComponentProps<typeof FieldContentMainType>>(() =>\n import('./components/ui/field').then(m => ({ default: m.FieldContentMain }))\n);\nconst FieldSeparator = lazyField<ComponentProps<typeof FieldSeparatorType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldSeparator })));\nconst FieldError = lazyField<ComponentProps<typeof FieldErrorType>>(() => import('./components/ui/field').then(m => ({ default: m.FieldError })));\n\n/**\n * Factory result from {@link createFormHook} pre-wired with all Lunas UI field and form components.\n *\n * ### `useTanStackForm`\n * Pre-configured TanStack Form hook that returns a type-safe form instance bound to all Lunas UI\n * field and form components.\n *\n * @example\n * import { useTanStackForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const form = useTanStackForm({\n * defaultValues: { name: '', email: '' },\n * onSubmit: async ({ value }) => console.log(value),\n * });\n *\n * return (\n * <form.Provider>\n * <form.AppForm>\n * <form.AppField name=\"name\" children={(field) => <field.TextField label=\"Name\" />} />\n * <form.Subscribe selector={(s) => s.canSubmit}>\n * {(canSubmit) => <form.TanStackActionSubmit disabled={!canSubmit} />}\n * </form.Subscribe>\n * </form.AppForm>\n * </form.Provider>\n * );\n *\n * ### `withTanStackForm`\n * Higher-order component that wraps a sub-form component with access to the parent\n * `useTanStackForm` form context, enabling isolated field groups that still participate in the\n * top-level form state.\n *\n * @example\n * import { withTanStackForm } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const AddressFields = withTanStackForm(\n * { street: '', city: '' } as const,\n * ({ form }) => (\n * <>\n * <form.AppField name=\"street\" children={(f) => <f.TextField label=\"Street\" />} />\n * <form.AppField name=\"city\" children={(f) => <f.TextField label=\"City\" />} />\n * </>\n * ),\n * );\n *\n * ### `withTanStackFieldGroup`\n * Higher-order component that creates a reusable field-group component sharing the enclosing\n * `useTanStackForm` context without requiring additional form providers.\n *\n * @example\n * import { withTanStackFieldGroup } from '@customafk/lunas-ui/features/tanstack-form';\n *\n * const ContactGroup = withTanStackFieldGroup(({ form }) => (\n * <form.AppField name=\"phone\" children={(f) => <f.TextField label=\"Phone\" />} />\n * ));\n */\nconst {\n useAppForm: useTanStackForm,\n withForm: withTanStackForm,\n withFieldGroup: withTanStackFieldGroup,\n} = createFormHook({\n fieldContext,\n formContext,\n\n fieldComponents: {\n TextField,\n TextareaField,\n TextEditorField,\n NumberField,\n EmailField,\n PasswordField,\n\n SelectField,\n ComboboxField,\n DateField,\n SwitchField,\n RadioGroupField,\n CheckboxField,\n\n SimpleTextField,\n SimpleEmailField,\n SimplePasswordField,\n SimpleTextareaField,\n SimpleNumberField,\n SimpleSelectField,\n SimpleArrayField,\n SimpleBooleanField,\n SimpleComboboxField,\n SimpleDateField,\n SimpleRadioGroupField,\n\n FieldGroup,\n Field,\n FieldContent,\n FieldLabel,\n FieldContentMain,\n FieldSeparator,\n FieldError,\n },\n formComponents: {\n TanStackDialogForm,\n TanStackPopoverForm,\n TanStackContainerForm,\n TanStackSectionForm,\n TanStackCardForm,\n TanStackFieldGroup,\n TanStackTitleField,\n\n TanStackActionsForm,\n TanStackActionSubmit,\n\n ArrayCol,\n ArrayHeaderRow,\n },\n});\n\nexport {\n // Array helpers\n ArrayCol,\n ArrayHeaderRow,\n CheckboxField,\n ComboboxField,\n DateField,\n EmailField,\n Field,\n FieldContent,\n FieldContentMain,\n FieldError,\n // Field UI primitives\n FieldGroup,\n FieldLabel,\n FieldSeparator,\n NumberField,\n PasswordField,\n RadioGroupField,\n SelectField,\n SimpleArrayField,\n SimpleBooleanField,\n SimpleComboboxField,\n SimpleDateField,\n SimpleEmailField,\n SimpleNumberField,\n SimplePasswordField,\n SimpleRadioGroupField,\n SimpleSelectField,\n SimpleTextareaField,\n // Simple (minimal) field components\n SimpleTextField,\n SwitchField,\n TanStackActionSubmit,\n // Form actions\n TanStackActionsForm,\n TanStackCardForm,\n TanStackContainerForm,\n // Form containers\n TanStackDialogForm,\n TanStackFieldGroup,\n TanStackPopoverForm,\n TanStackSectionForm,\n TanStackTitleField,\n TextareaField,\n TextEditorField,\n // Rich field components\n TextField,\n useTanStackFieldContext,\n // Hooks & HOCs\n useTanStackForm,\n useTanStackFormContext,\n withTanStackFieldGroup,\n withTanStackForm,\n};\n"],"mappings":"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"}
|