ghost 6.68.0 → 6.69.0
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/components/ghost-storage-base-3.0.1.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.1.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.5.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.4.tgz +0 -0
- package/components/tryghost-app-contracts-0.0.0.tgz +0 -0
- package/components/tryghost-checkout-0.0.0.tgz +0 -0
- package/components/tryghost-i18n-0.0.0.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.6.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.6.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.6.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.7.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.3.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.6.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.4.1.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.1.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.7.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.6.tgz +0 -0
- package/components/tryghost-metafield-csv-0.0.0.tgz +0 -0
- package/components/tryghost-metafield-types-0.1.1.tgz +0 -0
- package/core/boot.js +6 -0
- package/core/built/admin/assets/{about-D_nwtf7X.js → about-Dxp30cNg.js} +1 -1
- package/core/built/admin/assets/{account-migration-BaecWw1T.js → account-migration-D05akW4q.js} +1 -1
- package/core/built/admin/assets/activitypub/{account-migration-4saTEZ6p.js → account-migration-BmiwuzXI.js} +6 -6
- package/core/built/admin/assets/activitypub/activitypub.js +2 -2
- package/core/built/admin/assets/activitypub/{bluesky-sharing-BHBNuZQH.js → bluesky-sharing-B1fzMdFb.js} +6 -6
- package/core/built/admin/assets/activitypub/{content-formatters-DVx9YktY.js → content-formatters-G0qBT5QE.js} +3 -3
- package/core/built/admin/assets/activitypub/{domain-rAmlMXBC.js → domain-B3UtdA1m.js} +7 -7
- package/core/built/admin/assets/activitypub/{edit-profile-CXYL4ZrS.js → edit-profile-9EodzviR.js} +4 -4
- package/core/built/admin/assets/activitypub/{explore-dqpEx3GA.js → explore-DmwPdxHI.js} +8 -8
- package/core/built/admin/assets/activitypub/{feed-Cb-wYNw9.js → feed-yauqnu7A.js} +5 -5
- package/core/built/admin/assets/activitypub/{field-JxegcPt6.js → field-CsrMjbg2.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-2hXDJBn5.js → inbox-DV3RrpFH.js} +7 -7
- package/core/built/admin/assets/activitypub/{label-DRQzZ7lb.js → label-DPs40NLn.js} +2 -2
- package/core/built/admin/assets/activitypub/layout-CvOhndCA.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-BnYKcTXY.js → moderation-DGa6hVNH.js} +7 -7
- package/core/built/admin/assets/activitypub/{note-C6ucS3Wu.js → note-BVL6LVHF.js} +5 -5
- package/core/built/admin/assets/activitypub/{notifications-DgBW9wEC.js → notifications-CRUu_uMC.js} +5 -5
- package/core/built/admin/assets/activitypub/{onboarding-DGu6yG4L.js → onboarding-Dpm-nLkQ.js} +2 -2
- package/core/built/admin/assets/activitypub/{onboarding-Bq3fNf_a.js → onboarding-KtpJA-xb.js} +2 -2
- package/core/built/admin/assets/activitypub/{preferences-C3jI1eVN.js → preferences-CdFuVqIt.js} +7 -7
- package/core/built/admin/assets/activitypub/{profile-Cn3vRb5Z.js → profile-KnNAoHYu.js} +8 -8
- package/core/built/admin/assets/activitypub/{routes-DbrwlS9h.js → routes-BRndai50.js} +26 -26
- package/core/built/admin/assets/activitypub/{settings-D0BALDQu.js → settings-DU7ftJ8w.js} +4 -4
- package/core/built/admin/assets/activitypub/{site-BFGj8HuQ.js → site-D1ZYV3AT.js} +2 -2
- package/core/built/admin/assets/activitypub/{step-1-CaoPg0a5.js → step-1-9IHheE78.js} +4 -4
- package/core/built/admin/assets/activitypub/{step-3-5k0TkyC9.js → step-3-DBERnfa-.js} +3 -3
- package/core/built/admin/assets/activitypub/{tabs-BV4JU7Vg.js → tabs-CvkwStij.js} +4 -4
- package/core/built/admin/assets/activitypub/{topic-filter-71sX5nfN.js → topic-filter-CS0Jsf_4.js} +2 -2
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-B3srUuKt.js → use-activity-pub-queries-CGgtQrxL.js} +2 -2
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-Cl6bGNy7.js → use-reply-chain-data-CLdUpx1t.js} +4 -4
- package/core/built/admin/assets/activitypub/{users-EcSPpds5.js → users-CyoMXlwX.js} +11 -3
- package/core/built/admin/assets/{add-integration-modal-DBFzeAUT.js → add-integration-modal-BVg-ec8i.js} +1 -1
- package/core/built/admin/assets/{add-newsletter-modal-CYJe-dTC.js → add-newsletter-modal-Du6th521.js} +1 -1
- package/core/built/admin/assets/{add-recommendation-modal-CgwGKH-_.js → add-recommendation-modal-BiCJ0-q5.js} +1 -1
- package/core/built/admin/assets/{analytics-CcXT_WqF.js → analytics-CQJzDDdJ.js} +1 -1
- package/core/built/admin/assets/{announcement-bar-modal-Ldcg-PB-.js → announcement-bar-modal-CskyZLzT.js} +1 -1
- package/core/built/admin/assets/{api-BLteQZ7W.js → api-BFocMbDg.js} +2 -2
- package/core/built/admin/assets/{api-keys-CoeerpwI.js → api-keys-CqKJHuAV.js} +1 -1
- package/core/built/admin/assets/{audience-Deg9lzfk.js → audience-Dn7LuH-r.js} +1 -1
- package/core/built/admin/assets/{auth-layout-CRaMX7g6.js → auth-layout-VLhXgXn5.js} +1 -1
- package/core/built/admin/assets/{automated-emails-WcjjRkRV.js → automated-emails-D5cFl1wr.js} +1 -1
- package/core/built/admin/assets/{automations-CbIdX0rd.js → automations-BpweKEcq.js} +1 -1
- package/core/built/admin/assets/automations-DBTYwNTJ.js +1 -0
- package/core/built/admin/assets/{bluesky-sharing-BJMNRwnU.js → bluesky-sharing-CrfpFHQ9.js} +1 -1
- package/core/built/admin/assets/{chart-helpers-D-3N170i.js → chart-helpers-BSuFLd6-.js} +1 -1
- package/core/built/admin/assets/{chunk.524.94ab17e1199b4c3f4615.js → chunk.524.e24d68bc6253b274b726.js} +4 -4
- package/core/built/admin/assets/{chunk.582.6f09b19a007e2805824e.js → chunk.582.47834285406dfa1abb29.js} +6 -6
- package/core/built/admin/assets/{chunk.476.53b5794a67d68111e0bf.js → chunk.837.e1454abc054e1fba1fe5.js} +5 -5
- package/core/built/admin/assets/{code-editor-view-DhTwpxxv.js → code-editor-view-BrGe3eS4.js} +1 -1
- package/core/built/admin/assets/{code-editor-view-C7wXGiuv.js → code-editor-view-CY6JCXNv.js} +1 -1
- package/core/built/admin/assets/{color-picker-field-Cjz2zY11.js → color-picker-field-DGe9HH6W.js} +1 -1
- package/core/built/admin/assets/{comments-DY-VLVxh.js → comments-iRbF6XiJ.js} +1 -1
- package/core/built/admin/assets/{config-B3HuCo0y.js → config-CRAZ4Civ.js} +1 -1
- package/core/built/admin/assets/{content-api-modal-2jt-jWiM.js → content-api-modal-B-XRbzeW.js} +1 -1
- package/core/built/admin/assets/{content-formatters-VqvNA7Pv.js → content-formatters-C08JJbUJ.js} +2 -2
- package/core/built/admin/assets/{context-menu-BWbk9nd5.js → context-menu-BxGXsgQO.js} +1 -1
- package/core/built/admin/assets/{custom-field-type-option-CIatEwIN.js → custom-field-type-option-C8Nt4X6x.js} +1 -1
- package/core/built/admin/assets/{custom-integration-modal-Cw0w2Tb3.js → custom-integration-modal-DzI16qjN.js} +1 -1
- package/core/built/admin/assets/{date-range-select-O-uA-BRV.js → date-range-select-BZqsYsGx.js} +1 -1
- package/core/built/admin/assets/{design-and-theme-modal-BLjNHRYN.js → design-and-theme-modal-1ty_KEkM.js} +2 -2
- package/core/built/admin/assets/{dist-DJhCsld6.js → dist-B4jqKAG5.js} +1 -1
- package/core/built/admin/assets/{dist-5Ol0DC_t.js → dist-Bmo2j_KH.js} +1 -1
- package/core/built/admin/assets/{dist-p52UDdoR.js → dist-C-_aTlvJ.js} +1 -1
- package/core/built/admin/assets/{dist-CcN1a5SB.js → dist-CWHIoxYn.js} +1 -1
- package/core/built/admin/assets/{dist-BcfsaiCV.js → dist-Cp2M5TzT.js} +1 -1
- package/core/built/admin/assets/{dist-kjTYGivb.js → dist-DQAAPbtg.js} +1 -1
- package/core/built/admin/assets/{dist-IMek6Acg.js → dist-DyO279y5.js} +1 -1
- package/core/built/admin/assets/{domain-DaPAeOFF.js → domain-DiFl_Z1A.js} +1 -1
- package/core/built/admin/assets/{edit-profile-BKO5qonH.js → edit-profile-PrLbJV3P.js} +1 -1
- package/core/built/admin/assets/editor-BBJDJL8U.js +8 -0
- package/core/built/admin/assets/{editor-screen-l4BUPE2o.js → editor-screen-nblrp808.js} +3 -3
- package/core/built/admin/assets/{email-previews-B1Ska3CF.js → email-previews-BKJxrW29.js} +1 -1
- package/core/built/admin/assets/{email-sending-status-provider-Bjn5KTy2.js → email-sending-status-provider-DB9ylBWk.js} +1 -1
- package/core/built/admin/assets/{emails-qxNbhO6X.js → emails-8YiSmC2X.js} +1 -1
- package/core/built/admin/assets/{embed-signup-form-modal-DSgds6Js.js → embed-signup-form-modal-CZmbYKfd.js} +1 -1
- package/core/built/admin/assets/{error-boundary-CJODV8Rg.js → error-boundary-DrxPFFO-.js} +1 -1
- package/core/built/admin/assets/{esm-CNLDtBMc.js → esm-_iCUCvbN.js} +1 -1
- package/core/built/admin/assets/{explore-C6V_JpUZ.js → explore-C69LSRVg.js} +1 -1
- package/core/built/admin/assets/{feed-B_TyFn9E.js → feed-B_0m7WhZ.js} +1 -1
- package/core/built/admin/assets/{feedback-gKOzmiGt.js → feedback-DW1DXdzT.js} +1 -1
- package/core/built/admin/assets/{filters-Bf6E1qAP.js → filters-Dr3vMnjZ.js} +1 -1
- package/core/built/admin/assets/{filters-DhsiEotO.js → filters-M2sRWPoF.js} +1 -1
- package/core/built/admin/assets/{first-promoter-modal-LmTXHr-z.js → first-promoter-modal-D43R2zhI.js} +1 -1
- package/core/built/admin/assets/{focus-koenig-editor-on-bottom-click-BAcLNJti.js → focus-koenig-editor-on-bottom-click-BzS8jiJf.js} +1 -1
- package/core/built/admin/assets/fullscreen-close-button-CWSp-MsK.js +1 -0
- package/core/built/admin/assets/{ghost-63bc7da4336844000c523a5a0819531e.js → ghost-ffde29676517b768b1aef5ec8d492418.js} +93 -96
- package/core/built/admin/assets/{gift-link-modal-uZtwRHzl.js → gift-link-modal-CNE7dfPD.js} +1 -1
- package/core/built/admin/assets/{gift-links-HVqaXear.js → gift-links-lQ7H_D8Z.js} +1 -1
- package/core/built/admin/assets/global-search-modal-DzRM3aON.js +1 -0
- package/core/built/admin/assets/{growth-BlPW4DHj.js → growth-CAi_5HIf.js} +1 -1
- package/core/built/admin/assets/{growth-CflU3vR0.js → growth-CMHbTWKE.js} +1 -1
- package/core/built/admin/assets/history-modal-BIz13vhr.js +1 -0
- package/core/built/admin/assets/{hooks-C-BDQ6Hs.js → hooks-0r7qxGEo.js} +2 -2
- package/core/built/admin/assets/{html-field-D6G0G1d_.js → html-field-vTe2q1be.js} +1 -1
- package/core/built/admin/assets/{iframe-buffering-DW-Axhvc.js → iframe-buffering-cu-yK7NA.js} +1 -1
- package/core/built/admin/assets/{images-BSUWxquu.js → images-DTZtaIAr.js} +1 -1
- package/core/built/admin/assets/{inbox-BkU3sg13.js → inbox-BHfpmmzn.js} +1 -1
- package/core/built/admin/assets/{index-z8-nEVdb.css → index-B02LJqc8.css} +1 -1
- package/core/built/admin/assets/{index-CuDhPtkB.js → index-RuRs_qGS.js} +3 -3
- package/core/built/admin/assets/{index.es-H6HOI4DG.js → index.es-rdb1skp_.js} +1 -1
- package/core/built/admin/assets/{integrations-BRo5DwA5.js → integrations-Deg9-u8X.js} +1 -1
- package/core/built/admin/assets/{invite-user-modal-CydBOG99.js → invite-user-modal-C4DeNcoO.js} +1 -1
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +10483 -10455
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +131 -131
- package/core/built/admin/assets/{koenig-lexical-CG_eb4dw.js → koenig-lexical-BhXu1__-.js} +96 -96
- package/core/built/admin/assets/{kpi-helpers-CyRx_yD6.js → kpi-helpers-H-Hl6h7h.js} +1 -1
- package/core/built/admin/assets/{kpi-tabs-V1_Nu9sh.js → kpi-tabs-k4A9-imn.js} +1 -1
- package/core/built/admin/assets/{label-picker-GTIIlBQ6.js → label-picker-DaivLdMw.js} +1 -1
- package/core/built/admin/assets/{labels-BVGLgdAj.js → labels-BCj6D_nl.js} +1 -1
- package/core/built/admin/assets/{layout-CG58T6P7.js → layout-_g2xhB0L.js} +1 -1
- package/core/built/admin/assets/{lib-Dkic19kH.js → lib-Bre6UXdJ.js} +2 -2
- package/core/built/admin/assets/{links-jD8AkkIu.js → links-C8RnEJVJ.js} +1 -1
- package/core/built/admin/assets/{member-activity-JggQ0VNQ.js → member-activity-DNJPUW5X.js} +1 -1
- package/core/built/admin/assets/{member-activity-feed-BBeCZmLM.js → member-activity-feed-CvKEetHS.js} +1 -1
- package/core/built/admin/assets/{member-custom-fields-DPsyP1Hq.js → member-custom-fields-CBdiwPD9.js} +1 -1
- package/core/built/admin/assets/{member-detail-D7qugPN7.js → member-detail-BIoyIIsl.js} +1 -1
- package/core/built/admin/assets/{members-Cj_BUZUL.js → members-CH6KeXQc.js} +1 -1
- package/core/built/admin/assets/{members-alDWPKDd.js → members-Dd9RczFK.js} +1 -1
- package/core/built/admin/assets/{migrate-2uKKakld.js → migrate-CVQIWsXO.js} +1 -1
- package/core/built/admin/assets/{moderation-pCUKsxbF.js → moderation-OtjZoNOc.js} +1 -1
- package/core/built/admin/assets/{navigation-modal-D0FBI5-m.js → navigation-modal-Bl02NjtO.js} +1 -1
- package/core/built/admin/assets/{newsletter-4urgCSR_.js → newsletter-BXyT7o69.js} +1 -1
- package/core/built/admin/assets/{newsletter-detail-modal-Chh1jvjH.js → newsletter-detail-modal-DxuKNu_1.js} +1 -1
- package/core/built/admin/assets/{newsletter-emails-CzVCiC2K.js → newsletter-emails-DicgmnMU.js} +1 -1
- package/core/built/admin/assets/{newsletters-eRQTtOBH.js → newsletters-By25FmUs.js} +1 -1
- package/core/built/admin/assets/{newsletters-BMEgeL2l.js → newsletters-CACa0VCx.js} +1 -1
- package/core/built/admin/assets/{note-dqog4Bua.js → note-CF4LrSmR.js} +1 -1
- package/core/built/admin/assets/{notifications-rcEVv-gx.js → notifications-BmHJmqIJ.js} +1 -1
- package/core/built/admin/assets/{offers-hV7zBtsI.js → offers-Df9Jzay5.js} +1 -1
- package/core/built/admin/assets/{offers-container-modal-DgZgkMsA.js → offers-container-modal-R0HRwugm.js} +1 -1
- package/core/built/admin/assets/{onboarding-4TxbZb90.js → onboarding-Bpo1yTzA.js} +1 -1
- package/core/built/admin/assets/{onboarding-SGscZLIc.js → onboarding-bMq3R8jB.js} +1 -1
- package/core/built/admin/assets/{onboarding-route-B3mN9l7E.js → onboarding-route-flf5YWti.js} +1 -1
- package/core/built/admin/assets/{overview-D4EanvDG.js → overview-C9WvmmOC.js} +1 -1
- package/core/built/admin/assets/{overview-CCwbHet8.js → overview-CDkHdIJM.js} +1 -1
- package/core/built/admin/assets/{page-header-Baymg6VR.js → page-header-CxTb0je5.js} +1 -1
- package/core/built/admin/assets/{pagemenu--UL0gW1x.js → pagemenu-DXr_U43J.js} +1 -1
- package/core/built/admin/assets/{pages-Cbq1M2kG.js → pages-Bm-zFXyP.js} +1 -1
- package/core/built/admin/assets/pages-route-LCw94aIO.js +1 -0
- package/core/built/admin/assets/{pintura-modal-D6HGlnJa.js → pintura-modal-B5sIPWcj.js} +1 -1
- package/core/built/admin/assets/{portal-modal-Bhqsevn_.js → portal-modal-DjOO3Unv.js} +1 -1
- package/core/built/admin/assets/{post-analytics-header-DX9fETdi.js → post-analytics-header-D2anehCj.js} +1 -1
- package/core/built/admin/assets/{post-analytics-provider-U7RtOle1.js → post-analytics-provider-BLQvV5C0.js} +1 -1
- package/core/built/admin/assets/{post-analytics-BJWDtC3a.js → post-analytics-wdu9gq8u.js} +1 -1
- package/core/built/admin/assets/{post-debug-D1b8Amju.js → post-debug-BnABXMfD.js} +1 -1
- package/core/built/admin/assets/{posts-Lg-p_ZHg.js → posts-CftunZgV.js} +1 -1
- package/core/built/admin/assets/{posts-list-screen-CmsW18e_.js → posts-list-screen-CwXmvY68.js} +2 -2
- package/core/built/admin/assets/posts-route-J74fMhCe.js +1 -0
- package/core/built/admin/assets/{preferences-CMlDfHfa.js → preferences-DFhf_pJF.js} +1 -1
- package/core/built/admin/assets/{preview-modal-D8om_cQv.js → preview-modal-BrZza3R_.js} +1 -1
- package/core/built/admin/assets/{profile-yFsIoZom.js → profile-CS4fP60N.js} +1 -1
- package/core/built/admin/assets/{radio-group-DwgLjwWB.js → radio-group-Xfp-frJz.js} +1 -1
- package/core/built/admin/assets/{referrers-DzP5QoXL.js → referrers-C8LJlrBm.js} +1 -1
- package/core/built/admin/assets/{reload-CZ-KP3IQ.js → reload-D0fnKoCm.js} +1 -1
- package/core/built/admin/assets/{reset-CCAa8v35.js → reset-CB-ATcLE.js} +1 -1
- package/core/built/admin/assets/{restore-screen-Ba0i2Y1K.js → restore-screen-EaZf4V8j.js} +1 -1
- package/core/built/admin/assets/{routes-DrnhmKTT.js → routes-DKfpFMfF.js} +2 -2
- package/core/built/admin/assets/search-index-sM3OjEUl.js +1 -0
- package/core/built/admin/assets/settings-BWzod-5X.js +4 -0
- package/core/built/admin/assets/{settings-lqWkfSmT.js → settings-DvgngbFt.js} +1 -1
- package/core/built/admin/assets/{setup-BopRPuaM.js → setup-CdHAchG5.js} +1 -1
- package/core/built/admin/assets/{signin-e8NgsU9M.js → signin-CUEEme88.js} +1 -1
- package/core/built/admin/assets/{signin-verify-CHkFJevb.js → signin-verify-CYRphSrj.js} +1 -1
- package/core/built/admin/assets/{signout-DRvQZuWa.js → signout-kLCJau9G.js} +1 -1
- package/core/built/admin/assets/{signup-DQHi7jZz.js → signup-J2Vjq7Gt.js} +1 -1
- package/core/built/admin/assets/{slack-modal-BuGESzgn.js → slack-modal-DKamr_94.js} +1 -1
- package/core/built/admin/assets/source-icon-DqBCPDIK.js +1 -0
- package/core/built/admin/assets/{stats-CHOikfoP.js → stats-BL_FJ7Ns.js} +1 -1
- package/core/built/admin/assets/{stats-view-DQZzKeEz.js → stats-view-BwbdkdOQ.js} +1 -1
- package/core/built/admin/assets/{step-1-C8XwHcKt.js → step-1-CLYhNmG9.js} +1 -1
- package/core/built/admin/assets/{step-2-BXaXAdwY.js → step-2-B2ujMlpa.js} +1 -1
- package/core/built/admin/assets/{step-3-DytbqpJi.js → step-3-DoaTWqqj.js} +1 -1
- package/core/built/admin/assets/{stripe-connect-modal-BhudjSeO.js → stripe-connect-modal-DytxH9DJ.js} +1 -1
- package/core/built/admin/assets/{tabs-CDb_TceL.js → tabs-fHs3A8WC.js} +1 -1
- package/core/built/admin/assets/{tag-detail-V72Zlro8.js → tag-detail-BcO46Ids.js} +2 -2
- package/core/built/admin/assets/{tag-picker-M3fC-yOF.js → tag-picker-Ct6NeqWK.js} +1 -1
- package/core/built/admin/assets/{tags-CXqE2A2T.js → tags-C1h3wCpW.js} +1 -1
- package/core/built/admin/assets/{tags-ZhqbPPc6.js → tags-OlmRJ6Ps.js} +1 -1
- package/core/built/admin/assets/{testimonials-modal-Cn8gvIFA.js → testimonials-modal-DMsQzSCB.js} +1 -1
- package/core/built/admin/assets/{themes-pOHHvnkt.js → themes-CPJSMo_W.js} +1 -1
- package/core/built/admin/assets/{tier-detail-modal-CeDla1OO.js → tier-detail-modal-DssSmhkF.js} +1 -1
- package/core/built/admin/assets/{tiers-D7aGzwZ-.js → tiers-DlvS8D6_.js} +1 -1
- package/core/built/admin/assets/{toggle-group-D7ly9OGa.js → toggle-group-BFWCtH3p.js} +1 -1
- package/core/built/admin/assets/{topic-filter-DQ3pr6AB.js → topic-filter-DAJ-DFPb.js} +1 -1
- package/core/built/admin/assets/{transistor-modal-4_Yx2vRo.js → transistor-modal-CtyFRsD0.js} +1 -1
- package/core/built/admin/assets/{unsplash-modal-Dm7R4k4k.js → unsplash-modal-DHnnTPmZ.js} +1 -1
- package/core/built/admin/assets/{use-activity-pub-queries-Gy9_locM.js → use-activity-pub-queries-BgR1USeY.js} +1 -1
- package/core/built/admin/assets/{use-analytics-data-oJ2o0pSS.js → use-analytics-data-Byf83QE-.js} +1 -1
- package/core/built/admin/assets/{use-availability-BqL7Dvn_.js → use-availability-CgZC6L_V.js} +1 -1
- package/core/built/admin/assets/{use-check-theme-limit-error-CxC9uKJz.js → use-check-theme-limit-error-DjprzKAN.js} +1 -1
- package/core/built/admin/assets/use-definitions-CJuXLSob.js +1 -0
- package/core/built/admin/assets/{use-email-sending-status-BFAg5TIb.js → use-email-sending-status-7kopNcza.js} +1 -1
- package/core/built/admin/assets/{use-filter-params-BOo9yZ5j.js → use-filter-params-DQ7uX-Zp.js} +1 -1
- package/core/built/admin/assets/{use-filterable-api-BnNLaS_r.js → use-filterable-api-CDrrxoGD.js} +1 -1
- package/core/built/admin/assets/{use-growth-stats-BS62uyyn.js → use-growth-stats-CCpnBgqS.js} +1 -1
- package/core/built/admin/assets/{use-host-limits-CNh4AAEs.js → use-host-limits-BZx7rzRI.js} +1 -1
- package/core/built/admin/assets/{use-limiter-DPKxoO1_.js → use-limiter-gF219BEg.js} +1 -1
- package/core/built/admin/assets/{use-pintura-config-CyVO62ZV.js → use-pintura-config-D-pmGkn2.js} +1 -1
- package/core/built/admin/assets/{use-pintura-editor-B5VBPbiO.js → use-pintura-editor-D_4zhlGE.js} +1 -1
- package/core/built/admin/assets/{use-post-referrers-nUPolSk7.js → use-post-referrers-Bc8eq4uy.js} +1 -1
- package/core/built/admin/assets/{use-post-top-links-DCH4eO11.js → use-post-top-links-DjltnQuI.js} +1 -1
- package/core/built/admin/assets/{use-reply-chain-data-UMzFbDvh.js → use-reply-chain-data-BiV3Cl0B.js} +1 -1
- package/core/built/admin/assets/use-sending-eta-gE-2B0Zw.js +1 -0
- package/core/built/admin/assets/{use-setting-group-Bf3vY8br.js → use-setting-group-YP84CqrJ.js} +1 -1
- package/core/built/admin/assets/{use-staff-users-CcQzTHqH.js → use-staff-users-CnwfdSx1.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-query-CPy5ipAP.js → use-tinybird-query-BYbl5gKY.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-token-DVNHuhu_.js → use-tinybird-token-Dz37zvb7.js} +1 -1
- package/core/built/admin/assets/{use-unsaved-changes-guard-Bvcp_Rny.js → use-unsaved-changes-guard-BkCuSlvU.js} +1 -1
- package/core/built/admin/assets/{use-upgrade-route-Bsxw9ZLN.js → use-upgrade-route-C-V-Xfak.js} +1 -1
- package/core/built/admin/assets/{use-url-input-DPJ592FB.js → use-url-input-BeYKYMGh.js} +1 -1
- package/core/built/admin/assets/{user-detail-modal-6UY6GdNy.js → user-detail-modal-CSoj7vOC.js} +1 -1
- package/core/built/admin/assets/{users-CzgQKbfO.js → users-CKJaAxEJ.js} +1 -1
- package/core/built/admin/assets/{view-site-DA_-zfGq.js → view-site-SpMx4P7G.js} +1 -1
- package/core/built/admin/assets/{web-Cq5YiD2r.js → web-CZf-k4F0.js} +1 -1
- package/core/built/admin/assets/{web-DqFIrOxt.js → web-uAqgYPK9.js} +1 -1
- package/core/built/admin/assets/{zapier-modal-DgqU-OBB.js → zapier-modal-DENbgTyE.js} +1 -1
- package/core/built/admin/index.html +24 -24
- package/core/frontend/helpers/color_to_rgba.js +15 -13
- package/core/frontend/helpers/facebook_url.js +27 -15
- package/core/frontend/services/assets-minification/card-assets.js +1 -1
- package/core/frontend/services/helpers/register-ghost-helpers.js +2 -2
- package/core/server/api/endpoints/app-installations.js +36 -0
- package/core/server/api/endpoints/automations.js +1 -1
- package/core/server/api/endpoints/index.js +4 -0
- package/core/server/data/exporter/table-lists.js +2 -0
- package/core/server/data/migrations/versions/6.69/2026-10-07-06-20-43-add-app-installation-permissions.js +40 -0
- package/core/server/data/schema/fixtures/fixtures.json +21 -0
- package/core/server/data/schema/in-development.js +1 -1
- package/core/server/data/schema/schema.js +53 -0
- package/core/server/lib/after-commit.js +20 -0
- package/core/server/models/action.js +6 -0
- package/core/server/services/app-installations/actions.js +44 -0
- package/core/server/services/app-installations/codec.js +20 -0
- package/core/server/services/app-installations/index.js +42 -0
- package/core/server/services/app-installations/schema.js +52 -0
- package/core/server/services/app-installations/service.js +160 -0
- package/core/server/services/automations/README.md +3 -3
- package/core/server/services/automations/automations-api.js +1 -1
- package/core/server/services/comments/comments-service-emails.js +8 -6
- package/core/server/services/email-service/README.md +16 -0
- package/core/server/services/email-service/email-service-wrapper.js +1 -0
- package/core/server/services/email-service/email-service.js +94 -53
- package/core/server/services/email-service/sending-status-serializers.js +4 -1
- package/core/server/services/email-service/sending-status-service.js +13 -0
- package/core/server/services/email-service/sending-status.js +12 -1
- package/core/server/services/members/members-api/repositories/member-repository.js +5 -23
- package/core/server/services/posts/post-email-handler.js +61 -28
- package/core/server/services/posts/posts-service.js +27 -2
- package/core/server/services/service-inventory.yaml +93 -7
- package/core/server/services/stats/stats-service.js +1 -5
- package/core/server/services/tinybird-sync/index.js +0 -3
- package/core/server/services/tinybird-sync/tinybird-sync-service.js +2 -6
- package/core/server/web/api/endpoints/admin/routes.js +25 -12
- package/core/shared/labs.js +4 -6
- package/package.json +11 -10
- package/pnpm-lock.yaml +112 -100
- package/pnpm-workspace.yaml +14 -12
- package/components/ghost-storage-base-3.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
- package/components/tryghost-checkout-0.0.1.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.6.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
- package/components/tryghost-metafield-csv-0.0.1.tgz +0 -0
- package/core/built/admin/assets/activitypub/layout-QTbY0t8e.js +0 -1
- package/core/built/admin/assets/automations-DVToctfJ.js +0 -1
- package/core/built/admin/assets/editor-CMXR0YvR.js +0 -8
- package/core/built/admin/assets/fullscreen-close-button-DXssPeDB.js +0 -1
- package/core/built/admin/assets/global-search-modal-C8LVJmiz.js +0 -1
- package/core/built/admin/assets/history-modal-parBtjpz.js +0 -1
- package/core/built/admin/assets/pages-route-CDk3V9rq.js +0 -1
- package/core/built/admin/assets/posts-route-CexHhklY.js +0 -1
- package/core/built/admin/assets/settings-xqakrAWa.js +0 -4
- package/core/built/admin/assets/source-icon-BjVangBd.js +0 -1
- package/core/built/admin/assets/use-definitions-DMVU3mTG.js +0 -1
- package/core/built/admin/assets/use-sending-eta-BsnKdQhv.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`65b1d286-ca00-4235-952b-2ec37fa7f471`,e._sentryDebugIdIdentifier=`sentry-dbid-65b1d286-ca00-4235-952b-2ec37fa7f471`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{m as n}from"./framework-provider-CIvHFnik.js";import{A as r,O as i,S as a,_ as o,b as s,f as c,g as l,o as u,y as d}from"./hooks-C-BDQ6Hs.js";import{t as f}from"./jsx-runtime-Bm2_KH-0.js";import{a as p,i as m,o as h,p as g,r as _,s as v,t as y}from"./members-Cj_BUZUL.js";import{n as b}from"./dist-pogVoW2G.js";import{t as x}from"./src-BwdakGcc.js";import{n as S}from"./offers-hV7zBtsI.js";import{s as C}from"./config-B3HuCo0y.js";import{_ as w,n as T,u as E}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as D}from"./router-provider-Cf-bcYZr.js";import{H as O,J as k,L as A,U as j,r as M}from"./shade-provider-DvrXKKQZ.js";import{t as N}from"./box-BOIwAOVT.js";import{t as P}from"./container-DakAbO79.js";import{B as F,C as I,D as L,F as ee,Fn as te,Gt as ne,I as re,Lr as ie,O as R,Pn as ae,Rn as oe,S as z,V as se,Wt as B,a as ce,ar as le,dt as V,et as H,g as ue,ir as de,l as fe,nt as U,pr as pe,rr as me,t as W,u as he,v as ge,yn as _e}from"./button-CTHYSI-d.js";import{a as ve,c as ye,i as be,o as xe,r as Se,s as Ce,t as we}from"./alert-dialog-CAPLqwVs.js";import{t as Te}from"./avatar-YbECDnBI.js";import{t as Ee}from"./badge-DuMiqyUH.js";import{t as De}from"./checkbox-DN_wUAjb.js";import{n as Oe}from"./input-surface-DoDPknjt.js";import{a as G,i as ke,o as Ae,r as je,s as Me,t as Ne}from"./dialog-BO1lcy8A.js";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,u as Ve}from"./multi-select-combobox-BzBMUFst.js";import{a as He,i as Ue,t as We}from"./popover-r_3DwMi9.js";import{t as Ge}from"./dropzone-C0p6KEsa.js";import{t as Ke}from"./empty-indicator-BhVwqSVH.js";import{a as qe,i as Je,o as Ye,t as Xe}from"./field-DCPPrQDr.js";import{t as Ze}from"./input-BHb2A_DU.js";import{i as Qe,n as $e,t as et}from"./input-group-DL5EFP5r.js";import{n as tt}from"./loading-indicator-DaRyGrxv.js";import{t as K}from"./page-header-Baymg6VR.js";import{i as nt,n as rt,o as it,s as at,t as ot}from"./select-DeloOYCg.js";import{a as q,c as J,n as st,r as Y,s as ct,t as lt}from"./table-DQ63Yu4a.js";import{i as ut,n as dt,o as ft,p as pt,r as mt,s as ht,t as gt,u as _t}from"./label-picker-GTIIlBQ6.js";import{m as vt}from"./users-CzgQKbfO.js";import{t as yt}from"./index.module-CnPepLB9.js";import{a as bt,d as xt,f as St,g as Ct,m as wt,p as Tt,u as Et,v as Dt,y as Ot}from"./schemas-21VB7GGY.js";import{r as kt}from"./newsletters-BMEgeL2l.js";import{a as At,i as jt,n as Mt,r as Nt,s as Pt}from"./filters-Bf6E1qAP.js";import{n as Ft}from"./dirty-confirm-dialog-CdxPMCA8.js";import{$t as It,A as Lt,B as Rt,D as zt,Ht as Bt,Jt as Vt,Kt as Ht,M as Ut,O as Wt,Qt as Gt,Vt as Kt,Xt as qt,Yt as Jt,Zt as Yt,ct as Xt,ft as Zt,gt as Qt,j as $t,ut as en,vt as tn,zt as nn}from"./index-CuDhPtkB.js";import{t as rn}from"./get-site-timezone-BnQQpb6P.js";import{t as an}from"./validator-DgUCXsE8.js";import{t as on}from"./list-page-BnOuLOBb.js";import{i as sn,n as cn,r as ln,t as un}from"./virtual-list-qPFukjyT.js";import{A as dn,C as fn,D as pn,E as mn,M as hn,N as gn,O as _n,S as vn,T as yn,_ as bn,a as xn,b as Sn,c as Cn,d as wn,f as Tn,g as En,h as Dn,i as On,j as kn,k as An,l as jn,m as Mn,n as Nn,o as Pn,p as Fn,r as In,s as Ln,t as Rn,u as zn,v as Bn,w as Vn,x as Hn}from"./filters-DhsiEotO.js";import{t as Un}from"./use-availability-BqL7Dvn_.js";import{_ as Wn,a as Gn,b as Kn,i as qn,o as Jn,r as Yn,t as Xn,u as Zn,v as Qn,y as $n}from"./member-custom-fields-DPsyP1Hq.js";import{n as er,t as tr}from"./use-definitions-DMVU3mTG.js";import{n as nr,t as rr}from"./custom-field-type-option-CIatEwIN.js";import{t as ir}from"./papaparse.min-BnyoBmWf.js";var X=e(t(),1),Z=f();function ar({open:e,memberCount:t,onOpenChange:n,onConfirm:r,isLoading:i=!1}){let[a,o]=(0,X.useState)([]),s=dt({selectedSlugs:a,onSelectionChange:o}),c=(0,X.useCallback)(e=>{e||o([]),n(e)},[n]);return(0,Z.jsx)(Ne,{open:e,onOpenChange:c,children:(0,Z.jsxs)(je,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ae,{children:(0,Z.jsxs)(Me,{children:[`Add label to `,O(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(_t,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:a,onCreate:s.createLabel,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:a.length===0||i,onClick:()=>{let e=s.labels.filter(e=>a.includes(e.slug)).map(e=>e.id);e.length>0&&r(e)},children:i?`Adding...`:a.length>1?`Add ${O(a.length)} labels`:`Add label`})]})]})})}function or({open:e,memberCount:t,nql:n,search:r,onOpenChange:i,onConfirm:a,isLoading:o=!1}){let[s,c]=(0,X.useState)([]),{data:l,isLoading:u}=m({searchParams:{...n?{filter:n}:{},...r?{search:r}:{},include:`labels`,limit:`all`,fields:`id`},enabled:e}),d=(0,X.useMemo)(()=>{let e=new Set;for(let t of l?.members||[])for(let n of t.labels||[])e.add(n.slug);return e},[l]),f=dt({selectedSlugs:s,onSelectionChange:c}),p={...f.optionSource,options:f.optionSource.options.filter(e=>d.has(String(e.value)))},h=(0,X.useCallback)(e=>{e||c([]),i(e)},[i]),g=()=>{let e=f.labels.filter(e=>s.includes(e.slug)).map(e=>e.id);e.length>0&&a(e)};return(0,Z.jsx)(Ne,{open:e,onOpenChange:h,children:(0,Z.jsxs)(je,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ae,{children:(0,Z.jsxs)(Me,{children:[`Remove label from `,O(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(_t,{labels:f.labels.filter(e=>d.has(e.slug)),optionSource:{...p,isInitialLoad:p.isInitialLoad||u},resolvedSelectedLabels:f.resolvedSelectedLabels.filter(e=>d.has(e.slug)),selectedSlugs:s,onDelete:f.deleteLabel,onEdit:f.editLabel,onToggle:f.toggleLabel}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>h(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:s.length===0||o,onClick:g,children:o?`Removing...`:s.length>1?`Remove ${O(s.length)} labels`:`Remove label`})]})]})})}function sr({open:e,newsletters:t,memberCount:n,onOpenChange:r,onConfirm:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(`all`),[c,l]=(0,X.useState)([]),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),m=(0,X.useRef)(null),h=(0,X.useRef)(null);(0,X.useEffect)(()=>{e||(s(`all`),l([]),d(``),p(!1))},[e]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{m.current&&!m.current.contains(e.target)&&p(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[f]);let g=e=>{e||(s(`all`),l([]),d(``),p(!1)),r(e)},_=(0,X.useCallback)(e=>{l(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=t.length>=2,y=()=>{i(!v||o===`all`?null:c)},b=a||v&&o===`selected`&&c.length===0,x=n===1?`member`:`members`;return(0,Z.jsx)(Ne,{open:e,onOpenChange:g,children:(0,Z.jsxs)(je,{className:`gap-5`,children:[(0,Z.jsx)(Ae,{children:(0,Z.jsx)(Me,{children:`Unsubscribe members`})}),v?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"aria-label":`Unsubscribe scope`,className:`flex flex-col gap-3`,role:`radiogroup`,children:[(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`all`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`all`,onChange:()=>s(`all`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from all newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[O(n),` `,x,` will be unsubscribed from`,` `,t.length,` `,t.length===1?`newsletter`:`newsletters`,`.`]})]})]}),(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`selected`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`selected`,onChange:()=>s(`selected`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from selected newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Select which newsletters to unsubscribe `,O(n),` `,x,` from.`]})]})]})]}),o===`selected`&&(0,Z.jsxs)(`div`,{ref:m,className:`relative space-y-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-semibold`,htmlFor:`newsletter-search`,children:`Newsletters`}),(0,Z.jsxs)(`div`,{className:`flex min-h-9 w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background px-3 py-1 text-sm`,onClick:()=>{h.current?.focus(),p(!0)},children:[c.map(e=>{let n=t.find(t=>t.id===e);return n?(0,Z.jsxs)(Ee,{className:`cursor-pointer gap-1 pr-1`,variant:`outline`,onClick:t=>{t.stopPropagation(),_(e)},children:[n.name,(0,Z.jsx)(ce,{className:`size-3`})]},e):null}),(0,Z.jsx)(`input`,{ref:h,className:`min-w-[80px] flex-1 bg-transparent py-1 text-sm outline-hidden placeholder:text-muted-foreground`,id:`newsletter-search`,placeholder:c.length===0?`Search newsletters...`:``,value:u,onChange:e=>{d(e.target.value),f||p(!0)},onFocus:()=>p(!0),onKeyDown:e=>{e.key===`Escape`&&(p(!1),h.current?.blur()),e.key===`Backspace`&&!u&&c.length>0&&_(c[c.length-1])}})]}),f&&(0,Z.jsx)(`div`,{className:`absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-white shadow-md dark:bg-gray-950`,children:(0,Z.jsx)(Le,{shouldFilter:!1,children:(0,Z.jsxs)(Fe,{className:`max-h-64 overflow-y-auto`,children:[(0,Z.jsx)(Ie,{children:`No newsletters found.`}),t.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())).map(e=>(0,Z.jsxs)(Be,{value:e.name,onSelect:()=>_(e.id),children:[e.name,c.includes(e.id)&&(0,Z.jsx)(ze,{})]},e.id))]})})})]})]}):(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Are you sure you want to unsubscribe `,O(n),` `,x,` from all newsletters? They will no longer receive any email newsletters from you.`]}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>g(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:b,variant:`destructive`,onClick:y,children:a?`Unsubscribing...`:`Unsubscribe`})]})]})})}function cr({open:e,memberCount:t,onOpenChange:n,onConfirm:r,onExportBackup:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(!1),c=e=>{e||s(!1),n(e)},l=async()=>{if(!(t<1||a||o))try{s(!0),await i(),r()}catch{}finally{s(!1)}};return(0,Z.jsx)(Ne,{open:e,onOpenChange:c,children:(0,Z.jsxs)(je,{className:`gap-5`,children:[(0,Z.jsx)(Ae,{children:(0,Z.jsx)(Me,{children:`Delete selected members?`})}),t>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{children:[`You're about to delete`,` `,(0,Z.jsxs)(`strong`,{children:[O(t),` `,t===1?`member`:`members`]}),`. This is permanent! All Ghost data will be deleted, this will have no effect on subscriptions in Stripe.`]}),(0,Z.jsx)(`p`,{children:`A backup of your selection will be automatically downloaded to your device before deletion.`})]}):(0,Z.jsx)(`p`,{children:`No members are selected.`}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:a||o||t<1,variant:`destructive`,onClick:()=>void l(),children:a||o?`Deleting...`:`Download backup & delete members`})]})]})})}function lr({fileError:e,onClose:t,onDropAccepted:n,onDropRejected:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[(0,Z.jsxs)(nn,{variant:`info`,children:[`Need some help?`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://ghost.org/help/import-members/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`}),` `,`about importing members or`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://static.ghost.org/v4.0.0/files/member-import-template.csv`,rel:`noopener noreferrer`,target:`_blank`,children:`download a sample CSV file`}),`.`]}),e&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(I,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]}),(0,Z.jsx)(Ge,{accept:{"text/csv":[`.csv`],"application/vnd.ms-excel":[`.csv`]},"aria-label":`Select or drop a CSV file`,onDropAccepted:e=>{let t=e[0];t&&n(t)},onDropRejected:r,children:({isDragActive:e,isDragReject:t})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ge,{className:`mb-2 size-6 text-gray-600`}),(0,Z.jsx)(`span`,{className:`text-sm text-gray-700`,children:t?`The file type you uploaded is not supported`:e?`Drop CSV file to upload`:`Select or drop a CSV file`})]})})]}),(0,Z.jsx)(G,{className:`mt-5`,children:(0,Z.jsx)(W,{variant:`outline`,onClick:t,children:`Close`})})]})}function ur({onUploadAnotherFile:e,onClose:t}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`Your import is being processed, and you'll receive a confirmation email as soon as it's complete. Usually this only takes a few minutes, but larger imports may take longer.`})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[(0,Z.jsx)(W,{variant:`outline`,onClick:e,children:`Upload another file`}),(0,Z.jsx)(W,{onClick:t,children:`Got it`})]})]})}var dr=e(an(),1),fr=[{label:`Email`,value:`email`},{label:`Name`,value:`name`},{label:`Note`,value:`note`},{label:`Subscribed to emails`,value:`subscribed_to_emails`},{label:`Stripe Customer ID`,value:`stripe_customer_id`},{label:`Complimentary plan`,value:`complimentary_plan`},{label:`Labels`,value:`labels`},{label:`Created at`,value:`created_at`},{label:`Gift ID`,value:`gift_id`}],pr={label:`Tier`,value:`import_tier`},mr=[`email`,`name`,`note`,`subscribed_to_emails`,`complimentary_plan`,`stripe_customer_id`,`labels`,`created_at`,`gift_id`];function hr({importMemberTier:e=!1,customFieldColumns:t=[]}={}){return[...mr,...e?[pr.value]:[],...t.map(e=>e.value)]}function gr({importMemberTier:e=!1}={}){return[...fr,...e?[pr]:[]]}var _r=[`email`],vr=class e{_mapping;constructor(e){if(this._mapping={},e)for(let[t,n]of Object.entries(e))this._mapping[n]=t}get(e){return this._mapping[e]??null}toJSON(){return{...this._mapping}}getKeyByValue(e){for(let[t,n]of Object.entries(this._mapping))if(n===e)return t;return null}updateMapping(t,n){let r=new e({});if(r._mapping={...this._mapping},n)for(let e in r._mapping)r._mapping[e]===n&&(r._mapping[e]=null);return r._mapping[t]=n,r}};function yr(e){let t=new Set;for(let n of e)for(let e of Object.keys(n))e!==`__parsed_extra`&&t.add(e);return[...t]}function br(e,t=30){if(!e||e.length<=t)return e;let n=[];return yr(e).forEach(r=>{let i=e.filter(e=>e[r]&&e[r].trim()!==``),a=[];if(i.length<=t)a=i;else{let e=Math.floor(t/3),n=e,r=t-e-n,o=i.slice(0,e),s=n>0?i.slice(-n):[],c=Math.max(0,Math.floor(i.length/2)-Math.floor(r/2)),l=i.slice(c,c+r);a=[...o,...l,...s].slice(0,t)}a.forEach((e,t)=>{n[t]||(n[t]={}),n[t][r]=e[r]})}),n}function xr(e,t={}){let n=br(e),r={},i=hr(t);if(e.length>0)for(let t of yr(e)){if(!r.name&&/name/i.test(t)&&!Qn(t)){r.name=t;continue}!r[t]&&i.includes(t)&&!_r.includes(t)&&(r[t]=t)}let a=0;for(;a<=n.length-1&&!r.email;){let e=n[a];for(let[t,n]of Object.entries(e))!r.email&&n&&dr.default.isEmail(n)&&!Qn(t)&&(r.email=t);a+=1}return r}function Sr(e){return e.replace(`Value in [members.email] cannot be blank.`,`Missing email address`).replace(`Value in [members.note] exceeds maximum length of 2000 characters.`,`Note is too long`).replace(`Value in [members.subscribed] must be one of true, false, 0 or 1.`,`Value of "Subscribed to emails" must be "true" or "false"`).replace(`Validation (isEmail) failed for email`,`Invalid email address`).replace(/No such customer:[\s\S]*/,`Could not find Stripe customer`)}function Cr(e){let t=((Qn(e)?e.split(`.`)[2]:e)??e).replace(/[._-]+/g,` `).trim();return t.charAt(0).toUpperCase()+t.slice(1)}var wr=()=>({status:`INIT`,file:null,fileData:null,mapping:null,selectedLabelSlugs:[],dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,importResponse:null,errorMessage:null,errorHeader:`Import error`,showTryAgainButton:!0,dragOver:!1,fileError:null});function Tr({importResponse:e,onReset:t,onClose:n}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-4`,children:[e.importedCount===0?(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`No members were added`,e.errorCount>0?` due to the following errors:`:`.`]}):(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`A total of `,(0,Z.jsx)(`strong`,{children:O(e.importedCount)}),` `,e.importedCount===1?`person was`:`people were`,` successfully added or updated in your list of members, and now have access to your site.`]}),e.errorCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[e.importedCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hr`,{className:`border-gray-200`}),(0,Z.jsxs)(`p`,{className:`text-sm`,children:[(0,Z.jsx)(`strong`,{children:O(e.errorCount)}),` `,e.errorCount===1?`member was`:`members were`,` skipped due to the following errors:`]})]}),(0,Z.jsx)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-muted-foreground`,children:e.errorList.map(e=>(0,Z.jsxs)(`li`,{children:[e.message,` (`,e.count,`)`]},e.message))})]})]}),(0,Z.jsx)(G,{className:`mt-5`,children:e.errorCount>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{download:e.errorCsvName,href:e.errorCsvUrl,children:`Download error file`})}),e.importedCount===0?(0,Z.jsx)(W,{onClick:t,children:`Try again`}):(0,Z.jsx)(W,{onClick:n,children:`View members`})]}):(0,Z.jsx)(Z.Fragment,{children:e.importedCount===0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:n,children:`Close`}),(0,Z.jsx)(W,{onClick:t,children:`Try again`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:t,children:`Upload another file`}),(0,Z.jsx)(W,{onClick:n,children:`View members`})]})})})]})}function Er({errorMessage:e,showTryAgainButton:t,onTryAgain:n,onClose:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(I,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[t&&(0,Z.jsx)(W,{variant:`outline`,onClick:n,children:`Try again`}),(0,Z.jsx)(W,{onClick:r,children:`OK`})]})]})}function Dr({columnKey:e,isSaving:t,nameError:n,saveError:r,canRetry:i,onSubmit:a,onEdit:o,onCancel:s}){let[c,l]=(0,X.useState)(()=>Cr(e)),[u,d]=(0,X.useState)(Jn[0].id),f=(0,X.useRef)(null);(0,X.useEffect)(()=>{f.current?.scrollIntoView({block:`nearest`})},[]);let p=()=>a(c,u);return(0,Z.jsxs)(`div`,{ref:f,className:`scroll-mb-8 space-y-3`,"data-testid":`import-create-custom-field`,onKeyDown:e=>{if(e.key===`Escape`){e.stopPropagation(),t||s();return}e.key===`Enter`&&!t&&i&&(e.preventDefault(),p())},children:[(0,Z.jsxs)(qe,{className:`flex-row flex-wrap items-start gap-3`,children:[(0,Z.jsxs)(Xe,{className:`min-w-56 flex-1`,"data-invalid":!!n||void 0,children:[(0,Z.jsx)(Ye,{className:`text-sm!`,htmlFor:`import-custom-field-name`,children:`Name`}),(0,Z.jsx)(Ze,{"aria-invalid":!!n||void 0,autoComplete:`off`,className:`h-8 text-sm!`,id:`import-custom-field-name`,placeholder:`Enter custom field name`,value:c,autoFocus:!0,onChange:e=>{l(e.target.value),o()}}),n&&(0,Z.jsx)(Je,{children:n})]}),(0,Z.jsxs)(Xe,{className:`w-44`,children:[(0,Z.jsx)(Ye,{className:`text-sm!`,children:`Type`}),(0,Z.jsxs)(ot,{value:u,onValueChange:e=>d(e),children:[(0,Z.jsx)(it,{"aria-label":`Type`,className:`h-8 text-sm!`,children:(0,Z.jsx)(at,{children:(0,Z.jsx)(rr,{type:u})})}),(0,Z.jsx)(rt,{children:Jn.map(e=>(0,Z.jsx)(nt,{value:e.id,children:(0,Z.jsx)(rr,{type:e.id})},e.id))})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 self-end pb-0.5`,children:[(0,Z.jsx)(W,{disabled:t,size:`sm`,variant:`outline`,onClick:s,children:`Cancel`}),(0,Z.jsx)(W,{disabled:t||!i,size:`sm`,onClick:p,children:t?`Saving`:`Save`})]})]}),r&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:r})]})}var Or={membership:{heading:`Membership fields`,badge:null,ariaKind:null},custom:{heading:`Custom fields`,badge:`Custom`,ariaKind:`Custom field`}},kr=Object.keys(Or);function Ar({membershipFields:e,customFieldColumns:t}){let n=[...e.map(e=>({value:e.value,source:`membership`,fieldName:e.label,label:e.label})),...t.map(e=>({value:e.value,source:`custom`,fieldName:e.fieldName,...e.partLabel===void 0?{}:{partLabel:e.partLabel},label:e.label,type:e.type}))],r=Mr(n),i=n.map(e=>({...e,badge:r.has(jr(e))?Or[e.source].badge:null,ariaKind:Or[e.source].ariaKind}));return kr.map(e=>({source:e,heading:Or[e].heading,targets:i.filter(t=>t.source===e)})).filter(e=>e.targets.length>0)}function jr(e){return e.label.trim().toLowerCase()}function Mr(e){let t=new Map;for(let n of e){let e=t.get(jr(n))??new Set;e.add(n.source),t.set(jr(n),e)}return new Set([...t].filter(([,e])=>e.size>1).map(([e])=>e))}var Nr={email:B,name:he,note:F,subscribed_to_emails:H,stripe_customer_id:oe,complimentary_plan:R,labels:re,created_at:pe,gift_id:_e,import_tier:se};function Pr(e,t){return(0,Z.jsx)(z,{className:t})}function Fr({target:e,className:t}){switch(e.source){case`membership`:return(0,Z.jsx)(Nr[e.value]??z,{className:t});case`custom`:return(0,Z.jsx)(nr,{className:t,type:e.type});default:return Pr(e,t)}}function Ir(e,t,n){return Ve((n??[]).join(` `),t)}function Lr({className:e,columnKey:t,value:n,disabled:r,invalid:i,targetGroups:a,canCreateField:o,open:s,search:c,onOpenChange:l,onSearchChange:u,onSelect:d,onCreateField:f,triggerRef:p}){let m=(0,X.useRef)(!1),h=a.flatMap(e=>e.targets).find(e=>e.value===n),g=h?.badge??null,_=h?.ariaKind??null,v=e=>{l(!1),d(e)};return(0,Z.jsxs)(We,{open:s,modal:!0,onOpenChange:e=>{r||l(e)},children:[(0,Z.jsx)(He,{asChild:!0,children:(0,Z.jsxs)(W,{ref:p,"aria-disabled":r||void 0,"aria-invalid":i||void 0,"aria-label":h?`Field for ${t}, ${h.label}${_?`, ${_}`:``}`:`Field for ${t}, not chosen`,className:A(`h-(--control-height) w-full scroll-my-8 justify-start gap-2 px-2 font-normal`,e,`hover:text-current`,Oe.invalidSelf,`aria-[invalid=true]:ring-2`,r&&`cursor-not-allowed hover:bg-transparent`),role:`combobox`,variant:`outline`,children:[(0,Z.jsxs)(`span`,{className:A(`flex shrink-0 items-center`,r&&`opacity-60`),children:[h&&(0,Z.jsx)(Fr,{className:`size-4 text-foreground`,target:h}),!h&&(0,Z.jsx)(`span`,{className:`size-4 rounded-sm border border-dashed border-border-strong`})]}),h?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`span`,{className:A(`flex min-w-0 flex-1 items-baseline text-left text-sm font-medium`,r&&`opacity-60`),children:[(0,Z.jsx)(`span`,{className:`min-w-0 shrink-[999] truncate`,children:h.fieldName}),h.partLabel&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate whitespace-pre`,children:` (${h.partLabel})`})]}),g&&(0,Z.jsx)(Ee,{className:A(`ms-2 shrink-0 max-md:hidden`,r&&`opacity-60`),variant:`secondary`,children:g})]}):(0,Z.jsx)(`span`,{className:A(`min-w-0 truncate text-sm text-muted-foreground`,r&&`opacity-60`),children:`Select field`}),(0,Z.jsx)(le,{className:`ms-auto size-4 shrink-0 opacity-50`})]})}),(0,Z.jsx)(Ue,{align:`start`,className:`flex max-h-(--radix-popover-content-available-height) w-(--radix-popover-trigger-width) min-w-64 flex-col p-0`,collisionPadding:16,onCloseAutoFocus:e=>{m.current&&(m.current=!1,e.preventDefault(),f())},children:(0,Z.jsxs)(Le,{className:`min-h-0`,filter:Ir,children:[(0,Z.jsx)(Re,{className:`h-(--control-height) shrink-0`,placeholder:`Search fields...`,value:c,onValueChange:u}),(0,Z.jsxs)(Fe,{className:`min-h-0 flex-1`,children:[a.map(e=>(0,Z.jsx)(Pe,{heading:e.heading,children:e.targets.map(e=>(0,Z.jsxs)(Be,{keywords:[e.label],value:e.value,onSelect:()=>v(e.value),children:[(0,Z.jsx)(Fr,{target:e}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.label}),n===e.value&&(0,Z.jsx)(ze,{})]},e.value))},e.source)),o?(0,Z.jsx)(Pe,{forceMount:!0,children:(0,Z.jsxs)(Be,{className:`font-semibold text-green`,value:`Add custom field`,forceMount:!0,onSelect:()=>{m.current=!0,l(!1)},children:[(0,Z.jsx)(V,{}),(0,Z.jsx)(`span`,{children:`Add custom field`})]})}):(0,Z.jsx)(Ie,{children:`No fields found.`})]})]})})]})}function Rr(e,t,n){let r=new Set(e);return n?r.add(t):r.delete(t),r}function zr(e){return Gn(e.type)?null:Yn([e])[0]?.value??null}function Br({status:e,fileData:t,mapping:n,mappingError:a,showMappingErrors:c,dataPreviewIndex:u,targetGroups:f,canCreateCustomFields:p,labelPicker:m,onUpdateMapping:h,onFieldCreated:g,onDataPreviewIndexChange:_,onStartOver:v,onColumnsChanged:y,onUpload:b}){let[x,S]=(0,X.useState)(new Set),[C,w]=(0,X.useState)(new Set),[T,E]=(0,X.useState)(null),D=(0,X.useRef)(new Map);(0,X.useLayoutEffect)(()=>{let[e]=T?.columns??[];e&&D.current.get(e)?.scrollIntoView({block:`nearest`,behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})},[T]);let[k,j]=(0,X.useState)(null),[M,N]=(0,X.useState)(null),{mutateAsync:P,isPending:F}=Zn(),[I,L]=(0,X.useState)(null),[ee,te]=(0,X.useState)(null),[ne,re]=(0,X.useState)(!0),ie=l(),R=(0,X.useCallback)(()=>{L(null),te(null),re(!0)},[]),ae=e=>{let t=e instanceof s?e.data?.errors?.[0]:null;if(e instanceof i&&t?.property===`name`){L(r(e,`Invalid name`));return}te(r(e,e instanceof o?e.message:`Could not create the custom field, please try again.`)),re(!(e instanceof d)&&t?.type!==`NoPermissionError`),e instanceof d||ie(e,{withToast:!1})},oe=async(e,t,n)=>{R();let r;try{r=(await P({name:t,type:n,access:{member:`none`}})).members_metafields?.[0]}catch(e){ae(e);return}if(!r){te(`The field was created, but this column could not be mapped to it. Choose it from the list.`),re(!1),ie(Error(`Custom field create returned no field`));return}let i=zr(r);if(g(e,i),j(null),E(null),i){D.current.get(e)?.focus();return}B(e,r.name)},z=e=>!!k&&k!==e.key,se=t=>e===`UPLOADING`||F,B=(e,t)=>{R(),j(null),N({columnKey:e,search:t})},ce=e=>{R(),j(e)},le=(e,t)=>{let r=n?.getKeyByValue(t);r&&r!==e.key&&S(e=>Rr(e,r,!0)),h(e.key,t)},V=e=>!C.has(e.key)&&(!!e.mapTo||x.has(e.key)),H=(e,t)=>{E(null),y(),w(n=>Rr(n,e.key,!t)),S(n=>Rr(n,e.key,t&&!e.mapTo)),!t&&k===e.key&&j(null)},ue=c&&a||T?.message,fe=!!ue&&!T?.columns.size,U=t.length,pe=u>0,he=!!t[u+1],ge=(0,X.useMemo)(()=>yr(t),[t]),_e=n?ge.map(e=>({key:e,value:t[u]?.[e]??``,mapTo:n.get(e)})):[],ve=Object.fromEntries(_e.map(e=>[e.key,V(e)?e.mapTo:``])),ye=()=>{if(a)return null;if(!Object.values(ve).includes(`email`))return{message:`Please map "Email" to one of the fields in the CSV, and make sure it is selected.`,columns:new Set};let e=Object.keys(ve).filter(e=>ve[e]===null);return e.length===0?null:{message:`Choose a field for ${e.map(e=>`"${e}"`).join(`, `)}, or deselect ${e.length===1?`it`:`them`}.`,columns:new Set(e)}};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 flex min-h-0 flex-1 flex-col space-y-5`,children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:A(`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,fe&&`border-destructive`),children:(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,Z.jsxs)(lt,{className:`table-fixed`,children:[(0,Z.jsx)(ct,{children:(0,Z.jsxs)(J,{children:[(0,Z.jsx)(q,{className:`w-10`,children:(0,Z.jsx)(`span`,{className:`sr-only`,children:`Import this column`})}),(0,Z.jsx)(q,{className:`w-[26%]`,children:`Field`}),(0,Z.jsx)(q,{className:`w-[30%]`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data`,` `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,O(u+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:A(`rounded p-0.5 hover:bg-muted`,!pe&&`cursor-default opacity-30`),disabled:!pe||e===`UPLOADING`,type:`button`,onClick:()=>_(u-1),children:(0,Z.jsx)(de,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:A(`rounded p-0.5 hover:bg-muted`,!he&&`cursor-default opacity-30`),disabled:!he||e===`UPLOADING`,type:`button`,onClick:()=>_(u+1),children:(0,Z.jsx)(me,{className:`size-4`})})]})]})}),(0,Z.jsx)(q,{className:`w-[38%]`,children:`Import as`})]})}),(0,Z.jsx)(st,{children:_e.length>0?_e.map(e=>(0,Z.jsxs)(X.Fragment,{children:[(0,Z.jsxs)(J,{className:A(`transition-opacity [&>td]:group-hover:bg-transparent`,!V(e)&&`bg-muted/50`,z(e)&&`opacity-40`),children:[(0,Z.jsx)(Y,{children:(0,Z.jsx)(De,{"aria-label":`Import ${e.key}`,checked:V(e),disabled:se(e),onCheckedChange:t=>H(e,t===!0)})}),(0,Z.jsx)(Y,{className:A(`text-sm font-medium break-all`,!V(e)&&`text-muted-foreground`),children:e.key}),(0,Z.jsx)(Y,{className:A(`text-sm break-all`,(!e.value||!V(e))&&`text-muted-foreground`),children:e.value||`\xA0`}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(Lr,{canCreateField:p,className:A(!V(e)&&`invisible`),columnKey:e.key,disabled:se(e),invalid:T?.columns.has(e.key),open:M?.columnKey===e.key,search:M?.columnKey===e.key?M.search:``,targetGroups:f,triggerRef:t=>{t?D.current.set(e.key,t):D.current.delete(e.key)},value:e.mapTo,onCreateField:()=>ce(e.key),onOpenChange:t=>t?B(e.key,``):N(null),onSearchChange:t=>N({columnKey:e.key,search:t}),onSelect:t=>{E(null),le(e,t)}})})]}),k===e.key&&(0,Z.jsx)(J,{className:`bg-transparent hover:bg-transparent`,children:(0,Z.jsx)(Y,{className:`p-2`,colSpan:4,children:(0,Z.jsx)(`div`,{className:`rounded-lg border bg-surface-elevated-2 p-3 shadow-lg`,children:(0,Z.jsx)(Dr,{canRetry:ne,columnKey:e.key,isSaving:F,nameError:I,saveError:ee,onCancel:()=>{R(),j(null),D.current.get(e.key)?.focus()},onEdit:R,onSubmit:(t,n)=>void oe(e.key,t,n)})})})})]},e.key)):(0,Z.jsx)(J,{children:(0,Z.jsx)(Y,{className:`text-muted-foreground`,colSpan:4,children:`No data found in the uploaded CSV.`})})})]})})}),ue&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:ue}),U>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(_t,{isCreating:m.isCreating,labels:m.labels,optionSource:m.optionSource,resolvedSelectedLabels:m.resolvedSelectedLabels,selectedSlugs:m.selectedSlugs,onCreate:m.createLabel,onDelete:m.deleteLabel,onEdit:m.editLabel,onToggle:m.toggleLabel})]})]})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[(0,Z.jsx)(W,{disabled:e===`UPLOADING`,variant:`outline`,onClick:v,children:`Start over`}),(0,Z.jsx)(W,{disabled:e===`UPLOADING`||U===0,onClick:()=>{let e=ye();if(e){E(e);return}b(ve)},children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(tt,{color:`light`,size:`sm`}),`Uploading`]}):U>0?`Import ${O(U)} ${U===1?`member`:`members`}`:`Import members`})]})]})}var Vr=e(k(),1),Hr=e(ir(),1);function Ur(e){let t=Hr.default.parse(e,{header:!0,skipEmptyLines:!0});return!t.data||t.data.length<1?[]:t.data.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):``;return t})}var Wr=Dt([Ct(),Tt({name:Ct()})]),Gr=Tt({error:Ct().catch(``)}).catchall(Ot());function Kr(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{let t=Wr.safeParse(e);return t.success?typeof t.data==`string`?t.data:t.data.name:``}).filter(Boolean).join(`,`):``}function Q(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):``}function qr(e){let t={email:Q(e.email),name:Q(e.name),note:Q(e.note),...e.subscribed===void 0?{}:{subscribed_to_emails:Q(e.subscribed)},...e.complimentary_plan===void 0?{}:{complimentary_plan:Q(e.complimentary_plan)},stripe_customer_id:Q(e.stripe_customer_id),created_at:Q(e.created_at),labels:Kr(e.labels)};e.newsletters!==void 0&&(t.newsletters=Kr(e.newsletters));for(let[n,r]of Object.entries(e))Qn(n)&&(t[n]=Q(r));return t.gift_id=Q(e.gift_id),t.error=Q(e.error),t}function Jr(e){if(e.length===0)return``;let t=e.map(e=>qr(Gr.parse(e))),n=[];for(let e of t)for(let t of Object.keys(e))t!==`error`&&!n.includes(t)&&n.push(t);return n.push(`error`),Hr.default.unparse(t,{quotes:!0,escapeFormulae:!0,columns:n})}var Yr=Tt({errors:bt(Ct()).catch([])}).catchall(Ot());function Xr(e){let t=e.meta.stats.imported,n=Array.isArray(e.meta.stats.invalid)?e.meta.stats.invalid:[],r=n.length,i={},a=Jr(n.map(e=>{let t=Yr.safeParse(e),{errors:n,...r}=t.success?t.data:{errors:[]},a=n.map(e=>Sr(e).trim()).filter(Boolean);for(let e of a)i[e]?i[e].count+=1:i[e]={message:e,count:1};return{...r,error:a.join(`
|
|
1
|
+
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`be23e8cb-80cd-4678-8021-81adc381c297`,e._sentryDebugIdIdentifier=`sentry-dbid-be23e8cb-80cd-4678-8021-81adc381c297`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{m as n}from"./framework-provider-CIvHFnik.js";import{A as r,O as i,S as a,_ as o,b as s,f as c,g as l,o as u,y as d}from"./hooks-0r7qxGEo.js";import{t as f}from"./jsx-runtime-Bm2_KH-0.js";import{a as p,i as m,o as h,p as g,r as _,s as v,t as y}from"./members-CH6KeXQc.js";import{n as b}from"./dist-pogVoW2G.js";import{t as x}from"./src-BwdakGcc.js";import{n as S}from"./offers-Df9Jzay5.js";import{s as C}from"./config-CRAZ4Civ.js";import{_ as w,n as T,u as E}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as D}from"./router-provider-Cf-bcYZr.js";import{H as O,J as k,L as A,U as j,r as M}from"./shade-provider-DvrXKKQZ.js";import{t as N}from"./box-BOIwAOVT.js";import{t as P}from"./container-DakAbO79.js";import{B as F,C as I,D as L,F as ee,Fn as te,Gt as ne,I as re,Lr as ie,O as R,Pn as ae,Rn as oe,S as z,V as se,Wt as B,a as ce,ar as le,dt as V,et as H,g as ue,ir as de,l as fe,nt as U,pr as pe,rr as me,t as W,u as he,v as ge,yn as _e}from"./button-CTHYSI-d.js";import{a as ve,c as ye,i as be,o as xe,r as Se,s as Ce,t as we}from"./alert-dialog-CAPLqwVs.js";import{t as Te}from"./avatar-YbECDnBI.js";import{t as Ee}from"./badge-DuMiqyUH.js";import{t as De}from"./checkbox-DN_wUAjb.js";import{n as Oe}from"./input-surface-DoDPknjt.js";import{a as G,i as ke,o as Ae,r as je,s as Me,t as Ne}from"./dialog-BO1lcy8A.js";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,u as Ve}from"./multi-select-combobox-BzBMUFst.js";import{a as He,i as Ue,t as We}from"./popover-r_3DwMi9.js";import{t as Ge}from"./dropzone-C0p6KEsa.js";import{t as Ke}from"./empty-indicator-BhVwqSVH.js";import{a as qe,i as Je,o as Ye,t as Xe}from"./field-DCPPrQDr.js";import{t as Ze}from"./input-BHb2A_DU.js";import{i as Qe,n as $e,t as et}from"./input-group-DL5EFP5r.js";import{n as tt}from"./loading-indicator-DaRyGrxv.js";import{t as K}from"./page-header-CxTb0je5.js";import{i as nt,n as rt,o as it,s as at,t as ot}from"./select-DeloOYCg.js";import{a as q,c as J,n as st,r as Y,s as ct,t as lt}from"./table-DQ63Yu4a.js";import{i as ut,n as dt,o as ft,p as pt,r as mt,s as ht,t as gt,u as _t}from"./label-picker-DaivLdMw.js";import{m as vt}from"./users-CKJaAxEJ.js";import{t as yt}from"./index.module-CnPepLB9.js";import{a as bt,d as xt,f as St,g as Ct,m as wt,p as Tt,u as Et,v as Dt,y as Ot}from"./schemas-21VB7GGY.js";import{r as kt}from"./newsletters-CACa0VCx.js";import{a as At,i as jt,n as Mt,r as Nt,s as Pt}from"./filters-Dr3vMnjZ.js";import{n as Ft}from"./dirty-confirm-dialog-CdxPMCA8.js";import{$t as It,A as Lt,B as Rt,D as zt,Ht as Bt,Jt as Vt,Kt as Ht,M as Ut,O as Wt,Qt as Gt,Vt as Kt,Xt as qt,Yt as Jt,Zt as Yt,ct as Xt,ft as Zt,gt as Qt,j as $t,ut as en,vt as tn,zt as nn}from"./index-RuRs_qGS.js";import{t as rn}from"./get-site-timezone-BnQQpb6P.js";import{t as an}from"./validator-DgUCXsE8.js";import{t as on}from"./list-page-BnOuLOBb.js";import{i as sn,n as cn,r as ln,t as un}from"./virtual-list-qPFukjyT.js";import{A as dn,C as fn,D as pn,E as mn,M as hn,N as gn,O as _n,S as vn,T as yn,_ as bn,a as xn,b as Sn,c as Cn,d as wn,f as Tn,g as En,h as Dn,i as On,j as kn,k as An,l as jn,m as Mn,n as Nn,o as Pn,p as Fn,r as In,s as Ln,t as Rn,u as zn,v as Bn,w as Vn,x as Hn}from"./filters-M2sRWPoF.js";import{t as Un}from"./use-availability-CgZC6L_V.js";import{_ as Wn,a as Gn,b as Kn,i as qn,o as Jn,r as Yn,t as Xn,u as Zn,v as Qn,y as $n}from"./member-custom-fields-CBdiwPD9.js";import{n as er,t as tr}from"./use-definitions-CJuXLSob.js";import{n as nr,t as rr}from"./custom-field-type-option-C8Nt4X6x.js";import{t as ir}from"./papaparse.min-BnyoBmWf.js";var X=e(t(),1),Z=f();function ar({open:e,memberCount:t,onOpenChange:n,onConfirm:r,isLoading:i=!1}){let[a,o]=(0,X.useState)([]),s=dt({selectedSlugs:a,onSelectionChange:o}),c=(0,X.useCallback)(e=>{e||o([]),n(e)},[n]);return(0,Z.jsx)(Ne,{open:e,onOpenChange:c,children:(0,Z.jsxs)(je,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ae,{children:(0,Z.jsxs)(Me,{children:[`Add label to `,O(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(_t,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:a,onCreate:s.createLabel,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:a.length===0||i,onClick:()=>{let e=s.labels.filter(e=>a.includes(e.slug)).map(e=>e.id);e.length>0&&r(e)},children:i?`Adding...`:a.length>1?`Add ${O(a.length)} labels`:`Add label`})]})]})})}function or({open:e,memberCount:t,nql:n,search:r,onOpenChange:i,onConfirm:a,isLoading:o=!1}){let[s,c]=(0,X.useState)([]),{data:l,isLoading:u}=m({searchParams:{...n?{filter:n}:{},...r?{search:r}:{},include:`labels`,limit:`all`,fields:`id`},enabled:e}),d=(0,X.useMemo)(()=>{let e=new Set;for(let t of l?.members||[])for(let n of t.labels||[])e.add(n.slug);return e},[l]),f=dt({selectedSlugs:s,onSelectionChange:c}),p={...f.optionSource,options:f.optionSource.options.filter(e=>d.has(String(e.value)))},h=(0,X.useCallback)(e=>{e||c([]),i(e)},[i]),g=()=>{let e=f.labels.filter(e=>s.includes(e.slug)).map(e=>e.id);e.length>0&&a(e)};return(0,Z.jsx)(Ne,{open:e,onOpenChange:h,children:(0,Z.jsxs)(je,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ae,{children:(0,Z.jsxs)(Me,{children:[`Remove label from `,O(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(_t,{labels:f.labels.filter(e=>d.has(e.slug)),optionSource:{...p,isInitialLoad:p.isInitialLoad||u},resolvedSelectedLabels:f.resolvedSelectedLabels.filter(e=>d.has(e.slug)),selectedSlugs:s,onDelete:f.deleteLabel,onEdit:f.editLabel,onToggle:f.toggleLabel}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>h(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:s.length===0||o,onClick:g,children:o?`Removing...`:s.length>1?`Remove ${O(s.length)} labels`:`Remove label`})]})]})})}function sr({open:e,newsletters:t,memberCount:n,onOpenChange:r,onConfirm:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(`all`),[c,l]=(0,X.useState)([]),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),m=(0,X.useRef)(null),h=(0,X.useRef)(null);(0,X.useEffect)(()=>{e||(s(`all`),l([]),d(``),p(!1))},[e]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{m.current&&!m.current.contains(e.target)&&p(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[f]);let g=e=>{e||(s(`all`),l([]),d(``),p(!1)),r(e)},_=(0,X.useCallback)(e=>{l(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=t.length>=2,y=()=>{i(!v||o===`all`?null:c)},b=a||v&&o===`selected`&&c.length===0,x=n===1?`member`:`members`;return(0,Z.jsx)(Ne,{open:e,onOpenChange:g,children:(0,Z.jsxs)(je,{className:`gap-5`,children:[(0,Z.jsx)(Ae,{children:(0,Z.jsx)(Me,{children:`Unsubscribe members`})}),v?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"aria-label":`Unsubscribe scope`,className:`flex flex-col gap-3`,role:`radiogroup`,children:[(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`all`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`all`,onChange:()=>s(`all`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from all newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[O(n),` `,x,` will be unsubscribed from`,` `,t.length,` `,t.length===1?`newsletter`:`newsletters`,`.`]})]})]}),(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`selected`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`selected`,onChange:()=>s(`selected`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from selected newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Select which newsletters to unsubscribe `,O(n),` `,x,` from.`]})]})]})]}),o===`selected`&&(0,Z.jsxs)(`div`,{ref:m,className:`relative space-y-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-semibold`,htmlFor:`newsletter-search`,children:`Newsletters`}),(0,Z.jsxs)(`div`,{className:`flex min-h-9 w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background px-3 py-1 text-sm`,onClick:()=>{h.current?.focus(),p(!0)},children:[c.map(e=>{let n=t.find(t=>t.id===e);return n?(0,Z.jsxs)(Ee,{className:`cursor-pointer gap-1 pr-1`,variant:`outline`,onClick:t=>{t.stopPropagation(),_(e)},children:[n.name,(0,Z.jsx)(ce,{className:`size-3`})]},e):null}),(0,Z.jsx)(`input`,{ref:h,className:`min-w-[80px] flex-1 bg-transparent py-1 text-sm outline-hidden placeholder:text-muted-foreground`,id:`newsletter-search`,placeholder:c.length===0?`Search newsletters...`:``,value:u,onChange:e=>{d(e.target.value),f||p(!0)},onFocus:()=>p(!0),onKeyDown:e=>{e.key===`Escape`&&(p(!1),h.current?.blur()),e.key===`Backspace`&&!u&&c.length>0&&_(c[c.length-1])}})]}),f&&(0,Z.jsx)(`div`,{className:`absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-white shadow-md dark:bg-gray-950`,children:(0,Z.jsx)(Le,{shouldFilter:!1,children:(0,Z.jsxs)(Fe,{className:`max-h-64 overflow-y-auto`,children:[(0,Z.jsx)(Ie,{children:`No newsletters found.`}),t.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())).map(e=>(0,Z.jsxs)(Be,{value:e.name,onSelect:()=>_(e.id),children:[e.name,c.includes(e.id)&&(0,Z.jsx)(ze,{})]},e.id))]})})})]})]}):(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Are you sure you want to unsubscribe `,O(n),` `,x,` from all newsletters? They will no longer receive any email newsletters from you.`]}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>g(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:b,variant:`destructive`,onClick:y,children:a?`Unsubscribing...`:`Unsubscribe`})]})]})})}function cr({open:e,memberCount:t,onOpenChange:n,onConfirm:r,onExportBackup:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(!1),c=e=>{e||s(!1),n(e)},l=async()=>{if(!(t<1||a||o))try{s(!0),await i(),r()}catch{}finally{s(!1)}};return(0,Z.jsx)(Ne,{open:e,onOpenChange:c,children:(0,Z.jsxs)(je,{className:`gap-5`,children:[(0,Z.jsx)(Ae,{children:(0,Z.jsx)(Me,{children:`Delete selected members?`})}),t>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{children:[`You're about to delete`,` `,(0,Z.jsxs)(`strong`,{children:[O(t),` `,t===1?`member`:`members`]}),`. This is permanent! All Ghost data will be deleted, this will have no effect on subscriptions in Stripe.`]}),(0,Z.jsx)(`p`,{children:`A backup of your selection will be automatically downloaded to your device before deletion.`})]}):(0,Z.jsx)(`p`,{children:`No members are selected.`}),(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:a||o||t<1,variant:`destructive`,onClick:()=>void l(),children:a||o?`Deleting...`:`Download backup & delete members`})]})]})})}function lr({fileError:e,onClose:t,onDropAccepted:n,onDropRejected:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[(0,Z.jsxs)(nn,{variant:`info`,children:[`Need some help?`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://ghost.org/help/import-members/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`}),` `,`about importing members or`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://static.ghost.org/v4.0.0/files/member-import-template.csv`,rel:`noopener noreferrer`,target:`_blank`,children:`download a sample CSV file`}),`.`]}),e&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(I,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]}),(0,Z.jsx)(Ge,{accept:{"text/csv":[`.csv`],"application/vnd.ms-excel":[`.csv`]},"aria-label":`Select or drop a CSV file`,onDropAccepted:e=>{let t=e[0];t&&n(t)},onDropRejected:r,children:({isDragActive:e,isDragReject:t})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ge,{className:`mb-2 size-6 text-gray-600`}),(0,Z.jsx)(`span`,{className:`text-sm text-gray-700`,children:t?`The file type you uploaded is not supported`:e?`Drop CSV file to upload`:`Select or drop a CSV file`})]})})]}),(0,Z.jsx)(G,{className:`mt-5`,children:(0,Z.jsx)(W,{variant:`outline`,onClick:t,children:`Close`})})]})}function ur({onUploadAnotherFile:e,onClose:t}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`Your import is being processed, and you'll receive a confirmation email as soon as it's complete. Usually this only takes a few minutes, but larger imports may take longer.`})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[(0,Z.jsx)(W,{variant:`outline`,onClick:e,children:`Upload another file`}),(0,Z.jsx)(W,{onClick:t,children:`Got it`})]})]})}var dr=e(an(),1),fr=[{label:`Email`,value:`email`},{label:`Name`,value:`name`},{label:`Note`,value:`note`},{label:`Subscribed to emails`,value:`subscribed_to_emails`},{label:`Stripe Customer ID`,value:`stripe_customer_id`},{label:`Complimentary plan`,value:`complimentary_plan`},{label:`Labels`,value:`labels`},{label:`Created at`,value:`created_at`},{label:`Gift ID`,value:`gift_id`}],pr={label:`Tier`,value:`import_tier`},mr=[`email`,`name`,`note`,`subscribed_to_emails`,`complimentary_plan`,`stripe_customer_id`,`labels`,`created_at`,`gift_id`];function hr({importMemberTier:e=!1,customFieldColumns:t=[]}={}){return[...mr,...e?[pr.value]:[],...t.map(e=>e.value)]}function gr({importMemberTier:e=!1}={}){return[...fr,...e?[pr]:[]]}var _r=[`email`],vr=class e{_mapping;constructor(e){if(this._mapping={},e)for(let[t,n]of Object.entries(e))this._mapping[n]=t}get(e){return this._mapping[e]??null}toJSON(){return{...this._mapping}}getKeyByValue(e){for(let[t,n]of Object.entries(this._mapping))if(n===e)return t;return null}updateMapping(t,n){let r=new e({});if(r._mapping={...this._mapping},n)for(let e in r._mapping)r._mapping[e]===n&&(r._mapping[e]=null);return r._mapping[t]=n,r}};function yr(e){let t=new Set;for(let n of e)for(let e of Object.keys(n))e!==`__parsed_extra`&&t.add(e);return[...t]}function br(e,t=30){if(!e||e.length<=t)return e;let n=[];return yr(e).forEach(r=>{let i=e.filter(e=>e[r]&&e[r].trim()!==``),a=[];if(i.length<=t)a=i;else{let e=Math.floor(t/3),n=e,r=t-e-n,o=i.slice(0,e),s=n>0?i.slice(-n):[],c=Math.max(0,Math.floor(i.length/2)-Math.floor(r/2)),l=i.slice(c,c+r);a=[...o,...l,...s].slice(0,t)}a.forEach((e,t)=>{n[t]||(n[t]={}),n[t][r]=e[r]})}),n}function xr(e,t={}){let n=br(e),r={},i=hr(t);if(e.length>0)for(let t of yr(e)){if(!r.name&&/name/i.test(t)&&!Qn(t)){r.name=t;continue}!r[t]&&i.includes(t)&&!_r.includes(t)&&(r[t]=t)}let a=0;for(;a<=n.length-1&&!r.email;){let e=n[a];for(let[t,n]of Object.entries(e))!r.email&&n&&dr.default.isEmail(n)&&!Qn(t)&&(r.email=t);a+=1}return r}function Sr(e){return e.replace(`Value in [members.email] cannot be blank.`,`Missing email address`).replace(`Value in [members.note] exceeds maximum length of 2000 characters.`,`Note is too long`).replace(`Value in [members.subscribed] must be one of true, false, 0 or 1.`,`Value of "Subscribed to emails" must be "true" or "false"`).replace(`Validation (isEmail) failed for email`,`Invalid email address`).replace(/No such customer:[\s\S]*/,`Could not find Stripe customer`)}function Cr(e){let t=((Qn(e)?e.split(`.`)[2]:e)??e).replace(/[._-]+/g,` `).trim();return t.charAt(0).toUpperCase()+t.slice(1)}var wr=()=>({status:`INIT`,file:null,fileData:null,mapping:null,selectedLabelSlugs:[],dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,importResponse:null,errorMessage:null,errorHeader:`Import error`,showTryAgainButton:!0,dragOver:!1,fileError:null});function Tr({importResponse:e,onReset:t,onClose:n}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-4`,children:[e.importedCount===0?(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`No members were added`,e.errorCount>0?` due to the following errors:`:`.`]}):(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`A total of `,(0,Z.jsx)(`strong`,{children:O(e.importedCount)}),` `,e.importedCount===1?`person was`:`people were`,` successfully added or updated in your list of members, and now have access to your site.`]}),e.errorCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[e.importedCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hr`,{className:`border-gray-200`}),(0,Z.jsxs)(`p`,{className:`text-sm`,children:[(0,Z.jsx)(`strong`,{children:O(e.errorCount)}),` `,e.errorCount===1?`member was`:`members were`,` skipped due to the following errors:`]})]}),(0,Z.jsx)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-muted-foreground`,children:e.errorList.map(e=>(0,Z.jsxs)(`li`,{children:[e.message,` (`,e.count,`)`]},e.message))})]})]}),(0,Z.jsx)(G,{className:`mt-5`,children:e.errorCount>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{download:e.errorCsvName,href:e.errorCsvUrl,children:`Download error file`})}),e.importedCount===0?(0,Z.jsx)(W,{onClick:t,children:`Try again`}):(0,Z.jsx)(W,{onClick:n,children:`View members`})]}):(0,Z.jsx)(Z.Fragment,{children:e.importedCount===0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:n,children:`Close`}),(0,Z.jsx)(W,{onClick:t,children:`Try again`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(W,{variant:`outline`,onClick:t,children:`Upload another file`}),(0,Z.jsx)(W,{onClick:n,children:`View members`})]})})})]})}function Er({errorMessage:e,showTryAgainButton:t,onTryAgain:n,onClose:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(I,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[t&&(0,Z.jsx)(W,{variant:`outline`,onClick:n,children:`Try again`}),(0,Z.jsx)(W,{onClick:r,children:`OK`})]})]})}function Dr({columnKey:e,isSaving:t,nameError:n,saveError:r,canRetry:i,onSubmit:a,onEdit:o,onCancel:s}){let[c,l]=(0,X.useState)(()=>Cr(e)),[u,d]=(0,X.useState)(Jn[0].id),f=(0,X.useRef)(null);(0,X.useEffect)(()=>{f.current?.scrollIntoView({block:`nearest`})},[]);let p=()=>a(c,u);return(0,Z.jsxs)(`div`,{ref:f,className:`scroll-mb-8 space-y-3`,"data-testid":`import-create-custom-field`,onKeyDown:e=>{if(e.key===`Escape`){e.stopPropagation(),t||s();return}e.key===`Enter`&&!t&&i&&(e.preventDefault(),p())},children:[(0,Z.jsxs)(qe,{className:`flex-row flex-wrap items-start gap-3`,children:[(0,Z.jsxs)(Xe,{className:`min-w-56 flex-1`,"data-invalid":!!n||void 0,children:[(0,Z.jsx)(Ye,{className:`text-sm!`,htmlFor:`import-custom-field-name`,children:`Name`}),(0,Z.jsx)(Ze,{"aria-invalid":!!n||void 0,autoComplete:`off`,className:`h-8 text-sm!`,id:`import-custom-field-name`,placeholder:`Enter custom field name`,value:c,autoFocus:!0,onChange:e=>{l(e.target.value),o()}}),n&&(0,Z.jsx)(Je,{children:n})]}),(0,Z.jsxs)(Xe,{className:`w-44`,children:[(0,Z.jsx)(Ye,{className:`text-sm!`,children:`Type`}),(0,Z.jsxs)(ot,{value:u,onValueChange:e=>d(e),children:[(0,Z.jsx)(it,{"aria-label":`Type`,className:`h-8 text-sm!`,children:(0,Z.jsx)(at,{children:(0,Z.jsx)(rr,{type:u})})}),(0,Z.jsx)(rt,{children:Jn.map(e=>(0,Z.jsx)(nt,{value:e.id,children:(0,Z.jsx)(rr,{type:e.id})},e.id))})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 self-end pb-0.5`,children:[(0,Z.jsx)(W,{disabled:t,size:`sm`,variant:`outline`,onClick:s,children:`Cancel`}),(0,Z.jsx)(W,{disabled:t||!i,size:`sm`,onClick:p,children:t?`Saving`:`Save`})]})]}),r&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:r})]})}var Or={membership:{heading:`Membership fields`,badge:null,ariaKind:null},custom:{heading:`Custom fields`,badge:`Custom`,ariaKind:`Custom field`}},kr=Object.keys(Or);function Ar({membershipFields:e,customFieldColumns:t}){let n=[...e.map(e=>({value:e.value,source:`membership`,fieldName:e.label,label:e.label})),...t.map(e=>({value:e.value,source:`custom`,fieldName:e.fieldName,...e.partLabel===void 0?{}:{partLabel:e.partLabel},label:e.label,type:e.type}))],r=Mr(n),i=n.map(e=>({...e,badge:r.has(jr(e))?Or[e.source].badge:null,ariaKind:Or[e.source].ariaKind}));return kr.map(e=>({source:e,heading:Or[e].heading,targets:i.filter(t=>t.source===e)})).filter(e=>e.targets.length>0)}function jr(e){return e.label.trim().toLowerCase()}function Mr(e){let t=new Map;for(let n of e){let e=t.get(jr(n))??new Set;e.add(n.source),t.set(jr(n),e)}return new Set([...t].filter(([,e])=>e.size>1).map(([e])=>e))}var Nr={email:B,name:he,note:F,subscribed_to_emails:H,stripe_customer_id:oe,complimentary_plan:R,labels:re,created_at:pe,gift_id:_e,import_tier:se};function Pr(e,t){return(0,Z.jsx)(z,{className:t})}function Fr({target:e,className:t}){switch(e.source){case`membership`:return(0,Z.jsx)(Nr[e.value]??z,{className:t});case`custom`:return(0,Z.jsx)(nr,{className:t,type:e.type});default:return Pr(e,t)}}function Ir(e,t,n){return Ve((n??[]).join(` `),t)}function Lr({className:e,columnKey:t,value:n,disabled:r,invalid:i,targetGroups:a,canCreateField:o,open:s,search:c,onOpenChange:l,onSearchChange:u,onSelect:d,onCreateField:f,triggerRef:p}){let m=(0,X.useRef)(!1),h=a.flatMap(e=>e.targets).find(e=>e.value===n),g=h?.badge??null,_=h?.ariaKind??null,v=e=>{l(!1),d(e)};return(0,Z.jsxs)(We,{open:s,modal:!0,onOpenChange:e=>{r||l(e)},children:[(0,Z.jsx)(He,{asChild:!0,children:(0,Z.jsxs)(W,{ref:p,"aria-disabled":r||void 0,"aria-invalid":i||void 0,"aria-label":h?`Field for ${t}, ${h.label}${_?`, ${_}`:``}`:`Field for ${t}, not chosen`,className:A(`h-(--control-height) w-full scroll-my-8 justify-start gap-2 px-2 font-normal`,e,`hover:text-current`,Oe.invalidSelf,`aria-[invalid=true]:ring-2`,r&&`cursor-not-allowed hover:bg-transparent`),role:`combobox`,variant:`outline`,children:[(0,Z.jsxs)(`span`,{className:A(`flex shrink-0 items-center`,r&&`opacity-60`),children:[h&&(0,Z.jsx)(Fr,{className:`size-4 text-foreground`,target:h}),!h&&(0,Z.jsx)(`span`,{className:`size-4 rounded-sm border border-dashed border-border-strong`})]}),h?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`span`,{className:A(`flex min-w-0 flex-1 items-baseline text-left text-sm font-medium`,r&&`opacity-60`),children:[(0,Z.jsx)(`span`,{className:`min-w-0 shrink-[999] truncate`,children:h.fieldName}),h.partLabel&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate whitespace-pre`,children:` (${h.partLabel})`})]}),g&&(0,Z.jsx)(Ee,{className:A(`ms-2 shrink-0 max-md:hidden`,r&&`opacity-60`),variant:`secondary`,children:g})]}):(0,Z.jsx)(`span`,{className:A(`min-w-0 truncate text-sm text-muted-foreground`,r&&`opacity-60`),children:`Select field`}),(0,Z.jsx)(le,{className:`ms-auto size-4 shrink-0 opacity-50`})]})}),(0,Z.jsx)(Ue,{align:`start`,className:`flex max-h-(--radix-popover-content-available-height) w-(--radix-popover-trigger-width) min-w-64 flex-col p-0`,collisionPadding:16,onCloseAutoFocus:e=>{m.current&&(m.current=!1,e.preventDefault(),f())},children:(0,Z.jsxs)(Le,{className:`min-h-0`,filter:Ir,children:[(0,Z.jsx)(Re,{className:`h-(--control-height) shrink-0`,placeholder:`Search fields...`,value:c,onValueChange:u}),(0,Z.jsxs)(Fe,{className:`min-h-0 flex-1`,children:[a.map(e=>(0,Z.jsx)(Pe,{heading:e.heading,children:e.targets.map(e=>(0,Z.jsxs)(Be,{keywords:[e.label],value:e.value,onSelect:()=>v(e.value),children:[(0,Z.jsx)(Fr,{target:e}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.label}),n===e.value&&(0,Z.jsx)(ze,{})]},e.value))},e.source)),o?(0,Z.jsx)(Pe,{forceMount:!0,children:(0,Z.jsxs)(Be,{className:`font-semibold text-green`,value:`Add custom field`,forceMount:!0,onSelect:()=>{m.current=!0,l(!1)},children:[(0,Z.jsx)(V,{}),(0,Z.jsx)(`span`,{children:`Add custom field`})]})}):(0,Z.jsx)(Ie,{children:`No fields found.`})]})]})})]})}function Rr(e,t,n){let r=new Set(e);return n?r.add(t):r.delete(t),r}function zr(e){return Gn(e.type)?null:Yn([e])[0]?.value??null}function Br({status:e,fileData:t,mapping:n,mappingError:a,showMappingErrors:c,dataPreviewIndex:u,targetGroups:f,canCreateCustomFields:p,labelPicker:m,onUpdateMapping:h,onFieldCreated:g,onDataPreviewIndexChange:_,onStartOver:v,onColumnsChanged:y,onUpload:b}){let[x,S]=(0,X.useState)(new Set),[C,w]=(0,X.useState)(new Set),[T,E]=(0,X.useState)(null),D=(0,X.useRef)(new Map);(0,X.useLayoutEffect)(()=>{let[e]=T?.columns??[];e&&D.current.get(e)?.scrollIntoView({block:`nearest`,behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})},[T]);let[k,j]=(0,X.useState)(null),[M,N]=(0,X.useState)(null),{mutateAsync:P,isPending:F}=Zn(),[I,L]=(0,X.useState)(null),[ee,te]=(0,X.useState)(null),[ne,re]=(0,X.useState)(!0),ie=l(),R=(0,X.useCallback)(()=>{L(null),te(null),re(!0)},[]),ae=e=>{let t=e instanceof s?e.data?.errors?.[0]:null;if(e instanceof i&&t?.property===`name`){L(r(e,`Invalid name`));return}te(r(e,e instanceof o?e.message:`Could not create the custom field, please try again.`)),re(!(e instanceof d)&&t?.type!==`NoPermissionError`),e instanceof d||ie(e,{withToast:!1})},oe=async(e,t,n)=>{R();let r;try{r=(await P({name:t,type:n,access:{member:`none`}})).members_metafields?.[0]}catch(e){ae(e);return}if(!r){te(`The field was created, but this column could not be mapped to it. Choose it from the list.`),re(!1),ie(Error(`Custom field create returned no field`));return}let i=zr(r);if(g(e,i),j(null),E(null),i){D.current.get(e)?.focus();return}B(e,r.name)},z=e=>!!k&&k!==e.key,se=t=>e===`UPLOADING`||F,B=(e,t)=>{R(),j(null),N({columnKey:e,search:t})},ce=e=>{R(),j(e)},le=(e,t)=>{let r=n?.getKeyByValue(t);r&&r!==e.key&&S(e=>Rr(e,r,!0)),h(e.key,t)},V=e=>!C.has(e.key)&&(!!e.mapTo||x.has(e.key)),H=(e,t)=>{E(null),y(),w(n=>Rr(n,e.key,!t)),S(n=>Rr(n,e.key,t&&!e.mapTo)),!t&&k===e.key&&j(null)},ue=c&&a||T?.message,fe=!!ue&&!T?.columns.size,U=t.length,pe=u>0,he=!!t[u+1],ge=(0,X.useMemo)(()=>yr(t),[t]),_e=n?ge.map(e=>({key:e,value:t[u]?.[e]??``,mapTo:n.get(e)})):[],ve=Object.fromEntries(_e.map(e=>[e.key,V(e)?e.mapTo:``])),ye=()=>{if(a)return null;if(!Object.values(ve).includes(`email`))return{message:`Please map "Email" to one of the fields in the CSV, and make sure it is selected.`,columns:new Set};let e=Object.keys(ve).filter(e=>ve[e]===null);return e.length===0?null:{message:`Choose a field for ${e.map(e=>`"${e}"`).join(`, `)}, or deselect ${e.length===1?`it`:`them`}.`,columns:new Set(e)}};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 flex min-h-0 flex-1 flex-col space-y-5`,children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:A(`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,fe&&`border-destructive`),children:(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,Z.jsxs)(lt,{className:`table-fixed`,children:[(0,Z.jsx)(ct,{children:(0,Z.jsxs)(J,{children:[(0,Z.jsx)(q,{className:`w-10`,children:(0,Z.jsx)(`span`,{className:`sr-only`,children:`Import this column`})}),(0,Z.jsx)(q,{className:`w-[26%]`,children:`Field`}),(0,Z.jsx)(q,{className:`w-[30%]`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data`,` `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,O(u+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:A(`rounded p-0.5 hover:bg-muted`,!pe&&`cursor-default opacity-30`),disabled:!pe||e===`UPLOADING`,type:`button`,onClick:()=>_(u-1),children:(0,Z.jsx)(de,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:A(`rounded p-0.5 hover:bg-muted`,!he&&`cursor-default opacity-30`),disabled:!he||e===`UPLOADING`,type:`button`,onClick:()=>_(u+1),children:(0,Z.jsx)(me,{className:`size-4`})})]})]})}),(0,Z.jsx)(q,{className:`w-[38%]`,children:`Import as`})]})}),(0,Z.jsx)(st,{children:_e.length>0?_e.map(e=>(0,Z.jsxs)(X.Fragment,{children:[(0,Z.jsxs)(J,{className:A(`transition-opacity [&>td]:group-hover:bg-transparent`,!V(e)&&`bg-muted/50`,z(e)&&`opacity-40`),children:[(0,Z.jsx)(Y,{children:(0,Z.jsx)(De,{"aria-label":`Import ${e.key}`,checked:V(e),disabled:se(e),onCheckedChange:t=>H(e,t===!0)})}),(0,Z.jsx)(Y,{className:A(`text-sm font-medium break-all`,!V(e)&&`text-muted-foreground`),children:e.key}),(0,Z.jsx)(Y,{className:A(`text-sm break-all`,(!e.value||!V(e))&&`text-muted-foreground`),children:e.value||`\xA0`}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(Lr,{canCreateField:p,className:A(!V(e)&&`invisible`),columnKey:e.key,disabled:se(e),invalid:T?.columns.has(e.key),open:M?.columnKey===e.key,search:M?.columnKey===e.key?M.search:``,targetGroups:f,triggerRef:t=>{t?D.current.set(e.key,t):D.current.delete(e.key)},value:e.mapTo,onCreateField:()=>ce(e.key),onOpenChange:t=>t?B(e.key,``):N(null),onSearchChange:t=>N({columnKey:e.key,search:t}),onSelect:t=>{E(null),le(e,t)}})})]}),k===e.key&&(0,Z.jsx)(J,{className:`bg-transparent hover:bg-transparent`,children:(0,Z.jsx)(Y,{className:`p-2`,colSpan:4,children:(0,Z.jsx)(`div`,{className:`rounded-lg border bg-surface-elevated-2 p-3 shadow-lg`,children:(0,Z.jsx)(Dr,{canRetry:ne,columnKey:e.key,isSaving:F,nameError:I,saveError:ee,onCancel:()=>{R(),j(null),D.current.get(e.key)?.focus()},onEdit:R,onSubmit:(t,n)=>void oe(e.key,t,n)})})})})]},e.key)):(0,Z.jsx)(J,{children:(0,Z.jsx)(Y,{className:`text-muted-foreground`,colSpan:4,children:`No data found in the uploaded CSV.`})})})]})})}),ue&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:ue}),U>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(_t,{isCreating:m.isCreating,labels:m.labels,optionSource:m.optionSource,resolvedSelectedLabels:m.resolvedSelectedLabels,selectedSlugs:m.selectedSlugs,onCreate:m.createLabel,onDelete:m.deleteLabel,onEdit:m.editLabel,onToggle:m.toggleLabel})]})]})}),(0,Z.jsxs)(G,{className:`mt-5`,children:[(0,Z.jsx)(W,{disabled:e===`UPLOADING`,variant:`outline`,onClick:v,children:`Start over`}),(0,Z.jsx)(W,{disabled:e===`UPLOADING`||U===0,onClick:()=>{let e=ye();if(e){E(e);return}b(ve)},children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(tt,{color:`light`,size:`sm`}),`Uploading`]}):U>0?`Import ${O(U)} ${U===1?`member`:`members`}`:`Import members`})]})]})}var Vr=e(k(),1),Hr=e(ir(),1);function Ur(e){let t=Hr.default.parse(e,{header:!0,skipEmptyLines:!0});return!t.data||t.data.length<1?[]:t.data.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):``;return t})}var Wr=Dt([Ct(),Tt({name:Ct()})]),Gr=Tt({error:Ct().catch(``)}).catchall(Ot());function Kr(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{let t=Wr.safeParse(e);return t.success?typeof t.data==`string`?t.data:t.data.name:``}).filter(Boolean).join(`,`):``}function Q(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):``}function qr(e){let t={email:Q(e.email),name:Q(e.name),note:Q(e.note),...e.subscribed===void 0?{}:{subscribed_to_emails:Q(e.subscribed)},...e.complimentary_plan===void 0?{}:{complimentary_plan:Q(e.complimentary_plan)},stripe_customer_id:Q(e.stripe_customer_id),created_at:Q(e.created_at),labels:Kr(e.labels)};e.newsletters!==void 0&&(t.newsletters=Kr(e.newsletters));for(let[n,r]of Object.entries(e))Qn(n)&&(t[n]=Q(r));return t.gift_id=Q(e.gift_id),t.error=Q(e.error),t}function Jr(e){if(e.length===0)return``;let t=e.map(e=>qr(Gr.parse(e))),n=[];for(let e of t)for(let t of Object.keys(e))t!==`error`&&!n.includes(t)&&n.push(t);return n.push(`error`),Hr.default.unparse(t,{quotes:!0,escapeFormulae:!0,columns:n})}var Yr=Tt({errors:bt(Ct()).catch([])}).catchall(Ot());function Xr(e){let t=e.meta.stats.imported,n=Array.isArray(e.meta.stats.invalid)?e.meta.stats.invalid:[],r=n.length,i={},a=Jr(n.map(e=>{let t=Yr.safeParse(e),{errors:n,...r}=t.success?t.data:{errors:[]},a=n.map(e=>Sr(e).trim()).filter(Boolean);for(let e of a)i[e]?i[e].count+=1:i[e]={message:e,count:1};return{...r,error:a.join(`
|
|
2
2
|
`)}})),o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=e.meta.import_label;return{importedCount:t,errorCount:r,errorCsvUrl:s,errorCsvName:c?`${c.name} - Errors.csv`:`Import ${(0,Vr.default)().format(`YYYY-MM-DD HH:mm`)} - Errors.csv`,errorList:Object.values(i),importLabel:e.meta.import_label||void 0}}function Zr(e,t){switch(t.type){case`SELECT_FILE`:return{...e,status:`MAPPING`,file:t.file,fileData:null,mapping:null,dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,fileError:null};case`SET_FILE_ERROR`:return{...e,fileError:t.fileError};case`PARSE_SUCCESS`:return{...e,fileData:t.fileData,mapping:t.mapping,mappingError:t.mappingError};case`PARSE_FAILURE`:return{...e,fileData:[],mapping:null,mappingError:t.mappingError};case`UPDATE_MAPPING`:return{...e,mapping:t.mapping,mappingError:t.mappingError};case`SET_SELECTED_LABEL_SLUGS`:return{...e,selectedLabelSlugs:t.selectedLabelSlugs};case`SET_DATA_PREVIEW_INDEX`:return{...e,dataPreviewIndex:t.dataPreviewIndex};case`SET_SHOW_MAPPING_ERRORS`:return{...e,showMappingErrors:t.showMappingErrors};case`SET_DRAG_OVER`:return{...e,dragOver:t.dragOver};case`UPLOAD_START`:return{...e,status:`UPLOADING`,showMappingErrors:!1};case`UPLOAD_ACCEPTED`:return{...e,status:`PROCESSING`};case`UPLOAD_COMPLETE`:return{...e,status:`COMPLETE`,importResponse:t.importResponse};case`UPLOAD_ERROR`:return{...e,status:`ERROR`,errorMessage:t.errorMessage,errorHeader:t.errorHeader??`Import error`,showTryAgainButton:t.showTryAgainButton??!0};case`RESET`:return wr();default:return e}}function Qr({open:e,onOpenChange:t,onComplete:n,onClose:o}){let[c,l]=(0,X.useReducer)(Zr,void 0,wr),u=(0,X.useRef)(null),{mutateAsync:f}=g(),p=Rt(`importMemberTier`),m=Un(),{data:h,isError:_}=tr({enabled:e}),v=(0,X.useMemo)(()=>Yn(h??[]),[h]),b=h!==void 0||_,x=(0,X.useRef)({importMemberTier:p,customFieldColumns:v});(0,X.useLayoutEffect)(()=>{x.current={importMemberTier:p,customFieldColumns:v}},[p,v]);let S=(0,X.useMemo)(()=>Ar({membershipFields:gr({importMemberTier:p}),customFieldColumns:v}),[p,v]),C=dt({selectedSlugs:c.selectedLabelSlugs,onSelectionChange:e=>{O.current=!0,l({type:`SET_SELECTED_LABEL_SLUGS`,selectedLabelSlugs:e})}}),w=(0,X.useCallback)(()=>{u.current&&typeof URL.revokeObjectURL==`function`?(URL.revokeObjectURL(u.current),u.current=null):u.current&&=null},[]),T=(0,X.useCallback)(()=>{w(),O.current=!1,l({type:`RESET`})},[w]);(0,X.useEffect)(()=>()=>{w()},[w]);let{confirm:E,dialogProps:D}=Ft(),O=(0,X.useRef)(!1),k=(0,X.useCallback)(e=>{if(!(!e&&c.status===`UPLOADING`)){if(!e){E(c.status===`MAPPING`&&O.current,()=>{let e=c.importResponse??void 0;T(),o?.(e),t(!1)});return}t(e)}},[E,o,t,T,c.importResponse,c.status]);(0,X.useEffect)(()=>{if(!c.file||!b)return;let e=!1,t=new FileReader;return t.onload=t=>{if(!e)try{let e=t.target?.result,n=Ur(e);if(n.length>0){let e=new vr(xr(n,x.current));l({type:`PARSE_SUCCESS`,fileData:n,mapping:e,mappingError:null})}else l({type:`PARSE_SUCCESS`,fileData:[],mapping:null,mappingError:`File is empty, nothing to import. Please select a different file.`})}catch{l({type:`PARSE_FAILURE`,mappingError:`Failed to parse this file. Please try another CSV file.`})}},t.onerror=()=>{e||l({type:`PARSE_FAILURE`,mappingError:`Failed to read file${t.error?.message?`: ${t.error.message}`:``}`})},t.onabort=()=>{e||l({type:`PARSE_FAILURE`,mappingError:`File read was interrupted. Please try again.`})},t.readAsText(c.file),()=>{e=!0,t.readyState===FileReader.LOADING&&t.abort()}},[c.file,b]);let j=(0,X.useCallback)(e=>{let t=/(?:\.([^.]+))?$/.exec(e.name)?.[1];return!t||t.toLowerCase()!==`csv`?(l({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`}),!1):(l({type:`SET_FILE_ERROR`,fileError:null}),!0)},[]),M=(0,X.useCallback)(e=>{j(e)&&l({type:`SELECT_FILE`,file:e})},[j]),N=(0,X.useCallback)((e,t)=>{if(!c.mapping)return;O.current=!0;let n=c.mapping.updateMapping(e,t),r=c.fileData&&c.fileData.length===0?`File is empty, nothing to import. Please select a different file.`:null;l({type:`UPDATE_MAPPING`,mapping:n,mappingError:r})},[c.fileData,c.mapping]),P=(0,X.useCallback)((e,t)=>{t&&N(e,t)},[N]),F=(0,X.useCallback)(async e=>{if(!c.file||c.mappingError){l({type:`SET_SHOW_MAPPING_ERRORS`,showMappingErrors:!0});return}l({type:`UPLOAD_START`});let t=[];for(let e of c.selectedLabelSlugs){let n=C.labels.find(t=>t.slug===e);n&&t.push(n.name)}try{let r=await f({file:c.file,labels:t,mapping:e});if(y(r)){let e=Xr(r);w(),u.current=e.errorCsvUrl,l({type:`UPLOAD_COMPLETE`,importResponse:e}),n?.(e);return}l({type:`UPLOAD_ACCEPTED`}),n?.()}catch(e){if(e instanceof a){l({type:`UPLOAD_ERROR`,errorMessage:`The file you uploaded was larger than the maximum file size your server allows.`});return}let t=e instanceof s?e.data?.errors?.[0]:null;if(e instanceof d&&t?.code===`EMAIL_VERIFICATION_NEEDED`){l({type:`UPLOAD_ERROR`,errorMessage:r(e,e.message),errorHeader:`Woah there cowboy, that's a big list`,showTryAgainButton:!1}),n?.();return}if(e instanceof i||t?.type===`DataImportError`){l({type:`UPLOAD_ERROR`,errorMessage:r(e,e instanceof Error?e.message:`An unexpected error occurred, please try again`)});return}l({type:`UPLOAD_ERROR`,errorMessage:`An unexpected error occurred, please try again`})}},[c.file,c.mappingError,c.selectedLabelSlugs,C.labels,f,w,n]),I=c.status===`MAPPING`||c.status===`UPLOADING`,L=(0,X.useMemo)(()=>{switch(c.status){case`PROCESSING`:return`Import in progress`;case`COMPLETE`:return`Import complete`;case`ERROR`:return c.errorHeader;default:return`Import members`}},[c.errorHeader,c.status]);return(0,Z.jsxs)(Ne,{open:e,onOpenChange:k,children:[(0,Z.jsxs)(je,{className:A(`gap-0`,I&&`max-w-4xl`,I&&`flex max-h-[calc(100vh-16vmin)] flex-col`),children:[(0,Z.jsxs)(Ae,{children:[(0,Z.jsx)(Me,{children:L}),(0,Z.jsx)(ke,{className:`sr-only`,children:`Import members from a CSV file.`})]}),c.status===`INIT`&&(0,Z.jsx)(lr,{fileError:c.fileError,onClose:()=>k(!1),onDropAccepted:M,onDropRejected:()=>l({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`})}),(c.status===`MAPPING`||c.status===`UPLOADING`)&&c.fileData===null&&(0,Z.jsx)(`div`,{className:`flex items-center justify-center rounded-md border bg-muted p-10`,children:(0,Z.jsx)(tt,{size:`md`})}),(c.status===`MAPPING`||c.status===`UPLOADING`)&&c.fileData!==null&&(0,Z.jsx)(Br,{canCreateCustomFields:m,dataPreviewIndex:c.dataPreviewIndex,fileData:c.fileData,labelPicker:C,mapping:c.mapping,mappingError:c.mappingError,showMappingErrors:c.showMappingErrors,status:c.status,targetGroups:S,onColumnsChanged:()=>{O.current=!0},onDataPreviewIndexChange:e=>{l({type:`SET_DATA_PREVIEW_INDEX`,dataPreviewIndex:e})},onFieldCreated:P,onStartOver:T,onUpdateMapping:N,onUpload:e=>void F(e)}),c.status===`PROCESSING`&&(0,Z.jsx)(ur,{onClose:()=>k(!1),onUploadAnotherFile:T}),c.status===`COMPLETE`&&c.importResponse&&(0,Z.jsx)(Tr,{importResponse:c.importResponse,onClose:()=>k(!1),onReset:T}),c.status===`ERROR`&&(0,Z.jsx)(Er,{errorMessage:c.errorMessage,showTryAgainButton:c.showTryAgainButton,onClose:()=>k(!1),onTryAgain:T})]}),(0,Z.jsx)(we,{open:D.open,onOpenChange:D.onOpenChange,children:(0,Z.jsxs)(be,{className:`z-[1100]`,"data-testid":`import-members-leave-guard`,overlayClassName:`z-[1100]`,onEscapeKeyDown:e=>e.stopPropagation(),children:[(0,Z.jsxs)(Ce,{children:[(0,Z.jsx)(ye,{children:`Leave without importing?`}),(0,Z.jsx)(ve,{children:`The columns you have mapped will be lost.`})]}),(0,Z.jsxs)(xe,{children:[(0,Z.jsx)(Se,{children:`Keep mapping`}),(0,Z.jsx)(W,{variant:`destructive`,onClick:D.onConfirm,children:`Leave`})]})]})})]})}var $r=`metafields`,ei=`${$r}.key`,ti=`${$r}.value`,ni=`metafields.`;function $(e){return`${ni}${e.namespace}.${e.key}`}function ri(e){if(!e.startsWith(`metafields.`))return null;let[t,n,...r]=e.slice(11).split(`.`);return!t||!n||r.length>0?null:{namespace:t,key:n}}function ii(e,t){return $n({namespace:e.namespace,key:e.key,partPath:t||null})}function ai(e){let t=typeof e==`string`?Kn(e):null;return t?{namespace:t.namespace,key:t.key,subfield:t.partPath??``}:null}var oi=mn;function si(e){return`${ei}:${x(e)}`}function ci(e){let[t,...n]=e;return{subfield:typeof t==`string`?t:``,rest:n.filter(e=>e!==``)}}function li(e,t){return e||(t.namespace&&t.key?{namespace:t.namespace,key:t.key}:null)}function ui(e){return{presenceOperators:oi,address(t,n){let r=li(e,n.params),{subfield:i,rest:a}=ci(t.values);return r?{valueKey:ti,companions:[si(ii(r,i))],values:a}:null},addressPresence(t,n){let r=li(e,n.params),{subfield:i}=ci(t.values);if(!r)return null;let a=ii(r,i);return t.operator===`is-set`?[si(a)]:[`${ei}:-${x(a)}`]},match(){return null},matchCompound(t){let n=t=>e===void 0||t.namespace===e.namespace&&t.key===e.key,r=_n(t,`$and`);if(!r){let e=ai(t[ei]);if(e)return n(e)?{kind:`predicate`,predicate:{field:$(e),operator:`is-set`,values:[e.subfield,``]}}:null;let r=ai(An(t[ei]));return r&&n(r)?{kind:`predicate`,predicate:{field:$(r),operator:`is-not-set`,values:[r.subfield,``]}}:null}if(r.length!==2)return null;let i,a,o=!1;for(let e of r){let t=ai(e[ei]);t&&(i=t),ti in e&&(a=e[ti],o=!0)}if(!i||!o||!n(i))return null;let s=dn(a);return s?{kind:`value`,field:$(i),leadingValues:[i.subfield],comparator:s}:null}}}var di={text:`text`,date:`plain_date`,number:`number`},fi={short_text:`text`,postal_code:`text`,country_code:`set`},pi=[`text`,`set`],mi={text:()=>Vn(),set:()=>fn({quoteStrings:!0})};function hi(e,t){let n=Gn(e)?.find(e=>e.key===t);return n?fi[n.type]:void 0}function gi(e){let t=new Set((Gn(e)??[]).map(e=>fi[e.type]));return pi.filter(e=>t.has(e))}function _i(e){let t=pi.filter(t=>e.includes(t)).map(e=>mi[e]());return{operators:t.flatMap(e=>e.operators),serialize(e,n){let r=t.find(t=>pn(t.operators,e.operator));return r?r.serialize(e,n):null},parse(e,n){for(let r of t){if(r!==t[0]&&!Array.isArray(e.value))continue;let i=r.parse(e,n);if(i)return i}return null}}}function vi(e){return[...pi.filter(t=>e.includes(t)).flatMap(e=>bn[e].operators),...oi]}var yi=ni;function bi(e){let t=qn(e.type);return t===`record`?xn({key:$(e),icon:`text`,semantics:_i(gi(e.type)),operators:vi(gi(e.type)),addressing:ui(e),ui:{label:e.name,type:`custom`,defaultOperator:`is-set`}}):{key:$(e),icon:`text`,type:di[t],addressing:ui(e),ui:{label:e.name,type:`custom`}}}function xi(e){return{resolved:e!==void 0,claims:[yi],fields:(e??[]).map(bi)}}var Si=`newsletters.`,Ci=`newsletters.slug`,wi=`email_disabled`,Ti=[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`}];function Ei(e){return{operators:[`is`],serialize({operator:t,values:n},r){let i=e??r.params.slug,a=n[0];return!i||t!==`is`?null:a===`subscribed`?{join:`and`,fragments:[{expression:i},{key:wi,expression:`0`}]}:a===`unsubscribed`?{join:`or`,fragments:[{expression:`-${i}`},{key:wi,expression:`1`}]}:null},parse(){return null}}}function Di(e){return{address(t,n){return e??n.params.slug?{valueKey:Ci,values:t.values}:null},match(){return null},matchCompound(e){for(let t of[`and`,`or`]){let n=_n(e,t===`and`?`$and`:`$or`);if(!n||n.length!==2)continue;let r,i=!1,a;for(let e of n){let t=e[Ci];typeof t==`string`&&(r=t,i=!1);let n=An(t);n!==null&&(r=n,i=!0),typeof e[wi]==`number`&&(a=e[wi])}let o=!i&&t===`and`&&a===0;if(!(!r||!o&&!(i&&t===`or`&&a===1)))return{kind:`predicate`,predicate:{field:`${Si}${r}`,operator:`is`,values:[o?`subscribed`:`unsubscribed`]}}}return null}}}function Oi(e){return xn({key:`${Si}${e.slug}`,icon:`newspaper`,semantics:Ei(e.slug),addressing:Di(e.slug),operators:[`is`],options:Ti,ui:{label:e.name,type:`select`,searchable:!1,hideOperatorSelect:!0}})}function ki(e){return{resolved:e!==void 0,claims:[Ci],fields:(e??[]).map(Oi)}}var Ai=xn({key:`${Si}:slug`,icon:`newspaper`,semantics:Ei(),addressing:Di(),operators:[`is`],options:Ti,ui:{label:`Newsletter`,type:`select`,searchable:!1,hideOperatorSelect:!0}}),ji=`email_disabled`;function Mi(e,t){return e.clauses.find(e=>e.key===t)}function Ni(){return{operators:[`is`,`is-not`],serialize({operator:e,values:t}){let n=t[0],r=e===`is`;if(e!==`is`&&e!==`is-not`)return null;if(n===`email-disabled`)return{fragments:[{key:ji,expression:r?`1`:`0`}]};if(n!==`subscribed`&&n!==`unsubscribed`)return null;let i=n===`subscribed`;return r?{join:`and`,fragments:[{expression:String(i)},{key:ji,expression:`0`}]}:{join:`or`,fragments:[{expression:String(!i)},{key:ji,expression:`1`}]}},parse(){return null},parseClauses(e){let t=Mi(e,ji),n=Mi(e,`subscribed`);return t&&!n&&e.clauses.length===1?t.value===1?{operator:`is`,values:[`email-disabled`]}:t.value===0?{operator:`is-not`,values:[`email-disabled`]}:null:!n||typeof n.value!=`boolean`?null:!t&&e.clauses.length===1?{operator:`is`,values:[n.value?`subscribed`:`unsubscribed`]}:!t||e.clauses.length!==2?null:e.join===`and`&&t.value===0?{operator:`is`,values:[n.value?`subscribed`:`unsubscribed`]}:e.join===`or`&&t.value===1?{operator:`is-not`,values:[n.value?`unsubscribed`:`subscribed`]}:null}}}function Pi(){return{operators:[`1`,`0`],serialize({operator:e,values:t}){let n=t[0];return typeof n!=`string`||!n?null:{join:`and`,fragments:[{expression:x(n)},{key:`feedback.score`,expression:e}]}},parse(){return null},parseClauses(e){let t=Mi(e,`feedback.post_id`),n=Mi(e,`feedback.score`);return e.clauses.length!==2||e.join!==`and`||!t||!n||typeof t.value!=`string`||n.value!==0&&n.value!==1?null:{operator:n.value===1?`1`:`0`,values:[t.value]}}}}var Fi=`count.active_stripe_customers`,Ii=`${Fi}:>1`;`${Fi}`;var Li=xt({multipleActiveSubscriptionsBanner:xt({dismissedCount:St().finite().optional().catch(void 0),dismissedAt:Ct().optional().catch(void 0)}).optional().catch(void 0)});function Ri(e){return e===Ii}function zi(e){if(!e)return Li.parse({});try{let t=JSON.parse(e);return Li.parse(t)}catch{return Li.parse({})}}function Bi(e){return zi(e).multipleActiveSubscriptionsBanner??{}}function Vi(e,t,n){let r=zi(e),i=Bi(e);return JSON.stringify({...r,multipleActiveSubscriptionsBanner:{...i,dismissedCount:t,dismissedAt:n}})}function Hi(e,t,n){return{...e,accessibility:Vi(e.accessibility,t,n)}}var Ui=[{key:`name`,icon:`person`,type:`text`,ui:{label:`Name`,placeholder:`Enter name...`,className:`w-48`}},{key:`email`,icon:`mail`,type:`text`,ui:{label:`Email`,placeholder:`Enter email...`,className:`w-48`}},{key:`label`,icon:`tag`,type:`set`,ui:{label:`Label`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`labels`,label:`Labels`},columnInclude:`labels`}},xn({key:`subscribed`,icon:`mail`,semantics:Ni(),operators:bn.scalar.operators,ui:{label:`Newsletter subscription`,type:`select`,searchable:!1},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`},{value:`email-disabled`,label:`Email disabled`}]}),{key:`last_seen_at`,icon:`eye`,type:`timestamp`,operators:Hn,ui:{label:`Last seen`}},{key:`created_at`,icon:`calendar`,type:`timestamp`,operators:Hn,ui:{label:`Created`}},{key:`signup`,icon:`person-plus`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Signed up on post/page`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`}},{key:`tier_id`,icon:`card`,type:`set`,ui:{label:`Membership tier`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`tiers`,label:`Tiers`},columnInclude:`tiers`}},{key:`status`,icon:`person-circle`,type:`scalar`,ui:{label:`Member status`,searchable:!1},options:[{value:`paid`,label:`Paid`},{value:`free`,label:`Free`},{value:`comped`,label:`Complimentary`}]},{key:`subscriptions.plan_interval`,icon:`calendar-clock`,type:`scalar`,ui:{label:`Billing period`,searchable:!1},options:[{value:`month`,label:`Monthly`},{value:`year`,label:`Yearly`}],metadata:{activeColumn:{key:`subscriptions.plan_interval`,label:`Billing period`},columnInclude:`subscriptions`}},{key:`subscriptions.status`,icon:`card`,type:`scalar`,ui:{label:`Stripe subscription status`,searchable:!1},options:[{value:`active`,label:`Active`},{value:`trialing`,label:`Trialing`},{value:`canceled`,label:`Canceled`},{value:`unpaid`,label:`Unpaid`},{value:`past_due`,label:`Past Due`},{value:`incomplete`,label:`Incomplete`},{value:`incomplete_expired`,label:`Incomplete - Expired`}],metadata:{activeColumn:{key:`subscriptions.status`,label:`Subscription status`},columnInclude:`subscriptions`}},{key:`subscriptions.start_date`,icon:`calendar-start`,type:`timestamp`,operators:Hn,ui:{label:`Paid start date`},metadata:{activeColumn:{key:`subscriptions.start_date`,label:`Paid start date`},columnInclude:`subscriptions`}},{key:`subscriptions.current_period_end`,icon:`calendar-end`,type:`timestamp`,operators:Sn,ui:{label:`Next billing date`},metadata:{activeColumn:{key:`subscriptions.current_period_end`,label:`Next billing date`},columnInclude:`subscriptions`}},{key:`conversion`,icon:`arrows`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Subscription started on post/page`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`}},{key:`email_count`,icon:`send`,type:`number`,ui:{label:`Emails sent (all time)`,defaultOperator:`is-greater`,min:0,className:`w-24`}},{key:`email_opened_count`,icon:`mail-open`,type:`number`,ui:{label:`Emails opened (all time)`,defaultOperator:`is-greater`,min:0,className:`w-24`}},{key:`email_open_rate`,icon:`percent`,type:`number`,ui:{label:`Open rate (all time)`,defaultOperator:`is-greater`,min:0,max:100,suffix:`%`,className:`w-24`}},{key:`emails.post_id`,icon:`send`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Sent email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},{key:`opened_emails.post_id`,icon:`mail-open`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Opened email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},{key:`clicked_links.post_id`,icon:`click`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Clicked email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},xn({key:`newsletter_feedback`,icon:`message`,semantics:Pi(),addressing:yn({field:`feedback.post_id`}),operators:[`1`,`0`],ui:{label:`Responded with feedback`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`,defaultOperator:`1`}}),{key:`offer_redemptions`,icon:`ticket`,type:`set`,valueConfig:{quoteStrings:!0,serializeSingletonAsScalar:!0},ui:{label:`Offer`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`offer_redemptions`,label:`Offer`}}},{key:Fi,icon:`layers`,type:`count`,valueConfig:{threshold:1,absentForm:`below`},ui:{label:`Multiple active subscriptions`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`true`,label:`Yes`},{value:`false`,label:`No`}]}],Wi=[`text`,`set`],Gi=xn({key:`metafields.:namespace.:key`,icon:`text`,semantics:_i(Wi),addressing:ui(),operators:vi(Wi),ui:{label:`Custom field`,type:`custom`},metadata:{activeColumn:({params:e,label:t})=>t&&e.namespace&&e.key?{key:$({namespace:e.namespace,key:e.key}),label:t}:null,columnInclude:`metafields`}}),Ki=[...Ui,Ai,Gi],qi=Nn(Ki),Ji=2;function Yi(e,t={}){let n=new Map;for(let r of e){let e=Mn(qi,r.field,`UTC`),i=e?.definition.metadata?.activeColumn;if(!i)continue;let{context:a}=e;if(typeof i!=`function`){let e=ea[i.key];e&&n.set(i.key,{...i,getValue:e});continue}let o=ta[a.pattern]?.(a.params,t);if(!o)continue;let s=i({...a,label:o.label});s&&n.set(s.key,{...s,getValue:o.getValue})}return Array.from(n.values()).slice(0,Ji)}function Xi(e){let t=new Set([`labels`,`tiers`]);for(let n of e){let e=Mn(qi,n.field,`UTC`)?.definition.metadata?.columnInclude;e&&t.add(e)}return Array.from(t).join(`,`)}function Zi({filters:e,nql:t,search:n}){if(!t&&!n)return;let r={include:Xi(e),limit:`100`,order:`created_at desc`};return t&&(r.filter=t),n&&(r.search=n),r}function Qi({nql:e,search:t}){return!e&&!t?{all:!0}:{...e?{filter:e}:{},...t?{search:t}:{}}}function $i(e,t){return e?{text:Vr.default.tz(e,t).format(`D MMM YYYY`),subtext:(0,Vr.default)(e).fromNow()}:null}var ea={labels:e=>e.labels?.length?{text:e.labels.map(e=>e.name).join(`, `)}:null,tiers:e=>e.tiers?.length?{text:e.tiers.map(e=>e.name).join(`, `)}:null,"subscriptions.plan_interval":e=>{let t=e.current_subscription?.plan?.interval;return t?{text:t===`month`?`Monthly`:`Yearly`}:null},"subscriptions.status":e=>{let t=e.current_subscription?.status;return t?{text:t.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}:null},"subscriptions.start_date":(e,t)=>$i(e.current_subscription?.start_date,t),"subscriptions.current_period_end":(e,t)=>$i(e.current_subscription?.current_period_end,t),offer_redemptions:e=>{let t=e.subscriptions?.map(e=>e.offer?.name).filter(Boolean);return t?.length?{text:t.join(`, `)}:null}},ta={"metafields.:namespace.:key":({namespace:e,key:t},{customFields:n})=>{let r=n?.find(n=>n.namespace===e&&n.key===t);return r?{label:r.name,getValue:e=>{let t=Xn(r.type,e.metafields?.[r.namespace]?.[r.key]);return t?{text:t}:null}}:null}};async function na(e,t){let n=new URLSearchParams({limit:`all`});e&&n.set(`filter`,e),t&&n.set(`search`,t),await c(`/members/upload/?${n}`,`members.csv`)}var ra=({children:e,hasFilterOrSearch:t,memberCount:n,nql:r,search:i,canBulkDelete:a,showMenu:o=!0,showNewMember:s=!0,onImportComplete:c})=>{let{isAdmin7:l}=M(),u=E(),d=D(),f=u.pathname===`/members/import`,p=u.search??``,m=u.pathname===`/members`?`${u.pathname}${p}`:`/members`,g=`#/members/new?back=${encodeURIComponent(m)}`,[_,y]=(0,X.useState)(!1),[x,S]=(0,X.useState)(!1),[C,w]=(0,X.useState)(!1),[T,k]=(0,X.useState)(!1),{data:A,isLoading:j}=kt({searchParams:{filter:`status:-archived`,limit:`50`}}),N=A?.newsletters||[],{mutateAsync:P,isPending:F}=v(),{mutate:I,isPending:ie}=h(),[R,oe]=(0,X.useState)(!1),z=Qi({nql:r,search:i}),se=(0,X.useCallback)(async()=>{try{await na(r,i)}catch(e){throw b.error(`Export failed`,{description:`There was a problem downloading your member data. Please check your connection and try again.`}),e}},[r,i]),B=(0,X.useCallback)(async e=>{try{for(let t of e)await P({...z,action:{type:`addLabel`,meta:{label:{id:t}}}});y(!1),b.success(e.length>1?`Labels added successfully`:`Label added successfully`)}catch{b.error(`Failed to add label`,{description:`There was a problem applying this label. Please try again.`})}},[P,z]),ce=(0,X.useCallback)(async e=>{try{for(let t of e)await P({...z,action:{type:`removeLabel`,meta:{label:{id:t}}}});S(!1),b.success(e.length>1?`Labels removed successfully`:`Label removed successfully`)}catch{b.error(`Failed to remove label`,{description:`There was a problem removing this label. Please try again.`})}},[P,z]),le=(0,X.useCallback)(async e=>{let t=z;if(e===null){try{await P({...t,action:{type:`unsubscribe`}}),w(!1),b.success(`Members unsubscribed successfully`)}catch{b.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}return}oe(!0);try{let n=await Promise.allSettled(e.map(e=>P({...t,action:{type:`unsubscribe`,newsletter:e}}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length;w(!1),r===i?b.success(`Unsubscribed from ${i} ${i===1?`newsletter`:`newsletters`}`):r>0?b.warning(`Unsubscribed from ${r} of ${i} newsletters`,{description:`Some newsletters could not be unsubscribed. Please try again.`}):b.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}catch{b.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}finally{oe(!1)}},[P,z]),H=(0,X.useCallback)(()=>{I(z,{onSuccess:()=>{k(!1),b.success(`Members deleted successfully`)},onError:()=>{b.error(`Failed to delete members`,{description:`There was a problem deleting these members. Please try again.`})}})},[I,z]),ue=(0,X.useCallback)(async()=>{try{await na(r,i)}catch(e){throw b.error(`Export failed`,{description:`There was a problem downloading your backup. Please check your connection and try again.`}),e}},[r,i]),de=(0,X.useCallback)(()=>{},[]),fe=(0,X.useCallback)(()=>{d(`/members/import${p}`)},[p,d]),U=(0,X.useCallback)(e=>{c?.(e)},[c]),pe=(0,X.useCallback)(e=>{if(e?.importLabel){d(Ut({filter:`label:[${e.importLabel.slug}]`}),{replace:!0});return}d(`/members${p}`,{replace:!0})},[p,d]);return(0,Z.jsxs)(Z.Fragment,{children:[o&&(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsxs)(Xt,{children:[(0,Z.jsx)(tn,{asChild:!0,children:(0,Z.jsx)(K.Action,{"data-testid":`members-actions`,label:l?`Member actions`:`More member actions`,iconOnly:!0,children:(0,Z.jsx)(ae,{className:`size-4`})})}),(0,Z.jsxs)(en,{align:`end`,children:[(0,Z.jsxs)(Zt,{onClick:fe,children:[(0,Z.jsx)(ge,{className:`mr-2 size-4`}),`Import members`]}),n>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(Zt,{onClick:()=>void se(),children:[(0,Z.jsx)(te,{className:`mr-2 size-4`}),t?`Export ${O(n)} members`:`Export all members`]}),(0,Z.jsx)(Qt,{}),(0,Z.jsxs)(Zt,{onClick:()=>y(!0),children:[(0,Z.jsx)(ee,{className:`mr-2 size-4`}),`Add label to `,O(n),` `,n===1?`member`:`members`]}),(0,Z.jsxs)(Zt,{onClick:()=>S(!0),children:[(0,Z.jsx)(re,{className:`mr-2 size-4`}),`Remove label from `,O(n),` `,n===1?`member`:`members`]}),(0,Z.jsxs)(Zt,{disabled:j,onClick:()=>w(!0),children:[(0,Z.jsx)(ne,{className:`mr-2 size-4`}),`Unsubscribe `,O(n),` `,n===1?`member`:`members`]}),(0,Z.jsx)(Qt,{}),(0,Z.jsxs)(Zt,{className:`text-destructive focus:text-destructive`,disabled:!a,onClick:()=>k(!0),children:[(0,Z.jsx)(L,{className:`mr-2 size-4`}),`Delete `,O(n),` `,n===1?`member`:`members`]})]})]})]})}),e,s&&(0,Z.jsx)(K.ActionGroup.Primary,{children:(0,Z.jsx)(K.Action,{fallbackVariant:`default`,label:`New member`,asChild:!0,primary:!0,children:(0,Z.jsxs)(`a`,{"aria-label":`New member`,className:`inline-flex items-center data-[control-shape=pill]:w-(--control-height) max-sm:data-[control-shape=pill]:px-0 sm:data-[control-shape=pill]:w-auto`,href:g,children:[(0,Z.jsx)(V,{className:l?`stroke-2!`:`sm:hidden`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`New member`})]})})}),(0,Z.jsx)(Qr,{open:f,onClose:pe,onComplete:U,onOpenChange:de}),(0,Z.jsx)(ar,{isLoading:F,memberCount:n,open:_,onConfirm:e=>void B(e),onOpenChange:y}),(0,Z.jsx)(or,{isLoading:F,memberCount:n,nql:r,open:x,search:i,onConfirm:e=>void ce(e),onOpenChange:S}),(0,Z.jsx)(sr,{isLoading:F||R,memberCount:n,newsletters:N,open:C,onConfirm:e=>void le(e),onOpenChange:w}),(0,Z.jsx)(cr,{isLoading:ie,memberCount:n,open:T,onConfirm:H,onExportBackup:ue,onOpenChange:k})]})},ia=({membershipsEnabled:e,onMemberCreated:t})=>{let{data:n,isLoading:r}=u(),{mutateAsync:i,isPending:a}=_(),o=l(),s=(0,X.useCallback)(async()=>{if(!(!n||a))try{await i({email:n.email,name:n.name}),b.success(`You've been added as a member`),await t?.()}catch(e){o(e)}},[i,n,o,a,t]);return e?(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(Ke,{actions:(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 sm:flex-row`,children:[(0,Z.jsx)(W,{asChild:!0,children:(0,Z.jsx)(T,{to:`/members/new?back=%2Fmembers`,children:`New member`})}),(0,Z.jsx)(W,{disabled:a||r||!n,variant:`outline`,onClick:()=>void s(),children:a?`Adding...`:`Add yourself as a member`})]}),(0,Z.jsxs)(`p`,{className:`text-sm leading-tight text-pretty text-muted-foreground`,children:[`Already have members?`,` `,(0,Z.jsx)(T,{className:`font-medium text-foreground underline-offset-4 hover:underline`,to:`/members/import`,children:`Import with CSV`})]})]}),description:`Use memberships to allow your readers to sign up and subscribe to your content.`,title:`Start building your audience`,children:(0,Z.jsx)(fe,{})})}):(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(Ke,{actions:(0,Z.jsx)(W,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/settings/members`,children:`Membership settings`})}),description:`Adjust your membership settings to start adding members.`,title:`Memberships have been disabled`,children:(0,Z.jsx)(fe,{})})})},aa=$t.extend({route:Et(`members`),filter:wt(Ct(),Ct().nullable()).refine(e=>typeof e.filter==`string`&&e.filter.length>0)}),oa=`A view with this name already exists`,sa=`Saved view could not be found for update`,ca=`Multiple saved views matched update target`,la=`Saved view could not be found for delete`,ua=`Multiple saved views matched delete target`;function da(e){return aa.safeParse(e).success}function fa(e){let t=Lt(e);return t.ok?{ok:!0,views:t.views.filter(da)}:t}function pa(e,t){return{name:e.trim(),route:`members`,filter:{filter:t}}}function ma(e,t,n,r){let i=pa(t,n);if(r){let t=zt(e,r);if(t.length===0)throw Error(sa);if(t.length>1)throw Error(ca);let n=t[0];if(Wt(e,i,n))throw Error(oa);return e.map((e,t)=>t===n?i:e)}if(Wt(e,i))throw Error(oa);return[...e,i]}function ha(e,t){let n=zt(e,t);if(n.length===0)throw Error(la);if(n.length>1)throw Error(ua);let r=n[0];return e.filter((e,t)=>t!==r)}var ga=`Cannot modify saved views because shared_views is invalid`;function _a(e){return Bt(e?.settings??null,`shared_views`)??`[]`}function va(){let{data:e}=Ht(),t=l(),n=_a(e),r=(0,X.useRef)(null),i=(0,X.useMemo)(()=>fa(n),[n]);return(0,X.useEffect)(()=>{i.ok||r.current===n||(r.current=n,t(i.error,{withToast:!1}))},[t,i,n]),i.ok?i.views:[]}function ya(){let{data:e}=Ht(),{mutateAsync:t}=Vt(),n=l();return(0,X.useCallback)(async(r,i,a)=>{let o=Lt(_a(e));if(!o.ok){let e=Error(ga,{cause:o.error});throw n(e,{withToast:!1}),e}let s=ma(o.views,r,i,a);try{await t([{key:`shared_views`,value:JSON.stringify(s)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function ba(){let{data:e}=Ht(),{mutateAsync:t}=Vt(),n=l();return(0,X.useCallback)(async r=>{let i=Lt(_a(e));if(!i.ok){let e=Error(ga,{cause:i.error});throw n(e,{withToast:!1}),e}let a=ha(i.views,r);try{await t([{key:`shared_views`,value:JSON.stringify(a)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function xa(e,t){return(0,X.useMemo)(()=>!t||e.length===0?null:e.find(e=>e.filter.filter===t)??null,[e,t])}var Sa=({filter:e,existingViews:t,activeView:n,onDeleted:r,onClose:i})=>{let[a,o]=(0,X.useState)(()=>n?.name??``),[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[p,m]=(0,X.useState)(!1),h=ya(),g=ba(),_=!!n,v=async()=>{let r=a.trim();if(!r){c(`Please enter a name`);return}if(!_&&t.find(e=>e.name.trim().toLowerCase()===r.toLowerCase())){c(`A view with this name already exists`);return}u(!0);try{await h(r,e,n??void 0),i()}catch(e){c(e instanceof Error?e.message:`Failed to save view`)}finally{u(!1)}},y=async()=>{if(n){f(!0);try{await g(n),i(),r?.()}catch(e){c(e instanceof Error?e.message:`Failed to delete view`)}finally{f(!1)}}};return(0,Z.jsx)(Ue,{align:`end`,className:`w-72`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:_?`Edit view`:`Save view`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(Ze,{placeholder:`View name`,value:a,autoFocus:!0,onChange:e=>{o(e.target.value),s&&c(``)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),s&&(0,Z.jsx)(`p`,{className:`text-xs text-red-500`,children:s})]}),_?p?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Delete view?`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(W,{size:`sm`,variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(W,{disabled:d,size:`sm`,variant:`destructive`,onClick:()=>void y(),children:d?`Deleting...`:`Delete`})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(W,{className:`text-red hover:bg-red/5 hover:text-red`,size:`sm`,variant:`ghost`,onClick:()=>m(!0),children:`Delete`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(W,{size:`sm`,variant:`outline`,onClick:i,children:`Cancel`}),(0,Z.jsx)(W,{disabled:l||!a.trim(),size:`sm`,onClick:()=>void v(),children:l?`Saving...`:`Save`})]})]}):(0,Z.jsx)(W,{className:`w-full`,disabled:l||!a.trim(),onClick:()=>void v(),children:l?`Saving...`:`Save`})]})})},Ca=({filter:e,existingViews:t,activeView:n,onDeleted:r})=>{let[i,a]=(0,X.useState)(!1),o=n?`edit:${n.name}:${n.filter.filter}`:`save:${e}`;return(0,Z.jsxs)(We,{open:i,onOpenChange:a,children:[(0,Z.jsx)(He,{asChild:!0,children:(0,Z.jsx)(Pt.Action,{variant:`outline`,children:n?`Edit view`:`Save view`})}),i&&(0,Z.jsx)(Sa,{activeView:n,existingViews:t,filter:e,onClose:()=>a(!1),onDeleted:r},o)]})},wa=Bn(oi);function Ta(e,t){let n=e.operators?.length?e.operators:wa,r=t===`whole`?oi:t?[...bn[t].operators,...oi]:null,i=r?n.filter(e=>pn(r,e.value)):n,a=i.map(e=>e.value);return{options:i,ids:a,fallback:a[0]??`is-set`}}var Ea=({field:e,values:t,onChange:n,operator:r,onOperatorChange:i,readOnly:a})=>{let{data:o}=er(),s=o??[],c=ri(e.key??``)?.key??``,l=s.find(e=>e.key===c),u=l?(Gn(l.type)??[]).map(({key:e,label:t})=>({value:e,label:t})):[],d=e.label??l?.name??`Custom field`,f=u.length>0,[p=``,...m]=t,h=l?hi(l.type,p):void 0,g=f?h??`whole`:null,{options:_,ids:v,fallback:y}=Ta(e,g);(0,X.useEffect)(()=>{a||!i||v.includes(r)||i(y)},[a,r,v,y,i]);let b=!pn(oi,r),x=[{value:``,label:`Any`},...u],S=(0,X.useMemo)(()=>t.slice(1).filter(e=>e!==``),[t]);return(0,Z.jsxs)(Z.Fragment,{children:[f&&(0,Z.jsx)(jt,{ariaLabel:`${d} part`,options:x,readOnly:a,testId:`custom-field-filter-subfield`,value:p,onChange:e=>{n(l&&hi(l.type,e)===h?[e,...m]:[e])}}),i&&(0,Z.jsx)(jt,{ariaLabel:`${d} operator`,options:_,readOnly:a,testId:`custom-field-filter-operator`,value:r,onChange:i}),b&&g===`set`&&(0,Z.jsx)(Nt,{ariaLabel:`${d} value`,options:Wn(S),placeholder:`Select countries...`,readOnly:a,searchPlaceholder:`Search countries...`,testId:`custom-field-filter-value`,values:S,onChange:e=>n([p,...e])}),b&&g!==`set`&&(0,Z.jsx)(Mt,{ariaLabel:`${d} value`,placeholder:`Enter value...`,readOnly:a,testId:`custom-field-filter-value`,value:m[0]??``,onChange:e=>n([p,e])})]})};function Da({newsletters:e,customFields:t}={}){return[{resolved:!0,fields:Ki},ki(e),xi(t)]}function Oa(e={}){return!e.newsletters&&!e.customFields?qi:In(Da(e))}function ka(e,t={}){return On(e,Da(t))}var Aa=[`name`,`email`,`label`,`subscribed`,`last_seen_at`,`created_at`,`signup`],ja=[`tier_id`,`status`,Fi,`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`],Ma=[`email_count`,`email_opened_count`,`email_open_rate`,`emails.post_id`,`opened_emails.post_id`,`clicked_links.post_id`,`newsletter_feedback`],Na=[],Pa=[],Fa=[],Ia=[],La=[],Ra=5,za={"is-any":`is any of`,"is-not-any":`is none of`,"does-not-contain":`does not contain`,...hn,1:`More like this`,0:`Less like this`};function Ba(e,t){return{options:e,valueSource:t}}function Va(e){let t=new Map,n=[],r=[];for(let t of e)t.redemption_type===`retention`&&(t.cadence===`month`?n.push(t.id):t.cadence===`year`&&r.push(t.id));return n.length>0&&t.set(`retention:month`,n),r.length>0&&t.set(`retention:year`,r),t}function Ha(e){return Array.isArray(e.metadata?.offerIds)?e.metadata.offerIds.filter(e=>typeof e==`string`):null}function Ua(e){let t=[],n=Va(e);for(let n of e)n.redemption_type!==`retention`&&t.push({value:n.id,label:n.name});return n.has(`retention:month`)&&t.push({value:`retention:month`,label:`Monthly Retention`,metadata:{offerIds:n.get(`retention:month`)}}),n.has(`retention:year`)&&t.push({value:`retention:year`,label:`Yearly Retention`,metadata:{offerIds:n.get(`retention:year`)}}),t}function Wa(e,t){let n=[],r=new Set;for(let i of t){let t=Ha(i);t&&t.length>0&&t.every(t=>e.includes(t))&&(n.push(String(i.value)),t.forEach(e=>{r.add(e)}))}for(let t of e)r.has(t)||n.push(t);return n}function Ga(e,t){let n=[];for(let r of e){let e=t.find(e=>e.value===r),i=e?Ha(e):null;i?n.push(...i):n.push(r)}return[...new Set(n)]}function Ka(e){return new Map(e.map(e=>[e.id,e.name]))}function qa(e,t,n){let r=e.map(e=>t.find(t=>t.value===e)).filter(e=>!!e);return r.length===1?r[0].label:r.length>1?`${r.length} selected`:e.length===1?n.get(e[0])??`Select...`:e.length>1?`${e.length} selected`:`Select...`}function Ja({labelValueSource:e,tierValueSource:t,newsletters:n=Na,hydratedNewsletterSlugs:r=Pa,hasMultipleTiers:i=!1,paidMembersEnabled:a=!1,emailFiltersEnabled:o=!1,postValueSource:s,emailValueSource:c,offers:l=Fa,multipleActiveSubscriptionsCount:u=0,membersTrackSources:d=!1,emailTrackOpens:f=!1,emailTrackClicks:p=!1,customFields:m=Ia,archivedCustomFields:h=La,siteTimezone:g=`UTC`}){let _=(0,X.useMemo)(()=>Oa({newsletters:[...n,...r.filter(e=>!n.some(t=>t.slug===e)).map(e=>({slug:e,name:e}))],customFields:[...m,...h]}),[n,r,m,h]);return(0,X.useMemo)(()=>{function v(e,t={},n=za){let r=En(e,`newsletters`)?_[`newsletters.:slug`]:En(e,`metafields.`)?_[`metafields.:namespace.:key`]:void 0,i=_[e]??r;return{key:e,...i.ui,icon:Rn[i.ui.icon],operators:Bn(i.operators,{labels:{...n,...i.operatorLabels}}),...`options`in i&&i.options?{options:i.options}:{},...t}}function y(e,t,n={}){let r=_[e],i=v(e,{defaultValue:t,...n});return gn(r)?{...i,customRenderer:kn(t)}:i}let b=[],x=n.filter(e=>e.status!==`archived`),S=new Set(x.map(e=>e.slug)),C=[...new Set(r)].map(e=>({slug:e,name:n.find(t=>t.slug===e)?.name??e})),w=C.filter(e=>!S.has(e.slug)),T=Ua(l),E=Ka(l),D=vn(g),O=x.length<=1,k={label:!!e,subscribed:O,signup:d},A=Aa.filter(e=>k[e]??!0).flatMap(t=>{switch(t){case`label`:return[v(t,{...Ba([],e),customRenderer:e=>X.createElement(gt,e)})];case`subscribed`:return[v(t),...C.map(e=>v(`newsletters.${e.slug}`,{label:e.name}))];case`last_seen_at`:case`created_at`:return[y(t,D)];case`signup`:return[v(t,Ba([],s))];default:return[v(t)]}});b.push({group:`Basic`,fields:A});let j=m.map(e=>v($(e),{label:e.name,icon:X.createElement(nr,{type:e.type,className:`size-4`}),renderOperatorInValue:!0,customRenderer:e=>X.createElement(Ea,e)})),M=h.map(e=>v($(e),{label:e.name,icon:X.createElement(ie,{className:`size-4`}),readOnly:!0,renderOperatorInValue:!0,customRenderer:e=>X.createElement(Ea,e)})),N=[...j,...M];if(N.length>0&&b.push({group:`Custom fields`,fields:N,previewLimit:Ra}),x.length>1){let e=[v(`subscribed`,{label:`All newsletters`,options:[{value:`subscribed`,label:`Subscribed to at least one`},{value:`unsubscribed`,label:`Unsubscribed from all`},{value:`email-disabled`,label:`Email disabled`}]})];for(let t of x)e.push(v(`newsletters.${t.slug}`,{label:t.name}));for(let t of w)e.push(v(`newsletters.${t.slug}`,{label:t.name}));b.push({group:`Newsletters`,fields:e})}if(a){let e={tier_id:i,[Fi]:u>0,conversion:d,offer_redemptions:l.length>0},n=ja.filter(t=>e[t]??!0).map(e=>{switch(e){case`tier_id`:return v(e,Ba([],t));case`status`:return v(e,{options:[..._.status?.options??[],{value:`gift`,label:`Gift subscription`}]});case`subscriptions.start_date`:case`subscriptions.current_period_end`:return y(e,D);case`conversion`:return v(e,Ba([],s));case`offer_redemptions`:return v(e,{options:T,customValueRenderer:e=>qa(e,T,E)});default:return v(e)}});b.push({group:`Subscription`,fields:n})}if(o){let e={email_open_rate:f,"opened_emails.post_id":f,"clicked_links.post_id":p},t=new Set([`email_count`,`email_opened_count`,`email_open_rate`]),n=Ma.filter(t=>e[t]??!0).map(e=>t.has(e)?v(e):v(e,Ba([],c)));b.push({group:`Email`,fields:n})}return b},[_,o,c,p,f,i,e,d,u,n,l,r,a,s,g,t])}var Ya=[],Xa=[],Za=[],Qa=[];function $a(e,t){let n=[...new Set(e.map(e=>e.field).map(e=>Dn(e,t)).filter(e=>e!==null))].sort().join(`
|
|
3
3
|
`);return(0,X.useMemo)(()=>n?n.split(`
|
|
4
4
|
`):Qa,[n])}function eo(e,t){return e.map(e=>e.field===`offer_redemptions`?{...e,values:t(e.values)}:e)}var to=({filters:e,multipleActiveSubscriptionsCount:t,nql:n,onFiltersChange:r,savedViews:i=[],activeView:a,iconOnly:o=!1})=>{let{data:s}=S({}),{data:c}=kt({searchParams:{limit:`100`}}),{data:l}=Ht({}),u=l?.settings||[],d=It()===!0,f=Gt()??!0,p=Yt()===!0,m=qt()===!0,h=Jt()===!0,g=rn(u),_=c?.newsletters??Za,v=(0,X.useMemo)(()=>s?.offers??Ya,[s?.offers]),y=(0,X.useMemo)(()=>Ua(v),[v]),b=$a(e,`newsletters.`),x=(0,X.useMemo)(()=>eo(e,e=>Wa(e,y)),[e,y]),C=(0,X.useCallback)(e=>{r(eo(e,e=>Ga(e,y)))},[r,y]),w=ut(),T=ht(),E=ft(),{valueSource:D,hasMultipleTiers:O}=mt(),{data:k}=er(),j=k??Xa,N=(0,X.useMemo)(()=>j.filter(e=>e.status===`active`),[j]),P=$a(e,ni),F=(0,X.useMemo)(()=>new Set(P),[P]),I=Ja({newsletters:_,hydratedNewsletterSlugs:b,hasMultipleTiers:O,paidMembersEnabled:d,emailFiltersEnabled:f,labelValueSource:E,tierValueSource:D,offers:v,multipleActiveSubscriptionsCount:t,postValueSource:w,emailValueSource:T,membersTrackSources:p,emailTrackOpens:m,emailTrackClicks:h,siteTimezone:g,customFields:N,archivedCustomFields:(0,X.useMemo)(()=>j.filter(e=>e.status===`archived`&&F.has(`${e.namespace}.${e.key}`)).map(e=>({namespace:e.namespace,key:e.key,name:e.name,type:e.type})),[j,F])}),L=e.length>0,{isAdmin7:ee}=M(),te=L?(0,Z.jsxs)(Pt.Actions,{"data-testid":`members-filter-actions`,gap:`sm`,children:[(0,Z.jsx)(Pt.Action,{className:A(`hidden items-center lg:inline-flex`,!ee&&`text-muted-foreground hover:text-foreground`),type:`button`,variant:ee?`ghost`:`outline`,onClick:()=>r([]),children:`Clear`}),n&&(0,Z.jsx)(Ca,{activeView:a,existingViews:i,filter:n,onDeleted:()=>r([])})]}):void 0;return(0,Z.jsx)(At,{addButton:(0,Z.jsx)(At.Trigger,{collapseLabel:o,fallbackClassName:`bg-background`}),allowMultiple:!0,className:A(`[&>button]:order-last`,L?`sm:!pr-40`:`w-auto`),clearButton:te,fields:I,filters:x,keyboardShortcut:`f`,popoverAlign:`start`,popoverContentClassName:`z-[80] w-[280px] [&_[data-slot=command-list]]:max-h-[450px]`,showClearButton:L,showSearchInput:!0,onChange:C})},no=({search:e,onSearchChange:t,autoFocus:n=!1,collapsible:r=!1,ariaLabel:i=`Search members`})=>{let{controlShape:a,isAdmin7:o}=M(),[s,c]=(0,X.useState)(!1),l=(0,X.useRef)(!1),u=!r||s||e.length>0,d=i===`Search members mobile`?`members-mobile-search-input`:`members-search-input`,f=(0,Z.jsxs)(et,{className:A(`h-(--control-height) min-w-0`,r?`w-full`:`basis-full lg:w-[180px] lg:basis-auto xl:w-[240px]`),shape:a,variant:o?`secondary`:`default`,children:[(0,Z.jsx)($e,{children:(0,Z.jsx)(U,{className:`size-4`,strokeWidth:r?2:1.75})}),(0,Z.jsx)(Qe,{"aria-label":i,autoFocus:n||r&&s,className:`!h-[34px] min-w-0`,"data-testid":d,placeholder:`Search members...`,value:e,onBlur:()=>{r&&!e&&c(!1)},onChange:e=>t(e.target.value),onFocus:()=>{r&&c(!0)},onKeyDown:t=>{r&&t.key===`Escape`&&!e&&(t.preventDefault(),t.stopPropagation(),l.current=!0,c(!1))}})]});return r?(0,Z.jsx)(N,{className:A(`shrink-0 transition-[width] duration-(--duration-base) motion-reduce:transition-none`,u?`w-[160px] sm:w-[180px] xl:w-[240px]`:`w-(--control-height)`),children:u?f:(0,Z.jsx)(K.Action,{ref:e=>{e&&l.current&&(e.focus(),l.current=!1)},label:`Search members`,type:`button`,iconOnly:!0,onClick:()=>c(!0),children:(0,Z.jsx)(U,{className:`size-4 stroke-2!`})})}):f},ro=({children:e,description:t,title:n,url:r})=>(0,Z.jsx)(`a`,{className:`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,href:r,rel:`noopener noreferrer`,target:`_blank`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-6`,children:[e,(0,Z.jsxs)(`div`,{className:`flex flex-col leading-tight`,children:[(0,Z.jsx)(`h4`,{className:`text-md font-medium tracking-normal text-pretty text-foreground`,children:n}),(0,Z.jsx)(`p`,{className:`mt-1.5 text-sm leading-tight text-pretty text-muted-foreground`,children:t})]})]})}),io=`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md p-4 opacity-80 transition-all group-hover/card:opacity-100`,ao=()=>(0,Z.jsxs)(`div`,{className:`grid w-full grid-cols-1 gap-4 lg:grid-cols-2`,children:[(0,Z.jsx)(ro,{description:`Learn how to turn anonymous visitors into logged-in members with memberships in Ghost.`,title:`Building your audience with subscriber signups`,url:`https://ghost.org/resources/build-audience-subscriber-signups/`,children:(0,Z.jsx)(`div`,{className:A(io,`bg-gradient-to-tr from-[#22C55E]/20 to-[#84CC16]/20`),children:(0,Z.jsx)(ue,{className:`text-[#16A34A]`,size:20,strokeWidth:1.5})})}),(0,Z.jsx)(ro,{description:`Starting from zero? Use this guide to find your founding audience members.`,title:`Get your first 100 email subscribers`,url:`https://ghost.org/resources/first-100-email-subscribers/`,children:(0,Z.jsx)(`div`,{className:A(io,`bg-gradient-to-tl from-[#A855F7]/20 to-[#EC4899]/20`),children:(0,Z.jsx)(B,{className:`text-[#DB2777]`,size:20,strokeWidth:1.5})})})]});function oo(e,t){let n=new URLSearchParams;t&&n.set(`back`,t);let r=n.toString();return`/members/${e}${r?`?${r}`:``}`}var so={left:`100%`};function co(e){if(!e)return{text:`Unknown`,isKnown:!1};try{let t=JSON.parse(e);return t.country?t.country_code===`US`&&t.region?{text:`${t.region}, US`,isKnown:!0}:{text:t.country,isKnown:!0}:{text:`Unknown`,isKnown:!1}}catch{return{text:`Unknown`,isKnown:!1}}}function lo(e){switch(e){case`paid`:return`Paid`;case`comped`:return`Complimentary`;case`gift`:return`Gift`;default:return`Free`}}function uo(e){return e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey}function fo(e,t){window.open(`#${oo(e,t)}`,`_blank`,`noopener`)}function po({item:e,backPath:t,onClick:n}){return(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(Te,{className:`size-8 min-w-8`,...pt(e),src:e.avatar_image}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(T,{className:`block min-w-0 cursor-pointer`,to:oo(e.id,t),onClick:n?t=>{if(uo(t)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation(),n(e.id)}:void 0,children:(0,Z.jsx)(`span`,{className:`block truncate text-md font-semibold`,children:e.name||e.email||`Anonymous`})}),e.name&&e.email&&(0,Z.jsx)(`div`,{className:`truncate text-muted-foreground`,"data-testid":`member-email`,children:e.email})]})]})}function mo({status:e,tiers:t}){let n=t?.map(e=>e.name).join(`, `);return(0,Z.jsx)(`div`,{className:`flex min-w-0 justify-start`,children:(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate`,children:lo(e)}),n&&(0,Z.jsx)(`div`,{className:`truncate text-sm text-muted-foreground`,children:n})]})})}function ho({emailOpenRate:e}){let t=e!=null;return(0,Z.jsx)(`div`,{className:A(`text-base`,t?`text-foreground`:`text-muted-foreground`),children:t?j(e/100):`N/A`})}function go({geolocation:e}){let t=co(e);return(0,Z.jsx)(`div`,{className:A(`truncate text-base`,t.isKnown?`text-foreground`:`text-muted-foreground`),children:t.text})}function _o({createdAt:e}){return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-base`,children:Vr.default.utc(e).format(`D MMM YYYY`)}),(0,Z.jsx)(`div`,{className:`text-base text-muted-foreground`,children:Vr.default.utc(e).fromNow()})]})}function vo({column:e,member:t,timezone:n}){let r=e.getValue(t,n);return r?(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate text-base`,title:r.text,children:r.text}),r.subtext&&(0,Z.jsx)(`div`,{className:`truncate text-base text-muted-foreground`,title:r.subtext,children:r.subtext})]}):(0,Z.jsx)(`span`,{className:`text-base text-muted-foreground`,children:`-`})}var yo=(0,X.forwardRef)(function({item:e,activeColumns:t,backPath:n,columnStyles:r,showPinnedEdge:i,showEmailOpenRate:a,timezone:o,onClick:s,...c},l){let u=t=>{if(uo(t)){fo(e.id,n);return}s(e.id)},d=t=>{t.button===1&&(t.preventDefault(),fo(e.id,n))};return(0,Z.jsxs)(J,{...c,ref:l,className:A(`group cursor-pointer`,c.className),"data-testid":`members-list-item`,onAuxClick:d,onClick:u,children:[(0,Z.jsxs)(Y,{className:A(`min-w-0 bg-background px-4 py-3 group-hover:bg-table-row-hover max-sm:!w-full max-sm:!min-w-0 lg:sticky lg:left-0 lg:z-20`),children:[(0,Z.jsx)(po,{backPath:n,item:e,onClick:s}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] group-hover:opacity-0 lg:block`,style:{...so,background:`linear-gradient(to right, var(--background) 0px, color-mix(in hsl, var(--background) 78%, transparent) 6px, color-mix(in hsl, var(--background) 28%, transparent) 16px, transparent 24px)`}}),(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] opacity-0 group-hover:opacity-100 lg:block`,style:{...so,background:`linear-gradient(to right, var(--table-row-hover) 0px, color-mix(in hsl, var(--table-row-hover) 78%, transparent) 6px, color-mix(in hsl, var(--table-row-hover) 28%, transparent) 16px, transparent 24px)`}})]})]}),(0,Z.jsx)(Y,{className:`hidden px-4 py-3 sm:table-cell`,style:r.status,children:(0,Z.jsx)(mo,{status:e.status,tiers:e.tiers})}),a&&(0,Z.jsx)(Y,{className:`hidden px-4 py-3 lg:table-cell`,style:r.openRate,children:(0,Z.jsx)(ho,{emailOpenRate:e.email_open_rate})}),(0,Z.jsx)(Y,{className:`hidden px-4 py-3 lg:table-cell`,style:r.location,children:(0,Z.jsx)(go,{geolocation:e.geolocation})}),(0,Z.jsx)(Y,{className:`hidden px-4 py-3 lg:table-cell`,style:r.created,children:(0,Z.jsx)(_o,{createdAt:e.created_at})}),t.map(t=>(0,Z.jsx)(Y,{className:`hidden px-4 py-3 lg:table-cell`,style:r.dynamic,children:(0,Z.jsx)(vo,{column:t,member:e,timezone:o})},t.key))]})}),bo={left:`100%`,background:`linear-gradient(to right, var(--members-sticky-fade-base) 0px, color-mix(in hsl, var(--members-sticky-fade-base) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-fade-base) 28%, transparent) 16px, transparent 24px)`},xo=({activeColumns:e,columnStyles:t,showEmailOpenRate:n})=>(0,Z.jsxs)(`colgroup`,{children:[(0,Z.jsx)(`col`,{className:`max-sm:!w-full max-sm:!min-w-0 sm:max-lg:!w-auto sm:max-lg:!min-w-0`,style:t.member}),(0,Z.jsx)(`col`,{className:`hidden sm:table-column`,style:t.status}),n&&(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.openRate}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.location}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.created}),e.map(e=>(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.dynamic},e.key))]}),So=({activeColumns:e,className:t,columnStyles:n,headerRef:r,memberHeaderRef:i,showEmailOpenRate:a})=>(0,Z.jsx)(ct,{ref:r,className:A(`hidden bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,t),children:(0,Z.jsxs)(J,{children:[(0,Z.jsx)(q,{ref:i,className:`sticky left-0 z-[70] bg-transparent px-4 [--members-sticky-fade-base:var(--background)]`,style:n.member,children:`Member`}),(0,Z.jsx)(q,{className:`bg-transparent px-4`,style:n.status,children:`Status`}),a&&(0,Z.jsx)(q,{className:`bg-transparent px-4`,style:n.openRate,children:`Open rate`}),(0,Z.jsx)(q,{className:`bg-transparent px-4`,style:n.location,children:`Location`}),(0,Z.jsx)(q,{className:`bg-transparent px-4`,style:n.created,children:`Created`}),e.map(e=>(0,Z.jsx)(q,{className:`bg-transparent px-4`,style:n.dynamic,children:e.label},e.key))]})}),Co=({columnStyle:e,showPinnedEdge:t})=>(0,Z.jsxs)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 z-[70] overflow-visible bg-transparent [--members-sticky-fade-base:var(--background)]`,style:e,children:[(0,Z.jsxs)(lt,{className:`w-full table-fixed border-collapse`,children:[(0,Z.jsx)(`colgroup`,{children:(0,Z.jsx)(`col`,{style:{width:`100%`}})}),(0,Z.jsx)(ct,{className:`bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,children:(0,Z.jsx)(J,{children:(0,Z.jsx)(q,{className:`bg-transparent px-4`,children:`Member`})})})]}),t&&(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px w-[24px]`,style:bo})]}),wo={member:40,status:15,openRate:10,location:17.5,created:17.5},To={member:320,status:180,openRate:140,location:180,created:160},Eo=17.5,Do=220;function Oo(e){return Number.isFinite(e)?Math.max(0,Math.floor(e)):0}function ko({showEmailOpenRate:e,activeColumnCount:t}){let n=[{key:`member`,width:wo.member},{key:`status`,width:wo.status},...e?[{key:`openRate`,width:wo.openRate}]:[],{key:`location`,width:wo.location},{key:`created`,width:wo.created}],r=Oo(t),i=n.reduce((e,t)=>e+t.width,0),a=100+r*Eo,o=Eo/a*100,s=n.reduce((e,t)=>{let n=t.width/i*100;return e[t.key]=n/a*100,e},{member:0,status:0,openRate:0,location:0,created:0});return{tableWidthPercentage:a,minTableWidth:n.reduce((e,t)=>e+To[t.key],0)+r*Do,dynamicColumnWidthPercentage:o,baseColumnWidthPercentages:s,baseColumnMinWidths:{member:To.member,status:To.status,openRate:To.openRate,location:To.location,created:To.created},dynamicColumnMinWidth:Do}}function Ao(e){let t=(e,t)=>({width:`${e}%`,minWidth:`${t}px`});return{tableStyle:{"--members-table-width":`${e.tableWidthPercentage}%`,"--members-table-min-width":`${e.minTableWidth}px`},columnStyles:{member:t(e.baseColumnWidthPercentages.member,e.baseColumnMinWidths.member),status:t(e.baseColumnWidthPercentages.status,e.baseColumnMinWidths.status),openRate:t(e.baseColumnWidthPercentages.openRate,e.baseColumnMinWidths.openRate),location:t(e.baseColumnWidthPercentages.location,e.baseColumnMinWidths.location),created:t(e.baseColumnWidthPercentages.created,e.baseColumnMinWidths.created),dynamic:t(e.dynamicColumnWidthPercentage,e.dynamicColumnMinWidth)}}}var jo=({height:e})=>(0,Z.jsx)(`tr`,{"aria-hidden":`true`,style:{height:e},children:(0,Z.jsx)(`td`,{colSpan:999})}),Mo=(0,X.forwardRef)(function(e,t){return(0,Z.jsx)(J,{ref:t,...e,"aria-hidden":`true`,children:(0,Z.jsx)(Y,{className:`h-[72px] px-4 py-3`,colSpan:999,children:(0,Z.jsx)(`div`,{className:`h-full animate-pulse rounded-md bg-muted`,"data-testid":`loading-placeholder`})})})});function No({items:e,totalItems:t,backPath:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,isLoading:o,showEmailOpenRate:s=!0,activeColumns:c,timezone:l,pageHeaderRef:u,onRowClick:d}){let f=(0,X.useRef)(null),p=(0,X.useRef)(null),m=(0,X.useRef)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(null),[_,v]=(0,X.useState)(0),[y,b]=(0,X.useState)(0),[x,S]=(0,X.useState)(!1),{visibleItemCount:C,canLoadMore:w,loadMore:T}=ln(t),E=(0,X.useMemo)(()=>ko({showEmailOpenRate:s,activeColumnCount:c.length}),[c.length,s]),{tableStyle:O,columnStyles:k}=(0,X.useMemo)(()=>Ao(E),[E]);cn({parentRef:f,isLoading:o,resetOnNavigation:!0}),(0,X.useEffect)(()=>{let e=g.current;if(!e)return;let t=()=>{let t=e.scrollLeft;S(t>0),h.current&&(h.current.scrollLeft=t)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[c.length,e.length,s]),(0,X.useEffect)(()=>{let e=u?.current,t=p.current,n=m.current;if(!e||!t||!n){v(0),b(0);return}let r=e.style.paddingBottom,i=e.style.marginBottom,a=parseFloat(getComputedStyle(e).paddingBottom)||0,o=parseFloat(getComputedStyle(e).marginBottom)||0,s=()=>{r?e.style.setProperty(`padding-bottom`,r):e.style.removeProperty(`padding-bottom`),i?e.style.setProperty(`margin-bottom`,i):e.style.removeProperty(`margin-bottom`)},c=()=>{if(!window.matchMedia(`(min-width: 1024px)`).matches){s(),v(0),b(0);return}let r=t.getBoundingClientRect().height,i=n.getBoundingClientRect().width;e.style.setProperty(`padding-bottom`,`${a+r}px`,`important`),e.style.setProperty(`margin-bottom`,`${o-r}px`,`important`);let c=e.getBoundingClientRect().height;v(i),b(Math.max(c-r,0))};c();let l=new ResizeObserver(()=>{c()});return l.observe(e),l.observe(t),l.observe(n),window.addEventListener(`resize`,c),()=>{s(),l.disconnect(),window.removeEventListener(`resize`,c)}},[c.length,u,s]);let{visibleItems:A,spaceBefore:j,spaceAfter:M}=sn({items:e,totalItems:C,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,parentRef:f,estimateSize:()=>72}),N=D(),P=e=>{d?d(e):N(oo(e,n))};return(0,Z.jsxs)(`div`,{ref:f,className:`w-full min-w-0`,"data-testid":`members-list-scroll-root`,children:[(0,Z.jsx)(`div`,{className:`sticky z-[50] hidden overflow-visible bg-transparent lg:block`,style:{top:y},children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(Co,{columnStyle:_>0?{width:_}:k.member,showPinnedEdge:x}),(0,Z.jsx)(`div`,{ref:h,className:`w-full overflow-hidden`,style:_>0?{clipPath:`inset(0 0 0 ${_}px)`}:void 0,children:(0,Z.jsxs)(lt,{"aria-hidden":`true`,className:`w-full border-collapse lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,style:O,children:[(0,Z.jsx)(xo,{activeColumns:c,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsx)(So,{activeColumns:c,columnStyles:k,headerRef:p,memberHeaderRef:m,showEmailOpenRate:s})]})})]})}),(0,Z.jsx)(`div`,{ref:g,className:`w-full overflow-x-auto overflow-y-visible`,children:(0,Z.jsxs)(lt,{className:`w-full border-collapse max-sm:table-fixed sm:max-lg:table-auto lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,"data-testid":`members-list`,style:O,children:[(0,Z.jsx)(xo,{activeColumns:c,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsx)(So,{activeColumns:c,className:`lg:h-0 lg:overflow-hidden lg:[&_th]:pointer-events-none lg:[&_th]:h-0 lg:[&_th]:border-0 lg:[&_th]:p-0 lg:[&_th]:text-[0px] lg:[&_th]:leading-none lg:[&_th]:opacity-0 lg:[&_tr]:h-0 lg:[&_tr]:border-0`,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsxs)(st,{children:[(0,Z.jsx)(jo,{height:j}),A.map(({key:t,virtualItem:r,item:i,props:a})=>r.index>e.length-1?(0,Z.jsx)(Mo,{...a},t):(0,Z.jsx)(yo,{...a,activeColumns:c,backPath:n,columnStyles:k,item:i,showEmailOpenRate:s,showPinnedEdge:x,timezone:l,onClick:P},t)),(0,Z.jsx)(jo,{height:M})]})]})}),w&&(0,Z.jsx)(un,{isLoading:i,onClick:T})]})}function Po({count:e,hasResolvedCount:t,nql:n,search:r}){let i=D(),{data:a}=u(),{mutateAsync:o,isPending:s}=vt(),[c,l]=(0,X.useState)(null),d=Ri(n),f=!r&&(!n||d),p=(0,X.useMemo)(()=>Bi(a?.accessibility),[a?.accessibility]),m=c??p.dismissedCount??0,h=!d,g=f&&(d||e>m);return(0,X.useEffect)(()=>{let n=p.dismissedCount;!a||c!==null||s||n===void 0||!t||e>=n||(l(e),o(Hi(a,e,p.dismissedAt??new Date().toISOString())).then(()=>{l(null)}).catch(e=>{l(null),console.log(`Unable to update multiple active subscriptions banner dismissed count`,e)}))},[e,a,o,t,s,c,p.dismissedAt,p.dismissedCount]),{canDismiss:h,count:e,handleDismiss:(0,X.useCallback)(()=>{if(!a||s)return;let t=c;l(e),o(Hi(a,e,new Date().toISOString())).then(()=>{l(null)}).catch(()=>{l(t),b.error(`Unable to dismiss notification. Please try again.`)})},[e,a,o,s,c]),handleViewMembers:(0,X.useCallback)(()=>{i(Ut({filter:Ii}))},[i]),shouldShow:g}}var Fo=({count:e,hasResolvedCount:t,nql:n,search:r})=>{let i=Po({count:e,hasResolvedCount:t,nql:n,search:r});return i.shouldShow?(0,Z.jsx)(nn,{role:`status`,variant:`warning`,...i.canDismiss?{dismissible:!0,onDismiss:i.handleDismiss}:{dismissible:!1},children:(0,Z.jsxs)(`div`,{className:`flex flex-col items-baseline gap-3 pr-8 sm:flex-row`,children:[`We found `,O(i.count),` `,i.count===1?`member`:`members`,` with more than one active paid subscription.`,` `,(0,Z.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[i.canDismiss&&(0,Z.jsx)(`button`,{className:`font-semibold whitespace-nowrap !underline`,type:`button`,onClick:i.handleViewMembers,children:`View members`}),(0,Z.jsx)(`a`,{className:`font-semibold whitespace-nowrap underline`,href:`https://ghost.org/help/duplicate-subscription-warning/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]})}):null},Io=[`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`,Fi];function Lo(e,t){return t&&e.length===0?!1:!e.some(e=>Io.includes(e.field))}function Ro({isFetching:e,isFetchingNextPage:t}){return e&&!t}var zo=Ln(qi,`date`);function Bo(e,t=qi){return jn(e,t)}function Vo(e,t,n=qi){let r=zn(e??``);return r?Fn(wn(r,n,t)):[]}function Ho(e){let t=zn(e??``);return t?Cn(t,zo):!1}function Uo(e,t,n=qi){return Tn(e,n,t)}function Wo(e,{hasResolvedSettings:t,isLoadingSettings:n=!t,newsletters:r,customFields:i}){return e?n&&!t&&Ho(e)||!ka(e,{newsletters:r,customFields:i}):!1}function Go(e,t){return e.filter(e=>Bo(e,t))}function Ko({baseSearchParams:e,filters:t,search:n,timezone:r,fields:i}){let a=new URLSearchParams(e),o=Uo(Go(t,i),r,i);return a.delete(`filter`),a.delete(`search`),o&&a.set(`filter`,o),n&&a.set(`search`,n),a}function qo(e,t,n){let r=(0,X.useMemo)(()=>Oa({newsletters:t,customFields:n}),[t,n]),[i,a]=w(),o=(0,X.useRef)(null),s=(0,X.useRef)(!1),c=(0,X.useMemo)(()=>i.get(`filter`)??void 0,[i]),l=(0,X.useMemo)(()=>i.toString(),[i]),u=(0,X.useMemo)(()=>Go(Vo(c,e,r),r),[c,e,r]),[d,f]=(0,X.useState)(u),p=(0,X.useMemo)(()=>i.get(`search`)??``,[i]),m=(0,X.useMemo)(()=>Uo(Go(d,r),e,r),[d,e,r]);return(0,X.useEffect)(()=>{l!==o.current&&(s.current=o.current!==null,f(u),o.current=l)},[l,u]),(0,X.useEffect)(()=>{if(s.current){s.current=!1;return}if(o.current!==null&&l!==o.current)return;let t=Ko({baseSearchParams:i,filters:d,search:p,timezone:e,fields:r}),n=t.toString();n!==l&&(o.current=n,a(t,{replace:!0}))},[l,d,p,i,a,e,r]),{filters:d,nql:m,search:p,setFilters:(0,X.useCallback)((t,n={})=>{let s=n.replace??!0,c=Ko({baseSearchParams:i,filters:t,search:p,timezone:e,fields:r});f(t),o.current=c.toString(),a(c,{replace:s})},[p,i,a,e,r]),setSearch:(0,X.useCallback)((t,n={})=>{let s=n.replace??!0,c=Ko({baseSearchParams:i,filters:d,search:t,timezone:e,fields:r});o.current=c.toString(),a(c,{replace:s})},[d,i,a,e,r]),clearFilters:(0,X.useCallback)(({replace:t=!0}={})=>{let n=Ko({baseSearchParams:i,filters:[],search:p,timezone:e,fields:r});f([]),o.current=n.toString(),a(n,{replace:t})},[p,i,a,e,r]),clearAll:(0,X.useCallback)(({replace:t=!0}={})=>{let n=Ko({baseSearchParams:i,filters:[],search:``,timezone:e,fields:r});f([]),o.current=n.toString(),a(n,{replace:t})},[i,a,e,r]),hasFilterOrSearch:!!m||p.length>0}}var Jo=`newsletters`,Yo=[],Xo=[];function Zo(e){let t=Pn(e,Jo),{data:n,isError:r}=kt({searchParams:{limit:`100`},enabled:t}),{data:i,isError:a}=er();return{newsletters:!t||r?Yo:n?.newsletters,customFields:a?Xo:i}}function Qo({enabled:e}){let{data:t}=m({searchParams:{filter:Ii,limit:`1`,fields:`id`,order:`id`},defaultErrorHandler:!1,enabled:e,refetchOnMount:`always`,staleTime:0});return{count:t?.meta?.pagination?.total??0,hasResolvedCount:t!==void 0}}var $o=250,es=6,ts=({emailAnalyticsEnabled:e,hasStripeEnabled:t,membershipsEnabled:r,timezone:i})=>{let{isAdmin7:a}=M(),o=(0,X.useRef)(null),s=(0,X.useCallback)(e=>{o.current=e?.closest(`[data-list-page="header"]`)},[]),[c]=w(),{newsletters:l,customFields:u}=Zo(c.get(`filter`)??void 0),{filters:d,nql:f,search:m,setFilters:h,setSearch:g,hasFilterOrSearch:_,clearAll:v}=qo(i,l,u),y=E(),b=va(),x=xa(b,f),[S,C]=(0,X.useState)(a&&m.length>0),[T,D]=(0,X.useState)(!1),[k,j]=(0,X.useState)(m),F=yt(e=>{g(e)},$o),{count:I,hasResolvedCount:L}=Qo({enabled:t}),ee=(0,X.useMemo)(()=>Yi(d,{customFields:u}),[d,u]),te=(0,X.useMemo)(()=>Lo(d,f),[d,f]),{data:ne,isError:re,isFetching:ie,isFetchingNextPage:R,refetch:ae,fetchNextPage:oe,hasNextPage:z}=p({searchParams:(0,X.useMemo)(()=>Zi({filters:d,nql:f,search:m}),[d,f,m]),placeholderData:n}),se=Ro({isFetching:ie,isFetchingNextPage:R}),B=ne?.meta?.pagination?.total??0,ce=d.length>0,le=S,V=ce,H=_||B>0,ue=!_&&!se&&!re&&B<es;(0,X.useEffect)(()=>{j(m),F.cancel(),a&&m&&C(!0)},[m,F,a]);let de=e=>{j(e),F(e)},pe=()=>{if(S){C(!1),D(!1);return}D(!0),C(!0)},me=()=>{F.cancel(),j(``),v({replace:!1})},he=H&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(N,{className:`hidden lg:flex`,children:(0,Z.jsx)(no,{collapsible:a,search:k,onSearchChange:de})}),a?(0,Z.jsx)(K.Action,{"aria-expanded":S,className:`lg:hidden`,label:S?`Hide member search`:`Show member search`,iconOnly:!0,onClick:pe,children:(0,Z.jsx)(U,{})}):(0,Z.jsx)(W,{"aria-label":S?`Hide member search`:`Show member search`,className:A(`lg:hidden`,S&&`bg-secondary hover:bg-secondary`),variant:`outline`,onClick:pe,children:(0,Z.jsx)(U,{className:`size-4`})})]}),ge=H&&!ce&&(0,Z.jsx)(to,{activeView:x,filters:d,iconOnly:!a,multipleActiveSubscriptionsCount:I,nql:f,savedViews:b,onFiltersChange:h}),_e=H&&le&&(0,Z.jsx)(N,{className:`w-full lg:hidden`,children:(0,Z.jsx)(no,{ariaLabel:`Search members mobile`,autoFocus:T,search:k,onSearchChange:de})});return(0,Z.jsx)(N,{className:`size-full`,children:(0,Z.jsx)(P,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(on,{"data-testid":`members-page`,children:[(0,Z.jsx)(on.Header,{className:`py-4 sidebar:py-5`,children:(0,Z.jsxs)(`div`,{ref:s,className:`flex flex-col gap-4 sidebar:gap-6`,children:[(0,Z.jsxs)(K,{blurredBackground:!1,sticky:!1,children:[(0,Z.jsx)(K.Left,{children:(0,Z.jsxs)(K.Title,{children:[`Members`,` `,!se&&B>0&&(0,Z.jsx)(K.Count,{className:`hidden sm:inline`,children:O(B)})]})}),(0,Z.jsx)(K.Actions,{children:(0,Z.jsxs)(K.ActionGroup,{className:`ml-auto flex-wrap justify-end sm:ml-0 sm:flex-nowrap`,children:[he,!a&&ge,(0,Z.jsx)(ra,{canBulkDelete:te,hasFilterOrSearch:_,memberCount:B,nql:f,search:m,showMenu:H,showNewMember:H,onImportComplete:()=>{ae()},children:a&&ge})]})})]}),a&&_e,H&&(V||!a&&le)&&(0,Z.jsxs)(Pt,{className:A(`flex-col gap-4 lg:flex-row lg:items-center sidebar:gap-6 lg:gap-6`,!V&&`lg:hidden`),children:[!a&&_e,V&&(0,Z.jsx)(to,{activeView:x,filters:d,multipleActiveSubscriptionsCount:I,nql:f,savedViews:b,onFiltersChange:h})]}),t&&(0,Z.jsx)(Fo,{count:I,hasResolvedCount:L,nql:f,search:m})]})}),(0,Z.jsxs)(on.Body,{children:[se?(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(tt,{size:`lg`})}):re?(0,Z.jsxs)(`div`,{className:`mb-16 flex flex-1 flex-col items-center justify-center`,children:[(0,Z.jsx)(`h2`,{className:`mb-2 text-xl font-medium`,children:`Error loading members`}),(0,Z.jsx)(`p`,{className:`mb-4 text-muted-foreground`,children:`Please reload the page to try again`}),(0,Z.jsx)(W,{onClick:()=>window.location.reload(),children:`Reload page`})]}):ne?.members.length?(0,Z.jsx)(No,{activeColumns:ee,backPath:`${y.pathname}${y.search}`,fetchNextPage:()=>void oe(),hasNextPage:z,isFetchingNextPage:R,isLoading:ie&&!R,items:ne.members,pageHeaderRef:o,showEmailOpenRate:e,timezone:i,totalItems:B}):_?(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:(0,Z.jsx)(Ke,{actions:(0,Z.jsx)(W,{variant:`outline`,onClick:me,children:`Show all members`}),title:`No matching members found.`,children:(0,Z.jsx)(fe,{})})}):(0,Z.jsx)(ia,{membershipsEnabled:r,onMemberCreated:async()=>{await ae()}}),ue&&(0,Z.jsx)(`div`,{className:A(ne?.members.length&&`mt-8`),children:(0,Z.jsx)(ao,{})})]})]})})})},ns=()=>{let[e]=w(),{data:t,isLoading:n}=Ht({}),{data:r,isLoading:i}=C(),a=e.get(`filter`)??void 0,o=!!t?.settings,{newsletters:s,customFields:c}=Zo(a),l=Wo(a,{hasResolvedSettings:o,isLoadingSettings:n,newsletters:s,customFields:c});if(n||i||!t?.settings||!r?.config||l)return(0,Z.jsx)(N,{className:`size-full`,children:(0,Z.jsx)(P,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(on,{children:[(0,Z.jsx)(on.Header,{className:`py-4 sidebar:py-6`,children:(0,Z.jsx)(K,{blurredBackground:!1,sticky:!1,children:(0,Z.jsx)(K.Left,{children:(0,Z.jsx)(K.Title,{children:`Members`})})})}),(0,Z.jsx)(on.Body,{children:(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(tt,{size:`lg`})})})]})})});let u=rn(t.settings),d=Bt(t.settings,`members_signup_access`)!==`none`,f=r.config.emailAnalytics===!0,p=Kt(t.settings,r.config);return(0,Z.jsx)(ts,{emailAnalyticsEnabled:f,hasStripeEnabled:p,membershipsEnabled:d,timezone:u})};export{ns as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`
|
|
1
|
+
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`a5871a14-2d77-4ec5-841e-9b6d23707f0a`,e._sentryDebugIdIdentifier=`sentry-dbid-a5871a14-2d77-4ec5-841e-9b6d23707f0a`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{c as n,m as r,u as i}from"./hooks-0r7qxGEo.js";import{t as a}from"./jsx-runtime-Bm2_KH-0.js";import{n as o}from"./dist-pogVoW2G.js";import{s}from"./config-CRAZ4Civ.js";import{h as c}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as l}from"./router-provider-Cf-bcYZr.js";import{B as u,Ht as d,Kt as f,l as p}from"./index-RuRs_qGS.js";import{t as m}from"./fullscreen-close-button-CWSp-MsK.js";var h=e(t(),1),g=a(),_=`https://migrate.ghost.org`;function v(e){return e?`${_}?platform=${e}`:_}var y=()=>{let{"*":e}=c(),[t]=(0,h.useState)(()=>v(e||void 0)),a=(0,h.useRef)(null),y=l(),b=p(),x=i(),{data:S}=s(),{data:C}=f(),w=u(`csvContentImporter`),T=C?.settings??null,E=!!(d(T,`stripe_connect_account_id`)&&d(T,`stripe_connect_publishable_key`)&&d(T,`stripe_connect_livemode`)),D=S?.config.version.match(/^(\d+\.)?(\d+)/)?.[0];return(0,h.useEffect)(()=>{let e=async()=>{try{let[{integrations:e},{users:t}]=await Promise.all([x(n(`/integrations/`,{include:`api_keys`})),x(n(`/users/`,{filter:`roles.name:'Owner'`,limit:`1`,include:`roles`}))]),i=e.find(e=>e.slug===`self-serve-migration`)?.api_keys?.[0]?.secret,o=t[0]?.email;if(!i||!o)throw Error(`The self-serve migration integration or site owner is missing`);a.current?.contentWindow?.postMessage({request:`initialData`,response:{apiUrl:`${window.location.origin}${r().adminRoot}`.replace(/\/$/,``),apiKey:i,stripe:E,csvContentImporter:w,ghostVersion:D,ownerEmail:o}},_)}catch{if(!a.current)return;y(`/settings/migration`),o.error(`Error initialising migration. Please try again later.`)}},t=t=>{if(t.origin!==_)return;if(t.data?.request===`apiUrl`){e();return}let n=t.data?.route;typeof n==`string`&&y(n,{crossApp:b(n)})};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[w,x,D,b,y,E]),(0,g.jsxs)(`div`,{className:`fixed inset-0 z-50 bg-background`,children:[C&&S&&(0,g.jsx)(`iframe`,{ref:a,className:`absolute inset-0 size-full border-0`,src:t,title:`Migrate`}),(0,g.jsx)(m,{"aria-label":`Close`,className:`text-gray-700 hover:bg-gray-100 hover:text-gray-900`,onClick:()=>y(`/settings/migration`)})]})};export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`a56385b0-576b-4333-9ba5-99a82470017f`,e._sentryDebugIdIdentifier=`sentry-dbid-a56385b0-576b-4333-9ba5-99a82470017f`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{n as r}from"./dist-pogVoW2G.js";import{n as i}from"./heading-Ch2Mb19A.js";import{Dr as a,t as o}from"./button-CTHYSI-d.js";import{S as s,T as c,a as l,s as u}from"./routes-
|
|
1
|
+
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`a56385b0-576b-4333-9ba5-99a82470017f`,e._sentryDebugIdIdentifier=`sentry-dbid-a56385b0-576b-4333-9ba5-99a82470017f`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{n as r}from"./dist-pogVoW2G.js";import{n as i}from"./heading-Ch2Mb19A.js";import{Dr as a,t as o}from"./button-CTHYSI-d.js";import{S as s,T as c,a as l,s as u}from"./routes-DKfpFMfF.js";import{t as d}from"./skeleton-C1s6yr9e.js";import{n as f,t as p}from"./no-value-label-CKNmidLC.js";import{t as m}from"./switch-BppWscjz.js";import{i as h,n as g,r as _,t as v}from"./tabs-fHs3A8WC.js";import{t as y}from"./use-navigate-with-base-path-pweMCFf6.js";import{l as b}from"./content-formatters-C08JJbUJ.js";import{D as x,H as S,I as C,L as w,c as T,l as E,s as D,u as O}from"./use-activity-pub-queries-BgR1USeY.js";import"./layout-_g2xhB0L.js";import{a as k,i as A,n as j,r as M,t as N}from"./settings-DvgngbFt.js";var P=e(t(),1),F=n(),I=()=>{let{data:e,isLoading:t}=E(`index`),{data:n,isLoading:I}=O(`index`),L=t?[,,,,,].fill({apId:``,name:``,handle:``,avatarUrl:``}):e?.pages.flatMap(e=>e.accounts)??[],R=I?[,,,,,].fill({apId:``,name:``}):n?.pages.flatMap(e=>e.domains)??[],ee=T(`index`),z=w(`index`),[B,V]=(0,P.useState)(new Set),H=D(`index`),U=C(`index`),[W,G]=(0,P.useState)(new Set),[K,q]=(0,P.useState)(null),J=y(),{data:Y,isError:X,isLoading:Z,isSuccess:Q}=x(),$=S({onError:()=>{r.error(`Could not update sensitive media preference.`)}}),te=Y?.showSensitiveMedia??!1,ne=e=>{Q&&$.mutate({showSensitiveMedia:e})},re=e=>{V(t=>{let n=new Set([...t]);return n.add(e.apId),n}),z.mutate(e),r.success(`User unblocked`)},ie=e=>{V(t=>{let n=new Set([...t]);return n.delete(e.apId),n}),ee.mutate(e),r.success(`User blocked`)},ae=e=>{G(t=>{let n=new Set([...t]);return n.add(e.url),n}),U.mutate({url:e.url}),r.success(`Domain unblocked`)},oe=e=>{G(t=>{let n=new Set([...t]);return n.delete(e.url),n}),H.mutate({url:e.url}),r.success(`Domain blocked`)};return(0,F.jsx)(l,{children:(0,F.jsxs)(`div`,{className:`mx-auto max-w-[620px] py-[min(4vh,48px)]`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-between gap-8`,children:(0,F.jsx)(i,{children:`Moderation`})}),!X&&(0,F.jsx)(`div`,{className:`mt-6`,children:(0,F.jsxs)(A,{children:[(0,F.jsxs)(M,{children:[(0,F.jsx)(k,{children:`Show sensitive media`}),(0,F.jsx)(j,{children:`Display adult content or media marked as sensitive without a warning`})]}),(0,F.jsx)(N,{children:(0,F.jsx)(m,{"aria-label":`Show sensitive media`,checked:te,disabled:Z||!Q,onCheckedChange:ne})})]})}),(0,F.jsx)(`div`,{className:`mt-6`,children:(0,F.jsxs)(v,{defaultValue:`blocked_users`,variant:`underline`,children:[(0,F.jsxs)(_,{children:[(0,F.jsx)(h,{value:`blocked_users`,children:`Blocked users`}),(0,F.jsx)(h,{value:`blocked_domains`,children:`Blocked domains`})]}),(0,F.jsx)(g,{className:`mt-2`,value:`blocked_users`,children:!t&&L.length===0?(0,F.jsxs)(p,{children:[(0,F.jsx)(f,{children:(0,F.jsx)(a,{})}),(0,F.jsx)(`div`,{className:`mt-2 flex max-w-[400px] flex-col items-center gap-1 text-center`,children:(0,F.jsx)(`p`,{children:`When you block someone, they won't be able to follow you or interact with your content on the social web.`})})]}):L.map((e,n)=>(0,F.jsx)(c,{actor:e,isCurrentUser:!0,children:(0,F.jsx)(`div`,{children:(0,F.jsxs)(u,{onClick:t?void 0:()=>s(e.handle,J),children:[(0,F.jsx)(b,{author:{icon:{url:e.avatarUrl},name:e.name,handle:e.handle}}),(0,F.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,F.jsx)(`span`,{className:`block truncate font-semibold text-black dark:text-white`,children:t?(0,F.jsx)(d,{className:`w-24`}):e.name}),(0,F.jsx)(`span`,{className:`block truncate text-sm text-gray-600`,children:t?(0,F.jsx)(d,{className:`w-40`}):e.handle})]}),B.has(e.apId)?(0,F.jsx)(o,{className:`ml-auto min-w-[90px] text-red hover:bg-red/5! hover:text-red-400`,variant:`outline`,onClick:t=>{t.stopPropagation(),ie(e)},children:`Block`}):t?(0,F.jsx)(`div`,{className:`ml-auto w-16`,children:(0,F.jsx)(d,{})}):(0,F.jsx)(o,{className:`ml-auto min-w-[90px]`,variant:`destructive`,onClick:t=>{t.stopPropagation(),re(e)},onMouseEnter:()=>q(e.apId),onMouseLeave:()=>q(null),children:K===e.apId?`Unblock`:`Blocked`})]})})},e.apId?e.apId:`loading-${n}`))}),(0,F.jsx)(g,{className:`mt-[11px]`,value:`blocked_domains`,children:!I&&R.length===0?(0,F.jsxs)(p,{children:[(0,F.jsx)(f,{children:(0,F.jsx)(a,{})}),(0,F.jsx)(`div`,{className:`mt-2 flex max-w-[400px] flex-col items-center gap-1 text-center`,children:(0,F.jsx)(`p`,{children:`When you block a domain, all users from that domain won't be able to follow you or interact with your content.`})})]}):R.map((e,t)=>(0,F.jsxs)(u,{children:[(0,F.jsx)(`div`,{className:`flex min-w-0 flex-col`,children:(0,F.jsx)(`span`,{className:`block truncate font-semibold text-black dark:text-white`,children:I?(0,F.jsx)(d,{className:`w-48`}):new URL(e.url).hostname})}),W.has(e.url)?(0,F.jsx)(o,{className:`ml-auto min-w-[90px] text-red hover:bg-red/5! hover:text-red-400`,variant:`outline`,onClick:()=>oe(e),children:`Block`}):I?(0,F.jsx)(`div`,{className:`ml-auto w-16`,children:(0,F.jsx)(d,{})}):(0,F.jsx)(o,{className:`ml-auto min-w-[90px]`,variant:`destructive`,onClick:()=>ae(e),onMouseEnter:()=>q(e.url),onMouseLeave:()=>q(null),children:K===e.url?`Unblock`:`Blocked`})]},e.url?e.url:`loading-${t}`))})]})})]})})};export{I as default};
|
package/core/built/admin/assets/{navigation-modal-D0FBI5-m.js → navigation-modal-Bl02NjtO.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`a6cbb423-9580-42eb-93d8-afbe2fc3a16f`,e._sentryDebugIdIdentifier=`sentry-dbid-a6cbb423-9580-42eb-93d8-afbe2fc3a16f`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{c as n,g as r,u as i}from"./hooks-C-BDQ6Hs.js";import{t as a}from"./jsx-runtime-Bm2_KH-0.js";import{n as o}from"./offers-hV7zBtsI.js";import{Z as s}from"./shade-provider-DvrXKKQZ.js";import{t as c}from"./inline-Qoyy4r2g.js";import{D as l,ar as u,dt as d,t as f,v as p}from"./button-CTHYSI-d.js";import{i as m,n as h,t as g}from"./popover-r_3DwMi9.js";import{i as _,o as v,t as y}from"./field-DCPPrQDr.js";import{a as b,c as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./images-BSUWxquu.js";import{t as O}from"./input-BHb2A_DU.js";import{i as k,n as A,t as j}from"./use-url-input-DPJ592FB.js";import{t as M}from"./switch-BppWscjz.js";import{i as N,n as P,r as ee,t as F}from"./tabs-CDb_TceL.js";import{t as te}from"./settings-modal-3x4v8abr.js";import{B as I,Ut as L,Vt as R,ct as ne,ft as re,h as ie,ut as ae,vt as oe}from"./index-CuDhPtkB.js";import{t as se}from"./validator-DgUCXsE8.js";import{n as ce,t as le}from"./autocomplete-links-DKqd4ypg.js";import{t as ue}from"./use-settings-navigation-CO2nUqDW.js";import{n as z}from"./global-data-context-ogIy0FUG.js";import{t as de}from"./use-setting-group-Bf3vY8br.js";import{t as fe}from"./format-url-BlDIp2kF.js";var pe=e(se(),1),B=e(t(),1),V=[`public`,`members`,`paid`,`public_free`,`public_paid`,`public_only`,`free_members`,`none`],H=e=>!!(e&&!e.match(/^\s*$/)),me=e=>({...e,icon:e.icon||``,visibility:e.visibility||`public`,errors:{}}),he=({url:e,label:t,icon:n,visibility:r})=>({url:e.trim(),label:t.trim(),...n?.trim()?{icon:n.trim()}:{},...r&&r!==`public`?{visibility:r}:{}}),U=({items:e,setItems:t,blankUrl:n=`/`})=>{let r=(0,B.useCallback)(e=>!!(H(e.label)||e.url!==n||H(e.icon)),[n]),i=A({items:(0,B.useMemo)(()=>e.map(me),[e]),setItems:(0,B.useCallback)(e=>{t(e.map(he))},[t]),blank:{url:n,label:``,icon:``,visibility:`public`,errors:{}},canAddNewItem:r}),a=new RegExp(/^(\/|#|[a-zA-Z0-9-]+:)/),o=e=>{let t={},n=H(e.label),r=H(e.icon);return!n&&!r&&(t.label=`You must specify a label or icon`),(!e.url||e.url.match(/\s/)||!pe.default.isURL(e.url,{require_protocol:!0})&&!e.url.match(a))&&(t.url=`You must specify a valid URL or relative path`),e.visibility&&!V.includes(e.visibility)&&(t.visibility=`You must specify a valid visibility`),t},s=(e,t)=>{let n={...e.errors};return H(t.icon)&&(n.icon=void 0,n.label=void 0),{...e,...t,errors:n}},c=(e,t)=>{i.updateItem(e,e=>s(e,t))},l=()=>{let e=o(i.newItem);Object.values(e).some(e=>e)?i.setNewItem({...i.newItem,errors:e}):i.addItem()},u=e=>{i.removeItem(e)},d=(e,t)=>{i.moveItem(e,t)},f=(e,t)=>{e===`new`?i.setNewItem(e=>({...e,errors:{...e.errors,[t]:void 0}})):i.updateItem(e,e=>({...e,errors:{...e.errors,[t]:void 0}}))};return{items:i.items.map(({item:e,id:t})=>({...e,id:t})),updateItem:c,addItem:l,removeItem:u,moveItem:d,newItem:{...i.newItem,id:`new`},setNewItem:e=>i.setNewItem(t=>s(t,e)),clearError:f,validate:()=>{let e=!0;if(i.items.forEach(({item:t,id:n})=>{let r=o(t);Object.values(r).some(e=>e)&&(e=!1,i.updateItem(n,{...t,errors:r}))}),r(i.newItem)){let t=o(i.newItem);Object.values(t).some(e=>e)&&(e=!1,i.setNewItem({...i.newItem,errors:t}))}return e}}},W=a(),ge=({idPrefix:e,item:t,clearError:n,updateItem:r,uploadIcon:i})=>(0,W.jsx)(T,{className:`size-[38px]`,children:t.icon?(0,W.jsxs)(x,{children:[(0,W.jsx)(E,{alt:``,className:`size-[38px] rounded-lg object-contain p-2.5`,src:t.icon}),(0,W.jsx)(b,{className:`inset-0 flex items-center justify-center`,children:(0,W.jsx)(S,{"aria-label":`Remove navigation icon`,className:`size-full rounded-lg bg-black/75 p-0 text-white hover:bg-black/90 hover:text-white`,onClick:()=>{n?.(`icon`),r?.({icon:``})},children:(0,W.jsx)(l,{className:`size-4`})})})]}):(0,W.jsx)(w,{accept:{"image/*":[]},"aria-label":`Upload navigation icon`,className:`size-[38px] rounded-lg border-0 bg-muted p-0 text-muted-foreground hover:bg-muted hover:text-foreground`,id:`${e}-icon-${t.id}`,inputAriaLabel:`Upload navigation icon`,onDropAccepted:([e])=>void i?.(e).then(e=>{e&&r?.({icon:e})}),children:(0,W.jsx)(p,{"aria-hidden":`true`,className:`size-4`})})}),G={public:`Everyone`,members:`Members only`,paid:`Paid-members only`,public_free:`Public + free`,public_paid:`Public + paid`,public_only:`Public only`,free_members:`Free only`,none:`Hidden`},_e=V.map(e=>({value:e,label:G[e]})),ve=[{key:`public-visitors`,label:`Public visitors`},{key:`free-members`,label:`Free members`},{key:`paid-members`,label:`Paid members`}],ye={public:{"public-visitors":!0,"free-members":!0,"paid-members":!0},members:{"public-visitors":!1,"free-members":!0,"paid-members":!0},paid:{"public-visitors":!1,"free-members":!1,"paid-members":!0},public_free:{"public-visitors":!0,"free-members":!0,"paid-members":!1},public_paid:{"public-visitors":!0,"free-members":!1,"paid-members":!0},public_only:{"public-visitors":!0,"free-members":!1,"paid-members":!1},free_members:{"public-visitors":!1,"free-members":!0,"paid-members":!1},none:{"public-visitors":!1,"free-members":!1,"paid-members":!1}},be=[`paid`,`public_paid`],xe={"000":`none`,"001":`paid`,"010":`free_members`,"011":`members`,100:`public_only`,101:`public_paid`,110:`public_free`,111:`public`},Se=e=>_e.some(t=>t.value===e)?e:`public`,Ce=e=>G[e],we=(e,t)=>({...ye[e],...t?{}:{"paid-members":!1}}),Te=e=>xe[[e[`public-visitors`],e[`free-members`],e[`paid-members`]].map(e=>e?`1`:`0`).join(``)],Ee=({idPrefix:e,item:t,clearError:n,updateItem:r,showPaidVisibility:i})=>{let a=Se(t.visibility),o=Ce(a),s=`${e}-visibility-${t.id}`,c=`${s}-error`,l=we(a,i),d=e=>{n?.(`visibility`),r?.({visibility:e})},f=(e,t)=>{let n={...l,[e]:t};i||(n[`paid-members`]=n[`free-members`]);let r=Te(n);!i&&be.includes(r)||d(r)};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`label`,{className:`sr-only`,id:s,children:`Visibility`}),(0,W.jsxs)(ne,{children:[(0,W.jsx)(oe,{asChild:!0,children:(0,W.jsxs)(`button`,{"aria-describedby":t.errors.visibility?c:void 0,"aria-invalid":!!t.errors.visibility,"aria-labelledby":s,className:`flex h-[38px] w-full items-center justify-between rounded-lg border-transparent bg-gray-100 px-3 text-md text-black hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:outline-hidden dark:bg-gray-900 dark:text-white dark:hover:bg-gray-900`,"data-testid":`navigation-item-visibility`,type:`button`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:o}),(0,W.jsx)(u,{"aria-hidden":`true`,className:`size-4 opacity-80`})]})}),(0,W.jsx)(ae,{align:`end`,className:`z-[300] w-[190px] rounded-lg p-2`,sideOffset:6,children:(0,W.jsx)(`div`,{className:`flex flex-col`,children:ve.filter(e=>e.key!==`paid-members`||i).map(e=>{let t=l[e.key];return(0,W.jsxs)(re,{className:`flex cursor-pointer items-center justify-between gap-3 rounded-md px-2 py-1.5 text-sm text-gray-900 dark:text-gray-100`,onSelect:n=>{n.preventDefault(),f(e.key,!t)},children:[(0,W.jsx)(`span`,{children:e.label}),(0,W.jsx)(M,{"aria-label":e.label,checked:t,size:`sm`,onCheckedChange:t=>f(e.key,t),onClick:e=>e.stopPropagation()})]},e.key)})})})]}),t.errors.visibility&&(0,W.jsx)(`div`,{className:`mt-1 text-xs text-red`,id:c,role:`alert`,children:t.errors.visibility})]})},De=150,Oe=e=>{let t=0;return e.map(e=>{let n=e.items.map((e,n)=>({...e,index:t+n}));return t+=e.items.length,{label:e.label,items:n}})},ke=({baseUrl:e,value:t,loadSuggestions:n,onChange:r,onSubmit:i,onEdit:a,className:o,...c})=>{let l=j({baseUrl:e,nullable:!0,value:t,onChange:e=>r(e||``)}),[u,d]=(0,B.useState)(!1),[f,p]=(0,B.useState)([]),[_,v]=(0,B.useState)(-1),y=(0,B.useId)(),b=(0,B.useRef)(null),x=(0,B.useRef)(0),S=(0,B.useRef)(void 0),C=(0,B.useMemo)(()=>Oe(f),[f]),w=(0,B.useMemo)(()=>C.flatMap(e=>e.items),[C]),T=(0,B.useCallback)(e=>{let t=x.current+1;x.current=t,n(e).then(e=>{x.current===t&&(p(e),v(-1))}).catch(()=>{x.current===t&&p([])})},[n]);(0,B.useEffect)(()=>()=>clearTimeout(S.current),[]);let E=(0,B.useCallback)(e=>{d(!0),T(e)},[T]),D=(0,B.useCallback)(()=>{clearTimeout(S.current),x.current+=1,d(!1),p([]),v(-1)},[]),k=u&&w.length>0,A=t=>{let n=fe(t.value,e,!0);l.setDisplayValue(n.display),r(n.save||``),a?.(),D()},M=e=>{let t=e.target.value;l.setDraftValue(t),a?.(),d(!0),clearTimeout(S.current),S.current=setTimeout(()=>T(t),De)},N=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),!k){E(l.displayValue);return}let t=e.key===`ArrowDown`?1:-1,n=_+t<0?w.length-1:_+t>=w.length?0:_+t;v(n),document.getElementById(`${y}-option-${n}`)?.scrollIntoView({block:`nearest`});return}if(e.key===`Enter`){if(e.preventDefault(),k&&_>=0&&w[_]){A(w[_]);return}D(),l.commitValue(),i?.();return}if(e.key===`Escape`&&k){D();return}l.handleKeyDown(e)};return(0,W.jsxs)(g,{open:k,onOpenChange:e=>!e&&D(),children:[(0,W.jsx)(h,{asChild:!0,children:(0,W.jsx)(O,{...c,ref:b,"aria-activedescendant":_>=0?`${y}-option-${_}`:void 0,"aria-autocomplete":`list`,"aria-controls":k?y:void 0,"aria-expanded":k,autoComplete:`off`,className:o,role:`combobox`,value:l.displayValue,onBlur:()=>{D(),l.commitValue()},onChange:M,onFocus:e=>{l.handleFocus(e),e.target.value||E(``)},onKeyDown:N})}),(0,W.jsx)(m,{align:`start`,className:`max-h-72 w-(--radix-popover-trigger-width) overflow-y-auto p-0`,onInteractOutside:e=>{b.current&&e.target instanceof Node&&b.current.contains(e.target)&&e.preventDefault()},onMouseDown:e=>e.preventDefault(),onOpenAutoFocus:e=>e.preventDefault(),children:(0,W.jsx)(`div`,{"aria-label":`URL suggestions`,className:`p-1`,id:y,role:`listbox`,children:C.map(e=>(0,W.jsxs)(`div`,{"aria-label":e.label,className:`p-1.5`,role:`group`,children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`px-2 py-1.5 text-xs font-medium text-muted-foreground`,children:e.label}),e.items.map(t=>{let n=t.index===_;return(0,W.jsxs)(`div`,{"aria-selected":n,className:s(`cursor-pointer rounded-xs px-2 py-1.5`,n&&`bg-interactive-hover`),id:`${y}-option-${t.index}`,role:`option`,onClick:()=>A(t),onMouseMove:()=>v(t.index),children:[(0,W.jsx)(`span`,{className:`block truncate text-control text-foreground`,children:t.label}),t.description&&(0,W.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:t.description})]},`${e.label}-${t.index}`)})]},e.label))})})]})},K=`flex w-full items-start gap-3 [--control-height:38px]`,q={icon:`w-[38px] shrink-0`,label:`min-w-0 flex-[0.75]`,url:`min-w-0 flex-[1.25]`,visibility:`w-[190px] shrink-0`,action:`w-10 shrink-0`},J=`pt-1`,Ae=({baseUrl:e,value:t,className:n,id:r,onChange:i,onEdit:a,onSubmit:o,...s})=>{let c=j({baseUrl:e,nullable:!0,value:t,onChange:e=>i(e||``)});return(0,W.jsx)(O,{...s,className:n,id:r,value:c.displayValue,onBlur:c.commitValue,onChange:e=>{c.setDraftValue(e.target.value),a?.()},onFocus:c.handleFocus,onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault(),c.commitValue(),o?.();return}c.handleKeyDown(e)}})},Y=({baseUrl:e,idPrefix:t,item:n,loadSuggestions:r,updateItem:i,uploadIcon:a,addItem:o,clearError:l,labelPlaceholder:u,unstyled:d,textFieldClasses:f,action:p,showIcon:m,showPaidVisibility:h,showVisibility:g,suggestionsEnabled:b,className:x,...S})=>(0,W.jsxs)(`div`,{className:s(K,x),"data-testid":`navigation-item-editor`,...S,children:[m&&(0,W.jsx)(`div`,{className:s(`flex flex-col`,q.icon,`pt-1`),children:(0,W.jsx)(ge,{clearError:l,idPrefix:t,item:n,updateItem:i,uploadIcon:a})}),(0,W.jsx)(`div`,{className:s(`flex`,q.label,J),children:(0,W.jsxs)(y,{className:`grow`,"data-invalid":!!n.errors.label||void 0,children:[(0,W.jsx)(v,{className:`sr-only`,htmlFor:`navigation-label-${n.id}`,children:`Label`}),(0,W.jsx)(O,{"aria-invalid":!!n.errors.label||void 0,className:s(d&&`border-0 bg-transparent shadow-none focus-visible:ring-0`,f),id:`navigation-label-${n.id}`,placeholder:u,value:n.label,onChange:e=>i?.({label:e.target.value}),onKeyDown:e=>{i?.({label:e.target.value}),e.key===`Enter`&&(e.preventDefault(),o?.()),n.errors.label&&l?.(`label`)}}),n.errors.label&&(0,W.jsx)(_,{children:n.errors.label})]})}),(0,W.jsx)(`div`,{className:s(`flex`,q.url,J),children:(0,W.jsxs)(y,{className:`grow`,"data-invalid":!!n.errors.url||void 0,children:[(0,W.jsx)(v,{className:`sr-only`,htmlFor:`navigation-url-${n.id}`,children:`URL`}),b?(0,W.jsx)(ke,{"aria-invalid":!!n.errors.url||void 0,baseUrl:e,className:f,id:`navigation-url-${n.id}`,loadSuggestions:r,value:n.url,onChange:e=>i?.({url:e}),onEdit:()=>{n.errors.url&&l?.(`url`)},onSubmit:o}):(0,W.jsx)(Ae,{"aria-invalid":!!n.errors.url||void 0,baseUrl:e,className:f,id:`navigation-url-${n.id}`,value:n.url,onChange:e=>i?.({url:e}),onEdit:()=>{n.errors.url&&l?.(`url`)},onSubmit:o}),n.errors.url&&(0,W.jsx)(_,{children:n.errors.url})]})}),g&&(0,W.jsx)(`div`,{className:s(`flex flex-col`,q.visibility,`pt-1`),children:(0,W.jsx)(Ee,{clearError:l,idPrefix:t,item:n,showPaidVisibility:h,updateItem:i})}),p&&(0,W.jsx)(c,{align:`center`,className:s(`h-[calc(var(--control-height)+0.25rem)] shrink-0 pt-1`,q.action),children:p})]}),X=`text-xs font-semibold text-muted-foreground`,Z=({baseUrl:e,idPrefix:t,navigation:n,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,uploadIcon:u})=>(0,W.jsxs)(`div`,{className:`w-full pt-2`,children:[(i||o)&&(0,W.jsxs)(`div`,{className:`-mb-1 flex w-full items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`h-7 w-4 shrink-0`}),(0,W.jsxs)(`div`,{className:`flex w-full items-start gap-3 [--control-height:38px]`,children:[i&&(0,W.jsx)(`div`,{className:`${q.icon} ${X}`,children:`Icon`}),(0,W.jsx)(`div`,{className:`${q.label} ${X}`,children:`Label`}),(0,W.jsx)(`div`,{className:`${q.url} ${X}`,children:`URL`}),o&&(0,W.jsx)(`div`,{className:`${q.visibility} ${X}`,children:`Visibility`}),(0,W.jsx)(`div`,{className:q.action})]})]}),(0,W.jsx)(k,{dragHandleClass:`translate-y-0.5`,getDragHandleLabel:e=>`Reorder ${e.label||`navigation item`}`,items:n.items,itemSeparator:!1,renderItem:c=>(0,W.jsx)(Y,{action:(0,W.jsx)(f,{"aria-label":`Delete navigation item`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.removeItem(c.id),children:(0,W.jsx)(l,{})}),baseUrl:e,clearError:e=>n.clearError(c.id,e),idPrefix:t,item:c,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,updateItem:e=>n.updateItem(c.id,e),uploadIcon:u}),onMove:n.moveItem}),(0,W.jsxs)(c,{align:`start`,className:`mt-5 border-t pt-5`,gap:`md`,children:[(0,W.jsx)(c,{align:`center`,className:`h-[calc(var(--control-height)+0.5rem)] shrink-0 translate-y-0.5 pt-2`,children:(0,W.jsx)(d,{className:`size-4 text-muted-foreground`})}),(0,W.jsx)(Y,{action:(0,W.jsx)(f,{"aria-label":`Add navigation item`,"data-testid":`add-button`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.addItem(),children:(0,W.jsx)(d,{})}),addItem:n.addItem,baseUrl:e,className:`mt-1`,clearError:e=>n.clearError(n.newItem.id,e),"data-testid":`new-navigation-item`,idPrefix:t,item:n.newItem,labelPlaceholder:`New item label`,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,updateItem:n.setNewItem,uploadIcon:u})]})]}),Q=5,je=e=>!!e&&!e.endsWith(`/404/`),$=e=>{try{let t=new URL(e);return`${t.pathname}${t.search}${t.hash}`}catch{return e}},Me=(e,t)=>{let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||e.value.toLowerCase().includes(n)},Ne=()=>{let e=I(`navigationUrlSuggestions`),{config:t,settings:r,siteData:a}=z(),[s=!1,c=!1,l=!1]=L(r,[`paid_members_enabled`,`donations_enabled`,`recommendations_enabled`]),[u=`all`]=L(r,[`members_signup_access`]),d=R(r,t),{data:f}=o({enabled:e&&s&&d}),p=i(),m=(0,B.useRef)({}),h=(0,B.useCallback)(e=>{let t=m.current[e];if(t)return t;let r=p(n(`/search-index/${e}/`)).then(t=>t[e]??[]).catch(t=>{throw delete m.current[e],t});return m.current[e]=r,r},[p]),g=(0,B.useMemo)(()=>{let e=ie(a),t=le({homepageUrl:e,paidMembersEnabled:s&&d,donationsEnabled:c&&d,recommendationsEnabled:l,membersSignupAccess:u},[]),n=(f?.offers||[]).filter(e=>e.status===`active`&&e.redemption_type===`signup`);return[{label:`Links`,items:t},{label:`Offers`,items:ce(n,e)}].map(e=>({...e,items:e.items.map(e=>({...e,description:e.value}))}))},[c,u,f?.offers,s,l,a,d]);return{enabled:e,loadSuggestions:(0,B.useCallback)(async t=>{if(!e)return[];let[n,r]=await Promise.all([h(`pages`).catch(()=>[]),h(`posts`).catch(()=>[])]),i=t.toLowerCase(),a=$(t).toLowerCase(),o=e=>e.title.toLowerCase().includes(i)||$(e.url).toLowerCase().includes(a),s=e=>e.filter(e=>e.status===`published`&&je(e.url)).filter(e=>!t||o(e)).slice(0,Q).map(e=>({label:e.title,value:e.url,description:$(e.url)})),c=[{label:`Pages`,items:s(n)},{label:`Posts`,items:s(r)}];return[...g.map(e=>{let n=t?e.items.filter(e=>Me(e,t)):e.items;return{...e,items:e.label===`Offers`?n.slice(0,Q):n}}),...c].filter(e=>e.items.length>0)},[e,h,g])}};function Pe(){let{updateRoute:e}=ue(),t=r(),{mutateAsync:n}=C(),{config:i}=z(),{localSettings:a,updateSetting:o,saveState:s,handleSave:c,siteData:l}=de(),[u,d,f]=L(a,[`navigation`,`secondary_navigation`,`members_signup_access`]),p=I(`navigationIcons`),m=p,h=p&&f!==`none`,g=R(a,i),_=(0,B.useMemo)(()=>JSON.parse(u||`[]`),[u]),v=(0,B.useMemo)(()=>JSON.parse(d||`[]`),[d]),y=(0,B.useCallback)(e=>{o(`navigation`,JSON.stringify(e))},[o]),b=(0,B.useCallback)(e=>{o(`secondary_navigation`,JSON.stringify(e))},[o]),{enabled:x,loadSuggestions:S}=Ne(),w=x?``:`/`,T=U({items:_,setItems:y,blankUrl:w}),E=U({items:v,setItems:b,blankUrl:w}),[O,k]=(0,B.useState)(`primary-nav`),A=async e=>{try{return D(await n({file:e}))}catch(e){let n=e;n.response?.status===415&&(n.message=`Unsupported file type`),t(n)}};return(0,W.jsx)(te,{buttonsDisabled:s===`saving`,cancelLabel:`Close`,dirty:a.some(e=>e.dirty),okLabel:s===`saving`?`Saving...`:`Save`,scrolling:!0,size:`lg`,stickyFooter:!0,testId:`navigation-modal`,title:`Navigation`,onClose:()=>{e(`navigation`)},onOk:async()=>{T.validate()&&E.validate()&&(await c(),e(`navigation`))},children:(0,W.jsx)(`div`,{className:`mt-6 mb-1`,children:(0,W.jsxs)(F,{value:O,variant:`underline`,onValueChange:k,children:[(0,W.jsxs)(ee,{children:[(0,W.jsx)(N,{value:`primary-nav`,children:`Primary`}),(0,W.jsx)(N,{value:`secondary-nav`,children:`Secondary`})]}),(0,W.jsx)(P,{value:`primary-nav`,children:(0,W.jsx)(Z,{baseUrl:l.url,idPrefix:`primary-navigation`,loadSuggestions:S,navigation:T,showIcon:m,showPaidVisibility:g,showVisibility:h,suggestionsEnabled:x,uploadIcon:A})}),(0,W.jsx)(P,{value:`secondary-nav`,children:(0,W.jsx)(Z,{baseUrl:l.url,idPrefix:`secondary-navigation`,loadSuggestions:S,navigation:E,showIcon:m,showPaidVisibility:g,showVisibility:h,suggestionsEnabled:x,uploadIcon:A})})]})})})}export{Pe as default};
|
|
1
|
+
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`0e28d920-3fd7-4335-b70d-fd534aabc324`,e._sentryDebugIdIdentifier=`sentry-dbid-0e28d920-3fd7-4335-b70d-fd534aabc324`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{c as n,g as r,u as i}from"./hooks-0r7qxGEo.js";import{t as a}from"./jsx-runtime-Bm2_KH-0.js";import{n as o}from"./offers-Df9Jzay5.js";import{Z as s}from"./shade-provider-DvrXKKQZ.js";import{t as c}from"./inline-Qoyy4r2g.js";import{D as l,ar as u,dt as d,t as f,v as p}from"./button-CTHYSI-d.js";import{i as m,n as h,t as g}from"./popover-r_3DwMi9.js";import{i as _,o as v,t as y}from"./field-DCPPrQDr.js";import{a as b,c as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./images-DTZtaIAr.js";import{t as O}from"./input-BHb2A_DU.js";import{i as k,n as A,t as j}from"./use-url-input-BeYKYMGh.js";import{t as M}from"./switch-BppWscjz.js";import{i as N,n as P,r as ee,t as F}from"./tabs-fHs3A8WC.js";import{t as te}from"./settings-modal-3x4v8abr.js";import{B as I,Ut as L,Vt as R,ct as ne,ft as re,h as ie,ut as ae,vt as oe}from"./index-RuRs_qGS.js";import{t as se}from"./validator-DgUCXsE8.js";import{n as ce,t as le}from"./autocomplete-links-DKqd4ypg.js";import{t as ue}from"./use-settings-navigation-CO2nUqDW.js";import{n as z}from"./global-data-context-ogIy0FUG.js";import{t as de}from"./use-setting-group-YP84CqrJ.js";import{t as fe}from"./format-url-BlDIp2kF.js";var pe=e(se(),1),B=e(t(),1),V=[`public`,`members`,`paid`,`public_free`,`public_paid`,`public_only`,`free_members`,`none`],H=e=>!!(e&&!e.match(/^\s*$/)),me=e=>({...e,icon:e.icon||``,visibility:e.visibility||`public`,errors:{}}),he=({url:e,label:t,icon:n,visibility:r})=>({url:e.trim(),label:t.trim(),...n?.trim()?{icon:n.trim()}:{},...r&&r!==`public`?{visibility:r}:{}}),U=({items:e,setItems:t,blankUrl:n=`/`})=>{let r=(0,B.useCallback)(e=>!!(H(e.label)||e.url!==n||H(e.icon)),[n]),i=A({items:(0,B.useMemo)(()=>e.map(me),[e]),setItems:(0,B.useCallback)(e=>{t(e.map(he))},[t]),blank:{url:n,label:``,icon:``,visibility:`public`,errors:{}},canAddNewItem:r}),a=new RegExp(/^(\/|#|[a-zA-Z0-9-]+:)/),o=e=>{let t={},n=H(e.label),r=H(e.icon);return!n&&!r&&(t.label=`You must specify a label or icon`),(!e.url||e.url.match(/\s/)||!pe.default.isURL(e.url,{require_protocol:!0})&&!e.url.match(a))&&(t.url=`You must specify a valid URL or relative path`),e.visibility&&!V.includes(e.visibility)&&(t.visibility=`You must specify a valid visibility`),t},s=(e,t)=>{let n={...e.errors};return H(t.icon)&&(n.icon=void 0,n.label=void 0),{...e,...t,errors:n}},c=(e,t)=>{i.updateItem(e,e=>s(e,t))},l=()=>{let e=o(i.newItem);Object.values(e).some(e=>e)?i.setNewItem({...i.newItem,errors:e}):i.addItem()},u=e=>{i.removeItem(e)},d=(e,t)=>{i.moveItem(e,t)},f=(e,t)=>{e===`new`?i.setNewItem(e=>({...e,errors:{...e.errors,[t]:void 0}})):i.updateItem(e,e=>({...e,errors:{...e.errors,[t]:void 0}}))};return{items:i.items.map(({item:e,id:t})=>({...e,id:t})),updateItem:c,addItem:l,removeItem:u,moveItem:d,newItem:{...i.newItem,id:`new`},setNewItem:e=>i.setNewItem(t=>s(t,e)),clearError:f,validate:()=>{let e=!0;if(i.items.forEach(({item:t,id:n})=>{let r=o(t);Object.values(r).some(e=>e)&&(e=!1,i.updateItem(n,{...t,errors:r}))}),r(i.newItem)){let t=o(i.newItem);Object.values(t).some(e=>e)&&(e=!1,i.setNewItem({...i.newItem,errors:t}))}return e}}},W=a(),ge=({idPrefix:e,item:t,clearError:n,updateItem:r,uploadIcon:i})=>(0,W.jsx)(T,{className:`size-[38px]`,children:t.icon?(0,W.jsxs)(x,{children:[(0,W.jsx)(E,{alt:``,className:`size-[38px] rounded-lg object-contain p-2.5`,src:t.icon}),(0,W.jsx)(b,{className:`inset-0 flex items-center justify-center`,children:(0,W.jsx)(S,{"aria-label":`Remove navigation icon`,className:`size-full rounded-lg bg-black/75 p-0 text-white hover:bg-black/90 hover:text-white`,onClick:()=>{n?.(`icon`),r?.({icon:``})},children:(0,W.jsx)(l,{className:`size-4`})})})]}):(0,W.jsx)(w,{accept:{"image/*":[]},"aria-label":`Upload navigation icon`,className:`size-[38px] rounded-lg border-0 bg-muted p-0 text-muted-foreground hover:bg-muted hover:text-foreground`,id:`${e}-icon-${t.id}`,inputAriaLabel:`Upload navigation icon`,onDropAccepted:([e])=>void i?.(e).then(e=>{e&&r?.({icon:e})}),children:(0,W.jsx)(p,{"aria-hidden":`true`,className:`size-4`})})}),G={public:`Everyone`,members:`Members only`,paid:`Paid-members only`,public_free:`Public + free`,public_paid:`Public + paid`,public_only:`Public only`,free_members:`Free only`,none:`Hidden`},_e=V.map(e=>({value:e,label:G[e]})),ve=[{key:`public-visitors`,label:`Public visitors`},{key:`free-members`,label:`Free members`},{key:`paid-members`,label:`Paid members`}],ye={public:{"public-visitors":!0,"free-members":!0,"paid-members":!0},members:{"public-visitors":!1,"free-members":!0,"paid-members":!0},paid:{"public-visitors":!1,"free-members":!1,"paid-members":!0},public_free:{"public-visitors":!0,"free-members":!0,"paid-members":!1},public_paid:{"public-visitors":!0,"free-members":!1,"paid-members":!0},public_only:{"public-visitors":!0,"free-members":!1,"paid-members":!1},free_members:{"public-visitors":!1,"free-members":!0,"paid-members":!1},none:{"public-visitors":!1,"free-members":!1,"paid-members":!1}},be=[`paid`,`public_paid`],xe={"000":`none`,"001":`paid`,"010":`free_members`,"011":`members`,100:`public_only`,101:`public_paid`,110:`public_free`,111:`public`},Se=e=>_e.some(t=>t.value===e)?e:`public`,Ce=e=>G[e],we=(e,t)=>({...ye[e],...t?{}:{"paid-members":!1}}),Te=e=>xe[[e[`public-visitors`],e[`free-members`],e[`paid-members`]].map(e=>e?`1`:`0`).join(``)],Ee=({idPrefix:e,item:t,clearError:n,updateItem:r,showPaidVisibility:i})=>{let a=Se(t.visibility),o=Ce(a),s=`${e}-visibility-${t.id}`,c=`${s}-error`,l=we(a,i),d=e=>{n?.(`visibility`),r?.({visibility:e})},f=(e,t)=>{let n={...l,[e]:t};i||(n[`paid-members`]=n[`free-members`]);let r=Te(n);!i&&be.includes(r)||d(r)};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`label`,{className:`sr-only`,id:s,children:`Visibility`}),(0,W.jsxs)(ne,{children:[(0,W.jsx)(oe,{asChild:!0,children:(0,W.jsxs)(`button`,{"aria-describedby":t.errors.visibility?c:void 0,"aria-invalid":!!t.errors.visibility,"aria-labelledby":s,className:`flex h-[38px] w-full items-center justify-between rounded-lg border-transparent bg-gray-100 px-3 text-md text-black hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:outline-hidden dark:bg-gray-900 dark:text-white dark:hover:bg-gray-900`,"data-testid":`navigation-item-visibility`,type:`button`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:o}),(0,W.jsx)(u,{"aria-hidden":`true`,className:`size-4 opacity-80`})]})}),(0,W.jsx)(ae,{align:`end`,className:`z-[300] w-[190px] rounded-lg p-2`,sideOffset:6,children:(0,W.jsx)(`div`,{className:`flex flex-col`,children:ve.filter(e=>e.key!==`paid-members`||i).map(e=>{let t=l[e.key];return(0,W.jsxs)(re,{className:`flex cursor-pointer items-center justify-between gap-3 rounded-md px-2 py-1.5 text-sm text-gray-900 dark:text-gray-100`,onSelect:n=>{n.preventDefault(),f(e.key,!t)},children:[(0,W.jsx)(`span`,{children:e.label}),(0,W.jsx)(M,{"aria-label":e.label,checked:t,size:`sm`,onCheckedChange:t=>f(e.key,t),onClick:e=>e.stopPropagation()})]},e.key)})})})]}),t.errors.visibility&&(0,W.jsx)(`div`,{className:`mt-1 text-xs text-red`,id:c,role:`alert`,children:t.errors.visibility})]})},De=150,Oe=e=>{let t=0;return e.map(e=>{let n=e.items.map((e,n)=>({...e,index:t+n}));return t+=e.items.length,{label:e.label,items:n}})},ke=({baseUrl:e,value:t,loadSuggestions:n,onChange:r,onSubmit:i,onEdit:a,className:o,...c})=>{let l=j({baseUrl:e,nullable:!0,value:t,onChange:e=>r(e||``)}),[u,d]=(0,B.useState)(!1),[f,p]=(0,B.useState)([]),[_,v]=(0,B.useState)(-1),y=(0,B.useId)(),b=(0,B.useRef)(null),x=(0,B.useRef)(0),S=(0,B.useRef)(void 0),C=(0,B.useMemo)(()=>Oe(f),[f]),w=(0,B.useMemo)(()=>C.flatMap(e=>e.items),[C]),T=(0,B.useCallback)(e=>{let t=x.current+1;x.current=t,n(e).then(e=>{x.current===t&&(p(e),v(-1))}).catch(()=>{x.current===t&&p([])})},[n]);(0,B.useEffect)(()=>()=>clearTimeout(S.current),[]);let E=(0,B.useCallback)(e=>{d(!0),T(e)},[T]),D=(0,B.useCallback)(()=>{clearTimeout(S.current),x.current+=1,d(!1),p([]),v(-1)},[]),k=u&&w.length>0,A=t=>{let n=fe(t.value,e,!0);l.setDisplayValue(n.display),r(n.save||``),a?.(),D()},M=e=>{let t=e.target.value;l.setDraftValue(t),a?.(),d(!0),clearTimeout(S.current),S.current=setTimeout(()=>T(t),De)},N=e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(e.preventDefault(),!k){E(l.displayValue);return}let t=e.key===`ArrowDown`?1:-1,n=_+t<0?w.length-1:_+t>=w.length?0:_+t;v(n),document.getElementById(`${y}-option-${n}`)?.scrollIntoView({block:`nearest`});return}if(e.key===`Enter`){if(e.preventDefault(),k&&_>=0&&w[_]){A(w[_]);return}D(),l.commitValue(),i?.();return}if(e.key===`Escape`&&k){D();return}l.handleKeyDown(e)};return(0,W.jsxs)(g,{open:k,onOpenChange:e=>!e&&D(),children:[(0,W.jsx)(h,{asChild:!0,children:(0,W.jsx)(O,{...c,ref:b,"aria-activedescendant":_>=0?`${y}-option-${_}`:void 0,"aria-autocomplete":`list`,"aria-controls":k?y:void 0,"aria-expanded":k,autoComplete:`off`,className:o,role:`combobox`,value:l.displayValue,onBlur:()=>{D(),l.commitValue()},onChange:M,onFocus:e=>{l.handleFocus(e),e.target.value||E(``)},onKeyDown:N})}),(0,W.jsx)(m,{align:`start`,className:`max-h-72 w-(--radix-popover-trigger-width) overflow-y-auto p-0`,onInteractOutside:e=>{b.current&&e.target instanceof Node&&b.current.contains(e.target)&&e.preventDefault()},onMouseDown:e=>e.preventDefault(),onOpenAutoFocus:e=>e.preventDefault(),children:(0,W.jsx)(`div`,{"aria-label":`URL suggestions`,className:`p-1`,id:y,role:`listbox`,children:C.map(e=>(0,W.jsxs)(`div`,{"aria-label":e.label,className:`p-1.5`,role:`group`,children:[(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`px-2 py-1.5 text-xs font-medium text-muted-foreground`,children:e.label}),e.items.map(t=>{let n=t.index===_;return(0,W.jsxs)(`div`,{"aria-selected":n,className:s(`cursor-pointer rounded-xs px-2 py-1.5`,n&&`bg-interactive-hover`),id:`${y}-option-${t.index}`,role:`option`,onClick:()=>A(t),onMouseMove:()=>v(t.index),children:[(0,W.jsx)(`span`,{className:`block truncate text-control text-foreground`,children:t.label}),t.description&&(0,W.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:t.description})]},`${e.label}-${t.index}`)})]},e.label))})})]})},K=`flex w-full items-start gap-3 [--control-height:38px]`,q={icon:`w-[38px] shrink-0`,label:`min-w-0 flex-[0.75]`,url:`min-w-0 flex-[1.25]`,visibility:`w-[190px] shrink-0`,action:`w-10 shrink-0`},J=`pt-1`,Ae=({baseUrl:e,value:t,className:n,id:r,onChange:i,onEdit:a,onSubmit:o,...s})=>{let c=j({baseUrl:e,nullable:!0,value:t,onChange:e=>i(e||``)});return(0,W.jsx)(O,{...s,className:n,id:r,value:c.displayValue,onBlur:c.commitValue,onChange:e=>{c.setDraftValue(e.target.value),a?.()},onFocus:c.handleFocus,onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault(),c.commitValue(),o?.();return}c.handleKeyDown(e)}})},Y=({baseUrl:e,idPrefix:t,item:n,loadSuggestions:r,updateItem:i,uploadIcon:a,addItem:o,clearError:l,labelPlaceholder:u,unstyled:d,textFieldClasses:f,action:p,showIcon:m,showPaidVisibility:h,showVisibility:g,suggestionsEnabled:b,className:x,...S})=>(0,W.jsxs)(`div`,{className:s(K,x),"data-testid":`navigation-item-editor`,...S,children:[m&&(0,W.jsx)(`div`,{className:s(`flex flex-col`,q.icon,`pt-1`),children:(0,W.jsx)(ge,{clearError:l,idPrefix:t,item:n,updateItem:i,uploadIcon:a})}),(0,W.jsx)(`div`,{className:s(`flex`,q.label,J),children:(0,W.jsxs)(y,{className:`grow`,"data-invalid":!!n.errors.label||void 0,children:[(0,W.jsx)(v,{className:`sr-only`,htmlFor:`navigation-label-${n.id}`,children:`Label`}),(0,W.jsx)(O,{"aria-invalid":!!n.errors.label||void 0,className:s(d&&`border-0 bg-transparent shadow-none focus-visible:ring-0`,f),id:`navigation-label-${n.id}`,placeholder:u,value:n.label,onChange:e=>i?.({label:e.target.value}),onKeyDown:e=>{i?.({label:e.target.value}),e.key===`Enter`&&(e.preventDefault(),o?.()),n.errors.label&&l?.(`label`)}}),n.errors.label&&(0,W.jsx)(_,{children:n.errors.label})]})}),(0,W.jsx)(`div`,{className:s(`flex`,q.url,J),children:(0,W.jsxs)(y,{className:`grow`,"data-invalid":!!n.errors.url||void 0,children:[(0,W.jsx)(v,{className:`sr-only`,htmlFor:`navigation-url-${n.id}`,children:`URL`}),b?(0,W.jsx)(ke,{"aria-invalid":!!n.errors.url||void 0,baseUrl:e,className:f,id:`navigation-url-${n.id}`,loadSuggestions:r,value:n.url,onChange:e=>i?.({url:e}),onEdit:()=>{n.errors.url&&l?.(`url`)},onSubmit:o}):(0,W.jsx)(Ae,{"aria-invalid":!!n.errors.url||void 0,baseUrl:e,className:f,id:`navigation-url-${n.id}`,value:n.url,onChange:e=>i?.({url:e}),onEdit:()=>{n.errors.url&&l?.(`url`)},onSubmit:o}),n.errors.url&&(0,W.jsx)(_,{children:n.errors.url})]})}),g&&(0,W.jsx)(`div`,{className:s(`flex flex-col`,q.visibility,`pt-1`),children:(0,W.jsx)(Ee,{clearError:l,idPrefix:t,item:n,showPaidVisibility:h,updateItem:i})}),p&&(0,W.jsx)(c,{align:`center`,className:s(`h-[calc(var(--control-height)+0.25rem)] shrink-0 pt-1`,q.action),children:p})]}),X=`text-xs font-semibold text-muted-foreground`,Z=({baseUrl:e,idPrefix:t,navigation:n,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,uploadIcon:u})=>(0,W.jsxs)(`div`,{className:`w-full pt-2`,children:[(i||o)&&(0,W.jsxs)(`div`,{className:`-mb-1 flex w-full items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`h-7 w-4 shrink-0`}),(0,W.jsxs)(`div`,{className:`flex w-full items-start gap-3 [--control-height:38px]`,children:[i&&(0,W.jsx)(`div`,{className:`${q.icon} ${X}`,children:`Icon`}),(0,W.jsx)(`div`,{className:`${q.label} ${X}`,children:`Label`}),(0,W.jsx)(`div`,{className:`${q.url} ${X}`,children:`URL`}),o&&(0,W.jsx)(`div`,{className:`${q.visibility} ${X}`,children:`Visibility`}),(0,W.jsx)(`div`,{className:q.action})]})]}),(0,W.jsx)(k,{dragHandleClass:`translate-y-0.5`,getDragHandleLabel:e=>`Reorder ${e.label||`navigation item`}`,items:n.items,itemSeparator:!1,renderItem:c=>(0,W.jsx)(Y,{action:(0,W.jsx)(f,{"aria-label":`Delete navigation item`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.removeItem(c.id),children:(0,W.jsx)(l,{})}),baseUrl:e,clearError:e=>n.clearError(c.id,e),idPrefix:t,item:c,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,updateItem:e=>n.updateItem(c.id,e),uploadIcon:u}),onMove:n.moveItem}),(0,W.jsxs)(c,{align:`start`,className:`mt-5 border-t pt-5`,gap:`md`,children:[(0,W.jsx)(c,{align:`center`,className:`h-[calc(var(--control-height)+0.5rem)] shrink-0 translate-y-0.5 pt-2`,children:(0,W.jsx)(d,{className:`size-4 text-muted-foreground`})}),(0,W.jsx)(Y,{action:(0,W.jsx)(f,{"aria-label":`Add navigation item`,"data-testid":`add-button`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.addItem(),children:(0,W.jsx)(d,{})}),addItem:n.addItem,baseUrl:e,className:`mt-1`,clearError:e=>n.clearError(n.newItem.id,e),"data-testid":`new-navigation-item`,idPrefix:t,item:n.newItem,labelPlaceholder:`New item label`,loadSuggestions:r,showIcon:i,showPaidVisibility:a,showVisibility:o,suggestionsEnabled:s,updateItem:n.setNewItem,uploadIcon:u})]})]}),Q=5,je=e=>!!e&&!e.endsWith(`/404/`),$=e=>{try{let t=new URL(e);return`${t.pathname}${t.search}${t.hash}`}catch{return e}},Me=(e,t)=>{let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||e.value.toLowerCase().includes(n)},Ne=()=>{let e=I(`navigationUrlSuggestions`),{config:t,settings:r,siteData:a}=z(),[s=!1,c=!1,l=!1]=L(r,[`paid_members_enabled`,`donations_enabled`,`recommendations_enabled`]),[u=`all`]=L(r,[`members_signup_access`]),d=R(r,t),{data:f}=o({enabled:e&&s&&d}),p=i(),m=(0,B.useRef)({}),h=(0,B.useCallback)(e=>{let t=m.current[e];if(t)return t;let r=p(n(`/search-index/${e}/`)).then(t=>t[e]??[]).catch(t=>{throw delete m.current[e],t});return m.current[e]=r,r},[p]),g=(0,B.useMemo)(()=>{let e=ie(a),t=le({homepageUrl:e,paidMembersEnabled:s&&d,donationsEnabled:c&&d,recommendationsEnabled:l,membersSignupAccess:u},[]),n=(f?.offers||[]).filter(e=>e.status===`active`&&e.redemption_type===`signup`);return[{label:`Links`,items:t},{label:`Offers`,items:ce(n,e)}].map(e=>({...e,items:e.items.map(e=>({...e,description:e.value}))}))},[c,u,f?.offers,s,l,a,d]);return{enabled:e,loadSuggestions:(0,B.useCallback)(async t=>{if(!e)return[];let[n,r]=await Promise.all([h(`pages`).catch(()=>[]),h(`posts`).catch(()=>[])]),i=t.toLowerCase(),a=$(t).toLowerCase(),o=e=>e.title.toLowerCase().includes(i)||$(e.url).toLowerCase().includes(a),s=e=>e.filter(e=>e.status===`published`&&je(e.url)).filter(e=>!t||o(e)).slice(0,Q).map(e=>({label:e.title,value:e.url,description:$(e.url)})),c=[{label:`Pages`,items:s(n)},{label:`Posts`,items:s(r)}];return[...g.map(e=>{let n=t?e.items.filter(e=>Me(e,t)):e.items;return{...e,items:e.label===`Offers`?n.slice(0,Q):n}}),...c].filter(e=>e.items.length>0)},[e,h,g])}};function Pe(){let{updateRoute:e}=ue(),t=r(),{mutateAsync:n}=C(),{config:i}=z(),{localSettings:a,updateSetting:o,saveState:s,handleSave:c,siteData:l}=de(),[u,d,f]=L(a,[`navigation`,`secondary_navigation`,`members_signup_access`]),p=I(`navigationIcons`),m=p,h=p&&f!==`none`,g=R(a,i),_=(0,B.useMemo)(()=>JSON.parse(u||`[]`),[u]),v=(0,B.useMemo)(()=>JSON.parse(d||`[]`),[d]),y=(0,B.useCallback)(e=>{o(`navigation`,JSON.stringify(e))},[o]),b=(0,B.useCallback)(e=>{o(`secondary_navigation`,JSON.stringify(e))},[o]),{enabled:x,loadSuggestions:S}=Ne(),w=x?``:`/`,T=U({items:_,setItems:y,blankUrl:w}),E=U({items:v,setItems:b,blankUrl:w}),[O,k]=(0,B.useState)(`primary-nav`),A=async e=>{try{return D(await n({file:e}))}catch(e){let n=e;n.response?.status===415&&(n.message=`Unsupported file type`),t(n)}};return(0,W.jsx)(te,{buttonsDisabled:s===`saving`,cancelLabel:`Close`,dirty:a.some(e=>e.dirty),okLabel:s===`saving`?`Saving...`:`Save`,scrolling:!0,size:`lg`,stickyFooter:!0,testId:`navigation-modal`,title:`Navigation`,onClose:()=>{e(`navigation`)},onOk:async()=>{T.validate()&&E.validate()&&(await c(),e(`navigation`))},children:(0,W.jsx)(`div`,{className:`mt-6 mb-1`,children:(0,W.jsxs)(F,{value:O,variant:`underline`,onValueChange:k,children:[(0,W.jsxs)(ee,{children:[(0,W.jsx)(N,{value:`primary-nav`,children:`Primary`}),(0,W.jsx)(N,{value:`secondary-nav`,children:`Secondary`})]}),(0,W.jsx)(P,{value:`primary-nav`,children:(0,W.jsx)(Z,{baseUrl:l.url,idPrefix:`primary-navigation`,loadSuggestions:S,navigation:T,showIcon:m,showPaidVisibility:g,showVisibility:h,suggestionsEnabled:x,uploadIcon:A})}),(0,W.jsx)(P,{value:`secondary-nav`,children:(0,W.jsx)(Z,{baseUrl:l.url,idPrefix:`secondary-navigation`,loadSuggestions:S,navigation:E,showIcon:m,showPaidVisibility:g,showVisibility:h,suggestionsEnabled:x,uploadIcon:A})})]})})})}export{Pe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`01710558-5229-4c69-96d6-e162ec62e70b`,e._sentryDebugIdIdentifier=`sentry-dbid-01710558-5229-4c69-96d6-e162ec62e70b`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{n as r}from"./dist-pogVoW2G.js";import{h as i}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a}from"./router-provider-Cf-bcYZr.js";import{H as o,L as s,U as c,W as l,q as u,r as d}from"./shade-provider-DvrXKKQZ.js";import{a as f}from"./heading-Ch2Mb19A.js";import{A as p,Ar as m,L as h,bt as ee,k as g,rr as _,t as v}from"./button-CTHYSI-d.js";import{n as y,t as te}from"./avatar-YbECDnBI.js";import{a as b,i as ne,n as x,o as S,r as C,t as w}from"./card-Cd6xB_Ok.js";import{c as re,l as ie,n as ae,o as T,r as oe,s as se,t as ce,u as le}from"./data-list-CNs61th8.js";import{t as ue}from"./input-BHb2A_DU.js";import{n as de}from"./skeleton-C1s6yr9e.js";import{t as fe}from"./loading-indicator-DaRyGrxv.js";import{i as pe,n as me,o as he,r as ge,t as _e}from"./use-simple-pagination-B5sHbw5y.js";import{i as E,r as D,t as ve}from"./tabs-CDb_TceL.js";import{d as O,f as k}from"./label-picker-GTIIlBQ6.js";import{M as ye,Xt as be,Yt as xe,st as A}from"./index-CuDhPtkB.js";import{a as j,o as M}from"./stats-CHOikfoP.js";import{n as Se}from"./email-sending-status-context-7yrRlgjQ.js";import{n as N}from"./feedback-gKOzmiGt.js";import{n as Ce}from"./links-jD8AkkIu.js";import{n as P}from"./post-analytics-context-v4FXmVDC.js";import{a as F,i as I,n as L,r as R,t as z}from"./kpi-card-Djsroynj.js";import{r as we,t as Te}from"./post-analytics-header-DX9fETdi.js";import{t as B}from"./email-stats-polling-DCLzZSEX.js";import{i as V,n as H,r as U,t as W}from"./use-post-top-links-DCH4eO11.js";var G=e(t(),1),K=(e,t,n)=>{let{data:r,isLoading:i,error:a}=N(e,{...B(()=>n),searchParams:{limit:`50`,...t===void 0?{}:{score:t.toString()}}});return{feedback:(0,G.useMemo)(()=>r?.feedback?r.feedback:[],[r]),isLoading:i,error:a}},q=n(),Ee=({feedbackStats:e})=>{let{isAdmin7:t}=d(),{postId:n}=i(),r=a(),{isNewsletterDataHidden:o}=Se(),[s,m]=(0,G.useState)(`positive`),ee=+(s===`positive`),{post:_}=P(),{feedback:re,isLoading:ie}=K(n||``,ee,_?.email),{totalPages:ae,paginatedData:T,nextPage:oe,previousPage:se,hasNextPage:ce,hasPreviousPage:le}=_e({data:re,itemsPerPage:9}),ue=ie;return(0,q.jsxs)(w,{children:[(0,q.jsxs)(b,{className:`pb-5`,children:[(0,q.jsx)(S,{children:`Feedback`}),(0,q.jsx)(C,{children:`What did your readers think?`})]}),o?(0,q.jsx)(x,{className:`pb-3`,children:(0,q.jsx)(V,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`})}):e.totalFeedback>0?(0,q.jsx)(x,{className:`pb-3`,children:(0,q.jsxs)(V,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,q.jsx)(ve,{className:`pb-3`,defaultValue:`positive`,value:s,variant:t?`button-sm`:`button`,onValueChange:e=>m(e),children:(0,q.jsxs)(D,{className:`gap-1`,children:[(0,q.jsx)(E,{className:`h-7`,value:`positive`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(g,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`More like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:c(e.positiveFeedback/e.totalFeedback)})]})}),(0,q.jsx)(E,{className:`h-7`,value:`negative`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(p,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`Less like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:c(e.negativeFeedback/e.totalFeedback)})]})})]})}),(0,q.jsx)(f,{className:`mr-2 mb-3 lg:hidden xl:visible! xl:block!`,children:`Date`})]}),(0,q.jsx)(A,{}),ue?(0,q.jsx)(de,{className:`mt-3`,lines:3}):T&&T.length>0?(0,q.jsx)(`div`,{className:`flex w-full flex-col py-3`,children:T.map(e=>(0,q.jsxs)(`div`,{className:`flex h-10 w-full items-center justify-between gap-3 rounded-sm border-none px-2 text-sm hover:cursor-pointer hover:bg-accent`,onClick:()=>{r(`/members/${e.member.id}`)},children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,q.jsxs)(te,{className:`size-7`,children:[e.member?.avatar_image&&(0,q.jsx)(`img`,{className:`absolute aspect-square size-full`,src:e.member?.avatar_image}),(0,q.jsx)(y,{className:`text-white`,style:{backgroundColor:`${u(O(e.member),`45`,`55`)}`},children:k(e.member)})]}),O(e.member)]}),(0,q.jsx)(`div`,{className:`whitespace-nowrap text-muted-foreground`,children:l(e.created_at)})]},e.id))}):(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center py-8 text-center text-sm text-muted-foreground`,children:(0,q.jsxs)(`div`,{children:[`No `,s===`positive`?`positive`:`negative`,` feedback yet`]})})]})}):(0,q.jsxs)(x,{className:`flex grow flex-col items-center justify-center text-center text-sm text-muted-foreground`,children:[(0,q.jsx)(`div`,{children:`No members have given feedback yet`}),(0,q.jsx)(`div`,{children:`When someone does, you'll see their response here.`})]}),e.totalFeedback>0&&!o&&(0,q.jsx)(ne,{className:`grow-0`,children:(0,q.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,q.jsxs)(v,{variant:`subtle`,onClick:()=>{let e=`(feedback.post_id:'${n}'+feedback.score:1)`,t=`(feedback.post_id:'${n}'+feedback.score:0)`,i=`${encodeURIComponent(e)}&post=${n}`,a=`${encodeURIComponent(t)}&post=${n}`;r(`/members?filter=${s===`positive`?i:a}`)},children:[`View all`,(0,q.jsx)(h,{})]}),ae>1&&(0,q.jsx)(me,{className:`pb-0`,children:(0,q.jsxs)(ge,{children:[(0,q.jsx)(he,{disabled:!le,onClick:se}),(0,q.jsx)(pe,{disabled:!ce,onClick:oe})]})})]})})]})},De=({pauseLinkPolling:e=!1}={})=>{let{post:t,isPostLoading:n}=P(),r=(0,G.useMemo)(()=>t?{sent:t.email?.email_count||0,opened:t.email?.opened_count||0,clicked:t.count?.clicks||0,openedRate:t.email?.opened_count?t.email.opened_count/t.email.email_count:0,clickedRate:t.count?.clicks&&t.email?.email_count?t.count.clicks/t.email.email_count:0}:{sent:0,opened:0,clicked:0,openedRate:0,clickedRate:0},[t]),i=(0,G.useMemo)(()=>t?.newsletter?.id,[t]),{data:a,isLoading:o}=j({searchParams:i?{newsletter_id:i}:{},enabled:!!i}),s=(0,G.useMemo)(()=>a?.stats?a.stats.map(e=>e.post_id):[],[a]),{data:c,isLoading:l}=M({searchParams:i&&s.length>0?{newsletter_id:i,post_ids:s.join(`,`)}:{},enabled:!!i&&s.length>0}),u=(0,G.useMemo)(()=>{if(!a?.stats)return;let e=a.stats,t=c?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...a,stats:r}},[a,c]),d=o||l,{topLinks:f,isLoading:p,refetch:m}=W({pausePolling:e}),h=(0,G.useMemo)(()=>{if(!u||!u.stats)return{openRate:0,clickRate:0};let e=u.stats;if(e.length===0)return{openRate:0,clickRate:0};let t=e.reduce((e,t)=>e+(t.open_rate||0),0),n=e.reduce((e,t)=>e+(t.click_rate||0),0);return{openRate:Number((t/e.length).toFixed(2)),clickRate:Number((n/e.length).toFixed(2))}},[u]);return{stats:r,averageStats:(0,G.useMemo)(()=>({openedRate:h.openRate,clickedRate:h.clickRate}),[h]),topLinks:f,refetchTopLinks:m,isLoading:n||d||p}},Oe=({breakpoints:e={sm:1080,md:1280,lg:1360}}={})=>{let[t,n]=(0,G.useState)(`md`);return(0,G.useEffect)(()=>{let t=()=>{let t=window.innerWidth;t<e.sm?n(`sm`):t<e.md?n(`md`):n(`lg`)};return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),{chartSize:t,isSmall:t===`sm`,isMedium:t===`md`,isLarge:t===`lg`}},ke=()=>(0,q.jsx)(`div`,{className:`absolute top-1/2 -right-4 z-10 hidden size-8 -translate-y-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground md:visible! md:flex!`,children:(0,q.jsx)(_,{className:`ml-0.5`,size:16,strokeWidth:1.5})}),Ae=({dataColor:e,value:t,avgValue:n})=>(0,q.jsxs)(`div`,{className:`absolute top-6 left-1/2 z-50 flex w-[200px] -translate-x-1/2 flex-col items-stretch gap-1.5 rounded-md bg-background px-4 py-2 text-sm opacity-0 shadow-md transition-all group-hover/block:top-3 group-hover/block:opacity-100`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-blue opacity-50`,style:{backgroundColor:e}}),`This newsletter`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:t})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-gray opacity-80`}),`Average`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:n})]})]}),je=()=>{let{isAdmin7:e}=d(),t=a(),[n,i]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),p=(0,G.useRef)(null),h=(0,G.useRef)(null),{chartSize:g}=Oe(),_=xe(),y=be(),{hasNewsletterAnalytics:te,isNewsletterDataHidden:E,isStatusLoading:D}=Se(),{post:ve,isPostLoading:O,postId:k}=P(),j=e=>t(ye({filter:e})),M=ve,N=te;(0,G.useEffect)(()=>{!O&&!D&&!N&&t(`/posts/analytics/${k}`)},[t,k,O,D,N]);let{stats:B,averageStats:W,topLinks:K,isLoading:je,refetchTopLinks:Me}=De({pauseLinkPolling:n!==null}),{mutate:Ne}=Ce(),J=(0,G.useMemo)(()=>{if(!M?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=M.count.positive_feedback||0,t=M.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[M]),Pe=(0,G.useMemo)(()=>M?.newsletter?.feedback_enabled===!0,[M]),Y=(0,G.useMemo)(()=>J.totalFeedback>0?!0:Pe,[J.totalFeedback,Pe]),Fe=e=>{let t=H(K,e);t&&(i(e),u(t.link.to))},Ie=()=>{if(!n)return;let e=H(K,n);if(!e)return;let t=l.trim();if(t===``||t===e.link.to){i(null),u(``);return}Ne({originalUrl:e.link.originalTo,editedUrl:l,postId:k},{onSuccess:()=>{i(null),u(``),Me()},onError:()=>{r.error(`Couldn’t update the link. Please try again.`)}})},{totalPages:Le,paginatedData:Re,nextPage:ze,previousPage:Be,hasNextPage:Ve,hasPreviousPage:He}=_e({data:K,itemsPerPage:10});(0,G.useEffect)(()=>{if(n&&p.current){p.current.focus();let e=H(K,n),t=t=>{h.current&&!h.current.contains(t.target)&&l===e?.link.to&&(i(null),u(``))};return document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`mousedown`,t)}}},[n,l,K]);let X=je||O||D,Ue=_&&!E,Z=(0,q.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`–`}),We=[{datatype:`Sent`,value:1,fill:`url(#gradientPurple)`,color:`var(--chart-purple)`}],Ge={percentage:{label:`O`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Ke=[{datatype:`Average`,value:W.openedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:B.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],qe={percentage:{label:`Opened`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Je=[{datatype:`Average`,value:W.clickedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:B.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`}],Ye={percentage:{label:`Clicked`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Q=`grid-cols-3`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-[10/14] md:max-w-none lg:aspect-square`;return(!_||!y)&&(Q=`grid-cols-2`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-square md:max-w-none lg:aspect-[15/10]`),!_&&!y&&(Q=`grid-cols-1`,$=`aspect-square w-full sm:aspect-[16/10] md:max-w-[320px] md:max-h-[320px] lg:aspect-[12/10]`),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Te,{currentTab:`Newsletter`}),(0,q.jsx)(we,{children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 ${Y&&Ue&&`lg:grid-cols-2`}`,children:[(0,q.jsxs)(w,{className:Y&&Ue?`lg:col-span-2`:``,children:[(0,q.jsxs)(b,{className:`hidden`,children:[(0,q.jsx)(S,{children:`Newsletters`}),(0,q.jsx)(C,{children:`How did this post perform`})]}),X&&!E?(0,q.jsx)(x,{className:`h-[25vw] p-6`,children:(0,q.jsx)(fe,{})}):(0,q.jsxs)(x,{className:`p-0`,children:[(0,q.jsxs)(`div`,{className:`grid ${Q} items-stretch border-b ${E?`pointer-events-none opacity-40`:``}`,children:[(0,q.jsxs)(z,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`emails.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`emails.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-purple opacity-50`}),`Sent`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.sent)})})]}),y&&(0,q.jsxs)(z,{className:`p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`opened_emails.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`opened_emails.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-blue opacity-50`}),`Opened`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.opened)})})]}),_&&(0,q.jsxs)(z,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`clicked_links.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`clicked_links.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-teal opacity-50`}),`Clicked`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.clicked)})})]})]}),(0,q.jsx)(V,{description:`Sends, opens and clicks will appear once every email has been sent`,title:`Your newsletter is being sent`,children:(0,q.jsxs)(`div`,{className:`mx-auto grid grid-cols-1 items-center justify-center gap-4 transition-all md:gap-0 ${Q===`grid-cols-2`&&`md:grid-cols-2`} ${Q===`grid-cols-3`&&`md:grid-cols-3`}`,children:[(0,q.jsxs)(`div`,{className:`relative border-r-0 px-6 ${(y||_)&&`md:border-r`}`,children:[(0,q.jsx)(U,{className:$,config:Ge,data:We,percentageLabel:`Sent`,percentageValue:c(1),size:g,tooltip:!1}),(y||_)&&(0,q.jsx)(ke,{})]}),y&&(0,q.jsxs)(`div`,{className:`group/block relative border-r-0 px-6 transition-all hover:bg-muted/25 ${_&&`md:border-r`}`,children:[(0,q.jsx)(Ae,{avgValue:c(W.openedRate),dataColor:`var(--chart-blue)`,value:c(B.openedRate)}),(0,q.jsx)(U,{className:$,config:qe,data:Ke,percentageLabel:`Open rate`,percentageValue:c(B.openedRate),size:g,tooltip:!1}),_&&(0,q.jsx)(ke,{})]}),_&&(0,q.jsxs)(`div`,{className:`group/block relative px-6 transition-all hover:bg-muted/25`,children:[(0,q.jsx)(Ae,{avgValue:c(W.clickedRate),dataColor:`var(--chart-teal)`,value:c(B.clickedRate)}),(0,q.jsx)(U,{className:$,config:Ye,data:Je,percentageLabel:`Click rate`,percentageValue:c(B.clickedRate),size:g,tooltip:!1})]})]})})]})]}),Y&&(0,q.jsx)(Ee,{feedbackStats:J}),Ue&&(0,q.jsxs)(w,{className:`group/datalist overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,q.jsxs)(b,{className:`p-0`,children:[(0,q.jsx)(S,{children:`Newsletter clicks`}),(0,q.jsx)(C,{children:`Which links resonated with your readers`})]}),(0,q.jsx)(f,{className:`mr-2`,children:`Members`})]}),X?(0,q.jsxs)(x,{className:`p-6 pt-0`,children:[(0,q.jsx)(A,{}),(0,q.jsx)(de,{className:`mt-6`})]}):(0,q.jsxs)(x,{className:`pb-0`,children:[(0,q.jsx)(A,{}),K.length>0?(0,q.jsx)(ce,{className:``,children:(0,q.jsx)(oe,{children:Re?.map(t=>{let r=B.clicked>0?Math.min(t.count/B.clicked,1):0,i=t.link.link_id,a=t.link.title,d=t.link.to,f=t.link.edited;return(0,q.jsxs)(le,{children:[n!==i&&(0,q.jsx)(ae,{style:{width:`${r?Math.round(r*100):0}%`}}),(0,q.jsx)(T,{className:`w-full`,children:n===i?(0,q.jsxs)(`div`,{ref:h,className:`flex w-full items-center gap-2`,children:[(0,q.jsx)(ue,{ref:p,className:`z-50 h-7 w-full border-border bg-background text-sm`,value:l,onChange:e=>u(e.target.value)}),(0,q.jsx)(v,{size:`sm`,onClick:Ie,children:`Update`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(v,{"aria-label":`Edit link`,className:s(`mr-2 shrink-0`,!e&&`bg-background`),size:e?`icon-sm`:`sm`,title:e?`Edit link`:void 0,variant:`subtle`,onClick:()=>Fe(i),children:(0,q.jsx)(ee,{})}),(0,q.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:d,rel:`noreferrer`,target:`_blank`,title:a,children:a}),f&&(0,q.jsx)(`span`,{className:`ml-1 text-gray-500`,children:`(edited)`})]})}),(0,q.jsxs)(se,{children:[(0,q.jsx)(re,{children:o(t.count||0)}),(0,q.jsx)(ie,{children:c(r)})]})]},i)})})}):(0,q.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]}),!X&&K.length>1&&(0,q.jsx)(ne,{children:(0,q.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 pl-4 text-sm text-green`,children:[(0,q.jsx)(m,{size:20,strokeWidth:1.5}),`Sent a broken link? You can update it!`]}),Le>1&&(0,q.jsx)(me,{className:`pb-0`,children:(0,q.jsxs)(ge,{children:[(0,q.jsx)(he,{disabled:!He,onClick:Be}),(0,q.jsx)(pe,{disabled:!Ve,onClick:ze})]})})]})})]})]})})]})};export{je as default};
|
|
1
|
+
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`e0197e5a-ab3d-4214-a82f-5f38b05ad94e`,e._sentryDebugIdIdentifier=`sentry-dbid-e0197e5a-ab3d-4214-a82f-5f38b05ad94e`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{n as r}from"./dist-pogVoW2G.js";import{h as i}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a}from"./router-provider-Cf-bcYZr.js";import{H as o,L as s,U as c,W as l,q as u,r as d}from"./shade-provider-DvrXKKQZ.js";import{a as f}from"./heading-Ch2Mb19A.js";import{A as p,Ar as m,L as h,bt as ee,k as g,rr as _,t as v}from"./button-CTHYSI-d.js";import{n as y,t as te}from"./avatar-YbECDnBI.js";import{a as b,i as ne,n as x,o as S,r as C,t as w}from"./card-Cd6xB_Ok.js";import{c as re,l as ie,n as ae,o as T,r as oe,s as se,t as ce,u as le}from"./data-list-CNs61th8.js";import{t as ue}from"./input-BHb2A_DU.js";import{n as de}from"./skeleton-C1s6yr9e.js";import{t as fe}from"./loading-indicator-DaRyGrxv.js";import{i as pe,n as me,o as he,r as ge,t as _e}from"./use-simple-pagination-B5sHbw5y.js";import{i as E,r as D,t as ve}from"./tabs-fHs3A8WC.js";import{d as O,f as k}from"./label-picker-DaivLdMw.js";import{M as ye,Xt as be,Yt as xe,st as A}from"./index-RuRs_qGS.js";import{a as j,o as M}from"./stats-BL_FJ7Ns.js";import{n as Se}from"./email-sending-status-context-7yrRlgjQ.js";import{n as N}from"./feedback-DW1DXdzT.js";import{n as Ce}from"./links-C8RnEJVJ.js";import{n as P}from"./post-analytics-context-v4FXmVDC.js";import{a as F,i as I,n as L,r as R,t as z}from"./kpi-card-Djsroynj.js";import{r as we,t as Te}from"./post-analytics-header-D2anehCj.js";import{t as B}from"./email-stats-polling-DCLzZSEX.js";import{i as V,n as H,r as U,t as W}from"./use-post-top-links-DjltnQuI.js";var G=e(t(),1),K=(e,t,n)=>{let{data:r,isLoading:i,error:a}=N(e,{...B(()=>n),searchParams:{limit:`50`,...t===void 0?{}:{score:t.toString()}}});return{feedback:(0,G.useMemo)(()=>r?.feedback?r.feedback:[],[r]),isLoading:i,error:a}},q=n(),Ee=({feedbackStats:e})=>{let{isAdmin7:t}=d(),{postId:n}=i(),r=a(),{isNewsletterDataHidden:o}=Se(),[s,m]=(0,G.useState)(`positive`),ee=+(s===`positive`),{post:_}=P(),{feedback:re,isLoading:ie}=K(n||``,ee,_?.email),{totalPages:ae,paginatedData:T,nextPage:oe,previousPage:se,hasNextPage:ce,hasPreviousPage:le}=_e({data:re,itemsPerPage:9}),ue=ie;return(0,q.jsxs)(w,{children:[(0,q.jsxs)(b,{className:`pb-5`,children:[(0,q.jsx)(S,{children:`Feedback`}),(0,q.jsx)(C,{children:`What did your readers think?`})]}),o?(0,q.jsx)(x,{className:`pb-3`,children:(0,q.jsx)(V,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`})}):e.totalFeedback>0?(0,q.jsx)(x,{className:`pb-3`,children:(0,q.jsxs)(V,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,q.jsx)(ve,{className:`pb-3`,defaultValue:`positive`,value:s,variant:t?`button-sm`:`button`,onValueChange:e=>m(e),children:(0,q.jsxs)(D,{className:`gap-1`,children:[(0,q.jsx)(E,{className:`h-7`,value:`positive`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(g,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`More like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:c(e.positiveFeedback/e.totalFeedback)})]})}),(0,q.jsx)(E,{className:`h-7`,value:`negative`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(p,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`Less like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:c(e.negativeFeedback/e.totalFeedback)})]})})]})}),(0,q.jsx)(f,{className:`mr-2 mb-3 lg:hidden xl:visible! xl:block!`,children:`Date`})]}),(0,q.jsx)(A,{}),ue?(0,q.jsx)(de,{className:`mt-3`,lines:3}):T&&T.length>0?(0,q.jsx)(`div`,{className:`flex w-full flex-col py-3`,children:T.map(e=>(0,q.jsxs)(`div`,{className:`flex h-10 w-full items-center justify-between gap-3 rounded-sm border-none px-2 text-sm hover:cursor-pointer hover:bg-accent`,onClick:()=>{r(`/members/${e.member.id}`)},children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,q.jsxs)(te,{className:`size-7`,children:[e.member?.avatar_image&&(0,q.jsx)(`img`,{className:`absolute aspect-square size-full`,src:e.member?.avatar_image}),(0,q.jsx)(y,{className:`text-white`,style:{backgroundColor:`${u(O(e.member),`45`,`55`)}`},children:k(e.member)})]}),O(e.member)]}),(0,q.jsx)(`div`,{className:`whitespace-nowrap text-muted-foreground`,children:l(e.created_at)})]},e.id))}):(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center py-8 text-center text-sm text-muted-foreground`,children:(0,q.jsxs)(`div`,{children:[`No `,s===`positive`?`positive`:`negative`,` feedback yet`]})})]})}):(0,q.jsxs)(x,{className:`flex grow flex-col items-center justify-center text-center text-sm text-muted-foreground`,children:[(0,q.jsx)(`div`,{children:`No members have given feedback yet`}),(0,q.jsx)(`div`,{children:`When someone does, you'll see their response here.`})]}),e.totalFeedback>0&&!o&&(0,q.jsx)(ne,{className:`grow-0`,children:(0,q.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,q.jsxs)(v,{variant:`subtle`,onClick:()=>{let e=`(feedback.post_id:'${n}'+feedback.score:1)`,t=`(feedback.post_id:'${n}'+feedback.score:0)`,i=`${encodeURIComponent(e)}&post=${n}`,a=`${encodeURIComponent(t)}&post=${n}`;r(`/members?filter=${s===`positive`?i:a}`)},children:[`View all`,(0,q.jsx)(h,{})]}),ae>1&&(0,q.jsx)(me,{className:`pb-0`,children:(0,q.jsxs)(ge,{children:[(0,q.jsx)(he,{disabled:!le,onClick:se}),(0,q.jsx)(pe,{disabled:!ce,onClick:oe})]})})]})})]})},De=({pauseLinkPolling:e=!1}={})=>{let{post:t,isPostLoading:n}=P(),r=(0,G.useMemo)(()=>t?{sent:t.email?.email_count||0,opened:t.email?.opened_count||0,clicked:t.count?.clicks||0,openedRate:t.email?.opened_count?t.email.opened_count/t.email.email_count:0,clickedRate:t.count?.clicks&&t.email?.email_count?t.count.clicks/t.email.email_count:0}:{sent:0,opened:0,clicked:0,openedRate:0,clickedRate:0},[t]),i=(0,G.useMemo)(()=>t?.newsletter?.id,[t]),{data:a,isLoading:o}=j({searchParams:i?{newsletter_id:i}:{},enabled:!!i}),s=(0,G.useMemo)(()=>a?.stats?a.stats.map(e=>e.post_id):[],[a]),{data:c,isLoading:l}=M({searchParams:i&&s.length>0?{newsletter_id:i,post_ids:s.join(`,`)}:{},enabled:!!i&&s.length>0}),u=(0,G.useMemo)(()=>{if(!a?.stats)return;let e=a.stats,t=c?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...a,stats:r}},[a,c]),d=o||l,{topLinks:f,isLoading:p,refetch:m}=W({pausePolling:e}),h=(0,G.useMemo)(()=>{if(!u||!u.stats)return{openRate:0,clickRate:0};let e=u.stats;if(e.length===0)return{openRate:0,clickRate:0};let t=e.reduce((e,t)=>e+(t.open_rate||0),0),n=e.reduce((e,t)=>e+(t.click_rate||0),0);return{openRate:Number((t/e.length).toFixed(2)),clickRate:Number((n/e.length).toFixed(2))}},[u]);return{stats:r,averageStats:(0,G.useMemo)(()=>({openedRate:h.openRate,clickedRate:h.clickRate}),[h]),topLinks:f,refetchTopLinks:m,isLoading:n||d||p}},Oe=({breakpoints:e={sm:1080,md:1280,lg:1360}}={})=>{let[t,n]=(0,G.useState)(`md`);return(0,G.useEffect)(()=>{let t=()=>{let t=window.innerWidth;t<e.sm?n(`sm`):t<e.md?n(`md`):n(`lg`)};return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),{chartSize:t,isSmall:t===`sm`,isMedium:t===`md`,isLarge:t===`lg`}},ke=()=>(0,q.jsx)(`div`,{className:`absolute top-1/2 -right-4 z-10 hidden size-8 -translate-y-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground md:visible! md:flex!`,children:(0,q.jsx)(_,{className:`ml-0.5`,size:16,strokeWidth:1.5})}),Ae=({dataColor:e,value:t,avgValue:n})=>(0,q.jsxs)(`div`,{className:`absolute top-6 left-1/2 z-50 flex w-[200px] -translate-x-1/2 flex-col items-stretch gap-1.5 rounded-md bg-background px-4 py-2 text-sm opacity-0 shadow-md transition-all group-hover/block:top-3 group-hover/block:opacity-100`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-blue opacity-50`,style:{backgroundColor:e}}),`This newsletter`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:t})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-gray opacity-80`}),`Average`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:n})]})]}),je=()=>{let{isAdmin7:e}=d(),t=a(),[n,i]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),p=(0,G.useRef)(null),h=(0,G.useRef)(null),{chartSize:g}=Oe(),_=xe(),y=be(),{hasNewsletterAnalytics:te,isNewsletterDataHidden:E,isStatusLoading:D}=Se(),{post:ve,isPostLoading:O,postId:k}=P(),j=e=>t(ye({filter:e})),M=ve,N=te;(0,G.useEffect)(()=>{!O&&!D&&!N&&t(`/posts/analytics/${k}`)},[t,k,O,D,N]);let{stats:B,averageStats:W,topLinks:K,isLoading:je,refetchTopLinks:Me}=De({pauseLinkPolling:n!==null}),{mutate:Ne}=Ce(),J=(0,G.useMemo)(()=>{if(!M?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=M.count.positive_feedback||0,t=M.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[M]),Pe=(0,G.useMemo)(()=>M?.newsletter?.feedback_enabled===!0,[M]),Y=(0,G.useMemo)(()=>J.totalFeedback>0?!0:Pe,[J.totalFeedback,Pe]),Fe=e=>{let t=H(K,e);t&&(i(e),u(t.link.to))},Ie=()=>{if(!n)return;let e=H(K,n);if(!e)return;let t=l.trim();if(t===``||t===e.link.to){i(null),u(``);return}Ne({originalUrl:e.link.originalTo,editedUrl:l,postId:k},{onSuccess:()=>{i(null),u(``),Me()},onError:()=>{r.error(`Couldn’t update the link. Please try again.`)}})},{totalPages:Le,paginatedData:Re,nextPage:ze,previousPage:Be,hasNextPage:Ve,hasPreviousPage:He}=_e({data:K,itemsPerPage:10});(0,G.useEffect)(()=>{if(n&&p.current){p.current.focus();let e=H(K,n),t=t=>{h.current&&!h.current.contains(t.target)&&l===e?.link.to&&(i(null),u(``))};return document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`mousedown`,t)}}},[n,l,K]);let X=je||O||D,Ue=_&&!E,Z=(0,q.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`–`}),We=[{datatype:`Sent`,value:1,fill:`url(#gradientPurple)`,color:`var(--chart-purple)`}],Ge={percentage:{label:`O`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Ke=[{datatype:`Average`,value:W.openedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:B.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],qe={percentage:{label:`Opened`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Je=[{datatype:`Average`,value:W.clickedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:B.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`}],Ye={percentage:{label:`Clicked`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Q=`grid-cols-3`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-[10/14] md:max-w-none lg:aspect-square`;return(!_||!y)&&(Q=`grid-cols-2`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-square md:max-w-none lg:aspect-[15/10]`),!_&&!y&&(Q=`grid-cols-1`,$=`aspect-square w-full sm:aspect-[16/10] md:max-w-[320px] md:max-h-[320px] lg:aspect-[12/10]`),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Te,{currentTab:`Newsletter`}),(0,q.jsx)(we,{children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 ${Y&&Ue&&`lg:grid-cols-2`}`,children:[(0,q.jsxs)(w,{className:Y&&Ue?`lg:col-span-2`:``,children:[(0,q.jsxs)(b,{className:`hidden`,children:[(0,q.jsx)(S,{children:`Newsletters`}),(0,q.jsx)(C,{children:`How did this post perform`})]}),X&&!E?(0,q.jsx)(x,{className:`h-[25vw] p-6`,children:(0,q.jsx)(fe,{})}):(0,q.jsxs)(x,{className:`p-0`,children:[(0,q.jsxs)(`div`,{className:`grid ${Q} items-stretch border-b ${E?`pointer-events-none opacity-40`:``}`,children:[(0,q.jsxs)(z,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`emails.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`emails.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-purple opacity-50`}),`Sent`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.sent)})})]}),y&&(0,q.jsxs)(z,{className:`p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`opened_emails.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`opened_emails.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-blue opacity-50`}),`Opened`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.opened)})})]}),_&&(0,q.jsxs)(z,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!E&&(0,q.jsx)(I,{onClick:()=>{j(`clicked_links.post_id:${k}`)},children:`View members →`}),(0,q.jsxs)(R,{onClick:()=>{j(`clicked_links.post_id:${k}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-teal opacity-50`}),`Clicked`]}),(0,q.jsx)(L,{children:(0,q.jsx)(F,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:E?Z:o(B.clicked)})})]})]}),(0,q.jsx)(V,{description:`Sends, opens and clicks will appear once every email has been sent`,title:`Your newsletter is being sent`,children:(0,q.jsxs)(`div`,{className:`mx-auto grid grid-cols-1 items-center justify-center gap-4 transition-all md:gap-0 ${Q===`grid-cols-2`&&`md:grid-cols-2`} ${Q===`grid-cols-3`&&`md:grid-cols-3`}`,children:[(0,q.jsxs)(`div`,{className:`relative border-r-0 px-6 ${(y||_)&&`md:border-r`}`,children:[(0,q.jsx)(U,{className:$,config:Ge,data:We,percentageLabel:`Sent`,percentageValue:c(1),size:g,tooltip:!1}),(y||_)&&(0,q.jsx)(ke,{})]}),y&&(0,q.jsxs)(`div`,{className:`group/block relative border-r-0 px-6 transition-all hover:bg-muted/25 ${_&&`md:border-r`}`,children:[(0,q.jsx)(Ae,{avgValue:c(W.openedRate),dataColor:`var(--chart-blue)`,value:c(B.openedRate)}),(0,q.jsx)(U,{className:$,config:qe,data:Ke,percentageLabel:`Open rate`,percentageValue:c(B.openedRate),size:g,tooltip:!1}),_&&(0,q.jsx)(ke,{})]}),_&&(0,q.jsxs)(`div`,{className:`group/block relative px-6 transition-all hover:bg-muted/25`,children:[(0,q.jsx)(Ae,{avgValue:c(W.clickedRate),dataColor:`var(--chart-teal)`,value:c(B.clickedRate)}),(0,q.jsx)(U,{className:$,config:Ye,data:Je,percentageLabel:`Click rate`,percentageValue:c(B.clickedRate),size:g,tooltip:!1})]})]})})]})]}),Y&&(0,q.jsx)(Ee,{feedbackStats:J}),Ue&&(0,q.jsxs)(w,{className:`group/datalist overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,q.jsxs)(b,{className:`p-0`,children:[(0,q.jsx)(S,{children:`Newsletter clicks`}),(0,q.jsx)(C,{children:`Which links resonated with your readers`})]}),(0,q.jsx)(f,{className:`mr-2`,children:`Members`})]}),X?(0,q.jsxs)(x,{className:`p-6 pt-0`,children:[(0,q.jsx)(A,{}),(0,q.jsx)(de,{className:`mt-6`})]}):(0,q.jsxs)(x,{className:`pb-0`,children:[(0,q.jsx)(A,{}),K.length>0?(0,q.jsx)(ce,{className:``,children:(0,q.jsx)(oe,{children:Re?.map(t=>{let r=B.clicked>0?Math.min(t.count/B.clicked,1):0,i=t.link.link_id,a=t.link.title,d=t.link.to,f=t.link.edited;return(0,q.jsxs)(le,{children:[n!==i&&(0,q.jsx)(ae,{style:{width:`${r?Math.round(r*100):0}%`}}),(0,q.jsx)(T,{className:`w-full`,children:n===i?(0,q.jsxs)(`div`,{ref:h,className:`flex w-full items-center gap-2`,children:[(0,q.jsx)(ue,{ref:p,className:`z-50 h-7 w-full border-border bg-background text-sm`,value:l,onChange:e=>u(e.target.value)}),(0,q.jsx)(v,{size:`sm`,onClick:Ie,children:`Update`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(v,{"aria-label":`Edit link`,className:s(`mr-2 shrink-0`,!e&&`bg-background`),size:e?`icon-sm`:`sm`,title:e?`Edit link`:void 0,variant:`subtle`,onClick:()=>Fe(i),children:(0,q.jsx)(ee,{})}),(0,q.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:d,rel:`noreferrer`,target:`_blank`,title:a,children:a}),f&&(0,q.jsx)(`span`,{className:`ml-1 text-gray-500`,children:`(edited)`})]})}),(0,q.jsxs)(se,{children:[(0,q.jsx)(re,{children:o(t.count||0)}),(0,q.jsx)(ie,{children:c(r)})]})]},i)})})}):(0,q.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]}),!X&&K.length>1&&(0,q.jsx)(ne,{children:(0,q.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 pl-4 text-sm text-green`,children:[(0,q.jsx)(m,{size:20,strokeWidth:1.5}),`Sent a broken link? You can update it!`]}),Le>1&&(0,q.jsx)(me,{className:`pb-0`,children:(0,q.jsxs)(ge,{children:[(0,q.jsx)(he,{disabled:!He,onClick:Be}),(0,q.jsx)(pe,{disabled:!Ve,onClick:ze})]})})]})})]})]})})]})};export{je as default};
|