@customafk/lunas-ui 0.2.33 → 0.2.35
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/{alert-BC5Nss8t.mjs → alert-BbvPwf2x.mjs} +1 -1
- package/dist/{alert-BC5Nss8t.mjs.map → alert-BbvPwf2x.mjs.map} +1 -1
- package/dist/{alert-V73ULWoO.d.mts → alert-DGoFdiDI.d.cts} +7 -7
- package/dist/{alert-mTjrFpkB.d.cts → alert-DZlPX4MK.d.mts} +7 -7
- package/dist/{alert-4rfsFtN6.cjs → alert-DubR6Szk.cjs} +1 -1
- package/dist/{alert-4rfsFtN6.cjs.map → alert-DubR6Szk.cjs.map} +1 -1
- package/dist/{avatar-aVxo69zP.cjs → avatar-CqRl9dge.cjs} +1 -1
- package/dist/{avatar-aVxo69zP.cjs.map → avatar-CqRl9dge.cjs.map} +1 -1
- package/dist/{avatar-CK1R4r0j.mjs → avatar-m1LjDIil.mjs} +1 -1
- package/dist/{avatar-CK1R4r0j.mjs.map → avatar-m1LjDIil.mjs.map} +1 -1
- package/dist/{badge-utjRo-lW.mjs → badge-Bhbhmsic.mjs} +1 -1
- package/dist/{badge-utjRo-lW.mjs.map → badge-Bhbhmsic.mjs.map} +1 -1
- package/dist/{badge-DcQUUKY0.d.mts → badge-D1Un985K.d.cts} +6 -6
- package/dist/{badge-Cwb0fmkw.d.cts → badge-LtLg87DN.d.mts} +6 -6
- package/dist/{button-W7L4JgMw.d.mts → button-8OKxyueU.d.cts} +6 -6
- package/dist/{button-Bc-MAOOY.d.cts → button-CdjZ5QJ8.d.mts} +6 -6
- package/dist/{button-BqxBQ4Kr.mjs → button-CfPTDyoq.mjs} +2 -2
- package/dist/{button-BqxBQ4Kr.mjs.map → button-CfPTDyoq.mjs.map} +1 -1
- package/dist/{button.variants-CwcJHcI5.mjs → button.variants-B8aRZ52K.mjs} +1 -1
- package/dist/{button.variants-CwcJHcI5.mjs.map → button.variants-B8aRZ52K.mjs.map} +1 -1
- package/dist/{calendar-D8aRFw_F.mjs → calendar-BDhIfwPP.mjs} +2 -2
- package/dist/{calendar-D8aRFw_F.mjs.map → calendar-BDhIfwPP.mjs.map} +1 -1
- package/dist/{calendar-Bt0rlJ89.cjs → calendar-CMd11yg9.cjs} +1 -1
- package/dist/{calendar-Bt0rlJ89.cjs.map → calendar-CMd11yg9.cjs.map} +1 -1
- package/dist/cards/grid-product-card.mjs +1 -1
- package/dist/cards/product-card.mjs +1 -1
- package/dist/cards/simple-card.d.cts +2 -2
- package/dist/cards/simple-card.d.mts +2 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/{checkbox-BQ_TclX9.cjs → checkbox-BwDvS4De.cjs} +1 -1
- package/dist/{checkbox-BQ_TclX9.cjs.map → checkbox-BwDvS4De.cjs.map} +1 -1
- package/dist/{checkbox-CJsl9OjF.mjs → checkbox-CgHaRkuU.mjs} +1 -1
- package/dist/{checkbox-CJsl9OjF.mjs.map → checkbox-CgHaRkuU.mjs.map} +1 -1
- package/dist/{close-BMhGSmGs.mjs → close-B7OOMSZl.mjs} +1 -1
- package/dist/{close-BMhGSmGs.mjs.map → close-B7OOMSZl.mjs.map} +1 -1
- package/dist/{close-DUBEKxhw.cjs → close-DrCUWZt0.cjs} +1 -1
- package/dist/{close-DUBEKxhw.cjs.map → close-DrCUWZt0.cjs.map} +1 -1
- package/dist/{cms-layout-DDs0pHWh.cjs → cms-layout-BrubV8D8.cjs} +2 -2
- package/dist/{cms-layout-DDs0pHWh.cjs.map → cms-layout-BrubV8D8.cjs.map} +1 -1
- package/dist/{cms-layout-DHzRHAoI.mjs → cms-layout-C2-yysO2.mjs} +2 -2
- package/dist/{cms-layout-DHzRHAoI.mjs.map → cms-layout-C2-yysO2.mjs.map} +1 -1
- package/dist/{command-CTdjZi1F.cjs → command-DiXzSGc8.cjs} +2 -2
- package/dist/{command-CTdjZi1F.cjs.map → command-DiXzSGc8.cjs.map} +1 -1
- package/dist/{command-Bvauothg.mjs → command-FnbrPZ7_.mjs} +2 -2
- package/dist/{command-Bvauothg.mjs.map → command-FnbrPZ7_.mjs.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 +1 -1
- package/dist/data-display/date-tooltip.mjs +1 -1
- package/dist/data-display/date.mjs +1 -1
- package/dist/data-display/name.mjs +1 -1
- package/dist/data-display/phone-number.mjs +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 +1 -1
- package/dist/data-display/statistic.cjs +1 -2
- package/dist/data-display/statistic.d.mts +5 -5
- package/dist/data-display/statistic.mjs +1 -2
- package/dist/data-display/user.cjs +1 -1
- package/dist/data-display/user.mjs +1 -1
- package/dist/{date-BQ0c19uk.mjs → date-CFgc7pK3.mjs} +1 -1
- package/dist/{date-BQ0c19uk.mjs.map → date-CFgc7pK3.mjs.map} +1 -1
- package/dist/dialog-D1sWnn6n.cjs +2 -0
- package/dist/dialog-D1sWnn6n.cjs.map +1 -0
- package/dist/{dialog-CxPqgAES.d.cts → dialog-DolY0CYG.d.mts} +12 -12
- package/dist/dialog-EGFZeITu.mjs +2 -0
- package/dist/dialog-EGFZeITu.mjs.map +1 -0
- package/dist/{dialog-B8CvBgRs.d.mts → dialog-aguemTG1.d.cts} +12 -12
- package/dist/dialogs/confirm-dialog.mjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +26 -26
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +26 -26
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/error-dialog.mjs +1 -1
- package/dist/dialogs/loading-dialog.cjs +1 -1
- package/dist/dialogs/loading-dialog.mjs +1 -1
- package/dist/{dist-DdGJ50nX.mjs → dist-BQGL-YKY.mjs} +1 -1
- package/dist/{dist-DdGJ50nX.mjs.map → dist-BQGL-YKY.mjs.map} +1 -1
- package/dist/{drawer-C3o6IEeq.cjs → drawer-B6C8-Ndu.cjs} +1 -1
- package/dist/{drawer-C3o6IEeq.cjs.map → drawer-B6C8-Ndu.cjs.map} +1 -1
- package/dist/{drawer-j9wcVE50.mjs → drawer-CMD7JWH8.mjs} +1 -1
- package/dist/{drawer-j9wcVE50.mjs.map → drawer-CMD7JWH8.mjs.map} +1 -1
- package/dist/{dropdown-menu-DMwvWoxe.cjs → dropdown-menu-Bz7oMQ36.cjs} +1 -1
- package/dist/{dropdown-menu-DMwvWoxe.cjs.map → dropdown-menu-Bz7oMQ36.cjs.map} +1 -1
- package/dist/{dropdown-menu-B_uBxY94.mjs → dropdown-menu-C6tRSumY.mjs} +1 -1
- package/dist/{dropdown-menu-B_uBxY94.mjs.map → dropdown-menu-C6tRSumY.mjs.map} +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.d.cts +6 -6
- package/dist/features/descriptions/index.d.mts +4 -4
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/search-modal/index.cjs +1 -1
- package/dist/features/search-modal/index.d.mts +2 -2
- package/dist/features/search-modal/index.mjs +1 -1
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.d.cts +2 -2
- package/dist/features/tables/index.d.mts +3 -3
- package/dist/features/tables/index.mjs +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +1 -1
- package/dist/features/tanstack-form/index.d.mts +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/index.d.mts +1 -1
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/{field-B8RhxRCu.mjs → field-DhgAIueI.mjs} +2 -2
- package/dist/{field-B8RhxRCu.mjs.map → field-DhgAIueI.mjs.map} +1 -1
- package/dist/{field-BxFpcOV1.cjs → field-pfL7RWcN.cjs} +2 -2
- package/dist/{field-BxFpcOV1.cjs.map → field-pfL7RWcN.cjs.map} +1 -1
- package/dist/{flex-Bl5yzx6g.mjs → flex-BAcvp4lB.mjs} +1 -1
- package/dist/{flex-Bl5yzx6g.mjs.map → flex-BAcvp4lB.mjs.map} +1 -1
- package/dist/{heading-B1t9baTw.mjs → heading-woRh-IC7.mjs} +1 -1
- package/dist/{heading-B1t9baTw.mjs.map → heading-woRh-IC7.mjs.map} +1 -1
- package/dist/{image-C4gMBmyV.mjs → image-D2U1SBw5.mjs} +2 -2
- package/dist/{image-C4gMBmyV.mjs.map → image-D2U1SBw5.mjs.map} +1 -1
- package/dist/{index-3rfnp-Kj.d.mts → index-BhnqroF7.d.cts} +91 -42
- package/dist/{index-cSJtvD9W.d.mts → index-BqGaIQNn.d.mts} +6 -6
- package/dist/{index-B0tpV7YG.d.cts → index-C45OSg1W.d.mts} +91 -42
- package/dist/{index-BQEmU6gw.d.cts → index-CgEghb4N.d.cts} +380 -380
- package/dist/{index-CE6WacAh.d.mts → index-DfvBLw2O.d.mts} +380 -380
- package/dist/{index-DMUr1T2A.d.cts → index-DwS7a4RL.d.cts} +6 -6
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +9 -10
- package/dist/index.d.mts +9 -10
- package/dist/index.mjs +1 -1
- package/dist/{input-CKFQdvqY.mjs → input-5gk-Jv1y.mjs} +1 -1
- package/dist/{input-CKFQdvqY.mjs.map → input-5gk-Jv1y.mjs.map} +1 -1
- package/dist/{input-1ceJxxFI.cjs → input-BvzsfAUc.cjs} +1 -1
- package/dist/{input-1ceJxxFI.cjs.map → input-BvzsfAUc.cjs.map} +1 -1
- package/dist/{input-BkbJ_jDH.d.mts → input-CZrWdm_Y.d.cts} +6 -6
- package/dist/{input-DgwlkE9s.d.cts → input-DcbOSbQr.d.mts} +6 -6
- package/dist/{label-CE2m0U_j.mjs → label-D9uNQ9b_.mjs} +1 -1
- package/dist/{label-CE2m0U_j.mjs.map → label-D9uNQ9b_.mjs.map} +1 -1
- package/dist/{label-BHbqbBtO.cjs → label-eIyGIRyw.cjs} +1 -1
- package/dist/{label-BHbqbBtO.cjs.map → label-eIyGIRyw.cjs.map} +1 -1
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.d.cts +8 -8
- package/dist/layouts/flex.d.mts +8 -8
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.mts +2 -2
- package/dist/pages/FeatureDeveloping.mjs +1 -1
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.mts +2 -2
- package/dist/pages/FeatureFixing.mjs +1 -1
- package/dist/pages/LoginPage.cjs +1 -1
- package/dist/pages/LoginPage.d.cts +2 -2
- package/dist/pages/LoginPage.d.mts +2 -2
- package/dist/pages/LoginPage.mjs +1 -1
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.mts +2 -2
- package/dist/pages/NotAuthorized.mjs +1 -1
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.mts +2 -2
- package/dist/pages/NotFound.mjs +1 -1
- package/dist/pages/RegisterPage.cjs +1 -1
- package/dist/pages/RegisterPage.d.cts +2 -2
- package/dist/pages/RegisterPage.d.mts +2 -2
- package/dist/pages/RegisterPage.mjs +1 -1
- package/dist/pages/VerifyEmailPage.cjs +1 -1
- package/dist/pages/VerifyEmailPage.d.cts +2 -2
- package/dist/pages/VerifyEmailPage.d.mts +2 -2
- package/dist/pages/VerifyEmailPage.mjs +1 -1
- package/dist/{paragraph-J_QbLq9_.mjs → paragraph-CjstaJFj.mjs} +1 -1
- package/dist/{paragraph-J_QbLq9_.mjs.map → paragraph-CjstaJFj.mjs.map} +1 -1
- package/dist/{payment-layout-RldJzRGP.mjs → payment-layout-_ZM4uBy_.mjs} +2 -2
- package/dist/{payment-layout-RldJzRGP.mjs.map → payment-layout-_ZM4uBy_.mjs.map} +1 -1
- package/dist/{payment-layout-RVPi4-1C.cjs → payment-layout-fsYTkw3r.cjs} +2 -2
- package/dist/{payment-layout-RVPi4-1C.cjs.map → payment-layout-fsYTkw3r.cjs.map} +1 -1
- package/dist/{popover-BCzVvfnV.mjs → popover-DwgdOX8a.mjs} +2 -2
- package/dist/{popover-BCzVvfnV.mjs.map → popover-DwgdOX8a.mjs.map} +1 -1
- package/dist/{popover-Bnrgg4do.cjs → popover-fsTCOb6a.cjs} +2 -2
- package/dist/{popover-Bnrgg4do.cjs.map → popover-fsTCOb6a.cjs.map} +1 -1
- package/dist/{progress-BXWPPNt5.cjs → progress-CDYA2V-W.cjs} +1 -1
- package/dist/{progress-BXWPPNt5.cjs.map → progress-CDYA2V-W.cjs.map} +1 -1
- package/dist/{progress-BcEEbgJJ.mjs → progress-DCBKnTx0.mjs} +1 -1
- package/dist/{progress-BcEEbgJJ.mjs.map → progress-DCBKnTx0.mjs.map} +1 -1
- package/dist/{radio-group-Bv6w2woK.cjs → radio-group-B-M599Ys.cjs} +1 -1
- package/dist/{radio-group-Bv6w2woK.cjs.map → radio-group-B-M599Ys.cjs.map} +1 -1
- package/dist/{radio-group-KR6Ck-B9.mjs → radio-group-Y9bhdr55.mjs} +1 -1
- package/dist/{radio-group-KR6Ck-B9.mjs.map → radio-group-Y9bhdr55.mjs.map} +1 -1
- package/dist/{resizable-C7uLlTGB.cjs → resizable-DATSh0Du.cjs} +1 -1
- package/dist/{resizable-C7uLlTGB.cjs.map → resizable-DATSh0Du.cjs.map} +1 -1
- package/dist/{resizable-em2svgMz.mjs → resizable-DP1BQAF_.mjs} +1 -1
- package/dist/{resizable-em2svgMz.mjs.map → resizable-DP1BQAF_.mjs.map} +1 -1
- package/dist/{search-modal-zmavzZRx.cjs → search-modal-CYRJEDE-.cjs} +2 -2
- package/dist/{search-modal-zmavzZRx.cjs.map → search-modal-CYRJEDE-.cjs.map} +1 -1
- package/dist/{search-modal-DyOsqK-4.mjs → search-modal-DWu08xkE.mjs} +2 -2
- package/dist/{search-modal-DyOsqK-4.mjs.map → search-modal-DWu08xkE.mjs.map} +1 -1
- package/dist/{select-C2Ro2wmj.mjs → select-BAlA65tZ.mjs} +1 -1
- package/dist/{select-C2Ro2wmj.mjs.map → select-BAlA65tZ.mjs.map} +1 -1
- package/dist/{select-DHiTqZeX.cjs → select-Cib2aiw5.cjs} +1 -1
- package/dist/{select-DHiTqZeX.cjs.map → select-Cib2aiw5.cjs.map} +1 -1
- package/dist/{separator-yTKDuMWb.mjs → separator-C6s-YvlT.mjs} +1 -1
- package/dist/{separator-yTKDuMWb.mjs.map → separator-C6s-YvlT.mjs.map} +1 -1
- package/dist/{separator-jytY1CPq.cjs → separator-CBup_ah1.cjs} +1 -1
- package/dist/{separator-jytY1CPq.cjs.map → separator-CBup_ah1.cjs.map} +1 -1
- package/dist/{sheet-DDBCHwn6.mjs → sheet-Cj8hoftE.mjs} +1 -1
- package/dist/{sheet-DDBCHwn6.mjs.map → sheet-Cj8hoftE.mjs.map} +1 -1
- package/dist/{sheet-DuMrjidC.cjs → sheet-DAjZ-Q6Q.cjs} +1 -1
- package/dist/{sheet-DuMrjidC.cjs.map → sheet-DAjZ-Q6Q.cjs.map} +1 -1
- package/dist/{sidebar-BXrGXVxx.cjs → sidebar-Drasn0Bx.cjs} +2 -2
- package/dist/{sidebar-BXrGXVxx.cjs.map → sidebar-Drasn0Bx.cjs.map} +1 -1
- package/dist/{sidebar-De1RZMAG.mjs → sidebar-RcmDh50_.mjs} +2 -2
- package/dist/{sidebar-De1RZMAG.mjs.map → sidebar-RcmDh50_.mjs.map} +1 -1
- package/dist/{skeleton-Czl96pWA.mjs → skeleton-DupQ91XW.mjs} +1 -1
- package/dist/{skeleton-Czl96pWA.mjs.map → skeleton-DupQ91XW.mjs.map} +1 -1
- package/dist/{spinner-CWUvnJQw.mjs → spinner-BCnPYF1H.mjs} +1 -1
- package/dist/{spinner-CWUvnJQw.mjs.map → spinner-BCnPYF1H.mjs.map} +1 -1
- package/dist/{spinner-DgusnQMw.cjs → spinner-Bdta7BMp.cjs} +1 -1
- package/dist/{spinner-DgusnQMw.cjs.map → spinner-Bdta7BMp.cjs.map} +1 -1
- package/dist/statistic-Cm4nbkjQ.mjs +2 -0
- package/dist/statistic-Cm4nbkjQ.mjs.map +1 -0
- package/dist/statistic-DDDm5Om1.cjs +2 -0
- package/dist/statistic-DDDm5Om1.cjs.map +1 -0
- package/dist/{switch-DHsjxnFP.mjs → switch-BP7EPatj.mjs} +1 -1
- package/dist/{switch-DHsjxnFP.mjs.map → switch-BP7EPatj.mjs.map} +1 -1
- package/dist/{switch-0-9Zt33o.cjs → switch-Dbc77c_D.cjs} +1 -1
- package/dist/{switch-0-9Zt33o.cjs.map → switch-Dbc77c_D.cjs.map} +1 -1
- package/dist/tables-B3Ald6An.cjs +4 -0
- package/dist/tables-B3Ald6An.cjs.map +1 -0
- package/dist/tables-C3asiSD4.mjs +4 -0
- package/dist/tables-C3asiSD4.mjs.map +1 -0
- package/dist/{tanstack-form-Be6aIYAW.mjs → tanstack-form-BFX2-Tlo.mjs} +2 -2
- package/dist/{tanstack-form-Be6aIYAW.mjs.map → tanstack-form-BFX2-Tlo.mjs.map} +1 -1
- package/dist/{tanstack-form-CDgTokmf.cjs → tanstack-form-dHOZ76Jw.cjs} +2 -2
- package/dist/{tanstack-form-CDgTokmf.cjs.map → tanstack-form-dHOZ76Jw.cjs.map} +1 -1
- package/dist/{text-editor-CE_GkI7o.cjs → text-editor-BJBM0T1y.cjs} +1 -1
- package/dist/{text-editor-CE_GkI7o.cjs.map → text-editor-BJBM0T1y.cjs.map} +1 -1
- package/dist/{text-editor-CqC44BkO.mjs → text-editor-CbBJNn-4.mjs} +1 -1
- package/dist/{text-editor-CqC44BkO.mjs.map → text-editor-CbBJNn-4.mjs.map} +1 -1
- package/dist/{textarea-D0-Gltw6.mjs → textarea-7HDXcaK9.mjs} +1 -1
- package/dist/{textarea-D0-Gltw6.mjs.map → textarea-7HDXcaK9.mjs.map} +1 -1
- package/dist/{textarea-BB2WynyM.cjs → textarea-Byo8E8oi.cjs} +1 -1
- package/dist/{textarea-BB2WynyM.cjs.map → textarea-Byo8E8oi.cjs.map} +1 -1
- package/dist/{tooltip-BMdzWaaH.mjs → tooltip-BfBJRYpc.mjs} +1 -1
- package/dist/{tooltip-BMdzWaaH.mjs.map → tooltip-BfBJRYpc.mjs.map} +1 -1
- package/dist/{types-CuAlMviO.mjs → types-CFXgrpTm.mjs} +1 -1
- package/dist/{types-CuAlMviO.mjs.map → types-CFXgrpTm.mjs.map} +1 -1
- package/dist/{types-B2PQbMJL.d.mts → types-Cc_mLRAn.d.cts} +1 -1
- package/dist/{types-CLkAmCre.d.cts → types-YLu40dXY.d.mts} +1 -1
- package/dist/typography/paragraph.d.cts +5 -5
- package/dist/typography/paragraph.d.mts +3 -3
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/alert-dialog.d.mts +12 -12
- package/dist/ui/alert-dialog.mjs +1 -1
- package/dist/ui/alert.cjs +1 -1
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/alert.mjs +1 -1
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.mts +2 -2
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/avatar.d.mts +4 -4
- package/dist/ui/avatar.mjs +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/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.mts +8 -8
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.d.cts +7 -7
- package/dist/ui/button-group.d.mts +7 -7
- package/dist/ui/button-group.mjs +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/button.mjs +1 -1
- package/dist/ui/buttons/add-new.mjs +1 -1
- package/dist/ui/buttons/edit.mjs +1 -1
- package/dist/ui/buttons/refresh.mjs +1 -1
- package/dist/ui/buttons/trash.mjs +1 -1
- package/dist/ui/buttons/upload-image.mjs +1 -1
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.mts +4 -4
- package/dist/ui/calendar.mjs +1 -1
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.mts +8 -8
- package/dist/ui/card.mjs +1 -1
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/carousel.d.mts +7 -7
- package/dist/ui/carousel.mjs +1 -1
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/checkbox.d.mts +2 -2
- package/dist/ui/checkbox.mjs +1 -1
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.mts +4 -4
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/command.d.mts +11 -11
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.mts +16 -16
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/dialog.mjs +1 -1
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.mts +11 -11
- package/dist/ui/drawer.mjs +1 -1
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.mts +16 -16
- package/dist/ui/dropdown-menu.mjs +1 -1
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.mts +9 -9
- package/dist/ui/field.cjs +1 -1
- package/dist/ui/field.d.cts +24 -24
- package/dist/ui/field.d.mts +24 -24
- package/dist/ui/field.mjs +1 -1
- package/dist/ui/file-uploader.cjs +1 -1
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/file-uploader.mjs +1 -1
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.d.cts +10 -10
- package/dist/ui/form.d.mts +10 -10
- package/dist/ui/form.mjs +1 -1
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.mts +4 -4
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.mts +5 -5
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/search-input.d.mts +3 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.d.cts +16 -16
- package/dist/ui/item.d.mts +16 -16
- package/dist/ui/item.mjs +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/label.d.mts +2 -2
- package/dist/ui/label.mjs +1 -1
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/menubar.d.mts +17 -17
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.mts +3 -3
- package/dist/ui/multi-select.mjs +1 -1
- package/dist/ui/navigation-menu.d.cts +11 -11
- package/dist/ui/navigation-menu.d.mts +11 -11
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.mts +9 -9
- package/dist/ui/pagination.mjs +1 -1
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +6 -6
- package/dist/ui/popover.d.mts +6 -6
- package/dist/ui/popover.mjs +1 -1
- package/dist/ui/progress.cjs +1 -1
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.mts +2 -2
- package/dist/ui/progress.mjs +1 -1
- package/dist/ui/radio-group.cjs +1 -1
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.mts +3 -3
- package/dist/ui/radio-group.mjs +1 -1
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +9 -9
- package/dist/ui/resizable.d.mts +9 -9
- package/dist/ui/resizable.mjs +1 -1
- package/dist/ui/scroll-area.d.cts +5 -5
- package/dist/ui/scroll-area.d.mts +5 -5
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +9 -9
- package/dist/ui/select.d.mts +9 -9
- package/dist/ui/select.mjs +1 -1
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/separator.d.mts +2 -2
- package/dist/ui/separator.mjs +1 -1
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.mts +9 -9
- package/dist/ui/sheet.mjs +1 -1
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.mts +2 -2
- package/dist/ui/skeleton.mjs +1 -1
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.mts +2 -2
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/spinner.cjs +1 -1
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.mts +2 -2
- package/dist/ui/spinner.mjs +1 -1
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.mts +2 -2
- package/dist/ui/switch.mjs +1 -1
- package/dist/ui/table.d.cts +17 -17
- package/dist/ui/table.d.mts +17 -17
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/tabs.d.mts +5 -5
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/textarea.mjs +1 -1
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle.d.cts +4 -4
- package/dist/ui/toggle.d.mts +4 -4
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/tooltip.d.mts +5 -5
- package/dist/ui/tooltip.mjs +1 -1
- package/dist/{user-DexjSvGZ.mjs → user-D8Skw8dI.mjs} +2 -2
- package/dist/{user-DexjSvGZ.mjs.map → user-D8Skw8dI.mjs.map} +1 -1
- package/dist/{user-CQY0YnAc.cjs → user-Dns1BKaT.cjs} +2 -2
- package/dist/{user-CQY0YnAc.cjs.map → user-Dns1BKaT.cjs.map} +1 -1
- package/package.json +1 -5
- package/dist/data-display/statistic.cjs.map +0 -1
- package/dist/data-display/statistic.mjs.map +0 -1
- package/dist/dialog-DEnyBH2X.cjs +0 -2
- package/dist/dialog-DEnyBH2X.cjs.map +0 -1
- package/dist/dialog-jqiIqxlm.mjs +0 -2
- package/dist/dialog-jqiIqxlm.mjs.map +0 -1
- package/dist/tables-BQ-QiA1V.mjs +0 -4
- package/dist/tables-BQ-QiA1V.mjs.map +0 -1
- package/dist/tables-LRWPOv2a.cjs +0 -4
- package/dist/tables-LRWPOv2a.cjs.map +0 -1
- package/dist/ui/sidebar.cjs +0 -2
- package/dist/ui/sidebar.cjs.map +0 -1
- package/dist/ui/sidebar.d.cts +0 -264
- package/dist/ui/sidebar.d.mts +0 -264
- package/dist/ui/sidebar.mjs +0 -2
- package/dist/ui/sidebar.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react`),r=require(`@customafk/react-toolkit/utils`),i=require(`class-variance-authority`),a=require(`react/jsx-runtime`),o=require(`@tiptap/react`),s=require(`@tiptap/extension-placeholder`);s=e.t(s);let c=require(`@tiptap/extension-text-align`);c=e.t(c);let l=require(`@tiptap/extension-underline`);l=e.t(l);let u=require(`@tiptap/starter-kit`);u=e.t(u);const d=(0,i.cva)([`flex flex-col overflow-hidden rounded-md`],{variants:{variant:{outline:`border border-border bg-background shadow-xs`,ghost:`border-0`}},defaultVariants:{variant:`outline`}});function f({isActive:e,className:t,children:n,...i}){return(0,a.jsx)(`button`,{type:`button`,"data-slot":`toolbar-button`,"data-active":e||void 0,className:(0,r.cn)(`inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors`,`hover:bg-muted-muted hover:text-text-positive-strong`,`disabled:pointer-events-none disabled:opacity-40`,e&&`bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary`,t),...i,children:n})}function p(){return(0,a.jsx)(`div`,{"data-slot":`toolbar-divider`,className:`mx-0.5 h-5 w-px shrink-0 bg-border`})}function m({editor:e,className:n}){let i=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:1})}),s=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:2})}),c=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`heading`,{level:3})});(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`paragraph`)});let l=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`bold`)}),u=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`italic`)}),d=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`underline`)}),m=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`strike`)}),h=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`code`)}),g=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`bulletList`)}),_=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`orderedList`)}),v=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`blockquote`)}),y=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive(`codeBlock`)}),b=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`left`})}),x=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`center`})}),S=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`right`})}),C=(0,o.useEditorState)({editor:e,selector:e=>e.editor.isActive({textAlign:`justify`})});return(0,a.jsxs)(`div`,{"data-slot":`text-editor-toolbar`,className:(0,r.cn)(`flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5`,n),children:[(0,a.jsx)(f,{onClick:()=>e.chain().focus().undo().run(),disabled:!e.can().undo(),title:`Undo`,children:(0,a.jsx)(t.Undo,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().redo().run(),disabled:!e.can().redo(),title:`Redo`,children:(0,a.jsx)(t.Redo,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:1}).run(),isActive:i,title:`Heading 1`,children:(0,a.jsx)(t.Heading1,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:2}).run(),isActive:s,title:`Heading 2`,children:(0,a.jsx)(t.Heading2,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleHeading({level:3}).run(),isActive:c,title:`Heading 3`,children:(0,a.jsx)(t.Heading3,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBold().run(),isActive:l,title:`Bold`,children:(0,a.jsx)(t.Bold,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleItalic().run(),isActive:u,title:`Italic`,children:(0,a.jsx)(t.Italic,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleUnderline().run(),isActive:d,title:`Underline`,children:(0,a.jsx)(t.Underline,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleStrike().run(),isActive:m,title:`Strikethrough`,children:(0,a.jsx)(t.Strikethrough,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleCode().run(),isActive:h,title:`Inline Code`,children:(0,a.jsx)(t.Code,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBulletList().run(),isActive:g,title:`Bullet List`,children:(0,a.jsx)(t.List,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleOrderedList().run(),isActive:_,title:`Ordered List`,children:(0,a.jsx)(t.ListOrdered,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleBlockquote().run(),isActive:v,title:`Blockquote`,children:(0,a.jsx)(t.Quote,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().toggleCodeBlock().run(),isActive:y,title:`Code Block`,children:(0,a.jsx)(t.Code2,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setHorizontalRule().run(),title:`Horizontal Rule`,children:(0,a.jsx)(t.Minus,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(p,{}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`left`).run(),isActive:b,title:`Align Left`,children:(0,a.jsx)(t.AlignLeft,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`center`).run(),isActive:x,title:`Align Center`,children:(0,a.jsx)(t.AlignCenter,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`right`).run(),isActive:S,title:`Align Right`,children:(0,a.jsx)(t.AlignRight,{className:`h-3.5 w-3.5`})}),(0,a.jsx)(f,{onClick:()=>e.chain().focus().setTextAlign(`justify`).run(),isActive:C,title:`Align Justify`,children:(0,a.jsx)(t.AlignJustify,{className:`h-3.5 w-3.5`})})]})}function h({value:e,defaultValue:t,onChange:i,placeholder:f=`Start writing...`,readOnly:p=!1,showToolbar:h=!0,variant:g,className:_,toolbarClassName:v,editorClassName:y}){let b=(0,o.useEditor)({extensions:[u.default,l.default,s.default.configure({placeholder:f}),c.default.configure({types:[`heading`,`paragraph`]})],content:e??t,editable:!p,onUpdate:({editor:e})=>{i?.(e.getHTML())}});return(0,n.useEffect)(()=>{!b||e===void 0||b.getHTML()!==e&&b.commands.setContent(e)},[b,e]),(0,n.useEffect)(()=>{b&&b.setEditable(!p)},[b,p]),(0,a.jsxs)(`div`,{"data-slot":`text-editor`,className:(0,r.cn)(`lunas-text-editor`,d({variant:g}),_),children:[h&&!p&&b&&(0,a.jsx)(m,{editor:b,className:v}),(0,a.jsx)(o.EditorContent,{editor:b,"data-slot":`text-editor-content`,className:(0,r.cn)(`flex-1 text-sm text-text-positive bg-background`,y)})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
|
|
2
|
-
//# sourceMappingURL=text-editor-
|
|
2
|
+
//# sourceMappingURL=text-editor-BJBM0T1y.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-CE_GkI7o.cjs","names":["Undo","Redo","Heading1","Heading2","Heading3","Bold","Italic","Underline","Strikethrough","Code","List","ListOrdered","Quote","Code2","Minus","AlignLeft","AlignCenter","AlignRight","AlignJustify","StarterKit","Underline","Placeholder","TextAlign","EditorContent"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-editor-BJBM0T1y.cjs","names":["Undo","Redo","Heading1","Heading2","Heading3","Bold","Italic","Underline","Strikethrough","Code","List","ListOrdered","Quote","Code2","Minus","AlignLeft","AlignCenter","AlignRight","AlignJustify","StarterKit","Underline","Placeholder","TextAlign","EditorContent"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{AlignCenter as e,AlignJustify as t,AlignLeft as n,AlignRight as r,Bold as i,Code as a,Code2 as o,Heading1 as s,Heading2 as c,Heading3 as l,Italic as u,List as d,ListOrdered as f,Minus as p,Quote as m,Redo as h,Strikethrough as g,Underline as _,Undo as v}from"lucide-react";import{useEffect as y}from"react";import{cn as b}from"@customafk/react-toolkit/utils";import{cva as x}from"class-variance-authority";import{jsx as S,jsxs as C}from"react/jsx-runtime";import{EditorContent as w,useEditor as T,useEditorState as E}from"@tiptap/react";import D from"@tiptap/extension-placeholder";import O from"@tiptap/extension-text-align";import k from"@tiptap/extension-underline";import A from"@tiptap/starter-kit";const j=x([`flex flex-col overflow-hidden rounded-md`],{variants:{variant:{outline:`border border-border bg-background shadow-xs`,ghost:`border-0`}},defaultVariants:{variant:`outline`}});function M({isActive:e,className:t,children:n,...r}){return S(`button`,{type:`button`,"data-slot":`toolbar-button`,"data-active":e||void 0,className:b(`inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors`,`hover:bg-muted-muted hover:text-text-positive-strong`,`disabled:pointer-events-none disabled:opacity-40`,e&&`bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary`,t),...r,children:n})}function N(){return S(`div`,{"data-slot":`toolbar-divider`,className:`mx-0.5 h-5 w-px shrink-0 bg-border`})}function P({editor:y,className:x}){let w=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:1})}),T=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:2})}),D=E({editor:y,selector:e=>e.editor.isActive(`heading`,{level:3})});E({editor:y,selector:e=>e.editor.isActive(`paragraph`)});let O=E({editor:y,selector:e=>e.editor.isActive(`bold`)}),k=E({editor:y,selector:e=>e.editor.isActive(`italic`)}),A=E({editor:y,selector:e=>e.editor.isActive(`underline`)}),j=E({editor:y,selector:e=>e.editor.isActive(`strike`)}),P=E({editor:y,selector:e=>e.editor.isActive(`code`)}),F=E({editor:y,selector:e=>e.editor.isActive(`bulletList`)}),I=E({editor:y,selector:e=>e.editor.isActive(`orderedList`)}),L=E({editor:y,selector:e=>e.editor.isActive(`blockquote`)}),R=E({editor:y,selector:e=>e.editor.isActive(`codeBlock`)}),z=E({editor:y,selector:e=>e.editor.isActive({textAlign:`left`})}),B=E({editor:y,selector:e=>e.editor.isActive({textAlign:`center`})}),V=E({editor:y,selector:e=>e.editor.isActive({textAlign:`right`})}),H=E({editor:y,selector:e=>e.editor.isActive({textAlign:`justify`})});return C(`div`,{"data-slot":`text-editor-toolbar`,className:b(`flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5`,x),children:[S(M,{onClick:()=>y.chain().focus().undo().run(),disabled:!y.can().undo(),title:`Undo`,children:S(v,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().redo().run(),disabled:!y.can().redo(),title:`Redo`,children:S(h,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:1}).run(),isActive:w,title:`Heading 1`,children:S(s,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:2}).run(),isActive:T,title:`Heading 2`,children:S(c,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleHeading({level:3}).run(),isActive:D,title:`Heading 3`,children:S(l,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBold().run(),isActive:O,title:`Bold`,children:S(i,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleItalic().run(),isActive:k,title:`Italic`,children:S(u,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleUnderline().run(),isActive:A,title:`Underline`,children:S(_,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleStrike().run(),isActive:j,title:`Strikethrough`,children:S(g,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleCode().run(),isActive:P,title:`Inline Code`,children:S(a,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBulletList().run(),isActive:F,title:`Bullet List`,children:S(d,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleOrderedList().run(),isActive:I,title:`Ordered List`,children:S(f,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().toggleBlockquote().run(),isActive:L,title:`Blockquote`,children:S(m,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().toggleCodeBlock().run(),isActive:R,title:`Code Block`,children:S(o,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setHorizontalRule().run(),title:`Horizontal Rule`,children:S(p,{className:`h-3.5 w-3.5`})}),S(N,{}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`left`).run(),isActive:z,title:`Align Left`,children:S(n,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`center`).run(),isActive:B,title:`Align Center`,children:S(e,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`right`).run(),isActive:V,title:`Align Right`,children:S(r,{className:`h-3.5 w-3.5`})}),S(M,{onClick:()=>y.chain().focus().setTextAlign(`justify`).run(),isActive:H,title:`Align Justify`,children:S(t,{className:`h-3.5 w-3.5`})})]})}function F({value:e,defaultValue:t,onChange:n,placeholder:r=`Start writing...`,readOnly:i=!1,showToolbar:a=!0,variant:o,className:s,toolbarClassName:c,editorClassName:l}){let u=T({extensions:[A,k,D.configure({placeholder:r}),O.configure({types:[`heading`,`paragraph`]})],content:e??t,editable:!i,onUpdate:({editor:e})=>{n?.(e.getHTML())}});return y(()=>{!u||e===void 0||u.getHTML()!==e&&u.commands.setContent(e)},[u,e]),y(()=>{u&&u.setEditable(!i)},[u,i]),C(`div`,{"data-slot":`text-editor`,className:b(`lunas-text-editor`,j({variant:o}),s),children:[a&&!i&&u&&S(P,{editor:u,className:c}),S(w,{editor:u,"data-slot":`text-editor-content`,className:b(`flex-1 text-sm text-text-positive bg-background`,l)})]})}export{P as n,F as t};
|
|
2
|
-
//# sourceMappingURL=text-editor-
|
|
2
|
+
//# sourceMappingURL=text-editor-CbBJNn-4.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-CqC44BkO.mjs","names":["Underline"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text-editor-CbBJNn-4.mjs","names":["Underline"],"sources":["../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'outline',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n Code,\n Code2,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n List,\n ListOrdered,\n Minus,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm text-black transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n}\n\nfunction TextEditorToolbar({ editor, className }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isParagraphActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('paragraph'),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Headings */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={isHeading1Active} title=\"Heading 1\">\n <Heading1 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={isHeading2Active} title=\"Heading 2\">\n <Heading2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={isHeading3Active} title=\"Heading 3\">\n <Heading3 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { useEffect } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\nimport { textEditorVariants, type TextEditorVariantProps } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n}\n\nfunction TextEditor({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n className,\n toolbarClassName,\n editorClassName,\n}: TextEditorProps) {\n const editor = useEditor({\n extensions: [StarterKit, Underline, Placeholder.configure({ placeholder }), TextAlign.configure({ types: ['heading', 'paragraph'] })],\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n },\n });\n\n // Sync controlled value into the editor without re-triggering onChange\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n // Sync editable state\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant }), className)}>\n {showToolbar && !readOnly && editor && <TextEditorToolbar editor={editor} className={toolbarClassName} />}\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 text-sm text-text-positive bg-background', editorClassName)} />\n </div>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{useCallback as e}from"react";import{cn as t}from"@customafk/react-toolkit/utils";import{jsx as n}from"react/jsx-runtime";function r({className:r,onChange:i,onValueChange:a,...o}){let s=e(e=>{i?.(e),a?.(e.target.value)},[i,a]);return n(`textarea`,{"data-slot":`textarea`,className:t(`flex min-h-24 w-full bg-transparent px-3 py-2`,`rounded shadow-input transition-[color,box-shadow] duration-200`,`resize-y text-sm text-text-positive-weak tabular-nums caret-primary`,`-outline-offset-1 outline-1 outline-border`,`placeholder:text-text-positive-muted`,`focus:text-text-positive focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak`,`read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak`,`aria-invalid:bg-danger-bg-subtle`,`aria-invalid:outline-danger`,`aria-invalid:ring-danger-weak`,`aria-invalid:focus:outline-danger-strong`,`aria-invalid:focus:ring-4`,`aria-invalid:placeholder:text-text-positive-weak`,`disabled:cursor-not-allowed disabled:opacity-50`,`disabled:pointer-events-none`,`disabled:border-border-weak/50 disabled:bg-secondary-muted/10`,r),...o,onChange:s})}export{r as t};
|
|
2
|
-
//# sourceMappingURL=textarea-
|
|
2
|
+
//# sourceMappingURL=textarea-7HDXcaK9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-
|
|
1
|
+
{"version":3,"file":"textarea-7HDXcaK9.mjs","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client';\nimport { useCallback } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Styled multi-line text area built on the native `<textarea>` element with resize, focus, and validation state styles.\n *\n * @example\n * ```tsx\n * import { Textarea } from '@customafk/lunas-ui/ui/textarea';\n *\n * <Textarea\n * placeholder=\"Write a description…\"\n * rows={4}\n * onValueChange={(value) => console.log(value)}\n * />\n * ```\n */\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n /** Convenience callback that receives the raw string value on every change, bypassing the synthetic event. */\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange]\n );\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n // Base styles\n 'flex min-h-24 w-full bg-transparent px-3 py-2',\n 'rounded shadow-input transition-[color,box-shadow] duration-200',\n 'resize-y text-sm text-text-positive-weak tabular-nums caret-primary',\n\n // Border and shadow styles\n '-outline-offset-1 outline-1 outline-border',\n\n // Placeholder styling\n 'placeholder:text-text-positive-muted',\n\n // State styles\n 'focus:text-text-positive focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak',\n\n // Read-only state\n 'read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak',\n\n // Invalid state\n 'aria-invalid:bg-danger-bg-subtle',\n 'aria-invalid:outline-danger',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:focus:outline-danger-strong',\n 'aria-invalid:focus:ring-4',\n 'aria-invalid:placeholder:text-text-positive-weak',\n\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'disabled:pointer-events-none',\n 'disabled:border-border-weak/50 disabled:bg-secondary-muted/10',\n\n // Additional custom styling\n className\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"gIAmBA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAIF,CACD,IAAM,EAAe,EAClB,GAA8C,CAC7C,IAAW,EAAE,CACb,IAAgB,EAAE,OAAO,MAAM,EAEjC,CAAC,EAAU,EAAc,CAC1B,CACD,OACE,EAAC,WAAA,CACC,YAAU,WACV,UAAW,EAET,gDACA,kEACA,sEAGA,6CAGA,uCAGA,6FAGA,uGAGA,mCACA,8BACA,gCACA,2CACA,4BACA,mDAGA,kDACA,+BACA,gEAGA,EACD,CACD,GAAI,EACJ,SAAU,GACV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`@customafk/react-toolkit/utils`),r=require(`react/jsx-runtime`);function i({className:e,onChange:i,onValueChange:a,...o}){let s=(0,t.useCallback)(e=>{i?.(e),a?.(e.target.value)},[i,a]);return(0,r.jsx)(`textarea`,{"data-slot":`textarea`,className:(0,n.cn)(`flex min-h-24 w-full bg-transparent px-3 py-2`,`rounded shadow-input transition-[color,box-shadow] duration-200`,`resize-y text-sm text-text-positive-weak tabular-nums caret-primary`,`-outline-offset-1 outline-1 outline-border`,`placeholder:text-text-positive-muted`,`focus:text-text-positive focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak`,`read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak`,`aria-invalid:bg-danger-bg-subtle`,`aria-invalid:outline-danger`,`aria-invalid:ring-danger-weak`,`aria-invalid:focus:outline-danger-strong`,`aria-invalid:focus:ring-4`,`aria-invalid:placeholder:text-text-positive-weak`,`disabled:cursor-not-allowed disabled:opacity-50`,`disabled:pointer-events-none`,`disabled:border-border-weak/50 disabled:bg-secondary-muted/10`,e),...o,onChange:s})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
2
|
-
//# sourceMappingURL=textarea-
|
|
2
|
+
//# sourceMappingURL=textarea-Byo8E8oi.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-
|
|
1
|
+
{"version":3,"file":"textarea-Byo8E8oi.cjs","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client';\nimport { useCallback } from 'react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Styled multi-line text area built on the native `<textarea>` element with resize, focus, and validation state styles.\n *\n * @example\n * ```tsx\n * import { Textarea } from '@customafk/lunas-ui/ui/textarea';\n *\n * <Textarea\n * placeholder=\"Write a description…\"\n * rows={4}\n * onValueChange={(value) => console.log(value)}\n * />\n * ```\n */\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n /** Convenience callback that receives the raw string value on every change, bypassing the synthetic event. */\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange]\n );\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n // Base styles\n 'flex min-h-24 w-full bg-transparent px-3 py-2',\n 'rounded shadow-input transition-[color,box-shadow] duration-200',\n 'resize-y text-sm text-text-positive-weak tabular-nums caret-primary',\n\n // Border and shadow styles\n '-outline-offset-1 outline-1 outline-border',\n\n // Placeholder styling\n 'placeholder:text-text-positive-muted',\n\n // State styles\n 'focus:text-text-positive focus:outline-primary-strong focus:ring-4 focus:ring-primary-weak',\n\n // Read-only state\n 'read-only:pointer-events-none read-only:bg-muted-muted read-only:placeholder:text-text-positive-weak',\n\n // Invalid state\n 'aria-invalid:bg-danger-bg-subtle',\n 'aria-invalid:outline-danger',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:focus:outline-danger-strong',\n 'aria-invalid:focus:ring-4',\n 'aria-invalid:placeholder:text-text-positive-weak',\n\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'disabled:pointer-events-none',\n 'disabled:border-border-weak/50 disabled:bg-secondary-muted/10',\n\n // Additional custom styling\n className\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"0IAmBA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAIF,CACD,IAAM,GAAA,EAAA,EAAA,aACH,GAA8C,CAC7C,IAAW,EAAE,CACb,IAAgB,EAAE,OAAO,MAAM,EAEjC,CAAC,EAAU,EAAc,CAC1B,CACD,OACE,EAAA,EAAA,KAAC,WAAA,CACC,YAAU,WACV,WAAA,EAAA,EAAA,IAEE,gDACA,kEACA,sEAGA,6CAGA,uCAGA,6FAGA,uGAGA,mCACA,8BACA,gCACA,2CACA,4BACA,mDAGA,kDACA,+BACA,gEAGA,EACD,CACD,GAAI,EACJ,SAAU,GACV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{Tooltip as r}from"radix-ui";function i({delayDuration:e=0,...n}){return t(r.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...n})}function a({...e}){return t(i,{children:t(r.Root,{"data-slot":`tooltip`,...e})})}function o({...e}){return t(r.Trigger,{"data-slot":`tooltip-trigger`,...e})}function s({className:i,sideOffset:a=0,children:o,...s}){return t(r.Portal,{children:n(r.Content,{"data-slot":`tooltip-content`,sideOffset:a,className:e(`bg-secondary-strong text-text-negative-weak shadow-dropdown outline-none`,`fade-in-0 zoom-in-95 animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-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 w-fit`,`origin-(--radix-tooltip-content-transform-origin)`,`text-balance rounded-sm px-3 py-1.5 text-xs`,i),...s,children:[o,t(r.Arrow,{className:`z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-secondary-strong fill-secondary-strong`})]})})}export{o as i,s as n,i as r,a as t};
|
|
2
|
-
//# sourceMappingURL=tooltip-
|
|
2
|
+
//# sourceMappingURL=tooltip-BfBJRYpc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-
|
|
1
|
+
{"version":3,"file":"tooltip-BfBJRYpc.mjs","names":["TooltipPrimitive","Tooltip"],"sources":["../packages/components/ui/tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Tooltip as TooltipPrimitive } from 'radix-ui';\n\n/**\n * Context provider that controls the open delay for all child `Tooltip` components; defaults to `0` ms for instant display.\n *\n * @example\n * ```tsx\n * import { TooltipProvider } from '@customafk/lunas-ui/ui/tooltip';\n *\n * // Wrap at the app root to apply a shared delay:\n * <TooltipProvider delayDuration={300}>\n * <App />\n * </TooltipProvider>\n * ```\n */\nfunction TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\n/**\n * Floating label that reveals supplementary text when the user hovers or focuses its trigger element.\n *\n * @example\n * ```tsx\n * import { Tooltip, TooltipTrigger, TooltipContent } from '@customafk/lunas-ui/ui/tooltip';\n * import { Button } from '@customafk/lunas-ui/ui/button';\n *\n * <Tooltip>\n * <TooltipTrigger asChild>\n * <Button variant=\"ghost\" size=\"icon\" aria-label=\"Settings\">⚙</Button>\n * </TooltipTrigger>\n * <TooltipContent>Open settings</TooltipContent>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\n/** Element that opens the tooltip on hover/focus; use `asChild` to forward props to a custom child element. */\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\n/** Floating panel rendered in a portal that displays the tooltip text with a directional arrow. */\nfunction TooltipContent({ className, sideOffset = 0, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-secondary-strong text-text-negative-weak shadow-dropdown outline-none',\n 'fade-in-0 zoom-in-95 animate-in',\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0',\n 'data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'z-50 w-fit',\n 'origin-(--radix-tooltip-content-transform-origin)',\n 'text-balance rounded-sm px-3 py-1.5 text-xs',\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-secondary-strong fill-secondary-strong\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n"],"mappings":"yIAmBA,SAAS,EAAgB,CAAE,gBAAgB,EAAG,GAAG,GAAiE,CAChH,OAAO,EAACA,EAAiB,SAAA,CAAS,YAAU,mBAAkC,gBAAe,GAAI,GAAS,CAmB5G,SAASC,EAAQ,CAAE,GAAG,GAA6D,CACjF,OACE,EAAC,EAAA,CAAA,SACC,EAACD,EAAiB,KAAA,CAAK,YAAU,UAAU,GAAI,GAAS,CAAA,CACxC,CAKtB,SAAS,EAAe,CAAE,GAAG,GAAgE,CAC3F,OAAO,EAACA,EAAiB,QAAA,CAAQ,YAAU,kBAAkB,GAAI,GAAS,CAI5E,SAAS,EAAe,CAAE,YAAW,aAAa,EAAG,WAAU,GAAG,GAAgE,CAChI,OACE,EAACA,EAAiB,OAAA,CAAA,SAChB,EAACA,EAAiB,QAAA,CAChB,YAAU,kBACE,aACZ,UAAW,EACT,2EACA,kCACA,kCACA,iCACA,kCACA,yCACA,yCACA,yCACA,yCACA,aACA,oDACA,8CACA,EACD,CACD,GAAI,YAEH,EACD,EAACA,EAAiB,MAAA,CAAM,UAAU,+GAAA,CAAiH,CAAA,EAC1H,CAAA,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
let e=function(e){return e.SUPER_ADMIN=`SUPER_ADMIN`,e.ADMIN=`ADMIN`,e.MODERATOR=`MODERATOR`,e.STAFF=`STAFF`,e.USER=`USER`,e}({}),t=function(e){return e.VIETNAM=`Vietnam`,e.USA=`USA`,e.JAPAN=`Japan`,e.KOREA=`Korea`,e.CHINA=`China`,e.TAIWAN=`Taiwan`,e.THAILAND=`Thailand`,e.MALAYSIA=`Malaysia`,e.SINGAPORE=`Singapore`,e.INDONESIA=`Indonesia`,e}({});export{e as n,t};
|
|
2
|
-
//# sourceMappingURL=types-
|
|
2
|
+
//# sourceMappingURL=types-CFXgrpTm.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-
|
|
1
|
+
{"version":3,"file":"types-CFXgrpTm.mjs","names":[],"sources":["../packages/types.ts"],"sourcesContent":["export enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n USER = 'USER',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyEntity = any;\n"],"mappings":"AAAA,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,YAAA,cACA,EAAA,MAAA,QACA,EAAA,UAAA,YACA,EAAA,MAAA,QACA,EAAA,KAAA,cAGU,EAAA,SAAA,EAAL,OACL,GAAA,QAAA,UACA,EAAA,IAAA,MACA,EAAA,MAAA,QACA,EAAA,MAAA,QACA,EAAA,MAAA,QACA,EAAA,OAAA,SACA,EAAA,SAAA,WACA,EAAA,SAAA,WACA,EAAA,UAAA,YACA,EAAA,UAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react29 from "react";
|
|
2
2
|
import { ComponentPropsWithoutRef } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as class_variance_authority_types2 from "class-variance-authority/types";
|
|
4
4
|
import { VariantProps } from "class-variance-authority";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/typography/paragraph.d.ts
|
|
7
7
|
declare const paragraphVariants: (props?: ({
|
|
8
|
-
variant?: "
|
|
9
|
-
} &
|
|
8
|
+
variant?: "xs" | "sm" | "lg" | "lead" | "p" | "muted" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types2.ClassProp) | undefined) => string;
|
|
10
10
|
/**
|
|
11
11
|
* Props for the {@link Paragraph} component.
|
|
12
12
|
*
|
|
@@ -42,7 +42,7 @@ declare const Paragraph: ({
|
|
|
42
42
|
variant,
|
|
43
43
|
className,
|
|
44
44
|
...props
|
|
45
|
-
}: ParagraphProps) =>
|
|
45
|
+
}: ParagraphProps) => react29.JSX.Element;
|
|
46
46
|
//#endregion
|
|
47
47
|
export { Paragraph, ParagraphProps, paragraphVariants };
|
|
48
48
|
//# sourceMappingURL=paragraph.d.cts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as react34 from "react";
|
|
2
2
|
import { ComponentPropsWithoutRef } from "react";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
import * as
|
|
4
|
+
import * as class_variance_authority_types2 from "class-variance-authority/types";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/typography/paragraph.d.ts
|
|
7
7
|
declare const paragraphVariants: (props?: ({
|
|
8
|
-
variant?: "
|
|
9
|
-
} &
|
|
8
|
+
variant?: "xs" | "sm" | "lg" | "lead" | "p" | "muted" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types2.ClassProp) | undefined) => string;
|
|
10
10
|
/**
|
|
11
11
|
* Props for the {@link Paragraph} component.
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{n as e,t}from"../paragraph-
|
|
1
|
+
"use client";import{n as e,t}from"../paragraph-CjstaJFj.mjs";export{t as Paragraph,e as paragraphVariants};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react168 from "react";
|
|
2
2
|
import { AlertDialog as AlertDialog$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/alert-dialog.d.ts
|
|
@@ -36,55 +36,55 @@ import { AlertDialog as AlertDialog$1 } from "radix-ui";
|
|
|
36
36
|
*/
|
|
37
37
|
declare function AlertDialog({
|
|
38
38
|
...props
|
|
39
|
-
}: React.ComponentProps<typeof AlertDialog$1.Root>):
|
|
39
|
+
}: React.ComponentProps<typeof AlertDialog$1.Root>): react168.JSX.Element;
|
|
40
40
|
/** Element that opens the alert dialog when clicked; typically wrapped with `asChild` around a `Button`. */
|
|
41
41
|
declare function AlertDialogTrigger({
|
|
42
42
|
...props
|
|
43
|
-
}: React.ComponentProps<typeof AlertDialog$1.Trigger>):
|
|
43
|
+
}: React.ComponentProps<typeof AlertDialog$1.Trigger>): react168.JSX.Element;
|
|
44
44
|
/** Renders alert dialog overlay and content into a portal outside the normal React tree. */
|
|
45
45
|
declare function AlertDialogPortal({
|
|
46
46
|
...props
|
|
47
|
-
}: React.ComponentProps<typeof AlertDialog$1.Portal>):
|
|
47
|
+
}: React.ComponentProps<typeof AlertDialog$1.Portal>): react168.JSX.Element;
|
|
48
48
|
/** Semi-transparent backdrop rendered behind the alert dialog panel; pointer events are disabled to prevent accidental dismissal. */
|
|
49
49
|
declare function AlertDialogOverlay({
|
|
50
50
|
className,
|
|
51
51
|
...props
|
|
52
|
-
}: React.ComponentProps<typeof AlertDialog$1.Overlay>):
|
|
52
|
+
}: React.ComponentProps<typeof AlertDialog$1.Overlay>): react168.JSX.Element;
|
|
53
53
|
/** Animated panel that contains the alert dialog body; renders via `AlertDialogPortal` over `AlertDialogOverlay`. */
|
|
54
54
|
declare function AlertDialogContent({
|
|
55
55
|
className,
|
|
56
56
|
...props
|
|
57
|
-
}: React.ComponentProps<typeof AlertDialog$1.Content>):
|
|
57
|
+
}: React.ComponentProps<typeof AlertDialog$1.Content>): react168.JSX.Element;
|
|
58
58
|
/** Layout wrapper for the alert dialog title and description. */
|
|
59
59
|
declare function AlertDialogHeader({
|
|
60
60
|
className,
|
|
61
61
|
...props
|
|
62
|
-
}: React.ComponentProps<'div'>):
|
|
62
|
+
}: React.ComponentProps<'div'>): react168.JSX.Element;
|
|
63
63
|
/** Layout wrapper for the cancel and action buttons at the bottom of the alert dialog. */
|
|
64
64
|
declare function AlertDialogFooter({
|
|
65
65
|
className,
|
|
66
66
|
...props
|
|
67
|
-
}: React.ComponentProps<'div'>):
|
|
67
|
+
}: React.ComponentProps<'div'>): react168.JSX.Element;
|
|
68
68
|
/** Accessible heading for the alert dialog, styled with the h3 heading variant. */
|
|
69
69
|
declare function AlertDialogTitle({
|
|
70
70
|
className,
|
|
71
71
|
...props
|
|
72
|
-
}: React.ComponentProps<typeof AlertDialog$1.Title>):
|
|
72
|
+
}: React.ComponentProps<typeof AlertDialog$1.Title>): react168.JSX.Element;
|
|
73
73
|
/** Muted supporting text that explains the consequences of the destructive action. */
|
|
74
74
|
declare function AlertDialogDescription({
|
|
75
75
|
className,
|
|
76
76
|
...props
|
|
77
|
-
}: React.ComponentProps<typeof AlertDialog$1.Description>):
|
|
77
|
+
}: React.ComponentProps<typeof AlertDialog$1.Description>): react168.JSX.Element;
|
|
78
78
|
/** Confirm button that closes the dialog and proceeds with the action; auto-focused and styled as the primary action. */
|
|
79
79
|
declare function AlertDialogAction({
|
|
80
80
|
className,
|
|
81
81
|
...props
|
|
82
|
-
}: React.ComponentProps<typeof AlertDialog$1.Action>):
|
|
82
|
+
}: React.ComponentProps<typeof AlertDialog$1.Action>): react168.JSX.Element;
|
|
83
83
|
/** Cancel button that closes the alert dialog without performing the destructive action. */
|
|
84
84
|
declare function AlertDialogCancel({
|
|
85
85
|
className,
|
|
86
86
|
...props
|
|
87
|
-
}: React.ComponentProps<typeof AlertDialog$1.Cancel>):
|
|
87
|
+
}: React.ComponentProps<typeof AlertDialog$1.Cancel>): react168.JSX.Element;
|
|
88
88
|
//#endregion
|
|
89
89
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
90
90
|
//# sourceMappingURL=alert-dialog.d.cts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react40 from "react";
|
|
2
2
|
import { AlertDialog as AlertDialog$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/alert-dialog.d.ts
|
|
@@ -36,55 +36,55 @@ import { AlertDialog as AlertDialog$1 } from "radix-ui";
|
|
|
36
36
|
*/
|
|
37
37
|
declare function AlertDialog({
|
|
38
38
|
...props
|
|
39
|
-
}: React.ComponentProps<typeof AlertDialog$1.Root>):
|
|
39
|
+
}: React.ComponentProps<typeof AlertDialog$1.Root>): react40.JSX.Element;
|
|
40
40
|
/** Element that opens the alert dialog when clicked; typically wrapped with `asChild` around a `Button`. */
|
|
41
41
|
declare function AlertDialogTrigger({
|
|
42
42
|
...props
|
|
43
|
-
}: React.ComponentProps<typeof AlertDialog$1.Trigger>):
|
|
43
|
+
}: React.ComponentProps<typeof AlertDialog$1.Trigger>): react40.JSX.Element;
|
|
44
44
|
/** Renders alert dialog overlay and content into a portal outside the normal React tree. */
|
|
45
45
|
declare function AlertDialogPortal({
|
|
46
46
|
...props
|
|
47
|
-
}: React.ComponentProps<typeof AlertDialog$1.Portal>):
|
|
47
|
+
}: React.ComponentProps<typeof AlertDialog$1.Portal>): react40.JSX.Element;
|
|
48
48
|
/** Semi-transparent backdrop rendered behind the alert dialog panel; pointer events are disabled to prevent accidental dismissal. */
|
|
49
49
|
declare function AlertDialogOverlay({
|
|
50
50
|
className,
|
|
51
51
|
...props
|
|
52
|
-
}: React.ComponentProps<typeof AlertDialog$1.Overlay>):
|
|
52
|
+
}: React.ComponentProps<typeof AlertDialog$1.Overlay>): react40.JSX.Element;
|
|
53
53
|
/** Animated panel that contains the alert dialog body; renders via `AlertDialogPortal` over `AlertDialogOverlay`. */
|
|
54
54
|
declare function AlertDialogContent({
|
|
55
55
|
className,
|
|
56
56
|
...props
|
|
57
|
-
}: React.ComponentProps<typeof AlertDialog$1.Content>):
|
|
57
|
+
}: React.ComponentProps<typeof AlertDialog$1.Content>): react40.JSX.Element;
|
|
58
58
|
/** Layout wrapper for the alert dialog title and description. */
|
|
59
59
|
declare function AlertDialogHeader({
|
|
60
60
|
className,
|
|
61
61
|
...props
|
|
62
|
-
}: React.ComponentProps<'div'>):
|
|
62
|
+
}: React.ComponentProps<'div'>): react40.JSX.Element;
|
|
63
63
|
/** Layout wrapper for the cancel and action buttons at the bottom of the alert dialog. */
|
|
64
64
|
declare function AlertDialogFooter({
|
|
65
65
|
className,
|
|
66
66
|
...props
|
|
67
|
-
}: React.ComponentProps<'div'>):
|
|
67
|
+
}: React.ComponentProps<'div'>): react40.JSX.Element;
|
|
68
68
|
/** Accessible heading for the alert dialog, styled with the h3 heading variant. */
|
|
69
69
|
declare function AlertDialogTitle({
|
|
70
70
|
className,
|
|
71
71
|
...props
|
|
72
|
-
}: React.ComponentProps<typeof AlertDialog$1.Title>):
|
|
72
|
+
}: React.ComponentProps<typeof AlertDialog$1.Title>): react40.JSX.Element;
|
|
73
73
|
/** Muted supporting text that explains the consequences of the destructive action. */
|
|
74
74
|
declare function AlertDialogDescription({
|
|
75
75
|
className,
|
|
76
76
|
...props
|
|
77
|
-
}: React.ComponentProps<typeof AlertDialog$1.Description>):
|
|
77
|
+
}: React.ComponentProps<typeof AlertDialog$1.Description>): react40.JSX.Element;
|
|
78
78
|
/** Confirm button that closes the dialog and proceeds with the action; auto-focused and styled as the primary action. */
|
|
79
79
|
declare function AlertDialogAction({
|
|
80
80
|
className,
|
|
81
81
|
...props
|
|
82
|
-
}: React.ComponentProps<typeof AlertDialog$1.Action>):
|
|
82
|
+
}: React.ComponentProps<typeof AlertDialog$1.Action>): react40.JSX.Element;
|
|
83
83
|
/** Cancel button that closes the alert dialog without performing the destructive action. */
|
|
84
84
|
declare function AlertDialogCancel({
|
|
85
85
|
className,
|
|
86
86
|
...props
|
|
87
|
-
}: React.ComponentProps<typeof AlertDialog$1.Cancel>):
|
|
87
|
+
}: React.ComponentProps<typeof AlertDialog$1.Cancel>): react40.JSX.Element;
|
|
88
88
|
//#endregion
|
|
89
89
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
90
90
|
//# sourceMappingURL=alert-dialog.d.mts.map
|
package/dist/ui/alert-dialog.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{n as e}from"../button.variants-
|
|
1
|
+
"use client";import{n as e}from"../button.variants-B8aRZ52K.mjs";import{t}from"../heading-woRh-IC7.mjs";import{n}from"../paragraph-CjstaJFj.mjs";import{cn as r}from"@customafk/react-toolkit/utils";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{AlertDialog as o}from"radix-ui";function s({...e}){return i(o.Root,{"data-slot":`alert-dialog`,...e})}function c({...e}){return i(o.Trigger,{"data-slot":`alert-dialog-trigger`,...e})}function l({...e}){return i(o.Portal,{"data-slot":`alert-dialog-portal`,...e})}function u({className:e,...t}){return i(o.Overlay,{"data-slot":`alert-dialog-overlay`,style:{pointerEvents:`none`},className:r(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=open]:fade-in-0`,e),...t})}function d({className:e,...t}){return a(l,{children:[i(u,{}),i(o.Content,{"data-slot":`alert-dialog-content`,className:r(`bg-background`,`fixed z-50`,`-translate-1/2 top-1/2 left-1/2`,`grid w-full max-w-[calc(100%-2rem)] sm:max-w-lg`,`gap-4 rounded-lg p-6 shadow-lg duration-200`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,e),...t})]})}function f({className:e,...t}){return i(`div`,{"data-slot":`alert-dialog-header`,className:r(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function p({className:e,...t}){return i(`div`,{"data-slot":`alert-dialog-footer`,className:r(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function m({className:e,...n}){return i(o.Title,{"data-slot":`alert-dialog-title`,className:r(t({level:`h3`}),e),...n})}function h({className:e,...t}){return i(o.Description,{"data-slot":`alert-dialog-description`,className:r(n({variant:`muted`}),`not-first:mt-0`,e),...t})}function g({className:t,...n}){return i(o.Action,{className:r(e(),`min-w-24`,t),...n,autoFocus:!0,tabIndex:1})}function _({className:t,...n}){return i(o.Cancel,{className:r(e({variant:`outline`,color:`muted`}),`min-w-24`,t),...n})}export{s as AlertDialog,g as AlertDialogAction,_ as AlertDialogCancel,d as AlertDialogContent,h as AlertDialogDescription,p as AlertDialogFooter,f as AlertDialogHeader,u as AlertDialogOverlay,l as AlertDialogPortal,m as AlertDialogTitle,c as AlertDialogTrigger};
|
|
2
2
|
//# sourceMappingURL=alert-dialog.mjs.map
|
package/dist/ui/alert.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../alert-
|
|
1
|
+
"use client";const e=require(`../alert-DubR6Szk.cjs`);exports.Alert=e.t,exports.AlertDescription=e.n,exports.AlertTitle=e.r;
|
package/dist/ui/alert.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as AlertTitle, i as AlertProps, n as AlertDescription, o as AlertTitleProps, r as AlertDescriptionProps, t as Alert } from "../alert-
|
|
1
|
+
import { a as AlertTitle, i as AlertProps, n as AlertDescription, o as AlertTitleProps, r as AlertDescriptionProps, t as Alert } from "../alert-DGoFdiDI.cjs";
|
|
2
2
|
export { Alert, AlertDescription, AlertDescriptionProps, AlertProps, AlertTitle, AlertTitleProps };
|
package/dist/ui/alert.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as AlertTitle, i as AlertProps, n as AlertDescription, o as AlertTitleProps, r as AlertDescriptionProps, t as Alert } from "../alert-
|
|
1
|
+
import { a as AlertTitle, i as AlertProps, n as AlertDescription, o as AlertTitleProps, r as AlertDescriptionProps, t as Alert } from "../alert-DZlPX4MK.mjs";
|
|
2
2
|
export { Alert, AlertDescription, AlertDescriptionProps, AlertProps, AlertTitle, AlertTitleProps };
|
package/dist/ui/alert.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{n as e,r as t,t as n}from"../alert-
|
|
1
|
+
"use client";import{n as e,r as t,t as n}from"../alert-BbvPwf2x.mjs";export{n as Alert,e as AlertDescription,t as AlertTitle};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react167 from "react";
|
|
2
2
|
import { AspectRatio as AspectRatio$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/aspect-ratio.d.ts
|
|
@@ -18,7 +18,7 @@ import { AspectRatio as AspectRatio$1 } from "radix-ui";
|
|
|
18
18
|
declare function AspectRatio({
|
|
19
19
|
className,
|
|
20
20
|
...props
|
|
21
|
-
}: React.ComponentProps<typeof AspectRatio$1.Root>):
|
|
21
|
+
}: React.ComponentProps<typeof AspectRatio$1.Root>): react167.JSX.Element;
|
|
22
22
|
//#endregion
|
|
23
23
|
export { AspectRatio };
|
|
24
24
|
//# sourceMappingURL=aspect-ratio.d.cts.map
|