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 +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]=`d60c4a90-c01f-46e0-8615-34dc6892b792`,e._sentryDebugIdIdentifier=`sentry-dbid-d60c4a90-c01f-46e0-8615-34dc6892b792`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{g as n,n as r}from"./hooks-0r7qxGEo.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{n as a}from"./dist-pogVoW2G.js";import{t as o}from"./dropzone-C0p6KEsa.js";import{a as s,c,n as l,o as u,r as d,s as f,t as p}from"./field-DCPPrQDr.js";import{t as m}from"./switch-BppWscjz.js";import{t as h}from"./settings-modal-3x4v8abr.js";import{Jt as g,Ut as _}from"./index-RuRs_qGS.js";import{t as v}from"./brand-icon-BFOhZhQt.js";import{t as y}from"./use-settings-navigation-CO2nUqDW.js";import{n as b}from"./global-data-context-ogIy0FUG.js";import{t as x}from"./integration-header-CrqD-b0Z.js";``+new URL(`pintura-screenshot-DTzk1LjU.png`,import.meta.url).href;var S=e(t(),1),C=r({method:`POST`,path:()=>`/files/upload/`,body:({file:e})=>{let t=new FormData;return t.append(`file`,e),t}}),w=i();function T(){let{updateRoute:e}=y(),[t,r]=(0,S.useState)({js:!1,css:!1}),{settings:i,config:T}=b(),[E]=_(i,[`pintura`]),{mutateAsync:D}=g(),{mutateAsync:O}=C(),k=n();(0,S.useEffect)(()=>{N(E||!1)},[E]);let[A,j]=(0,S.useState)(`Save`),[M,N]=(0,S.useState)(!!E),P=async()=>{let e=[{key:`pintura`,value:M}];try{j(`Saving...`),await Promise.all([D(e),new Promise(e=>{setTimeout(e,1e3)})]),j(`Saved`)}catch(e){k(e)}finally{setTimeout(()=>j(`Save`),1e3)}},F=async(e,t)=>{try{r(e=>({...e,[t]:!0}));let{files:n}=await O({file:e}),i=n[0].url,o=[{key:`pintura_${t}_url`,value:i}];await D(o),a.success(`Pintura ${t} uploaded`)}catch(e){k(e)}finally{r(e=>({...e,[t]:!1}))}};return(0,w.jsxs)(h,{cancelLabel:`Close`,dirty:M!==E,okLabel:A,okVariant:`default`,testId:`pintura-modal`,title:``,onClose:()=>{e(`integrations`)},onOk:P,children:[(0,w.jsx)(x,{detail:`Advanced image editing`,icon:(0,w.jsx)(v,{name:`pintura`,size:48}),title:`Pintura`}),(0,w.jsxs)(`div`,{className:`mt-7`,children:[!T.pintura&&(0,w.jsxs)(`div`,{className:`mb-7 flex flex-col items-stretch justify-between gap-4 rounded-sm bg-gray-50 p-4 md:flex-row md:p-7 dark:bg-gray-950`,children:[(0,w.jsxs)(`div`,{className:`md:basis-1/2`,children:[(0,w.jsx)(`p`,{className:`mb-4 text-md font-semibold`,children:`Add advanced image editing to Ghost, with Pintura`}),(0,w.jsx)(`p`,{className:`mb-4`,children:`Pintura is a powerful JavaScript image editor that allows you to crop, rotate, annotate and modify images directly inside Ghost.`}),(0,w.jsx)(`p`,{children:`Try a demo, purchase a license, and download the required CSS/JS files from pqina.nl/pintura/ to activate this feature.`})]}),(0,w.jsxs)(`div`,{className:`flex grow flex-col items-end justify-between gap-2 md:basis-1/2`,children:[(0,w.jsx)(`img`,{alt:`Pintura screenshot`,src:``+new URL(`pintura-screenshot-DTzk1LjU.png`,import.meta.url).href}),(0,w.jsx)(`a`,{className:`-mb-1 font-medium text-green`,href:`https://pqina.nl/pintura/ghost/?ref=ghost.org`,rel:`noopener noreferrer`,target:`_blank`,children:`Find out more →`})]})]}),(0,w.jsxs)(c,{className:`gap-0`,children:[(0,w.jsx)(f,{className:`mb-3 text-md! leading-supertight font-bold md:text-lg!`,children:`Pintura configuration`}),(0,w.jsxs)(s,{className:`gap-8 rounded-sm border border-border-default p-4 md:p-7`,children:[(0,w.jsxs)(p,{orientation:`horizontal`,children:[(0,w.jsxs)(l,{children:[(0,w.jsx)(u,{htmlFor:`pintura-enabled`,children:`Enable Pintura`}),(0,w.jsxs)(d,{children:[`Enable`,` `,(0,w.jsx)(`a`,{className:`text-green`,href:`https://pqina.nl/pintura/ghost/?ref=ghost.org`,rel:`noopener noreferrer`,target:`_blank`,children:`Pintura`}),` `,`for editing your images in Ghost`]})]}),(0,w.jsx)(m,{checked:M,id:`pintura-enabled`,onCheckedChange:N})]}),M&&!T.pintura&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`div`,{className:`flex flex-col justify-between gap-1 md:flex-row md:items-center`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`div`,{children:`Upload Pintura script`}),(0,w.jsxs)(`div`,{className:`text-sm text-gray-600`,children:[`Upload the `,(0,w.jsx)(`code`,{children:`pintura-umd.js`}),` file from the Pintura package`]})]}),(0,w.jsx)(o,{accept:{"text/javascript":[`.js`],"application/javascript":[`.js`]},disabled:t.js,variant:`button`,onDropAccepted:e=>void F(e[0],`js`),children:t.js?`Uploading...`:`Upload`})]}),(0,w.jsxs)(`div`,{className:`flex flex-col justify-between gap-1 md:flex-row md:items-center`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`div`,{children:`Upload Pintura styles`}),(0,w.jsxs)(`div`,{className:`text-sm text-gray-600`,children:[`Upload the `,(0,w.jsx)(`code`,{children:`pintura.css`}),` file from the Pintura package`]})]}),(0,w.jsx)(o,{accept:{"text/css":[`.css`]},disabled:t.css,variant:`button`,onDropAccepted:e=>void F(e[0],`css`),children:t.css?`Uploading...`:`Upload`})]})]})]})]})]})]})}export{T 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]=`09f323e0-bed9-442f-9a68-92782e723eef`,e._sentryDebugIdIdentifier=`sentry-dbid-09f323e0-bed9-442f-9a68-92782e723eef`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{g as n,n as r}from"./hooks-C-BDQ6Hs.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{t as a}from"./use-form-ElCUnbKi.js";import{H as o,n as s}from"./shade-provider-DvrXKKQZ.js";import{t as c}from"./grid-BYJO9x_v.js";import{t as l}from"./inline-Qoyy4r2g.js";import{t as u}from"./stack-C3OmgpUv.js";import{t as d}from"./text-BnCSdzao.js";import{D as f,t as p,v as m}from"./button-CTHYSI-d.js";import{t as h}from"./checkbox-DN_wUAjb.js";import{a as g,i as _,n as v,o as y,r as b,t as x}from"./copy-field-CReJL1Dw.js";import{a as S,c as C,i as w,n as T,o as E,r as D,s as O,t as k}from"./field-DCPPrQDr.js";import{a as A,c as j,i as ee,n as te,o as ne,r as re,s as ie,t as ae}from"./images-BSUWxquu.js";import{t as M}from"./input-BHb2A_DU.js";import{i as N,n as P,o as F,s as I,t as L}from"./select-DeloOYCg.js";import{t as R}from"./switch-BppWscjz.js";import{i as z,n as B,r as V,t as H}from"./tabs-CDb_TceL.js";import{n as oe,t as se}from"./toggle-group-D7ly9OGa.js";import{a as U,o as ce,r as le}from"./tiers-D7aGzwZ-.js";import{$t as ue,Ht as W,Jt as de,Ut as G,Vt as K,h as fe,m as pe,p as q,st as me}from"./index-CuDhPtkB.js";import{t as he}from"./validator-DgUCXsE8.js";import{t as ge}from"./modal-page--y-_IuN6.js";import{t as _e}from"./brand-icon-BFOhZhQt.js";import{t as ve}from"./use-settings-navigation-CO2nUqDW.js";import{n as ye}from"./confirmation-context-By_jX_cA.js";import{n as J}from"./global-data-context-ogIy0FUG.js";import{t as be}from"./html-field-D6G0G1d_.js";import{t as xe}from"./preview-modal-D8om_cQv.js";import{t as Se}from"./portal-frame-DMlXe-EA.js";import{t as Ce}from"./use-query-params-C_4J-y5d.js";var Y=e(t(),1),X=i(),we=({localSettings:e,settingKey:t,updateSetting:n})=>{let r=t.replaceAll(`_`,`-`);return(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:r,children:`Display option to purchase gift`}),(0,X.jsx)(R,{checked:!!W(e,t),id:r,onCheckedChange:e=>n(t,e)})]})},Te=({localSettings:e,updateSetting:t})=>{let[n,r,i,a,o,s]=G(e,[`transistor`,`transistor_portal_enabled`,`transistor_portal_heading`,`transistor_portal_description`,`transistor_portal_button_text`,`transistor_portal_url_template`]);if(n!==!0)return null;let c=r===!0;return(0,X.jsxs)(u,{gap:`xl`,children:[(0,X.jsx)(me,{}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(d,{as:`h5`,className:`md:text-lg`,leading:`supertight`,weight:`bold`,children:`Transistor`}),(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsxs)(T,{children:[(0,X.jsx)(E,{htmlFor:`transistor-portal-enabled`,children:`Enable Transistor integration`}),(0,X.jsx)(D,{children:`Show a section on the account page for members to access private podcasts`})]}),(0,X.jsx)(R,{checked:c,id:`transistor-portal-enabled`,onCheckedChange:e=>t(`transistor_portal_enabled`,e)})]})]}),c&&(0,X.jsxs)(S,{className:`gap-6`,children:[(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-heading`,children:`Heading`}),(0,X.jsx)(M,{id:`transistor-heading`,placeholder:`Podcasts`,value:i,onChange:e=>t(`transistor_portal_heading`,e.target.value)}),(0,X.jsx)(D,{children:`The heading displayed above the Transistor section`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-description`,children:`Description`}),(0,X.jsx)(M,{id:`transistor-description`,placeholder:`Access your RSS feeds`,value:a,onChange:e=>t(`transistor_portal_description`,e.target.value)}),(0,X.jsx)(D,{children:`A short description of what members can do`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-button-text`,children:`Button text`}),(0,X.jsx)(M,{id:`transistor-button-text`,placeholder:`Manage`,value:o,onChange:e=>t(`transistor_portal_button_text`,e.target.value)}),(0,X.jsx)(D,{children:`The text displayed on the button`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-url-template`,children:`URL template`}),(0,X.jsx)(M,{id:`transistor-url-template`,placeholder:`https://partner.transistor.fm/ghost/{memberUuid}`,value:s,onChange:e=>t(`transistor_portal_url_template`,e.target.value)}),(0,X.jsxs)(D,{children:[`Use `,`{memberUuid}`,` as a placeholder for the member ID`]})]})]})]})},Ee=e(he(),1),De=({localSettings:e,updateSetting:t,errors:n,setError:r})=>{let{siteData:i,settings:a,config:o}=J(),[s,c]=G(a,[`members_support_address`,`support_email_address`]),l=c?.toString()||q(s?.toString()||``,i,o),u=pe(i,o),[d,f]=(0,Y.useState)(l);return(0,Y.useEffect)(()=>{f(l)},[l]),(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsx)(we,{localSettings:e,settingKey:`portal_account_gift_promotion`,updateSetting:t}),(0,X.jsxs)(k,{"data-invalid":!!n.members_support_address||void 0,children:[(0,X.jsx)(E,{htmlFor:`members-support-address`,children:`Support email address`}),(0,X.jsx)(M,{"aria-invalid":!!n.members_support_address||void 0,id:`members-support-address`,value:d,onBlur:e=>{let n=e.target.value;n?Ee.default.isEmail(n)?r(`members_support_address`,``):r(`members_support_address`,`Enter a valid email address`):r(`members_support_address`,`Enter an email address`);let a=u&&n===`noreply@${u}`?`noreply`:n;t(`members_support_address`,a),f(q(a,i,o))},onChange:e=>f(e.target.value)}),n.members_support_address&&(0,X.jsx)(w,{children:n.members_support_address})]}),(0,X.jsx)(Te,{localSettings:e,updateSetting:t})]})})},Z=[{icon:`portal-icon-1`,label:`Portal icon 1`,value:`icon-1`},{icon:`portal-icon-2`,label:`Portal icon 2`,value:`icon-2`},{icon:`portal-icon-3`,label:`Portal icon 3`,value:`icon-3`},{icon:`portal-icon-4`,label:`Portal icon 4`,value:`icon-4`},{icon:`portal-icon-5`,label:`Portal icon 5`,value:`icon-5`}],Oe=({localSettings:e,updateSetting:t})=>{let{mutateAsync:r}=te(),i=n(),[a,o,s,l]=G(e,[`portal_button`,`portal_button_style`,`portal_button_icon`,`portal_button_signup_text`]),h=s||Z[0].value,[g,_]=(0,Y.useState)(Z.map(({value:e})=>e).includes(h)?void 0:h),v=async e=>{try{let n=ae(await r({file:e}));t(`portal_button_icon`,n),_(n)}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),i(t)}};return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`show-portal-button`,children:`Show portal button`}),(0,X.jsx)(R,{checked:!!a,id:`show-portal-button`,onCheckedChange:e=>t(`portal_button`,e)})]}),a&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{children:`Button style`}),(0,X.jsxs)(L,{value:o,onValueChange:e=>t(`portal_button_style`,e),children:[(0,X.jsx)(F,{"aria-label":`Button style`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:[{value:`icon-and-text`,label:`Icon and text`},{value:`icon-only`,label:`Icon only`},{value:`text-only`,label:`Text only`}].map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]}),o?.toString()?.includes(`icon`)&&(0,X.jsxs)(u,{gap:`sm`,children:[(0,X.jsx)(d,{as:`h6`,className:`text-base`,weight:`semibold`,children:`Icon`}),(0,X.jsxs)(c,{className:`w-full gap-px rounded-(--input-group-radius) bg-muted p-0.5`,columns:6,gap:`none`,children:[(0,X.jsx)(se,{"aria-label":`Portal button icon`,className:`contents border-0! bg-transparent! p-0`,type:`single`,value:h,onValueChange:e=>e&&t(`portal_button_icon`,e),children:Z.map(e=>(0,X.jsx)(oe,{"aria-label":e.label,className:`group h-[46px] w-full min-w-0 rounded-[calc(var(--radius-md)+1px)] p-3`,value:e.value,children:(0,X.jsx)(_e,{className:`size-[18px] opacity-70 transition-opacity group-hover:opacity-100 group-data-[state=on]:opacity-100`,name:e.icon})},e.value))}),(0,X.jsx)(re,{className:`h-[46px] w-full min-w-0 overflow-visible rounded-[calc(var(--radius-md)+1px)] ${h===g?`bg-background shadow-sm`:``}`,children:g?(0,X.jsxs)(j,{className:`overflow-visible`,children:[(0,X.jsx)(ie,{className:`rounded-md`,src:g}),(0,X.jsx)(p,{"aria-label":`Use uploaded Portal icon`,"aria-pressed":h===g,className:`absolute inset-0 z-10 size-full rounded-md bg-transparent hover:bg-transparent`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>t(`portal_button_icon`,g)}),(0,X.jsx)(A,{className:`-top-2 -right-2 z-20 opacity-100`,children:(0,X.jsx)(ee,{"aria-label":`Delete uploaded Portal icon`,className:`size-6 rounded-full p-0`,onClick:()=>{h===g&&t(`portal_button_icon`,null),_(void 0)},children:(0,X.jsx)(f,{})})})]}):(0,X.jsx)(ne,{accept:{"image/*":[]},"aria-label":`Upload Portal icon`,className:`size-full rounded-[calc(var(--radius-md)+1px)] border-0 bg-transparent p-0 hover:bg-surface-elevated`,inputAriaLabel:`Upload Portal icon`,onDropAccepted:e=>void v(e[0]),children:(0,X.jsx)(m,{className:`size-5`})})})]})]}),o?.toString()?.includes(`text`)&&(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`portal-signup-button-text`,children:`Signup button text`}),(0,X.jsx)(M,{id:`portal-signup-button-text`,value:l,onChange:e=>t(`portal_button_signup_text`,e.target.value)})]})]})]})})},Q=({name:e,value:t})=>(0,X.jsxs)(x,{className:`lg:flex-row lg:items-center lg:gap-5`,value:t,children:[(0,X.jsx)(g,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:e}),(0,X.jsxs)(b,{children:[(0,X.jsx)(y,{}),(0,X.jsx)(v,{children:(0,X.jsx)(_,{})})]})]}),ke=()=>{let[e,t]=(0,Y.useState)(!1),[n,r]=(0,Y.useState)(``),{siteData:i}=J(),{data:{tiers:a}={}}=U(),o=le(a||[]),s=ue();(0,Y.useEffect)(()=>{o?.length&&!n&&r(o[0].id)},[o,n]);let c=o?.map(e=>({label:e.name,value:e.id})),f=fe(i);return(0,X.jsx)(ge,{className:`max-w-[920px] text-base text-foreground`,children:(0,X.jsxs)(u,{gap:`2xl`,children:[(0,X.jsxs)(u,{gap:`xs`,children:[(0,X.jsx)(ge.Title,{className:`mb-0`,children:`Links`}),(0,X.jsxs)(d,{children:[`Use these `,e?`data attributes`:`links`,` in your theme to show pages of Portal.`]})]}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsxs)(l,{as:`header`,className:`border-b border-border pb-2`,justify:`between`,children:[(0,X.jsx)(d,{as:`h2`,size:`xl`,weight:`semibold`,children:`Generic`}),(0,X.jsx)(H,{value:e?`data-attributes`:`links`,variant:`segmented-sm`,onValueChange:e=>t(e===`data-attributes`),children:(0,X.jsxs)(V,{"aria-label":`Portal link format`,children:[(0,X.jsx)(z,{value:`links`,children:`Links`}),(0,X.jsx)(z,{value:`data-attributes`,children:`Data attributes`})]})})]}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Default`,value:e?`data-portal`:`${f}#/portal`}),(0,X.jsx)(Q,{name:`Sign in`,value:e?`data-portal="signin"`:`${f}#/portal/signin`}),(0,X.jsx)(Q,{name:`Sign up`,value:e?`data-portal="signup"`:`${f}#/portal/signup`}),s&&(0,X.jsx)(Q,{name:`Gift subscriptions`,value:e?`data-portal="gift"`:`${f}#/portal/gift`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsx)(d,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Tiers`}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsxs)(k,{className:`lg:flex-row lg:items-center lg:justify-between lg:gap-5 [&>*]:w-auto`,children:[(0,X.jsx)(E,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:`Tier`}),(0,X.jsxs)(L,{value:n,onValueChange:r,children:[(0,X.jsx)(F,{"aria-label":`Tier`,className:`w-fit`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:c.map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]}),(0,X.jsx)(Q,{name:`Signup / Monthly`,value:e?`data-portal="signup/${n}/monthly"`:`${f}#/portal/signup/${n}/monthly`}),(0,X.jsx)(Q,{name:`Signup / Yearly`,value:e?`data-portal="signup/${n}/yearly"`:`${f}#/portal/signup/${n}/yearly`}),(0,X.jsx)(Q,{name:`Signup / Free`,value:e?`data-portal="signup/free"`:`${f}#/portal/signup/free`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsx)(d,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Account`}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Account`,value:e?`data-portal="account"`:`${f}#/portal/account`}),(0,X.jsx)(Q,{name:`Account / Plans`,value:e?`data-portal="account/plans"`:`${f}#/portal/account/plans`}),(0,X.jsx)(Q,{name:`Account / Profile`,value:e?`data-portal="account/profile"`:`${f}#/portal/account/profile`}),(0,X.jsx)(Q,{name:`Account / Newsletters`,value:e?`data-portal="account/newsletters"`:`${f}#/portal/account/newsletters`}),(0,X.jsx)(Q,{name:`Account / Newsletter help`,value:e?`data-portal="account/newsletters/help"`:`${f}#/portal/account/newsletters/help`})]})]})})]})})},Ae=({settings:e,config:t,tiers:n,siteData:r,selectedTab:i,previewTheme:a})=>{if(!r?.url)return null;let o=n.filter(e=>e.visibility===`public`&&e.type===`paid`).map(e=>e.id),s=r.url.replace(/\/$/,``),c=JSON.parse(W(e,`portal_plans`)||``),l=new URLSearchParams;l.append(`button`,W(e,`portal_button`)?`true`:`false`),l.append(`name`,W(e,`portal_name`)?`true`:`false`),l.append(`signupGiftPromotion`,W(e,`portal_signup_gift_promotion`)?`true`:`false`),l.append(`accountGiftPromotion`,W(e,`portal_account_gift_promotion`)?`true`:`false`),l.append(`isFree`,c.includes(`free`)?`true`:`false`),l.append(`isMonthly`,K(e,t)&&c.includes(`monthly`)?`true`:`false`),l.append(`isYearly`,K(e,t)&&c.includes(`yearly`)?`true`:`false`),l.append(`page`,i===`account`?`accountHome`:`signup`),l.append(`previewTheme`,a),l.append(`buttonIcon`,encodeURIComponent(W(e,`portal_button_icon`)||`icon-1`)),l.append(`signupButtonText`,encodeURIComponent(W(e,`portal_button_signup_text`)||``)),l.append(`membersSignupAccess`,W(e,`members_signup_access`)||`all`),l.append(`allowSelfSignup`,W(e,`allow_self_signup`)||`false`),l.append(`signupTermsHtml`,W(e,`portal_signup_terms_html`)||``),l.append(`signupCheckboxRequired`,W(e,`portal_signup_checkbox_required`)?`true`:`false`),l.append(`portalProducts`,o.join(`,`));let u=W(e,`portal_default_plan`);u&&l.append(`portalDefaultPlan`,u),c&&c.length&&l.append(`portalPrices`,encodeURIComponent(c.join(`,`)));let d=W(e,`accent_color`);d!=null&&l.append(`accentColor`,encodeURIComponent(d));let f=W(e,`portal_button_style`);return f&&l.append(`buttonStyle`,encodeURIComponent(f)),l.append(`disableBackground`,`false`),W(e,`transistor`)&&l.append(`transistorPortalSettings`,JSON.stringify({enabled:W(e,`transistor_portal_enabled`),heading:W(e,`transistor_portal_heading`)||`Podcasts`,description:W(e,`transistor_portal_description`)||`Access your RSS feeds`,button_text:W(e,`transistor_portal_button_text`)||`Manage`,url_template:W(e,`transistor_portal_url_template`)||`https://partner.transistor.fm/ghost/{memberUuid}`})),l.append(`admin_toolbar`,`0`),`${s}/?v=modal-portal-settings#/portal/preview?${l.toString()}`},je=({darkMode:e,selectedTab:t=`signup`,localSettings:n,localTiers:r})=>{let{siteData:i,config:a}=J(),o=Ae({settings:n,tiers:r,selectedTab:t,previewTheme:e?`dark`:`light`,siteData:i,config:a}),s=(0,X.jsx)(X.Fragment,{});switch(t){case`account`:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break;case`links`:s=(0,X.jsx)(ke,{});break;default:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break}return s},Me=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a})=>{let{config:s}=J(),[c,l,u,d,f,p]=G(e,[`members_signup_access`,`portal_name`,`portal_signup_terms_html`,`portal_signup_checkbox_required`,`portal_plans`,`portal_default_plan`]),m=JSON.parse(f?.toString()||`[]`),g=(0,Y.useMemo)(()=>{let e=document.createElement(`div`);return e.innerHTML=u?.toString()||``,e.innerText.length},[u]),_=(0,Y.useCallback)((e,t)=>{a(e,t)},[]);(0,Y.useEffect)(()=>{g>115?_(`portal_signup_terms_html`,`Signup notice is too long`):_(`portal_signup_terms_html`,void 0)},[g,_]);let v=e=>{let n=m.indexOf(e);n===-1?m.push(e):m.splice(n,1),t(`portal_plans`,JSON.stringify(m)),p===`yearly`?!m.includes(`yearly`)&&m.includes(`monthly`)&&t(`portal_default_plan`,`monthly`):p===`monthly`&&(m.includes(`monthly`)||t(`portal_default_plan`,`yearly`))},y=c===`all`||c===`paid`,b=c===`all`,x=K(e,s),w=[];n&&n.forEach(e=>{e.type===`free`&&b&&w.push({checked:m.includes(`free`),disabled:!y,label:e.name,value:`free`,testId:`free-tier-checkbox`,onChange:n=>{m.includes(`free`)&&!n&&m.splice(m.indexOf(`free`),1),!m.includes(`free`)&&n&&m.push(`free`),t(`portal_plans`,JSON.stringify(m)),r({...e,visibility:n?`public`:`none`})}})});let T=le(n)||[],D=[{value:`yearly`,label:`Yearly`},{value:`monthly`,label:`Monthly`}];x&&T.length>0&&T.forEach(e=>{w.push({checked:e.visibility===`public`,label:e.name,value:e.id,onChange:t=>r({...e,visibility:t?`public`:`none`})})});let A=x&&T.length>0&&T.some(e=>e.visibility===`public`);return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`portal-display-name`,children:`Display name in signup form`}),(0,X.jsx)(R,{checked:!!l,disabled:!y,id:`portal-display-name`,onCheckedChange:e=>t(`portal_name`,e)})]}),(0,X.jsxs)(C,{children:[(0,X.jsx)(O,{variant:`label`,children:`Available tiers`}),(0,X.jsx)(S,{"data-slot":`checkbox-group`,children:w.map(e=>(0,X.jsxs)(k,{"data-disabled":e.disabled||void 0,orientation:`horizontal`,children:[(0,X.jsx)(h,{checked:e.checked,"data-testid":e.testId,disabled:e.disabled,id:`portal-tier-${e.value}`,onCheckedChange:t=>e.onChange(t===!0)}),(0,X.jsx)(E,{htmlFor:`portal-tier-${e.value}`,children:e.label})]},e.value))})]}),A&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(C,{children:[(0,X.jsx)(O,{variant:`label`,children:`Available prices`}),(0,X.jsx)(S,{"data-slot":`checkbox-group`,children:[`monthly`,`yearly`].map(e=>(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(h,{checked:m.includes(e),disabled:!y,id:`portal-plan-${e}`,onCheckedChange:()=>v(e)}),(0,X.jsx)(E,{className:`capitalize`,htmlFor:`portal-plan-${e}`,children:e})]},e))})]}),m.includes(`yearly`)&&m.includes(`monthly`)&&(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{children:`Default price at signup`}),(0,X.jsxs)(L,{value:typeof p==`string`?p:``,onValueChange:e=>t(`portal_default_plan`,e),children:[(0,X.jsx)(F,{"aria-label":`Default price at signup`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:D.map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]})]}),(0,X.jsx)(be,{error:!!i.portal_signup_terms_html,hint:i.portal_signup_terms_html||(0,X.jsxs)(X.Fragment,{children:[`Recommended: `,(0,X.jsx)(`strong`,{children:o(115)}),` characters. You've used`,` `,(0,X.jsx)(`strong`,{className:`text-green`,children:o(g)})]}),nodes:`MINIMAL_NODES`,placeholder:`By signing up, I agree to receive emails from ...`,title:`Display notice at signup`,value:u?.toString(),onChange:e=>t(`portal_signup_terms_html`,e)}),u?.toString()&&(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`portal-require-agreement`,children:`Require agreement`}),(0,X.jsx)(R,{checked:!!d,disabled:!y,id:`portal-require-agreement`,onCheckedChange:e=>t(`portal_signup_checkbox_required`,e)})]}),(0,X.jsx)(we,{localSettings:e,settingKey:`portal_signup_gift_promotion`,updateSetting:t})]})})},Ne=r({path:()=>`/settings/verifications`,method:`PUT`,body:({token:e})=>({token:e}),updateQueries:{dataType:`SettingsResponseType`,emberUpdateType:`createOrUpdate`,update:e=>({...e,settings:e.settings})}}),Pe={signupOptions:`signup`,lookAndFeel:`signup`,accountPage:`account`},$=`border-b-2 border-transparent after:hidden data-[state=active]:border-foreground`,Fe=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a,selectedTab:o,onTabChange:s})=>(0,X.jsx)(`div`,{className:`pt-4`,children:(0,X.jsxs)(H,{value:o,variant:`underline`,onValueChange:e=>s(e),children:[(0,X.jsxs)(V,{children:[(0,X.jsx)(z,{className:$,value:`signupOptions`,children:`Signup options`}),(0,X.jsx)(z,{className:$,value:`lookAndFeel`,children:`Look & feel`}),(0,X.jsx)(z,{className:$,value:`accountPage`,children:`Account page`})]}),(0,X.jsx)(B,{value:`signupOptions`,children:(0,X.jsx)(Me,{errors:i,localSettings:e,localTiers:n,setError:a,updateSetting:t,updateTier:r})}),(0,X.jsx)(B,{value:`lookAndFeel`,children:(0,X.jsx)(Oe,{localSettings:e,updateSetting:t})}),(0,X.jsx)(B,{value:`accountPage`,children:(0,X.jsx)(De,{errors:i,localSettings:e,setError:a,updateSetting:t})})]})}),Ie=()=>{let{updateRoute:e}=ve(),{darkMode:t}=s(),[r,i]=(0,Y.useState)(`signup`),[o,c]=(0,Y.useState)(`signupOptions`),l=n(),{confirm:u}=ye(),{settings:d,siteData:f,config:p}=J(),{mutateAsync:m}=de(),{data:{tiers:h}={}}=U(),{mutateAsync:g}=ce(),{mutateAsync:_}=Ne(),{getParam:v}=Ce(),y=v(`verifyEmail`);(0,Y.useEffect)(()=>{y&&(async({token:e})=>{try{let{settings:t}=await _({token:e}),[n]=G(t,[`members_support_address`]);u({title:`Support address verified`,prompt:(0,X.jsxs)(X.Fragment,{children:[`Your support email address has been changed to `,(0,X.jsx)(`strong`,{children:n}),`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Please try again.`;e instanceof Error&&e.message===`Token expired`&&(t=`Verification link has expired.`),u({title:`Error verifying support address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),l(e,{withToast:!1})}})({token:y})},[u,l,y,_]);let{formState:b,setFormState:x,saveState:S,handleSave:C,updateForm:w,okProps:T}=a({initialState:{settings:d,tiers:h||[]},savingDelay:500,onSave:async()=>{await Promise.all(b.tiers.filter(({dirty:e})=>e).map(e=>g(e))),x(e=>({...e,tiers:b.tiers.map(e=>({...e,dirty:!1}))}));let e=b.settings.filter(e=>e.dirty);if(!e.length)return;let{meta:t,settings:n}=await m(e);if(x(e=>({...e,settings:b.settings.map(e=>({...e,dirty:!1}))})),t?.sent_email_verification){let e=b.settings.find(e=>e.key===`members_support_address`)?.value,t=n.find(e=>e.key===`support_email_address`)?.value||q(n.find(e=>e.key===`members_support_address`)?.value?.toString()||`noreply`,f,p);u({title:`Confirm email address`,prompt:(0,X.jsxs)(X.Fragment,{children:[`We've sent a confirmation email to `,(0,X.jsx)(`strong`,{children:e}),`. Until verified, your support email address will remain `,t,`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}},onSaveError:l});(0,Y.useEffect)(()=>{!b.tiers.length&&h?.length&&x(e=>({...e,tiers:h}))},[h,b.tiers,x]);let[E,D]=(0,Y.useState)({}),O=(e,t)=>{w(n=>({...n,settings:n.settings.map(n=>n.key===e?{...n,value:t,dirty:!0}:n)}))},k=(e,t)=>{D(n=>({...n,[e]:t}))},A=e=>{w(t=>({...t,tiers:t.tiers.map(t=>t.id===e.id?{...e,dirty:!0}:t)}))},j=e=>{i(e),e===`account`?c(`accountPage`):e===`signup`&&o===`accountPage`&&c(`signupOptions`)},ee=(0,X.jsx)(Fe,{errors:E,localSettings:b.settings,localTiers:b.tiers,selectedTab:o,setError:k,updateSetting:O,updateTier:A,onTabChange:e=>{c(e),i(Pe[e])}}),te=(0,X.jsx)(je,{darkMode:t,localSettings:b.settings,localTiers:b.tiers,selectedTab:r}),ne=(0,X.jsx)(H,{value:r,variant:`button`,onValueChange:e=>j(e),children:(0,X.jsxs)(V,{children:[(0,X.jsx)(z,{value:`signup`,children:`Signup`}),(0,X.jsx)(z,{value:`account`,children:`Account page`}),(0,X.jsx)(z,{value:`links`,children:`Links`})]})});return(0,X.jsx)(xe,{buttonsDisabled:T.disabled,cancelLabel:`Close`,dirty:S===`unsaved`,okLabel:T.label||`Save`,okVariant:T.variant,preview:te,previewBgColor:r===`links`?`white`:`greygradient`,previewToolbarTabs:ne,sidebar:ee,testId:`portal-modal`,title:`Portal`,onClose:()=>{e(`portal`)},onOk:async()=>{Object.values(E).filter(Boolean).length||await C({force:!0})}})};export{Ie 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]=`a881e804-c468-4df8-9d9e-e572267371fb`,e._sentryDebugIdIdentifier=`sentry-dbid-a881e804-c468-4df8-9d9e-e572267371fb`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{g as n,n as r}from"./hooks-0r7qxGEo.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{t as a}from"./use-form-ElCUnbKi.js";import{H as o,n as s}from"./shade-provider-DvrXKKQZ.js";import{t as c}from"./grid-BYJO9x_v.js";import{t as l}from"./inline-Qoyy4r2g.js";import{t as u}from"./stack-C3OmgpUv.js";import{t as d}from"./text-BnCSdzao.js";import{D as f,t as p,v as m}from"./button-CTHYSI-d.js";import{t as h}from"./checkbox-DN_wUAjb.js";import{a as g,i as _,n as v,o as y,r as b,t as x}from"./copy-field-CReJL1Dw.js";import{a as S,c as C,i as w,n as T,o as E,r as D,s as O,t as k}from"./field-DCPPrQDr.js";import{a as A,c as j,i as ee,n as te,o as ne,r as re,s as ie,t as ae}from"./images-DTZtaIAr.js";import{t as M}from"./input-BHb2A_DU.js";import{i as N,n as P,o as F,s as I,t as L}from"./select-DeloOYCg.js";import{t as R}from"./switch-BppWscjz.js";import{i as z,n as B,r as V,t as H}from"./tabs-fHs3A8WC.js";import{n as oe,t as se}from"./toggle-group-BFWCtH3p.js";import{a as U,o as ce,r as le}from"./tiers-DlvS8D6_.js";import{$t as ue,Ht as W,Jt as de,Ut as G,Vt as K,h as fe,m as pe,p as q,st as me}from"./index-RuRs_qGS.js";import{t as he}from"./validator-DgUCXsE8.js";import{t as ge}from"./modal-page--y-_IuN6.js";import{t as _e}from"./brand-icon-BFOhZhQt.js";import{t as ve}from"./use-settings-navigation-CO2nUqDW.js";import{n as ye}from"./confirmation-context-By_jX_cA.js";import{n as J}from"./global-data-context-ogIy0FUG.js";import{t as be}from"./html-field-vTe2q1be.js";import{t as xe}from"./preview-modal-BrZza3R_.js";import{t as Se}from"./portal-frame-DMlXe-EA.js";import{t as Ce}from"./use-query-params-C_4J-y5d.js";var Y=e(t(),1),X=i(),we=({localSettings:e,settingKey:t,updateSetting:n})=>{let r=t.replaceAll(`_`,`-`);return(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:r,children:`Display option to purchase gift`}),(0,X.jsx)(R,{checked:!!W(e,t),id:r,onCheckedChange:e=>n(t,e)})]})},Te=({localSettings:e,updateSetting:t})=>{let[n,r,i,a,o,s]=G(e,[`transistor`,`transistor_portal_enabled`,`transistor_portal_heading`,`transistor_portal_description`,`transistor_portal_button_text`,`transistor_portal_url_template`]);if(n!==!0)return null;let c=r===!0;return(0,X.jsxs)(u,{gap:`xl`,children:[(0,X.jsx)(me,{}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(d,{as:`h5`,className:`md:text-lg`,leading:`supertight`,weight:`bold`,children:`Transistor`}),(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsxs)(T,{children:[(0,X.jsx)(E,{htmlFor:`transistor-portal-enabled`,children:`Enable Transistor integration`}),(0,X.jsx)(D,{children:`Show a section on the account page for members to access private podcasts`})]}),(0,X.jsx)(R,{checked:c,id:`transistor-portal-enabled`,onCheckedChange:e=>t(`transistor_portal_enabled`,e)})]})]}),c&&(0,X.jsxs)(S,{className:`gap-6`,children:[(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-heading`,children:`Heading`}),(0,X.jsx)(M,{id:`transistor-heading`,placeholder:`Podcasts`,value:i,onChange:e=>t(`transistor_portal_heading`,e.target.value)}),(0,X.jsx)(D,{children:`The heading displayed above the Transistor section`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-description`,children:`Description`}),(0,X.jsx)(M,{id:`transistor-description`,placeholder:`Access your RSS feeds`,value:a,onChange:e=>t(`transistor_portal_description`,e.target.value)}),(0,X.jsx)(D,{children:`A short description of what members can do`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-button-text`,children:`Button text`}),(0,X.jsx)(M,{id:`transistor-button-text`,placeholder:`Manage`,value:o,onChange:e=>t(`transistor_portal_button_text`,e.target.value)}),(0,X.jsx)(D,{children:`The text displayed on the button`})]}),(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`transistor-url-template`,children:`URL template`}),(0,X.jsx)(M,{id:`transistor-url-template`,placeholder:`https://partner.transistor.fm/ghost/{memberUuid}`,value:s,onChange:e=>t(`transistor_portal_url_template`,e.target.value)}),(0,X.jsxs)(D,{children:[`Use `,`{memberUuid}`,` as a placeholder for the member ID`]})]})]})]})},Ee=e(he(),1),De=({localSettings:e,updateSetting:t,errors:n,setError:r})=>{let{siteData:i,settings:a,config:o}=J(),[s,c]=G(a,[`members_support_address`,`support_email_address`]),l=c?.toString()||q(s?.toString()||``,i,o),u=pe(i,o),[d,f]=(0,Y.useState)(l);return(0,Y.useEffect)(()=>{f(l)},[l]),(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsx)(we,{localSettings:e,settingKey:`portal_account_gift_promotion`,updateSetting:t}),(0,X.jsxs)(k,{"data-invalid":!!n.members_support_address||void 0,children:[(0,X.jsx)(E,{htmlFor:`members-support-address`,children:`Support email address`}),(0,X.jsx)(M,{"aria-invalid":!!n.members_support_address||void 0,id:`members-support-address`,value:d,onBlur:e=>{let n=e.target.value;n?Ee.default.isEmail(n)?r(`members_support_address`,``):r(`members_support_address`,`Enter a valid email address`):r(`members_support_address`,`Enter an email address`);let a=u&&n===`noreply@${u}`?`noreply`:n;t(`members_support_address`,a),f(q(a,i,o))},onChange:e=>f(e.target.value)}),n.members_support_address&&(0,X.jsx)(w,{children:n.members_support_address})]}),(0,X.jsx)(Te,{localSettings:e,updateSetting:t})]})})},Z=[{icon:`portal-icon-1`,label:`Portal icon 1`,value:`icon-1`},{icon:`portal-icon-2`,label:`Portal icon 2`,value:`icon-2`},{icon:`portal-icon-3`,label:`Portal icon 3`,value:`icon-3`},{icon:`portal-icon-4`,label:`Portal icon 4`,value:`icon-4`},{icon:`portal-icon-5`,label:`Portal icon 5`,value:`icon-5`}],Oe=({localSettings:e,updateSetting:t})=>{let{mutateAsync:r}=te(),i=n(),[a,o,s,l]=G(e,[`portal_button`,`portal_button_style`,`portal_button_icon`,`portal_button_signup_text`]),h=s||Z[0].value,[g,_]=(0,Y.useState)(Z.map(({value:e})=>e).includes(h)?void 0:h),v=async e=>{try{let n=ae(await r({file:e}));t(`portal_button_icon`,n),_(n)}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),i(t)}};return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(k,{orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`show-portal-button`,children:`Show portal button`}),(0,X.jsx)(R,{checked:!!a,id:`show-portal-button`,onCheckedChange:e=>t(`portal_button`,e)})]}),a&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{children:`Button style`}),(0,X.jsxs)(L,{value:o,onValueChange:e=>t(`portal_button_style`,e),children:[(0,X.jsx)(F,{"aria-label":`Button style`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:[{value:`icon-and-text`,label:`Icon and text`},{value:`icon-only`,label:`Icon only`},{value:`text-only`,label:`Text only`}].map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]}),o?.toString()?.includes(`icon`)&&(0,X.jsxs)(u,{gap:`sm`,children:[(0,X.jsx)(d,{as:`h6`,className:`text-base`,weight:`semibold`,children:`Icon`}),(0,X.jsxs)(c,{className:`w-full gap-px rounded-(--input-group-radius) bg-muted p-0.5`,columns:6,gap:`none`,children:[(0,X.jsx)(se,{"aria-label":`Portal button icon`,className:`contents border-0! bg-transparent! p-0`,type:`single`,value:h,onValueChange:e=>e&&t(`portal_button_icon`,e),children:Z.map(e=>(0,X.jsx)(oe,{"aria-label":e.label,className:`group h-[46px] w-full min-w-0 rounded-[calc(var(--radius-md)+1px)] p-3`,value:e.value,children:(0,X.jsx)(_e,{className:`size-[18px] opacity-70 transition-opacity group-hover:opacity-100 group-data-[state=on]:opacity-100`,name:e.icon})},e.value))}),(0,X.jsx)(re,{className:`h-[46px] w-full min-w-0 overflow-visible rounded-[calc(var(--radius-md)+1px)] ${h===g?`bg-background shadow-sm`:``}`,children:g?(0,X.jsxs)(j,{className:`overflow-visible`,children:[(0,X.jsx)(ie,{className:`rounded-md`,src:g}),(0,X.jsx)(p,{"aria-label":`Use uploaded Portal icon`,"aria-pressed":h===g,className:`absolute inset-0 z-10 size-full rounded-md bg-transparent hover:bg-transparent`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>t(`portal_button_icon`,g)}),(0,X.jsx)(A,{className:`-top-2 -right-2 z-20 opacity-100`,children:(0,X.jsx)(ee,{"aria-label":`Delete uploaded Portal icon`,className:`size-6 rounded-full p-0`,onClick:()=>{h===g&&t(`portal_button_icon`,null),_(void 0)},children:(0,X.jsx)(f,{})})})]}):(0,X.jsx)(ne,{accept:{"image/*":[]},"aria-label":`Upload Portal icon`,className:`size-full rounded-[calc(var(--radius-md)+1px)] border-0 bg-transparent p-0 hover:bg-surface-elevated`,inputAriaLabel:`Upload Portal icon`,onDropAccepted:e=>void v(e[0]),children:(0,X.jsx)(m,{className:`size-5`})})})]})]}),o?.toString()?.includes(`text`)&&(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{htmlFor:`portal-signup-button-text`,children:`Signup button text`}),(0,X.jsx)(M,{id:`portal-signup-button-text`,value:l,onChange:e=>t(`portal_button_signup_text`,e.target.value)})]})]})]})})},Q=({name:e,value:t})=>(0,X.jsxs)(x,{className:`lg:flex-row lg:items-center lg:gap-5`,value:t,children:[(0,X.jsx)(g,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:e}),(0,X.jsxs)(b,{children:[(0,X.jsx)(y,{}),(0,X.jsx)(v,{children:(0,X.jsx)(_,{})})]})]}),ke=()=>{let[e,t]=(0,Y.useState)(!1),[n,r]=(0,Y.useState)(``),{siteData:i}=J(),{data:{tiers:a}={}}=U(),o=le(a||[]),s=ue();(0,Y.useEffect)(()=>{o?.length&&!n&&r(o[0].id)},[o,n]);let c=o?.map(e=>({label:e.name,value:e.id})),f=fe(i);return(0,X.jsx)(ge,{className:`max-w-[920px] text-base text-foreground`,children:(0,X.jsxs)(u,{gap:`2xl`,children:[(0,X.jsxs)(u,{gap:`xs`,children:[(0,X.jsx)(ge.Title,{className:`mb-0`,children:`Links`}),(0,X.jsxs)(d,{children:[`Use these `,e?`data attributes`:`links`,` in your theme to show pages of Portal.`]})]}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsxs)(l,{as:`header`,className:`border-b border-border pb-2`,justify:`between`,children:[(0,X.jsx)(d,{as:`h2`,size:`xl`,weight:`semibold`,children:`Generic`}),(0,X.jsx)(H,{value:e?`data-attributes`:`links`,variant:`segmented-sm`,onValueChange:e=>t(e===`data-attributes`),children:(0,X.jsxs)(V,{"aria-label":`Portal link format`,children:[(0,X.jsx)(z,{value:`links`,children:`Links`}),(0,X.jsx)(z,{value:`data-attributes`,children:`Data attributes`})]})})]}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Default`,value:e?`data-portal`:`${f}#/portal`}),(0,X.jsx)(Q,{name:`Sign in`,value:e?`data-portal="signin"`:`${f}#/portal/signin`}),(0,X.jsx)(Q,{name:`Sign up`,value:e?`data-portal="signup"`:`${f}#/portal/signup`}),s&&(0,X.jsx)(Q,{name:`Gift subscriptions`,value:e?`data-portal="gift"`:`${f}#/portal/gift`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsx)(d,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Tiers`}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsxs)(k,{className:`lg:flex-row lg:items-center lg:justify-between lg:gap-5 [&>*]:w-auto`,children:[(0,X.jsx)(E,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:`Tier`}),(0,X.jsxs)(L,{value:n,onValueChange:r,children:[(0,X.jsx)(F,{"aria-label":`Tier`,className:`w-fit`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:c.map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]}),(0,X.jsx)(Q,{name:`Signup / Monthly`,value:e?`data-portal="signup/${n}/monthly"`:`${f}#/portal/signup/${n}/monthly`}),(0,X.jsx)(Q,{name:`Signup / Yearly`,value:e?`data-portal="signup/${n}/yearly"`:`${f}#/portal/signup/${n}/yearly`}),(0,X.jsx)(Q,{name:`Signup / Free`,value:e?`data-portal="signup/free"`:`${f}#/portal/signup/free`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(u,{gap:`lg`,children:[(0,X.jsx)(d,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Account`}),(0,X.jsxs)(u,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Account`,value:e?`data-portal="account"`:`${f}#/portal/account`}),(0,X.jsx)(Q,{name:`Account / Plans`,value:e?`data-portal="account/plans"`:`${f}#/portal/account/plans`}),(0,X.jsx)(Q,{name:`Account / Profile`,value:e?`data-portal="account/profile"`:`${f}#/portal/account/profile`}),(0,X.jsx)(Q,{name:`Account / Newsletters`,value:e?`data-portal="account/newsletters"`:`${f}#/portal/account/newsletters`}),(0,X.jsx)(Q,{name:`Account / Newsletter help`,value:e?`data-portal="account/newsletters/help"`:`${f}#/portal/account/newsletters/help`})]})]})})]})})},Ae=({settings:e,config:t,tiers:n,siteData:r,selectedTab:i,previewTheme:a})=>{if(!r?.url)return null;let o=n.filter(e=>e.visibility===`public`&&e.type===`paid`).map(e=>e.id),s=r.url.replace(/\/$/,``),c=JSON.parse(W(e,`portal_plans`)||``),l=new URLSearchParams;l.append(`button`,W(e,`portal_button`)?`true`:`false`),l.append(`name`,W(e,`portal_name`)?`true`:`false`),l.append(`signupGiftPromotion`,W(e,`portal_signup_gift_promotion`)?`true`:`false`),l.append(`accountGiftPromotion`,W(e,`portal_account_gift_promotion`)?`true`:`false`),l.append(`isFree`,c.includes(`free`)?`true`:`false`),l.append(`isMonthly`,K(e,t)&&c.includes(`monthly`)?`true`:`false`),l.append(`isYearly`,K(e,t)&&c.includes(`yearly`)?`true`:`false`),l.append(`page`,i===`account`?`accountHome`:`signup`),l.append(`previewTheme`,a),l.append(`buttonIcon`,encodeURIComponent(W(e,`portal_button_icon`)||`icon-1`)),l.append(`signupButtonText`,encodeURIComponent(W(e,`portal_button_signup_text`)||``)),l.append(`membersSignupAccess`,W(e,`members_signup_access`)||`all`),l.append(`allowSelfSignup`,W(e,`allow_self_signup`)||`false`),l.append(`signupTermsHtml`,W(e,`portal_signup_terms_html`)||``),l.append(`signupCheckboxRequired`,W(e,`portal_signup_checkbox_required`)?`true`:`false`),l.append(`portalProducts`,o.join(`,`));let u=W(e,`portal_default_plan`);u&&l.append(`portalDefaultPlan`,u),c&&c.length&&l.append(`portalPrices`,encodeURIComponent(c.join(`,`)));let d=W(e,`accent_color`);d!=null&&l.append(`accentColor`,encodeURIComponent(d));let f=W(e,`portal_button_style`);return f&&l.append(`buttonStyle`,encodeURIComponent(f)),l.append(`disableBackground`,`false`),W(e,`transistor`)&&l.append(`transistorPortalSettings`,JSON.stringify({enabled:W(e,`transistor_portal_enabled`),heading:W(e,`transistor_portal_heading`)||`Podcasts`,description:W(e,`transistor_portal_description`)||`Access your RSS feeds`,button_text:W(e,`transistor_portal_button_text`)||`Manage`,url_template:W(e,`transistor_portal_url_template`)||`https://partner.transistor.fm/ghost/{memberUuid}`})),l.append(`admin_toolbar`,`0`),`${s}/?v=modal-portal-settings#/portal/preview?${l.toString()}`},je=({darkMode:e,selectedTab:t=`signup`,localSettings:n,localTiers:r})=>{let{siteData:i,config:a}=J(),o=Ae({settings:n,tiers:r,selectedTab:t,previewTheme:e?`dark`:`light`,siteData:i,config:a}),s=(0,X.jsx)(X.Fragment,{});switch(t){case`account`:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break;case`links`:s=(0,X.jsx)(ke,{});break;default:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break}return s},Me=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a})=>{let{config:s}=J(),[c,l,u,d,f,p]=G(e,[`members_signup_access`,`portal_name`,`portal_signup_terms_html`,`portal_signup_checkbox_required`,`portal_plans`,`portal_default_plan`]),m=JSON.parse(f?.toString()||`[]`),g=(0,Y.useMemo)(()=>{let e=document.createElement(`div`);return e.innerHTML=u?.toString()||``,e.innerText.length},[u]),_=(0,Y.useCallback)((e,t)=>{a(e,t)},[]);(0,Y.useEffect)(()=>{g>115?_(`portal_signup_terms_html`,`Signup notice is too long`):_(`portal_signup_terms_html`,void 0)},[g,_]);let v=e=>{let n=m.indexOf(e);n===-1?m.push(e):m.splice(n,1),t(`portal_plans`,JSON.stringify(m)),p===`yearly`?!m.includes(`yearly`)&&m.includes(`monthly`)&&t(`portal_default_plan`,`monthly`):p===`monthly`&&(m.includes(`monthly`)||t(`portal_default_plan`,`yearly`))},y=c===`all`||c===`paid`,b=c===`all`,x=K(e,s),w=[];n&&n.forEach(e=>{e.type===`free`&&b&&w.push({checked:m.includes(`free`),disabled:!y,label:e.name,value:`free`,testId:`free-tier-checkbox`,onChange:n=>{m.includes(`free`)&&!n&&m.splice(m.indexOf(`free`),1),!m.includes(`free`)&&n&&m.push(`free`),t(`portal_plans`,JSON.stringify(m)),r({...e,visibility:n?`public`:`none`})}})});let T=le(n)||[],D=[{value:`yearly`,label:`Yearly`},{value:`monthly`,label:`Monthly`}];x&&T.length>0&&T.forEach(e=>{w.push({checked:e.visibility===`public`,label:e.name,value:e.id,onChange:t=>r({...e,visibility:t?`public`:`none`})})});let A=x&&T.length>0&&T.some(e=>e.visibility===`public`);return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(S,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`portal-display-name`,children:`Display name in signup form`}),(0,X.jsx)(R,{checked:!!l,disabled:!y,id:`portal-display-name`,onCheckedChange:e=>t(`portal_name`,e)})]}),(0,X.jsxs)(C,{children:[(0,X.jsx)(O,{variant:`label`,children:`Available tiers`}),(0,X.jsx)(S,{"data-slot":`checkbox-group`,children:w.map(e=>(0,X.jsxs)(k,{"data-disabled":e.disabled||void 0,orientation:`horizontal`,children:[(0,X.jsx)(h,{checked:e.checked,"data-testid":e.testId,disabled:e.disabled,id:`portal-tier-${e.value}`,onCheckedChange:t=>e.onChange(t===!0)}),(0,X.jsx)(E,{htmlFor:`portal-tier-${e.value}`,children:e.label})]},e.value))})]}),A&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(C,{children:[(0,X.jsx)(O,{variant:`label`,children:`Available prices`}),(0,X.jsx)(S,{"data-slot":`checkbox-group`,children:[`monthly`,`yearly`].map(e=>(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(h,{checked:m.includes(e),disabled:!y,id:`portal-plan-${e}`,onCheckedChange:()=>v(e)}),(0,X.jsx)(E,{className:`capitalize`,htmlFor:`portal-plan-${e}`,children:e})]},e))})]}),m.includes(`yearly`)&&m.includes(`monthly`)&&(0,X.jsxs)(k,{children:[(0,X.jsx)(E,{children:`Default price at signup`}),(0,X.jsxs)(L,{value:typeof p==`string`?p:``,onValueChange:e=>t(`portal_default_plan`,e),children:[(0,X.jsx)(F,{"aria-label":`Default price at signup`,children:(0,X.jsx)(I,{})}),(0,X.jsx)(P,{children:D.map(e=>(0,X.jsx)(N,{value:e.value,children:e.label},e.value))})]})]})]}),(0,X.jsx)(be,{error:!!i.portal_signup_terms_html,hint:i.portal_signup_terms_html||(0,X.jsxs)(X.Fragment,{children:[`Recommended: `,(0,X.jsx)(`strong`,{children:o(115)}),` characters. You've used`,` `,(0,X.jsx)(`strong`,{className:`text-green`,children:o(g)})]}),nodes:`MINIMAL_NODES`,placeholder:`By signing up, I agree to receive emails from ...`,title:`Display notice at signup`,value:u?.toString(),onChange:e=>t(`portal_signup_terms_html`,e)}),u?.toString()&&(0,X.jsxs)(k,{"data-disabled":!y||void 0,orientation:`horizontal`,children:[(0,X.jsx)(E,{htmlFor:`portal-require-agreement`,children:`Require agreement`}),(0,X.jsx)(R,{checked:!!d,disabled:!y,id:`portal-require-agreement`,onCheckedChange:e=>t(`portal_signup_checkbox_required`,e)})]}),(0,X.jsx)(we,{localSettings:e,settingKey:`portal_signup_gift_promotion`,updateSetting:t})]})})},Ne=r({path:()=>`/settings/verifications`,method:`PUT`,body:({token:e})=>({token:e}),updateQueries:{dataType:`SettingsResponseType`,emberUpdateType:`createOrUpdate`,update:e=>({...e,settings:e.settings})}}),Pe={signupOptions:`signup`,lookAndFeel:`signup`,accountPage:`account`},$=`border-b-2 border-transparent after:hidden data-[state=active]:border-foreground`,Fe=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a,selectedTab:o,onTabChange:s})=>(0,X.jsx)(`div`,{className:`pt-4`,children:(0,X.jsxs)(H,{value:o,variant:`underline`,onValueChange:e=>s(e),children:[(0,X.jsxs)(V,{children:[(0,X.jsx)(z,{className:$,value:`signupOptions`,children:`Signup options`}),(0,X.jsx)(z,{className:$,value:`lookAndFeel`,children:`Look & feel`}),(0,X.jsx)(z,{className:$,value:`accountPage`,children:`Account page`})]}),(0,X.jsx)(B,{value:`signupOptions`,children:(0,X.jsx)(Me,{errors:i,localSettings:e,localTiers:n,setError:a,updateSetting:t,updateTier:r})}),(0,X.jsx)(B,{value:`lookAndFeel`,children:(0,X.jsx)(Oe,{localSettings:e,updateSetting:t})}),(0,X.jsx)(B,{value:`accountPage`,children:(0,X.jsx)(De,{errors:i,localSettings:e,setError:a,updateSetting:t})})]})}),Ie=()=>{let{updateRoute:e}=ve(),{darkMode:t}=s(),[r,i]=(0,Y.useState)(`signup`),[o,c]=(0,Y.useState)(`signupOptions`),l=n(),{confirm:u}=ye(),{settings:d,siteData:f,config:p}=J(),{mutateAsync:m}=de(),{data:{tiers:h}={}}=U(),{mutateAsync:g}=ce(),{mutateAsync:_}=Ne(),{getParam:v}=Ce(),y=v(`verifyEmail`);(0,Y.useEffect)(()=>{y&&(async({token:e})=>{try{let{settings:t}=await _({token:e}),[n]=G(t,[`members_support_address`]);u({title:`Support address verified`,prompt:(0,X.jsxs)(X.Fragment,{children:[`Your support email address has been changed to `,(0,X.jsx)(`strong`,{children:n}),`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Please try again.`;e instanceof Error&&e.message===`Token expired`&&(t=`Verification link has expired.`),u({title:`Error verifying support address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),l(e,{withToast:!1})}})({token:y})},[u,l,y,_]);let{formState:b,setFormState:x,saveState:S,handleSave:C,updateForm:w,okProps:T}=a({initialState:{settings:d,tiers:h||[]},savingDelay:500,onSave:async()=>{await Promise.all(b.tiers.filter(({dirty:e})=>e).map(e=>g(e))),x(e=>({...e,tiers:b.tiers.map(e=>({...e,dirty:!1}))}));let e=b.settings.filter(e=>e.dirty);if(!e.length)return;let{meta:t,settings:n}=await m(e);if(x(e=>({...e,settings:b.settings.map(e=>({...e,dirty:!1}))})),t?.sent_email_verification){let e=b.settings.find(e=>e.key===`members_support_address`)?.value,t=n.find(e=>e.key===`support_email_address`)?.value||q(n.find(e=>e.key===`members_support_address`)?.value?.toString()||`noreply`,f,p);u({title:`Confirm email address`,prompt:(0,X.jsxs)(X.Fragment,{children:[`We've sent a confirmation email to `,(0,X.jsx)(`strong`,{children:e}),`. Until verified, your support email address will remain `,t,`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}},onSaveError:l});(0,Y.useEffect)(()=>{!b.tiers.length&&h?.length&&x(e=>({...e,tiers:h}))},[h,b.tiers,x]);let[E,D]=(0,Y.useState)({}),O=(e,t)=>{w(n=>({...n,settings:n.settings.map(n=>n.key===e?{...n,value:t,dirty:!0}:n)}))},k=(e,t)=>{D(n=>({...n,[e]:t}))},A=e=>{w(t=>({...t,tiers:t.tiers.map(t=>t.id===e.id?{...e,dirty:!0}:t)}))},j=e=>{i(e),e===`account`?c(`accountPage`):e===`signup`&&o===`accountPage`&&c(`signupOptions`)},ee=(0,X.jsx)(Fe,{errors:E,localSettings:b.settings,localTiers:b.tiers,selectedTab:o,setError:k,updateSetting:O,updateTier:A,onTabChange:e=>{c(e),i(Pe[e])}}),te=(0,X.jsx)(je,{darkMode:t,localSettings:b.settings,localTiers:b.tiers,selectedTab:r}),ne=(0,X.jsx)(H,{value:r,variant:`button`,onValueChange:e=>j(e),children:(0,X.jsxs)(V,{children:[(0,X.jsx)(z,{value:`signup`,children:`Signup`}),(0,X.jsx)(z,{value:`account`,children:`Account page`}),(0,X.jsx)(z,{value:`links`,children:`Links`})]})});return(0,X.jsx)(xe,{buttonsDisabled:T.disabled,cancelLabel:`Close`,dirty:S===`unsaved`,okLabel:T.label||`Save`,okVariant:T.variant,preview:te,previewBgColor:r===`links`?`white`:`greygradient`,previewToolbarTabs:ne,sidebar:ee,testId:`portal-modal`,title:`Portal`,onClose:()=>{e(`portal`)},onOk:async()=>{Object.values(E).filter(Boolean).length||await C({force:!0})}})};export{Ie 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]=`2e752765-38a4-402a-aca8-d242acdaa8f3`,e._sentryDebugIdIdentifier=`sentry-dbid-2e752765-38a4-402a-aca8-d242acdaa8f3`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{i as n}from"./framework-provider-CIvHFnik.js";import{g as r,o as i}from"./hooks-0r7qxGEo.js";import{t as a}from"./jsx-runtime-Bm2_KH-0.js";import{n as o,o as s,r as c,t as l}from"./pagemenu-DXr_U43J.js";import{c as u,t as d}from"./posts-CftunZgV.js";import{t as ee}from"./analytics-CDjjaA4a.js";import{n as f,r as te}from"./post-helpers-DC_rgYgU.js";import{u as ne}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as re}from"./router-provider-Cf-bcYZr.js";import{B as p,H as m,L as h,R as g,r as ie}from"./shade-provider-DvrXKKQZ.js";import{t as _}from"./inline-Qoyy4r2g.js";import{t as ae}from"./heading-Ch2Mb19A.js";import{E as oe,Nn as se,Pn as ce,X as le,bt as ue,t as v}from"./button-CTHYSI-d.js";import{a as de,c as fe,i as pe,n as me,o as he,r as ge,s as _e,t as ve}from"./alert-dialog-CAPLqwVs.js";import{a as ye,i as be,n as y,o as xe,r as Se,t as Ce}from"./breadcrumb-BO_Xhq8u.js";import{t as b}from"./page-header-CxTb0je5.js";import{r as x}from"./users-CKJaAxEJ.js";import{B as we,N as Te,Zt as Ee,ct as De,dt as S,ft as C,gt as w,nn as T,u as E,ut as Oe,vt as ke}from"./index-RuRs_qGS.js";import{t as Ae}from"./use-analytics-data-Byf83QE-.js";import{t as je}from"./get-site-timezone-BnQQpb6P.js";import{t as Me}from"./post-share-modal-Z_oAYgWz.js";import{n as D}from"./email-sending-status-context-7yrRlgjQ.js";import{n as O}from"./post-analytics-context-v4FXmVDC.js";import{i as Ne,t as Pe}from"./gift-link-modal-CNE7dfPD.js";import{i as k,n as A,r as j,t as M}from"./use-sending-eta-gE-2B0Zw.js";var N=e(t(),1),P=a(),F=(0,N.forwardRef)(({children:e,className:t,...n},r)=>(0,P.jsx)(`section`,{ref:r,className:h(`flex size-full grow flex-col gap-6 py-8`,t),...n,children:e}));F.displayName=`PostAnalyticsContent`;var I=`animate-in fade-in-0 duration-300 ease-out motion-reduce:animate-none`,L=(e,t)=>{let{completed:n,total:r}=e.progress,i=e.failed_during===`submitting`?n:0,a=i>0?`${m(i)} of ${m(r)} recipients processed.`:r>0?`None of the ${m(r)} emails were sent.`:`No emails were sent.`;return t?`${a} ${t}`:a},Fe=()=>{let{post:e}=O(),{status:t,isStatusLoading:n,isNewsletterDataHidden:r,hasUnknownDeliveryOutcome:i,isRetrying:a,retrySending:o}=D(),s=t?.sending,c=M(t),l=s?.status===`failed`,u=j(l,!n);if(l){let t=i?e?.email?.error||`Something went wrong while sending this email.`:L(s,e?.email?.error);return(0,P.jsxs)(_,{className:h(`leading-[1.65em] text-muted-foreground tabular-nums`,u>0&&I),"data-testid":`email-sending-status-line`,gap:`xs`,role:`alert`,wrap:!0,children:[(0,P.jsx)(`span`,{className:`font-medium text-state-danger`,children:`Emails failed to send`}),(0,P.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,P.jsx)(`span`,{children:t}),!i&&(0,P.jsx)(v,{className:`h-auto p-0 text-[length:inherit] leading-[inherit]`,disabled:a,variant:`link`,onClick:()=>void o(),children:a?`Sending…`:`Retry sending email`})]})}let d=s&&(s.status!==`submitted`||r);return(0,P.jsx)(A,{appear:u>0,"data-testid":`email-sending-status-line`,line:d?k(s,{estimate:c,preparingProgress:`percentage`}):null,ready:!n})};function Ie(e,{isEmailSent:t,improveSendingUI:n,timezone:r}){if(!e.published_at)return null;let i=`on ${g(e.published_at,r)} at ${p(e.published_at,r)}`,a=e.email?.email_count??0,o=n&&t&&a>0?` to ${m(a)} ${a===1?`member`:`members`}`:``;return f(e)?t||!n?`Sent${o} ${i}`:null:e.status===`published`?t?`Published and sent${o} ${i}`:`Published on your site ${i}`:null}var R=e=>{let{data:t}=i();return!e||!t?!1:e.status===`published`&&!!e.visibility&&e.visibility!==`public`&&x(t)},z=({currentTab:e,children:t})=>{let{isAdmin7:i}=ie(),a=re(),f=ne(),p=T(),h=Ee(),g=n(),{mutateAsync:_}=u(),v=r(),x=we(`improveSendingUI`),[k,A]=(0,N.useState)(!1),[j,M]=(0,N.useState)(!1),[F,I]=(0,N.useState)(!1),{settings:L,site:z,statsConfig:Le}=Ae(),{post:B,isPostLoading:V,postId:H}=O(),{hasNewsletterAnalytics:U,isEmailSent:Re}=D(),W=R(B),G=`/editor/post/${H}`,ze=E(G),K=B&&Ie(B,{isEmailSent:Re,improveSendingUI:x,timezone:je(L)}),q=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!j){q.current=!1;return}q.current||(q.current=!0,ee(`Share Modal Opened`,{giftLinkShown:W,source:`post-analytics`}))},[j,W]);let{activeVisitors:J,isLoading:Y}=s({postUuid:B?.uuid,statsConfig:Le,enabled:p}),X=(0,N.useMemo)(()=>{if(!B)return[];let e=[];return te(B)&&!p||(e.push(`Overview`),!B.email_only&&p&&e.push(`Web`)),U&&e.push(`Newsletter`),h&&e.push(`Growth`),e},[B,p,h,U]),Be=()=>{B&&A(!0)},Z=async()=>{if(B)try{await _({id:H}),g.invalidateQueries({queryKey:[d],refetchType:`none`}),A(!1),a(`/posts/`,{crossApp:!0})}catch(e){v(e)}},Q=!B?.email_only&&(0,P.jsx)(Me,{author:B?.authors?.[0]?.name||``,canShareAsGift:W,description:``,faviconURL:z?.icon||``,featureImageURL:B?.feature_image??void 0,giftAccessLabel:Ne(B?.visibility),open:j,postExcerpt:B?.excerpt||``,postTitle:B?.title,postURL:B?.url,siteTitle:z?.title||``,onClose:()=>M(!1),onOpenChange:M,onShareAsGift:()=>{M(!1),I(!0)},children:(0,P.jsxs)(b.Action,{label:`Share`,primary:!0,onClick:()=>M(!0),children:[(0,P.jsx)(le,{}),` Share`]})}),$=(0,P.jsx)(P.Fragment,{children:(0,P.jsxs)(De,{children:[(0,P.jsx)(ke,{asChild:!0,children:(0,P.jsx)(b.Action,{label:`More post actions`,iconOnly:!0,children:(0,P.jsx)(ce,{})})}),(0,P.jsxs)(Oe,{align:`end`,children:[(0,P.jsxs)(S,{children:[(0,P.jsx)(C,{asChild:!0,children:(0,P.jsxs)(`a`,{href:B?.url,rel:`noopener noreferrer`,target:`_blank`,children:[(0,P.jsx)(se,{}),`View in browser`]})}),(0,P.jsxs)(C,{onClick:()=>{a(G,ze?{crossApp:!0}:{state:Te(f)})},children:[(0,P.jsx)(ue,{}),`Edit post`]})]}),(0,P.jsx)(w,{}),(0,P.jsx)(S,{children:(0,P.jsxs)(C,{className:`text-destructive focus:text-destructive`,onClick:Be,children:[(0,P.jsx)(oe,{}),`Delete post`]})})]})]})});return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`header`,{className:`z-50 -mx-(--page-gutter) bg-white/70 backdrop-blur-md dark:bg-background`,children:(0,P.jsx)(`div`,{className:`relative flex min-h-[102px] w-full items-start justify-between gap-5 px-(--page-gutter) pt-[28px]! pb-0`,"data-header":`header`,children:(0,P.jsxs)(`div`,{className:`flex w-full flex-col gap-6`,children:[(0,P.jsxs)(`div`,{className:`flex w-full flex-col flex-wrap justify-between md:flex-row md:items-center`,children:[(0,P.jsx)(Ce,{children:(0,P.jsxs)(be,{children:[(0,P.jsx)(y,{children:(0,P.jsx)(Se,{asChild:!0,children:(0,P.jsx)(`button`,{className:`cursor-pointer rounded-sm focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:outline-hidden`,type:`button`,onClick:()=>a(`/analytics/`),children:`Analytics`})})}),(0,P.jsx)(xe,{}),(0,P.jsx)(y,{children:(0,P.jsx)(ye,{children:`Post analytics`})})]})}),(0,P.jsxs)(`div`,{className:`flex w-full items-center gap-2 md:w-auto`,children:[p&&!B?.email_only&&(0,P.jsx)(`div`,{className:`mr-3 flex grow items-center gap-2 md:grow-0`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,title:`Active readers in the last 5 minutes · Updates every 60 seconds`,children:[(0,P.jsxs)(`span`,{children:[Y?``:m(J),` reading now`]}),(0,P.jsx)(`div`,{className:`size-2 rounded-full ${Y?`animate-pulse bg-muted`:J?`bg-green-500`:`border border-muted-foreground`}`})]})}),!V&&(0,P.jsx)(b.ActionGroup,{children:i?(0,P.jsxs)(P.Fragment,{children:[$,Q&&(0,P.jsx)(b.ActionGroup.Primary,{children:Q})]}):(0,P.jsxs)(P.Fragment,{children:[Q,$]})})]})]}),!V&&(0,P.jsxs)(`div`,{className:`flex items-start gap-6 md:items-center`,children:[B?.feature_image&&(0,P.jsx)(`div`,{className:`aspect-[16/10] w-full max-w-[100px] rounded-md bg-cover bg-center md:max-w-[132px]`,style:{backgroundImage:`url(${B.feature_image})`}}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(ae,{className:`-ml-px max-w-[920px] indent-0 !text-xl md:leading-[1.2em]`,"data-header":`header-title`,children:B?.title}),K&&(0,P.jsx)(`div`,{className:`mt-0.5 flex items-center justify-start leading-[1.65em] text-muted-foreground`,children:K}),(0,P.jsx)(Fe,{},H)]})]})]})})}),(0,P.jsxs)(c,{className:`sticky top-0 z-50 -mb-8 transform-gpu flex-col items-start gap-y-0 border-none bg-white/70 py-8 backdrop-blur-md lg:flex-row lg:items-center dark:bg-background`,children:[!V&&(0,P.jsxs)(l,{className:`min-h-[34px]`,defaultValue:e,responsive:!0,children:[X.includes(`Overview`)&&(0,P.jsx)(o,{value:`Overview`,onClick:()=>{a(`/posts/analytics/${H}`)},children:`Overview`}),X.includes(`Web`)&&(0,P.jsx)(o,{value:`Web`,onClick:()=>{a(`/posts/analytics/${H}/web`)},children:`Web traffic`}),X.includes(`Newsletter`)&&(0,P.jsx)(o,{value:`Newsletter`,onClick:()=>{a(`/posts/analytics/${H}/newsletter`)},children:`Newsletter`}),X.includes(`Growth`)&&(0,P.jsx)(o,{value:`Growth`,onClick:()=>{a(`/posts/analytics/${H}/growth`)},children:`Growth`})]}),t]}),W&&H&&(0,P.jsx)(Pe,{open:F,postId:H,source:`share-modal`,onOpenChange:I},H),(0,P.jsx)(ve,{open:k,onOpenChange:A,children:(0,P.jsxs)(pe,{children:[(0,P.jsxs)(_e,{children:[(0,P.jsx)(fe,{children:`Are you sure you want to delete this post?`}),(0,P.jsxs)(de,{children:[`You're about to delete "`,(0,P.jsx)(`strong`,{children:B?.title}),`". This is permanent! We warned you, k?`]})]}),(0,P.jsxs)(he,{children:[(0,P.jsx)(ge,{children:`Cancel`}),(0,P.jsx)(me,{className:`bg-red-600 text-white hover:bg-red-700`,onClick:()=>void Z(),children:`Delete`})]})]})})]})};export{R as n,F as r,z as t};
|
|
@@ -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]=`2479198d-be34-4d16-a7e5-f8ecafaab7ee`,e._sentryDebugIdIdentifier=`sentry-dbid-2479198d-be34-4d16-a7e5-f8ecafaab7ee`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{r}from"./posts-CftunZgV.js";import{h as i}from"./chunk-OB3PAWPO-D3muQBsq.js";import{W as a,q as o}from"./index-RuRs_qGS.js";import{t as s}from"./post-analytics-context-v4FXmVDC.js";import{t as c}from"./email-stats-polling-DCLzZSEX.js";var l=e(t(),1),u=n(),d=({children:e})=>{let{postId:t}=i();if(!t)throw Error(`Post ID is required for PostAnalyticsProvider`);let[n,d]=(0,l.useState)(o.last30Days.value),{data:{posts:[f]}={posts:[]},isLoading:p,refetch:m}=r({...c(e=>e?.posts[0]?.email),searchParams:{filter:`id:${t}`,include:a}}),h=(0,l.useCallback)(async()=>{await m()},[m]);return(0,u.jsx)(s.Provider,{value:{postId:t,post:f,isPostLoading:p,refetchPost:h,range:n,setRange:d},children:e})};export{d 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]=`5dc238db-3bba-409b-992f-e0aa68d4b079`,e._sentryDebugIdIdentifier=`sentry-dbid-5dc238db-3bba-409b-992f-e0aa68d4b079`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{r}from"./posts-
|
|
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]=`5dc238db-3bba-409b-992f-e0aa68d4b079`,e._sentryDebugIdIdentifier=`sentry-dbid-5dc238db-3bba-409b-992f-e0aa68d4b079`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{r}from"./posts-CftunZgV.js";import{t as i}from"./analytics-CDjjaA4a.js";import{i as a}from"./chunk-OB3PAWPO-D3muQBsq.js";import{H as o}from"./shade-provider-DvrXKKQZ.js";import{t as s}from"./box-BOIwAOVT.js";import{t as c}from"./container-DakAbO79.js";import{B as l}from"./index-RuRs_qGS.js";import{t as u}from"./use-analytics-data-Byf83QE-.js";import{t as d}from"./post-share-modal-Z_oAYgWz.js";var f=e(t(),1),p=n(),m=({children:e})=>(0,p.jsx)(s,{className:`size-full`,children:(0,p.jsx)(c,{className:`relative flex h-full flex-col`,size:`page`,children:(0,p.jsx)(`div`,{className:`grid w-full grow grid-cols-[minmax(0,1fr)]`,children:(0,p.jsx)(`div`,{className:`flex h-full flex-col px-(--page-gutter)`,children:e})})})}),h=()=>{let[e,t]=(0,f.useState)(!1),[n,i]=(0,f.useState)(null),[a,s]=(0,f.useState)(null),{site:c}=u(),d=l(`improveSendingUI`),{data:p}=r({searchParams:n?{filter:`id:${n.id}`,include:`authors,newsletter,email`}:{},enabled:!!n}),{data:m}=r({searchParams:{filter:`status:[published,sent]`,limit:`1`,fields:`id`},enabled:!!n}),h=p?.posts?.[0],g=e=>`${o(e)} subscriber${e===1?``:`s`}`,_=e=>new Date(e).toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}),v=e=>e?.map(e=>e.name).join(`, `)||``,y=(0,f.useMemo)(()=>{if(!h)return null;let n=!!a,r=d&&h.email?.status!==`submitted`,l=()=>{let e=[];if(h.email_only?e.push(r?`Your email is being sent to`:`Your email was sent to`):h.email?.email_count?e.push(r?`Your post was published on your site and is being sent to`:`Your post was published on your site and sent to`):e.push(`Your post was published on your site`),h.email?.email_count){let t=g(h.email.email_count);e.push(` `),e.push(f.createElement(`strong`,{key:`subscriber-count`},t)),h.newsletter?.name&&(e.push(` of `),e.push(f.createElement(`strong`,{key:`newsletter-name`},h.newsletter.name))),e.push(`,`)}if(h.published_at){let t=new Date(h.published_at);t.toDateString()===new Date().toDateString()?(e.push(` `),e.push(f.createElement(`strong`,{key:`today`},`today`))):(e.push(` on `),e.push(f.createElement(`strong`,{key:`date`},t.toLocaleDateString(`en-US`,{month:`long`,day:`numeric`})))),e.push(` at `),e.push(f.createElement(`strong`,{key:`time`},_(h.published_at)))}return e.push(`.`),f.createElement(`span`,{},...e)},u=()=>{t(!1),i(null),s(null)};return{open:e,onOpenChange:e=>{e||u()},emailOnly:h.email_only,postURL:h.url||``,primaryTitle:`Boom! It's out there.`,secondaryTitle:n&&a?`That's ${o(a)} post${a===1?``:`s`} published.`:`Spread the word!`,description:l(),featureImageURL:h.feature_image||``,postTitle:h.title||``,postExcerpt:h.excerpt||``,faviconURL:c?.icon||``,siteTitle:c?.title||``,author:v(h.authors),onClose:u}},[h,e,a,c?.title,c?.icon,d]);return(0,f.useEffect)(()=>{let e=()=>{try{let e=localStorage.getItem(`ghost-last-published-post`);if(e){let n=JSON.parse(e);i(n),t(!0),localStorage.removeItem(`ghost-last-published-post`)}}catch{}};e();let n=setTimeout(e,100);return()=>clearTimeout(n)},[]),(0,f.useEffect)(()=>{m?.meta?.pagination?.total&&s(m.meta.pagination.total)},[m]),{isModalOpen:e,post:h,postCount:a,showPostCount:!!a,closeModal:()=>{t(!1),i(null),s(null)},modalProps:y}},g=()=>{let{isModalOpen:e,modalProps:t}=h(),n=e&&!!t;return(0,f.useEffect)(()=>{n&&i(`Share Modal Opened`,{giftLinkShown:!1,source:`publish-flow`})},[n]),(0,p.jsxs)(m,{children:[(0,p.jsx)(a,{}),e&&t&&(0,p.jsx)(d,{...t})]})};export{g 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]=`e256b3ae-157e-4877-a646-1b8f15ac5b56`,e._sentryDebugIdIdentifier=`sentry-dbid-e256b3ae-157e-4877-a646-1b8f15ac5b56`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{A as n,o as r}from"./hooks-C-BDQ6Hs.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{r as a}from"./posts-Lg-p_ZHg.js";import{h as o}from"./chunk-OB3PAWPO-D3muQBsq.js";import{t as s}from"./router-provider-Cf-bcYZr.js";import{H as c,L as l,U as u}from"./shade-provider-DvrXKKQZ.js";import{t as d}from"./inline-Qoyy4r2g.js";import{t as f}from"./stack-C3OmgpUv.js";import{t as p}from"./text-BnCSdzao.js";import{i as m,n as h,r as g,t as _}from"./accordion-BB5V0RD1.js";import{$n as ee,Jn as v,Qn as y,cn as te,t as b}from"./button-CTHYSI-d.js";import{n as ne,r as re,t as ie}from"./avatar-YbECDnBI.js";import{t as ae}from"./badge-DuMiqyUH.js";import{a as oe,n as x,o as se,t as S}from"./card-Cd6xB_Ok.js";import{t as ce}from"./label-CxXFmzcd.js";import{t as C}from"./input-BHb2A_DU.js";import{n as le}from"./loading-indicator-DaRyGrxv.js";import{t as w}from"./page-header-Baymg6VR.js";import{a as T,c as E,n as D,r as O,s as k,t as A}from"./table-DQ63Yu4a.js";import{a as j,i as M,n as N,r as ue,t as de}from"./tabs-CDb_TceL.js";import{c as fe,l as pe}from"./users-CzgQKbfO.js";import{n as me,r as he,t as ge}from"./kpi-card-BLsrKWhX.js";import{Kt as _e,ot as ve,v as ye}from"./index-CuDhPtkB.js";import{t as be}from"./get-site-timezone-BnQQpb6P.js";import{t as P}from"./classApi-CI9ayKdZ.js";import{a as xe,i as Se,l as Ce,n as we,o as Te,r as Ee}from"./emails-qxNbhO6X.js";var F=e(t(),1),I=e=>String(e).padStart(2,`0`);function L(e){if(!e)return null;try{return P.Instant.from(e)}catch{return null}}function De(e,t){let n=e.toZonedDateTimeISO(`UTC`),r=n.toLocaleString(`en-US`,{month:`short`}),i=t?`.${String(n.millisecond).padStart(3,`0`)}`:``;return`${I(n.day)} ${r}, ${n.year}, ${I(n.hour)}:${I(n.minute)}:${I(n.second)}${i}`}function R(e,t=!1){let n=L(e);return n?`${De(n,t)} UTC`:`N/A`}function z(e,{year:t=!1,timezone:n=`UTC`}={}){let r=L(e);if(!r)return null;let i=r.toZonedDateTimeISO(n),a=i.toLocaleString(`en-US`,{month:`short`});return{date:t?`${I(i.day)} ${a} ${i.year}`:`${I(i.day)} ${a}`,time:`${I(i.hour)}:${I(i.minute)}:${I(i.second)}`,offsetNanoseconds:i.offsetNanoseconds}}function Oe(e,t){let n=L(e),r=L(t);return!n||!r?null:n.until(r).total({unit:`seconds`})}function ke(e,t){let n=L(e);if(!n)return null;let r=n.toZonedDateTimeISO(t),i=r.toLocaleString(`en-US`,{month:`short`});return`${r.day} ${i} ${r.year} at ${I(r.hour)}:${I(r.minute)}`}function Ae(e,t=P.Now.instant()){let n=L(e)??t,r=n.add({hours:168}),i=t.subtract({hours:1}),a=P.Instant.compare(r,i)<0?r:i,o=P.Instant.compare(a,n)>0?a:t,s=e=>e.toZonedDateTimeISO(`UTC`).toPlainDateTime().toString({smallestUnit:`minute`});return{begin:s(n),end:s(o)}}function je(e){let t=P.PlainDateTime.from(e.begin).toZonedDateTime(`UTC`).toInstant(),n=P.PlainDateTime.from(e.end).toZonedDateTime(`UTC`).toInstant();if(P.Instant.compare(t,n)>=0)throw Error(`Choose a begin date before the end date.`);return{begin:t.toString({fractionalSecondDigits:3}),end:n.toString({fractionalSecondDigits:3})}}function B(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`N/A`:[[Math.floor(e/86400),`d`],[Math.floor(e/3600)%24,`h`],[Math.floor(e/60)%60,`m`],[Math.floor(e)%60,`s`]].filter(([e])=>Number(e)>0).map(([e,t])=>`${e}${t}`).join(` `)||`0s`}function V(e){return e?e.charAt(0).toUpperCase()+e.slice(1):`N/A`}var H=[[`latestOpened`,`Opens`],[`latest`,`Delivery and failures`],[`missing`,`Missing events`]];function U(e){return!!e?.scheduled?.schedule||H.some(([t])=>{let n=e?.[t];return!!(n?.running||n?.lastStarted||n?.fetchedThrough||n?.lastEventTimestamp)})}var W=i();function G({value:e,title:t}){let n=z(e);return n?(0,W.jsxs)(f,{className:`whitespace-nowrap tabular-nums`,gap:`none`,title:t??R(e,!0),children:[(0,W.jsx)(`span`,{children:n.date}),(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:n.time})]}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})}function K({label:e,detail:t,job:n,state:r}){let i=z(n?.lastStarted);return(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(`span`,{className:`font-medium whitespace-nowrap`,children:e}),t&&(0,W.jsx)(p,{as:`span`,className:`whitespace-nowrap tabular-nums`,size:`sm`,tone:`secondary`,children:t})]})}),(0,W.jsx)(O,{children:(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsxs)(d,{align:`center`,className:`whitespace-nowrap`,gap:`sm`,children:[(0,W.jsx)(ve,{size:`sm`,state:n?.running?`active`:`idle`,variant:n?.running?`success`:`neutral`}),r??(n?.running?`Running`:`Idle`)]}),i&&(0,W.jsxs)(p,{as:`span`,className:`whitespace-nowrap tabular-nums`,size:`sm`,title:R(n?.lastStarted,!0),tone:`secondary`,children:[`Started `,i.date,`, `,i.time]})]})}),(0,W.jsx)(O,{className:`whitespace-nowrap tabular-nums`,children:B(n?.lagSeconds)}),(0,W.jsx)(O,{children:(0,W.jsx)(G,{title:`Fetching from ${R(n?.lastBegin,!0)}\nFetched through ${R(n?.fetchedThrough,!0)}`,value:n?.fetchedThrough})}),(0,W.jsx)(O,{children:(0,W.jsx)(G,{value:n?.lastEventTimestamp})})]})}function Me({email:e,emailId:t}){let r=Se(t,{refetchInterval:5e3,retry:!1,defaultErrorHandler:!1}),i=Ce(),a=we(),[o,s]=(0,F.useState)(null),[c,l]=(0,F.useState)(null),u=i.isPending||a.isPending,m=r.data,h=m?.scheduled;function g(){s(Ae(e.created_at)),l(null)}async function _(e=!1){l(null);let r={};if(e&&o)try{r=je(o)}catch{l(`Choose a begin date before the end date.`);return}try{await i.mutateAsync({id:t,...r}),s(null)}catch(e){l(n(e,`Could not schedule analytics refetch.`))}}async function ee(){l(null);try{await a.mutateAsync()}catch(e){l(n(e,`Could not cancel analytics refetch.`))}}let v=null;r.isLoading||(h?.schedule?v=!h.canceled&&(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:()=>{ee()},children:`Cancel scheduled refetch`}):o||(v=(0,W.jsxs)(d,{gap:`sm`,wrap:!0,children:[(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:()=>{_()},children:`Refetch analytics`}),(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:g,children:`Custom date range`})]})));let y=U(m);return(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(d,{align:`center`,gap:`md`,justify:`between`,wrap:!0,children:[(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:`All times UTC. Hover a time for full detail.`}),v]}),o&&!h?.schedule&&(0,W.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),_(!0)},children:(0,W.jsxs)(d,{align:`end`,gap:`md`,wrap:!0,children:[(0,W.jsxs)(f,{gap:`sm`,children:[(0,W.jsx)(ce,{htmlFor:`custom-begin-date`,children:`Begin (UTC)`}),(0,W.jsx)(C,{id:`custom-begin-date`,type:`datetime-local`,value:o.begin,required:!0,onChange:e=>s({...o,begin:e.target.value})})]}),(0,W.jsxs)(f,{gap:`sm`,children:[(0,W.jsx)(ce,{htmlFor:`custom-end-date`,children:`End (UTC)`}),(0,W.jsx)(C,{id:`custom-end-date`,type:`datetime-local`,value:o.end,required:!0,onChange:e=>s({...o,end:e.target.value})})]}),(0,W.jsxs)(d,{gap:`sm`,children:[(0,W.jsx)(b,{disabled:u,type:`submit`,children:`Schedule refetch`}),(0,W.jsx)(b,{disabled:u,type:`button`,variant:`outline`,onClick:()=>{s(null),l(null)},children:`Cancel`})]})]})}),c&&(0,W.jsx)(`p`,{className:`text-destructive`,role:`alert`,children:c}),r.isLoading&&(0,W.jsx)(`p`,{role:`status`,children:`Loading analytics status…`}),r.isError&&(0,W.jsx)(`p`,{role:`alert`,children:`Could not load analytics status. Retrying automatically.`}),m&&!y&&(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No fetches recorded yet.`}),m&&y&&(0,W.jsxs)(A,{children:[(0,W.jsx)(k,{children:(0,W.jsx)(E,{children:[`Job`,`State`,`Lag`,`Fetched through`,`Last event`].map(e=>(0,W.jsx)(T,{className:`whitespace-nowrap`,children:e},e))})}),(0,W.jsxs)(D,{children:[H.map(([e,t])=>(0,W.jsx)(K,{job:m[e],label:t},e)),h?.schedule&&(0,W.jsx)(K,{detail:`${R(h.schedule.begin)} – ${R(h.schedule.end)}`,job:h,label:`Scheduled refetch`,state:h.canceled?`Canceled`:void 0})]})]})]})}var Ne={submitted:`success`,failed:`destructive`,pending:`secondary`,submitting:`secondary`};function Pe({message:e}){let[t,n]=(0,F.useState)(!1);return(0,W.jsxs)(f,{gap:`xs`,children:[(0,W.jsx)(`p`,{className:t?`break-words whitespace-pre-wrap`:`line-clamp-2 break-words`,children:e}),(0,W.jsx)(b,{"aria-expanded":t,className:`self-start`,size:`sm`,variant:`ghost`,onClick:()=>n(!t),children:t?`Show less`:`Show full error`})]})}function Fe(e,t){let n=`${c(e.length)} ${e.length===1?`batch`:`batches`}`;return t>0?`${c(t)} of ${n} failed`:e.every(e=>e.status===`submitted`)?`${n}, all submitted`:n}function Ie({batches:e,isLoading:t,isError:n}){if(t)return null;if(n)return(0,W.jsx)(`p`,{role:`alert`,children:`Could not load email batches.`});if(!e.length)return(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No batch data.`});let r=e.filter(e=>e.status===`failed`).length;return(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(p,{size:`sm`,tone:`secondary`,children:[Fe(e,r),`.`]}),(0,W.jsxs)(A,{children:[(0,W.jsx)(k,{children:(0,W.jsx)(E,{children:[`Status`,`Created`,`Segment`,`Recipients`,`Details`].map(e=>(0,W.jsx)(T,{children:e},e))})}),(0,W.jsx)(D,{children:e.map(e=>(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsx)(ae,{variant:Ne[e.status],children:V(e.status)})}),(0,W.jsx)(O,{className:`whitespace-nowrap tabular-nums`,children:R(e.created_at)}),(0,W.jsx)(O,{className:`max-w-xs break-words whitespace-normal`,children:e.member_segment||`All`}),(0,W.jsx)(O,{className:`tabular-nums`,children:c(e.count?.recipients??0)}),(0,W.jsx)(O,{className:`max-w-xl break-words whitespace-normal`,children:(0,W.jsxs)(f,{gap:`sm`,children:[e.mailgun_message_id&&(0,W.jsxs)(`span`,{children:[`Provider id: `,(0,W.jsx)(`code`,{children:e.mailgun_message_id})]}),!!e.error_status_code&&(0,W.jsxs)(`span`,{children:[`Failure status code: `,e.error_status_code]}),e.error_message&&(0,W.jsx)(Pe,{message:e.error_message}),!e.mailgun_message_id&&!e.error_status_code&&!e.error_message&&`N/A`]})})]},e.id))})]})]})}function Le(e){let t=new Map;for(let{message:n}of e)t.set(n,(t.get(n)??0)+1);let n=e[0].message;for(let[e,r]of t)r>(t.get(n)??0)&&(n=e);return n}function q(e){let t=new Map;for(let n of e){let e=`${n.severity}:${n.code}:${n.enhanced_code||``}`;t.set(e,[...t.get(e)??[],n])}let n=e=>e.severity===`permanent`?0:1;return[...t.entries()].map(([e,t])=>({key:e,code:t[0].code,enhancedCode:t[0].enhanced_code||null,severity:t[0].severity,message:Le(t),failures:t})).sort((e,t)=>t.failures.length-e.failures.length||n(e)-n(t)||e.code-t.code)}var J=20;function Re(e){return(e||`U`).split(` `).filter(Boolean).map(e=>e[0]).slice(0,2).join(``).toUpperCase()}function ze({failure:e,groupMessage:t}){let n=e.email_recipient?.member_name||``,r=e.email_recipient?.member_email||``,i=(0,W.jsxs)(d,{align:`center`,gap:`md`,children:[(0,W.jsxs)(ie,{className:`size-8`,children:[(0,W.jsx)(re,{src:e.member?.avatar_image||void 0}),(0,W.jsx)(ne,{children:Re(n||r)})]}),(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:n||r}),n&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:r})]})]});return(0,W.jsxs)(f,{className:`py-2`,gap:`xs`,children:[e.member?.id?(0,W.jsx)(`a`,{href:`#/members/${e.member.id}`,children:i}):i,e.message!==t&&(0,W.jsx)(p,{className:`pl-11 break-words`,size:`sm`,tone:`secondary`,children:e.message})]})}function Be({group:e,showSeverity:t}){let[n,r]=(0,F.useState)(J),i=e.failures.length,a=i-n,o=e.enhancedCode?`${e.code} · ${e.enhancedCode}`:String(e.code);return(0,W.jsxs)(g,{value:e.key,children:[(0,W.jsx)(m,{className:`group gap-3 hover:no-underline`,children:(0,W.jsxs)(d,{align:`center`,className:`min-w-0 grow`,gap:`sm`,wrap:!0,children:[(0,W.jsx)(ae,{className:`shrink-0 font-mono`,variant:e.severity===`permanent`?`destructive`:`warning`,children:o}),(0,W.jsx)(`span`,{className:`order-last line-clamp-1 min-w-0 basis-full font-normal break-words group-data-[state=open]:line-clamp-none group-data-[state=open]:whitespace-pre-wrap sm:order-none sm:grow sm:basis-0`,children:e.message}),(0,W.jsxs)(p,{as:`span`,className:`shrink-0 max-sm:grow`,size:`sm`,tone:`secondary`,children:[c(i),` `,i===1?`recipient`:`recipients`,t&&` · ${e.severity}`]})]})}),(0,W.jsxs)(h,{children:[(0,W.jsx)(`div`,{className:`divide-y`,children:e.failures.slice(0,n).map(t=>(0,W.jsx)(ze,{failure:t,groupMessage:e.message},t.id))}),a>0&&(0,W.jsxs)(b,{className:`mt-2`,size:`sm`,variant:`ghost`,onClick:()=>r(n+J),children:[`Show `,c(Math.min(a,J)),` more`]})]})]})}function Ve({failures:e,isLoading:t,isError:n}){let[r,i]=(0,F.useState)(`all`),a=e.filter(e=>e.severity===`permanent`).length,o=e.length-a,s=a>0&&o>0,l=(0,F.useMemo)(()=>q(s&&r!==`all`?e.filter(e=>e.severity===r):e),[e,r,s]);return t?null:n?(0,W.jsx)(`p`,{role:`alert`,children:`Could not load recipient failures.`}):e.length?(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(d,{align:`center`,gap:`md`,justify:`between`,wrap:!0,children:[(0,W.jsxs)(p,{size:`sm`,tone:`secondary`,children:[c(e.length),` `,e.length===1?`recipient`:`recipients`,`, grouped by provider response.`]}),s&&(0,W.jsx)(de,{value:r,variant:`pill`,onValueChange:e=>i(e),children:(0,W.jsxs)(ue,{className:`h-auto flex-wrap gap-1`,children:[(0,W.jsxs)(M,{value:`all`,children:[`All`,(0,W.jsx)(j,{children:c(e.length)})]}),(0,W.jsxs)(M,{value:`permanent`,children:[`Permanent`,(0,W.jsx)(j,{children:c(a)})]}),(0,W.jsxs)(M,{value:`temporary`,children:[`Temporary`,(0,W.jsx)(j,{children:c(o)})]})]})})]}),(0,W.jsx)(_,{className:`border-t`,defaultValue:[l[0].key],type:`multiple`,children:l.map(e=>(0,W.jsx)(Be,{group:e,showSeverity:s&&r===`all`},e.key))},r)]}):(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No recipient failures.`})}var He={ok:(0,W.jsx)(ee,{className:`size-4 text-green`}),off:(0,W.jsx)(y,{className:`size-4 text-muted-foreground`}),info:(0,W.jsx)(te,{className:`size-4 text-muted-foreground`}),error:(0,W.jsx)(v,{className:`size-4 text-destructive`})},Ue=`max-sm:[&>*:nth-child(-n+2)]:border-b max-sm:[&>*:nth-child(2n)]:border-r-0`;function Y(e,t,n=`${t}s`){return`${c(e)} ${e===1?t:n}`}function X({label:e,color:t,value:n,share:r}){return(0,W.jsx)(ge,{children:(0,W.jsxs)(f,{gap:`xs`,children:[(0,W.jsx)(me,{color:t,children:e}),(0,W.jsx)(he,{diffDirection:r?`empty`:void 0,diffValue:r??void 0,value:c(n)})]})})}function We({check:e}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,W.jsx)(`span`,{className:`flex h-[1lh] shrink-0 items-center self-start`,children:He[e.tone]}),(0,W.jsxs)(f,{className:`min-w-0 grow`,gap:`none`,children:[(0,W.jsx)(`span`,{className:l(e.tone===`off`&&`text-muted-foreground`),children:e.title}),e.detail&&(0,W.jsx)(p,{className:`break-words`,size:`sm`,tone:`secondary`,children:e.detail})]}),e.action&&(0,W.jsx)(`div`,{className:`shrink-0`,children:e.action})]})}function Z({label:e,children:t}){return(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:e}),(0,W.jsx)(`span`,{className:`text-sm`,children:t})]})}function Ge({value:e,timezone:t}){let n=z(e,{year:!0}),r=z(e,{year:!0,timezone:t});return n?(0,W.jsxs)(f,{className:`tabular-nums`,gap:`none`,children:[(0,W.jsx)(`span`,{children:n.date}),(0,W.jsxs)(p,{as:`span`,size:`sm`,tone:`secondary`,children:[n.time,` UTC`]}),r&&r.offsetNanoseconds!==0&&(0,W.jsxs)(p,{as:`span`,size:`sm`,tone:`secondary`,children:[r.date===n.date?r.time:`${r.date}, ${r.time}`,` `,t]})]}):(0,W.jsx)(W.Fragment,{children:`N/A`})}function Ke(e,t,n,r){let i=t.filter(e=>e.status===`failed`),a=t.filter(e=>e.status===`pending`||e.status===`submitting`),o=Y(t.length,`batch`,`batches`);if(e.status===`failed`||i.length)return{key:`batches`,tone:`error`,title:i.length?`${c(i.length)} of ${o} failed`:`Email failed to send`,detail:e.error||i[0]?.error_message,action:(0,W.jsxs)(d,{gap:`xs`,children:[r,e.status===`failed`&&(0,W.jsx)(b,{size:`sm`,variant:`outline`,asChild:!0,children:(0,W.jsx)(`a`,{href:`#/editor/post/${n}`,children:`Retry`})})]})};if(e.status===`pending`||e.status===`submitting`||a.length)return{key:`batches`,tone:`info`,title:a.length?`${c(a.length)} of ${o} not sent yet`:`Sending in progress`,action:r};let s=Oe(e.created_at,e.submitted_at);return{key:`batches`,tone:`ok`,title:t.length?`Sent in ${o}`:`Status: ${V(e.status)}`,detail:s===null?void 0:s<1?`Submitted immediately`:`Submitted ${B(s)} after creation`,action:r}}function qe(e,t,n){if(!e.length)return{key:`failures`,tone:`ok`,title:`No recipient failures`};let[r]=q(e),i=r.enhancedCode?`${r.code} ${r.enhancedCode}`:r.code;return{key:`failures`,tone:`info`,title:(0,W.jsxs)(W.Fragment,{children:[Y(e.length,`recipient`),` failed`,t>0&&(0,W.jsxs)(p,{as:`span`,tone:`secondary`,children:[` `,`(`,u(e.length/t),`)`]})]}),detail:`Most common: ${i} ${r.message} · ${Y(r.failures.length,`recipient`)}`,action:n}}function Q(e,t,n){return{key:e,tone:n?`ok`:`off`,title:`${t} ${n?`on`:`off`}`}}function Je({emailId:e,onView:t}){let{data:n,isError:r}=Se(e,{refetchInterval:5e3,retry:!1,defaultErrorHandler:!1});return(0,W.jsxs)(S,{children:[(0,W.jsxs)(oe,{className:`flex-row items-center justify-between gap-3 py-4`,children:[(0,W.jsx)(se,{children:`Analytics sync`}),(0,W.jsx)(b,{size:`sm`,variant:`ghost`,onClick:t,children:`View details`})]}),U(n)?(0,W.jsx)(x,{className:`border-t p-0`,children:(0,W.jsxs)(A,{className:`[&_td:first-child]:pl-6 [&_td:last-child]:pr-6 [&_th:first-child]:pl-6 [&_th:last-child]:pr-6 [&_tr:last-child]:border-b-0`,children:[(0,W.jsx)(k,{children:(0,W.jsxs)(E,{children:[(0,W.jsx)(T,{children:`Job`}),(0,W.jsx)(T,{children:`Fetched through (UTC)`}),(0,W.jsx)(T,{className:`text-right`,children:`Behind`})]})}),(0,W.jsx)(D,{children:H.map(([e,t])=>{let r=n?.[e],i=z(r?.fetchedThrough,{year:!0});return(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsxs)(d,{align:`center`,gap:`sm`,children:[t,r?.running&&(0,W.jsx)(ve,{size:`sm`,state:`active`,title:`Running`,variant:`success`})]})}),(0,W.jsx)(O,{className:`tabular-nums`,children:i?`${i.date}, ${i.time}`:(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})}),(0,W.jsx)(O,{className:`text-right tabular-nums`,children:typeof r?.lagSeconds==`number`?B(r.lagSeconds):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})})]},e)})})]})}):(0,W.jsx)(x,{className:`pb-4`,children:(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:r?`Could not load analytics status.`:`No analytics activity yet.`})})]})}function Ye({email:e,emailId:t,postId:n,timezone:r,batches:i,failures:a,onOpenTab:o}){let s=e.email_count??0,c=e.failed_count??0,d=e=>s>0?u(e/s):null,p=(e,t)=>(0,W.jsx)(b,{size:`sm`,variant:`ghost`,onClick:()=>o(e),children:t}),m=[Ke(e,i??[],n,p(`batches`,`View batches`)),...a?[qe(a,s,p(`failures`,`View failures`))]:[],Q(`opens`,`Open tracking`,e.track_opens),Q(`clicks`,`Click tracking`,e.track_clicks),Q(`feedback`,`Member feedback`,e.feedback_enabled)],h=(0,W.jsx)(`code`,{className:`rounded-sm bg-muted px-1.5 py-0.5 font-mono text-xs`,children:e.recipient_filter||`all`});return(0,W.jsxs)(f,{gap:`xl`,children:[(0,W.jsxs)(S,{children:[(0,W.jsxs)(x,{className:l(`grid grid-cols-2 p-0 sm:grid-cols-4`,Ue),children:[(0,W.jsx)(X,{color:`var(--chart-purple)`,label:`Sent`,value:s}),(0,W.jsx)(X,{color:`var(--chart-green)`,label:`Delivered`,share:d(e.delivered_count??0),value:e.delivered_count??0}),(0,W.jsx)(X,{color:`var(--chart-blue)`,label:`Opened`,share:e.track_opens?d(e.opened_count??0):`Not tracked`,value:e.opened_count??0}),(0,W.jsx)(X,{color:`var(--chart-rose)`,label:`Failed`,share:c?d(c):null,value:c})]}),(0,W.jsxs)(x,{className:`grid grid-cols-2 gap-4 border-t px-6 py-4 sm:grid-cols-4`,children:[(0,W.jsx)(Z,{label:`Status`,children:V(e.status)}),(0,W.jsx)(Z,{label:`Recipients`,children:h}),(0,W.jsx)(Z,{label:`Created`,children:(0,W.jsx)(Ge,{timezone:r,value:e.created_at})}),(0,W.jsx)(Z,{label:`Submitted`,children:(0,W.jsx)(Ge,{timezone:r,value:e.submitted_at})})]})]}),(0,W.jsx)(`div`,{className:`divide-y rounded-lg border`,children:m.map(e=>(0,W.jsx)(We,{check:e},e.key))}),(0,W.jsx)(Je,{emailId:t,onView:()=>o(`analytics`)})]})}var $=`bg-transparent px-0`;function Xe({post:e}){let[t,n]=(0,F.useState)(`overview`),r=e.email?.id??``,i=Ee(r,{enabled:!!r,refetchInterval:1e4,retry:!1,defaultErrorHandler:!1}),a=xe(r,{enabled:!!r,defaultErrorHandler:!1}),o=Te(r,{enabled:!!r,defaultErrorHandler:!1}),{data:s}=_e(),u=i.data?.emails[0]??e.email,d=a.data?.batches??[],p=o.data?.failures??[],m=d.filter(e=>e.status===`failed`).length,h=be(s?.settings??[]),g=e.published_at?ke(e.published_at,h):null,_=u&&(e.status===`published`||e.status===`sent`)&&u?.status!==`failed`?e.email_only?`Sent`:`Published and sent`:u?.status===`failed`?`Published but failed to send`:`Published on your site`;return(0,W.jsxs)(f,{className:`h-full max-w-5xl overflow-auto px-4 pb-10 md:px-8`,gap:`lg`,children:[(0,W.jsx)(w,{className:`pt-7`,sticky:!1,children:(0,W.jsxs)(w.Left,{children:[(0,W.jsxs)(w.Breadcrumb,{children:[(0,W.jsx)(`a`,{href:`#/posts`,children:`Posts`}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,W.jsx)(`a`,{href:`#/posts/analytics/${e.id}`,children:`Analytics`}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,W.jsx)(`span`,{children:`Debug`})]}),(0,W.jsx)(w.Title,{className:`whitespace-normal`,children:e.title||`(Untitled)`}),g&&(0,W.jsxs)(w.Meta,{children:[_,` on `,g]})]})}),i.isError&&(0,W.jsx)(`p`,{role:`alert`,children:`Could not refresh email status. Showing the last available data.`}),!r||!u?(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No email data for this post.`}):(0,W.jsxs)(de,{value:t,variant:`underline`,onValueChange:e=>n(e),children:[(0,W.jsxs)(ue,{className:`mb-6`,children:[(0,W.jsx)(M,{value:`overview`,children:`Overview`}),(0,W.jsxs)(M,{value:`failures`,children:[`Failures`,o.data&&(0,W.jsx)(j,{className:$,children:c(p.length)})]}),(0,W.jsxs)(M,{value:`batches`,children:[`Batches`,a.data&&(m>0?(0,W.jsxs)(j,{className:l($,`text-destructive`),children:[c(m),` failed`]}):(0,W.jsx)(j,{className:$,children:c(d.length)}))]}),(0,W.jsx)(M,{value:`analytics`,children:`Analytics sync`})]}),(0,W.jsx)(N,{value:`overview`,children:(0,W.jsx)(Ye,{batches:a.data?d:null,email:u,emailId:r,failures:o.data?p:null,postId:e.id,timezone:h,onOpenTab:n})}),(0,W.jsx)(N,{value:`failures`,children:(0,W.jsx)(Ve,{failures:p,isError:o.isError,isLoading:o.isLoading})}),(0,W.jsx)(N,{value:`batches`,children:(0,W.jsx)(Ie,{batches:d,isError:a.isError,isLoading:a.isLoading})}),(0,W.jsx)(N,{value:`analytics`,children:(0,W.jsx)(Me,{email:u,emailId:r})})]})]})}function Ze(){let{postId:e}=o(),{data:t,isLoading:n}=r(),{data:i,isLoading:c,isError:l}=a({searchParams:{filter:`id:${e}`,include:`tags,authors,authors.roles,email,tiers,newsletter`},defaultErrorHandler:!1}),u=i?.posts[0];return c||n?(0,W.jsx)(le,{size:`lg`}):l||!t?(0,W.jsx)(`p`,{role:`alert`,children:`Could not load this post.`}):u?fe(t)&&!u.authors?.some(e=>e.id===t.id)||pe(t)&&u.status!==`draft`?(0,W.jsx)(s,{to:`/posts`,replace:!0}):(0,W.jsx)(Xe,{post:u},u.id):(0,W.jsx)(ye,{})}export{Ze 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]=`e256b3ae-157e-4877-a646-1b8f15ac5b56`,e._sentryDebugIdIdentifier=`sentry-dbid-e256b3ae-157e-4877-a646-1b8f15ac5b56`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{A as n,o as r}from"./hooks-0r7qxGEo.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{r as a}from"./posts-CftunZgV.js";import{h as o}from"./chunk-OB3PAWPO-D3muQBsq.js";import{t as s}from"./router-provider-Cf-bcYZr.js";import{H as c,L as l,U as u}from"./shade-provider-DvrXKKQZ.js";import{t as d}from"./inline-Qoyy4r2g.js";import{t as f}from"./stack-C3OmgpUv.js";import{t as p}from"./text-BnCSdzao.js";import{i as m,n as h,r as g,t as _}from"./accordion-BB5V0RD1.js";import{$n as ee,Jn as v,Qn as y,cn as te,t as b}from"./button-CTHYSI-d.js";import{n as ne,r as re,t as ie}from"./avatar-YbECDnBI.js";import{t as ae}from"./badge-DuMiqyUH.js";import{a as oe,n as x,o as se,t as S}from"./card-Cd6xB_Ok.js";import{t as ce}from"./label-CxXFmzcd.js";import{t as C}from"./input-BHb2A_DU.js";import{n as le}from"./loading-indicator-DaRyGrxv.js";import{t as w}from"./page-header-CxTb0je5.js";import{a as T,c as E,n as D,r as O,s as k,t as A}from"./table-DQ63Yu4a.js";import{a as j,i as M,n as N,r as ue,t as de}from"./tabs-fHs3A8WC.js";import{c as fe,l as pe}from"./users-CKJaAxEJ.js";import{n as me,r as he,t as ge}from"./kpi-card-BLsrKWhX.js";import{Kt as _e,ot as ve,v as ye}from"./index-RuRs_qGS.js";import{t as be}from"./get-site-timezone-BnQQpb6P.js";import{t as P}from"./classApi-CI9ayKdZ.js";import{a as xe,i as Se,l as Ce,n as we,o as Te,r as Ee}from"./emails-8YiSmC2X.js";var F=e(t(),1),I=e=>String(e).padStart(2,`0`);function L(e){if(!e)return null;try{return P.Instant.from(e)}catch{return null}}function De(e,t){let n=e.toZonedDateTimeISO(`UTC`),r=n.toLocaleString(`en-US`,{month:`short`}),i=t?`.${String(n.millisecond).padStart(3,`0`)}`:``;return`${I(n.day)} ${r}, ${n.year}, ${I(n.hour)}:${I(n.minute)}:${I(n.second)}${i}`}function R(e,t=!1){let n=L(e);return n?`${De(n,t)} UTC`:`N/A`}function z(e,{year:t=!1,timezone:n=`UTC`}={}){let r=L(e);if(!r)return null;let i=r.toZonedDateTimeISO(n),a=i.toLocaleString(`en-US`,{month:`short`});return{date:t?`${I(i.day)} ${a} ${i.year}`:`${I(i.day)} ${a}`,time:`${I(i.hour)}:${I(i.minute)}:${I(i.second)}`,offsetNanoseconds:i.offsetNanoseconds}}function Oe(e,t){let n=L(e),r=L(t);return!n||!r?null:n.until(r).total({unit:`seconds`})}function ke(e,t){let n=L(e);if(!n)return null;let r=n.toZonedDateTimeISO(t),i=r.toLocaleString(`en-US`,{month:`short`});return`${r.day} ${i} ${r.year} at ${I(r.hour)}:${I(r.minute)}`}function Ae(e,t=P.Now.instant()){let n=L(e)??t,r=n.add({hours:168}),i=t.subtract({hours:1}),a=P.Instant.compare(r,i)<0?r:i,o=P.Instant.compare(a,n)>0?a:t,s=e=>e.toZonedDateTimeISO(`UTC`).toPlainDateTime().toString({smallestUnit:`minute`});return{begin:s(n),end:s(o)}}function je(e){let t=P.PlainDateTime.from(e.begin).toZonedDateTime(`UTC`).toInstant(),n=P.PlainDateTime.from(e.end).toZonedDateTime(`UTC`).toInstant();if(P.Instant.compare(t,n)>=0)throw Error(`Choose a begin date before the end date.`);return{begin:t.toString({fractionalSecondDigits:3}),end:n.toString({fractionalSecondDigits:3})}}function B(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`N/A`:[[Math.floor(e/86400),`d`],[Math.floor(e/3600)%24,`h`],[Math.floor(e/60)%60,`m`],[Math.floor(e)%60,`s`]].filter(([e])=>Number(e)>0).map(([e,t])=>`${e}${t}`).join(` `)||`0s`}function V(e){return e?e.charAt(0).toUpperCase()+e.slice(1):`N/A`}var H=[[`latestOpened`,`Opens`],[`latest`,`Delivery and failures`],[`missing`,`Missing events`]];function U(e){return!!e?.scheduled?.schedule||H.some(([t])=>{let n=e?.[t];return!!(n?.running||n?.lastStarted||n?.fetchedThrough||n?.lastEventTimestamp)})}var W=i();function G({value:e,title:t}){let n=z(e);return n?(0,W.jsxs)(f,{className:`whitespace-nowrap tabular-nums`,gap:`none`,title:t??R(e,!0),children:[(0,W.jsx)(`span`,{children:n.date}),(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:n.time})]}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})}function K({label:e,detail:t,job:n,state:r}){let i=z(n?.lastStarted);return(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(`span`,{className:`font-medium whitespace-nowrap`,children:e}),t&&(0,W.jsx)(p,{as:`span`,className:`whitespace-nowrap tabular-nums`,size:`sm`,tone:`secondary`,children:t})]})}),(0,W.jsx)(O,{children:(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsxs)(d,{align:`center`,className:`whitespace-nowrap`,gap:`sm`,children:[(0,W.jsx)(ve,{size:`sm`,state:n?.running?`active`:`idle`,variant:n?.running?`success`:`neutral`}),r??(n?.running?`Running`:`Idle`)]}),i&&(0,W.jsxs)(p,{as:`span`,className:`whitespace-nowrap tabular-nums`,size:`sm`,title:R(n?.lastStarted,!0),tone:`secondary`,children:[`Started `,i.date,`, `,i.time]})]})}),(0,W.jsx)(O,{className:`whitespace-nowrap tabular-nums`,children:B(n?.lagSeconds)}),(0,W.jsx)(O,{children:(0,W.jsx)(G,{title:`Fetching from ${R(n?.lastBegin,!0)}\nFetched through ${R(n?.fetchedThrough,!0)}`,value:n?.fetchedThrough})}),(0,W.jsx)(O,{children:(0,W.jsx)(G,{value:n?.lastEventTimestamp})})]})}function Me({email:e,emailId:t}){let r=Se(t,{refetchInterval:5e3,retry:!1,defaultErrorHandler:!1}),i=Ce(),a=we(),[o,s]=(0,F.useState)(null),[c,l]=(0,F.useState)(null),u=i.isPending||a.isPending,m=r.data,h=m?.scheduled;function g(){s(Ae(e.created_at)),l(null)}async function _(e=!1){l(null);let r={};if(e&&o)try{r=je(o)}catch{l(`Choose a begin date before the end date.`);return}try{await i.mutateAsync({id:t,...r}),s(null)}catch(e){l(n(e,`Could not schedule analytics refetch.`))}}async function ee(){l(null);try{await a.mutateAsync()}catch(e){l(n(e,`Could not cancel analytics refetch.`))}}let v=null;r.isLoading||(h?.schedule?v=!h.canceled&&(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:()=>{ee()},children:`Cancel scheduled refetch`}):o||(v=(0,W.jsxs)(d,{gap:`sm`,wrap:!0,children:[(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:()=>{_()},children:`Refetch analytics`}),(0,W.jsx)(b,{disabled:u,size:`sm`,variant:`outline`,onClick:g,children:`Custom date range`})]})));let y=U(m);return(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(d,{align:`center`,gap:`md`,justify:`between`,wrap:!0,children:[(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:`All times UTC. Hover a time for full detail.`}),v]}),o&&!h?.schedule&&(0,W.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),_(!0)},children:(0,W.jsxs)(d,{align:`end`,gap:`md`,wrap:!0,children:[(0,W.jsxs)(f,{gap:`sm`,children:[(0,W.jsx)(ce,{htmlFor:`custom-begin-date`,children:`Begin (UTC)`}),(0,W.jsx)(C,{id:`custom-begin-date`,type:`datetime-local`,value:o.begin,required:!0,onChange:e=>s({...o,begin:e.target.value})})]}),(0,W.jsxs)(f,{gap:`sm`,children:[(0,W.jsx)(ce,{htmlFor:`custom-end-date`,children:`End (UTC)`}),(0,W.jsx)(C,{id:`custom-end-date`,type:`datetime-local`,value:o.end,required:!0,onChange:e=>s({...o,end:e.target.value})})]}),(0,W.jsxs)(d,{gap:`sm`,children:[(0,W.jsx)(b,{disabled:u,type:`submit`,children:`Schedule refetch`}),(0,W.jsx)(b,{disabled:u,type:`button`,variant:`outline`,onClick:()=>{s(null),l(null)},children:`Cancel`})]})]})}),c&&(0,W.jsx)(`p`,{className:`text-destructive`,role:`alert`,children:c}),r.isLoading&&(0,W.jsx)(`p`,{role:`status`,children:`Loading analytics status…`}),r.isError&&(0,W.jsx)(`p`,{role:`alert`,children:`Could not load analytics status. Retrying automatically.`}),m&&!y&&(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No fetches recorded yet.`}),m&&y&&(0,W.jsxs)(A,{children:[(0,W.jsx)(k,{children:(0,W.jsx)(E,{children:[`Job`,`State`,`Lag`,`Fetched through`,`Last event`].map(e=>(0,W.jsx)(T,{className:`whitespace-nowrap`,children:e},e))})}),(0,W.jsxs)(D,{children:[H.map(([e,t])=>(0,W.jsx)(K,{job:m[e],label:t},e)),h?.schedule&&(0,W.jsx)(K,{detail:`${R(h.schedule.begin)} – ${R(h.schedule.end)}`,job:h,label:`Scheduled refetch`,state:h.canceled?`Canceled`:void 0})]})]})]})}var Ne={submitted:`success`,failed:`destructive`,pending:`secondary`,submitting:`secondary`};function Pe({message:e}){let[t,n]=(0,F.useState)(!1);return(0,W.jsxs)(f,{gap:`xs`,children:[(0,W.jsx)(`p`,{className:t?`break-words whitespace-pre-wrap`:`line-clamp-2 break-words`,children:e}),(0,W.jsx)(b,{"aria-expanded":t,className:`self-start`,size:`sm`,variant:`ghost`,onClick:()=>n(!t),children:t?`Show less`:`Show full error`})]})}function Fe(e,t){let n=`${c(e.length)} ${e.length===1?`batch`:`batches`}`;return t>0?`${c(t)} of ${n} failed`:e.every(e=>e.status===`submitted`)?`${n}, all submitted`:n}function Ie({batches:e,isLoading:t,isError:n}){if(t)return null;if(n)return(0,W.jsx)(`p`,{role:`alert`,children:`Could not load email batches.`});if(!e.length)return(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No batch data.`});let r=e.filter(e=>e.status===`failed`).length;return(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(p,{size:`sm`,tone:`secondary`,children:[Fe(e,r),`.`]}),(0,W.jsxs)(A,{children:[(0,W.jsx)(k,{children:(0,W.jsx)(E,{children:[`Status`,`Created`,`Segment`,`Recipients`,`Details`].map(e=>(0,W.jsx)(T,{children:e},e))})}),(0,W.jsx)(D,{children:e.map(e=>(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsx)(ae,{variant:Ne[e.status],children:V(e.status)})}),(0,W.jsx)(O,{className:`whitespace-nowrap tabular-nums`,children:R(e.created_at)}),(0,W.jsx)(O,{className:`max-w-xs break-words whitespace-normal`,children:e.member_segment||`All`}),(0,W.jsx)(O,{className:`tabular-nums`,children:c(e.count?.recipients??0)}),(0,W.jsx)(O,{className:`max-w-xl break-words whitespace-normal`,children:(0,W.jsxs)(f,{gap:`sm`,children:[e.mailgun_message_id&&(0,W.jsxs)(`span`,{children:[`Provider id: `,(0,W.jsx)(`code`,{children:e.mailgun_message_id})]}),!!e.error_status_code&&(0,W.jsxs)(`span`,{children:[`Failure status code: `,e.error_status_code]}),e.error_message&&(0,W.jsx)(Pe,{message:e.error_message}),!e.mailgun_message_id&&!e.error_status_code&&!e.error_message&&`N/A`]})})]},e.id))})]})]})}function Le(e){let t=new Map;for(let{message:n}of e)t.set(n,(t.get(n)??0)+1);let n=e[0].message;for(let[e,r]of t)r>(t.get(n)??0)&&(n=e);return n}function q(e){let t=new Map;for(let n of e){let e=`${n.severity}:${n.code}:${n.enhanced_code||``}`;t.set(e,[...t.get(e)??[],n])}let n=e=>e.severity===`permanent`?0:1;return[...t.entries()].map(([e,t])=>({key:e,code:t[0].code,enhancedCode:t[0].enhanced_code||null,severity:t[0].severity,message:Le(t),failures:t})).sort((e,t)=>t.failures.length-e.failures.length||n(e)-n(t)||e.code-t.code)}var J=20;function Re(e){return(e||`U`).split(` `).filter(Boolean).map(e=>e[0]).slice(0,2).join(``).toUpperCase()}function ze({failure:e,groupMessage:t}){let n=e.email_recipient?.member_name||``,r=e.email_recipient?.member_email||``,i=(0,W.jsxs)(d,{align:`center`,gap:`md`,children:[(0,W.jsxs)(ie,{className:`size-8`,children:[(0,W.jsx)(re,{src:e.member?.avatar_image||void 0}),(0,W.jsx)(ne,{children:Re(n||r)})]}),(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:n||r}),n&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:r})]})]});return(0,W.jsxs)(f,{className:`py-2`,gap:`xs`,children:[e.member?.id?(0,W.jsx)(`a`,{href:`#/members/${e.member.id}`,children:i}):i,e.message!==t&&(0,W.jsx)(p,{className:`pl-11 break-words`,size:`sm`,tone:`secondary`,children:e.message})]})}function Be({group:e,showSeverity:t}){let[n,r]=(0,F.useState)(J),i=e.failures.length,a=i-n,o=e.enhancedCode?`${e.code} · ${e.enhancedCode}`:String(e.code);return(0,W.jsxs)(g,{value:e.key,children:[(0,W.jsx)(m,{className:`group gap-3 hover:no-underline`,children:(0,W.jsxs)(d,{align:`center`,className:`min-w-0 grow`,gap:`sm`,wrap:!0,children:[(0,W.jsx)(ae,{className:`shrink-0 font-mono`,variant:e.severity===`permanent`?`destructive`:`warning`,children:o}),(0,W.jsx)(`span`,{className:`order-last line-clamp-1 min-w-0 basis-full font-normal break-words group-data-[state=open]:line-clamp-none group-data-[state=open]:whitespace-pre-wrap sm:order-none sm:grow sm:basis-0`,children:e.message}),(0,W.jsxs)(p,{as:`span`,className:`shrink-0 max-sm:grow`,size:`sm`,tone:`secondary`,children:[c(i),` `,i===1?`recipient`:`recipients`,t&&` · ${e.severity}`]})]})}),(0,W.jsxs)(h,{children:[(0,W.jsx)(`div`,{className:`divide-y`,children:e.failures.slice(0,n).map(t=>(0,W.jsx)(ze,{failure:t,groupMessage:e.message},t.id))}),a>0&&(0,W.jsxs)(b,{className:`mt-2`,size:`sm`,variant:`ghost`,onClick:()=>r(n+J),children:[`Show `,c(Math.min(a,J)),` more`]})]})]})}function Ve({failures:e,isLoading:t,isError:n}){let[r,i]=(0,F.useState)(`all`),a=e.filter(e=>e.severity===`permanent`).length,o=e.length-a,s=a>0&&o>0,l=(0,F.useMemo)(()=>q(s&&r!==`all`?e.filter(e=>e.severity===r):e),[e,r,s]);return t?null:n?(0,W.jsx)(`p`,{role:`alert`,children:`Could not load recipient failures.`}):e.length?(0,W.jsxs)(f,{gap:`md`,children:[(0,W.jsxs)(d,{align:`center`,gap:`md`,justify:`between`,wrap:!0,children:[(0,W.jsxs)(p,{size:`sm`,tone:`secondary`,children:[c(e.length),` `,e.length===1?`recipient`:`recipients`,`, grouped by provider response.`]}),s&&(0,W.jsx)(de,{value:r,variant:`pill`,onValueChange:e=>i(e),children:(0,W.jsxs)(ue,{className:`h-auto flex-wrap gap-1`,children:[(0,W.jsxs)(M,{value:`all`,children:[`All`,(0,W.jsx)(j,{children:c(e.length)})]}),(0,W.jsxs)(M,{value:`permanent`,children:[`Permanent`,(0,W.jsx)(j,{children:c(a)})]}),(0,W.jsxs)(M,{value:`temporary`,children:[`Temporary`,(0,W.jsx)(j,{children:c(o)})]})]})})]}),(0,W.jsx)(_,{className:`border-t`,defaultValue:[l[0].key],type:`multiple`,children:l.map(e=>(0,W.jsx)(Be,{group:e,showSeverity:s&&r===`all`},e.key))},r)]}):(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No recipient failures.`})}var He={ok:(0,W.jsx)(ee,{className:`size-4 text-green`}),off:(0,W.jsx)(y,{className:`size-4 text-muted-foreground`}),info:(0,W.jsx)(te,{className:`size-4 text-muted-foreground`}),error:(0,W.jsx)(v,{className:`size-4 text-destructive`})},Ue=`max-sm:[&>*:nth-child(-n+2)]:border-b max-sm:[&>*:nth-child(2n)]:border-r-0`;function Y(e,t,n=`${t}s`){return`${c(e)} ${e===1?t:n}`}function X({label:e,color:t,value:n,share:r}){return(0,W.jsx)(ge,{children:(0,W.jsxs)(f,{gap:`xs`,children:[(0,W.jsx)(me,{color:t,children:e}),(0,W.jsx)(he,{diffDirection:r?`empty`:void 0,diffValue:r??void 0,value:c(n)})]})})}function We({check:e}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,W.jsx)(`span`,{className:`flex h-[1lh] shrink-0 items-center self-start`,children:He[e.tone]}),(0,W.jsxs)(f,{className:`min-w-0 grow`,gap:`none`,children:[(0,W.jsx)(`span`,{className:l(e.tone===`off`&&`text-muted-foreground`),children:e.title}),e.detail&&(0,W.jsx)(p,{className:`break-words`,size:`sm`,tone:`secondary`,children:e.detail})]}),e.action&&(0,W.jsx)(`div`,{className:`shrink-0`,children:e.action})]})}function Z({label:e,children:t}){return(0,W.jsxs)(f,{gap:`none`,children:[(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:e}),(0,W.jsx)(`span`,{className:`text-sm`,children:t})]})}function Ge({value:e,timezone:t}){let n=z(e,{year:!0}),r=z(e,{year:!0,timezone:t});return n?(0,W.jsxs)(f,{className:`tabular-nums`,gap:`none`,children:[(0,W.jsx)(`span`,{children:n.date}),(0,W.jsxs)(p,{as:`span`,size:`sm`,tone:`secondary`,children:[n.time,` UTC`]}),r&&r.offsetNanoseconds!==0&&(0,W.jsxs)(p,{as:`span`,size:`sm`,tone:`secondary`,children:[r.date===n.date?r.time:`${r.date}, ${r.time}`,` `,t]})]}):(0,W.jsx)(W.Fragment,{children:`N/A`})}function Ke(e,t,n,r){let i=t.filter(e=>e.status===`failed`),a=t.filter(e=>e.status===`pending`||e.status===`submitting`),o=Y(t.length,`batch`,`batches`);if(e.status===`failed`||i.length)return{key:`batches`,tone:`error`,title:i.length?`${c(i.length)} of ${o} failed`:`Email failed to send`,detail:e.error||i[0]?.error_message,action:(0,W.jsxs)(d,{gap:`xs`,children:[r,e.status===`failed`&&(0,W.jsx)(b,{size:`sm`,variant:`outline`,asChild:!0,children:(0,W.jsx)(`a`,{href:`#/editor/post/${n}`,children:`Retry`})})]})};if(e.status===`pending`||e.status===`submitting`||a.length)return{key:`batches`,tone:`info`,title:a.length?`${c(a.length)} of ${o} not sent yet`:`Sending in progress`,action:r};let s=Oe(e.created_at,e.submitted_at);return{key:`batches`,tone:`ok`,title:t.length?`Sent in ${o}`:`Status: ${V(e.status)}`,detail:s===null?void 0:s<1?`Submitted immediately`:`Submitted ${B(s)} after creation`,action:r}}function qe(e,t,n){if(!e.length)return{key:`failures`,tone:`ok`,title:`No recipient failures`};let[r]=q(e),i=r.enhancedCode?`${r.code} ${r.enhancedCode}`:r.code;return{key:`failures`,tone:`info`,title:(0,W.jsxs)(W.Fragment,{children:[Y(e.length,`recipient`),` failed`,t>0&&(0,W.jsxs)(p,{as:`span`,tone:`secondary`,children:[` `,`(`,u(e.length/t),`)`]})]}),detail:`Most common: ${i} ${r.message} · ${Y(r.failures.length,`recipient`)}`,action:n}}function Q(e,t,n){return{key:e,tone:n?`ok`:`off`,title:`${t} ${n?`on`:`off`}`}}function Je({emailId:e,onView:t}){let{data:n,isError:r}=Se(e,{refetchInterval:5e3,retry:!1,defaultErrorHandler:!1});return(0,W.jsxs)(S,{children:[(0,W.jsxs)(oe,{className:`flex-row items-center justify-between gap-3 py-4`,children:[(0,W.jsx)(se,{children:`Analytics sync`}),(0,W.jsx)(b,{size:`sm`,variant:`ghost`,onClick:t,children:`View details`})]}),U(n)?(0,W.jsx)(x,{className:`border-t p-0`,children:(0,W.jsxs)(A,{className:`[&_td:first-child]:pl-6 [&_td:last-child]:pr-6 [&_th:first-child]:pl-6 [&_th:last-child]:pr-6 [&_tr:last-child]:border-b-0`,children:[(0,W.jsx)(k,{children:(0,W.jsxs)(E,{children:[(0,W.jsx)(T,{children:`Job`}),(0,W.jsx)(T,{children:`Fetched through (UTC)`}),(0,W.jsx)(T,{className:`text-right`,children:`Behind`})]})}),(0,W.jsx)(D,{children:H.map(([e,t])=>{let r=n?.[e],i=z(r?.fetchedThrough,{year:!0});return(0,W.jsxs)(E,{children:[(0,W.jsx)(O,{children:(0,W.jsxs)(d,{align:`center`,gap:`sm`,children:[t,r?.running&&(0,W.jsx)(ve,{size:`sm`,state:`active`,title:`Running`,variant:`success`})]})}),(0,W.jsx)(O,{className:`tabular-nums`,children:i?`${i.date}, ${i.time}`:(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})}),(0,W.jsx)(O,{className:`text-right tabular-nums`,children:typeof r?.lagSeconds==`number`?B(r.lagSeconds):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`N/A`})})]},e)})})]})}):(0,W.jsx)(x,{className:`pb-4`,children:(0,W.jsx)(p,{size:`sm`,tone:`secondary`,children:r?`Could not load analytics status.`:`No analytics activity yet.`})})]})}function Ye({email:e,emailId:t,postId:n,timezone:r,batches:i,failures:a,onOpenTab:o}){let s=e.email_count??0,c=e.failed_count??0,d=e=>s>0?u(e/s):null,p=(e,t)=>(0,W.jsx)(b,{size:`sm`,variant:`ghost`,onClick:()=>o(e),children:t}),m=[Ke(e,i??[],n,p(`batches`,`View batches`)),...a?[qe(a,s,p(`failures`,`View failures`))]:[],Q(`opens`,`Open tracking`,e.track_opens),Q(`clicks`,`Click tracking`,e.track_clicks),Q(`feedback`,`Member feedback`,e.feedback_enabled)],h=(0,W.jsx)(`code`,{className:`rounded-sm bg-muted px-1.5 py-0.5 font-mono text-xs`,children:e.recipient_filter||`all`});return(0,W.jsxs)(f,{gap:`xl`,children:[(0,W.jsxs)(S,{children:[(0,W.jsxs)(x,{className:l(`grid grid-cols-2 p-0 sm:grid-cols-4`,Ue),children:[(0,W.jsx)(X,{color:`var(--chart-purple)`,label:`Sent`,value:s}),(0,W.jsx)(X,{color:`var(--chart-green)`,label:`Delivered`,share:d(e.delivered_count??0),value:e.delivered_count??0}),(0,W.jsx)(X,{color:`var(--chart-blue)`,label:`Opened`,share:e.track_opens?d(e.opened_count??0):`Not tracked`,value:e.opened_count??0}),(0,W.jsx)(X,{color:`var(--chart-rose)`,label:`Failed`,share:c?d(c):null,value:c})]}),(0,W.jsxs)(x,{className:`grid grid-cols-2 gap-4 border-t px-6 py-4 sm:grid-cols-4`,children:[(0,W.jsx)(Z,{label:`Status`,children:V(e.status)}),(0,W.jsx)(Z,{label:`Recipients`,children:h}),(0,W.jsx)(Z,{label:`Created`,children:(0,W.jsx)(Ge,{timezone:r,value:e.created_at})}),(0,W.jsx)(Z,{label:`Submitted`,children:(0,W.jsx)(Ge,{timezone:r,value:e.submitted_at})})]})]}),(0,W.jsx)(`div`,{className:`divide-y rounded-lg border`,children:m.map(e=>(0,W.jsx)(We,{check:e},e.key))}),(0,W.jsx)(Je,{emailId:t,onView:()=>o(`analytics`)})]})}var $=`bg-transparent px-0`;function Xe({post:e}){let[t,n]=(0,F.useState)(`overview`),r=e.email?.id??``,i=Ee(r,{enabled:!!r,refetchInterval:1e4,retry:!1,defaultErrorHandler:!1}),a=xe(r,{enabled:!!r,defaultErrorHandler:!1}),o=Te(r,{enabled:!!r,defaultErrorHandler:!1}),{data:s}=_e(),u=i.data?.emails[0]??e.email,d=a.data?.batches??[],p=o.data?.failures??[],m=d.filter(e=>e.status===`failed`).length,h=be(s?.settings??[]),g=e.published_at?ke(e.published_at,h):null,_=u&&(e.status===`published`||e.status===`sent`)&&u?.status!==`failed`?e.email_only?`Sent`:`Published and sent`:u?.status===`failed`?`Published but failed to send`:`Published on your site`;return(0,W.jsxs)(f,{className:`h-full max-w-5xl overflow-auto px-4 pb-10 md:px-8`,gap:`lg`,children:[(0,W.jsx)(w,{className:`pt-7`,sticky:!1,children:(0,W.jsxs)(w.Left,{children:[(0,W.jsxs)(w.Breadcrumb,{children:[(0,W.jsx)(`a`,{href:`#/posts`,children:`Posts`}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,W.jsx)(`a`,{href:`#/posts/analytics/${e.id}`,children:`Analytics`}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,W.jsx)(`span`,{children:`Debug`})]}),(0,W.jsx)(w.Title,{className:`whitespace-normal`,children:e.title||`(Untitled)`}),g&&(0,W.jsxs)(w.Meta,{children:[_,` on `,g]})]})}),i.isError&&(0,W.jsx)(`p`,{role:`alert`,children:`Could not refresh email status. Showing the last available data.`}),!r||!u?(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`No email data for this post.`}):(0,W.jsxs)(de,{value:t,variant:`underline`,onValueChange:e=>n(e),children:[(0,W.jsxs)(ue,{className:`mb-6`,children:[(0,W.jsx)(M,{value:`overview`,children:`Overview`}),(0,W.jsxs)(M,{value:`failures`,children:[`Failures`,o.data&&(0,W.jsx)(j,{className:$,children:c(p.length)})]}),(0,W.jsxs)(M,{value:`batches`,children:[`Batches`,a.data&&(m>0?(0,W.jsxs)(j,{className:l($,`text-destructive`),children:[c(m),` failed`]}):(0,W.jsx)(j,{className:$,children:c(d.length)}))]}),(0,W.jsx)(M,{value:`analytics`,children:`Analytics sync`})]}),(0,W.jsx)(N,{value:`overview`,children:(0,W.jsx)(Ye,{batches:a.data?d:null,email:u,emailId:r,failures:o.data?p:null,postId:e.id,timezone:h,onOpenTab:n})}),(0,W.jsx)(N,{value:`failures`,children:(0,W.jsx)(Ve,{failures:p,isError:o.isError,isLoading:o.isLoading})}),(0,W.jsx)(N,{value:`batches`,children:(0,W.jsx)(Ie,{batches:d,isError:a.isError,isLoading:a.isLoading})}),(0,W.jsx)(N,{value:`analytics`,children:(0,W.jsx)(Me,{email:u,emailId:r})})]})]})}function Ze(){let{postId:e}=o(),{data:t,isLoading:n}=r(),{data:i,isLoading:c,isError:l}=a({searchParams:{filter:`id:${e}`,include:`tags,authors,authors.roles,email,tiers,newsletter`},defaultErrorHandler:!1}),u=i?.posts[0];return c||n?(0,W.jsx)(le,{size:`lg`}):l||!t?(0,W.jsx)(`p`,{role:`alert`,children:`Could not load this post.`}):u?fe(t)&&!u.authors?.some(e=>e.id===t.id)||pe(t)&&u.status!==`draft`?(0,W.jsx)(s,{to:`/posts`,replace:!0}):(0,W.jsx)(Xe,{post:u},u.id):(0,W.jsx)(ye,{})}export{Ze 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]=`c58a8835-9ec5-4ba9-955a-ef2453617d72`,e._sentryDebugIdIdentifier=`sentry-dbid-c58a8835-9ec5-4ba9-955a-ef2453617d72`)}catch{}})();import{i as e,n as t,r as n,t as r}from"./hooks-
|
|
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]=`c58a8835-9ec5-4ba9-955a-ef2453617d72`,e._sentryDebugIdIdentifier=`sentry-dbid-c58a8835-9ec5-4ba9-955a-ef2453617d72`)}catch{}})();import{i as e,n as t,r as n,t as r}from"./hooks-0r7qxGEo.js";import{t as i}from"./tags-OlmRJ6Ps.js";var a=[`tags`,`authors`,`authors.roles`,`email`,`tiers`,`newsletter`,`count.clicks`,`post_revisions`,`post_revisions.author`].join(`,`),o=`mobiledoc,lexical`,s=`status:free,status:-free`;function c(){return{formats:o,include:a}}function l(e={}){let t={formats:o};return e.source&&(t.source=e.source),e.newsletter&&(t.newsletter=e.newsletter,e.emailSegment&&(t.email_segment=e.emailSegment===s?`all`:e.emailSegment)),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=a,t}function u(e={}){let t={formats:o};return e.source&&(t.source=e.source),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=a,t}var d=[`author_id`,`uuid`,`url`,`send_email_when_published`,`email_recipient_filter`,`email`,`newsletter`,`post_revisions`,`author`],f=[`email_subject`,`email_only`,`email_id`];function p(e,t=`post`){let n={...e};for(let e of d)delete n[e];if(t===`page`)for(let e of f)delete n[e];else delete n.show_title_and_feature_image;return n.visibility===null&&(delete n.visibility,delete n.visibility_filter,delete n.tiers),n.visibility===`tiers`&&delete n.visibility_filter,n.visibility===`tiers`&&!n.tiers?.length&&(delete n.visibility,delete n.tiers),n}var m=`PostsResponseType`,h=m,g=n({dataType:m,path:`/posts/`}),_=r({dataType:m,path:`/posts/`,defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.posts),r=t[t.length-1].meta;return{posts:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}});e({dataType:m,path:e=>`/posts/${e}/`});var v=e({dataType:m,path:e=>`/posts/${e}/`}),y=(e,t={})=>{let{searchParams:n,...r}=t;return v(e,{...r,searchParams:{...n,...c()}})},b=t({method:`POST`,path:()=>`/posts/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:[m,i]}}),x=t({method:`PUT`,path:({post:e})=>`/posts/${e.id}/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:[m,i]}}),S=t({method:`DELETE`,path:({id:e})=>`/posts/${e}/`,requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),C=t({method:`PUT`,path:()=>`/posts/bulk/`,searchParams:({filter:e})=>({filter:e}),body:({action:e})=>({bulk:{action:e.type,meta:`meta`in e?e.meta:{}}})}),w=t({method:`DELETE`,path:()=>`/posts/`,searchParams:({filter:e})=>({filter:e})}),T=t({method:`POST`,path:e=>`/posts/${e}/copy/`}),E=t({method:`POST`,retry:!1,path:()=>`/posts/upload/`,body:({file:e,mapping:t})=>{let n=new FormData;n.append(`postsfile`,e);for(let[e,r]of Object.entries(t))n.append(`mapping[${e}]`,r);return n}});export{w as a,S as c,E as d,u as f,_ as i,x as l,p as m,b as n,C as o,c as p,g as r,T as s,h as t,y as u};
|