@customafk/lunas-ui 0.2.75 → 0.2.76
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 → FeatureDeveloping-DRmYHj91.d.cts} +2 -9
- package/dist/{FeatureDeveloping-zuTTDIh_.d.mts → FeatureDeveloping-DRmYHj91.d.mts} +2 -9
- package/dist/{FeatureFixing-DYQlgHPk.d.cts → FeatureFixing-BHHCDtAQ.d.cts} +2 -9
- package/dist/{FeatureFixing-DYQlgHPk.d.mts → FeatureFixing-BHHCDtAQ.d.mts} +2 -9
- package/dist/{LoginPage-vMXvwtxf.d.cts → LoginPage-DDljzV6A.d.cts} +2 -12
- package/dist/{LoginPage-vMXvwtxf.d.mts → LoginPage-DDljzV6A.d.mts} +2 -12
- package/dist/{NotAuthorized-CZIQ6EaA.d.cts → NotAuthorized-DTT57OHb.d.cts} +2 -9
- package/dist/{NotAuthorized-CZIQ6EaA.d.mts → NotAuthorized-DTT57OHb.d.mts} +2 -9
- package/dist/{NotFound-CRSKxhV8.d.cts → NotFound-BeUB1yus.d.cts} +2 -9
- package/dist/{NotFound-CRSKxhV8.d.mts → NotFound-BeUB1yus.d.mts} +2 -9
- package/dist/{RegisterPage-BBtpEzvL.d.cts → RegisterPage-LuTuV7Sw.d.cts} +2 -11
- package/dist/{RegisterPage-BBtpEzvL.d.mts → RegisterPage-LuTuV7Sw.d.mts} +2 -11
- package/dist/{VerifyEmailPage-CsmIeYLu.d.cts → VerifyEmailPage-5DFlEkk3.d.cts} +2 -14
- package/dist/{VerifyEmailPage-CsmIeYLu.d.mts → VerifyEmailPage-5DFlEkk3.d.mts} +2 -14
- package/dist/{action-submit-ScN29AQ1.mjs → action-submit-DVNxnW4-.mjs} +2 -2
- package/dist/{action-submit-ScN29AQ1.mjs.map → action-submit-DVNxnW4-.mjs.map} +1 -1
- package/dist/{action-submit-DI590CG3.cjs → action-submit-kYjq-iPD.cjs} +2 -2
- package/dist/{action-submit-DI590CG3.cjs.map → action-submit-kYjq-iPD.cjs.map} +1 -1
- package/dist/{actions-form-CNW4nhAP.cjs → actions-form-CwicJU89.cjs} +2 -2
- package/dist/{actions-form-CNW4nhAP.cjs.map → actions-form-CwicJU89.cjs.map} +1 -1
- package/dist/{actions-form-f8sejItb.mjs → actions-form-DRrkiGzh.mjs} +2 -2
- package/dist/{actions-form-f8sejItb.mjs.map → actions-form-DRrkiGzh.mjs.map} +1 -1
- package/dist/activity-heatmap-chart-DufvFndI.mjs.map +1 -1
- package/dist/activity-heatmap-chart-gDcvIAK_.cjs.map +1 -1
- package/dist/{add-new-DkBwXh0Q.d.cts → add-new-CHYPSC1G.d.cts} +3 -2
- package/dist/{add-new-DkBwXh0Q.d.mts → add-new-CHYPSC1G.d.mts} +3 -2
- package/dist/{alert-Bip5XjBw.d.cts → alert-C8wdckO8.d.cts} +4 -19
- package/dist/{alert-Bip5XjBw.d.mts → alert-C8wdckO8.d.mts} +4 -19
- package/dist/alert-D31c6DLq.cjs.map +1 -1
- package/dist/alert-OD1KJTEV.mjs.map +1 -1
- package/dist/{alert-dialog-Cdhz7jSj.d.cts → alert-dialog-8aDimwPK.d.cts} +12 -43
- package/dist/{alert-dialog-Cdhz7jSj.d.mts → alert-dialog-8aDimwPK.d.mts} +12 -43
- package/dist/analysis-panel-BqZmOU58.mjs.map +1 -1
- package/dist/analysis-panel-CQZ0hmfN.cjs.map +1 -1
- package/dist/{aspect-ratio-huscluwJ.d.cts → aspect-ratio-DqXWkGJQ.d.cts} +2 -6
- package/dist/{aspect-ratio-huscluwJ.d.mts → aspect-ratio-DqXWkGJQ.d.mts} +2 -6
- package/dist/avatar-name-display-BrpnTqa_.mjs.map +1 -1
- package/dist/avatar-name-display-CLi1DJUs.cjs.map +1 -1
- package/dist/{avatar-BpeFwSkQ.d.cts → avatar-yN3dNBsZ.d.cts} +4 -14
- package/dist/{avatar-BpeFwSkQ.d.mts → avatar-yN3dNBsZ.d.mts} +4 -14
- package/dist/{badge-MRT40pxM.d.cts → badge-BPiU1Ss2.d.cts} +2 -10
- package/dist/{badge-MRT40pxM.d.mts → badge-BPiU1Ss2.d.mts} +2 -10
- package/dist/badge-display-DmCKpGk9.cjs.map +1 -1
- package/dist/badge-display-RP5VTE10.mjs.map +1 -1
- package/dist/{breadcrumb-CSpScKZm.d.cts → breadcrumb-DEFTnz90.d.cts} +8 -31
- package/dist/{breadcrumb-CSpScKZm.d.mts → breadcrumb-DEFTnz90.d.mts} +8 -31
- package/dist/{button-Bk4Y6_9I.d.cts → button-BnoPktln.d.cts} +2 -15
- package/dist/{button-Bk4Y6_9I.d.mts → button-BnoPktln.d.mts} +2 -15
- package/dist/{button-group-Cd5m5G3p.d.mts → button-group-BTYrTSxc.d.cts} +6 -19
- package/dist/{button-group-CiKhLVCg.d.cts → button-group-CMz9WD27.d.mts} +6 -19
- package/dist/{calendar-DPKt7D3w.d.mts → calendar-BkV5hTX2.d.mts} +6 -21
- package/dist/{calendar-stv2bJv0.d.cts → calendar-iDMPT1kI.d.cts} +6 -21
- package/dist/candlestick-chart-CiBiCU3y.mjs.map +1 -1
- package/dist/candlestick-chart-CqmRkfXj.cjs.map +1 -1
- package/dist/{card-DOnx7RKz.d.cts → card-C7jG9mCZ.d.cts} +8 -29
- package/dist/{card-DOnx7RKz.d.mts → card-C7jG9mCZ.d.mts} +8 -29
- package/dist/card-form-BR5kDTzB.cjs.map +1 -1
- package/dist/card-form-D9fNO-6F.mjs.map +1 -1
- package/dist/cards/grid-product-card.cjs.map +1 -1
- package/dist/cards/grid-product-card.d.cts +1 -1
- package/dist/cards/grid-product-card.d.mts +1 -1
- package/dist/cards/grid-product-card.mjs.map +1 -1
- package/dist/cards/product-card.cjs.map +1 -1
- package/dist/cards/product-card.d.cts +1 -1
- package/dist/cards/product-card.d.mts +1 -1
- package/dist/cards/product-card.mjs.map +1 -1
- package/dist/cards/simple-card.d.cts +1 -1
- package/dist/cards/simple-card.d.mts +1 -1
- package/dist/{carousel-CV3IZ96x.d.mts → carousel-D7VXWJ3S.d.mts} +7 -32
- package/dist/{carousel-c2XuzmYN.d.cts → carousel-bBvM31sh.d.cts} +7 -32
- package/dist/{chart-sYFksFMk.d.cts → chart-D8tNf0_6.d.cts} +6 -36
- package/dist/{chart-sYFksFMk.d.mts → chart-D8tNf0_6.d.mts} +6 -36
- package/dist/{checkbox-XfLNnG0S.d.cts → checkbox-Cuc-_UcF.d.cts} +2 -6
- package/dist/{checkbox-XfLNnG0S.d.mts → checkbox-Cuc-_UcF.d.mts} +2 -6
- package/dist/{checkbox-field-Csro0Nla.mjs → checkbox-field-BN3Vd9qq.mjs} +2 -2
- package/dist/{checkbox-field-Csro0Nla.mjs.map → checkbox-field-BN3Vd9qq.mjs.map} +1 -1
- package/dist/{checkbox-field-Ck_VADFe.cjs → checkbox-field-DBUjQC_4.cjs} +2 -2
- package/dist/{checkbox-field-Ck_VADFe.cjs.map → checkbox-field-DBUjQC_4.cjs.map} +1 -1
- package/dist/close-BYHgEZvZ.cjs.map +1 -1
- package/dist/close-DYJZ8fkh.mjs.map +1 -1
- package/dist/cms-layout-Cr0FjyGt.cjs +2 -0
- package/dist/cms-layout-Cr0FjyGt.cjs.map +1 -0
- package/dist/cms-layout-pnkDb9PY.mjs +2 -0
- package/dist/cms-layout-pnkDb9PY.mjs.map +1 -0
- package/dist/{collapsible-liIHmFuw.d.cts → collapsible-D3MS6pMC.d.cts} +4 -11
- package/dist/{collapsible-liIHmFuw.d.mts → collapsible-D3MS6pMC.d.mts} +4 -11
- package/dist/combobox-BFLmuV4w.d.cts +120 -0
- package/dist/combobox-C64Rvd7n.mjs +2 -0
- package/dist/combobox-C64Rvd7n.mjs.map +1 -0
- package/dist/{combobox-field-Bxrct4lA.cjs → combobox-field-BE9miJ3D.cjs} +2 -2
- package/dist/{combobox-field-Bxrct4lA.cjs.map → combobox-field-BE9miJ3D.cjs.map} +1 -1
- package/dist/{combobox-field-BMfA_taQ.mjs → combobox-field-Bug1qI5B.mjs} +2 -2
- package/dist/{combobox-field-BMfA_taQ.mjs.map → combobox-field-Bug1qI5B.mjs.map} +1 -1
- package/dist/combobox-kp_kPY8o.cjs +2 -0
- package/dist/combobox-kp_kPY8o.cjs.map +1 -0
- package/dist/combobox-wOpqEFBq.d.mts +120 -0
- package/dist/{command-Bb6SneVI.d.mts → command-BM9cIuFp.d.cts} +11 -42
- package/dist/{command-CHSJVU9o.d.cts → command-DLnIGYou.d.mts} +11 -42
- package/dist/{context-menu-BOlGSuep.d.cts → context-menu-z_-DdL8k.d.cts} +16 -64
- package/dist/{context-menu-BOlGSuep.d.mts → context-menu-z_-DdL8k.d.mts} +16 -64
- package/dist/conversion-funnel-chart-CW_zDfKS.mjs.map +1 -1
- package/dist/conversion-funnel-chart-r2m2QbiQ.cjs.map +1 -1
- package/dist/correlation-scatter-chart-Djtt7NU7.mjs.map +1 -1
- package/dist/correlation-scatter-chart-HF48YUIB.cjs.map +1 -1
- package/dist/{country-C8QijcHF.d.mts → country-8m51pdnj.d.mts} +3 -3
- package/dist/{country-CJIaO0I7.d.cts → country-BPlbbV9W.d.cts} +3 -3
- package/dist/currency-display-Buxc6Ph5.cjs.map +1 -1
- package/dist/currency-display-CEg_HRYv.mjs.map +1 -1
- package/dist/data-display/country.cjs.map +1 -1
- package/dist/data-display/country.d.cts +1 -1
- package/dist/data-display/country.d.mts +1 -1
- package/dist/data-display/country.mjs.map +1 -1
- package/dist/data-display/data-list.cjs.map +1 -1
- package/dist/data-display/data-list.d.cts +1 -1
- package/dist/data-display/data-list.d.mts +1 -1
- package/dist/data-display/data-list.mjs.map +1 -1
- package/dist/data-display/date-tooltip.cjs.map +1 -1
- package/dist/data-display/date-tooltip.d.cts +1 -1
- package/dist/data-display/date-tooltip.d.mts +1 -1
- package/dist/data-display/date-tooltip.mjs.map +1 -1
- package/dist/data-display/empty.cjs.map +1 -1
- package/dist/data-display/empty.d.cts +1 -1
- package/dist/data-display/empty.d.mts +1 -1
- package/dist/data-display/empty.mjs.map +1 -1
- package/dist/data-display/name.cjs.map +1 -1
- package/dist/data-display/name.d.cts +1 -1
- package/dist/data-display/name.d.mts +1 -1
- package/dist/data-display/name.mjs.map +1 -1
- package/dist/data-display/phone-number.cjs.map +1 -1
- package/dist/data-display/phone-number.d.cts +1 -1
- package/dist/data-display/phone-number.d.mts +1 -1
- package/dist/data-display/phone-number.mjs.map +1 -1
- package/dist/data-display/role-badge.cjs.map +1 -1
- package/dist/data-display/role-badge.d.cts +1 -1
- package/dist/data-display/role-badge.d.mts +1 -1
- package/dist/data-display/role-badge.mjs.map +1 -1
- package/dist/data-display/statistic.cjs.map +1 -1
- package/dist/data-display/statistic.d.cts +1 -1
- package/dist/data-display/statistic.d.mts +1 -1
- package/dist/data-display/statistic.mjs.map +1 -1
- package/dist/data-display/user.cjs.map +1 -1
- package/dist/data-display/user.d.cts +1 -1
- package/dist/data-display/user.d.mts +1 -1
- package/dist/data-display/user.mjs.map +1 -1
- package/dist/{data-list-Cg510z2m.d.cts → data-list-BRHjqVUT.d.cts} +10 -5
- package/dist/{data-list-Cg510z2m.d.mts → data-list-BRHjqVUT.d.mts} +10 -5
- package/dist/date-B3cozmfV.cjs.map +1 -1
- package/dist/date-Nsz0Pewe.mjs.map +1 -1
- package/dist/date-display-BgI7Wjqf.cjs.map +1 -1
- package/dist/date-display-DGfHQhpu.mjs.map +1 -1
- package/dist/{date-field-Ba6O0uV3.cjs → date-field-CYoPe74G.cjs} +2 -2
- package/dist/{date-field-Ba6O0uV3.cjs.map → date-field-CYoPe74G.cjs.map} +1 -1
- package/dist/{date-field-DUx13OiJ.mjs → date-field-D_qpBb-t.mjs} +2 -2
- package/dist/{date-field-DUx13OiJ.mjs.map → date-field-D_qpBb-t.mjs.map} +1 -1
- package/dist/{date-tooltip-DptxGOj_.d.cts → date-tooltip-BZ4JiwfW.d.cts} +3 -2
- package/dist/{date-tooltip-DptxGOj_.d.mts → date-tooltip-BZ4JiwfW.d.mts} +3 -2
- package/dist/description-display-BR8nXqc_.cjs.map +1 -1
- package/dist/description-display-CW0g3aJa.mjs.map +1 -1
- package/dist/detail-dialog-Ct0vAjFe.mjs +2 -0
- package/dist/detail-dialog-Ct0vAjFe.mjs.map +1 -0
- package/dist/detail-dialog-uN5mrCa7.cjs +2 -0
- package/dist/detail-dialog-uN5mrCa7.cjs.map +1 -0
- package/dist/{dialog-BASlxWF_.d.cts → dialog-c1vBnso8.d.cts} +13 -41
- package/dist/{dialog-BASlxWF_.d.mts → dialog-c1vBnso8.d.mts} +13 -41
- package/dist/{dialog-form-B_kgYxZg.cjs → dialog-form-BTZZwz3T.cjs} +2 -2
- package/dist/{dialog-form-B_kgYxZg.cjs.map → dialog-form-BTZZwz3T.cjs.map} +1 -1
- package/dist/{dialog-form-SyBJUlDB.mjs → dialog-form-CCIcht28.mjs} +2 -2
- package/dist/{dialog-form-SyBJUlDB.mjs.map → dialog-form-CCIcht28.mjs.map} +1 -1
- package/dist/dialogs/confirm-dialog.cjs.map +1 -1
- package/dist/dialogs/confirm-dialog.mjs.map +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +64 -133
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +64 -133
- 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 -2
- package/dist/dialogs/detail-dialog/index.d.cts +1 -1
- package/dist/dialogs/detail-dialog/index.d.mts +1 -1
- package/dist/dialogs/detail-dialog/index.mjs +1 -2
- package/dist/dialogs/error-dialog.cjs.map +1 -1
- package/dist/dialogs/error-dialog.d.cts +1 -1
- package/dist/dialogs/error-dialog.d.mts +1 -1
- package/dist/dialogs/error-dialog.mjs.map +1 -1
- package/dist/dialogs/loading-dialog.cjs.map +1 -1
- package/dist/dialogs/loading-dialog.d.cts +1 -1
- package/dist/dialogs/loading-dialog.d.mts +1 -1
- package/dist/dialogs/loading-dialog.mjs.map +1 -1
- package/dist/donut-chart-CsPPKy0G.cjs.map +1 -1
- package/dist/donut-chart-eKZjuzW0.mjs.map +1 -1
- package/dist/{drawer-Dwx99ff3.d.cts → drawer-B8cntcg3.d.cts} +11 -39
- package/dist/{drawer-Dwx99ff3.d.mts → drawer-B8cntcg3.d.mts} +11 -39
- package/dist/{dropdown-menu-CcMccVns.d.cts → dropdown-menu-wdaYl-q0.d.cts} +16 -66
- package/dist/{dropdown-menu-CcMccVns.d.mts → dropdown-menu-wdaYl-q0.d.mts} +16 -66
- package/dist/{edit-qfS5kOtM.d.cts → edit-C8JDClC3.d.cts} +3 -2
- package/dist/{edit-qfS5kOtM.d.mts → edit-C8JDClC3.d.mts} +3 -2
- package/dist/edit-button-0_FLZoT3.cjs.map +1 -1
- package/dist/edit-button-DmMFMzG0.mjs.map +1 -1
- package/dist/email-display-BKcoWmPK.mjs.map +1 -1
- package/dist/email-display-DqKYq0iM.cjs.map +1 -1
- package/dist/{email-field-CO_BZHod.cjs → email-field-DJa7iASY.cjs} +2 -2
- package/dist/{email-field-CO_BZHod.cjs.map → email-field-DJa7iASY.cjs.map} +1 -1
- package/dist/{email-field-BGYZUVl0.mjs → email-field-DxSNJ6tf.mjs} +2 -2
- package/dist/{email-field-BGYZUVl0.mjs.map → email-field-DxSNJ6tf.mjs.map} +1 -1
- package/dist/{empty-CaNJjp05.d.cts → empty-B-Nd7s_O.d.cts} +7 -27
- package/dist/{empty-CaNJjp05.d.mts → empty-B-Nd7s_O.d.mts} +7 -27
- package/dist/{empty-ClQptIZH.d.cts → empty-CHTdH5fg.d.cts} +4 -2
- package/dist/{empty-ClQptIZH.d.mts → empty-CHTdH5fg.d.mts} +4 -2
- package/dist/{error-dialog-D4jOPhmw.d.cts → error-dialog-DYQSm_JC.d.cts} +6 -3
- package/dist/{error-dialog-D4jOPhmw.d.mts → error-dialog-DYQSm_JC.d.mts} +6 -3
- package/dist/features/charts/index.cjs.map +1 -1
- package/dist/features/charts/index.d.cts +1 -1
- package/dist/features/charts/index.d.mts +1 -1
- package/dist/features/charts/index.mjs.map +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +1 -1
- package/dist/features/descriptions/index.d.mts +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/logo/index.cjs.map +1 -1
- package/dist/features/logo/index.d.cts +3 -8
- package/dist/features/logo/index.d.mts +3 -8
- package/dist/features/logo/index.mjs.map +1 -1
- package/dist/features/tables/index.d.cts +1 -1
- package/dist/features/tables/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +1 -1
- package/dist/features/tanstack-form/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/index.d.mts +1 -1
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/field-BSLi-P0Q.cjs.map +1 -1
- package/dist/field-V2DoD8qL.mjs.map +1 -1
- package/dist/{file-uploader-U64lH0zG.d.cts → file-uploader-DyHOMFK3.d.cts} +1 -2
- package/dist/{file-uploader-U64lH0zG.d.mts → file-uploader-DyHOMFK3.d.mts} +1 -2
- package/dist/filter-CWuRGTl4.mjs.map +1 -1
- package/dist/filter-DqedvThM.cjs.map +1 -1
- package/dist/{flex-bw7U4hXn.d.cts → flex-CrxTaAXE.d.cts} +5 -16
- package/dist/{flex-bw7U4hXn.d.mts → flex-CrxTaAXE.d.mts} +5 -16
- package/dist/{form-CMP15S4r.d.cts → form-D0M_qGX_.d.cts} +8 -45
- package/dist/{form-CMP15S4r.d.mts → form-D0M_qGX_.d.mts} +8 -45
- package/dist/gain-loss-bar-chart-Dz1oAj8H.mjs.map +1 -1
- package/dist/gain-loss-bar-chart-FUzN7DxF.cjs.map +1 -1
- package/dist/{google-Bl-jBW8L.d.cts → google-vajkoOiC.d.cts} +9 -5
- package/dist/{google-Bl-jBW8L.d.mts → google-vajkoOiC.d.mts} +9 -5
- package/dist/{grid-product-card-bpADqDOQ.d.cts → grid-product-card-P5X8ZPQF.d.cts} +14 -7
- package/dist/{grid-product-card-bpADqDOQ.d.mts → grid-product-card-P5X8ZPQF.d.mts} +14 -7
- package/dist/group-field-gejvx_Td.mjs.map +1 -1
- package/dist/group-field-sVykO2JZ.cjs.map +1 -1
- package/dist/{hover-card-Prwm-0Q4.d.cts → hover-card-JeShfV9g.d.cts} +4 -14
- package/dist/{hover-card-Prwm-0Q4.d.mts → hover-card-JeShfV9g.d.mts} +4 -14
- package/dist/image-BvDGi_G7.d.cts +36 -0
- package/dist/image-BvDGi_G7.d.mts +36 -0
- package/dist/{index-DJiiPHPf.d.cts → index-BBMKb5q2.d.cts} +28 -13
- package/dist/{index-DJiiPHPf.d.mts → index-BBMKb5q2.d.mts} +28 -13
- package/dist/{index-CS7oydGk.d.cts → index-BMuVmm7f.d.mts} +26 -26
- package/dist/{index-BoYnKWwg.d.cts → index-BNw6P5PU.d.cts} +793 -693
- package/dist/{index-BoYnKWwg.d.mts → index-BNw6P5PU.d.mts} +793 -693
- package/dist/index-BOifmu0V.d.cts +51 -0
- package/dist/index-BOifmu0V.d.mts +51 -0
- package/dist/{index-DmvXR2Cn.d.mts → index-CLx89ATZ.d.cts} +26 -26
- package/dist/{index-FEMPGfwO.d.cts → index-Ck7BOwK3.d.cts} +304 -142
- package/dist/{index-_GTjwUdG.d.mts → index-D4lNFNf2.d.mts} +304 -142
- package/dist/{index-CBntsHIg.d.cts → index-DJKJt7oV.d.cts} +111 -54
- package/dist/{index-CBntsHIg.d.mts → index-DJKJt7oV.d.mts} +111 -54
- package/dist/{index-DOaKN0wJ.d.cts → index-DRAyYm8g.d.cts} +4 -34
- package/dist/{index-DOaKN0wJ.d.mts → index-DRAyYm8g.d.mts} +4 -34
- package/dist/{index-teY5hw2R.d.cts → index-KgI9KqIf.d.cts} +33 -15
- package/dist/{index-teY5hw2R.d.mts → index-KgI9KqIf.d.mts} +33 -15
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +92 -91
- package/dist/index.d.mts +92 -91
- package/dist/index.mjs +1 -1
- package/dist/indexed-performance-line-chart-CT79KOM6.cjs.map +1 -1
- package/dist/indexed-performance-line-chart-D7F-rIMv.mjs.map +1 -1
- package/dist/{input-BieGEIDf.d.cts → input-DxNK7Wo6.d.cts} +7 -12
- package/dist/{input-BieGEIDf.d.mts → input-DxNK7Wo6.d.mts} +7 -12
- package/dist/{input-otp-6hJfhBHX.d.cts → input-otp-DGf28Nq2.d.cts} +7 -20
- package/dist/{input-otp-6hJfhBHX.d.mts → input-otp-DGf28Nq2.d.mts} +7 -20
- package/dist/{item-DTR2f2CX.d.cts → item-BxUBO7Hd.d.cts} +12 -47
- package/dist/{item-cIhkI3ZI.d.mts → item-ChW41yKF.d.mts} +12 -47
- package/dist/{label-DPG_GY7h.d.cts → label-CKywNz0h.d.cts} +2 -6
- package/dist/{label-DPG_GY7h.d.mts → label-CKywNz0h.d.mts} +2 -6
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.d.cts +1 -1
- package/dist/layouts/cms-layout/index.d.mts +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.d.cts +1 -1
- package/dist/layouts/flex.d.mts +1 -1
- package/dist/layouts/grid.cjs.map +1 -1
- package/dist/layouts/grid.mjs.map +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.d.cts +1 -1
- package/dist/layouts/payment-layout/index.d.mts +1 -1
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/list-display-BRJVmji0.cjs.map +1 -1
- package/dist/list-display-Co94sV4H.mjs.map +1 -1
- package/dist/{loading-dialog-C73EJx9s.d.cts → loading-dialog-DXjQSQnC.d.cts} +4 -2
- package/dist/{loading-dialog-C73EJx9s.d.mts → loading-dialog-DXjQSQnC.d.mts} +4 -2
- package/dist/{menubar-CFrn3S96.d.cts → menubar-PDJeDtHh.d.cts} +17 -72
- package/dist/{menubar-CFrn3S96.d.mts → menubar-PDJeDtHh.d.mts} +17 -72
- package/dist/metric-radar-chart-6LTGQHsL.mjs.map +1 -1
- package/dist/metric-radar-chart-DwgbXgJX.cjs.map +1 -1
- package/dist/mirrored-bar-chart-BT7AYPJB.mjs.map +1 -1
- package/dist/mirrored-bar-chart-BwjtExjh.cjs.map +1 -1
- package/dist/more-button-BKBcXz6E.mjs.map +1 -1
- package/dist/more-button-RYvZgYiu.cjs.map +1 -1
- package/dist/{multi-select-BbiKgAYs.d.cts → multi-select-C4ae_jaX.d.mts} +2 -3
- package/dist/{multi-select-BoBHt_Z9.d.mts → multi-select-V3chK_bJ.d.cts} +2 -3
- package/dist/name-display-B-FtblLL.cjs.map +1 -1
- package/dist/name-display-CB9XAhXP.mjs.map +1 -1
- package/dist/{name-7aoM5rAW.d.cts → name-tnVKGZN7.d.cts} +3 -2
- package/dist/{name-7aoM5rAW.d.mts → name-tnVKGZN7.d.mts} +3 -2
- package/dist/{navigation-menu-B1BY9Zll.d.cts → navigation-menu-BCjjeblq.d.cts} +11 -38
- package/dist/{navigation-menu-B1BY9Zll.d.mts → navigation-menu-BCjjeblq.d.mts} +11 -38
- package/dist/{number-field-B89VeU2r.mjs → number-field-5INgdUUv.mjs} +2 -2
- package/dist/{number-field-B89VeU2r.mjs.map → number-field-5INgdUUv.mjs.map} +1 -1
- package/dist/{number-field-C7iEv5GJ.cjs → number-field-DKZz-27X.cjs} +2 -2
- package/dist/{number-field-C7iEv5GJ.cjs.map → number-field-DKZz-27X.cjs.map} +1 -1
- package/dist/number-input-CAr3JaA-.cjs +2 -0
- package/dist/{number-input-kTh9zzr7.cjs.map → number-input-CAr3JaA-.cjs.map} +1 -1
- package/dist/number-input-CJcEV9Cg.mjs +2 -0
- package/dist/{number-input-CqkegUWs.mjs.map → number-input-CJcEV9Cg.mjs.map} +1 -1
- package/dist/orders-bar-chart-9RmtP6In.cjs.map +1 -1
- package/dist/orders-bar-chart-DQhJGmwY.mjs.map +1 -1
- package/dist/pages/FeatureDeveloping.cjs.map +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +1 -1
- package/dist/pages/FeatureDeveloping.d.mts +1 -1
- package/dist/pages/FeatureDeveloping.mjs.map +1 -1
- package/dist/pages/FeatureFixing.cjs.map +1 -1
- package/dist/pages/FeatureFixing.d.cts +1 -1
- package/dist/pages/FeatureFixing.d.mts +1 -1
- package/dist/pages/FeatureFixing.mjs.map +1 -1
- package/dist/pages/LoginPage.cjs.map +1 -1
- package/dist/pages/LoginPage.d.cts +1 -1
- package/dist/pages/LoginPage.d.mts +1 -1
- package/dist/pages/LoginPage.mjs.map +1 -1
- package/dist/pages/NotAuthorized.cjs.map +1 -1
- package/dist/pages/NotAuthorized.d.cts +1 -1
- package/dist/pages/NotAuthorized.d.mts +1 -1
- package/dist/pages/NotAuthorized.mjs.map +1 -1
- package/dist/pages/NotFound.cjs.map +1 -1
- package/dist/pages/NotFound.d.cts +1 -1
- package/dist/pages/NotFound.d.mts +1 -1
- package/dist/pages/NotFound.mjs.map +1 -1
- package/dist/pages/RegisterPage.cjs.map +1 -1
- package/dist/pages/RegisterPage.d.cts +1 -1
- package/dist/pages/RegisterPage.d.mts +1 -1
- package/dist/pages/RegisterPage.mjs.map +1 -1
- package/dist/pages/VerifyEmailPage.cjs.map +1 -1
- package/dist/pages/VerifyEmailPage.d.cts +1 -1
- package/dist/pages/VerifyEmailPage.d.mts +1 -1
- package/dist/pages/VerifyEmailPage.mjs.map +1 -1
- package/dist/{pagination-B2fyP0J2.d.cts → pagination-BRw-yZBY.d.cts} +11 -33
- package/dist/{pagination-DY0PBCnI.d.mts → pagination-BlLiOvY9.d.mts} +11 -33
- package/dist/{paragraph-BTmvVS1S.d.mts → paragraph-CRo5eC7H.d.mts} +2 -7
- package/dist/{paragraph-DbYYv0A0.d.cts → paragraph-CkCNIsvz.d.cts} +2 -7
- package/dist/{password-field-9RZ84TNz.cjs → password-field-BuWARi35.cjs} +2 -2
- package/dist/{password-field-9RZ84TNz.cjs.map → password-field-BuWARi35.cjs.map} +1 -1
- package/dist/{password-field-pqUgUcgf.mjs → password-field-DOIe6wTv.mjs} +2 -2
- package/dist/{password-field-pqUgUcgf.mjs.map → password-field-DOIe6wTv.mjs.map} +1 -1
- package/dist/{payment-layout-DS5CEH1h.mjs → payment-layout-BSl9DYQA.mjs} +2 -2
- package/dist/{payment-layout-DS5CEH1h.mjs.map → payment-layout-BSl9DYQA.mjs.map} +1 -1
- package/dist/payment-layout-DDcLanA0.cjs +2 -0
- package/dist/{payment-layout-Cb-Q8KD2.cjs.map → payment-layout-DDcLanA0.cjs.map} +1 -1
- package/dist/permalink-CUIKG9VA.cjs.map +1 -1
- package/dist/permalink-I-INEarM.mjs.map +1 -1
- package/dist/phone-number-Cu7Mnl6J.mjs.map +1 -1
- package/dist/{phone-number-6b_pkGI1.d.cts → phone-number-D9j5xYDW.d.cts} +3 -2
- package/dist/{phone-number-6b_pkGI1.d.mts → phone-number-D9j5xYDW.d.mts} +3 -2
- package/dist/phone-number-DJvfJg1b.cjs.map +1 -1
- package/dist/{popover-form-CLr6xIl5.cjs → popover-form-Bq2GcuZu.cjs} +2 -2
- package/dist/{popover-form-CLr6xIl5.cjs.map → popover-form-Bq2GcuZu.cjs.map} +1 -1
- package/dist/{popover-form-BmOqFjQM.mjs → popover-form-BsapHJck.mjs} +2 -2
- package/dist/{popover-form-BmOqFjQM.mjs.map → popover-form-BsapHJck.mjs.map} +1 -1
- package/dist/{popover-CdOCi0xg.d.cts → popover-qfF3o0zL.d.cts} +6 -21
- package/dist/{popover-CdOCi0xg.d.mts → popover-qfF3o0zL.d.mts} +6 -21
- package/dist/portfolio-allocation-treemap-Bn0X4wb6.cjs.map +1 -1
- package/dist/portfolio-allocation-treemap-Cb9Kidrl.mjs.map +1 -1
- package/dist/price-range-area-chart-BW6RQb_9.cjs.map +1 -1
- package/dist/price-range-area-chart-Dy01mhWJ.mjs.map +1 -1
- package/dist/{product-card-CvXLXbpV.d.cts → product-card-CYNh0CT5.d.cts} +14 -7
- package/dist/{product-card-CvXLXbpV.d.mts → product-card-CYNh0CT5.d.mts} +14 -7
- package/dist/{progress-Bp-5keO8.d.cts → progress-BpWaSlPG.d.cts} +2 -7
- package/dist/{progress-Bp-5keO8.d.mts → progress-BpWaSlPG.d.mts} +2 -7
- package/dist/progress-display-DbfN7U8m.cjs.map +1 -1
- package/dist/progress-display-qgvclwy9.mjs.map +1 -1
- package/dist/{radio-group-ycQQrPGn.d.cts → radio-group-D_ssq0Q2.d.cts} +3 -10
- package/dist/{radio-group-ycQQrPGn.d.mts → radio-group-D_ssq0Q2.d.mts} +3 -10
- package/dist/{radio-group-field-DsUi8uCy.mjs → radio-group-field-DOJ4jVSr.mjs} +2 -2
- package/dist/{radio-group-field-DsUi8uCy.mjs.map → radio-group-field-DOJ4jVSr.mjs.map} +1 -1
- package/dist/{radio-group-field-Bm2nkk1W.cjs → radio-group-field-kTgtvp1p.cjs} +2 -2
- package/dist/{radio-group-field-Bm2nkk1W.cjs.map → radio-group-field-kTgtvp1p.cjs.map} +1 -1
- package/dist/{refresh-BiyrZAXL.d.cts → refresh-CWvkHT0L.d.cts} +3 -2
- package/dist/{refresh-BiyrZAXL.d.mts → refresh-CWvkHT0L.d.mts} +3 -2
- package/dist/remove-button-B3qFw-M5.cjs.map +1 -1
- package/dist/remove-button-Db5oSj4h.mjs.map +1 -1
- package/dist/{resizable-B1BHdSAr.d.cts → resizable-D-Z8NJ7S.d.cts} +2 -3
- package/dist/{resizable-B1BHdSAr.d.mts → resizable-D-Z8NJ7S.d.mts} +2 -3
- package/dist/revenue-area-chart-BwzeTRzD.mjs.map +1 -1
- package/dist/revenue-area-chart-w2FZCl_7.cjs.map +1 -1
- package/dist/revenue-orders-composed-chart-BttOWYGt.cjs.map +1 -1
- package/dist/revenue-orders-composed-chart-DwkbWZSX.mjs.map +1 -1
- package/dist/{role-badge-IdZW0tsN.d.cts → role-badge-CojpT6hX.d.cts} +3 -3
- package/dist/{role-badge-Bl4Rimpk.d.mts → role-badge-NTpnTz8M.d.mts} +3 -3
- package/dist/sales-target-radial-chart-BFLxBT2m.mjs.map +1 -1
- package/dist/sales-target-radial-chart-BoxSk7hW.cjs.map +1 -1
- package/dist/sankey-flow-chart-CDUqIRMZ.cjs.map +1 -1
- package/dist/sankey-flow-chart-bQ3Dffet.mjs.map +1 -1
- package/dist/{scroll-area-PbkqIAaH.d.cts → scroll-area-BpSwutyr.d.cts} +3 -14
- package/dist/{scroll-area-PbkqIAaH.d.mts → scroll-area-BpSwutyr.d.mts} +3 -14
- package/dist/{search-input-Bq4enQzR.d.cts → search-input-C8feOKe2.d.cts} +3 -7
- package/dist/{search-input-D51_mAY-.d.mts → search-input-CoqwakbI.d.mts} +3 -7
- package/dist/search-modal-CMhsIxae.cjs.map +1 -1
- package/dist/search-modal-Cdmi2iyV.mjs.map +1 -1
- package/dist/section-form-BJWWflUR.mjs.map +1 -1
- package/dist/section-form-C_pHiBEW.cjs.map +1 -1
- package/dist/{select-B5j4WvPM.d.cts → select-UNtSe_Fs.d.cts} +11 -37
- package/dist/{select-B5j4WvPM.d.mts → select-UNtSe_Fs.d.mts} +11 -37
- package/dist/{select-field-ikKFoatc.mjs → select-field-BcsFBbNJ.mjs} +2 -2
- package/dist/{select-field-ikKFoatc.mjs.map → select-field-BcsFBbNJ.mjs.map} +1 -1
- package/dist/{select-field-F9eikYws.cjs → select-field-CURv37h4.cjs} +2 -2
- package/dist/{select-field-F9eikYws.cjs.map → select-field-CURv37h4.cjs.map} +1 -1
- package/dist/{separator-D6_fMJtM.d.cts → separator-Cvxkpzrj.d.cts} +2 -8
- package/dist/{separator-D6_fMJtM.d.mts → separator-Cvxkpzrj.d.mts} +2 -8
- package/dist/{sheet-cHLLSvvt.d.cts → sheet-BBvQsKM_.d.cts} +11 -34
- package/dist/{sheet-cHLLSvvt.d.mts → sheet-BBvQsKM_.d.mts} +11 -34
- package/dist/sidebar-core-Bz_LtXZy.mjs +2 -0
- package/dist/sidebar-core-Bz_LtXZy.mjs.map +1 -0
- package/dist/sidebar-core-DUdB9WCv.cjs +2 -0
- package/dist/sidebar-core-DUdB9WCv.cjs.map +1 -0
- package/dist/{simple-array-field-Bm_5b8pE.cjs → simple-array-field-bCUuPMgT.cjs} +2 -2
- package/dist/{simple-array-field-Bm_5b8pE.cjs.map → simple-array-field-bCUuPMgT.cjs.map} +1 -1
- package/dist/{simple-array-field-CeqZJfVs.mjs → simple-array-field-wFE_DUOV.mjs} +2 -2
- package/dist/{simple-array-field-CeqZJfVs.mjs.map → simple-array-field-wFE_DUOV.mjs.map} +1 -1
- package/dist/{simple-boolean-field-BeL9WjD5.cjs → simple-boolean-field-DRapzNrB.cjs} +2 -2
- package/dist/{simple-boolean-field-BeL9WjD5.cjs.map → simple-boolean-field-DRapzNrB.cjs.map} +1 -1
- package/dist/{simple-boolean-field-DZ0J-Pk0.mjs → simple-boolean-field-GQJyeyVS.mjs} +2 -2
- package/dist/{simple-boolean-field-DZ0J-Pk0.mjs.map → simple-boolean-field-GQJyeyVS.mjs.map} +1 -1
- package/dist/simple-card-Dhf9UXBg.d.cts +27 -0
- package/dist/simple-card-Dhf9UXBg.d.mts +27 -0
- package/dist/{simple-combobox-field-CeV40wnv.cjs → simple-combobox-field-Cp5dfQv3.cjs} +2 -2
- package/dist/{simple-combobox-field-CeV40wnv.cjs.map → simple-combobox-field-Cp5dfQv3.cjs.map} +1 -1
- package/dist/{simple-combobox-field-BQXmNATZ.mjs → simple-combobox-field-D6IaMJKl.mjs} +2 -2
- package/dist/{simple-combobox-field-BQXmNATZ.mjs.map → simple-combobox-field-D6IaMJKl.mjs.map} +1 -1
- package/dist/{simple-date-field-CrH-92i4.cjs → simple-date-field-_PSkIXAt.cjs} +2 -2
- package/dist/{simple-date-field-CrH-92i4.cjs.map → simple-date-field-_PSkIXAt.cjs.map} +1 -1
- package/dist/{simple-date-field-D9ymav2L.mjs → simple-date-field-dszQs7Ik.mjs} +2 -2
- package/dist/{simple-date-field-D9ymav2L.mjs.map → simple-date-field-dszQs7Ik.mjs.map} +1 -1
- package/dist/{simple-email-field-8IiVOYa-.mjs → simple-email-field-CwyoXqWo.mjs} +2 -2
- package/dist/{simple-email-field-8IiVOYa-.mjs.map → simple-email-field-CwyoXqWo.mjs.map} +1 -1
- package/dist/{simple-email-field-CsMmMSvS.cjs → simple-email-field-DIHwYrhk.cjs} +2 -2
- package/dist/{simple-email-field-CsMmMSvS.cjs.map → simple-email-field-DIHwYrhk.cjs.map} +1 -1
- package/dist/{simple-number-field-C6hE1Qlj.mjs → simple-number-field-Id1kV5yR.mjs} +2 -2
- package/dist/{simple-number-field-C6hE1Qlj.mjs.map → simple-number-field-Id1kV5yR.mjs.map} +1 -1
- package/dist/{simple-number-field-CrU2A2yp.cjs → simple-number-field-VdEeaIiC.cjs} +2 -2
- package/dist/{simple-number-field-CrU2A2yp.cjs.map → simple-number-field-VdEeaIiC.cjs.map} +1 -1
- package/dist/{simple-password-field-DWmUR_5_.cjs → simple-password-field-7xbVB1H3.cjs} +2 -2
- package/dist/{simple-password-field-DWmUR_5_.cjs.map → simple-password-field-7xbVB1H3.cjs.map} +1 -1
- package/dist/{simple-password-field-CabyA9Y7.mjs → simple-password-field-DIO9FwQy.mjs} +2 -2
- package/dist/{simple-password-field-CabyA9Y7.mjs.map → simple-password-field-DIO9FwQy.mjs.map} +1 -1
- package/dist/{simple-radio-group-field-BNFgrTSb.mjs → simple-radio-group-field-BmHWRnns.mjs} +2 -2
- package/dist/{simple-radio-group-field-BNFgrTSb.mjs.map → simple-radio-group-field-BmHWRnns.mjs.map} +1 -1
- package/dist/{simple-radio-group-field-CpTX_Xoy.cjs → simple-radio-group-field-CxVAr6yW.cjs} +2 -2
- package/dist/{simple-radio-group-field-CpTX_Xoy.cjs.map → simple-radio-group-field-CxVAr6yW.cjs.map} +1 -1
- package/dist/{simple-select-field-VibM3I3D.cjs → simple-select-field-C9u7Pg9u.cjs} +2 -2
- package/dist/{simple-select-field-VibM3I3D.cjs.map → simple-select-field-C9u7Pg9u.cjs.map} +1 -1
- package/dist/{simple-select-field-CiUfRHCo.mjs → simple-select-field-DfZk0zPa.mjs} +2 -2
- package/dist/{simple-select-field-CiUfRHCo.mjs.map → simple-select-field-DfZk0zPa.mjs.map} +1 -1
- package/dist/{simple-text-field-DRlcBB-3.cjs → simple-text-field-BxPjcB4c.cjs} +2 -2
- package/dist/{simple-text-field-DRlcBB-3.cjs.map → simple-text-field-BxPjcB4c.cjs.map} +1 -1
- package/dist/{simple-text-field-Cmmmci4R.mjs → simple-text-field-CT9KFUSK.mjs} +2 -2
- package/dist/{simple-text-field-Cmmmci4R.mjs.map → simple-text-field-CT9KFUSK.mjs.map} +1 -1
- package/dist/{simple-textarea-field-BDqw8ewE.mjs → simple-textarea-field-B22rT6zS.mjs} +2 -2
- package/dist/{simple-textarea-field-BDqw8ewE.mjs.map → simple-textarea-field-B22rT6zS.mjs.map} +1 -1
- package/dist/{simple-textarea-field-B0fOG7nh.cjs → simple-textarea-field-DG9oPtP-.cjs} +2 -2
- package/dist/{simple-textarea-field-B0fOG7nh.cjs.map → simple-textarea-field-DG9oPtP-.cjs.map} +1 -1
- package/dist/{skeleton-Ct4sYEKk.d.cts → skeleton-BL19ZqPB.d.cts} +2 -5
- package/dist/{skeleton-Ct4sYEKk.d.mts → skeleton-BL19ZqPB.d.mts} +2 -5
- package/dist/{slider-DwR1MhR8.d.cts → slider-KvzhtIbT.d.cts} +2 -10
- package/dist/{slider-DwR1MhR8.d.mts → slider-KvzhtIbT.d.mts} +2 -10
- package/dist/{sonner-B6LxJMYT.d.mts → sonner-C-sM3xU2.d.mts} +1 -2
- package/dist/{sonner-BcNgR0GP.d.cts → sonner-D-rrTnjn.d.cts} +1 -2
- package/dist/sparkline-chart-TbGzakUl.mjs.map +1 -1
- package/dist/sparkline-chart-sPqaJHep.cjs.map +1 -1
- package/dist/{spinner-CXuqcoB5.d.cts → spinner-Cz20qsxS.d.cts} +2 -5
- package/dist/{spinner-CXuqcoB5.d.mts → spinner-Cz20qsxS.d.mts} +2 -5
- package/dist/stacked-area-chart-DyxY96_l.cjs.map +1 -1
- package/dist/stacked-area-chart-UIWIxTmq.mjs.map +1 -1
- package/dist/statistic-Bpif8p8R.d.cts +42 -0
- package/dist/statistic-Bpif8p8R.d.mts +42 -0
- package/dist/statistic-ClkqqDfk.mjs.map +1 -1
- package/dist/statistic-LL4uHlRb.cjs.map +1 -1
- package/dist/status-display-BUphOF18.mjs.map +1 -1
- package/dist/status-display-o9inMVvb.cjs.map +1 -1
- package/dist/submit-button-CGBaPzE9.mjs.map +1 -1
- package/dist/submit-button-CvINfld5.cjs.map +1 -1
- package/dist/summary-bar-CYfgdxrQ.mjs.map +1 -1
- package/dist/summary-bar-Mb1B9Dnf.cjs.map +1 -1
- package/dist/{switch-9v4AYqJb.d.cts → switch-Ce5Pre2e.d.cts} +2 -6
- package/dist/{switch-9v4AYqJb.d.mts → switch-Ce5Pre2e.d.mts} +2 -6
- package/dist/{switch-field-BDVIJ21m.mjs → switch-field-Cz4lDf1D.mjs} +2 -2
- package/dist/{switch-field-BDVIJ21m.mjs.map → switch-field-Cz4lDf1D.mjs.map} +1 -1
- package/dist/{switch-field-D6CCxaEX.cjs → switch-field-yE4A6EoF.cjs} +2 -2
- package/dist/{switch-field-D6CCxaEX.cjs.map → switch-field-yE4A6EoF.cjs.map} +1 -1
- package/dist/systems/google.cjs.map +1 -1
- package/dist/systems/google.d.cts +1 -1
- package/dist/systems/google.d.mts +1 -1
- package/dist/systems/google.mjs.map +1 -1
- package/dist/{table-Dg2D0v87.d.cts → table-D354-TpC.d.cts} +9 -33
- package/dist/{table-Dg2D0v87.d.mts → table-D354-TpC.d.mts} +9 -33
- package/dist/tables-078i-X0d.cjs.map +1 -1
- package/dist/tables-BGzwkdFO.mjs.map +1 -1
- package/dist/{tabs-CJ6qZcFU.d.cts → tabs-DLEtBGOr.d.cts} +5 -18
- package/dist/{tabs-CJ6qZcFU.d.mts → tabs-DLEtBGOr.d.mts} +5 -18
- package/dist/{tanstack-form-Bae0TOEr.cjs → tanstack-form-BxqS40rB.cjs} +2 -2
- package/dist/{tanstack-form-Bae0TOEr.cjs.map → tanstack-form-BxqS40rB.cjs.map} +1 -1
- package/dist/{tanstack-form-AGwPfwiM.mjs → tanstack-form-q9hDCc0Y.mjs} +2 -2
- package/dist/{tanstack-form-AGwPfwiM.mjs.map → tanstack-form-q9hDCc0Y.mjs.map} +1 -1
- package/dist/text-editor-BtfyZSgR.cjs +2 -0
- package/dist/{text-editor-DJYQXXtP.cjs.map → text-editor-BtfyZSgR.cjs.map} +1 -1
- package/dist/text-editor-CtR27_PR.mjs +2 -0
- package/dist/{text-editor-BQtIXOpM.mjs.map → text-editor-CtR27_PR.mjs.map} +1 -1
- package/dist/{text-editor-field-C2KDtfZV.mjs → text-editor-field-CQ8tnZFw.mjs} +2 -2
- package/dist/{text-editor-field-C2KDtfZV.mjs.map → text-editor-field-CQ8tnZFw.mjs.map} +1 -1
- package/dist/{text-editor-field-DF8lkOc_.cjs → text-editor-field-CxU-KMMn.cjs} +2 -2
- package/dist/{text-editor-field-DF8lkOc_.cjs.map → text-editor-field-CxU-KMMn.cjs.map} +1 -1
- package/dist/{text-field-BJciq-S8.mjs → text-field-B3xlvEUN.mjs} +2 -2
- package/dist/{text-field-BJciq-S8.mjs.map → text-field-B3xlvEUN.mjs.map} +1 -1
- package/dist/{text-field-B1n5Xd-k.cjs → text-field-BQovKYN-.cjs} +2 -2
- package/dist/{text-field-B1n5Xd-k.cjs.map → text-field-BQovKYN-.cjs.map} +1 -1
- package/dist/{textarea-C8ZIZh-y.d.cts → textarea-D1diQohb.d.cts} +4 -8
- package/dist/{textarea-C8ZIZh-y.d.mts → textarea-D1diQohb.d.mts} +4 -8
- package/dist/{textarea-field-Bm7bsyjB.cjs → textarea-field-B38SnNv4.cjs} +2 -2
- package/dist/{textarea-field-Bm7bsyjB.cjs.map → textarea-field-B38SnNv4.cjs.map} +1 -1
- package/dist/{textarea-field-BjdX2Qjt.mjs → textarea-field-u2UUwtr_.mjs} +2 -2
- package/dist/{textarea-field-BjdX2Qjt.mjs.map → textarea-field-u2UUwtr_.mjs.map} +1 -1
- package/dist/{title-BT9guhSU.d.cts → title-D8BSkLsi.d.cts} +6 -9
- package/dist/{title-BT9guhSU.d.mts → title-D8BSkLsi.d.mts} +6 -9
- package/dist/title-field-B2hM3S_S.cjs.map +1 -1
- package/dist/title-field-oAqHRw59.mjs.map +1 -1
- package/dist/{toggle-Bh4EazxT.d.cts → toggle-CqTmiPDi.d.cts} +2 -8
- package/dist/{toggle-Bh4EazxT.d.mts → toggle-CqTmiPDi.d.mts} +2 -8
- package/dist/toggle-button-DNLtfjJC.mjs.map +1 -1
- package/dist/toggle-button-Dq78v8cH.cjs.map +1 -1
- package/dist/{toggle-group-BpqkL1ds.d.cts → toggle-group--bJylFDV.d.cts} +4 -17
- package/dist/{toggle-group-DzNE38v5.d.mts → toggle-group-l_Mi7NRg.d.mts} +4 -17
- package/dist/{tooltip-D4U-RhIu.d.cts → tooltip-BVYKhsC2.d.cts} +5 -18
- package/dist/{tooltip-D4U-RhIu.d.mts → tooltip-BVYKhsC2.d.mts} +5 -18
- package/dist/tooltip-BcfELg8e.cjs.map +1 -1
- package/dist/tooltip-TGmzPdoR.mjs.map +1 -1
- package/dist/top-products-bar-chart-5EJFSkeo.cjs.map +1 -1
- package/dist/top-products-bar-chart-CKYaOGWT.mjs.map +1 -1
- package/dist/{trash-BfWSqlL4.d.cts → trash-DBDuSVzW.d.cts} +3 -2
- package/dist/{trash-BfWSqlL4.d.mts → trash-DBDuSVzW.d.mts} +3 -2
- package/dist/typography/paragraph.d.cts +1 -1
- package/dist/typography/paragraph.d.mts +1 -1
- package/dist/typography/title.d.cts +1 -1
- package/dist/typography/title.d.mts +1 -1
- package/dist/ui/alert-dialog.d.cts +1 -1
- package/dist/ui/alert-dialog.d.mts +1 -1
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/aspect-ratio.d.cts +1 -1
- package/dist/ui/aspect-ratio.d.mts +1 -1
- package/dist/ui/avatar.d.cts +1 -1
- package/dist/ui/avatar.d.mts +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.cjs.map +1 -1
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.mts +1 -1
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/badge.mjs.map +1 -1
- package/dist/ui/breadcrumb.cjs.map +1 -1
- package/dist/ui/breadcrumb.d.cts +1 -1
- package/dist/ui/breadcrumb.d.mts +1 -1
- package/dist/ui/breadcrumb.mjs.map +1 -1
- package/dist/ui/button-group.d.cts +1 -1
- package/dist/ui/button-group.d.mts +1 -1
- package/dist/ui/button.cjs.map +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/button.mjs.map +1 -1
- package/dist/ui/buttons/add-new.cjs.map +1 -1
- package/dist/ui/buttons/add-new.d.cts +1 -1
- package/dist/ui/buttons/add-new.d.mts +1 -1
- package/dist/ui/buttons/add-new.mjs.map +1 -1
- package/dist/ui/buttons/edit.cjs.map +1 -1
- package/dist/ui/buttons/edit.d.cts +1 -1
- package/dist/ui/buttons/edit.d.mts +1 -1
- package/dist/ui/buttons/edit.mjs.map +1 -1
- package/dist/ui/buttons/refresh.cjs.map +1 -1
- package/dist/ui/buttons/refresh.d.cts +1 -1
- package/dist/ui/buttons/refresh.d.mts +1 -1
- package/dist/ui/buttons/refresh.mjs.map +1 -1
- package/dist/ui/buttons/trash.cjs.map +1 -1
- package/dist/ui/buttons/trash.d.cts +1 -1
- package/dist/ui/buttons/trash.d.mts +1 -1
- package/dist/ui/buttons/trash.mjs.map +1 -1
- package/dist/ui/buttons/upload-image.cjs.map +1 -1
- package/dist/ui/buttons/upload-image.d.cts +1 -1
- package/dist/ui/buttons/upload-image.d.mts +1 -1
- package/dist/ui/buttons/upload-image.mjs.map +1 -1
- package/dist/ui/calendar.cjs.map +1 -1
- package/dist/ui/calendar.d.cts +1 -1
- package/dist/ui/calendar.d.mts +1 -1
- package/dist/ui/calendar.mjs.map +1 -1
- package/dist/ui/card.d.cts +1 -1
- package/dist/ui/card.d.mts +1 -1
- package/dist/ui/carousel.cjs.map +1 -1
- package/dist/ui/carousel.d.cts +1 -1
- package/dist/ui/carousel.d.mts +1 -1
- package/dist/ui/carousel.mjs.map +1 -1
- package/dist/ui/chart.cjs +1 -1
- package/dist/ui/chart.cjs.map +1 -1
- package/dist/ui/chart.d.cts +1 -1
- package/dist/ui/chart.d.mts +1 -1
- package/dist/ui/chart.mjs +1 -1
- package/dist/ui/chart.mjs.map +1 -1
- package/dist/ui/checkbox.cjs.map +1 -1
- package/dist/ui/checkbox.d.cts +1 -1
- package/dist/ui/checkbox.d.mts +1 -1
- package/dist/ui/checkbox.mjs.map +1 -1
- package/dist/ui/collapsible.d.cts +1 -1
- package/dist/ui/collapsible.d.mts +1 -1
- package/dist/ui/combobox.cjs +1 -0
- package/dist/ui/combobox.d.cts +2 -0
- package/dist/ui/combobox.d.mts +2 -0
- package/dist/ui/combobox.mjs +1 -0
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.cjs.map +1 -1
- package/dist/ui/command.d.cts +1 -1
- package/dist/ui/command.d.mts +1 -1
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/command.mjs.map +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.d.cts +1 -1
- package/dist/ui/context-menu.d.mts +1 -1
- package/dist/ui/context-menu.mjs.map +1 -1
- package/dist/ui/dialog.cjs.map +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/dialog.mjs.map +1 -1
- package/dist/ui/drawer.cjs.map +1 -1
- package/dist/ui/drawer.d.cts +1 -1
- package/dist/ui/drawer.d.mts +1 -1
- package/dist/ui/drawer.mjs.map +1 -1
- package/dist/ui/dropdown-menu.cjs.map +1 -1
- package/dist/ui/dropdown-menu.d.cts +1 -1
- package/dist/ui/dropdown-menu.d.mts +1 -1
- package/dist/ui/dropdown-menu.mjs.map +1 -1
- package/dist/ui/empty.d.cts +1 -1
- package/dist/ui/empty.d.mts +1 -1
- package/dist/ui/field.cjs.map +1 -1
- package/dist/ui/field.d.cts +12 -48
- package/dist/ui/field.d.mts +12 -48
- package/dist/ui/field.mjs.map +1 -1
- package/dist/ui/file-uploader.cjs.map +1 -1
- package/dist/ui/file-uploader.d.cts +1 -1
- package/dist/ui/file-uploader.d.mts +1 -1
- package/dist/ui/file-uploader.mjs.map +1 -1
- package/dist/ui/form.cjs.map +1 -1
- package/dist/ui/form.d.cts +1 -1
- package/dist/ui/form.d.mts +1 -1
- package/dist/ui/form.mjs.map +1 -1
- package/dist/ui/hover-card.cjs.map +1 -1
- package/dist/ui/hover-card.d.cts +1 -1
- package/dist/ui/hover-card.d.mts +1 -1
- package/dist/ui/hover-card.mjs.map +1 -1
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.cjs.map +1 -1
- package/dist/ui/image.d.cts +1 -1
- package/dist/ui/image.d.mts +1 -1
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/image.mjs.map +1 -1
- package/dist/ui/input-otp.cjs.map +1 -1
- package/dist/ui/input-otp.d.cts +1 -1
- package/dist/ui/input-otp.d.mts +1 -1
- package/dist/ui/input-otp.mjs.map +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/inputs/search-input.cjs.map +1 -1
- package/dist/ui/inputs/search-input.d.cts +1 -1
- package/dist/ui/inputs/search-input.d.mts +1 -1
- package/dist/ui/inputs/search-input.mjs.map +1 -1
- package/dist/ui/item.d.cts +1 -1
- package/dist/ui/item.d.mts +1 -1
- package/dist/ui/label.d.cts +1 -1
- package/dist/ui/label.d.mts +1 -1
- package/dist/ui/menubar.cjs.map +1 -1
- package/dist/ui/menubar.d.cts +1 -1
- package/dist/ui/menubar.d.mts +1 -1
- package/dist/ui/menubar.mjs.map +1 -1
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.cjs.map +1 -1
- package/dist/ui/multi-select.d.cts +1 -1
- package/dist/ui/multi-select.d.mts +1 -1
- package/dist/ui/multi-select.mjs +1 -1
- package/dist/ui/multi-select.mjs.map +1 -1
- package/dist/ui/navigation-menu.cjs.map +1 -1
- package/dist/ui/navigation-menu.d.cts +1 -1
- package/dist/ui/navigation-menu.d.mts +1 -1
- package/dist/ui/navigation-menu.mjs.map +1 -1
- package/dist/ui/pagination.cjs.map +1 -1
- package/dist/ui/pagination.d.cts +1 -1
- package/dist/ui/pagination.d.mts +1 -1
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/popover.cjs.map +1 -1
- package/dist/ui/popover.d.cts +1 -1
- package/dist/ui/popover.d.mts +1 -1
- package/dist/ui/popover.mjs.map +1 -1
- package/dist/ui/progress.cjs.map +1 -1
- package/dist/ui/progress.d.cts +1 -1
- package/dist/ui/progress.d.mts +1 -1
- package/dist/ui/progress.mjs.map +1 -1
- package/dist/ui/radio-group.cjs.map +1 -1
- package/dist/ui/radio-group.d.cts +1 -1
- package/dist/ui/radio-group.d.mts +1 -1
- package/dist/ui/radio-group.mjs.map +1 -1
- package/dist/ui/resizable.cjs.map +1 -1
- package/dist/ui/resizable.d.cts +1 -1
- package/dist/ui/resizable.d.mts +1 -1
- package/dist/ui/resizable.mjs.map +1 -1
- package/dist/ui/scroll-area.cjs.map +1 -1
- package/dist/ui/scroll-area.d.cts +1 -1
- package/dist/ui/scroll-area.d.mts +1 -1
- package/dist/ui/scroll-area.mjs.map +1 -1
- package/dist/ui/select.cjs.map +1 -1
- package/dist/ui/select.d.cts +1 -1
- package/dist/ui/select.d.mts +1 -1
- package/dist/ui/select.mjs.map +1 -1
- package/dist/ui/separator.d.cts +1 -1
- package/dist/ui/separator.d.mts +1 -1
- package/dist/ui/sheet.cjs.map +1 -1
- package/dist/ui/sheet.d.cts +1 -1
- package/dist/ui/sheet.d.mts +1 -1
- package/dist/ui/sheet.mjs.map +1 -1
- package/dist/ui/skeleton.d.cts +1 -1
- package/dist/ui/skeleton.d.mts +1 -1
- package/dist/ui/slider.cjs.map +1 -1
- package/dist/ui/slider.d.cts +1 -1
- package/dist/ui/slider.d.mts +1 -1
- package/dist/ui/slider.mjs.map +1 -1
- package/dist/ui/sonner.d.cts +1 -1
- package/dist/ui/sonner.d.mts +1 -1
- package/dist/ui/spinner.d.cts +1 -1
- package/dist/ui/spinner.d.mts +1 -1
- package/dist/ui/status.cjs.map +1 -1
- package/dist/ui/status.d.cts +1 -9
- package/dist/ui/status.d.mts +1 -9
- package/dist/ui/status.mjs.map +1 -1
- package/dist/ui/switch.cjs.map +1 -1
- package/dist/ui/switch.d.cts +1 -1
- package/dist/ui/switch.d.mts +1 -1
- package/dist/ui/switch.mjs.map +1 -1
- package/dist/ui/table.d.cts +1 -1
- package/dist/ui/table.d.mts +1 -1
- package/dist/ui/tabs.d.cts +1 -1
- package/dist/ui/tabs.d.mts +1 -1
- package/dist/ui/textarea.d.cts +1 -1
- package/dist/ui/textarea.d.mts +1 -1
- package/dist/ui/toggle-group.cjs.map +1 -1
- package/dist/ui/toggle-group.d.cts +1 -1
- package/dist/ui/toggle-group.d.mts +1 -1
- package/dist/ui/toggle-group.mjs.map +1 -1
- package/dist/ui/toggle.d.cts +1 -1
- package/dist/ui/toggle.d.mts +1 -1
- package/dist/ui/tooltip.cjs.map +1 -1
- package/dist/ui/tooltip.d.cts +1 -1
- package/dist/ui/tooltip.d.mts +1 -1
- package/dist/ui/tooltip.mjs.map +1 -1
- package/dist/{upload-image-D4VZU3IA.d.cts → upload-image-DM-tkZuR.d.cts} +3 -3
- package/dist/{upload-image-D4VZU3IA.d.mts → upload-image-DM-tkZuR.d.mts} +3 -3
- package/dist/user-BymzvsYp.mjs.map +1 -1
- package/dist/{user-CvesQf42.d.cts → user-D46H2MOh.d.cts} +6 -3
- package/dist/{user-CvesQf42.d.mts → user-D46H2MOh.d.mts} +6 -3
- package/dist/user-Dn53Fu5q.cjs.map +1 -1
- package/dist/volume-bar-chart-BRpC_8-X.mjs.map +1 -1
- package/dist/volume-bar-chart-CRxZPZIn.cjs.map +1 -1
- package/dist/waterfall-chart-CTB2f5eh.cjs.map +1 -1
- package/dist/waterfall-chart-DwetaJFJ.mjs.map +1 -1
- package/package.json +5 -1
- package/dist/cms-layout-CGGJqbr0.cjs +0 -2
- package/dist/cms-layout-CGGJqbr0.cjs.map +0 -1
- package/dist/cms-layout-ePySxIQN.mjs +0 -2
- package/dist/cms-layout-ePySxIQN.mjs.map +0 -1
- package/dist/dialogs/detail-dialog/index.cjs.map +0 -1
- package/dist/dialogs/detail-dialog/index.mjs.map +0 -1
- package/dist/image-Cln0r7Eb.d.cts +0 -27
- package/dist/image-Cln0r7Eb.d.mts +0 -27
- package/dist/index-C9eXmnvk.d.cts +0 -36
- package/dist/index-C9eXmnvk.d.mts +0 -36
- package/dist/number-input-CqkegUWs.mjs +0 -2
- package/dist/number-input-kTh9zzr7.cjs +0 -2
- package/dist/payment-layout-Cb-Q8KD2.cjs +0 -2
- package/dist/sidebar-core-Bh0dZXsm.mjs +0 -2
- package/dist/sidebar-core-Bh0dZXsm.mjs.map +0 -1
- package/dist/sidebar-core-DQE6ymo4.cjs +0 -2
- package/dist/sidebar-core-DQE6ymo4.cjs.map +0 -1
- package/dist/simple-card-6P377r4A.d.cts +0 -29
- package/dist/simple-card-6P377r4A.d.mts +0 -29
- package/dist/statistic-8zBJMdRa.d.cts +0 -45
- package/dist/statistic-8zBJMdRa.d.mts +0 -45
- package/dist/text-editor-BQtIXOpM.mjs +0 -2
- package/dist/text-editor-DJYQXXtP.cjs +0 -2
package/dist/ui/chart.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.cjs","names":["ResponsiveContainer","Tooltip","Legend"],"sources":["../../packages/components/ui/chart.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useId, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { LegendPayload, TooltipContentProps } from 'recharts';\nimport { Legend, ResponsiveContainer, Tooltip } from 'recharts';\n\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = createContext<ChartContextProps | null>(null);\n\nexport const useChart = () => {\n const context = useContext(ChartContext);\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n return context;\n};\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n};\n\nexport const ChartContainer = ({ id, className, children, config, ...props }: ChartContainerProps) => {\n const uniqueId = useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n 'flex aspect-video justify-center text-xs',\n '[&_.recharts-cartesian-axis-tick_text]:fill-muted',\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n '[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border',\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n '[&_.recharts-radial-bar-background-sector]:fill-muted-muted',\n '[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted-muted',\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-layer]:outline-hidden',\n '[&_.recharts-sector]:outline-hidden',\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-surface]:outline-hidden',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n};\n\n/** Accepts CSS color notations (hex, rgb/hsl/oklch, var(...)) while rejecting CSS injection. */\nconst SAFE_CSS_COLOR_PATTERN = /^[a-zA-Z0-9#(),.%\\s/_-]+$/;\nconst SAFE_CSS_KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([key, itemConfig]) => (itemConfig.theme || itemConfig.color) && SAFE_CSS_KEY_PATTERN.test(key));\n\n if (!colorConfig.length) return null;\n\n const css = Object.entries(THEMES)\n .map(([theme, prefix]) => {\n const rules = colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof THEMES] || itemConfig.color;\n if (!color || !SAFE_CSS_COLOR_PATTERN.test(color)) return null;\n return ` --color-${key}: ${color};`;\n })\n .filter(Boolean)\n .join('\\n');\n return `${prefix} [data-chart=${id}] {\\n${rules}\\n}`;\n })\n .join('\\n');\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: values are sanitized against SAFE_CSS_* patterns above\n return <style dangerouslySetInnerHTML={{ __html: css }} />;\n};\n\nexport const ChartTooltip = Tooltip;\n\ntype TooltipItemPayload = NonNullable<TooltipContentProps<number | string, string>['payload']>[number];\n\nexport type ChartTooltipContentProps = React.ComponentProps<'div'> &\n Partial<Pick<TooltipContentProps<number | string, string>, 'active' | 'payload' | 'label' | 'labelFormatter' | 'formatter'>> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelClassName?: string;\n };\n\nexport const ChartTooltipContent = ({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) => {\n const { config } = useChart();\n\n const tooltipLabel = useMemo(() => {\n if (hideLabel || !payload?.length) return null;\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n if (!value) return null;\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) return null;\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n data-slot=\"chart-tooltip-content\"\n className={cn('border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-dropdown', className)}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={typeof item.dataKey === 'function' ? index : (item.dataKey ?? index)}\n className={cn('flex w-full flex-wrap items-stretch gap-2', '[&>svg]:text-muted [&>svg]:size-2.5', indicator === 'dot' && 'items-center')}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value as number | string, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'size-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div className={cn('flex flex-1 justify-between gap-2 leading-none', nestLabel ? 'items-end' : 'items-center')}>\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value !== undefined && (\n <span className=\"text-text-positive-strong font-number font-medium tabular-nums\">\n {typeof item.value === 'number' ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const ChartLegend = Legend;\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> & {\n payload?: readonly LegendPayload[];\n verticalAlign?: 'top' | 'bottom' | 'middle';\n hideIcon?: boolean;\n nameKey?: string;\n};\n\nexport const ChartLegendContent = ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }: ChartLegendContentProps) => {\n const { config } = useChart();\n\n if (!payload?.length) return null;\n\n return (\n <div data-slot=\"chart-legend-content\" className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload.map(item => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div key={`${item.value}`} className={cn('flex items-center gap-1.5', '[&>svg]:text-muted [&>svg]:size-3')}>\n {itemConfig?.icon && !hideIcon ? <itemConfig.icon /> : <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: item.color }} />}\n <span className=\"text-muted-strong\">{itemConfig?.label ?? item.value}</span>\n </div>\n );\n })}\n </div>\n );\n};\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: TooltipItemPayload | LegendPayload | undefined, key: string) => {\n if (typeof payload !== 'object' || payload === null) return undefined;\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null ? (payload.payload as Record<string, unknown>) : undefined;\n\n let configLabelKey: string = key;\n\n const record = payload as unknown as Record<string, unknown>;\n if (key in record && typeof record[key] === 'string') {\n configLabelKey = record[key] as string;\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === 'string') {\n configLabelKey = payloadPayload[key] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chart.cjs","names":["ResponsiveContainer","Tooltip","Legend"],"sources":["../../packages/components/ui/chart.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useId, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { LegendPayload, TooltipContentProps } from 'recharts';\nimport { Legend, ResponsiveContainer, Tooltip } from 'recharts';\n\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = createContext<ChartContextProps | null>(null);\n\nexport const useChart = () => {\n const context = useContext(ChartContext);\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n return context;\n};\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n};\n\nexport const ChartContainer = ({ id, className, children, config, ...props }: ChartContainerProps) => {\n const uniqueId = useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n 'flex aspect-video justify-center text-xs',\n '[&_.recharts-cartesian-axis-tick_text]:fill-muted',\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n '[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border',\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n '[&_.recharts-radial-bar-background-sector]:fill-muted-muted',\n '[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted-muted',\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-layer]:outline-hidden',\n '[&_.recharts-sector]:outline-hidden',\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-surface]:outline-hidden',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n};\n\n/** Accepts CSS color notations (hex, rgb/hsl/oklch, var(...)) while rejecting CSS injection. */\nconst SAFE_CSS_COLOR_PATTERN = /^[a-zA-Z0-9#(),.%\\s/_-]+$/;\nconst SAFE_CSS_KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([key, itemConfig]) => (itemConfig.theme || itemConfig.color) && SAFE_CSS_KEY_PATTERN.test(key));\n\n if (!colorConfig.length) return null;\n\n const css = Object.entries(THEMES)\n .map(([theme, prefix]) => {\n const rules = colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof THEMES] || itemConfig.color;\n if (!color || !SAFE_CSS_COLOR_PATTERN.test(color)) return null;\n return ` --color-${key}: ${color};`;\n })\n .filter(Boolean)\n .join('\\n');\n return `${prefix} [data-chart=${id}] {\\n${rules}\\n}`;\n })\n .join('\\n');\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: values are sanitized against SAFE_CSS_* patterns above\n return <style dangerouslySetInnerHTML={{ __html: css }} />;\n};\n\nexport const ChartTooltip = Tooltip;\n\ntype TooltipItemPayload = NonNullable<TooltipContentProps<number | string, string>['payload']>[number];\n\nexport type ChartTooltipContentProps = React.ComponentProps<'div'> &\n Partial<Pick<TooltipContentProps<number | string, string>, 'active' | 'payload' | 'label' | 'labelFormatter' | 'formatter'>> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelClassName?: string;\n };\n\nexport const ChartTooltipContent = ({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) => {\n const { config } = useChart();\n\n const tooltipLabel = useMemo(() => {\n if (hideLabel || !payload?.length) return null;\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n if (!value) return null;\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) return null;\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n data-slot=\"chart-tooltip-content\"\n className={cn('border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-dropdown', className)}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={typeof item.dataKey === 'function' ? index : (item.dataKey ?? index)}\n className={cn('flex w-full flex-wrap items-stretch gap-2', '[&>svg]:text-muted [&>svg]:size-2.5', indicator === 'dot' && 'items-center')}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value as number | string, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'size-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div className={cn('flex flex-1 justify-between gap-2 leading-none', nestLabel ? 'items-end' : 'items-center')}>\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value !== undefined && (\n <span className=\"text-text-positive-strong font-number font-medium tabular-nums\">\n {typeof item.value === 'number' ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const ChartLegend = Legend;\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> & {\n payload?: readonly LegendPayload[];\n verticalAlign?: 'top' | 'bottom' | 'middle';\n hideIcon?: boolean;\n nameKey?: string;\n};\n\nexport const ChartLegendContent = ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }: ChartLegendContentProps) => {\n const { config } = useChart();\n\n if (!payload?.length) return null;\n\n return (\n <div data-slot=\"chart-legend-content\" className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload.map(item => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div key={`${item.value}`} className={cn('flex items-center gap-1.5', '[&>svg]:text-muted [&>svg]:size-3')}>\n {itemConfig?.icon && !hideIcon ? <itemConfig.icon /> : <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: item.color }} />}\n <span className=\"text-muted-strong\">{itemConfig?.label ?? item.value}</span>\n </div>\n );\n })}\n </div>\n );\n};\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: TooltipItemPayload | LegendPayload | undefined, key: string) => {\n if (typeof payload !== 'object' || payload === null) return undefined;\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null ? (payload.payload as Record<string, unknown>) : undefined;\n\n let configLabelKey: string = key;\n\n const record = payload as unknown as Record<string, unknown>;\n if (key in record && typeof record[key] === 'string') {\n configLabelKey = record[key] as string;\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === 'string') {\n configLabelKey = payloadPayload[key] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n};\n"],"mappings":"wMASA,MAAM,EAAS,CAAE,MAAO,GAAI,KAAM,OAAQ,EAapC,GAAA,EAAA,EAAA,cAAA,CAAuD,IAAI,EAEpD,MAAiB,CAC5B,IAAM,GAAA,EAAA,EAAA,WAAA,CAAqB,CAAY,EACvC,GAAI,CAAC,EACH,MAAU,MAAM,mDAAmD,EAErE,OAAO,CACT,EAOa,GAAkB,CAAE,KAAI,YAAW,WAAU,SAAQ,GAAG,KAAiC,CACpG,IAAM,GAAA,EAAA,EAAA,MAAA,CAAiB,EACjB,EAAU,SAAS,GAAM,EAAS,QAAQ,KAAM,EAAE,IAExD,OACE,EAAA,EAAA,IAAA,CAAC,EAAa,SAAd,CAAuB,MAAO,CAAE,QAAO,EACrC,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,YAAU,QACV,aAAY,EACZ,WAAA,EAAA,EAAA,GAAA,CACE,2CACA,oDACA,oEACA,4DACA,yDACA,8DACA,mEACA,6DACA,sDACA,qCACA,sCACA,yDACA,uCACA,CACF,EACA,GAAI,EAnBN,SAAA,EAqBE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAY,GAAI,EAAiB,QAAS,CAAA,GAC1C,EAAA,EAAA,IAAA,CAACA,EAAAA,oBAAD,CAAsB,UAA8B,CAAA,CACjD,GACgB,CAAA,CAE3B,EAGM,EAAyB,4BACzB,EAAuB,mBAEhB,GAAc,CAAE,KAAI,YAAkD,CACjF,IAAM,EAAc,OAAO,QAAQ,CAAM,CAAC,CAAC,QAAQ,CAAC,EAAK,MAAiB,EAAW,OAAS,EAAW,QAAU,EAAqB,KAAK,CAAG,CAAC,EAmBjJ,OAjBK,EAAY,QAiBV,EAAA,EAAA,IAAA,CAAC,QAAD,CAAO,wBAAyB,CAAE,OAf7B,OAAO,QAAQ,CAAM,CAAC,CAC/B,KAAK,CAAC,EAAO,KASL,GAAG,EAAO,eAAe,EAAG,OARrB,EACX,KAAK,CAAC,EAAK,KAAgB,CAC1B,IAAM,EAAQ,EAAW,QAAQ,IAAiC,EAAW,MAE7E,MADI,CAAC,GAAS,CAAC,EAAuB,KAAK,CAAK,EAAU,KACnD,aAAa,EAAI,IAAI,EAAM,EACpC,CAAC,CAAC,CACD,OAAO,OAAO,CAAC,CACf,KAAK;CACsC,EAAE,IACjD,CAAC,CACD,KAAK;CAG2C,CAAE,CAAI,CAAA,EAjBzB,IAkBlC,EAEa,EAAeC,EAAAA,QAcf,GAAuB,CAClC,SACA,UACA,YACA,YAAY,MACZ,YAAY,GACZ,gBAAgB,GAChB,QACA,iBACA,iBACA,YACA,QACA,UACA,cAC8B,CAC9B,GAAM,CAAE,UAAW,EAAS,EAEtB,GAAA,EAAA,EAAA,QAAA,KAA6B,CACjC,GAAI,GAAa,CAAC,GAAS,OAAQ,OAAO,KAE1C,GAAM,CAAC,GAAQ,EACT,EAAM,GAAG,GAAY,GAAM,SAAW,GAAM,MAAQ,UACpD,EAAa,EAA4B,EAAQ,EAAM,CAAG,EAC1D,EAAQ,CAAC,GAAY,OAAO,GAAU,SAAW,EAAO,EAA6B,EAAE,OAAS,EAAQ,GAAY,MAM1H,OAJI,GACK,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,WAAA,EAAA,EAAA,GAAA,CAAc,cAAe,CAAc,EAAI,SAAA,EAAe,EAAO,CAAO,CAAO,CAAA,EAE5F,GACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,WAAA,EAAA,EAAA,GAAA,CAAc,cAAe,CAAc,EAAI,SAAA,CAAW,CAAA,EADnD,IAErB,EAAG,CAAC,EAAO,EAAgB,EAAS,EAAW,EAAgB,EAAQ,CAAQ,CAAC,EAEhF,GAAI,CAAC,GAAU,CAAC,GAAS,OAAQ,OAAO,KAExC,IAAM,EAAY,EAAQ,SAAW,GAAK,IAAc,MAExD,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,YAAU,wBACV,WAAA,EAAA,EAAA,GAAA,CAAc,+HAAgI,CAAS,EAFzJ,SAAA,CAII,EAA2B,KAAf,GACd,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,eACZ,SAAA,EAAQ,KAAK,EAAM,IAAU,CAC5B,IAAM,EAAM,GAAG,GAAW,EAAK,MAAQ,EAAK,SAAW,UACjD,EAAa,EAA4B,EAAQ,EAAM,CAAG,EAC1D,EAAiB,GAAS,EAAK,SAAS,MAAQ,EAAK,MAE3D,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAEE,WAAA,EAAA,EAAA,GAAA,CAAc,4CAA6C,sCAAuC,IAAc,OAAS,cAAc,EAEtI,SAAA,GAAa,GAAM,QAAU,IAAA,IAAa,EAAK,KAC9C,EAAU,EAAK,MAA0B,OAAO,EAAK,IAAI,EAAG,EAAM,EAAO,EAAK,OAAO,GAErF,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,GAAY,MACX,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAkB,CAAA,EAElB,CAAC,IACC,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,WAAA,EAAA,EAAA,GAAA,CAAc,iEAAkE,CAC9E,WAAY,IAAc,MAC1B,MAAO,IAAc,OACrB,kDAAmD,IAAc,SACjE,SAAU,GAAa,IAAc,QACvC,CAAC,EACD,MACE,CACE,aAAc,EACd,iBAAkB,CACpB,CAEH,CAAA,GAGL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,WAAA,EAAA,EAAA,GAAA,CAAc,iDAAkD,EAAY,YAAc,cAAc,EAA7G,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,eAAf,SAAA,CACG,EAAY,EAAe,MAC5B,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,aAAc,SAAA,GAAY,OAAS,EAAK,IAAW,CAAA,CAChE,CACJ,CAAA,EAAA,EAAK,QAAU,IAAA,KACd,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,iEACb,SAAA,OAAO,EAAK,OAAU,SAAW,EAAK,MAAM,eAAe,EAAI,EAAK,KACjE,CAAA,CAEL,CACL,CAAA,CAAA,CAAA,CAAA,CAED,EAxCE,OAAO,EAAK,SAAY,WAAa,EAAS,EAAK,SAAW,CAwChE,CAET,CAAC,CACE,CAAA,CACF,GAET,EAEa,EAAcC,EAAAA,OASd,GAAsB,CAAE,YAAW,WAAW,GAAO,UAAS,gBAAgB,SAAU,aAAuC,CAC1I,GAAM,CAAE,UAAW,EAAS,EAI5B,OAFK,GAAS,QAGZ,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,YAAU,uBAAuB,WAAA,EAAA,EAAA,GAAA,CAAc,yCAA0C,IAAkB,MAAQ,OAAS,OAAQ,CAAS,EAC/I,SAAA,EAAQ,IAAI,GAAQ,CACnB,IAAM,EAAM,GAAG,GAAW,EAAK,SAAW,UACpC,EAAa,EAA4B,EAAQ,EAAM,CAAG,EAEhE,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAA2B,WAAA,EAAA,EAAA,GAAA,CAAc,4BAA6B,mCAAmC,EAAzG,SAAA,CACG,GAAY,MAAQ,CAAC,GAAW,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAkB,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gCAAgC,MAAO,CAAE,gBAAiB,EAAK,KAAM,CAAI,CAAA,GAC/I,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,oBAAqB,SAAA,GAAY,OAAS,EAAK,KAAY,CAAA,CACxE,CAHK,EAAA,GAAG,EAAK,OAGb,CAET,CAAC,CACE,CAAA,EAfsB,IAiB/B,EAEM,GAA+B,EAAqB,EAAyD,IAAgB,CACjI,GAAI,OAAO,GAAY,WAAY,EAAkB,OAErD,IAAM,EACJ,YAAa,GAAW,OAAO,EAAQ,SAAY,UAAY,EAAQ,UAAY,KAAQ,EAAQ,QAAsC,IAAA,GAEvI,EAAyB,EAEvB,EAAS,EAOf,OANI,KAAO,GAAU,OAAO,EAAO,IAAS,SAC1C,EAAiB,EAAO,GACf,GAAkB,KAAO,GAAkB,OAAO,EAAe,IAAS,WACnF,EAAiB,EAAe,IAG3B,KAAkB,EAAS,EAAO,GAAkB,EAAO,EACpE"}
|
package/dist/ui/chart.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ChartLegendContent, c as ChartTooltip, d as useChart, i as ChartLegend, l as ChartTooltipContent, n as ChartContainer, o as ChartLegendContentProps, r as ChartContainerProps, s as ChartStyle, t as ChartConfig, u as ChartTooltipContentProps } from "../chart-
|
|
1
|
+
import { a as ChartLegendContent, c as ChartTooltip, d as useChart, i as ChartLegend, l as ChartTooltipContent, n as ChartContainer, o as ChartLegendContentProps, r as ChartContainerProps, s as ChartStyle, t as ChartConfig, u as ChartTooltipContentProps } from "../chart-D8tNf0_6.cjs";
|
|
2
2
|
export { ChartConfig, ChartContainer, ChartContainerProps, ChartLegend, ChartLegendContent, ChartLegendContentProps, ChartStyle, ChartTooltip, ChartTooltipContent, ChartTooltipContentProps, useChart };
|
package/dist/ui/chart.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ChartLegendContent, c as ChartTooltip, d as useChart, i as ChartLegend, l as ChartTooltipContent, n as ChartContainer, o as ChartLegendContentProps, r as ChartContainerProps, s as ChartStyle, t as ChartConfig, u as ChartTooltipContentProps } from "../chart-
|
|
1
|
+
import { a as ChartLegendContent, c as ChartTooltip, d as useChart, i as ChartLegend, l as ChartTooltipContent, n as ChartContainer, o as ChartLegendContentProps, r as ChartContainerProps, s as ChartStyle, t as ChartConfig, u as ChartTooltipContentProps } from "../chart-D8tNf0_6.mjs";
|
|
2
2
|
export { ChartConfig, ChartContainer, ChartContainerProps, ChartLegend, ChartLegendContent, ChartLegendContentProps, ChartStyle, ChartTooltip, ChartTooltipContent, ChartTooltipContentProps, useChart };
|
package/dist/ui/chart.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";import{createContext as e,useContext as t,useId as n,useMemo as r}from"react";import{cn as i}from"@customafk/react-toolkit/utils";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";import{Legend as c,ResponsiveContainer as l,Tooltip as u}from"recharts";const d={light:``,dark:`.dark`},f=e(null),p=()=>{let e=t(f);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e},m=({id:e,className:t,children:r,config:a,...c})=>{let u=n(),d=`chart-${e||u.replace(/:/g,``)}`;return o(f.Provider,{value:{config:a},children:s(`div`,{"data-slot":`chart`,"data-chart":d,className:i(`flex aspect-video justify-center text-xs`,`[&_.recharts-cartesian-axis-tick_text]:fill-muted`,`[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50`,`[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border`,`[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border`,`[&_.recharts-radial-bar-background-sector]:fill-muted-muted`,`[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted-muted`,`[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border`,`[&_.recharts-dot[stroke='#fff']]:stroke-transparent`,`[&_.recharts-layer]:outline-hidden`,`[&_.recharts-sector]:outline-hidden`,`[&_.recharts-sector[stroke='#fff']]:stroke-transparent`,`[&_.recharts-surface]:outline-hidden`,t),...c,children:[o(_,{id:d,config:a}),o(l,{children:r})]})})},h=/^[a-zA-Z0-9#(),.%\s/_-]+$/,g=/^[a-zA-Z0-9_-]+$/,_=({id:e,config:t})=>{let n=Object.entries(t).filter(([e,t])=>(t.theme||t.color)&&g.test(e));return n.length?o(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(d).map(([t,r])=>`${r} [data-chart=${e}] {\n${n.map(([e,n])=>{let r=n.theme?.[t]||n.color;return!r||!h.test(r)?null:` --color-${e}: ${r};`}).filter(Boolean).join(`
|
|
2
2
|
`)}\n}`).join(`
|
|
3
|
-
`)}}):null},v=u,y=({active:e,payload:t,className:n,indicator:c=`dot`,hideLabel:l=!1,hideIndicator:u=!1,label:d,labelFormatter:f,labelClassName:m,formatter:h,color:g,nameKey:_,labelKey:v})=>{let{config:y}=p(),b=r(()=>{if(l||!t?.length)return null;let[e]=t,n
|
|
3
|
+
`)}}):null},v=u,y=({active:e,payload:t,className:n,indicator:c=`dot`,hideLabel:l=!1,hideIndicator:u=!1,label:d,labelFormatter:f,labelClassName:m,formatter:h,color:g,nameKey:_,labelKey:v})=>{let{config:y}=p(),b=r(()=>{if(l||!t?.length)return null;let[e]=t,n=`${v||e?.dataKey||e?.name||`value`}`,r=S(y,e,n),a=!v&&typeof d==`string`?y[d]?.label||d:r?.label;return f?o(`div`,{className:i(`font-medium`,m),children:f(a,t)}):a?o(`div`,{className:i(`font-medium`,m),children:a}):null},[d,f,t,l,m,y,v]);if(!e||!t?.length)return null;let x=t.length===1&&c!==`dot`;return s(`div`,{"data-slot":`chart-tooltip-content`,className:i(`border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-dropdown`,n),children:[x?null:b,o(`div`,{className:`grid gap-1.5`,children:t.map((e,t)=>{let n=`${_||e.name||e.dataKey||`value`}`,r=S(y,e,n),l=g||e.payload?.fill||e.color;return o(`div`,{className:i(`flex w-full flex-wrap items-stretch gap-2`,`[&>svg]:text-muted [&>svg]:size-2.5`,c===`dot`&&`items-center`),children:h&&e?.value!==void 0&&e.name?h(e.value,String(e.name),e,t,e.payload):s(a,{children:[r?.icon?o(r.icon,{}):!u&&o(`div`,{className:i(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"size-2.5":c===`dot`,"w-1":c===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":c===`dashed`,"my-0.5":x&&c===`dashed`}),style:{"--color-bg":l,"--color-border":l}}),s(`div`,{className:i(`flex flex-1 justify-between gap-2 leading-none`,x?`items-end`:`items-center`),children:[s(`div`,{className:`grid gap-1.5`,children:[x?b:null,o(`span`,{className:`text-muted`,children:r?.label||e.name})]}),e.value!==void 0&&o(`span`,{className:`text-text-positive-strong font-number font-medium tabular-nums`,children:typeof e.value==`number`?e.value.toLocaleString():e.value})]})]})},typeof e.dataKey==`function`?t:e.dataKey??t)})})]})},b=c,x=({className:e,hideIcon:t=!1,payload:n,verticalAlign:r=`bottom`,nameKey:a})=>{let{config:c}=p();return n?.length?o(`div`,{"data-slot":`chart-legend-content`,className:i(`flex items-center justify-center gap-4`,r===`top`?`pb-3`:`pt-3`,e),children:n.map(e=>{let n=`${a||e.dataKey||`value`}`,r=S(c,e,n);return s(`div`,{className:i(`flex items-center gap-1.5`,`[&>svg]:text-muted [&>svg]:size-3`),children:[r?.icon&&!t?o(r.icon,{}):o(`div`,{className:`size-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),o(`span`,{className:`text-muted-strong`,children:r?.label??e.value})]},`${e.value}`)})}):null},S=(e,t,n)=>{if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n,a=t;return n in a&&typeof a[n]==`string`?i=a[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]};export{m as ChartContainer,b as ChartLegend,x as ChartLegendContent,_ as ChartStyle,v as ChartTooltip,y as ChartTooltipContent,p as useChart};
|
|
4
4
|
//# sourceMappingURL=chart.mjs.map
|
package/dist/ui/chart.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.mjs","names":[],"sources":["../../packages/components/ui/chart.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useId, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { LegendPayload, TooltipContentProps } from 'recharts';\nimport { Legend, ResponsiveContainer, Tooltip } from 'recharts';\n\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = createContext<ChartContextProps | null>(null);\n\nexport const useChart = () => {\n const context = useContext(ChartContext);\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n return context;\n};\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n};\n\nexport const ChartContainer = ({ id, className, children, config, ...props }: ChartContainerProps) => {\n const uniqueId = useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n 'flex aspect-video justify-center text-xs',\n '[&_.recharts-cartesian-axis-tick_text]:fill-muted',\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n '[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border',\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n '[&_.recharts-radial-bar-background-sector]:fill-muted-muted',\n '[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted-muted',\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-layer]:outline-hidden',\n '[&_.recharts-sector]:outline-hidden',\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-surface]:outline-hidden',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n};\n\n/** Accepts CSS color notations (hex, rgb/hsl/oklch, var(...)) while rejecting CSS injection. */\nconst SAFE_CSS_COLOR_PATTERN = /^[a-zA-Z0-9#(),.%\\s/_-]+$/;\nconst SAFE_CSS_KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([key, itemConfig]) => (itemConfig.theme || itemConfig.color) && SAFE_CSS_KEY_PATTERN.test(key));\n\n if (!colorConfig.length) return null;\n\n const css = Object.entries(THEMES)\n .map(([theme, prefix]) => {\n const rules = colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof THEMES] || itemConfig.color;\n if (!color || !SAFE_CSS_COLOR_PATTERN.test(color)) return null;\n return ` --color-${key}: ${color};`;\n })\n .filter(Boolean)\n .join('\\n');\n return `${prefix} [data-chart=${id}] {\\n${rules}\\n}`;\n })\n .join('\\n');\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: values are sanitized against SAFE_CSS_* patterns above\n return <style dangerouslySetInnerHTML={{ __html: css }} />;\n};\n\nexport const ChartTooltip = Tooltip;\n\ntype TooltipItemPayload = NonNullable<TooltipContentProps<number | string, string>['payload']>[number];\n\nexport type ChartTooltipContentProps = React.ComponentProps<'div'> &\n Partial<Pick<TooltipContentProps<number | string, string>, 'active' | 'payload' | 'label' | 'labelFormatter' | 'formatter'>> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelClassName?: string;\n };\n\nexport const ChartTooltipContent = ({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) => {\n const { config } = useChart();\n\n const tooltipLabel = useMemo(() => {\n if (hideLabel || !payload?.length) return null;\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n if (!value) return null;\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) return null;\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n data-slot=\"chart-tooltip-content\"\n className={cn('border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-dropdown', className)}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={typeof item.dataKey === 'function' ? index : (item.dataKey ?? index)}\n className={cn('flex w-full flex-wrap items-stretch gap-2', '[&>svg]:text-muted [&>svg]:size-2.5', indicator === 'dot' && 'items-center')}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value as number | string, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'size-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div className={cn('flex flex-1 justify-between gap-2 leading-none', nestLabel ? 'items-end' : 'items-center')}>\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value !== undefined && (\n <span className=\"text-text-positive-strong font-number font-medium tabular-nums\">\n {typeof item.value === 'number' ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const ChartLegend = Legend;\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> & {\n payload?: readonly LegendPayload[];\n verticalAlign?: 'top' | 'bottom' | 'middle';\n hideIcon?: boolean;\n nameKey?: string;\n};\n\nexport const ChartLegendContent = ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }: ChartLegendContentProps) => {\n const { config } = useChart();\n\n if (!payload?.length) return null;\n\n return (\n <div data-slot=\"chart-legend-content\" className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload.map(item => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div key={`${item.value}`} className={cn('flex items-center gap-1.5', '[&>svg]:text-muted [&>svg]:size-3')}>\n {itemConfig?.icon && !hideIcon ? <itemConfig.icon /> : <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: item.color }} />}\n <span className=\"text-muted-strong\">{itemConfig?.label ?? item.value}</span>\n </div>\n );\n })}\n </div>\n );\n};\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: TooltipItemPayload | LegendPayload | undefined, key: string) => {\n if (typeof payload !== 'object' || payload === null) return undefined;\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null ? (payload.payload as Record<string, unknown>) : undefined;\n\n let configLabelKey: string = key;\n\n const record = payload as unknown as Record<string, unknown>;\n if (key in record && typeof record[key] === 'string') {\n configLabelKey = record[key] as string;\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === 'string') {\n configLabelKey = payloadPayload[key] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chart.mjs","names":[],"sources":["../../packages/components/ui/chart.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useId, useMemo } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport type { LegendPayload, TooltipContentProps } from 'recharts';\nimport { Legend, ResponsiveContainer, Tooltip } from 'recharts';\n\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = createContext<ChartContextProps | null>(null);\n\nexport const useChart = () => {\n const context = useContext(ChartContext);\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n return context;\n};\n\nexport type ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n};\n\nexport const ChartContainer = ({ id, className, children, config, ...props }: ChartContainerProps) => {\n const uniqueId = useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n 'flex aspect-video justify-center text-xs',\n '[&_.recharts-cartesian-axis-tick_text]:fill-muted',\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n '[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border',\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n '[&_.recharts-radial-bar-background-sector]:fill-muted-muted',\n '[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted-muted',\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-layer]:outline-hidden',\n '[&_.recharts-sector]:outline-hidden',\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n '[&_.recharts-surface]:outline-hidden',\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n};\n\n/** Accepts CSS color notations (hex, rgb/hsl/oklch, var(...)) while rejecting CSS injection. */\nconst SAFE_CSS_COLOR_PATTERN = /^[a-zA-Z0-9#(),.%\\s/_-]+$/;\nconst SAFE_CSS_KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([key, itemConfig]) => (itemConfig.theme || itemConfig.color) && SAFE_CSS_KEY_PATTERN.test(key));\n\n if (!colorConfig.length) return null;\n\n const css = Object.entries(THEMES)\n .map(([theme, prefix]) => {\n const rules = colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof THEMES] || itemConfig.color;\n if (!color || !SAFE_CSS_COLOR_PATTERN.test(color)) return null;\n return ` --color-${key}: ${color};`;\n })\n .filter(Boolean)\n .join('\\n');\n return `${prefix} [data-chart=${id}] {\\n${rules}\\n}`;\n })\n .join('\\n');\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: values are sanitized against SAFE_CSS_* patterns above\n return <style dangerouslySetInnerHTML={{ __html: css }} />;\n};\n\nexport const ChartTooltip = Tooltip;\n\ntype TooltipItemPayload = NonNullable<TooltipContentProps<number | string, string>['payload']>[number];\n\nexport type ChartTooltipContentProps = React.ComponentProps<'div'> &\n Partial<Pick<TooltipContentProps<number | string, string>, 'active' | 'payload' | 'label' | 'labelFormatter' | 'formatter'>> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelClassName?: string;\n };\n\nexport const ChartTooltipContent = ({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) => {\n const { config } = useChart();\n\n const tooltipLabel = useMemo(() => {\n if (hideLabel || !payload?.length) return null;\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label as keyof typeof config]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n if (!value) return null;\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) return null;\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n data-slot=\"chart-tooltip-content\"\n className={cn('border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-dropdown', className)}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={typeof item.dataKey === 'function' ? index : (item.dataKey ?? index)}\n className={cn('flex w-full flex-wrap items-stretch gap-2', '[&>svg]:text-muted [&>svg]:size-2.5', indicator === 'dot' && 'items-center')}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value as number | string, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {\n 'size-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div className={cn('flex flex-1 justify-between gap-2 leading-none', nestLabel ? 'items-end' : 'items-center')}>\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value !== undefined && (\n <span className=\"text-text-positive-strong font-number font-medium tabular-nums\">\n {typeof item.value === 'number' ? item.value.toLocaleString() : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const ChartLegend = Legend;\n\nexport type ChartLegendContentProps = React.ComponentProps<'div'> & {\n payload?: readonly LegendPayload[];\n verticalAlign?: 'top' | 'bottom' | 'middle';\n hideIcon?: boolean;\n nameKey?: string;\n};\n\nexport const ChartLegendContent = ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }: ChartLegendContentProps) => {\n const { config } = useChart();\n\n if (!payload?.length) return null;\n\n return (\n <div data-slot=\"chart-legend-content\" className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload.map(item => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div key={`${item.value}`} className={cn('flex items-center gap-1.5', '[&>svg]:text-muted [&>svg]:size-3')}>\n {itemConfig?.icon && !hideIcon ? <itemConfig.icon /> : <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: item.color }} />}\n <span className=\"text-muted-strong\">{itemConfig?.label ?? item.value}</span>\n </div>\n );\n })}\n </div>\n );\n};\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: TooltipItemPayload | LegendPayload | undefined, key: string) => {\n if (typeof payload !== 'object' || payload === null) return undefined;\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null ? (payload.payload as Record<string, unknown>) : undefined;\n\n let configLabelKey: string = key;\n\n const record = payload as unknown as Record<string, unknown>;\n if (key in record && typeof record[key] === 'string') {\n configLabelKey = record[key] as string;\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === 'string') {\n configLabelKey = payloadPayload[key] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n};\n"],"mappings":"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"}
|
package/dist/ui/checkbox.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.cjs","names":["CheckboxPrimitive","CheckIcon"],"sources":["../../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"+MAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,SAAkB,KAAnB,CACE,YAAU,WACV,WAAA,EAAA,EAAA,GAAA,CACE,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,CACF,EACA,GAAI,
|
|
1
|
+
{"version":3,"file":"checkbox.cjs","names":["CheckboxPrimitive","CheckIcon"],"sources":["../../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"+MAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,SAAkB,KAAnB,CACE,YAAU,WACV,WAAA,EAAA,EAAA,GAAA,CACE,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,CACF,EACA,GAAI,EAEJ,UAAA,EAAA,EAAA,IAAA,CAACA,EAAAA,SAAkB,UAAnB,CAA6B,YAAU,qBAAqB,UAAU,gEACpE,UAAA,EAAA,EAAA,IAAA,CAACC,EAAAA,UAAD,CAAW,KAAM,EAAK,CAAA,CACK,CAAA,CACP,CAAA,CAE5B"}
|
package/dist/ui/checkbox.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Checkbox } from "../checkbox-
|
|
1
|
+
import { t as Checkbox } from "../checkbox-Cuc-_UcF.cjs";
|
|
2
2
|
export { Checkbox };
|
package/dist/ui/checkbox.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Checkbox } from "../checkbox-
|
|
1
|
+
import { t as Checkbox } from "../checkbox-Cuc-_UcF.mjs";
|
|
2
2
|
export { Checkbox };
|
package/dist/ui/checkbox.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.mjs","names":["CheckboxPrimitive"],"sources":["../../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"sLAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAACA,EAAkB,KAAnB,CACE,YAAU,WACV,UAAW,EACT,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,CACF,EACA,GAAI,
|
|
1
|
+
{"version":3,"file":"checkbox.mjs","names":["CheckboxPrimitive"],"sources":["../../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"sLAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAACA,EAAkB,KAAnB,CACE,YAAU,WACV,UAAW,EACT,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,CACF,EACA,GAAI,EAEJ,SAAA,EAACA,EAAkB,UAAnB,CAA6B,YAAU,qBAAqB,UAAU,gEACpE,SAAA,EAAC,EAAD,CAAW,KAAM,EAAK,CAAA,CACK,CAAA,CACP,CAAA,CAE5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "../collapsible-
|
|
1
|
+
import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "../collapsible-D3MS6pMC.cjs";
|
|
2
2
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "../collapsible-
|
|
1
|
+
import { n as CollapsibleContent, r as CollapsibleTrigger, t as Collapsible } from "../collapsible-D3MS6pMC.mjs";
|
|
2
2
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../combobox-kp_kPY8o.cjs");exports.Combobox=e.t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{t as e}from"../combobox-C64Rvd7n.mjs";export{e as Combobox};
|
package/dist/ui/command.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./dialog.cjs");let t=require("lucide-react"),n=require("@customafk/react-toolkit/utils"),r=require("react/jsx-runtime"),i=require("cmdk");function a({className:e,...t}){return(0,r.jsx)(i.Command,{"data-slot":`command`,className:(0,n.cn)(`flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive`,e),...t})}function o({title:t=`Command Palette`,description:i=`Search for a command to run...`,children:o,className:s,showCloseButton:c=!0,...l}){return(0,r.jsxs)(e.Dialog,{...l,children:[(0,r.jsxs)(e.DialogHeader,{className:`sr-only`,children:[(0,r.jsx)(e.DialogTitle,{children:t}),(0,r.jsx)(e.DialogDescription,{children:i})]}),(0,r.jsx)(e.DialogContent,{className:(0,n.cn)(`overflow-hidden p-0`,s),showCloseButton:c,children:(0,r.jsx)(a,{className:(0,n.cn)(`**:[[cmdk-group-heading]]:text-text-positive-muted`,`**:data-[slot=command-input-wrapper]:h-12`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group]]:px-2`,`[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0`,`[&_[cmdk-input-wrapper]_svg]:size-5`,`**:[[cmdk-input]]:h-12`,`**:[[cmdk-item]]:px-2`,`**:[[cmdk-item]]:py-3`,`[&_[cmdk-item]_svg]:size-5`),children:o})})]})}function s({className:e,...a}){return(0,r.jsxs)(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-border-weak border-b px-3`,children:[(0,r.jsx)(t.SearchIcon,{className:`size-4 shrink-0 opacity-50`}),(0,r.jsx)(i.Command.Input,{"data-slot":`command-input`,className:(0,n.cn)(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden`,`placeholder:text-text-positive-muted`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...a})]})}function c({className:e,...t}){return(0,r.jsx)(i.Command.List,{"data-slot":`command-list`,className:(0,n.cn)(`max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden`,e),...t})}function l({...e}){return(0,r.jsx)(i.Command.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function u({className:e,...t}){return(0,r.jsx)(i.Command.Group,{"data-slot":`command-group`,className:(0,n.cn)(`text-text-positive`,`overflow-hidden p-1`,`**:[[cmdk-group-heading]]:text-text-positive-weak`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs`,`**:[[cmdk-group-heading]]:font-medium`,e),...t})}function d({className:e,...t}){return(0,r.jsx)(i.Command.Separator,{"data-slot":`command-separator`,className:(0,n.cn)(`-mx-1 h-px bg-border-weak`,e),...t})}function f({className:e,...t}){return(0,r.jsx)(i.Command.Item,{"data-slot":`command-item`,className:(0,n.cn)(`relative flex cursor-pointer select-none items-center gap-2 rounded
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./dialog.cjs");let t=require("lucide-react"),n=require("@customafk/react-toolkit/utils"),r=require("react/jsx-runtime"),i=require("cmdk");function a({className:e,...t}){return(0,r.jsx)(i.Command,{"data-slot":`command`,className:(0,n.cn)(`flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive`,e),...t})}function o({title:t=`Command Palette`,description:i=`Search for a command to run...`,children:o,className:s,showCloseButton:c=!0,...l}){return(0,r.jsxs)(e.Dialog,{...l,children:[(0,r.jsxs)(e.DialogHeader,{className:`sr-only`,children:[(0,r.jsx)(e.DialogTitle,{children:t}),(0,r.jsx)(e.DialogDescription,{children:i})]}),(0,r.jsx)(e.DialogContent,{className:(0,n.cn)(`overflow-hidden p-0`,s),showCloseButton:c,children:(0,r.jsx)(a,{className:(0,n.cn)(`**:[[cmdk-group-heading]]:text-text-positive-muted`,`**:data-[slot=command-input-wrapper]:h-12`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group]]:px-2`,`[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0`,`[&_[cmdk-input-wrapper]_svg]:size-5`,`**:[[cmdk-input]]:h-12`,`**:[[cmdk-item]]:px-2`,`**:[[cmdk-item]]:py-3`,`[&_[cmdk-item]_svg]:size-5`),children:o})})]})}function s({className:e,...a}){return(0,r.jsxs)(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-border-weak border-b px-3`,children:[(0,r.jsx)(t.SearchIcon,{className:`size-4 shrink-0 opacity-50`}),(0,r.jsx)(i.Command.Input,{"data-slot":`command-input`,className:(0,n.cn)(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden`,`placeholder:text-text-positive-muted`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...a})]})}function c({className:e,...t}){return(0,r.jsx)(i.Command.List,{"data-slot":`command-list`,className:(0,n.cn)(`max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden`,e),...t})}function l({...e}){return(0,r.jsx)(i.Command.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function u({className:e,...t}){return(0,r.jsx)(i.Command.Group,{"data-slot":`command-group`,className:(0,n.cn)(`text-text-positive`,`overflow-hidden p-1`,`**:[[cmdk-group-heading]]:text-text-positive-weak`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group-items]]:space-y-1`,e),...t})}function d({className:e,...t}){return(0,r.jsx)(i.Command.Separator,{"data-slot":`command-separator`,className:(0,n.cn)(`-mx-1 h-px bg-border-weak`,e),...t})}function f({className:e,...t}){return(0,r.jsx)(i.Command.Item,{"data-slot":`command-item`,className:(0,n.cn)(`relative flex cursor-pointer select-none items-center gap-2 rounded p-2.5 text-sm outline-hidden transition-all duration-300`,`active:ring-border`,`active:opacity-60`,`data-[selected=true]:bg-muted-muted`,`data-[selected=true]:text-text-positive-strong`,`data-[disabled=true]:opacity-50`,`data-[disabled=true]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg]:pointer-events-none`,`[&_svg:not([class*='size-'])]:size-4`,`[&_svg:not([class*='text-'])]:text-text-positive-muted`,e),...t})}function p({className:e,...t}){return(0,r.jsx)(`span`,{"data-slot":`command-shortcut`,className:(0,n.cn)(`ml-auto text-text-positive-muted text-xs tracking-widest`,e),...t})}exports.Command=a,exports.CommandDialog=o,exports.CommandEmpty=l,exports.CommandGroup=u,exports.CommandInput=s,exports.CommandItem=f,exports.CommandList=c,exports.CommandSeparator=d,exports.CommandShortcut=p;
|
|
2
2
|
//# sourceMappingURL=command.cjs.map
|
package/dist/ui/command.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.cjs","names":["CommandPrimitive","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","SearchIcon"],"sources":["../../packages/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\n/**\n * A cmdk-powered command palette for searching and executing commands.\n *\n * @example\n * ```tsx\n * import {\n * Command, CommandInput, CommandList, CommandEmpty,\n * CommandGroup, CommandItem,\n * } from '@customafk/lunas-ui/ui/command';\n *\n * <Command>\n * <CommandInput placeholder=\"Type a command…\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n */\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn('flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive', className)}\n {...props}\n />\n );\n}\n\n/**\n * A Command palette rendered inside a Dialog overlay.\n *\n * @param title - Accessible title for the dialog (screen-reader only).\n * @param description - Accessible description for the dialog (screen-reader only).\n * @param showCloseButton - Whether to show the built-in close button on the dialog.\n */\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)} showCloseButton={showCloseButton}>\n <Command\n className={cn(\n '**:[[cmdk-group-heading]]:text-text-positive-muted',\n '**:data-[slot=command-input-wrapper]:h-12',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group]]:px-2',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0',\n '[&_[cmdk-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2',\n '**:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:size-5'\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input with a leading search icon that filters CommandItems in real time. */\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-border-weak border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden',\n 'placeholder:text-text-positive-muted',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\n/** Scrollable list that renders filtered CommandGroups and CommandItems. */\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return <CommandPrimitive.List data-slot=\"command-list\" className={cn('max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden', className)} {...props} />;\n}\n\n/** Fallback message displayed when no CommandItems match the current search query. */\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"py-6 text-center text-sm\" {...props} />;\n}\n\n/** Groups CommandItems under an optional heading label. */\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-text-positive',\n 'overflow-hidden p-1',\n '**:[[cmdk-group-heading]]:text-text-positive-weak',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs',\n '**:[[cmdk-group-heading]]:font-medium',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups in a CommandList. */\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return <CommandPrimitive.Separator data-slot=\"command-separator\" className={cn('-mx-1 h-px bg-border-weak', className)} {...props} />;\n}\n\n/** A selectable row inside a CommandGroup that is highlighted when active or hovered. */\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded
|
|
1
|
+
{"version":3,"file":"command.cjs","names":["CommandPrimitive","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","SearchIcon"],"sources":["../../packages/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\n/**\n * A cmdk-powered command palette for searching and executing commands.\n *\n * @example\n * ```tsx\n * import {\n * Command, CommandInput, CommandList, CommandEmpty,\n * CommandGroup, CommandItem,\n * } from '@customafk/lunas-ui/ui/command';\n *\n * <Command>\n * <CommandInput placeholder=\"Type a command…\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n */\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn('flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive', className)}\n {...props}\n />\n );\n}\n\n/**\n * A Command palette rendered inside a Dialog overlay.\n *\n * @param title - Accessible title for the dialog (screen-reader only).\n * @param description - Accessible description for the dialog (screen-reader only).\n * @param showCloseButton - Whether to show the built-in close button on the dialog.\n */\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)} showCloseButton={showCloseButton}>\n <Command\n className={cn(\n '**:[[cmdk-group-heading]]:text-text-positive-muted',\n '**:data-[slot=command-input-wrapper]:h-12',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group]]:px-2',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0',\n '[&_[cmdk-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2',\n '**:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:size-5'\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input with a leading search icon that filters CommandItems in real time. */\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-border-weak border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden',\n 'placeholder:text-text-positive-muted',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\n/** Scrollable list that renders filtered CommandGroups and CommandItems. */\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return <CommandPrimitive.List data-slot=\"command-list\" className={cn('max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden', className)} {...props} />;\n}\n\n/** Fallback message displayed when no CommandItems match the current search query. */\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"py-6 text-center text-sm\" {...props} />;\n}\n\n/** Groups CommandItems under an optional heading label. */\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-text-positive',\n 'overflow-hidden p-1',\n '**:[[cmdk-group-heading]]:text-text-positive-weak',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group-items]]:space-y-1',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups in a CommandList. */\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return <CommandPrimitive.Separator data-slot=\"command-separator\" className={cn('-mx-1 h-px bg-border-weak', className)} {...props} />;\n}\n\n/** A selectable row inside a CommandGroup that is highlighted when active or hovered. */\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded p-2.5 text-sm outline-hidden transition-all duration-300',\n 'active:ring-border',\n 'active:opacity-60',\n // 'active:ring-4',\n 'data-[selected=true]:bg-muted-muted',\n 'data-[selected=true]:text-text-positive-strong',\n 'data-[disabled=true]:opacity-50',\n 'data-[disabled=true]:pointer-events-none',\n '[&_svg]:shrink-0',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-text-positive-muted\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a CommandItem. */\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"command-shortcut\" className={cn('ml-auto text-text-positive-muted text-xs tracking-widest', className)} {...props} />;\n}\n\nexport { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };\n"],"mappings":"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"}
|
package/dist/ui/command.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as CommandInput, c as CommandSeparator, i as CommandGroup, l as CommandShortcut, n as CommandDialog, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "../command-
|
|
1
|
+
import { a as CommandInput, c as CommandSeparator, i as CommandGroup, l as CommandShortcut, n as CommandDialog, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "../command-BM9cIuFp.cjs";
|
|
2
2
|
export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
|
package/dist/ui/command.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as CommandInput, c as CommandSeparator, i as CommandGroup, l as CommandShortcut, n as CommandDialog, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "../command-
|
|
1
|
+
import { a as CommandInput, c as CommandSeparator, i as CommandGroup, l as CommandShortcut, n as CommandDialog, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "../command-DLnIGYou.mjs";
|
|
2
2
|
export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
|
package/dist/ui/command.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{Dialog as e,DialogContent as t,DialogDescription as n,DialogHeader as r,DialogTitle as i}from"./dialog.mjs";import{SearchIcon as a}from"lucide-react";import{cn as o}from"@customafk/react-toolkit/utils";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{Command as l}from"cmdk";function u({className:e,...t}){return s(l,{"data-slot":`command`,className:o(`flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive`,e),...t})}function d({title:a=`Command Palette`,description:l=`Search for a command to run...`,children:d,className:f,showCloseButton:p=!0,...m}){return c(e,{...m,children:[c(r,{className:`sr-only`,children:[s(i,{children:a}),s(n,{children:l})]}),s(t,{className:o(`overflow-hidden p-0`,f),showCloseButton:p,children:s(u,{className:o(`**:[[cmdk-group-heading]]:text-text-positive-muted`,`**:data-[slot=command-input-wrapper]:h-12`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group]]:px-2`,`[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0`,`[&_[cmdk-input-wrapper]_svg]:size-5`,`**:[[cmdk-input]]:h-12`,`**:[[cmdk-item]]:px-2`,`**:[[cmdk-item]]:py-3`,`[&_[cmdk-item]_svg]:size-5`),children:d})})]})}function f({className:e,...t}){return c(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-border-weak border-b px-3`,children:[s(a,{className:`size-4 shrink-0 opacity-50`}),s(l.Input,{"data-slot":`command-input`,className:o(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden`,`placeholder:text-text-positive-muted`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...t})]})}function p({className:e,...t}){return s(l.List,{"data-slot":`command-list`,className:o(`max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden`,e),...t})}function m({...e}){return s(l.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function h({className:e,...t}){return s(l.Group,{"data-slot":`command-group`,className:o(`text-text-positive`,`overflow-hidden p-1`,`**:[[cmdk-group-heading]]:text-text-positive-weak`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs`,`**:[[cmdk-group-heading]]:font-medium`,e),...t})}function g({className:e,...t}){return s(l.Separator,{"data-slot":`command-separator`,className:o(`-mx-1 h-px bg-border-weak`,e),...t})}function _({className:e,...t}){return s(l.Item,{"data-slot":`command-item`,className:o(`relative flex cursor-pointer select-none items-center gap-2 rounded
|
|
1
|
+
"use client";import{Dialog as e,DialogContent as t,DialogDescription as n,DialogHeader as r,DialogTitle as i}from"./dialog.mjs";import{SearchIcon as a}from"lucide-react";import{cn as o}from"@customafk/react-toolkit/utils";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{Command as l}from"cmdk";function u({className:e,...t}){return s(l,{"data-slot":`command`,className:o(`flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive`,e),...t})}function d({title:a=`Command Palette`,description:l=`Search for a command to run...`,children:d,className:f,showCloseButton:p=!0,...m}){return c(e,{...m,children:[c(r,{className:`sr-only`,children:[s(i,{children:a}),s(n,{children:l})]}),s(t,{className:o(`overflow-hidden p-0`,f),showCloseButton:p,children:s(u,{className:o(`**:[[cmdk-group-heading]]:text-text-positive-muted`,`**:data-[slot=command-input-wrapper]:h-12`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group]]:px-2`,`[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0`,`[&_[cmdk-input-wrapper]_svg]:size-5`,`**:[[cmdk-input]]:h-12`,`**:[[cmdk-item]]:px-2`,`**:[[cmdk-item]]:py-3`,`[&_[cmdk-item]_svg]:size-5`),children:d})})]})}function f({className:e,...t}){return c(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-border-weak border-b px-3`,children:[s(a,{className:`size-4 shrink-0 opacity-50`}),s(l.Input,{"data-slot":`command-input`,className:o(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden`,`placeholder:text-text-positive-muted`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...t})]})}function p({className:e,...t}){return s(l.List,{"data-slot":`command-list`,className:o(`max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden`,e),...t})}function m({...e}){return s(l.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function h({className:e,...t}){return s(l.Group,{"data-slot":`command-group`,className:o(`text-text-positive`,`overflow-hidden p-1`,`**:[[cmdk-group-heading]]:text-text-positive-weak`,`**:[[cmdk-group-heading]]:px-2`,`**:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs`,`**:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group-items]]:space-y-1`,e),...t})}function g({className:e,...t}){return s(l.Separator,{"data-slot":`command-separator`,className:o(`-mx-1 h-px bg-border-weak`,e),...t})}function _({className:e,...t}){return s(l.Item,{"data-slot":`command-item`,className:o(`relative flex cursor-pointer select-none items-center gap-2 rounded p-2.5 text-sm outline-hidden transition-all duration-300`,`active:ring-border`,`active:opacity-60`,`data-[selected=true]:bg-muted-muted`,`data-[selected=true]:text-text-positive-strong`,`data-[disabled=true]:opacity-50`,`data-[disabled=true]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg]:pointer-events-none`,`[&_svg:not([class*='size-'])]:size-4`,`[&_svg:not([class*='text-'])]:text-text-positive-muted`,e),...t})}function v({className:e,...t}){return s(`span`,{"data-slot":`command-shortcut`,className:o(`ml-auto text-text-positive-muted text-xs tracking-widest`,e),...t})}export{u as Command,d as CommandDialog,m as CommandEmpty,h as CommandGroup,f as CommandInput,_ as CommandItem,p as CommandList,g as CommandSeparator,v as CommandShortcut};
|
|
2
2
|
//# sourceMappingURL=command.mjs.map
|
package/dist/ui/command.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.mjs","names":["CommandPrimitive"],"sources":["../../packages/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\n/**\n * A cmdk-powered command palette for searching and executing commands.\n *\n * @example\n * ```tsx\n * import {\n * Command, CommandInput, CommandList, CommandEmpty,\n * CommandGroup, CommandItem,\n * } from '@customafk/lunas-ui/ui/command';\n *\n * <Command>\n * <CommandInput placeholder=\"Type a command…\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n */\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn('flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive', className)}\n {...props}\n />\n );\n}\n\n/**\n * A Command palette rendered inside a Dialog overlay.\n *\n * @param title - Accessible title for the dialog (screen-reader only).\n * @param description - Accessible description for the dialog (screen-reader only).\n * @param showCloseButton - Whether to show the built-in close button on the dialog.\n */\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)} showCloseButton={showCloseButton}>\n <Command\n className={cn(\n '**:[[cmdk-group-heading]]:text-text-positive-muted',\n '**:data-[slot=command-input-wrapper]:h-12',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group]]:px-2',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0',\n '[&_[cmdk-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2',\n '**:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:size-5'\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input with a leading search icon that filters CommandItems in real time. */\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-border-weak border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden',\n 'placeholder:text-text-positive-muted',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\n/** Scrollable list that renders filtered CommandGroups and CommandItems. */\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return <CommandPrimitive.List data-slot=\"command-list\" className={cn('max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden', className)} {...props} />;\n}\n\n/** Fallback message displayed when no CommandItems match the current search query. */\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"py-6 text-center text-sm\" {...props} />;\n}\n\n/** Groups CommandItems under an optional heading label. */\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-text-positive',\n 'overflow-hidden p-1',\n '**:[[cmdk-group-heading]]:text-text-positive-weak',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs',\n '**:[[cmdk-group-heading]]:font-medium',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups in a CommandList. */\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return <CommandPrimitive.Separator data-slot=\"command-separator\" className={cn('-mx-1 h-px bg-border-weak', className)} {...props} />;\n}\n\n/** A selectable row inside a CommandGroup that is highlighted when active or hovered. */\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded
|
|
1
|
+
{"version":3,"file":"command.mjs","names":["CommandPrimitive"],"sources":["../../packages/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\n/**\n * A cmdk-powered command palette for searching and executing commands.\n *\n * @example\n * ```tsx\n * import {\n * Command, CommandInput, CommandList, CommandEmpty,\n * CommandGroup, CommandItem,\n * } from '@customafk/lunas-ui/ui/command';\n *\n * <Command>\n * <CommandInput placeholder=\"Type a command…\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n */\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn('flex size-full flex-col overflow-hidden rounded-md border-border-weak bg-popover text-text-positive', className)}\n {...props}\n />\n );\n}\n\n/**\n * A Command palette rendered inside a Dialog overlay.\n *\n * @param title - Accessible title for the dialog (screen-reader only).\n * @param description - Accessible description for the dialog (screen-reader only).\n * @param showCloseButton - Whether to show the built-in close button on the dialog.\n */\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('overflow-hidden p-0', className)} showCloseButton={showCloseButton}>\n <Command\n className={cn(\n '**:[[cmdk-group-heading]]:text-text-positive-muted',\n '**:data-[slot=command-input-wrapper]:h-12',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group]]:px-2',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0',\n '[&_[cmdk-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2',\n '**:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:size-5'\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/** Search input with a leading search icon that filters CommandItems in real time. */\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-border-weak border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden',\n 'placeholder:text-text-positive-muted',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\n/** Scrollable list that renders filtered CommandGroups and CommandItems. */\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return <CommandPrimitive.List data-slot=\"command-list\" className={cn('max-h-80 scroll-py-1 overflow-y-auto overflow-x-hidden', className)} {...props} />;\n}\n\n/** Fallback message displayed when no CommandItems match the current search query. */\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"py-6 text-center text-sm\" {...props} />;\n}\n\n/** Groups CommandItems under an optional heading label. */\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-text-positive',\n 'overflow-hidden p-1',\n '**:[[cmdk-group-heading]]:text-text-positive-weak',\n '**:[[cmdk-group-heading]]:px-2',\n '**:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs',\n '**:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group-items]]:space-y-1',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups in a CommandList. */\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return <CommandPrimitive.Separator data-slot=\"command-separator\" className={cn('-mx-1 h-px bg-border-weak', className)} {...props} />;\n}\n\n/** A selectable row inside a CommandGroup that is highlighted when active or hovered. */\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded p-2.5 text-sm outline-hidden transition-all duration-300',\n 'active:ring-border',\n 'active:opacity-60',\n // 'active:ring-4',\n 'data-[selected=true]:bg-muted-muted',\n 'data-[selected=true]:text-text-positive-strong',\n 'data-[disabled=true]:opacity-50',\n 'data-[disabled=true]:pointer-events-none',\n '[&_svg]:shrink-0',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-text-positive-muted\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a CommandItem. */\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"command-shortcut\" className={cn('ml-auto text-text-positive-muted text-xs tracking-widest', className)} {...props} />;\n}\n\nexport { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };\n"],"mappings":"+SAgCA,SAAS,EAAQ,CAAE,YAAW,GAAG,GAAwD,CACvF,OACE,EAACA,EAAD,CACE,YAAU,UACV,UAAW,EAAG,sGAAuG,CAAS,EAC9H,GAAI,CACL,CAAA,CAEL,CASA,SAAS,EAAc,CACrB,QAAQ,kBACR,cAAc,iCACd,WACA,YACA,kBAAkB,GAClB,GAAG,GAMF,CACD,OACE,EAAC,EAAD,CAAQ,GAAI,EAAZ,SAAA,CACE,EAAC,EAAD,CAAc,UAAU,UAAxB,SAAA,CACE,EAAC,EAAD,CAAA,SAAc,CAAmB,CAAA,EACjC,EAAC,EAAD,CAAA,SAAoB,CAA+B,CAAA,CACvC,CACd,CAAA,EAAA,EAAC,EAAD,CAAe,UAAW,EAAG,sBAAuB,CAAS,EAAoB,kBAC/E,SAAA,EAAC,EAAD,CACE,UAAW,EACT,qDACA,4CACA,iCACA,wCACA,yBACA,oDACA,sCACA,yBACA,wBACA,wBACA,4BACF,EAEC,UACM,CAAA,CACI,CAAA,CACT,GAEZ,CAGA,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAAC,MAAD,CAAK,YAAU,wBAAwB,UAAU,+DAAjD,SAAA,CACE,EAAC,EAAD,CAAY,UAAU,4BAA8B,CAAA,EACpD,EAACA,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAW,EACT,yEACA,uCACA,8BACA,sBACA,CACF,EACA,GAAI,CACL,CAAA,CACE,GAET,CAGA,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OAAO,EAACA,EAAiB,KAAlB,CAAuB,YAAU,eAAe,UAAW,EAAG,yDAA0D,CAAS,EAAG,GAAI,CAAQ,CAAA,CACzJ,CAGA,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAACA,EAAiB,MAAlB,CAAwB,YAAU,gBAAgB,UAAU,2BAA2B,GAAI,CAAQ,CAAA,CAC5G,CAGA,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAACA,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAW,EACT,qBACA,sBACA,oDACA,iCACA,mCACA,oCACA,wCACA,oCACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAGA,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAkE,CAC1G,OAAO,EAACA,EAAiB,UAAlB,CAA4B,YAAU,oBAAoB,UAAW,EAAG,4BAA6B,CAAS,EAAG,GAAI,CAAQ,CAAA,CACtI,CAGA,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OACE,EAACA,EAAiB,KAAlB,CACE,YAAU,eACV,UAAW,EACT,+HACA,qBACA,oBAEA,sCACA,iDACA,kCACA,2CACA,mBACA,8BACA,uCACA,yDACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAGA,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAuC,CAC9E,OAAO,EAAC,OAAD,CAAM,YAAU,mBAAmB,UAAW,EAAG,2DAA4D,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC9I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.cjs","names":["ContextMenuPrimitive","ChevronRightIcon","CheckIcon","CircleIcon"],"sources":["../../packages/components/ui/context-menu.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the ContextMenu — revealed on right-click (or long-press) of the trigger area.\n *\n * @example\n * ```tsx\n * import {\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem, ContextMenuLabel, ContextMenuSeparator,\n * } from '@customafk/lunas-ui/ui/context-menu';\n *\n * <ContextMenu>\n * <ContextMenuTrigger>Right-click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuSeparator />\n * <ContextMenuItem>Copy</ContextMenuItem>\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** The area that listens for right-click to open the ContextMenu. */\nfunction ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />;\n}\n\n/** Groups related ContextMenuItems under a shared logical section. */\nfunction ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />;\n}\n\n/** Portals ContextMenu content outside the current DOM hierarchy. */\nfunction ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />;\n}\n\n/** Root container for a nested sub-menu inside a ContextMenu. */\nfunction ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Groups ContextMenuRadioItems so only one can be selected at a time. */\nfunction ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return <ContextMenuPrimitive.RadioGroup data-slot=\"context-menu-radio-group\" {...props} />;\n}\n\n/**\n * Menu item that reveals a nested ContextMenuSubContent on hover or activation.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating panel that contains the items of a nested ContextMenu sub-menu. */\nfunction ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Animated floating panel that contains the context menu items. */\nfunction ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/**\n * A single clickable row inside a ContextMenuContent.\n *\n * @param inset - When true, adds left padding to align with items that have icons.\n * @param variant - Visual style: `'default'` or `'destructive'`.\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** A checkable context menu item that displays a checkmark when selected. */\nfunction ContextMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** A radio-button context menu item; shows a filled circle when selected. */\nfunction ContextMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none',\n 'focus:bg-accent',\n 'focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/**\n * Non-interactive label used to describe a group of context menu items.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className)}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups of context menu items. */\nfunction ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return <ContextMenuPrimitive.Separator data-slot=\"context-menu-separator\" className={cn('bg-border -mx-1 my-1 h-px', className)} {...props} />;\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a context menu item. */\nfunction ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"context-menu-shortcut\" className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)} {...props} />;\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-menu.cjs","names":["ContextMenuPrimitive","ChevronRightIcon","CheckIcon","CircleIcon"],"sources":["../../packages/components/ui/context-menu.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the ContextMenu — revealed on right-click (or long-press) of the trigger area.\n *\n * @example\n * ```tsx\n * import {\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem, ContextMenuLabel, ContextMenuSeparator,\n * } from '@customafk/lunas-ui/ui/context-menu';\n *\n * <ContextMenu>\n * <ContextMenuTrigger>Right-click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuSeparator />\n * <ContextMenuItem>Copy</ContextMenuItem>\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** The area that listens for right-click to open the ContextMenu. */\nfunction ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />;\n}\n\n/** Groups related ContextMenuItems under a shared logical section. */\nfunction ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />;\n}\n\n/** Portals ContextMenu content outside the current DOM hierarchy. */\nfunction ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />;\n}\n\n/** Root container for a nested sub-menu inside a ContextMenu. */\nfunction ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Groups ContextMenuRadioItems so only one can be selected at a time. */\nfunction ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return <ContextMenuPrimitive.RadioGroup data-slot=\"context-menu-radio-group\" {...props} />;\n}\n\n/**\n * Menu item that reveals a nested ContextMenuSubContent on hover or activation.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating panel that contains the items of a nested ContextMenu sub-menu. */\nfunction ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Animated floating panel that contains the context menu items. */\nfunction ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/**\n * A single clickable row inside a ContextMenuContent.\n *\n * @param inset - When true, adds left padding to align with items that have icons.\n * @param variant - Visual style: `'default'` or `'destructive'`.\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** A checkable context menu item that displays a checkmark when selected. */\nfunction ContextMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** A radio-button context menu item; shows a filled circle when selected. */\nfunction ContextMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none',\n 'focus:bg-accent',\n 'focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/**\n * Non-interactive label used to describe a group of context menu items.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className)}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups of context menu items. */\nfunction ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return <ContextMenuPrimitive.Separator data-slot=\"context-menu-separator\" className={cn('bg-border -mx-1 my-1 h-px', className)} {...props} />;\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a context menu item. */\nfunction ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"context-menu-shortcut\" className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)} {...props} />;\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ContextMenuItem, c as ContextMenuRadioGroup, d as ContextMenuShortcut, f as ContextMenuSub, h as ContextMenuTrigger, i as ContextMenuGroup, l as ContextMenuRadioItem, m as ContextMenuSubTrigger, n as ContextMenuCheckboxItem, o as ContextMenuLabel, p as ContextMenuSubContent, r as ContextMenuContent, s as ContextMenuPortal, t as ContextMenu, u as ContextMenuSeparator } from "../context-menu-
|
|
1
|
+
import { a as ContextMenuItem, c as ContextMenuRadioGroup, d as ContextMenuShortcut, f as ContextMenuSub, h as ContextMenuTrigger, i as ContextMenuGroup, l as ContextMenuRadioItem, m as ContextMenuSubTrigger, n as ContextMenuCheckboxItem, o as ContextMenuLabel, p as ContextMenuSubContent, r as ContextMenuContent, s as ContextMenuPortal, t as ContextMenu, u as ContextMenuSeparator } from "../context-menu-z_-DdL8k.cjs";
|
|
2
2
|
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ContextMenuItem, c as ContextMenuRadioGroup, d as ContextMenuShortcut, f as ContextMenuSub, h as ContextMenuTrigger, i as ContextMenuGroup, l as ContextMenuRadioItem, m as ContextMenuSubTrigger, n as ContextMenuCheckboxItem, o as ContextMenuLabel, p as ContextMenuSubContent, r as ContextMenuContent, s as ContextMenuPortal, t as ContextMenu, u as ContextMenuSeparator } from "../context-menu-
|
|
1
|
+
import { a as ContextMenuItem, c as ContextMenuRadioGroup, d as ContextMenuShortcut, f as ContextMenuSub, h as ContextMenuTrigger, i as ContextMenuGroup, l as ContextMenuRadioItem, m as ContextMenuSubTrigger, n as ContextMenuCheckboxItem, o as ContextMenuLabel, p as ContextMenuSubContent, r as ContextMenuContent, s as ContextMenuPortal, t as ContextMenu, u as ContextMenuSeparator } from "../context-menu-z_-DdL8k.mjs";
|
|
2
2
|
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.mjs","names":["ContextMenuPrimitive"],"sources":["../../packages/components/ui/context-menu.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the ContextMenu — revealed on right-click (or long-press) of the trigger area.\n *\n * @example\n * ```tsx\n * import {\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem, ContextMenuLabel, ContextMenuSeparator,\n * } from '@customafk/lunas-ui/ui/context-menu';\n *\n * <ContextMenu>\n * <ContextMenuTrigger>Right-click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuSeparator />\n * <ContextMenuItem>Copy</ContextMenuItem>\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** The area that listens for right-click to open the ContextMenu. */\nfunction ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />;\n}\n\n/** Groups related ContextMenuItems under a shared logical section. */\nfunction ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />;\n}\n\n/** Portals ContextMenu content outside the current DOM hierarchy. */\nfunction ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />;\n}\n\n/** Root container for a nested sub-menu inside a ContextMenu. */\nfunction ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Groups ContextMenuRadioItems so only one can be selected at a time. */\nfunction ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return <ContextMenuPrimitive.RadioGroup data-slot=\"context-menu-radio-group\" {...props} />;\n}\n\n/**\n * Menu item that reveals a nested ContextMenuSubContent on hover or activation.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating panel that contains the items of a nested ContextMenu sub-menu. */\nfunction ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Animated floating panel that contains the context menu items. */\nfunction ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/**\n * A single clickable row inside a ContextMenuContent.\n *\n * @param inset - When true, adds left padding to align with items that have icons.\n * @param variant - Visual style: `'default'` or `'destructive'`.\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** A checkable context menu item that displays a checkmark when selected. */\nfunction ContextMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** A radio-button context menu item; shows a filled circle when selected. */\nfunction ContextMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none',\n 'focus:bg-accent',\n 'focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/**\n * Non-interactive label used to describe a group of context menu items.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className)}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups of context menu items. */\nfunction ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return <ContextMenuPrimitive.Separator data-slot=\"context-menu-separator\" className={cn('bg-border -mx-1 my-1 h-px', className)} {...props} />;\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a context menu item. */\nfunction ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"context-menu-shortcut\" className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)} {...props} />;\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n"],"mappings":"yOA4BA,SAAS,EAAY,CAAE,GAAG,GAAiE,CACzF,OAAO,EAACA,EAAqB,KAAtB,CAA2B,YAAU,eAAe,GAAI,CAAQ,CAAA,CACzE,CAGA,SAAS,EAAmB,CAAE,GAAG,GAAoE,CACnG,OAAO,EAACA,EAAqB,QAAtB,CAA8B,YAAU,uBAAuB,GAAI,CAAQ,CAAA,CACpF,CAGA,SAAS,EAAiB,CAAE,GAAG,GAAkE,CAC/F,OAAO,EAACA,EAAqB,MAAtB,CAA4B,YAAU,qBAAqB,GAAI,CAAQ,CAAA,CAChF,CAGA,SAAS,EAAkB,CAAE,GAAG,GAAmE,CACjG,OAAO,EAACA,EAAqB,OAAtB,CAA6B,YAAU,sBAAsB,GAAI,CAAQ,CAAA,CAClF,CAGA,SAAS,EAAe,CAAE,GAAG,GAAgE,CAC3F,OAAO,EAACA,EAAqB,IAAtB,CAA0B,YAAU,mBAAmB,GAAI,CAAQ,CAAA,CAC5E,CAGA,SAAS,EAAsB,CAAE,GAAG,GAAuE,CACzG,OAAO,EAACA,EAAqB,WAAtB,CAAiC,YAAU,2BAA2B,GAAI,CAAQ,CAAA,CAC3F,CAOA,SAAS,EAAsB,CAC7B,YACA,QACA,WACA,GAAG,GAGF,CACD,OACE,EAACA,EAAqB,WAAtB,CACE,YAAU,2BACV,aAAY,EACZ,UAAW,EACT,mTACA,CACF,EACA,GAAI,WAPN,CASG,EACD,EAAC,EAAD,CAAkB,UAAU,SAAW,CAAA,CACR,GAErC,CAGA,SAAS,EAAsB,CAAE,YAAW,GAAG,GAAuE,CACpH,OACE,EAACA,EAAqB,WAAtB,CACE,YAAU,2BACV,UAAW,EACT,+eACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAGA,SAAS,EAAmB,CAAE,YAAW,GAAG,GAAoE,CAC9G,OACE,EAACA,EAAqB,OAAtB,CAAA,SACE,EAACA,EAAqB,QAAtB,CACE,YAAU,uBACV,UAAW,EACT,ujBACA,CACF,EACA,GAAI,CACL,CAAA,CAC0B,CAAA,CAEjC,CAQA,SAAS,EAAgB,CACvB,YACA,QACA,UAAU,UACV,GAAG,GAIF,CACD,OACE,EAACA,EAAqB,KAAtB,CACE,YAAU,oBACV,aAAY,EACZ,eAAc,EACd,UAAW,EACT,8mBACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAGA,SAAS,EAAwB,CAAE,YAAW,WAAU,UAAS,GAAG,GAAyE,CAC3I,OACE,EAACA,EAAqB,aAAtB,CACE,YAAU,6BACV,UAAW,EACT,+SACA,CACF,EACS,UACT,GAAI,WAPN,CASE,EAAC,OAAD,CAAM,UAAU,yFACd,EAACA,EAAqB,cAAtB,CAAA,SACE,EAAC,EAAD,CAAW,UAAU,QAAU,CAAA,CACG,CAAA,CAChC,CAAA,EACL,CACgC,GAEvC,CAGA,SAAS,EAAqB,CAAE,YAAW,WAAU,GAAG,GAAsE,CAC5H,OACE,EAACA,EAAqB,UAAtB,CACE,YAAU,0BACV,UAAW,EACT,iHACA,kBACA,+BACA,sCACA,6BACA,8BACA,mBACA,uCACA,CACF,EACA,GAAI,WAbN,CAeE,EAAC,OAAD,CAAM,UAAU,yFACd,EAACA,EAAqB,cAAtB,CAAA,SACE,EAAC,EAAD,CAAY,UAAU,qBAAuB,CAAA,CACX,CAAA,CAChC,CAAA,EACL,CAC6B,GAEpC,CAOA,SAAS,EAAiB,CACxB,YACA,QACA,GAAG,GAGF,CACD,OACE,EAACA,EAAqB,MAAtB,CACE,YAAU,qBACV,aAAY,EACZ,UAAW,EAAG,oEAAqE,CAAS,EAC5F,GAAI,CACL,CAAA,CAEL,CAGA,SAAS,EAAqB,CAAE,YAAW,GAAG,GAAsE,CAClH,OAAO,EAACA,EAAqB,UAAtB,CAAgC,YAAU,yBAAyB,UAAW,EAAG,4BAA6B,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC/I,CAGA,SAAS,EAAoB,CAAE,YAAW,GAAG,GAAuC,CAClF,OAAO,EAAC,OAAD,CAAM,YAAU,wBAAwB,UAAW,EAAG,wDAAyD,CAAS,EAAG,GAAI,CAAQ,CAAA,CAChJ"}
|
|
1
|
+
{"version":3,"file":"context-menu.mjs","names":["ContextMenuPrimitive"],"sources":["../../packages/components/ui/context-menu.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\n\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the ContextMenu — revealed on right-click (or long-press) of the trigger area.\n *\n * @example\n * ```tsx\n * import {\n * ContextMenu, ContextMenuTrigger, ContextMenuContent,\n * ContextMenuItem, ContextMenuLabel, ContextMenuSeparator,\n * } from '@customafk/lunas-ui/ui/context-menu';\n *\n * <ContextMenu>\n * <ContextMenuTrigger>Right-click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuSeparator />\n * <ContextMenuItem>Copy</ContextMenuItem>\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** The area that listens for right-click to open the ContextMenu. */\nfunction ContextMenuTrigger({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />;\n}\n\n/** Groups related ContextMenuItems under a shared logical section. */\nfunction ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />;\n}\n\n/** Portals ContextMenu content outside the current DOM hierarchy. */\nfunction ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />;\n}\n\n/** Root container for a nested sub-menu inside a ContextMenu. */\nfunction ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Groups ContextMenuRadioItems so only one can be selected at a time. */\nfunction ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return <ContextMenuPrimitive.RadioGroup data-slot=\"context-menu-radio-group\" {...props} />;\n}\n\n/**\n * Menu item that reveals a nested ContextMenuSubContent on hover or activation.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating panel that contains the items of a nested ContextMenu sub-menu. */\nfunction ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Animated floating panel that contains the context menu items. */\nfunction ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/**\n * A single clickable row inside a ContextMenuContent.\n *\n * @param inset - When true, adds left padding to align with items that have icons.\n * @param variant - Visual style: `'default'` or `'destructive'`.\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\n/** A checkable context menu item that displays a checkmark when selected. */\nfunction ContextMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** A radio-button context menu item; shows a filled circle when selected. */\nfunction ContextMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none',\n 'focus:bg-accent',\n 'focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/**\n * Non-interactive label used to describe a group of context menu items.\n *\n * @param inset - When true, adds left padding to align with inset items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className)}\n {...props}\n />\n );\n}\n\n/** Horizontal dividing line between groups of context menu items. */\nfunction ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return <ContextMenuPrimitive.Separator data-slot=\"context-menu-separator\" className={cn('bg-border -mx-1 my-1 h-px', className)} {...props} />;\n}\n\n/** Displays a keyboard shortcut hint aligned to the right of a context menu item. */\nfunction ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"context-menu-shortcut\" className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)} {...props} />;\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n"],"mappings":"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"}
|