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]=`40d811f7-d0ed-4e60-bc7c-bbdf1ebdff12`,e._sentryDebugIdIdentifier=`sentry-dbid-40d811f7-d0ed-4e60-bc7c-bbdf1ebdff12`)}catch{}})();import{n as e,r as t}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]=`40d811f7-d0ed-4e60-bc7c-bbdf1ebdff12`,e._sentryDebugIdIdentifier=`sentry-dbid-40d811f7-d0ed-4e60-bc7c-bbdf1ebdff12`)}catch{}})();import{n as e,r as t}from"./hooks-0r7qxGEo.js";import{t as n}from"./src-BwdakGcc.js";var r=`LinkResponseType`,i=t({dataType:r,path:`/links/`}),a=e({method:`PUT`,path:()=>`/links/bulk/`,body:({editedUrl:e})=>({bulk:{action:`updateLink`,meta:{link:{to:e}}}}),searchParams:({originalUrl:e,postId:t})=>({filter:`post_id:${n(t)}+to:${n(e)}`})});export{a as n,i as r,r 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]=`7c97e108-965d-468a-b506-d6115ddd927f`,e._sentryDebugIdIdentifier=`sentry-dbid-7c97e108-965d-468a-b506-d6115ddd927f`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{_ as n}from"./hooks-C-BDQ6Hs.js";import{t as r}from"./jsx-runtime-Bm2_KH-0.js";import{S as i,i as a,m as o}from"./members-Cj_BUZUL.js";import{s}from"./config-B3HuCo0y.js";import{i as c,r as l}from"./currency-DgOqjQBh.js";import{_ as u,n as d}from"./chunk-OB3PAWPO-D3muQBsq.js";import{G as f,H as p,J as m,L as h}from"./shade-provider-DvrXKKQZ.js";import{t as g}from"./box-BOIwAOVT.js";import{t as _}from"./container-DakAbO79.js";import{t as v}from"./grid-BYJO9x_v.js";import{t as y}from"./inline-Qoyy4r2g.js";import{t as b}from"./stack-C3OmgpUv.js";import{Kt as x,Y as S,ar as C,en as ee,in as w,t as T,zr as E}from"./button-CTHYSI-d.js";import{t as D}from"./avatar-YbECDnBI.js";import{a as te,i as ne,n as re,o as ie,r as ae,t as oe}from"./breadcrumb-BO_Xhq8u.js";import{r as O,s as k,t as A}from"./dialog-BO1lcy8A.js";import{c as se,i as j,n as M,o as N,s as P}from"./multi-select-combobox-BzBMUFst.js";import{i as F,n as I,t as L}from"./popover-r_3DwMi9.js";import{t as R}from"./empty-indicator-BhVwqSVH.js";import{t as z}from"./input-group-DL5EFP5r.js";import{n as B}from"./loading-indicator-DaRyGrxv.js";import{t as V}from"./page-header-Baymg6VR.js";import{t as H}from"./preview-chrome-Dcu3p6mp.js";import{a as U,c as ce,n as le,r as W,s as ue,t as de}from"./table-DQ63Yu4a.js";import{n as fe,t as pe}from"./toggle-group-D7ly9OGa.js";import{d as G,p as K}from"./label-picker-GTIIlBQ6.js";import{n as me}from"./index.module-CnPepLB9.js";import{r as he}from"./newsletters-BMEgeL2l.js";import{a as ge}from"./tiers-D7aGzwZ-.js";import{Ht as _e,Kt as ve,Ut as ye,ct as be,gt as xe,lt as Se,s as Ce,ut as we,vt as Te}from"./index-CuDhPtkB.js";import{t as q}from"./list-page-BnOuLOBb.js";import{n as Ee}from"./email-previews-B1Ska3CF.js";import{t as De}from"./clean-tracked-url-iZ-wi2Sn.js";import{a as Oe,c as ke,i as Ae,l as je,o as Me,r as Ne,s as Pe,t as Fe}from"./member-activity-feed-BBeCZmLM.js";var J=e(t(),1),Y={minimumFractionDigits:0,maximumFractionDigits:2};function X(e,t){if(!(typeof e!=`number`||!Number.isFinite(e)||typeof t!=`string`||!/^[a-z]{3}$/i.test(t)))return{value:l(e),symbol:c(t)}}function Ie(e,t){let n=X(e.data.mrr_delta,e.data.currency);if(!n||n.value===0)return;let r=`${n.symbol}${p(Math.abs(n.value),Y)}`;return e.data.type===`created`?`${t.hasMultipleTiers&&typeof e.data.tierName==`string`&&e.data.tierName.trim()?e.data.tierName:`Paid`} ${n.value<0?`-`:``}${r}/month`:`MRR ${n.value>0?`+`:`-`}${r}`}function Le(e){let t=X(e.data.amount,e.data.currency),{tier_name:n,duration:r,cadence:i}=e.data;if(!t||typeof n!=`string`||!n.trim()||typeof r!=`number`||!Number.isInteger(r)||r<=0||typeof i!=`string`||!i.trim())return`Purchased gift subscription`;let a=`${t.symbol}${p(t.value,Y)}`,o=r===1?i:`${i}s`;return`Purchased gift subscription for ${a} (${n}, ${p(r)} ${o})`}function Re(e,t){let n=je(e.type===`gift_purchase_event`?{...e,data:{...e.data,amount:void 0}}:e,t);if(e.type===`subscription_event`&&(n.info=Ie(e,t)),e.type===`donation_event`){let t=X(e.data.amount,e.data.currency);n.info=t?`${t.symbol}${p(t.value,Y)}`:void 0}return e.type===`gift_purchase_event`&&(n.action=Le(e),n.actionTitle=n.action),e.type===`click_event`&&(n.description=typeof n.description==`string`?De(n.description,!0):void 0),n}function Z(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Q(e){return typeof e==`string`?e:void 0}function ze(e){let t=Z(e),n=Z(t?.email),r=[t,n].find(e=>Q(e?.html)&&typeof e?.subject==`string`),i=Z(t?.newsletter)??Z(n?.newsletter),a=Q(t?.post_id)||Q(n?.post_id)||(typeof t?.title==`string`?Q(t.id):void 0);return{stored:r?{html:Q(r.html),subject:Q(r.subject)}:void 0,postId:a,newsletter:i?{sender_name:Q(i.sender_name),sender_email:Q(i.sender_email)}:void 0}}function Be(e,t,n){let r=n?.hostSettings?.managedEmail;return r?.enabled&&(!r.sendingDomain||e?.split(`@`)[1]!==r.sendingDomain)?t||``:e||t||``}function Ve(e){let t=new DOMParser().parseFromString(e,`text/html`);t.querySelectorAll(`a, area`).forEach(e=>{e.removeAttribute(`href`),e.removeAttribute(`target`)}),t.querySelectorAll(`base, meta[http-equiv], form`).forEach(e=>e.remove());let n=t.createElement(`style`);return n.textContent=`html { scrollbar-width: none; } html::-webkit-scrollbar { display: none; }`,t.head.append(n),`<!DOCTYPE html>${t.documentElement.outerHTML}`}var $=r();function He({email:e,onClose:t}){let[n,r]=(0,J.useState)(`desktop`),[i]=(0,J.useState)(()=>window.document.activeElement),a=ze(e),o=!a.stored&&!!a.postId,c=Ee(a.postId??``,{enabled:o}),l=he({enabled:!a.newsletter,searchParams:{filter:`status:active`,limit:`1`}}),u=ve(),d=s(),[f,p]=ye(u.data?.settings??[],[`title`,`default_email_address`]),m=a.newsletter??l.data?.newsletters[0],g=m?.sender_name||f,_=Be(m?.sender_email??void 0,p,d.data?.config),C=a.stored??(o&&!c.isError?c.data?.email_previews[0]:void 0),ee=(0,J.useMemo)(()=>C?Ve(C.html):void 0,[C?.html]),E=u.isError||d.isError||!a.newsletter&&l.isError,D=u.isLoading||d.isLoading||!a.newsletter&&l.isLoading,te=o&&c.isLoading;return(0,$.jsx)(A,{open:!0,onOpenChange:e=>{e||t()},children:(0,$.jsxs)(O,{"aria-describedby":void 0,className:`top-0 left-0 h-dvh w-full max-w-none translate-0 grid-rows-[auto_1fr] gap-0 rounded-none border-0 p-0 shadow-none sm:rounded-none`,"data-testid":`activity-email-preview`,onCloseAutoFocus:e=>{i instanceof HTMLElement&&i.isConnected&&(e.preventDefault(),i.focus())},onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(v,{align:`center`,className:`border-b border-border-default p-4`,columns:3,gap:`md`,children:[(0,$.jsx)(k,{children:`Email preview`}),(0,$.jsxs)(pe,{className:`justify-self-center`,type:`single`,value:n,onValueChange:e=>{(e===`desktop`||e===`mobile`)&&r(e)},children:[(0,$.jsx)(fe,{"aria-label":`Desktop`,value:`desktop`,children:(0,$.jsx)(w,{})}),(0,$.jsx)(fe,{"aria-label":`Mobile`,value:`mobile`,children:(0,$.jsx)(S,{})})]}),(0,$.jsx)(T,{className:`justify-self-end`,onClick:t,children:`Close`})]}),(0,$.jsx)(y,{align:`start`,className:`min-h-0 overflow-auto bg-muted p-3 sm:p-6`,gap:`none`,justify:`center`,children:(0,$.jsx)(H,{className:h(`max-w-full shrink-0`,n===`desktop`?`max-w-[740px] px-0 [&>div]:rounded-2xl [&>div]:shadow-2xl`:`shadow-2xl`),"data-device":n,device:n,children:(0,$.jsxs)(b,{className:`size-full bg-background`,gap:`none`,children:[(0,$.jsxs)(b,{className:`border-b border-border-default p-4 text-[13px]`,gap:`xs`,children:[(0,$.jsx)(`p`,{className:`font-semibold break-words`,children:C?.subject}),(0,$.jsxs)(`p`,{children:[(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:`From: `}),D?`Loading sender…`:E?`Sender unavailable`:(0,$.jsxs)($.Fragment,{children:[g,_&&` <${_}>`]})]}),(0,$.jsxs)(`p`,{children:[(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:`To: `}),`Jamie Larson <jamie@example.com>`]}),E&&(0,$.jsxs)(y,{gap:`sm`,children:[(0,$.jsx)(`p`,{role:`alert`,children:`Couldn’t load sender details.`}),(0,$.jsx)(T,{size:`sm`,variant:`outline`,onClick:()=>{u.refetch(),d.refetch(),a.newsletter||l.refetch()},children:`Retry sender details`})]})]}),te?(0,$.jsx)(y,{"aria-label":`Loading email preview`,className:`grow`,gap:`none`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`md`})}):C?(0,$.jsx)(`iframe`,{className:`min-h-0 grow border-0`,sandbox:``,srcDoc:ee,title:`Email content`}):(0,$.jsx)(R,{actions:o?(0,$.jsx)(T,{variant:`outline`,onClick:()=>void c.refetch(),children:`Retry`}):void 0,className:`grow justify-center`,description:o?`The email preview could not be loaded.`:`The original email content is no longer available.`,role:`alert`,title:`Couldn’t load the email preview`,children:(0,$.jsx)(x,{})})]})})})]})})}function Ue({onSelect:e}){let[t,n]=(0,J.useState)(!1),r=(0,J.useRef)(null),[i,o]=(0,J.useState)(``),[s]=me(i,300),{data:c,isFetching:l,isError:u,refetch:d}=a({enabled:t&&!!s.trim(),searchParams:{search:s,limit:`20`},defaultErrorHandler:!1}),f=l||i!==s;return(0,$.jsx)(M,{className:`h-auto w-60 max-w-full min-w-0 overflow-visible`,shouldFilter:!1,children:(0,$.jsxs)(L,{open:t&&!!i.trim(),onOpenChange:n,children:[(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(g,{ref:r,children:(0,$.jsx)(z,{className:`[&_[cmdk-input-wrapper]]:w-full [&_[cmdk-input-wrapper]]:border-0`,children:(0,$.jsx)(N,{"aria-expanded":t&&!!i.trim(),"aria-label":`Search members`,className:`h-(--control-height) min-w-0 py-0`,"data-slot":`input-group-control`,placeholder:`Search members...`,value:i,onClick:()=>n(!!i.trim()),onFocus:()=>n(!!i.trim()),onValueChange:e=>{o(e),n(!!e.trim())}})})})}),(0,$.jsx)(F,{align:`end`,className:`w-(--radix-popover-trigger-width) max-w-[calc(100vw-2rem)] p-0`,onCloseAutoFocus:e=>e.preventDefault(),onInteractOutside:e=>{r.current?.contains(e.target)&&e.preventDefault()},onOpenAutoFocus:e=>e.preventDefault(),children:(0,$.jsx)(se,{children:f?(0,$.jsx)(y,{"aria-label":`Loading members`,className:`p-4`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`sm`})}):u?(0,$.jsxs)(b,{className:`p-4`,gap:`sm`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,role:`alert`,children:`Couldn’t load members`}),(0,$.jsx)(T,{variant:`outline`,onClick:()=>void d(),children:`Retry`})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(j,{children:`No members found`}),c?.members.map(t=>(0,$.jsxs)(P,{value:t.id,onSelect:()=>{e(t.id),n(!1),o(``)},children:[(0,$.jsx)(D,{...K(t),src:t.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`span`,{className:`truncate font-medium`,title:G(t),children:G(t)}),t.name?.trim()&&(0,$.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,title:t.email,children:t.email})]})]},t.id))]})})})]})})}var We=e(m(),1);function Ge(e){if(!e||typeof e!=`object`)return;let t=`subject`in e?e.subject:void 0;return typeof t==`string`&&t.trim()?t:`email`in e&&e.email&&typeof e.email==`object`?Ge(e.email):`Email`}function Ke({event:e,memberHref:t,hideMember:n,onPreview:r}){let i=typeof e.subject==`string`&&e.subject?e.subject:`Unknown member`,a=(0,$.jsxs)(y,{gap:`md`,children:[(0,$.jsx)(D,{...K(e.member),className:`[&_span]:text-[13px]`,src:e.member?.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`span`,{className:h(`truncate font-medium`,t&&`group-hover/member:underline`),children:i}),e.member?.name&&(0,$.jsx)(`span`,{className:`truncate text-muted-foreground`,children:e.member.email})]})]}),o=ke(e.route)?e.route:ke(e.url)?e.url:void 0,s=!!e.object&&!!o,c=!s&&Ge(e.email),l=e.action?e.action[0].toUpperCase()+e.action.slice(1):`Unknown activity`,u=e.timestamp?(0,We.default)(e.timestamp).local():void 0;return(0,$.jsxs)(ce,{children:[!n&&(0,$.jsx)(W,{className:`group/member w-1/3 max-w-72 min-w-40 py-4`,children:t?(0,$.jsx)(d,{className:`block hover:no-underline`,to:t,children:a}):a}),(0,$.jsx)(W,{className:`min-w-48 py-4`,children:(0,$.jsxs)(y,{gap:`md`,children:[(0,$.jsx)(y,{className:`size-8 shrink-0 rounded-full bg-muted`,gap:`none`,justify:`center`,children:(0,$.jsx)(Fe,{iconName:e.icon})}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`xs`,children:[(0,$.jsxs)(`p`,{className:`leading-relaxed`,children:[(0,$.jsx)(`span`,{title:e.actionTitle,children:l}),e.info&&(0,$.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.info,`)`]}),s&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),o.startsWith(`#/`)?(0,$.jsx)(Ce,{className:`font-medium hover:underline`,to:o.slice(1),children:e.object}):(0,$.jsx)(`a`,{className:`font-medium hover:underline`,href:o,rel:`noopener noreferrer`,target:`_blank`,children:e.object})]}),c&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),(0,$.jsx)(`button`,{className:`cursor-pointer text-left font-medium hover:underline`,type:`button`,onClick:()=>r(e.email),children:c})]})]}),e.description&&(0,$.jsx)(`p`,{className:`break-all text-muted-foreground`,title:e.description,children:e.description})]})]})}),(0,$.jsx)(W,{className:`w-40 py-4 text-left whitespace-nowrap text-muted-foreground`,children:u?.isValid()?(0,$.jsx)(`time`,{dateTime:u.toISOString(),children:u.format(`DD MMM YYYY HH:mm`)}):`—`})]})}function qe(){let[e,t]=u(),r=e.get(`member`)||void 0,a=e.get(`excludedEvents`),[s,c]=(0,J.useState)(null),l=(0,J.useRef)(null),{settingsQuery:m,settings:h,activitySettings:v}=Ne(),x=_e(h,`paid_members_enabled`)??!1,S=o(r??``,{enabled:!!r,defaultErrorHandler:!1}),w=S.data?.members[0],O=!!r&&(S.error instanceof n&&S.error.response?.status===404||S.isSuccess&&!w),k=!!r&&S.isError&&!O,A=he({searchParams:{filter:`status:active`,limit:`1`}}),se=ge({searchParams:{filter:`type:paid+active:true`,limit:`all`},enabled:x}),j=i({...Ae({settings:v,memberId:r,excluded:a}),enabled:!!m.data&&!m.isError&&(!r||!!w),defaultErrorHandler:!1}),M=j.data?.events??[],N=Oe(v,r),P=Me(a),F=N.filter(({event:e})=>!P.includes(e)),I=F.length===N.length?`All events`:F.length===1?F[0].name:F.length===0?`No events selected`:`${p(F.length)} events`,L=m.isLoading||!!r&&S.isLoading||j.isLoading,z=(n,r)=>{let i=new URLSearchParams(e);r?i.set(n,r):i.delete(n),t(i)};(0,J.useEffect)(()=>{let e=l.current;if(!e||!j.hasNextPage||j.isFetching||j.isError)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&j.fetchNextPage()},{root:f(e),rootMargin:`250px`});return t.observe(e),()=>t.disconnect()},[j.hasNextPage,j.isFetching,j.isError,j.fetchNextPage]);let H=!!r||P.length>0;return(0,$.jsxs)(g,{className:`size-full`,children:[(0,$.jsx)(_,{className:`relative h-full`,size:`page`,children:(0,$.jsxs)(q,{"data-testid":`member-activity-page`,children:[(0,$.jsx)(q.Header,{children:(0,$.jsxs)(V,{blurredBackground:!1,sticky:!1,children:[(0,$.jsx)(V.Left,{children:r?(0,$.jsx)(oe,{children:(0,$.jsxs)(ne,{children:[(0,$.jsx)(re,{children:(0,$.jsx)(ae,{asChild:!0,children:(0,$.jsx)(d,{to:`/members-activity`,children:`Member activity`})})}),(0,$.jsx)(ie,{}),(0,$.jsx)(re,{children:(0,$.jsx)(te,{className:`truncate`,children:w?G(w):`Member`})})]})}):(0,$.jsx)(V.Title,{children:`Member activity`})}),(0,$.jsx)(V.Actions,{className:`max-w-full min-w-0`,children:(0,$.jsxs)(y,{className:`max-w-full min-w-0`,gap:`md`,wrap:!0,children:[!r&&(0,$.jsx)(Ue,{onSelect:e=>z(`member`,e)}),(0,$.jsxs)(be,{children:[(0,$.jsx)(Te,{asChild:!0,children:(0,$.jsxs)(T,{"aria-label":`Filter events`,variant:`outline`,children:[(0,$.jsx)(ee,{className:`size-4`}),I,(0,$.jsx)(C,{className:`size-4 opacity-50`})]})}),(0,$.jsx)(we,{align:`end`,className:`max-h-[70vh] w-64 max-w-[calc(100vw-2rem)] overflow-y-auto`,children:N.map((e,t)=>(0,$.jsxs)(J.Fragment,{children:[t>0&&e.group!==N[t-1].group&&(0,$.jsx)(xe,{}),(0,$.jsxs)(Se,{checked:!P.includes(e.event),className:`gap-2 pr-8 pl-2 [&>span:first-child]:right-2 [&>span:first-child]:left-auto`,onCheckedChange:()=>z(`excludedEvents`,Pe(e.event,a)),onSelect:e=>e.preventDefault(),children:[(0,$.jsx)(Fe,{iconName:e.icon}),e.name]})]},e.event))})]})]})})]})}),(0,$.jsxs)(q.Body,{children:[w&&(0,$.jsxs)(y,{className:`py-6`,gap:`lg`,children:[(0,$.jsx)(D,{...K(w),className:`size-12 min-w-12 [&_span]:text-lg`,src:w.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`h2`,{className:`truncate text-xl font-semibold`,children:G(w)}),w.name?.trim()&&(0,$.jsx)(`p`,{className:`truncate text-muted-foreground`,children:w.email}),(0,$.jsx)(d,{className:`mt-0.5 text-sm font-medium hover:underline`,to:`/members/${encodeURIComponent(w.id)}`,children:`View member profile →`})]})]}),m.isError?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void m.refetch(),children:`Retry`}),role:`alert`,title:`Couldn’t load activity settings`}):O?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>z(`member`),children:`Clear member`}),description:`This member may have been deleted.`,role:`alert`,title:`Member not found`}):k?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void S.refetch(),children:`Retry`}),role:`alert`,title:`Couldn’t load member`}):L?(0,$.jsx)(y,{"aria-label":`Loading member activity`,className:`grow py-10`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`lg`})}):(0,$.jsxs)($.Fragment,{children:[M.length>0?(0,$.jsx)(g,{className:`shrink-0 overflow-x-auto`,children:(0,$.jsxs)(de,{"aria-label":`Member activity`,className:`text-[13px]`,children:[(0,$.jsx)(ue,{children:(0,$.jsxs)(ce,{children:[!r&&(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Member`}),(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Event`}),(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Time`})]})}),(0,$.jsx)(le,{children:M.map((t,n)=>{let i=Re(t,{hasMultipleNewsletters:A.isError||(A.data?.meta?.pagination.total??0)>1,hasMultipleTiers:(se.data?.tiers.length??0)>1,paidMembersEnabled:x}),a=new URLSearchParams(e);return i.member?.id&&a.set(`member`,i.member.id),(0,$.jsx)(Ke,{event:i,hideMember:!!r,memberHref:i.member?.id?`/members-activity?${a}`:void 0,onPreview:c},`${t.type}:${i.id??n}`)})})]})}):!j.isError&&(0,$.jsx)(R,{actions:H?(0,$.jsx)(T,{variant:`outline`,asChild:!0,children:(0,$.jsx)(d,{to:`/members-activity`,children:`Show all activity`})}):void 0,className:`grow`,title:H?`No activities match the current filter`:`No member activity yet`,children:(0,$.jsx)(E,{})}),j.isError&&(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void(j.isFetchNextPageError?j.fetchNextPage():j.refetch()),children:`Retry`}),role:`alert`,title:M.length?`Couldn’t load more activity`:`Couldn’t load member activity`}),j.isFetchingNextPage&&(0,$.jsx)(y,{"aria-label":`Loading more activity`,className:`py-6`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`md`})}),(0,$.jsx)(g,{ref:l,className:`h-px`})]})]})]})}),!!s&&(0,$.jsx)(He,{email:s,onClose:()=>c(null)})]})}export{qe 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]=`d1b17715-0276-403f-909c-438333968a1b`,e._sentryDebugIdIdentifier=`sentry-dbid-d1b17715-0276-403f-909c-438333968a1b`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{_ as n}from"./hooks-0r7qxGEo.js";import{t as r}from"./jsx-runtime-Bm2_KH-0.js";import{S as i,i as a,m as o}from"./members-CH6KeXQc.js";import{s}from"./config-CRAZ4Civ.js";import{i as c,r as l}from"./currency-DgOqjQBh.js";import{_ as u,n as d}from"./chunk-OB3PAWPO-D3muQBsq.js";import{G as f,H as p,J as m,L as h}from"./shade-provider-DvrXKKQZ.js";import{t as g}from"./box-BOIwAOVT.js";import{t as _}from"./container-DakAbO79.js";import{t as v}from"./grid-BYJO9x_v.js";import{t as y}from"./inline-Qoyy4r2g.js";import{t as b}from"./stack-C3OmgpUv.js";import{Kt as x,Y as S,ar as C,en as ee,in as w,t as T,zr as E}from"./button-CTHYSI-d.js";import{t as D}from"./avatar-YbECDnBI.js";import{a as te,i as ne,n as re,o as ie,r as ae,t as oe}from"./breadcrumb-BO_Xhq8u.js";import{r as O,s as k,t as A}from"./dialog-BO1lcy8A.js";import{c as se,i as j,n as M,o as N,s as P}from"./multi-select-combobox-BzBMUFst.js";import{i as F,n as I,t as L}from"./popover-r_3DwMi9.js";import{t as R}from"./empty-indicator-BhVwqSVH.js";import{t as z}from"./input-group-DL5EFP5r.js";import{n as B}from"./loading-indicator-DaRyGrxv.js";import{t as V}from"./page-header-CxTb0je5.js";import{t as H}from"./preview-chrome-Dcu3p6mp.js";import{a as U,c as ce,n as le,r as W,s as ue,t as de}from"./table-DQ63Yu4a.js";import{n as fe,t as pe}from"./toggle-group-BFWCtH3p.js";import{d as G,p as K}from"./label-picker-DaivLdMw.js";import{n as me}from"./index.module-CnPepLB9.js";import{r as he}from"./newsletters-CACa0VCx.js";import{a as ge}from"./tiers-DlvS8D6_.js";import{Ht as _e,Kt as ve,Ut as ye,ct as be,gt as xe,lt as Se,s as Ce,ut as we,vt as Te}from"./index-RuRs_qGS.js";import{t as q}from"./list-page-BnOuLOBb.js";import{n as Ee}from"./email-previews-BKJxrW29.js";import{t as De}from"./clean-tracked-url-iZ-wi2Sn.js";import{a as Oe,c as ke,i as Ae,l as je,o as Me,r as Ne,s as Pe,t as Fe}from"./member-activity-feed-CvKEetHS.js";var J=e(t(),1),Y={minimumFractionDigits:0,maximumFractionDigits:2};function X(e,t){if(!(typeof e!=`number`||!Number.isFinite(e)||typeof t!=`string`||!/^[a-z]{3}$/i.test(t)))return{value:l(e),symbol:c(t)}}function Ie(e,t){let n=X(e.data.mrr_delta,e.data.currency);if(!n||n.value===0)return;let r=`${n.symbol}${p(Math.abs(n.value),Y)}`;return e.data.type===`created`?`${t.hasMultipleTiers&&typeof e.data.tierName==`string`&&e.data.tierName.trim()?e.data.tierName:`Paid`} ${n.value<0?`-`:``}${r}/month`:`MRR ${n.value>0?`+`:`-`}${r}`}function Le(e){let t=X(e.data.amount,e.data.currency),{tier_name:n,duration:r,cadence:i}=e.data;if(!t||typeof n!=`string`||!n.trim()||typeof r!=`number`||!Number.isInteger(r)||r<=0||typeof i!=`string`||!i.trim())return`Purchased gift subscription`;let a=`${t.symbol}${p(t.value,Y)}`,o=r===1?i:`${i}s`;return`Purchased gift subscription for ${a} (${n}, ${p(r)} ${o})`}function Re(e,t){let n=je(e.type===`gift_purchase_event`?{...e,data:{...e.data,amount:void 0}}:e,t);if(e.type===`subscription_event`&&(n.info=Ie(e,t)),e.type===`donation_event`){let t=X(e.data.amount,e.data.currency);n.info=t?`${t.symbol}${p(t.value,Y)}`:void 0}return e.type===`gift_purchase_event`&&(n.action=Le(e),n.actionTitle=n.action),e.type===`click_event`&&(n.description=typeof n.description==`string`?De(n.description,!0):void 0),n}function Z(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Q(e){return typeof e==`string`?e:void 0}function ze(e){let t=Z(e),n=Z(t?.email),r=[t,n].find(e=>Q(e?.html)&&typeof e?.subject==`string`),i=Z(t?.newsletter)??Z(n?.newsletter),a=Q(t?.post_id)||Q(n?.post_id)||(typeof t?.title==`string`?Q(t.id):void 0);return{stored:r?{html:Q(r.html),subject:Q(r.subject)}:void 0,postId:a,newsletter:i?{sender_name:Q(i.sender_name),sender_email:Q(i.sender_email)}:void 0}}function Be(e,t,n){let r=n?.hostSettings?.managedEmail;return r?.enabled&&(!r.sendingDomain||e?.split(`@`)[1]!==r.sendingDomain)?t||``:e||t||``}function Ve(e){let t=new DOMParser().parseFromString(e,`text/html`);t.querySelectorAll(`a, area`).forEach(e=>{e.removeAttribute(`href`),e.removeAttribute(`target`)}),t.querySelectorAll(`base, meta[http-equiv], form`).forEach(e=>e.remove());let n=t.createElement(`style`);return n.textContent=`html { scrollbar-width: none; } html::-webkit-scrollbar { display: none; }`,t.head.append(n),`<!DOCTYPE html>${t.documentElement.outerHTML}`}var $=r();function He({email:e,onClose:t}){let[n,r]=(0,J.useState)(`desktop`),[i]=(0,J.useState)(()=>window.document.activeElement),a=ze(e),o=!a.stored&&!!a.postId,c=Ee(a.postId??``,{enabled:o}),l=he({enabled:!a.newsletter,searchParams:{filter:`status:active`,limit:`1`}}),u=ve(),d=s(),[f,p]=ye(u.data?.settings??[],[`title`,`default_email_address`]),m=a.newsletter??l.data?.newsletters[0],g=m?.sender_name||f,_=Be(m?.sender_email??void 0,p,d.data?.config),C=a.stored??(o&&!c.isError?c.data?.email_previews[0]:void 0),ee=(0,J.useMemo)(()=>C?Ve(C.html):void 0,[C?.html]),E=u.isError||d.isError||!a.newsletter&&l.isError,D=u.isLoading||d.isLoading||!a.newsletter&&l.isLoading,te=o&&c.isLoading;return(0,$.jsx)(A,{open:!0,onOpenChange:e=>{e||t()},children:(0,$.jsxs)(O,{"aria-describedby":void 0,className:`top-0 left-0 h-dvh w-full max-w-none translate-0 grid-rows-[auto_1fr] gap-0 rounded-none border-0 p-0 shadow-none sm:rounded-none`,"data-testid":`activity-email-preview`,onCloseAutoFocus:e=>{i instanceof HTMLElement&&i.isConnected&&(e.preventDefault(),i.focus())},onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(v,{align:`center`,className:`border-b border-border-default p-4`,columns:3,gap:`md`,children:[(0,$.jsx)(k,{children:`Email preview`}),(0,$.jsxs)(pe,{className:`justify-self-center`,type:`single`,value:n,onValueChange:e=>{(e===`desktop`||e===`mobile`)&&r(e)},children:[(0,$.jsx)(fe,{"aria-label":`Desktop`,value:`desktop`,children:(0,$.jsx)(w,{})}),(0,$.jsx)(fe,{"aria-label":`Mobile`,value:`mobile`,children:(0,$.jsx)(S,{})})]}),(0,$.jsx)(T,{className:`justify-self-end`,onClick:t,children:`Close`})]}),(0,$.jsx)(y,{align:`start`,className:`min-h-0 overflow-auto bg-muted p-3 sm:p-6`,gap:`none`,justify:`center`,children:(0,$.jsx)(H,{className:h(`max-w-full shrink-0`,n===`desktop`?`max-w-[740px] px-0 [&>div]:rounded-2xl [&>div]:shadow-2xl`:`shadow-2xl`),"data-device":n,device:n,children:(0,$.jsxs)(b,{className:`size-full bg-background`,gap:`none`,children:[(0,$.jsxs)(b,{className:`border-b border-border-default p-4 text-[13px]`,gap:`xs`,children:[(0,$.jsx)(`p`,{className:`font-semibold break-words`,children:C?.subject}),(0,$.jsxs)(`p`,{children:[(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:`From: `}),D?`Loading sender…`:E?`Sender unavailable`:(0,$.jsxs)($.Fragment,{children:[g,_&&` <${_}>`]})]}),(0,$.jsxs)(`p`,{children:[(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:`To: `}),`Jamie Larson <jamie@example.com>`]}),E&&(0,$.jsxs)(y,{gap:`sm`,children:[(0,$.jsx)(`p`,{role:`alert`,children:`Couldn’t load sender details.`}),(0,$.jsx)(T,{size:`sm`,variant:`outline`,onClick:()=>{u.refetch(),d.refetch(),a.newsletter||l.refetch()},children:`Retry sender details`})]})]}),te?(0,$.jsx)(y,{"aria-label":`Loading email preview`,className:`grow`,gap:`none`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`md`})}):C?(0,$.jsx)(`iframe`,{className:`min-h-0 grow border-0`,sandbox:``,srcDoc:ee,title:`Email content`}):(0,$.jsx)(R,{actions:o?(0,$.jsx)(T,{variant:`outline`,onClick:()=>void c.refetch(),children:`Retry`}):void 0,className:`grow justify-center`,description:o?`The email preview could not be loaded.`:`The original email content is no longer available.`,role:`alert`,title:`Couldn’t load the email preview`,children:(0,$.jsx)(x,{})})]})})})]})})}function Ue({onSelect:e}){let[t,n]=(0,J.useState)(!1),r=(0,J.useRef)(null),[i,o]=(0,J.useState)(``),[s]=me(i,300),{data:c,isFetching:l,isError:u,refetch:d}=a({enabled:t&&!!s.trim(),searchParams:{search:s,limit:`20`},defaultErrorHandler:!1}),f=l||i!==s;return(0,$.jsx)(M,{className:`h-auto w-60 max-w-full min-w-0 overflow-visible`,shouldFilter:!1,children:(0,$.jsxs)(L,{open:t&&!!i.trim(),onOpenChange:n,children:[(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(g,{ref:r,children:(0,$.jsx)(z,{className:`[&_[cmdk-input-wrapper]]:w-full [&_[cmdk-input-wrapper]]:border-0`,children:(0,$.jsx)(N,{"aria-expanded":t&&!!i.trim(),"aria-label":`Search members`,className:`h-(--control-height) min-w-0 py-0`,"data-slot":`input-group-control`,placeholder:`Search members...`,value:i,onClick:()=>n(!!i.trim()),onFocus:()=>n(!!i.trim()),onValueChange:e=>{o(e),n(!!e.trim())}})})})}),(0,$.jsx)(F,{align:`end`,className:`w-(--radix-popover-trigger-width) max-w-[calc(100vw-2rem)] p-0`,onCloseAutoFocus:e=>e.preventDefault(),onInteractOutside:e=>{r.current?.contains(e.target)&&e.preventDefault()},onOpenAutoFocus:e=>e.preventDefault(),children:(0,$.jsx)(se,{children:f?(0,$.jsx)(y,{"aria-label":`Loading members`,className:`p-4`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`sm`})}):u?(0,$.jsxs)(b,{className:`p-4`,gap:`sm`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,role:`alert`,children:`Couldn’t load members`}),(0,$.jsx)(T,{variant:`outline`,onClick:()=>void d(),children:`Retry`})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(j,{children:`No members found`}),c?.members.map(t=>(0,$.jsxs)(P,{value:t.id,onSelect:()=>{e(t.id),n(!1),o(``)},children:[(0,$.jsx)(D,{...K(t),src:t.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`span`,{className:`truncate font-medium`,title:G(t),children:G(t)}),t.name?.trim()&&(0,$.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,title:t.email,children:t.email})]})]},t.id))]})})})]})})}var We=e(m(),1);function Ge(e){if(!e||typeof e!=`object`)return;let t=`subject`in e?e.subject:void 0;return typeof t==`string`&&t.trim()?t:`email`in e&&e.email&&typeof e.email==`object`?Ge(e.email):`Email`}function Ke({event:e,memberHref:t,hideMember:n,onPreview:r}){let i=typeof e.subject==`string`&&e.subject?e.subject:`Unknown member`,a=(0,$.jsxs)(y,{gap:`md`,children:[(0,$.jsx)(D,{...K(e.member),className:`[&_span]:text-[13px]`,src:e.member?.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`span`,{className:h(`truncate font-medium`,t&&`group-hover/member:underline`),children:i}),e.member?.name&&(0,$.jsx)(`span`,{className:`truncate text-muted-foreground`,children:e.member.email})]})]}),o=ke(e.route)?e.route:ke(e.url)?e.url:void 0,s=!!e.object&&!!o,c=!s&&Ge(e.email),l=e.action?e.action[0].toUpperCase()+e.action.slice(1):`Unknown activity`,u=e.timestamp?(0,We.default)(e.timestamp).local():void 0;return(0,$.jsxs)(ce,{children:[!n&&(0,$.jsx)(W,{className:`group/member w-1/3 max-w-72 min-w-40 py-4`,children:t?(0,$.jsx)(d,{className:`block hover:no-underline`,to:t,children:a}):a}),(0,$.jsx)(W,{className:`min-w-48 py-4`,children:(0,$.jsxs)(y,{gap:`md`,children:[(0,$.jsx)(y,{className:`size-8 shrink-0 rounded-full bg-muted`,gap:`none`,justify:`center`,children:(0,$.jsx)(Fe,{iconName:e.icon})}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`xs`,children:[(0,$.jsxs)(`p`,{className:`leading-relaxed`,children:[(0,$.jsx)(`span`,{title:e.actionTitle,children:l}),e.info&&(0,$.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.info,`)`]}),s&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),o.startsWith(`#/`)?(0,$.jsx)(Ce,{className:`font-medium hover:underline`,to:o.slice(1),children:e.object}):(0,$.jsx)(`a`,{className:`font-medium hover:underline`,href:o,rel:`noopener noreferrer`,target:`_blank`,children:e.object})]}),c&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),(0,$.jsx)(`button`,{className:`cursor-pointer text-left font-medium hover:underline`,type:`button`,onClick:()=>r(e.email),children:c})]})]}),e.description&&(0,$.jsx)(`p`,{className:`break-all text-muted-foreground`,title:e.description,children:e.description})]})]})}),(0,$.jsx)(W,{className:`w-40 py-4 text-left whitespace-nowrap text-muted-foreground`,children:u?.isValid()?(0,$.jsx)(`time`,{dateTime:u.toISOString(),children:u.format(`DD MMM YYYY HH:mm`)}):`—`})]})}function qe(){let[e,t]=u(),r=e.get(`member`)||void 0,a=e.get(`excludedEvents`),[s,c]=(0,J.useState)(null),l=(0,J.useRef)(null),{settingsQuery:m,settings:h,activitySettings:v}=Ne(),x=_e(h,`paid_members_enabled`)??!1,S=o(r??``,{enabled:!!r,defaultErrorHandler:!1}),w=S.data?.members[0],O=!!r&&(S.error instanceof n&&S.error.response?.status===404||S.isSuccess&&!w),k=!!r&&S.isError&&!O,A=he({searchParams:{filter:`status:active`,limit:`1`}}),se=ge({searchParams:{filter:`type:paid+active:true`,limit:`all`},enabled:x}),j=i({...Ae({settings:v,memberId:r,excluded:a}),enabled:!!m.data&&!m.isError&&(!r||!!w),defaultErrorHandler:!1}),M=j.data?.events??[],N=Oe(v,r),P=Me(a),F=N.filter(({event:e})=>!P.includes(e)),I=F.length===N.length?`All events`:F.length===1?F[0].name:F.length===0?`No events selected`:`${p(F.length)} events`,L=m.isLoading||!!r&&S.isLoading||j.isLoading,z=(n,r)=>{let i=new URLSearchParams(e);r?i.set(n,r):i.delete(n),t(i)};(0,J.useEffect)(()=>{let e=l.current;if(!e||!j.hasNextPage||j.isFetching||j.isError)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&j.fetchNextPage()},{root:f(e),rootMargin:`250px`});return t.observe(e),()=>t.disconnect()},[j.hasNextPage,j.isFetching,j.isError,j.fetchNextPage]);let H=!!r||P.length>0;return(0,$.jsxs)(g,{className:`size-full`,children:[(0,$.jsx)(_,{className:`relative h-full`,size:`page`,children:(0,$.jsxs)(q,{"data-testid":`member-activity-page`,children:[(0,$.jsx)(q.Header,{children:(0,$.jsxs)(V,{blurredBackground:!1,sticky:!1,children:[(0,$.jsx)(V.Left,{children:r?(0,$.jsx)(oe,{children:(0,$.jsxs)(ne,{children:[(0,$.jsx)(re,{children:(0,$.jsx)(ae,{asChild:!0,children:(0,$.jsx)(d,{to:`/members-activity`,children:`Member activity`})})}),(0,$.jsx)(ie,{}),(0,$.jsx)(re,{children:(0,$.jsx)(te,{className:`truncate`,children:w?G(w):`Member`})})]})}):(0,$.jsx)(V.Title,{children:`Member activity`})}),(0,$.jsx)(V.Actions,{className:`max-w-full min-w-0`,children:(0,$.jsxs)(y,{className:`max-w-full min-w-0`,gap:`md`,wrap:!0,children:[!r&&(0,$.jsx)(Ue,{onSelect:e=>z(`member`,e)}),(0,$.jsxs)(be,{children:[(0,$.jsx)(Te,{asChild:!0,children:(0,$.jsxs)(T,{"aria-label":`Filter events`,variant:`outline`,children:[(0,$.jsx)(ee,{className:`size-4`}),I,(0,$.jsx)(C,{className:`size-4 opacity-50`})]})}),(0,$.jsx)(we,{align:`end`,className:`max-h-[70vh] w-64 max-w-[calc(100vw-2rem)] overflow-y-auto`,children:N.map((e,t)=>(0,$.jsxs)(J.Fragment,{children:[t>0&&e.group!==N[t-1].group&&(0,$.jsx)(xe,{}),(0,$.jsxs)(Se,{checked:!P.includes(e.event),className:`gap-2 pr-8 pl-2 [&>span:first-child]:right-2 [&>span:first-child]:left-auto`,onCheckedChange:()=>z(`excludedEvents`,Pe(e.event,a)),onSelect:e=>e.preventDefault(),children:[(0,$.jsx)(Fe,{iconName:e.icon}),e.name]})]},e.event))})]})]})})]})}),(0,$.jsxs)(q.Body,{children:[w&&(0,$.jsxs)(y,{className:`py-6`,gap:`lg`,children:[(0,$.jsx)(D,{...K(w),className:`size-12 min-w-12 [&_span]:text-lg`,src:w.avatar_image}),(0,$.jsxs)(b,{className:`min-w-0`,gap:`none`,children:[(0,$.jsx)(`h2`,{className:`truncate text-xl font-semibold`,children:G(w)}),w.name?.trim()&&(0,$.jsx)(`p`,{className:`truncate text-muted-foreground`,children:w.email}),(0,$.jsx)(d,{className:`mt-0.5 text-sm font-medium hover:underline`,to:`/members/${encodeURIComponent(w.id)}`,children:`View member profile →`})]})]}),m.isError?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void m.refetch(),children:`Retry`}),role:`alert`,title:`Couldn’t load activity settings`}):O?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>z(`member`),children:`Clear member`}),description:`This member may have been deleted.`,role:`alert`,title:`Member not found`}):k?(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void S.refetch(),children:`Retry`}),role:`alert`,title:`Couldn’t load member`}):L?(0,$.jsx)(y,{"aria-label":`Loading member activity`,className:`grow py-10`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`lg`})}):(0,$.jsxs)($.Fragment,{children:[M.length>0?(0,$.jsx)(g,{className:`shrink-0 overflow-x-auto`,children:(0,$.jsxs)(de,{"aria-label":`Member activity`,className:`text-[13px]`,children:[(0,$.jsx)(ue,{children:(0,$.jsxs)(ce,{children:[!r&&(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Member`}),(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Event`}),(0,$.jsx)(U,{className:`text-[13px]`,scope:`col`,children:`Time`})]})}),(0,$.jsx)(le,{children:M.map((t,n)=>{let i=Re(t,{hasMultipleNewsletters:A.isError||(A.data?.meta?.pagination.total??0)>1,hasMultipleTiers:(se.data?.tiers.length??0)>1,paidMembersEnabled:x}),a=new URLSearchParams(e);return i.member?.id&&a.set(`member`,i.member.id),(0,$.jsx)(Ke,{event:i,hideMember:!!r,memberHref:i.member?.id?`/members-activity?${a}`:void 0,onPreview:c},`${t.type}:${i.id??n}`)})})]})}):!j.isError&&(0,$.jsx)(R,{actions:H?(0,$.jsx)(T,{variant:`outline`,asChild:!0,children:(0,$.jsx)(d,{to:`/members-activity`,children:`Show all activity`})}):void 0,className:`grow`,title:H?`No activities match the current filter`:`No member activity yet`,children:(0,$.jsx)(E,{})}),j.isError&&(0,$.jsx)(R,{actions:(0,$.jsx)(T,{variant:`outline`,onClick:()=>void(j.isFetchNextPageError?j.fetchNextPage():j.refetch()),children:`Retry`}),role:`alert`,title:M.length?`Couldn’t load more activity`:`Couldn’t load member activity`}),j.isFetchingNextPage&&(0,$.jsx)(y,{"aria-label":`Loading more activity`,className:`py-6`,justify:`center`,role:`status`,children:(0,$.jsx)(B,{size:`md`})}),(0,$.jsx)(g,{ref:l,className:`h-px`})]})]})]})}),!!s&&(0,$.jsx)(He,{email:s,onClose:()=>c(null)})]})}export{qe 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]=`7d599e8f-1d75-474a-8e33-225d40eac2df`,e._sentryDebugIdIdentifier=`sentry-dbid-7d599e8f-1d75-474a-8e33-225d40eac2df`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{h as r}from"./members-Cj_BUZUL.js";import{J as i,r as a}from"./shade-provider-DvrXKKQZ.js";import{A as o,Ft as s,Gt as c,Jt as l,Kt as u,Rn as d,Wt as f,Xn as ee,Yt as te,Zt as ne,_ as p,et as m,g as h,k as g,kr as _,kt as re,qt as ie,t as v,yn as y,zr as b}from"./button-CTHYSI-d.js";import{n as x,t as S}from"./card-Cd6xB_Ok.js";import{t as ae}from"./empty-indicator-BhVwqSVH.js";import{t as C}from"./skeleton-C1s6yr9e.js";import{Ht as w,Kt as T}from"./index-CuDhPtkB.js";import{r as E,t as D}from"./use-availability-BqL7Dvn_.js";t();var O=e(i(),1),k=new Set([`bif`,`clp`,`djf`,`gnf`,`jpy`,`kmf`,`krw`,`mga`,`pyg`,`rwf`,`ugx`,`vnd`,`vuv`,`xaf`,`xof`,`xpf`]);function A(e,t){let n=k.has(t.toLowerCase())?e:e/100,r=n%1==0;try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t.toUpperCase(),minimumFractionDigits:r?0:2,maximumFractionDigits:r?0:2}).format(n)}catch{return`${n}`}}function j(e){return e?.trim()||null}function M(e){let t;return e.type===`login_event`&&(t=`logged-in`),e.type===`payment_event`&&(t=`subscriptions`),e.type===`newsletter_event`&&(t=e.data.subscribed?`subscribed-to-email`:`unsubscribed-from-email`),e.type===`subscription_event`&&(t=`subscriptions`,e.data.type===`canceled`&&(t=`canceled-subscription`)),(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)&&(t=`signed-up`),e.type===`email_opened_event`&&(t=`opened-email`),(e.type===`email_sent_event`||e.type===`automated_email_sent_event`)&&(t=`sent-email`),e.type===`email_delivered_event`&&(t=`received-email`),e.type===`email_failed_event`&&(t=`email-delivery-failed`),e.type===`email_complaint_event`&&(t=`email-delivery-spam`),e.type===`comment_event`&&(t=`comment`),(e.type===`click_event`||e.type===`aggregated_click_event`)&&(t=`click`),e.type===`feedback_event`&&(t=e.data.score===1?`more-like-this`:`less-like-this`),e.type===`donation_event`&&(t=`subscriptions`),(e.type===`gift_purchase_event`||e.type===`gift_redemption_event`||e.type===`gift_ended_event`)&&(t=`gift`),e.type===`email_change_event`&&(t=`email-changed`),e.type===`metafield_change_event`&&(t=`metafields-changed`),`event-${t}`}var N=3;function P(e){return e.type===`metafield_change_event`}var F={admin:`in Admin`,admin_api:`through the Admin API`,import:`from an import`,checkout:`at checkout`,portal:`in Portal`};function I(e){let t=e.data.metafields.map(({name:e})=>e),n=`custom fields`;if(t.length>N){let e=t.length-N;n=`${t.slice(0,N).join(`, `)} and ${e} more ${e===1?`field`:`fields`}`}else t.length>0&&(n=t.length===1?t[0]:`${t.slice(0,-1).join(`, `)} and ${t.at(-1)}`);let{source:r}=e.data,i=E(r)?F[r]:void 0;return i?`updated ${n} ${i}`:`updated ${n}`}function L(e,t){if(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)return`signed up`;if(e.type===`login_event`)return`logged in`;if(e.type===`payment_event`)return`made payment`;if(e.type===`newsletter_event`){let n=e.data.newsletter,r=t&&n?.name?n.name:`newsletter`;return e.data.subscribed?`subscribed to ${r}`:`unsubscribed from ${r}`}if(e.type===`subscription_event`){let t=e.data.type;return t===`created`?`started paid subscription`:t===`canceled`?`canceled paid subscription`:t===`reactivated`?`reactivated paid subscription`:t===`expired`?`ended paid subscription`:`changed paid subscription`}if(e.type===`email_opened_event`)return`opened email`;if(e.type===`email_sent_event`)return`sent email`;if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source!==`automation_action_revision`)return`received welcome email (${(t?.slug||``).includes(`paid`)?`Paid`:`Free`})`;let n=j(t.subject);return n?`received automated email: ${n}`:`received automated email`}if(e.type===`email_delivered_event`)return`received email`;if(e.type===`email_failed_event`)return`bounced email`;if(e.type===`email_complaint_event`)return`email flagged as spam`;if(e.type===`comment_event`)return e.data.parent?`replied to comment`:`commented`;if(e.type===`click_event`)return`clicked link in email`;if(e.type===`aggregated_click_event`){let t=e.data.count?.clicks??1;return t<=1?`clicked link in email`:`clicked ${t} links in email`}if(e.type===`feedback_event`)return e.data.score===1?`more like this`:`less like this`;if(e.type===`email_change_event`)return e.data.from_email&&e.data.to_email?`Email address changed from ${e.data.from_email} to ${e.data.to_email}`:`Email address changed`;if(P(e))return I(e);if(e.type===`donation_event`)return`Made a one-time payment`;if(e.type===`gift_purchase_event`){let t=e.data.amount,n=e.data.currency,r=e.data.tier_name,i=e.data.duration,a=e.data.cadence;return typeof t==`number`&&n&&r&&typeof i==`number`&&a?`Purchased gift subscription for ${A(t,n)} (${r}, ${i} ${i===1?a:`${a}s`})`:`Purchased gift subscription`}if(e.type===`gift_redemption_event`)return`started gift subscription`;if(e.type===`gift_ended_event`)return`gift subscription expired`}function R(e,t){if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source===`automation_action_revision`){let e=j(t.subject);return e?`received automated email: ${e}`:`received automated email`}}return L(e,t)}function z(e){if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.title)return t.title}if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.title)return t.title}return``}function oe(e){let t=e.data.attribution;return t?.referrer_source?{name:t.referrer_source,url:t.referrer_url??null}:null}function B(e,t){if(e.type===`signup_event`&&t.paidMembersEnabled){let t=e.data.created_with_status;return t&&t!==`free`?null:`Free`}if(e.type===`gift_redemption_event`)return e.data.tier_name??void 0}function V(e){if(e.type===`click_event`)return e.data.link?.to}function H(e){if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.url)return t.url}if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.url)return t.url}}function U(e){if(e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.id)return`#/posts/analytics/${t.id}`}if((e.type===`signup_event`||e.type===`subscription_event`)&&e.data.attribution_type===`post`&&e.data.attribution_id)return`#/posts/analytics/${e.data.attribution_id}`}function W(e,t){let n=j(e.data.member?.name),r=e.data.member?n||e.data.member.email||``:e.data.name||e.data.email||``,i=e.data.member?{...e.data.member,name:n??void 0}:e.data.member;return{id:e.data.id,memberId:e.data.member_id??e.data.member?.id,member:i,emailId:e.data.email_id,email:e.data.email,icon:M(e),subject:r,action:L(e,t.hasMultipleNewsletters),actionTitle:R(e,t.hasMultipleNewsletters),join:`–`,object:z(e),source:oe(e),info:B(e,t),description:V(e),url:H(e),route:U(e),timestamp:e.data.created_at}}function G(e){return e?/^(https?:\/\/|\/|#\/)/i.test(e):!1}var K=[`email_sent_event`,`email_delivered_event`,`email_opened_event`,`email_failed_event`,`email_complaint_event`],q=[{event:`signup_event`,name:`Signups`,group:`auth`,icon:`event-signed-up`},{event:`login_event`,name:`Logins`,group:`auth`,icon:`event-logged-in`},{event:`subscription_event`,name:`Paid subscriptions`,group:`payments`,icon:`event-subscriptions`},{event:`payment_event`,name:`Payments`,group:`payments`,icon:`event-subscriptions`},{event:`newsletter_event`,name:`Email subscriptions`,group:`emails`,icon:`event-subscribed-to-email`},{event:`email_opened_event`,name:`Email opened`,group:`emails`,icon:`event-opened-email`},{event:`email_delivered_event`,name:`Email received`,group:`emails`,icon:`event-received-email`},{event:`email_complaint_event`,name:`Email flagged as spam`,group:`emails`,icon:`event-email-delivery-spam`},{event:`email_failed_event`,name:`Email bounced`,group:`emails`,icon:`event-email-delivery-failed`},{event:`email_change_event`,name:`Email address changed`,group:`emails`,icon:`event-email-changed`},{event:`automated_email_sent_event`,name:`Welcome email received`,group:`emails`,icon:`event-sent-email`},{event:`metafield_change_event`,name:`Custom fields updated`,group:`others`,icon:`event-metafields-changed`},{event:`feedback_event`,name:`Feedback`,group:`others`,icon:`event-more-like-this`}];function J(e){return[...new Set((e??``).split(`,`).filter(e=>/^[a-z_]+$/.test(e)))]}function Y(e,t){let n=[`aggregated_click_event`];return(!t||e.editorDefaultEmailRecipients===`disabled`)&&n.push(...K),e.editorDefaultEmailRecipients===`disabled`&&n.push(`newsletter_event`),e.customFieldsAvailable||n.push(`metafield_change_event`),n}function se(e,t){let n=[...q];e.commentsEnabled!==`off`&&n.push({event:`comment_event`,name:`Comments`,group:`others`,icon:`event-comment`}),e.emailTrackClicks&&n.push({event:`click_event`,name:`Clicked link in email`,group:`others`,icon:`event-click`});let r=new Set(Y(e,t));return n.filter(({event:e})=>!r.has(e))}function ce(e,t){let n=new Set(J(t)),r=e===`subscription_event`?[e,`gift_redemption_event`,`gift_ended_event`]:e===`payment_event`?[e,`donation_event`,`gift_purchase_event`]:[e],i=n.has(e);for(let e of r)i?n.delete(e):n.add(e);return[...n].join(`,`)}function X({settings:e,memberId:t,excluded:n}){let r=new Set([...J(n),...Y(e,t)]);return r.has(`email_complaint_event`)&&r.add(`email_complained_event`),e.commentsEnabled===`off`&&r.add(`comment_event`),{memberId:t,excludedEvents:[...r]}}function Z(){let e=T({defaultErrorHandler:!1}),t=e.data?.settings??[],n=D();return{settingsQuery:e,settings:t,activitySettings:{editorDefaultEmailRecipients:w(t,`editor_default_email_recipients`)??void 0,commentsEnabled:w(t,`comments_enabled`)??void 0,emailTrackClicks:w(t,`email_track_clicks`)??void 0,customFieldsAvailable:n}}}var Q=n(),$=({iconName:e})=>{let t={className:`shrink-0 text-muted-foreground`,size:16};switch(e){case`event-signed-up`:return(0,Q.jsx)(h,{...t});case`event-logged-in`:return(0,Q.jsx)(ne,{...t});case`event-subscriptions`:return(0,Q.jsx)(d,{...t});case`event-canceled-subscription`:return(0,Q.jsx)(ee,{...t});case`event-subscribed-to-email`:return(0,Q.jsx)(ie,{...t});case`event-unsubscribed-from-email`:return(0,Q.jsx)(te,{...t});case`event-opened-email`:return(0,Q.jsx)(l,{...t});case`event-received-email`:return(0,Q.jsx)(f,{...t});case`event-sent-email`:return(0,Q.jsx)(m,{...t});case`event-email-delivery-failed`:return(0,Q.jsx)(c,{...t});case`event-email-delivery-spam`:return(0,Q.jsx)(u,{...t});case`event-email-changed`:return(0,Q.jsx)(_,{...t});case`event-metafields-changed`:return(0,Q.jsx)(p,{...t});case`event-comment`:return(0,Q.jsx)(s,{...t});case`event-click`:return(0,Q.jsx)(re,{...t});case`event-more-like-this`:return(0,Q.jsx)(g,{...t});case`event-less-like-this`:return(0,Q.jsx)(o,{...t});case`event-gift`:return(0,Q.jsx)(y,{...t});default:return(0,Q.jsx)(b,{...t})}},le=({memberId:e})=>{let{isAdmin7:t}=a(),n=(0,Q.jsx)(`a`,{className:t?void 0:`block pt-3 font-medium text-primary hover:underline`,"data-testid":`member-activity-view-all`,href:`#/members-activity?member=${e}`,children:`View all member activity →`});return t?(0,Q.jsx)(v,{className:`mt-3`,variant:`ghost`,asChild:!0,children:n}):n},ue=`All events related to this member will be shown here.`,de=e=>e?e.charAt(0).toUpperCase()+e.slice(1):``;function fe(e){if(e&&typeof e==`object`){let t=e.subject;return t?`“${t}”`:`Email`}}var pe=({event:e})=>{if(!e.action)return null;let t=fe(e.email),n=e.object&&(e.route||G(e.url)),r=!n&&t,i=e.timestamp?(0,O.default)(e.timestamp).fromNow():`—`;return(0,Q.jsxs)(`div`,{className:`flex items-start gap-3 py-3`,"data-testid":`member-activity-event`,children:[(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-muted`,children:(0,Q.jsx)($,{iconName:e.icon})}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,Q.jsxs)(`div`,{className:`text-sm leading-snug`,children:[(0,Q.jsx)(`span`,{"data-testid":`member-activity-action`,children:de(e.action)}),e.info&&(0,Q.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.info,`)`]}),n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),e.route?(0,Q.jsx)(`a`,{className:`hover:underline`,href:e.route,children:e.object}):(0,Q.jsx)(`a`,{className:`hover:underline`,href:e.url,rel:`noopener noreferrer`,target:`_blank`,children:e.object})]}),r&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:t})]})]}),e.description&&(0,Q.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:e.description}),(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i})]})]})},me=({memberId:e,hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:i})=>{let{settingsQuery:a,activitySettings:o}=Z(),{excludedEvents:s}=X({settings:o,memberId:e,excluded:null}),{data:c,isLoading:l}=r(e??``,{limit:`5`,enabled:!!e&&!a.isLoading,excludedEvents:s}),u=a.isLoading||l,d=(c?.events??[]).map(e=>W(e,{hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:i})),f=new Set;return e?(0,Q.jsxs)(`section`,{"aria-labelledby":`member-activity-heading`,className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-activity-heading`,children:`Activity`}),(0,Q.jsx)(S,{children:(0,Q.jsxs)(x,{className:`pt-3`,children:[u?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(C,{className:`h-10`}),(0,Q.jsx)(C,{className:`h-10`}),(0,Q.jsx)(C,{className:`h-10`})]}):d.length===0?(0,Q.jsx)(`p`,{className:`py-4 text-center text-sm text-muted-foreground`,"data-testid":`member-activity-empty`,children:`No activity yet`}):(0,Q.jsx)(`div`,{className:`divide-y divide-border`,children:d.map(e=>{let t=e.id||`${e.timestamp??`?`}-${e.icon}-${e.action}`,n=t,r=1;for(;f.has(n);)n=`${t}#${r}`,r+=1;return f.add(n),(0,Q.jsx)(pe,{event:e},n)})}),!u&&d.length>0&&(0,Q.jsx)(le,{memberId:e})]})})]}):(0,Q.jsxs)(`section`,{"aria-labelledby":`member-activity-heading`,className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-activity-heading`,children:`Activity`}),(0,Q.jsx)(S,{children:(0,Q.jsx)(x,{className:`pt-6`,children:(0,Q.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,Q.jsx)(ae,{description:ue,title:`Activity`,children:(0,Q.jsx)(b,{})})})})})]})};export{se as a,G as c,X as i,W as l,me as n,J as o,Z as r,ce as s,$ as 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]=`5529a95a-4a0c-4e91-952c-7378f121bcb5`,e._sentryDebugIdIdentifier=`sentry-dbid-5529a95a-4a0c-4e91-952c-7378f121bcb5`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{t as n}from"./jsx-runtime-Bm2_KH-0.js";import{h as r}from"./members-CH6KeXQc.js";import{J as i,r as a}from"./shade-provider-DvrXKKQZ.js";import{A as o,Ft as s,Gt as c,Jt as l,Kt as u,Rn as d,Wt as f,Xn as ee,Yt as te,Zt as ne,_ as p,et as m,g as h,k as g,kr as _,kt as re,qt as ie,t as v,yn as y,zr as b}from"./button-CTHYSI-d.js";import{n as x,t as S}from"./card-Cd6xB_Ok.js";import{t as ae}from"./empty-indicator-BhVwqSVH.js";import{t as C}from"./skeleton-C1s6yr9e.js";import{Ht as w,Kt as T}from"./index-RuRs_qGS.js";import{r as E,t as D}from"./use-availability-CgZC6L_V.js";t();var O=e(i(),1),k=new Set([`bif`,`clp`,`djf`,`gnf`,`jpy`,`kmf`,`krw`,`mga`,`pyg`,`rwf`,`ugx`,`vnd`,`vuv`,`xaf`,`xof`,`xpf`]);function A(e,t){let n=k.has(t.toLowerCase())?e:e/100,r=n%1==0;try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t.toUpperCase(),minimumFractionDigits:r?0:2,maximumFractionDigits:r?0:2}).format(n)}catch{return`${n}`}}function j(e){return e?.trim()||null}function M(e){let t;return e.type===`login_event`&&(t=`logged-in`),e.type===`payment_event`&&(t=`subscriptions`),e.type===`newsletter_event`&&(t=e.data.subscribed?`subscribed-to-email`:`unsubscribed-from-email`),e.type===`subscription_event`&&(t=`subscriptions`,e.data.type===`canceled`&&(t=`canceled-subscription`)),(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)&&(t=`signed-up`),e.type===`email_opened_event`&&(t=`opened-email`),(e.type===`email_sent_event`||e.type===`automated_email_sent_event`)&&(t=`sent-email`),e.type===`email_delivered_event`&&(t=`received-email`),e.type===`email_failed_event`&&(t=`email-delivery-failed`),e.type===`email_complaint_event`&&(t=`email-delivery-spam`),e.type===`comment_event`&&(t=`comment`),(e.type===`click_event`||e.type===`aggregated_click_event`)&&(t=`click`),e.type===`feedback_event`&&(t=e.data.score===1?`more-like-this`:`less-like-this`),e.type===`donation_event`&&(t=`subscriptions`),(e.type===`gift_purchase_event`||e.type===`gift_redemption_event`||e.type===`gift_ended_event`)&&(t=`gift`),e.type===`email_change_event`&&(t=`email-changed`),e.type===`metafield_change_event`&&(t=`metafields-changed`),`event-${t}`}var N=3;function P(e){return e.type===`metafield_change_event`}var F={admin:`in Admin`,admin_api:`through the Admin API`,import:`from an import`,checkout:`at checkout`,portal:`in Portal`};function I(e){let t=e.data.metafields.map(({name:e})=>e),n=`custom fields`;if(t.length>N){let e=t.length-N;n=`${t.slice(0,N).join(`, `)} and ${e} more ${e===1?`field`:`fields`}`}else t.length>0&&(n=t.length===1?t[0]:`${t.slice(0,-1).join(`, `)} and ${t.at(-1)}`);let{source:r}=e.data,i=E(r)?F[r]:void 0;return i?`updated ${n} ${i}`:`updated ${n}`}function L(e,t){if(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)return`signed up`;if(e.type===`login_event`)return`logged in`;if(e.type===`payment_event`)return`made payment`;if(e.type===`newsletter_event`){let n=e.data.newsletter,r=t&&n?.name?n.name:`newsletter`;return e.data.subscribed?`subscribed to ${r}`:`unsubscribed from ${r}`}if(e.type===`subscription_event`){let t=e.data.type;return t===`created`?`started paid subscription`:t===`canceled`?`canceled paid subscription`:t===`reactivated`?`reactivated paid subscription`:t===`expired`?`ended paid subscription`:`changed paid subscription`}if(e.type===`email_opened_event`)return`opened email`;if(e.type===`email_sent_event`)return`sent email`;if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source!==`automation_action_revision`)return`received welcome email (${(t?.slug||``).includes(`paid`)?`Paid`:`Free`})`;let n=j(t.subject);return n?`received automated email: ${n}`:`received automated email`}if(e.type===`email_delivered_event`)return`received email`;if(e.type===`email_failed_event`)return`bounced email`;if(e.type===`email_complaint_event`)return`email flagged as spam`;if(e.type===`comment_event`)return e.data.parent?`replied to comment`:`commented`;if(e.type===`click_event`)return`clicked link in email`;if(e.type===`aggregated_click_event`){let t=e.data.count?.clicks??1;return t<=1?`clicked link in email`:`clicked ${t} links in email`}if(e.type===`feedback_event`)return e.data.score===1?`more like this`:`less like this`;if(e.type===`email_change_event`)return e.data.from_email&&e.data.to_email?`Email address changed from ${e.data.from_email} to ${e.data.to_email}`:`Email address changed`;if(P(e))return I(e);if(e.type===`donation_event`)return`Made a one-time payment`;if(e.type===`gift_purchase_event`){let t=e.data.amount,n=e.data.currency,r=e.data.tier_name,i=e.data.duration,a=e.data.cadence;return typeof t==`number`&&n&&r&&typeof i==`number`&&a?`Purchased gift subscription for ${A(t,n)} (${r}, ${i} ${i===1?a:`${a}s`})`:`Purchased gift subscription`}if(e.type===`gift_redemption_event`)return`started gift subscription`;if(e.type===`gift_ended_event`)return`gift subscription expired`}function R(e,t){if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source===`automation_action_revision`){let e=j(t.subject);return e?`received automated email: ${e}`:`received automated email`}}return L(e,t)}function z(e){if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.title)return t.title}if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.title)return t.title}return``}function oe(e){let t=e.data.attribution;return t?.referrer_source?{name:t.referrer_source,url:t.referrer_url??null}:null}function B(e,t){if(e.type===`signup_event`&&t.paidMembersEnabled){let t=e.data.created_with_status;return t&&t!==`free`?null:`Free`}if(e.type===`gift_redemption_event`)return e.data.tier_name??void 0}function V(e){if(e.type===`click_event`)return e.data.link?.to}function H(e){if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.url)return t.url}if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.url)return t.url}}function U(e){if(e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.id)return`#/posts/analytics/${t.id}`}if((e.type===`signup_event`||e.type===`subscription_event`)&&e.data.attribution_type===`post`&&e.data.attribution_id)return`#/posts/analytics/${e.data.attribution_id}`}function W(e,t){let n=j(e.data.member?.name),r=e.data.member?n||e.data.member.email||``:e.data.name||e.data.email||``,i=e.data.member?{...e.data.member,name:n??void 0}:e.data.member;return{id:e.data.id,memberId:e.data.member_id??e.data.member?.id,member:i,emailId:e.data.email_id,email:e.data.email,icon:M(e),subject:r,action:L(e,t.hasMultipleNewsletters),actionTitle:R(e,t.hasMultipleNewsletters),join:`–`,object:z(e),source:oe(e),info:B(e,t),description:V(e),url:H(e),route:U(e),timestamp:e.data.created_at}}function G(e){return e?/^(https?:\/\/|\/|#\/)/i.test(e):!1}var K=[`email_sent_event`,`email_delivered_event`,`email_opened_event`,`email_failed_event`,`email_complaint_event`],q=[{event:`signup_event`,name:`Signups`,group:`auth`,icon:`event-signed-up`},{event:`login_event`,name:`Logins`,group:`auth`,icon:`event-logged-in`},{event:`subscription_event`,name:`Paid subscriptions`,group:`payments`,icon:`event-subscriptions`},{event:`payment_event`,name:`Payments`,group:`payments`,icon:`event-subscriptions`},{event:`newsletter_event`,name:`Email subscriptions`,group:`emails`,icon:`event-subscribed-to-email`},{event:`email_opened_event`,name:`Email opened`,group:`emails`,icon:`event-opened-email`},{event:`email_delivered_event`,name:`Email received`,group:`emails`,icon:`event-received-email`},{event:`email_complaint_event`,name:`Email flagged as spam`,group:`emails`,icon:`event-email-delivery-spam`},{event:`email_failed_event`,name:`Email bounced`,group:`emails`,icon:`event-email-delivery-failed`},{event:`email_change_event`,name:`Email address changed`,group:`emails`,icon:`event-email-changed`},{event:`automated_email_sent_event`,name:`Welcome email received`,group:`emails`,icon:`event-sent-email`},{event:`metafield_change_event`,name:`Custom fields updated`,group:`others`,icon:`event-metafields-changed`},{event:`feedback_event`,name:`Feedback`,group:`others`,icon:`event-more-like-this`}];function J(e){return[...new Set((e??``).split(`,`).filter(e=>/^[a-z_]+$/.test(e)))]}function Y(e,t){let n=[`aggregated_click_event`];return(!t||e.editorDefaultEmailRecipients===`disabled`)&&n.push(...K),e.editorDefaultEmailRecipients===`disabled`&&n.push(`newsletter_event`),e.customFieldsAvailable||n.push(`metafield_change_event`),n}function se(e,t){let n=[...q];e.commentsEnabled!==`off`&&n.push({event:`comment_event`,name:`Comments`,group:`others`,icon:`event-comment`}),e.emailTrackClicks&&n.push({event:`click_event`,name:`Clicked link in email`,group:`others`,icon:`event-click`});let r=new Set(Y(e,t));return n.filter(({event:e})=>!r.has(e))}function ce(e,t){let n=new Set(J(t)),r=e===`subscription_event`?[e,`gift_redemption_event`,`gift_ended_event`]:e===`payment_event`?[e,`donation_event`,`gift_purchase_event`]:[e],i=n.has(e);for(let e of r)i?n.delete(e):n.add(e);return[...n].join(`,`)}function X({settings:e,memberId:t,excluded:n}){let r=new Set([...J(n),...Y(e,t)]);return r.has(`email_complaint_event`)&&r.add(`email_complained_event`),e.commentsEnabled===`off`&&r.add(`comment_event`),{memberId:t,excludedEvents:[...r]}}function Z(){let e=T({defaultErrorHandler:!1}),t=e.data?.settings??[],n=D();return{settingsQuery:e,settings:t,activitySettings:{editorDefaultEmailRecipients:w(t,`editor_default_email_recipients`)??void 0,commentsEnabled:w(t,`comments_enabled`)??void 0,emailTrackClicks:w(t,`email_track_clicks`)??void 0,customFieldsAvailable:n}}}var Q=n(),$=({iconName:e})=>{let t={className:`shrink-0 text-muted-foreground`,size:16};switch(e){case`event-signed-up`:return(0,Q.jsx)(h,{...t});case`event-logged-in`:return(0,Q.jsx)(ne,{...t});case`event-subscriptions`:return(0,Q.jsx)(d,{...t});case`event-canceled-subscription`:return(0,Q.jsx)(ee,{...t});case`event-subscribed-to-email`:return(0,Q.jsx)(ie,{...t});case`event-unsubscribed-from-email`:return(0,Q.jsx)(te,{...t});case`event-opened-email`:return(0,Q.jsx)(l,{...t});case`event-received-email`:return(0,Q.jsx)(f,{...t});case`event-sent-email`:return(0,Q.jsx)(m,{...t});case`event-email-delivery-failed`:return(0,Q.jsx)(c,{...t});case`event-email-delivery-spam`:return(0,Q.jsx)(u,{...t});case`event-email-changed`:return(0,Q.jsx)(_,{...t});case`event-metafields-changed`:return(0,Q.jsx)(p,{...t});case`event-comment`:return(0,Q.jsx)(s,{...t});case`event-click`:return(0,Q.jsx)(re,{...t});case`event-more-like-this`:return(0,Q.jsx)(g,{...t});case`event-less-like-this`:return(0,Q.jsx)(o,{...t});case`event-gift`:return(0,Q.jsx)(y,{...t});default:return(0,Q.jsx)(b,{...t})}},le=({memberId:e})=>{let{isAdmin7:t}=a(),n=(0,Q.jsx)(`a`,{className:t?void 0:`block pt-3 font-medium text-primary hover:underline`,"data-testid":`member-activity-view-all`,href:`#/members-activity?member=${e}`,children:`View all member activity →`});return t?(0,Q.jsx)(v,{className:`mt-3`,variant:`ghost`,asChild:!0,children:n}):n},ue=`All events related to this member will be shown here.`,de=e=>e?e.charAt(0).toUpperCase()+e.slice(1):``;function fe(e){if(e&&typeof e==`object`){let t=e.subject;return t?`“${t}”`:`Email`}}var pe=({event:e})=>{if(!e.action)return null;let t=fe(e.email),n=e.object&&(e.route||G(e.url)),r=!n&&t,i=e.timestamp?(0,O.default)(e.timestamp).fromNow():`—`;return(0,Q.jsxs)(`div`,{className:`flex items-start gap-3 py-3`,"data-testid":`member-activity-event`,children:[(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-muted`,children:(0,Q.jsx)($,{iconName:e.icon})}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,Q.jsxs)(`div`,{className:`text-sm leading-snug`,children:[(0,Q.jsx)(`span`,{"data-testid":`member-activity-action`,children:de(e.action)}),e.info&&(0,Q.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.info,`)`]}),n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),e.route?(0,Q.jsx)(`a`,{className:`hover:underline`,href:e.route,children:e.object}):(0,Q.jsx)(`a`,{className:`hover:underline`,href:e.url,rel:`noopener noreferrer`,target:`_blank`,children:e.object})]}),r&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:t})]})]}),e.description&&(0,Q.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:e.description}),(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i})]})]})},me=({memberId:e,hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:i})=>{let{settingsQuery:a,activitySettings:o}=Z(),{excludedEvents:s}=X({settings:o,memberId:e,excluded:null}),{data:c,isLoading:l}=r(e??``,{limit:`5`,enabled:!!e&&!a.isLoading,excludedEvents:s}),u=a.isLoading||l,d=(c?.events??[]).map(e=>W(e,{hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:i})),f=new Set;return e?(0,Q.jsxs)(`section`,{"aria-labelledby":`member-activity-heading`,className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-activity-heading`,children:`Activity`}),(0,Q.jsx)(S,{children:(0,Q.jsxs)(x,{className:`pt-3`,children:[u?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(C,{className:`h-10`}),(0,Q.jsx)(C,{className:`h-10`}),(0,Q.jsx)(C,{className:`h-10`})]}):d.length===0?(0,Q.jsx)(`p`,{className:`py-4 text-center text-sm text-muted-foreground`,"data-testid":`member-activity-empty`,children:`No activity yet`}):(0,Q.jsx)(`div`,{className:`divide-y divide-border`,children:d.map(e=>{let t=e.id||`${e.timestamp??`?`}-${e.icon}-${e.action}`,n=t,r=1;for(;f.has(n);)n=`${t}#${r}`,r+=1;return f.add(n),(0,Q.jsx)(pe,{event:e},n)})}),!u&&d.length>0&&(0,Q.jsx)(le,{memberId:e})]})})]}):(0,Q.jsxs)(`section`,{"aria-labelledby":`member-activity-heading`,className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-activity-heading`,children:`Activity`}),(0,Q.jsx)(S,{children:(0,Q.jsx)(x,{className:`pt-6`,children:(0,Q.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,Q.jsx)(ae,{description:ue,title:`Activity`,children:(0,Q.jsx)(b,{})})})})})]})};export{se as a,G as c,X as i,W as l,me as n,J as o,Z as r,ce as s,$ 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]=`538ba4e0-47fe-429b-b97e-c3fef1b5f7a3`,e._sentryDebugIdIdentifier=`sentry-dbid-538ba4e0-47fe-429b-b97e-c3fef1b5f7a3`)}catch{}})();import{n as e,r as t}from"./hooks-0r7qxGEo.js";import{a as n,i as r,n as i,o as a}from"./use-availability-CgZC6L_V.js";var o=`metafields`,s=/^[a-z0-9_]+$/;function c({namespace:e,key:t,partPath:n}){let r=`${e}.${t}`;return n?`${r}.${n}`:r}function l(e){let[t,n,...r]=e.split(`.`);return t===void 0||n===void 0||![t,n,...r].every(e=>s.test(e))?null:{namespace:t,key:n,partPath:r.length>0?r.join(`.`):null}}var u=`${o}.`;function d(e){return c({namespace:e.namespace,key:e.key,partPath:null})}function f(e){let t=`${u}${d(e)}`,n=a(e.type);return n?n.map(e=>({column:`${t}.${e}`,subField:e})):[{column:t,subField:null}]}function p(e){return e===`metafields`||e.startsWith(u)}var m=`AC.AD.AE.AF.AG.AI.AL.AM.AO.AQ.AR.AS.AT.AU.AW.AX.AZ.BA.BB.BD.BE.BF.BG.BH.BI.BJ.BL.BM.BN.BO.BQ.BR.BS.BT.BV.BW.BY.BZ.CA.CC.CD.CF.CG.CH.CI.CK.CL.CM.CN.CO.CR.CU.CV.CW.CX.CY.CZ.DE.DJ.DK.DM.DO.DZ.EC.EE.EG.EH.ER.ES.ET.FI.FJ.FK.FM.FO.FR.GA.GB.GD.GE.GF.GG.GH.GI.GL.GM.GN.GP.GQ.GR.GS.GT.GU.GW.GY.HK.HM.HN.HR.HT.HU.ID.IE.IL.IM.IN.IO.IQ.IR.IS.IT.JE.JM.JO.JP.KE.KG.KH.KI.KM.KN.KP.KR.KW.KY.KZ.LA.LB.LC.LI.LK.LR.LS.LT.LU.LV.LY.MA.MC.MD.ME.MF.MG.MH.MK.ML.MM.MN.MO.MP.MQ.MR.MS.MT.MU.MV.MW.MX.MY.MZ.NA.NC.NE.NF.NG.NI.NL.NO.NP.NR.NU.NZ.OM.PA.PE.PF.PG.PH.PK.PL.PM.PN.PR.PS.PT.PW.PY.QA.RE.RO.RS.RU.RW.SA.SB.SC.SD.SE.SG.SH.SI.SJ.SK.SL.SM.SN.SO.SR.SS.ST.SV.SX.SY.SZ.TA.TC.TD.TF.TG.TH.TJ.TK.TL.TM.TN.TO.TR.TT.TV.TW.TZ.UA.UG.UM.US.UY.UZ.VA.VC.VE.VG.VI.VN.VU.WF.WS.XK.YE.YT.ZA.ZM.ZW`.split(`.`),h=new Intl.DisplayNames([`en`],{type:`region`}),g=e=>{try{return h.of(e.toUpperCase())??e}catch{return e}},_;function v(e){_??=m.map(e=>({value:e,label:g(e)})).sort((e,t)=>e.label.localeCompare(t.label,`en`));let t=_,n=(typeof e==`string`?[e]:e??[]).filter((e,n,r)=>e&&r.indexOf(e)===n&&!t.some(t=>t.value===e));return n.length===0?_:[..._,...n.map(e=>({value:e,label:g(e)}))]}var y={short_text:{label:`Short text`,input:`text`},long_text:{label:`Long text`,input:`textarea`},address:{label:`Address`,input:`address`,subFields:{line1:`Address line 1`,line2:`Address line 2`,city:`City`,state:`State`,postal_code:`Postal code`,country:`Country`}}},b=e=>y[e]?.subFields??{},x=r.map(e=>({id:e,...y[e]})),S=e=>x.find(t=>t.id===e)||x[0],C=e=>S(e.type),w=e=>e.flatMap(e=>{let t=b(e.type);return f({namespace:e.namespace,key:e.key,type:e.type}).map(({column:n,subField:r})=>{let i=r===null?void 0:t[r];return{value:n,fieldName:e.name,...i===void 0?{}:{partLabel:i},label:i===void 0?e.name:`${e.name} (${i})`,type:e.type}})}),T=e=>{let t=a(e),r=n(e);if(!t||!r)return null;let i=b(e);return t.map(e=>({key:e,label:i[e],type:r[e]}))},E=e=>typeof e==`object`&&!!e&&!Array.isArray(e),D={address:[[`state`,`postal_code`]]};function O(e){let t=a(e);if(!t)return[];let n=new Map;(D[e]??[]).forEach((e,t)=>{e.forEach(e=>n.set(e,t))});let r=[],i;for(let e of t){let t=n.get(e);if(t!==void 0&&t===i){r[r.length-1].push(e);continue}r.push([e]),i=t}return r}var k=Object.fromEntries(r.map(e=>[e,O(e)])),A=(e,t)=>{if(a(e)===null)return typeof t==`string`?t:``;if(!E(t))return``;let r=n(e)??{},i=e=>{let n=t[e];return r[e]===`country_code`&&typeof n==`string`?g(n):n};return(k[e]??[]).map(e=>e.map(i).filter(e=>typeof e==`string`&&e!==``).join(` `)).filter(Boolean).join(`, `)},j=e=>i[e].kind,M=`MemberCustomFieldsResponseType`,N=M,P=t({dataType:M,path:`/members/metafields/custom/`,returnData:e=>e.members_metafields}),F=e=>P({...e,searchParams:{filter:`status:[active,archived]`}}),I=e({method:`POST`,path:()=>`/members/metafields/custom/`,body:e=>({members_metafields:[e]}),invalidateQueries:{dataType:M},updateQueries:{dataType:M,emberUpdateType:`skip`,update:(e,t)=>{let n=t;if(!n?.members_metafields)return t;let r=e.members_metafields.filter(e=>!n.members_metafields.some(t=>t.key===e.key));return{...n,members_metafields:[...n.members_metafields,...r]}}}}),L=e({method:`PUT`,path:e=>`/members/metafields/custom/${e.key}/`,body:({key:e,...t})=>({members_metafields:[t]}),invalidateQueries:{dataType:M}}),R=e({method:`PUT`,path:()=>`/members/metafields/custom/`,body:e=>({members_metafields:e.map(({key:e})=>({key:e}))}),updateQueries:{dataType:M,emberUpdateType:`skip`,update:(e,t)=>{let n=t;if(!n?.members_metafields)return t;let r=e.members_metafields.map(({key:e})=>e);return{...n,members_metafields:z(r,n.members_metafields)}}}}),z=(e,t)=>{let n=new Map(e.map((e,t)=>[e,t]));return[...t].sort((e,t)=>(n.get(e.key)??1/0)-(n.get(t.key)??1/0))},B=e({method:`DELETE`,path:e=>`/members/metafields/custom/${e}/`,invalidateQueries:{dataType:M}});export{v as _,T as a,l as b,P as c,B as d,L as f,g,S as h,j as i,F as l,C as m,z as n,x as o,R as p,w as r,N as s,A as t,I as u,p as v,c as y};
|
|
@@ -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]=`429d9d5a-18af-4e0a-921b-3ff9d87e93a2`,e._sentryDebugIdIdentifier=`sentry-dbid-429d9d5a-18af-4e0a-921b-3ff9d87e93a2`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{i as n}from"./framework-provider-CIvHFnik.js";import{o as r}from"./hooks-C-BDQ6Hs.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{_ as a,b as o,c as s,d as c,f as l,l as u,m as d,r as f,u as p,v as m,x as h}from"./members-Cj_BUZUL.js";import{n as g}from"./dist-pogVoW2G.js";import{i as _}from"./currency-DgOqjQBh.js";import{t as v}from"./preload-helper-Ba4JejZL.js";import{h as ee,n as te,u as ne}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as re}from"./router-provider-Cf-bcYZr.js";import{H as y,J as ie,L as b,r as x}from"./shade-provider-DvrXKKQZ.js";import{t as S}from"./box-BOIwAOVT.js";import{t as ae}from"./container-DakAbO79.js";import{t as oe}from"./inline-Qoyy4r2g.js";import{D as se,Gt as ce,Ht as C,Lt as le,On as ue,Pn as de,Rn as w,Rt as T,Xt as E,Zt as D,ar as O,bt as fe,dt as k,g as pe,jn as me,t as A,vn as he,zt as ge}from"./button-CTHYSI-d.js";import{a as _e,c as ve,i as j,o as M,r as N,s as ye,t as be}from"./alert-dialog-CAPLqwVs.js";import{t as xe}from"./avatar-YbECDnBI.js";import{t as P}from"./badge-DuMiqyUH.js";import{a as Se,i as Ce,n as we,o as Te,r as Ee,t as De}from"./breadcrumb-BO_Xhq8u.js";import{n as F,t as I}from"./card-Cd6xB_Ok.js";import{a as L,i as R,o as z,r as B,s as V,t as H}from"./dialog-BO1lcy8A.js";import{t as Oe}from"./multi-select-combobox-BzBMUFst.js";import{i as ke,n as Ae,r as je,t as Me}from"./combobox-DDlijta6.js";import{t as Ne}from"./empty-indicator-BhVwqSVH.js";import{t as U}from"./label-CxXFmzcd.js";import{t as W}from"./input-BHb2A_DU.js";import{n as Pe,o as Fe,t as Ie}from"./input-group-DL5EFP5r.js";import{t as Le}from"./skeleton-C1s6yr9e.js";import{n as G}from"./loading-indicator-DaRyGrxv.js";import{t as K}from"./page-header-Baymg6VR.js";import{i as Re,n as ze,o as Be,s as Ve,t as He}from"./select-DeloOYCg.js";import{t as Ue}from"./switch-BppWscjz.js";import{t as We}from"./textarea-B_rfKtjs.js";import{d as Ge,n as Ke,p as qe,u as Je}from"./label-picker-GTIIlBQ6.js";import{t as Ye}from"./list-return-state-B91WMz_J.js";import{i as Xe}from"./users-CzgQKbfO.js";import{r as Ze}from"./newsletters-BMEgeL2l.js";import{t as Qe}from"./dirty-confirm-dialog-CdxPMCA8.js";import{a as $e}from"./tiers-D7aGzwZ-.js";import{$t as et,Ht as tt,Kt as nt,Qt as rt,ct as it,ft as q,gt as at,ut as ot,vt as st}from"./index-CuDhPtkB.js";import{t as ct}from"./validator-DgUCXsE8.js";import{t as J}from"./detail-page-DkWBi2i0.js";import"./virtual-list-qPFukjyT.js";import{n as lt,t as ut}from"./use-unsaved-changes-guard-Bvcp_Rny.js";import{n as dt}from"./use-availability-BqL7Dvn_.js";import{c as ft,n as pt}from"./member-activity-feed-BBeCZmLM.js";import{_ as mt,a as ht,g as gt,m as _t,t as vt}from"./member-custom-fields-DPsyP1Hq.js";import{t as yt}from"./use-definitions-DMVU3mTG.js";var Y=e(t(),1),bt=new Set([`active`,`trialing`,`unpaid`,`past_due`]);function xt(e){return(e.subscriptions??[]).some(e=>bt.has(e.status))}function St(e){return e?`Delete member + Cancel subscription`:`Delete member`}var X=i(),Ct=({open:e,onOpenChange:t,member:n,allowLeaveWithUnsavedChanges:r})=>{let i=re(),a=s(),[o,c]=Y.useState(!1);Y.useEffect(()=>{e&&c(!1)},[e]);let l=xt(n),u=n.email||n.name||`this member`,d=async()=>{try{let e=l&&o;await a.mutateAsync({id:n.id,cancel:e}),g.success(e?`${u} was deleted and their Stripe subscription was cancelled.`:`${u} was deleted.`),t(!1),r(),i(`/members`)}catch{g.error(`Couldn’t delete the member. Please try again.`)}};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{a.isPending||t(e)},children:(0,X.jsxs)(B,{"data-testid":`delete-member-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Delete member account`}),(0,X.jsxs)(R,{children:[`Permanently delete `,(0,X.jsx)(`strong`,{children:u}),` from Ghost.`]})]}),l&&(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`h4`,{className:`text-sm font-medium`,children:`Also cancel subscription in Stripe`}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If disabled, the member’s premium subscription will continue`})]}),(0,X.jsx)(Ue,{"aria-label":`Also cancel subscription in Stripe`,checked:o,"data-testid":`delete-member-cancel-stripe`,disabled:a.isPending,onCheckedChange:c})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{"data-testid":`cancel-delete-member`,disabled:a.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-delete-member`,disabled:a.isPending,variant:`destructive`,onClick:()=>void d(),children:a.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Deleting`})]}):St(o&&l)})]})]})})},wt=`Disabled from member settings`,Tt=({open:e,onOpenChange:t,member:n})=>{let r=u(),[i,a]=Y.useState(!1);Y.useEffect(()=>{e&&a(!1)},[e]);let o=n.name||n.email||`this member`,s=async()=>{try{await r.mutateAsync({id:n.id,reason:wt,hideComments:i})}catch{g.error(`Couldn’t disable commenting. Please try again.`);return}g.success(`Commenting has been disabled for ${o}.`),t(!1)};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{r.isPending||t(e)},children:(0,X.jsxs)(B,{"data-testid":`disable-commenting-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Disable commenting`}),(0,X.jsxs)(R,{children:[(0,X.jsx)(`strong`,{children:o}),` won’t be able to comment in the future. You can re-enable commenting anytime.`]})]}),(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:(0,X.jsx)(`h4`,{className:`text-sm font-medium`,children:`Hide all previous comments`})}),(0,X.jsx)(Ue,{"aria-label":`Hide all previous comments`,checked:i,"data-testid":`disable-commenting-hide-comments`,disabled:r.isPending,onCheckedChange:a})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{"data-testid":`cancel-disable-commenting`,disabled:r.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-disable-commenting`,disabled:r.isPending,onClick:()=>void s(),children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Disabling`})]}):`Disable commenting`})]})]})})},Et=({open:e,onOpenChange:t,memberId:r})=>{let i=n();Y.useEffect(()=>{e&&i.removeQueries({queryKey:[`MemberSigninUrlResponseType`]})},[e,i]);let{data:a,isFetching:o,isError:s}=m(r,{enabled:e,defaultErrorHandler:!1}),c=a?.url??``,l=s||!o&&!s&&!c,[u,d]=Y.useState(!1),f=Y.useRef(null),p=Y.useCallback(()=>{f.current!==null&&(clearTimeout(f.current),f.current=null)},[]);Y.useEffect(()=>{e||(p(),d(!1))},[e,p]),Y.useEffect(()=>p,[p]);let h=async()=>{try{await navigator.clipboard.writeText(c),d(!0),p(),f.current=setTimeout(()=>{d(!1),f.current=null},1e3)}catch{g.error(`Couldn’t copy the impersonation link`)}};return(0,X.jsx)(H,{open:e,onOpenChange:t,children:(0,X.jsxs)(B,{"data-testid":`impersonate-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Impersonate member`}),(0,X.jsx)(R,{children:`A single-use signin link that works for 24 hours. Anyone with the link can sign in as this member.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-signin-url`,children:`Signin link`}),(0,X.jsx)(W,{"data-testid":`member-signin-url`,id:`member-signin-url`,value:o?`Generating link…`:l?`Failed to generate link`:c,readOnly:!0})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{variant:`outline`,onClick:()=>t(!1),children:`Close`}),(0,X.jsx)(A,{disabled:o||l||!c,onClick:()=>void h(),children:o?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Generating link`})]}):u?`Copied`:`Copy link`})]})]})})},Dt=({open:e,onOpenChange:t,member:n})=>{let r=a(),i=n.name||n.email||`This member`,o=async()=>{try{await r.mutateAsync({id:n.id}),g.success(`${i} has been signed out from all devices.`),t(!1)}catch{g.error(`Couldn’t sign the member out. Please try again.`)}};return(0,X.jsx)(be,{open:e,onOpenChange:e=>{r.isPending||t(e)},children:(0,X.jsxs)(j,{"data-testid":`logout-member-modal`,children:[(0,X.jsxs)(ye,{children:[(0,X.jsx)(ve,{children:`Sign out member from all devices?`}),(0,X.jsxs)(_e,{children:[(0,X.jsx)(`strong`,{children:i}),` will be signed out of all active sessions, and will need to sign in again upon return.`]})]}),(0,X.jsxs)(M,{children:[(0,X.jsx)(N,{disabled:r.isPending,children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-logout-member`,disabled:r.isPending,variant:`destructive`,onClick:()=>void o(),children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Signing out`})]}):`Sign out`})]})]})})},Ot=(0,Y.createContext)(!1);function kt(e){return e.can_comment===!1}function At(e){return kt(e)?`Enable commenting`:`Disable commenting`}var jt=({member:e,allowLeaveWithUnsavedChanges:t})=>{let{isAdmin7:n}=x(),i=Y.useContext(Ot),{data:a}=r(),[s,c]=Y.useState(!1),[u,d]=Y.useState(!1),[f,p]=Y.useState(!1),[m,h]=Y.useState(!1),_=l(),v=o(),ee=_.isPending||_.isSuccess&&v,te=kt(e),ne=At(e),re=e.name||e.email||`this member`;if(!a||!Xe(a))return null;let y=async()=>{if(!te){p(!0);return}try{await _.mutateAsync({id:e.id}),g.success(`Commenting has been enabled for ${re}.`)}catch{g.error(`Couldn’t enable commenting. Please try again.`)}};return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Actions`,className:b(`size-(--control-height)`,i&&`bg-background`),"data-testid":`member-actions`,size:`icon`,variant:i?`outline`:`subtle`,children:(0,X.jsx)(de,{size:16})})}),(0,X.jsxs)(ot,{align:`end`,children:[(0,X.jsxs)(q,{"data-testid":`member-actions-impersonate`,onSelect:()=>c(!0),children:[n&&(0,X.jsx)(D,{"aria-hidden":`true`}),`Impersonate`]}),(0,X.jsxs)(q,{"data-testid":`member-actions-logout`,onSelect:()=>d(!0),children:[n&&(0,X.jsx)(E,{"aria-hidden":`true`}),`Sign out of all devices`]}),(0,X.jsxs)(q,{"data-testid":`member-actions-commenting`,disabled:ee,onSelect:()=>void y(),children:[n&&(te?(0,X.jsx)(T,{"aria-hidden":`true`}):(0,X.jsx)(ge,{"aria-hidden":`true`})),ne]}),(0,X.jsx)(at,{}),(0,X.jsxs)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`member-actions-delete`,onSelect:()=>h(!0),children:[n&&(0,X.jsx)(se,{"aria-hidden":`true`}),`Delete member`]})]})]}),(0,X.jsx)(Et,{memberId:e.id,open:s,onOpenChange:c}),(0,X.jsx)(Dt,{member:e,open:u,onOpenChange:d}),(0,X.jsx)(Tt,{member:e,open:f,onOpenChange:p}),(0,X.jsx)(Ct,{allowLeaveWithUnsavedChanges:t,member:e,open:m,onOpenChange:h})]})},Z=e(ie(),1),Mt=e(ct(),1),Nt=ht(`address`)??[];function Q(e){return{name:(e.name??``).trim(),email:(e.email??``).trim(),note:e.note??``,labels:(e.labels??[]).map(e=>({name:e.name,slug:e.slug})).sort((e,t)=>e.slug<t.slug?-1:+(e.slug>t.slug)),newsletters:(e.newsletters??[]).map(e=>e.id).sort()}}function Pt(e){let t={};for(let[n,r]of Object.entries(e??{}))for(let[e,i]of Object.entries(r??{}))t[`${n}.${e}`]=i;let n={};for(let[e,r]of Object.entries(t))if(typeof r==`string`&&r.trim()!==``)n[e]=r.trim();else if(typeof r==`object`&&r&&!Array.isArray(r)){let t=It(r);t&&(n[e]=t)}return n}function Ft(e){let t={};for(let{key:n}of Nt){let r=e[n];typeof r==`string`&&(t[n]=r.trim())}return Object.values(t).some(e=>e!==``)?t:void 0}function It(e){let t={};for(let{key:n}of Nt){let r=e[n];typeof r==`string`&&r.trim()!==``&&(t[n]=r.trim())}return Object.keys(t).length?t:void 0}function Lt(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t].sort()}function Rt(e,t){let n=e.trim();return t!==void 0&&n===t.trim()?!0:Mt.default.isEmail(n)}function zt(e,t,n){return t?e.trim()===``?`Email is required.`:Rt(e,n)?null:`Invalid email.`:null}function Bt(e){if(!e?.suppressed)return null;let t=e.info;if(!t)return{label:null};let{reason:n,timestamp:r}=t,i=(0,Z.default)(new Date(r)).format(`D MMM YYYY`);switch(n){case`fail`:return{reason:n,label:`Bounced on ${i}`};case`spam`:return{reason:n,label:`Flagged as spam on ${i}`};default:return{reason:n,label:`Email disabled on ${i}`}}}function Vt(e){return e?e.filter(e=>e.subscribe_on_signup===!0&&e.visibility===`members`).map(e=>e.id):[]}function Ht(e){return 500-[...e].length}function Ut(e,t,n){let r=Yt(t),i={id:e,name:r.name,email:r.email,note:r.note,labels:r.labels};return lt(r.newsletters,n.newsletters)||(i.newsletters=r.newsletters.map(e=>({id:e}))),i}function Wt(e){return typeof e==`string`?e.trim()||void 0:Ft(e)}function Gt(e,t,n){return{id:e,metafields:{[t.namespace]:{[t.key]:Wt(n)??null}}}}function Kt(e,t){let n={};for(let r of t){let t=e[r.key],i=t===void 0?void 0:Wt(t);if(i===void 0)continue;let a=dt[r.type];if(!a)continue;let o=a.value.safeParse(i);if(!o.success)for(let e of o.error.issues){let t=[r.namespace,r.key,...e.path].join(`.`);n[t]??=e.message}}return n}function qt(e){let t=e?.data,n={};for(let e of t?.errors??[])e.property?.startsWith(`metafields.`)&&(n[e.property.slice(11)]=e.context||e.message||`Invalid value.`);return Object.keys(n).length?n:void 0}function Jt(e,t){return e.map(e=>t.get(e)??{name:e,slug:e})}function Yt(e){return{name:e.name.trim(),email:e.email.trim(),note:e.note,labels:e.labels,newsletters:e.newsletters}}function Xt(e,t){return!e||!!t&<(Yt(e),t)}var Zt=({message:e})=>e?(0,X.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:e}):null,Qt=({id:e,label:t,value:n,invalid:r,disabled:i,onChange:a})=>{let[o,s]=Y.useState(!1);return(0,X.jsxs)(Me,{open:o,modal:!0,onOpenChange:s,children:[(0,X.jsx)(je,{"aria-invalid":r||void 0,"aria-label":t,disabled:i,id:e,children:(0,X.jsx)(ke,{placeholder:!n,children:n?gt(n):`Select...`})}),(0,X.jsx)(Ae,{children:(0,X.jsx)(Oe,{i18n:{searchPlaceholder:`Search countries...`},isMultiSelect:!1,options:mt(n),values:n?[n]:[],autoCloseOnSelect:!0,onChange:e=>a(e[0]??``),onClose:()=>s(!1)})})]})},$t=({inputId:e,value:t,errors:n,disabled:r,onChange:i})=>(0,X.jsx)(`div`,{className:`grid gap-x-4 gap-y-3 md:grid-cols-2`,children:Nt.map(({key:a,label:o,type:s})=>{let c=`${e}-${a}`,l=n?.[a];return(0,X.jsxs)(`div`,{className:b(`flex flex-col gap-1.5`,(a===`line1`||a===`line2`)&&`md:col-span-2`),children:[(0,X.jsx)(U,{htmlFor:c,children:o}),s===`country_code`?(0,X.jsx)(Qt,{disabled:r,id:c,invalid:!!l,label:o,value:t[a],onChange:e=>i({...t,[a]:e})}):(0,X.jsx)(W,{"aria-invalid":l?!0:void 0,disabled:r,id:c,value:t[a]??``,onChange:e=>i({...t,[a]:e.target.value})}),(0,X.jsx)(Zt,{message:l})]},a)})});function en(e){return null}var tn=({field:e,inputId:t,value:n,errors:r,disabled:i,onChange:a})=>{let o=r?.[``],{input:s}=_t(e);switch(s){case`text`:return(0,X.jsx)(W,{"aria-invalid":o?!0:void 0,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`textarea`:return(0,X.jsx)(We,{"aria-invalid":o?!0:void 0,className:`max-w-full resize-y`,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`address`:return(0,X.jsx)($t,{disabled:i,errors:r,inputId:t,value:typeof n==`object`&&n?n:{},onChange:a});default:return en(s)}},nn=({memberId:e,field:t,initialValue:n,onClose:r})=>{let i=_t(t).input===`address`,[a,o]=Y.useState(n??(i?{}:``)),[s,c]=Y.useState(!1),[l,u]=Y.useState(),d=p(),f=Kt({[t.key]:a},[t]),m={...s?f:{},...l},h=Object.fromEntries(Object.entries(m).map(([e,n])=>[e===`${t.namespace}.${t.key}`?``:e.slice(`${t.namespace}.${t.key}`.length+1),n])),_=`member-custom-field-${t.key}`,v=!lt(Pt({[t.namespace]:{[t.key]:a}}),Pt({[t.namespace]:{[t.key]:n}}));return(0,X.jsx)(H,{open:!0,onOpenChange:e=>{!e&&!d.isPending&&r()},children:(0,X.jsxs)(B,{"data-testid":`member-custom-field-edit-modal`,onEscapeKeyDown:e=>{(v||d.isPending)&&e.preventDefault()},onInteractOutside:e=>{(v||d.isPending)&&e.preventDefault()},children:[(0,X.jsx)(z,{children:(0,X.jsx)(V,{children:t.name})}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[!i&&(0,X.jsx)(U,{className:`sr-only`,htmlFor:_,children:t.name}),(0,X.jsx)(tn,{disabled:d.isPending,errors:h,field:t,inputId:_,value:a,onChange:e=>{u(void 0),o(e)}}),(0,X.jsx)(Zt,{message:h[``]})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{disabled:d.isPending,variant:`outline`,onClick:r,children:`Cancel`}),(0,X.jsx)(A,{className:`min-w-16`,disabled:d.isPending,onClick:()=>{if(!d.isPending){if(!v){r();return}if(Object.keys(f).length>0){c(!0);return}d.mutate(Gt(e,t,a),{onSuccess:()=>{g.success(`${t.name} saved`),r()},onError:e=>{let n=qt(e);u(n),n||g.error(`${t.name} couldn’t be saved`)}})}},children:d.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):`Save`})]})]})})},rn=({memberId:e,metafields:t,disabled:n})=>{let{data:r,isLoading:i}=yt(),a=r??[],o=Pt(t),[s,c]=Y.useState(null);return i||a.length===0?null:(0,X.jsxs)(`section`,{"aria-labelledby":`member-custom-fields-heading`,className:`flex flex-col gap-3`,"data-testid":`member-custom-fields-field`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-custom-fields-heading`,children:`Custom fields`}),(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`px-6 py-4`,children:(0,X.jsx)(`ul`,{children:a.map(e=>{let t=vt(e.type,o[`${e.namespace}.${e.key}`])||null;return(0,X.jsx)(`li`,{className:`border-b border-border transition-colors last:border-b-0 hover:border-b-transparent [&:has(+li:hover)]:border-b-transparent`,children:(0,X.jsxs)(`button`,{"aria-label":t?`Edit ${e.name}: ${t}`:`Edit ${e.name}`,className:`group -mx-3 flex w-[calc(100%+1.5rem)] items-center justify-between gap-4 rounded-md p-3 text-left transition-colors hover:bg-table-row-hover disabled:cursor-not-allowed disabled:opacity-50`,disabled:n,type:`button`,onClick:()=>{window.getSelection()?.toString()||c(e)},children:[(0,X.jsxs)(`span`,{className:`min-w-0`,children:[(0,X.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:e.name}),t?(0,X.jsx)(`span`,{className:`block break-words select-text`,children:t}):(0,X.jsx)(`span`,{className:`block text-muted-foreground`,children:`–`})]}),(0,X.jsx)(fe,{"aria-hidden":`true`,className:`shrink-0 text-muted-foreground opacity-0 transition-all group-hover:opacity-100 group-focus-visible:opacity-100`,size:16})]})},e.key)})})})}),s&&(0,X.jsx)(nn,{field:s,initialValue:o[`${s.namespace}.${s.key}`],memberId:e,onClose:()=>c(null)},s.key)]})},an=({labels:e,disabled:t,onChange:n})=>{let r=e.map(e=>e.slug),i=Y.useRef(e);i.current=e;let a=Y.useRef(new Map),o=e=>{for(let t of e)a.current.set(t.slug,{name:t.name,slug:t.slug})};o(e);let s=Ke({selectedSlugs:r,onSelectionChange:e=>n(Jt(e,a.current))});o(s.labels);let c=async e=>{let t=await s.createLabel(e);if(t){let e={name:t.name,slug:t.slug};a.current.set(t.slug,e),n([...i.current.filter(e=>e.slug!==t.slug),e])}return t};return(0,X.jsx)(`div`,{className:t?`pointer-events-none opacity-60`:void 0,"data-testid":`member-labels-field`,...t?{inert:``}:{},children:(0,X.jsx)(Je,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,placeholder:``,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:r,onCreate:c,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel})})},on=({draft:e,emailError:t,disabled:n,onChange:r,onEmailBlur:i,onNameBlur:a})=>{let o=Ht(e.note),s=500-o,c=o<0?`text-destructive`:s>=500*.8?`text-state-warning`:`text-state-success`;return(0,X.jsxs)(`div`,{className:`grid items-stretch gap-6 md:grid-cols-2`,"data-testid":`member-detail-form`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-name`,children:`Name`}),(0,X.jsx)(W,{disabled:n,id:`member-name`,value:e.name,onBlur:a,onChange:e=>r({name:e.target.value})})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-email`,children:`Email`}),(0,X.jsx)(W,{"aria-invalid":!!t,disabled:n,id:`member-email`,type:`email`,value:e.email,onBlur:i,onChange:e=>r({email:e.target.value})}),t&&(0,X.jsx)(`p`,{className:`text-sm text-destructive`,children:t})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{children:`Labels`}),(0,X.jsx)(an,{disabled:n,labels:e.labels,onChange:e=>r({labels:e})})]})]}),(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-1.5`,children:[(0,X.jsxs)(U,{htmlFor:`member-note`,children:[`Note `,(0,X.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(not visible to member)`})]}),(0,X.jsxs)(Ie,{className:`flex-1`,children:[(0,X.jsx)(Fe,{className:`h-full`,disabled:n,id:`member-note`,value:e.note,onChange:e=>r({note:e.target.value})}),(0,X.jsx)(Pe,{align:`block-end`,className:`justify-end`,children:(0,X.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Maximum: `,(0,X.jsx)(`span`,{className:`font-semibold text-foreground`,children:500}),` `,`characters. You’ve used`,` `,(0,X.jsx)(`span`,{className:b(`font-semibold`,c),children:s})]})})]})]})]})};function sn(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function cn(e){let t=sn(e);return t?t.country_code===`US`&&t.region?`${t.region}, US`:t.country||`Unknown location`:`Unknown location`}function ln(e){let t=e?.referrer_source;return!t||t===`Created manually`?null:t}var un=e=>Z.default.utc(e).format(`D MMM YYYY`),$=({icon:e,children:t})=>(0,X.jsxs)(`p`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e}),(0,X.jsx)(`span`,{className:`min-w-0 truncate`,children:t})]}),dn=e=>e.split(` `)[0]||``,fn=({member:e,draftName:t,draftEmail:n,engagementEnabled:r,showIdentity:i=!0})=>{let a=(t??e?.name??``).trim(),o=(n??e?.email??``).trim(),s=a||o||`New member`,c=!e;return(0,X.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col gap-6 lg:w-80`,"data-testid":`member-detail-sidebar`,children:[i&&(0,X.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,X.jsx)(xe,{className:`size-12 min-w-12 [&_span]:text-lg`,...qe({name:a,email:o}),src:e?.avatar_image}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`h2`,{className:`truncate text-xl font-semibold`,children:s}),a&&o&&(0,X.jsx)(`a`,{className:`block truncate text-muted-foreground hover:underline`,href:`mailto:${o}`,children:o}),!a&&o&&(0,X.jsx)(`span`,{className:`block truncate text-muted-foreground`,children:o})]})]}),!c&&e&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-2 text-sm`,children:[(0,X.jsx)($,{icon:(0,X.jsx)(C,{size:16}),children:(0,X.jsx)(`span`,{"data-testid":`member-detail-location`,children:cn(e.geolocation)})}),(0,X.jsx)($,{icon:(0,X.jsx)(me,{size:16}),children:e.last_seen_at?`Last seen on ${un(e.last_seen_at)}`:`Not seen yet`}),e.can_comment===!1&&(0,X.jsx)($,{icon:(0,X.jsx)(le,{size:16}),children:`Comments disabled`})]}),(0,X.jsxs)(`div`,{className:`mt-4 flex flex-col gap-3 text-sm`,children:[(0,X.jsx)(`h3`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Signup info`}),(0,X.jsxs)($,{icon:(0,X.jsx)(pe,{size:16}),children:[`Created — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:un(e.created_at)})]}),(()=>{let t=ln(e.attribution);return t?(0,X.jsxs)($,{icon:(0,X.jsx)(he,{size:16}),children:[`Source —`,` `,(0,X.jsx)(`span`,{className:`text-foreground`,title:t,children:t})]}):null})(),e.attribution?.title&&(0,X.jsxs)($,{icon:(0,X.jsx)(ue,{size:16}),children:[`Page —`,` `,ft(e.attribution.url)?(0,X.jsx)(`a`,{className:`truncate text-foreground hover:underline`,href:e.attribution.url,rel:`noopener noreferrer`,target:`_blank`,title:e.attribution.title,children:e.attribution.title}):(0,X.jsx)(`span`,{className:`truncate text-foreground`,title:e.attribution.title,children:e.attribution.title})]})]}),r&&(0,X.jsxs)(`section`,{className:`mt-4 flex flex-col gap-3 text-sm`,"data-testid":`member-detail-engagement`,children:[(0,X.jsx)(`h4`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Engagement`}),(e.email_count??0)===0?(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:a?`We’ll show ${dn(a)}’s email stats here once they receive their first newsletter.`:`We’ll show this member’s email stats here once they receive their first newsletter.`}):(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails received`}),(0,X.jsx)(`p`,{className:`text-2xl font-semibold`,children:y(e.email_count??0)})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails opened`}),(0,X.jsx)(`p`,{className:`text-2xl font-semibold`,children:y(e.email_opened_count??0)})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Average open rate`}),e.email_open_rate===null||e.email_open_rate===void 0?(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`This metric is calculated once a member has received 5 newsletters.`}):(0,X.jsxs)(`p`,{className:`text-2xl font-semibold`,children:[y(e.email_open_rate),(0,X.jsx)(`span`,{className:`text-base font-normal text-muted-foreground`,children:`%`})]})]})]})]})]})]})},pn=({memberId:e,emailSuppression:t,subscribedIds:n,disabled:r,onChange:i})=>{let a=e?Bt(t):null,s=h(),{data:c,isLoading:l}=Ze({searchParams:{filter:`status:active`,limit:`50`}}),u=c?.newsletters??[],d=o(),f=s.isPending||s.isSuccess&&d;return!a&&(l||u.length===0)?null:(0,X.jsxs)(`section`,{"aria-labelledby":`member-newsletters-heading`,className:`flex flex-col gap-3`,"data-testid":`member-newsletters-field`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-newsletters-heading`,children:`Newsletters`}),(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`p-6`,children:a?(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,"data-testid":`member-suppression-banner`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,X.jsx)(ce,{className:`mt-0.5 shrink-0 text-muted-foreground`,size:20}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:`Email disabled`}),a.label&&(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a.label}),(0,X.jsx)(`a`,{className:`text-sm text-muted-foreground hover:underline`,href:`https://ghost.org/help/disabled-emails`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]}),(0,X.jsx)(A,{disabled:r||f,onClick:()=>{e&&s.mutate({id:e},{onSuccess:()=>g.success(`Email re-enabled successfully`),onError:()=>g.error(`Failed to re-enable email. Please try again.`)})},children:f?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Re-enabling email`})]}):`Re-enable email`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ul`,{className:`divide-y divide-border`,children:u.map(e=>{let t=n.includes(e.id);return(0,X.jsxs)(`li`,{className:`flex items-center justify-between gap-4 py-3 first:pt-0 last:pb-0`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:e.name}),e.description&&(0,X.jsx)(`p`,{className:`truncate text-sm text-muted-foreground`,children:e.description})]}),(0,X.jsx)(Ue,{"aria-label":`Subscribe to ${e.name}`,checked:t,"data-testid":`member-subscription-toggle`,disabled:r,onCheckedChange:()=>i(Lt(n,e.id))})]},e.id)})}),(0,X.jsxs)(`p`,{className:`mt-4 text-sm text-muted-foreground`,children:[`If disabled, member will `,(0,X.jsx)(`em`,{children:`not`}),` receive newsletter emails`]})]})})})]})},mn=`complimentary`,hn=`gift subscription`;function gn(e){if(e.id)return`paid`;let t=e.plan?.nickname?.toLowerCase()??``;return t===mn?`complimentary`:t===hn?`gift`:`paid`}function _n(e){return e===`year`?`yearly`:`monthly`}function vn(e){if(e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`))return`Free trial`;let t=e.price?.nickname;return t&&t!==`Monthly`&&t!==`Yearly`?t:null}function yn(e){return e.status===`canceled`||e.cancel_at_period_end?`Canceled`:`Active`}var bn=e=>e?(0,Z.default)(new Date(e)).format(`D MMM YYYY`):``,xn=e=>e?(0,Z.default)(e).utc().format(`D MMM YYYY`):``;function Sn(e){let t=gn(e);if(t===`complimentary`||t===`gift`){let t=xn(e.tier?.expiry_at);return t?`Expires ${t}`:``}let n=e.status===`canceled`&&!e.cancel_at_period_end?``:bn(e.current_period_end);return e.status===`canceled`?n?`Ended ${n}`:``:e.cancel_at_period_end?n?`Has access until ${n}`:``:e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`)?`Ends ${bn(e.trial_end_at)}`:n?`Renews ${n}`:``}function Cn(e){let t=[],n=new Map;for(let r of e){if(!r.price)continue;let e=r.tier??r.price.tier;if(!e?.id)continue;let i=n.get(e.id);i||(i={tier:e,subscriptions:[]},n.set(e.id,i),t.push(i)),i.subscriptions.push(r)}return t}var wn=[`forever`,`week`,`month`,`half-year`,`year`,`custom`];function Tn(e){return wn.includes(e)}function En(e,t){switch(e){case`forever`:return null;case`week`:return Z.default.utc().add(7,`days`).startOf(`day`).toISOString();case`month`:return Z.default.utc().add(1,`month`).startOf(`day`).toISOString();case`half-year`:return Z.default.utc().add(6,`months`).startOf(`day`).toISOString();case`year`:return Z.default.utc().add(1,`year`).startOf(`day`).toISOString();case`custom`:return t?(0,Z.default)(t,`YYYY-MM-DD`).startOf(`day`).endOf(`day`).set(`millisecond`,0).add((0,Z.default)().utcOffset(),`minutes`).toISOString():null}}var Dn=new Set([`active`,`trialing`,`unpaid`,`past_due`]),On=[{value:`forever`,label:`Forever`},{value:`week`,label:`1 Week`},{value:`month`,label:`1 Month`},{value:`half-year`,label:`6 Months`},{value:`year`,label:`1 Year`},{value:`custom`,label:`Custom`}],kn=({open:e,onOpenChange:t,member:n})=>{let{data:r,isLoading:i}=$e({searchParams:{filter:`type:paid+active:true`,limit:`all`}}),a=r?.tiers??[],[o,s]=Y.useState(``),[l,u]=Y.useState(`forever`),[d,f]=Y.useState(``);Y.useEffect(()=>{e&&(s(``),u(`forever`),f(``))},[e]);let m=c(),h=p(),[_,v]=Y.useState(!1),ee=(n.subscriptions??[]).filter(e=>gn(e)===`paid`&&Dn.has(e.status)),te=(0,Z.default)().format(`YYYY-MM-DD`),ne=!!o&&!_&&(l!==`custom`||!!d),re=async()=>{if(ne){v(!0);try{for(let e of ee)await m.mutateAsync({memberId:n.id,subscriptionId:e.id,status:`canceled`});let e=En(l,l===`custom`?d:null),r=e?{id:o,expiry_at:e}:{id:o};await h.mutateAsync({id:n.id,...n.email?{email:n.email}:{},tiers:[r]}),g.success(`Complimentary subscription added`),t(!1)}catch{g.error(`Couldn’t add complimentary subscription`)}finally{v(!1)}}};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{_||t(e)},children:(0,X.jsxs)(B,{"data-testid":`add-comp-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Add complimentary subscription`}),(0,X.jsx)(R,{children:`Grants this member access to a paid tier for the chosen duration. Any active paid subscription is canceled first.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-tier`,children:`Tier`}),(0,X.jsxs)(He,{value:o,onValueChange:s,children:[(0,X.jsx)(Be,{"data-testid":`comp-tier-select`,disabled:i||_,id:`comp-tier`,children:(0,X.jsx)(Ve,{placeholder:i?`Loading tiers…`:`Select a tier`})}),(0,X.jsx)(ze,{children:a.map(e=>(0,X.jsx)(Re,{"data-tier-id":e.id,value:e.id,children:e.name},e.id))})]})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-duration`,children:`Duration`}),(0,X.jsxs)(He,{value:l,onValueChange:e=>{Tn(e)&&u(e)},children:[(0,X.jsx)(Be,{"data-testid":`comp-duration-select`,disabled:_,id:`comp-duration`,children:(0,X.jsx)(Ve,{})}),(0,X.jsx)(ze,{children:On.map(e=>(0,X.jsx)(Re,{value:e.value,children:e.label},e.value))})]})]}),l===`custom`&&(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-custom-date`,children:`Expires on`}),(0,X.jsx)(W,{"data-testid":`comp-custom-date`,disabled:_,id:`comp-custom-date`,min:te,type:`date`,value:d,onChange:e=>f(e.target.value)})]})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{disabled:_,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`comp-add-confirm`,disabled:!ne,onClick:()=>void re(),children:_?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Adding`})]}):`Add subscription`})]})]})})},An=({memberId:e,subscription:t})=>{let{isAdmin7:n}=x(),r=c(),i=o(),a=r.isPending||r.isSuccess&&i,s=t.status===`canceled`,l=t.cancel_at_period_end,u=(n,i,a)=>{r.mutate({memberId:e,subscriptionId:t.id,cancelAtPeriodEnd:n},{onSuccess:()=>g.success(i),onError:()=>g.error(a)})};return(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:a,size:n?`icon`:`sm`,variant:`subtle`,children:a?(0,X.jsx)(G,{size:`sm`}):(0,X.jsx)(de,{})})}),(0,X.jsxs)(ot,{align:`end`,children:[(0,X.jsx)(q,{asChild:!0,children:(0,X.jsx)(`a`,{href:`https://dashboard.stripe.com/customers/${t.customer.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe customer`})}),(0,X.jsx)(at,{}),(0,X.jsx)(q,{asChild:!0,children:(0,X.jsx)(`a`,{href:`https://dashboard.stripe.com/subscriptions/${t.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe subscription`})}),!s&&(l?(0,X.jsx)(q,{"data-testid":`continue-subscription`,onSelect:()=>u(!1,`Subscription continued`,`Couldn’t continue subscription`),children:`Continue subscription`}):(0,X.jsx)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`cancel-subscription`,onSelect:()=>u(!0,`Subscription canceled`,`Couldn’t cancel subscription`),children:`Cancel subscription`}))]})]})},jn=({member:e,tierId:t})=>{let{isAdmin7:n}=x(),r=p(),[i,a]=Y.useState(!1),s=o(),c=r.isPending||r.isSuccess&&s;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:c,size:n?`icon`:`sm`,variant:`subtle`,children:c?(0,X.jsx)(G,{size:`sm`}):(0,X.jsx)(de,{})})}),(0,X.jsx)(ot,{align:`end`,children:(0,X.jsx)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`remove-complimentary`,onSelect:()=>a(!0),children:`Remove complimentary subscription`})})]}),(0,X.jsx)(be,{open:i,onOpenChange:e=>{r.isPending||a(e)},children:(0,X.jsxs)(j,{children:[(0,X.jsxs)(ye,{children:[(0,X.jsx)(ve,{children:`Remove complimentary subscription?`}),(0,X.jsx)(_e,{children:`The member will lose access to this tier immediately.`})]}),(0,X.jsxs)(M,{children:[(0,X.jsx)(N,{disabled:r.isPending,children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-remove-complimentary`,disabled:r.isPending,variant:`destructive`,onClick:()=>{let n=(e.tiers??[]).filter(e=>e.id!==t).map(e=>({id:e.id,expiry_at:e.expiry_at??null}));r.mutate({id:e.id,email:e.email,tiers:n},{onSuccess:()=>{g.success(`Complimentary subscription removed`),a(!1)},onError:()=>g.error(`Couldn’t remove complimentary subscription`)})},children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Removing`})]}):`Remove`})]})]})})]})},Mn=e=>{let t=e/100;return t.toLocaleString(void 0,t%1==0?void 0:{minimumFractionDigits:2,maximumFractionDigits:2})},Nn=({sub:e,kind:t})=>{if(t===`complimentary`||t===`gift`)return(0,X.jsx)(`div`,{className:`flex size-20 shrink-0 items-center justify-center rounded-lg bg-muted text-center text-sm font-medium text-muted-foreground`,children:t===`complimentary`?`Comp`:`Gift`});let n=_(e.price.currency),r=Mn(e.price.amount),i=_n(e.price.interval);return(0,X.jsxs)(`div`,{className:`flex size-20 shrink-0 flex-col items-center justify-center rounded-lg bg-muted text-foreground`,children:[(0,X.jsxs)(`div`,{className:`flex items-start leading-none`,children:[(0,X.jsx)(`span`,{className:`mt-1 text-sm font-semibold`,children:n}),(0,X.jsx)(`span`,{className:`text-3xl font-semibold tracking-tight`,children:r})]}),(0,X.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:i})]})},Pn=e=>e?Z.default.utc(e).format(`D MMM YYYY`):``,Fn=({sub:e})=>{let t=Pn(e.start_date),n=e.attribution?.referrer_source,r=n&&n!==`Unknown`,i=e.attribution?.title?{title:e.attribution.title,url:e.attribution.url??null}:null;return(0,X.jsxs)(`div`,{className:`mt-3 space-y-1 border-t border-border pt-3 text-sm text-muted-foreground`,children:[t&&(0,X.jsxs)(`p`,{children:[`Created — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:t})]}),r&&(0,X.jsxs)(`p`,{children:[`Source — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:n})]}),i&&(0,X.jsxs)(`p`,{children:[`Page —`,` `,ft(i.url)?(0,X.jsx)(`a`,{className:`text-foreground hover:underline`,href:i.url,rel:`noopener noreferrer`,target:`_blank`,children:i.title}):(0,X.jsx)(`span`,{className:`text-foreground`,children:i.title})]})]})},In=({member:e,sub:t,showDivider:n})=>{let[r,i]=Y.useState(!1),a=gn(t),o=yn(t),s=Sn(t),c=vn(t);return(0,X.jsxs)(`div`,{className:b(`flex items-start justify-between gap-4 py-5 first:pt-0 last:pb-0`,n&&`border-t border-border`),"data-testid":`member-subscription`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-4`,children:[(0,X.jsx)(Nn,{kind:a,sub:t}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 pt-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`min-w-0 truncate font-semibold`,"data-testid":`member-subscription-tier`,children:t.tier?.name??`Subscription`}),(0,X.jsx)(P,{"data-testid":`member-subscription-status`,variant:o===`Canceled`?`secondary`:`success`,children:o})]}),(c||s)&&(0,X.jsxs)(`div`,{className:`mt-1 text-sm`,children:[c&&(0,X.jsx)(`span`,{className:`font-semibold text-foreground`,children:c}),c&&s&&(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:` – `}),s&&(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:s})]}),(0,X.jsxs)(`button`,{"aria-expanded":r,className:`mt-1 inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline`,"data-testid":`member-subscription-details-toggle`,type:`button`,onClick:()=>i(e=>!e),children:[`Details`,(0,X.jsx)(O,{className:b(`transition-transform`,r&&`rotate-180`),size:14})]}),r&&(0,X.jsx)(Fn,{sub:t})]})]}),a===`paid`&&(0,X.jsx)(An,{memberId:e.id,subscription:t}),a===`complimentary`&&t.tier?.id&&(0,X.jsx)(jn,{member:e,tierId:t.tier.id})]})},Ln=({member:e,canAddComp:t})=>{let[n,r]=Y.useState(!1);if(!e)return(0,X.jsx)(I,{"data-testid":`member-subscriptions`,children:(0,X.jsx)(F,{className:`pt-6`,children:(0,X.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,X.jsx)(Ne,{title:`No subscriptions`,children:(0,X.jsx)(w,{})})})})});let i=Cn(e.subscriptions??[]),a=i.length>0,o=t&&(e.tiers?.length??0)===0,s=o?(0,X.jsxs)(A,{"data-testid":`add-complimentary`,variant:`outline`,onClick:()=>r(!0),children:[(0,X.jsx)(k,{className:`mr-1`,size:16}),`Add complimentary subscription`]}):null;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(I,{"data-testid":`member-subscriptions`,children:(0,X.jsx)(F,{className:`pt-6`,children:a?(0,X.jsxs)(X.Fragment,{children:[i.map(t=>(0,X.jsxs)(`div`,{className:`flex flex-col`,children:[t.subscriptions.map((n,r)=>(0,X.jsx)(In,{member:e,showDivider:r>0,sub:n},n.id||`${t.tier.id}-${r}`)),t.subscriptions.length>1&&(0,X.jsxs)(`div`,{className:`pt-3 text-sm text-muted-foreground`,children:[t.subscriptions.length,` subscriptions`]})]},t.tier.id)),s&&(0,X.jsx)(`div`,{className:`mt-4 flex justify-center border-t border-border pt-4`,children:s})]}):(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:[(0,X.jsx)(Ne,{title:`No subscriptions`,children:(0,X.jsx)(w,{})}),s]})})}),o&&(0,X.jsx)(kn,{member:e,open:n,onOpenChange:r})]})};function Rn({atlas:e,country:t,region:n}){let r=t.id===`us`,i=typeof n==`string`?n.trim().toLowerCase().replace(/^us-/,``):``,a=r?e.states.find(e=>e.id===`us-${i}`||e.name.toLowerCase()===i||e.id===`us-dc`&&[`washington, dc`,`washington dc`,`washington, d.c.`,`d.c.`].includes(i)):void 0,o=a??t,s=!r||!!a,c=a?`${a.name}, US — approximate state location`:`${t.name} — approximate country location`,l=(0,Y.useId)(),u=(0,Y.useRef)(null),[d,f]=(0,Y.useState)(`0 0 360 360`),[p,,m]=d.split(` `).map(Number);return(0,Y.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>{let[,,t,n]=o.bounds,i=Math.max(e.clientWidth,1)/Math.max(e.clientHeight,1),[s,c]=o.anchor,l=r&&!a?1.2:3,u=Math.max(n*l,t*l/i,18)*1.15,d=u*i;f(`${s-d/2} ${c-u/2} ${d} ${u}`)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[o,r,a]),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`svg`,{ref:u,"aria-hidden":`true`,className:`size-full bg-muted dark:bg-muted/45`,"data-map-kind":`world`,"data-testid":`member-location-map`,preserveAspectRatio:`xMidYMid slice`,viewBox:d,children:[(0,X.jsxs)(`g`,{id:l,children:[e.countries.map(e=>(0,X.jsx)(`path`,{className:`fill-background stroke-border-default`,d:e.path,"data-location":e.id,strokeWidth:.7,vectorEffect:`non-scaling-stroke`},e.id)),r&&e.states.map(e=>(0,X.jsx)(`path`,{className:`fill-none stroke-border-default`,d:e.path,"data-location":e.id,strokeWidth:.7,vectorEffect:`non-scaling-stroke`},e.id))]}),p<0&&(0,X.jsx)(`use`,{href:`#${l}`,transform:`translate(-360 0)`}),p+m>360&&(0,X.jsx)(`use`,{href:`#${l}`,transform:`translate(360 0)`})]}),s&&(0,X.jsx)(S,{"aria-label":c,className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-full`,role:`img`,children:(0,X.jsx)(C,{className:`size-8 fill-foreground text-background drop-shadow-sm`,strokeWidth:1.5})})]})}function zn({geolocation:e,children:t}){let n=sn(e),r=typeof n?.country_code==`string`?n.country_code.trim().toLowerCase():``,[i,a]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{if(!r)return;let e=!0;return v(()=>import(`./world-states-Bb63Q180.js`).then(t=>{e&&a(t.default)},()=>{}),[],import.meta.url),()=>{e=!1}},[r]);let o=i?.countries.find(e=>e.id===r);return(0,X.jsxs)(S,{className:b(`relative isolate overflow-hidden rounded-xl`,o?`[&_[data-page-header=main]]:items-end`:`[&_[data-page-header=main]]:items-start`,o&&`-mt-5 -mr-[calc((100cqw-100%)/2-8px)] -ml-[calc((100cqw-100%)/2-var(--member-map-left-inset,8px))] rounded-t-xl rounded-b-none pt-40 pr-[calc((100cqw-100%)/2-8px)] pb-5 pl-[calc((100cqw-100%)/2-var(--member-map-left-inset,8px))]`,o&&`[&_[data-page-header=primary]]:ms-1`,o&&`max-sm:[&_[data-page-header=actions]]:absolute max-sm:[&_[data-page-header=actions]]:top-4 max-sm:[&_[data-page-header=actions]]:right-4`,o&&`max-sm:pt-49 max-sm:[&_[aria-label=breadcrumb]]:absolute max-sm:[&_[aria-label=breadcrumb]]:top-4 max-sm:[&_[aria-label=breadcrumb]]:right-40 max-sm:[&_[aria-label=breadcrumb]]:left-4 max-sm:[&_[aria-label=breadcrumb]>ol]:flex-nowrap max-sm:[&_[aria-label=breadcrumb]>ol>li:last-child]:min-w-0`),"data-member-map-location":o?`known`:`unknown`,"data-testid":`member-location-map-header`,children:[i&&o&&(0,X.jsx)(S,{className:`pointer-events-none absolute inset-0 -z-10 overflow-hidden [mask-image:linear-gradient(to_bottom,black_70%,transparent)]`,children:(0,X.jsx)(Rn,{atlas:i,country:o,region:n?.region})}),(0,X.jsx)(Ot.Provider,{value:!!o,children:t})]})}var Bn=class extends Y.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}};function Vn({enabled:e,children:t,geolocation:n}){return e?(0,X.jsx)(Bn,{fallback:t,children:(0,X.jsx)(zn,{geolocation:n,children:t})}):t}function Hn(e){let t=new URLSearchParams(e),n=t.get(`back`);if(n&&n.startsWith(`/members`))return n;let r=t.get(`post`);return r?`/members?post=${encodeURIComponent(r)}`:`/members`}var Un=`new`,Wn=({paidMembersEnabled:e,newslettersUiEnabled:t,engagementEnabled:n})=>{let{member_id:r=``}=ee(),i=ne(),a=re(),o=Hn(i.search),s=r===Un,{data:c,isLoading:l,error:u,refetch:m}=d(r,{enabled:!!r&&!s,searchParams:{include:`tiers`},defaultErrorHandler:!1}),h=c?.members?.[0],_=!!h,v=!s&&!l&&!!u,y=!s&&!l&&!u&&!h,ie=p(),b=f(),x=s?b:ie,{data:se}=$e({searchParams:{filter:`type:paid+active:true`,limit:`all`},enabled:e}),ce=(se?.tiers?.length??0)>0,{data:C}=Ze({searchParams:{filter:`status:active`,limit:`50`}}),le=C!==void 0,ue=(C?.newsletters?.length??0)>1,de=(se?.tiers?.length??0)>1,[w,T]=Y.useState(void 0),E=Y.useRef(void 0),D=Y.useRef(void 0),O=Y.useRef(!1);Y.useEffect(()=>{if(s){if(E.current!==Un){E.current=Un,O.current=!1;let e=Q({});D.current=e,T(e)}return}if(!h)return;let e=Q(h);if(E.current!==h.id){E.current=h.id,D.current=e,T(e);return}let t=D.current;D.current=e,T(n=>Xt(n,t)?e:n)},[h,s]),Y.useEffect(()=>{if(!s||O.current||!C?.newsletters)return;O.current=!0;let e=Vt(C.newsletters);if(e.length===0)return;let t={...D.current??Q({}),newsletters:[...e].sort()};D.current=t,T(t=>t&&{...t,newsletters:[...e].sort()})},[s,C]);let fe=s?D.current:h?Q(h):void 0,k=!!w&&!!fe&&!lt(Yt(w),fe),{dialogProps:pe,bypassNextNavigation:me}=ut({when:k,confirmUnloadWhen:x.isPending||k}),he=!!w&&Rt(w.email,h?.email??void 0),[ge,_e]=Y.useState(!1);Y.useEffect(()=>{_e(!1)},[h?.id,s]);let ve=w?zt(w.email,ge,h?.email??void 0):null,[j,M]=Y.useState({name:``,email:``});Y.useEffect(()=>{if(s){M({name:``,email:``});return}h&&M({name:h.name??``,email:h.email??``})},[h?.id,h?.name,h?.email,s]);let N=()=>{w&&M({name:w.name,email:w.email})},ye=e=>{x.isError&&x.reset(),T(t=>t&&{...t,...e})},be=()=>{if(!(!w||!k||!he||x.isPending)){if(N(),s){b.mutate({email:w.email.trim(),name:w.name.trim()||void 0,note:w.note.trim()||void 0,labels:w.labels.length?w.labels:void 0,newsletters:O.current?w.newsletters.map(e=>({id:e})):void 0},{onSuccess:e=>{let t=e.members?.[0];if(!t){g.error(`Member couldn’t be created`);return}me(),g.success(`Member created`),a(`/members/${t.id}`,{replace:!0})},onError:()=>{g.error(`Member couldn’t be created`)}});return}!h||E.current!==h.id||ie.mutate(Ut(h.id,w,Q(h)),{onSuccess:e=>{let t=e.members?.[0];if(t){let e=Q(t);D.current=e,T(e)}g.success(`Member updated`)},onError:()=>{g.error(`Member couldn’t be saved`)}})}},P=`Save`,L=`default`,R=!0;x.isPending?P=(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):k?(P=x.isError?`Retry`:`Save`,L=x.isError?`destructive`:`default`,R=!he):!s&&ie.isSuccess&&(P=`Saved`);let z=!!w&&(s||!!h),B=`Member`;return s?B=`New member`:h?B=Ge(h):y&&(B=`Member not found`),(0,X.jsx)(S,{className:_?`[container-type:inline-size] size-full sidebar:[--member-map-left-inset:0px]`:`size-full`,children:(0,X.jsx)(ae,{className:`relative flex h-full flex-col`,size:`page`,children:(0,X.jsxs)(J,{"data-testid":`member-detail`,children:[(0,X.jsx)(J.Header,{className:`has-[[data-member-map-location=unknown]]:py-7`,children:(0,X.jsx)(Vn,{enabled:_,geolocation:h?.geolocation,children:(0,X.jsxs)(K,{blurredBackground:!1,sticky:!1,children:[(0,X.jsxs)(K.Left,{children:[(0,X.jsx)(De,{children:(0,X.jsxs)(Ce,{children:[(0,X.jsx)(we,{children:(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsx)(te,{"data-test-link":`members-back`,state:Ye(o),to:o,children:`Members`})})}),(0,X.jsx)(Te,{}),(0,X.jsx)(we,{children:!s&&l?(0,X.jsx)(Le,{className:`h-4 w-40`}):(0,X.jsx)(Se,{className:`truncate`,"data-testid":`member-detail-title`,children:B})})]})}),_&&(0,X.jsxs)(oe,{className:`mt-3 max-w-full min-w-0`,gap:`md`,children:[(0,X.jsx)(xe,{className:`size-10 min-w-10 [&_span]:text-lg`,...qe(j),src:h?.avatar_image}),(0,X.jsx)(K.Title,{className:`min-w-0 truncate text-2xl tracking-tight sm:text-3xl`,children:Ge(j)})]})]}),(s||h)&&(0,X.jsx)(K.Actions,{children:(0,X.jsxs)(K.ActionGroup,{children:[h&&!s&&(0,X.jsx)(jt,{allowLeaveWithUnsavedChanges:me,member:h},h.id),(0,X.jsx)(K.ActionGroup.Primary,{children:(0,X.jsx)(A,{className:`min-w-16`,disabled:R,variant:L,onClick:be,children:P})})]})})]})})}),(0,X.jsxs)(J.Body,{children:[v&&(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3`,"data-testid":`member-detail-load-error`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Couldn’t load this member.`}),(0,X.jsx)(A,{variant:`outline`,onClick:()=>void m(),children:`Retry`})]}),y&&(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`This member couldn’t be found.`})}),z&&w&&(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col gap-8 lg:flex-row lg:items-start lg:gap-12`,children:[(0,X.jsx)(fn,{draftEmail:j.email,draftName:j.name,engagementEnabled:n,member:h,showIdentity:!_}),(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-8`,children:[(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`p-6`,children:(0,X.jsx)(on,{disabled:x.isPending,draft:w,emailError:ve,onChange:ye,onEmailBlur:()=>{_e(!0),N()},onNameBlur:N})})}),h&&(0,X.jsx)(rn,{disabled:x.isPending,memberId:h.id,metafields:h.metafields}),t&&(s||h)&&(0,X.jsx)(pn,{disabled:x.isPending,emailSuppression:h?.email_suppression,memberId:h?.id,subscribedIds:w.newsletters,onChange:e=>ye({newsletters:e})}),e&&(0,X.jsxs)(`section`,{"aria-labelledby":`member-subscriptions-heading`,className:`flex flex-col gap-3`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-subscriptions-heading`,children:`Subscriptions`}),(0,X.jsx)(Ln,{canAddComp:ce,member:h})]}),(s||h&&le)&&(0,X.jsx)(pt,{hasMultipleNewsletters:ue,hasMultipleTiers:de,memberId:h?.id,paidMembersEnabled:e})]})]})]}),(0,X.jsx)(Qe,{...pe})]})})})},Gn=()=>{let{data:e,isLoading:t}=nt({}),n=et(),r=rt();if(t||!e?.settings)return(0,X.jsx)(S,{className:`size-full`,children:(0,X.jsx)(ae,{className:`relative flex h-full flex-col`,size:`page`,children:(0,X.jsx)(J,{children:(0,X.jsx)(J.Body,{children:(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,X.jsx)(G,{size:`lg`})})})})})});let i=tt(e.settings,`members_signup_access`);return(0,X.jsx)(Wn,{engagementEnabled:i!==`none`&&r===!0,newslettersUiEnabled:r===!0,paidMembersEnabled:n===!0})};export{Gn 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]=`97a6b444-beb0-4983-aa58-3c2f878def4a`,e._sentryDebugIdIdentifier=`sentry-dbid-97a6b444-beb0-4983-aa58-3c2f878def4a`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{i as n}from"./framework-provider-CIvHFnik.js";import{o as r}from"./hooks-0r7qxGEo.js";import{t as i}from"./jsx-runtime-Bm2_KH-0.js";import{_ as a,b as o,c as s,d as c,f as l,l as u,m as d,r as f,u as p,v as m,x as h}from"./members-CH6KeXQc.js";import{n as g}from"./dist-pogVoW2G.js";import{i as _}from"./currency-DgOqjQBh.js";import{t as v}from"./preload-helper-Ba4JejZL.js";import{h as ee,n as te,u as ne}from"./chunk-OB3PAWPO-D3muQBsq.js";import{a as re}from"./router-provider-Cf-bcYZr.js";import{H as y,J as ie,L as b,r as x}from"./shade-provider-DvrXKKQZ.js";import{t as S}from"./box-BOIwAOVT.js";import{t as ae}from"./container-DakAbO79.js";import{t as oe}from"./inline-Qoyy4r2g.js";import{D as se,Gt as ce,Ht as C,Lt as le,On as ue,Pn as de,Rn as w,Rt as T,Xt as E,Zt as D,ar as O,bt as fe,dt as k,g as pe,jn as me,t as A,vn as he,zt as ge}from"./button-CTHYSI-d.js";import{a as _e,c as ve,i as j,o as M,r as N,s as ye,t as be}from"./alert-dialog-CAPLqwVs.js";import{t as xe}from"./avatar-YbECDnBI.js";import{t as P}from"./badge-DuMiqyUH.js";import{a as Se,i as Ce,n as we,o as Te,r as Ee,t as De}from"./breadcrumb-BO_Xhq8u.js";import{n as F,t as I}from"./card-Cd6xB_Ok.js";import{a as L,i as R,o as z,r as B,s as V,t as H}from"./dialog-BO1lcy8A.js";import{t as Oe}from"./multi-select-combobox-BzBMUFst.js";import{i as ke,n as Ae,r as je,t as Me}from"./combobox-DDlijta6.js";import{t as Ne}from"./empty-indicator-BhVwqSVH.js";import{t as U}from"./label-CxXFmzcd.js";import{t as W}from"./input-BHb2A_DU.js";import{n as Pe,o as Fe,t as Ie}from"./input-group-DL5EFP5r.js";import{t as Le}from"./skeleton-C1s6yr9e.js";import{n as G}from"./loading-indicator-DaRyGrxv.js";import{t as K}from"./page-header-CxTb0je5.js";import{i as Re,n as ze,o as Be,s as Ve,t as He}from"./select-DeloOYCg.js";import{t as Ue}from"./switch-BppWscjz.js";import{t as We}from"./textarea-B_rfKtjs.js";import{d as Ge,n as Ke,p as qe,u as Je}from"./label-picker-DaivLdMw.js";import{t as Ye}from"./list-return-state-B91WMz_J.js";import{i as Xe}from"./users-CKJaAxEJ.js";import{r as Ze}from"./newsletters-CACa0VCx.js";import{t as Qe}from"./dirty-confirm-dialog-CdxPMCA8.js";import{a as $e}from"./tiers-DlvS8D6_.js";import{$t as et,Ht as tt,Kt as nt,Qt as rt,ct as it,ft as q,gt as at,ut as ot,vt as st}from"./index-RuRs_qGS.js";import{t as ct}from"./validator-DgUCXsE8.js";import{t as J}from"./detail-page-DkWBi2i0.js";import"./virtual-list-qPFukjyT.js";import{n as lt,t as ut}from"./use-unsaved-changes-guard-BkCuSlvU.js";import{n as dt}from"./use-availability-CgZC6L_V.js";import{c as ft,n as pt}from"./member-activity-feed-CvKEetHS.js";import{_ as mt,a as ht,g as gt,m as _t,t as vt}from"./member-custom-fields-CBdiwPD9.js";import{t as yt}from"./use-definitions-CJuXLSob.js";var Y=e(t(),1),bt=new Set([`active`,`trialing`,`unpaid`,`past_due`]);function xt(e){return(e.subscriptions??[]).some(e=>bt.has(e.status))}function St(e){return e?`Delete member + Cancel subscription`:`Delete member`}var X=i(),Ct=({open:e,onOpenChange:t,member:n,allowLeaveWithUnsavedChanges:r})=>{let i=re(),a=s(),[o,c]=Y.useState(!1);Y.useEffect(()=>{e&&c(!1)},[e]);let l=xt(n),u=n.email||n.name||`this member`,d=async()=>{try{let e=l&&o;await a.mutateAsync({id:n.id,cancel:e}),g.success(e?`${u} was deleted and their Stripe subscription was cancelled.`:`${u} was deleted.`),t(!1),r(),i(`/members`)}catch{g.error(`Couldn’t delete the member. Please try again.`)}};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{a.isPending||t(e)},children:(0,X.jsxs)(B,{"data-testid":`delete-member-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Delete member account`}),(0,X.jsxs)(R,{children:[`Permanently delete `,(0,X.jsx)(`strong`,{children:u}),` from Ghost.`]})]}),l&&(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`h4`,{className:`text-sm font-medium`,children:`Also cancel subscription in Stripe`}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If disabled, the member’s premium subscription will continue`})]}),(0,X.jsx)(Ue,{"aria-label":`Also cancel subscription in Stripe`,checked:o,"data-testid":`delete-member-cancel-stripe`,disabled:a.isPending,onCheckedChange:c})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{"data-testid":`cancel-delete-member`,disabled:a.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-delete-member`,disabled:a.isPending,variant:`destructive`,onClick:()=>void d(),children:a.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Deleting`})]}):St(o&&l)})]})]})})},wt=`Disabled from member settings`,Tt=({open:e,onOpenChange:t,member:n})=>{let r=u(),[i,a]=Y.useState(!1);Y.useEffect(()=>{e&&a(!1)},[e]);let o=n.name||n.email||`this member`,s=async()=>{try{await r.mutateAsync({id:n.id,reason:wt,hideComments:i})}catch{g.error(`Couldn’t disable commenting. Please try again.`);return}g.success(`Commenting has been disabled for ${o}.`),t(!1)};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{r.isPending||t(e)},children:(0,X.jsxs)(B,{"data-testid":`disable-commenting-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Disable commenting`}),(0,X.jsxs)(R,{children:[(0,X.jsx)(`strong`,{children:o}),` won’t be able to comment in the future. You can re-enable commenting anytime.`]})]}),(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:(0,X.jsx)(`h4`,{className:`text-sm font-medium`,children:`Hide all previous comments`})}),(0,X.jsx)(Ue,{"aria-label":`Hide all previous comments`,checked:i,"data-testid":`disable-commenting-hide-comments`,disabled:r.isPending,onCheckedChange:a})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{"data-testid":`cancel-disable-commenting`,disabled:r.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-disable-commenting`,disabled:r.isPending,onClick:()=>void s(),children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Disabling`})]}):`Disable commenting`})]})]})})},Et=({open:e,onOpenChange:t,memberId:r})=>{let i=n();Y.useEffect(()=>{e&&i.removeQueries({queryKey:[`MemberSigninUrlResponseType`]})},[e,i]);let{data:a,isFetching:o,isError:s}=m(r,{enabled:e,defaultErrorHandler:!1}),c=a?.url??``,l=s||!o&&!s&&!c,[u,d]=Y.useState(!1),f=Y.useRef(null),p=Y.useCallback(()=>{f.current!==null&&(clearTimeout(f.current),f.current=null)},[]);Y.useEffect(()=>{e||(p(),d(!1))},[e,p]),Y.useEffect(()=>p,[p]);let h=async()=>{try{await navigator.clipboard.writeText(c),d(!0),p(),f.current=setTimeout(()=>{d(!1),f.current=null},1e3)}catch{g.error(`Couldn’t copy the impersonation link`)}};return(0,X.jsx)(H,{open:e,onOpenChange:t,children:(0,X.jsxs)(B,{"data-testid":`impersonate-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Impersonate member`}),(0,X.jsx)(R,{children:`A single-use signin link that works for 24 hours. Anyone with the link can sign in as this member.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-signin-url`,children:`Signin link`}),(0,X.jsx)(W,{"data-testid":`member-signin-url`,id:`member-signin-url`,value:o?`Generating link…`:l?`Failed to generate link`:c,readOnly:!0})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{variant:`outline`,onClick:()=>t(!1),children:`Close`}),(0,X.jsx)(A,{disabled:o||l||!c,onClick:()=>void h(),children:o?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Generating link`})]}):u?`Copied`:`Copy link`})]})]})})},Dt=({open:e,onOpenChange:t,member:n})=>{let r=a(),i=n.name||n.email||`This member`,o=async()=>{try{await r.mutateAsync({id:n.id}),g.success(`${i} has been signed out from all devices.`),t(!1)}catch{g.error(`Couldn’t sign the member out. Please try again.`)}};return(0,X.jsx)(be,{open:e,onOpenChange:e=>{r.isPending||t(e)},children:(0,X.jsxs)(j,{"data-testid":`logout-member-modal`,children:[(0,X.jsxs)(ye,{children:[(0,X.jsx)(ve,{children:`Sign out member from all devices?`}),(0,X.jsxs)(_e,{children:[(0,X.jsx)(`strong`,{children:i}),` will be signed out of all active sessions, and will need to sign in again upon return.`]})]}),(0,X.jsxs)(M,{children:[(0,X.jsx)(N,{disabled:r.isPending,children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-logout-member`,disabled:r.isPending,variant:`destructive`,onClick:()=>void o(),children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Signing out`})]}):`Sign out`})]})]})})},Ot=(0,Y.createContext)(!1);function kt(e){return e.can_comment===!1}function At(e){return kt(e)?`Enable commenting`:`Disable commenting`}var jt=({member:e,allowLeaveWithUnsavedChanges:t})=>{let{isAdmin7:n}=x(),i=Y.useContext(Ot),{data:a}=r(),[s,c]=Y.useState(!1),[u,d]=Y.useState(!1),[f,p]=Y.useState(!1),[m,h]=Y.useState(!1),_=l(),v=o(),ee=_.isPending||_.isSuccess&&v,te=kt(e),ne=At(e),re=e.name||e.email||`this member`;if(!a||!Xe(a))return null;let y=async()=>{if(!te){p(!0);return}try{await _.mutateAsync({id:e.id}),g.success(`Commenting has been enabled for ${re}.`)}catch{g.error(`Couldn’t enable commenting. Please try again.`)}};return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Actions`,className:b(`size-(--control-height)`,i&&`bg-background`),"data-testid":`member-actions`,size:`icon`,variant:i?`outline`:`subtle`,children:(0,X.jsx)(de,{size:16})})}),(0,X.jsxs)(ot,{align:`end`,children:[(0,X.jsxs)(q,{"data-testid":`member-actions-impersonate`,onSelect:()=>c(!0),children:[n&&(0,X.jsx)(D,{"aria-hidden":`true`}),`Impersonate`]}),(0,X.jsxs)(q,{"data-testid":`member-actions-logout`,onSelect:()=>d(!0),children:[n&&(0,X.jsx)(E,{"aria-hidden":`true`}),`Sign out of all devices`]}),(0,X.jsxs)(q,{"data-testid":`member-actions-commenting`,disabled:ee,onSelect:()=>void y(),children:[n&&(te?(0,X.jsx)(T,{"aria-hidden":`true`}):(0,X.jsx)(ge,{"aria-hidden":`true`})),ne]}),(0,X.jsx)(at,{}),(0,X.jsxs)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`member-actions-delete`,onSelect:()=>h(!0),children:[n&&(0,X.jsx)(se,{"aria-hidden":`true`}),`Delete member`]})]})]}),(0,X.jsx)(Et,{memberId:e.id,open:s,onOpenChange:c}),(0,X.jsx)(Dt,{member:e,open:u,onOpenChange:d}),(0,X.jsx)(Tt,{member:e,open:f,onOpenChange:p}),(0,X.jsx)(Ct,{allowLeaveWithUnsavedChanges:t,member:e,open:m,onOpenChange:h})]})},Z=e(ie(),1),Mt=e(ct(),1),Nt=ht(`address`)??[];function Q(e){return{name:(e.name??``).trim(),email:(e.email??``).trim(),note:e.note??``,labels:(e.labels??[]).map(e=>({name:e.name,slug:e.slug})).sort((e,t)=>e.slug<t.slug?-1:+(e.slug>t.slug)),newsletters:(e.newsletters??[]).map(e=>e.id).sort()}}function Pt(e){let t={};for(let[n,r]of Object.entries(e??{}))for(let[e,i]of Object.entries(r??{}))t[`${n}.${e}`]=i;let n={};for(let[e,r]of Object.entries(t))if(typeof r==`string`&&r.trim()!==``)n[e]=r.trim();else if(typeof r==`object`&&r&&!Array.isArray(r)){let t=It(r);t&&(n[e]=t)}return n}function Ft(e){let t={};for(let{key:n}of Nt){let r=e[n];typeof r==`string`&&(t[n]=r.trim())}return Object.values(t).some(e=>e!==``)?t:void 0}function It(e){let t={};for(let{key:n}of Nt){let r=e[n];typeof r==`string`&&r.trim()!==``&&(t[n]=r.trim())}return Object.keys(t).length?t:void 0}function Lt(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t].sort()}function Rt(e,t){let n=e.trim();return t!==void 0&&n===t.trim()?!0:Mt.default.isEmail(n)}function zt(e,t,n){return t?e.trim()===``?`Email is required.`:Rt(e,n)?null:`Invalid email.`:null}function Bt(e){if(!e?.suppressed)return null;let t=e.info;if(!t)return{label:null};let{reason:n,timestamp:r}=t,i=(0,Z.default)(new Date(r)).format(`D MMM YYYY`);switch(n){case`fail`:return{reason:n,label:`Bounced on ${i}`};case`spam`:return{reason:n,label:`Flagged as spam on ${i}`};default:return{reason:n,label:`Email disabled on ${i}`}}}function Vt(e){return e?e.filter(e=>e.subscribe_on_signup===!0&&e.visibility===`members`).map(e=>e.id):[]}function Ht(e){return 500-[...e].length}function Ut(e,t,n){let r=Yt(t),i={id:e,name:r.name,email:r.email,note:r.note,labels:r.labels};return lt(r.newsletters,n.newsletters)||(i.newsletters=r.newsletters.map(e=>({id:e}))),i}function Wt(e){return typeof e==`string`?e.trim()||void 0:Ft(e)}function Gt(e,t,n){return{id:e,metafields:{[t.namespace]:{[t.key]:Wt(n)??null}}}}function Kt(e,t){let n={};for(let r of t){let t=e[r.key],i=t===void 0?void 0:Wt(t);if(i===void 0)continue;let a=dt[r.type];if(!a)continue;let o=a.value.safeParse(i);if(!o.success)for(let e of o.error.issues){let t=[r.namespace,r.key,...e.path].join(`.`);n[t]??=e.message}}return n}function qt(e){let t=e?.data,n={};for(let e of t?.errors??[])e.property?.startsWith(`metafields.`)&&(n[e.property.slice(11)]=e.context||e.message||`Invalid value.`);return Object.keys(n).length?n:void 0}function Jt(e,t){return e.map(e=>t.get(e)??{name:e,slug:e})}function Yt(e){return{name:e.name.trim(),email:e.email.trim(),note:e.note,labels:e.labels,newsletters:e.newsletters}}function Xt(e,t){return!e||!!t&<(Yt(e),t)}var Zt=({message:e})=>e?(0,X.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:e}):null,Qt=({id:e,label:t,value:n,invalid:r,disabled:i,onChange:a})=>{let[o,s]=Y.useState(!1);return(0,X.jsxs)(Me,{open:o,modal:!0,onOpenChange:s,children:[(0,X.jsx)(je,{"aria-invalid":r||void 0,"aria-label":t,disabled:i,id:e,children:(0,X.jsx)(ke,{placeholder:!n,children:n?gt(n):`Select...`})}),(0,X.jsx)(Ae,{children:(0,X.jsx)(Oe,{i18n:{searchPlaceholder:`Search countries...`},isMultiSelect:!1,options:mt(n),values:n?[n]:[],autoCloseOnSelect:!0,onChange:e=>a(e[0]??``),onClose:()=>s(!1)})})]})},$t=({inputId:e,value:t,errors:n,disabled:r,onChange:i})=>(0,X.jsx)(`div`,{className:`grid gap-x-4 gap-y-3 md:grid-cols-2`,children:Nt.map(({key:a,label:o,type:s})=>{let c=`${e}-${a}`,l=n?.[a];return(0,X.jsxs)(`div`,{className:b(`flex flex-col gap-1.5`,(a===`line1`||a===`line2`)&&`md:col-span-2`),children:[(0,X.jsx)(U,{htmlFor:c,children:o}),s===`country_code`?(0,X.jsx)(Qt,{disabled:r,id:c,invalid:!!l,label:o,value:t[a],onChange:e=>i({...t,[a]:e})}):(0,X.jsx)(W,{"aria-invalid":l?!0:void 0,disabled:r,id:c,value:t[a]??``,onChange:e=>i({...t,[a]:e.target.value})}),(0,X.jsx)(Zt,{message:l})]},a)})});function en(e){return null}var tn=({field:e,inputId:t,value:n,errors:r,disabled:i,onChange:a})=>{let o=r?.[``],{input:s}=_t(e);switch(s){case`text`:return(0,X.jsx)(W,{"aria-invalid":o?!0:void 0,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`textarea`:return(0,X.jsx)(We,{"aria-invalid":o?!0:void 0,className:`max-w-full resize-y`,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`address`:return(0,X.jsx)($t,{disabled:i,errors:r,inputId:t,value:typeof n==`object`&&n?n:{},onChange:a});default:return en(s)}},nn=({memberId:e,field:t,initialValue:n,onClose:r})=>{let i=_t(t).input===`address`,[a,o]=Y.useState(n??(i?{}:``)),[s,c]=Y.useState(!1),[l,u]=Y.useState(),d=p(),f=Kt({[t.key]:a},[t]),m={...s?f:{},...l},h=Object.fromEntries(Object.entries(m).map(([e,n])=>[e===`${t.namespace}.${t.key}`?``:e.slice(`${t.namespace}.${t.key}`.length+1),n])),_=`member-custom-field-${t.key}`,v=!lt(Pt({[t.namespace]:{[t.key]:a}}),Pt({[t.namespace]:{[t.key]:n}}));return(0,X.jsx)(H,{open:!0,onOpenChange:e=>{!e&&!d.isPending&&r()},children:(0,X.jsxs)(B,{"data-testid":`member-custom-field-edit-modal`,onEscapeKeyDown:e=>{(v||d.isPending)&&e.preventDefault()},onInteractOutside:e=>{(v||d.isPending)&&e.preventDefault()},children:[(0,X.jsx)(z,{children:(0,X.jsx)(V,{children:t.name})}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[!i&&(0,X.jsx)(U,{className:`sr-only`,htmlFor:_,children:t.name}),(0,X.jsx)(tn,{disabled:d.isPending,errors:h,field:t,inputId:_,value:a,onChange:e=>{u(void 0),o(e)}}),(0,X.jsx)(Zt,{message:h[``]})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{disabled:d.isPending,variant:`outline`,onClick:r,children:`Cancel`}),(0,X.jsx)(A,{className:`min-w-16`,disabled:d.isPending,onClick:()=>{if(!d.isPending){if(!v){r();return}if(Object.keys(f).length>0){c(!0);return}d.mutate(Gt(e,t,a),{onSuccess:()=>{g.success(`${t.name} saved`),r()},onError:e=>{let n=qt(e);u(n),n||g.error(`${t.name} couldn’t be saved`)}})}},children:d.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):`Save`})]})]})})},rn=({memberId:e,metafields:t,disabled:n})=>{let{data:r,isLoading:i}=yt(),a=r??[],o=Pt(t),[s,c]=Y.useState(null);return i||a.length===0?null:(0,X.jsxs)(`section`,{"aria-labelledby":`member-custom-fields-heading`,className:`flex flex-col gap-3`,"data-testid":`member-custom-fields-field`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-custom-fields-heading`,children:`Custom fields`}),(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`px-6 py-4`,children:(0,X.jsx)(`ul`,{children:a.map(e=>{let t=vt(e.type,o[`${e.namespace}.${e.key}`])||null;return(0,X.jsx)(`li`,{className:`border-b border-border transition-colors last:border-b-0 hover:border-b-transparent [&:has(+li:hover)]:border-b-transparent`,children:(0,X.jsxs)(`button`,{"aria-label":t?`Edit ${e.name}: ${t}`:`Edit ${e.name}`,className:`group -mx-3 flex w-[calc(100%+1.5rem)] items-center justify-between gap-4 rounded-md p-3 text-left transition-colors hover:bg-table-row-hover disabled:cursor-not-allowed disabled:opacity-50`,disabled:n,type:`button`,onClick:()=>{window.getSelection()?.toString()||c(e)},children:[(0,X.jsxs)(`span`,{className:`min-w-0`,children:[(0,X.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:e.name}),t?(0,X.jsx)(`span`,{className:`block break-words select-text`,children:t}):(0,X.jsx)(`span`,{className:`block text-muted-foreground`,children:`–`})]}),(0,X.jsx)(fe,{"aria-hidden":`true`,className:`shrink-0 text-muted-foreground opacity-0 transition-all group-hover:opacity-100 group-focus-visible:opacity-100`,size:16})]})},e.key)})})})}),s&&(0,X.jsx)(nn,{field:s,initialValue:o[`${s.namespace}.${s.key}`],memberId:e,onClose:()=>c(null)},s.key)]})},an=({labels:e,disabled:t,onChange:n})=>{let r=e.map(e=>e.slug),i=Y.useRef(e);i.current=e;let a=Y.useRef(new Map),o=e=>{for(let t of e)a.current.set(t.slug,{name:t.name,slug:t.slug})};o(e);let s=Ke({selectedSlugs:r,onSelectionChange:e=>n(Jt(e,a.current))});o(s.labels);let c=async e=>{let t=await s.createLabel(e);if(t){let e={name:t.name,slug:t.slug};a.current.set(t.slug,e),n([...i.current.filter(e=>e.slug!==t.slug),e])}return t};return(0,X.jsx)(`div`,{className:t?`pointer-events-none opacity-60`:void 0,"data-testid":`member-labels-field`,...t?{inert:``}:{},children:(0,X.jsx)(Je,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,placeholder:``,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:r,onCreate:c,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel})})},on=({draft:e,emailError:t,disabled:n,onChange:r,onEmailBlur:i,onNameBlur:a})=>{let o=Ht(e.note),s=500-o,c=o<0?`text-destructive`:s>=500*.8?`text-state-warning`:`text-state-success`;return(0,X.jsxs)(`div`,{className:`grid items-stretch gap-6 md:grid-cols-2`,"data-testid":`member-detail-form`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-name`,children:`Name`}),(0,X.jsx)(W,{disabled:n,id:`member-name`,value:e.name,onBlur:a,onChange:e=>r({name:e.target.value})})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`member-email`,children:`Email`}),(0,X.jsx)(W,{"aria-invalid":!!t,disabled:n,id:`member-email`,type:`email`,value:e.email,onBlur:i,onChange:e=>r({email:e.target.value})}),t&&(0,X.jsx)(`p`,{className:`text-sm text-destructive`,children:t})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{children:`Labels`}),(0,X.jsx)(an,{disabled:n,labels:e.labels,onChange:e=>r({labels:e})})]})]}),(0,X.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-1.5`,children:[(0,X.jsxs)(U,{htmlFor:`member-note`,children:[`Note `,(0,X.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(not visible to member)`})]}),(0,X.jsxs)(Ie,{className:`flex-1`,children:[(0,X.jsx)(Fe,{className:`h-full`,disabled:n,id:`member-note`,value:e.note,onChange:e=>r({note:e.target.value})}),(0,X.jsx)(Pe,{align:`block-end`,className:`justify-end`,children:(0,X.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Maximum: `,(0,X.jsx)(`span`,{className:`font-semibold text-foreground`,children:500}),` `,`characters. You’ve used`,` `,(0,X.jsx)(`span`,{className:b(`font-semibold`,c),children:s})]})})]})]})]})};function sn(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function cn(e){let t=sn(e);return t?t.country_code===`US`&&t.region?`${t.region}, US`:t.country||`Unknown location`:`Unknown location`}function ln(e){let t=e?.referrer_source;return!t||t===`Created manually`?null:t}var un=e=>Z.default.utc(e).format(`D MMM YYYY`),$=({icon:e,children:t})=>(0,X.jsxs)(`p`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e}),(0,X.jsx)(`span`,{className:`min-w-0 truncate`,children:t})]}),dn=e=>e.split(` `)[0]||``,fn=({member:e,draftName:t,draftEmail:n,engagementEnabled:r,showIdentity:i=!0})=>{let a=(t??e?.name??``).trim(),o=(n??e?.email??``).trim(),s=a||o||`New member`,c=!e;return(0,X.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col gap-6 lg:w-80`,"data-testid":`member-detail-sidebar`,children:[i&&(0,X.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,X.jsx)(xe,{className:`size-12 min-w-12 [&_span]:text-lg`,...qe({name:a,email:o}),src:e?.avatar_image}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`h2`,{className:`truncate text-xl font-semibold`,children:s}),a&&o&&(0,X.jsx)(`a`,{className:`block truncate text-muted-foreground hover:underline`,href:`mailto:${o}`,children:o}),!a&&o&&(0,X.jsx)(`span`,{className:`block truncate text-muted-foreground`,children:o})]})]}),!c&&e&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-2 text-sm`,children:[(0,X.jsx)($,{icon:(0,X.jsx)(C,{size:16}),children:(0,X.jsx)(`span`,{"data-testid":`member-detail-location`,children:cn(e.geolocation)})}),(0,X.jsx)($,{icon:(0,X.jsx)(me,{size:16}),children:e.last_seen_at?`Last seen on ${un(e.last_seen_at)}`:`Not seen yet`}),e.can_comment===!1&&(0,X.jsx)($,{icon:(0,X.jsx)(le,{size:16}),children:`Comments disabled`})]}),(0,X.jsxs)(`div`,{className:`mt-4 flex flex-col gap-3 text-sm`,children:[(0,X.jsx)(`h3`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Signup info`}),(0,X.jsxs)($,{icon:(0,X.jsx)(pe,{size:16}),children:[`Created — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:un(e.created_at)})]}),(()=>{let t=ln(e.attribution);return t?(0,X.jsxs)($,{icon:(0,X.jsx)(he,{size:16}),children:[`Source —`,` `,(0,X.jsx)(`span`,{className:`text-foreground`,title:t,children:t})]}):null})(),e.attribution?.title&&(0,X.jsxs)($,{icon:(0,X.jsx)(ue,{size:16}),children:[`Page —`,` `,ft(e.attribution.url)?(0,X.jsx)(`a`,{className:`truncate text-foreground hover:underline`,href:e.attribution.url,rel:`noopener noreferrer`,target:`_blank`,title:e.attribution.title,children:e.attribution.title}):(0,X.jsx)(`span`,{className:`truncate text-foreground`,title:e.attribution.title,children:e.attribution.title})]})]}),r&&(0,X.jsxs)(`section`,{className:`mt-4 flex flex-col gap-3 text-sm`,"data-testid":`member-detail-engagement`,children:[(0,X.jsx)(`h4`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Engagement`}),(e.email_count??0)===0?(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:a?`We’ll show ${dn(a)}’s email stats here once they receive their first newsletter.`:`We’ll show this member’s email stats here once they receive their first newsletter.`}):(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails received`}),(0,X.jsx)(`p`,{className:`text-2xl font-semibold`,children:y(e.email_count??0)})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails opened`}),(0,X.jsx)(`p`,{className:`text-2xl font-semibold`,children:y(e.email_opened_count??0)})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Average open rate`}),e.email_open_rate===null||e.email_open_rate===void 0?(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`This metric is calculated once a member has received 5 newsletters.`}):(0,X.jsxs)(`p`,{className:`text-2xl font-semibold`,children:[y(e.email_open_rate),(0,X.jsx)(`span`,{className:`text-base font-normal text-muted-foreground`,children:`%`})]})]})]})]})]})]})},pn=({memberId:e,emailSuppression:t,subscribedIds:n,disabled:r,onChange:i})=>{let a=e?Bt(t):null,s=h(),{data:c,isLoading:l}=Ze({searchParams:{filter:`status:active`,limit:`50`}}),u=c?.newsletters??[],d=o(),f=s.isPending||s.isSuccess&&d;return!a&&(l||u.length===0)?null:(0,X.jsxs)(`section`,{"aria-labelledby":`member-newsletters-heading`,className:`flex flex-col gap-3`,"data-testid":`member-newsletters-field`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-newsletters-heading`,children:`Newsletters`}),(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`p-6`,children:a?(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,"data-testid":`member-suppression-banner`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,X.jsx)(ce,{className:`mt-0.5 shrink-0 text-muted-foreground`,size:20}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:`Email disabled`}),a.label&&(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a.label}),(0,X.jsx)(`a`,{className:`text-sm text-muted-foreground hover:underline`,href:`https://ghost.org/help/disabled-emails`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]}),(0,X.jsx)(A,{disabled:r||f,onClick:()=>{e&&s.mutate({id:e},{onSuccess:()=>g.success(`Email re-enabled successfully`),onError:()=>g.error(`Failed to re-enable email. Please try again.`)})},children:f?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Re-enabling email`})]}):`Re-enable email`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ul`,{className:`divide-y divide-border`,children:u.map(e=>{let t=n.includes(e.id);return(0,X.jsxs)(`li`,{className:`flex items-center justify-between gap-4 py-3 first:pt-0 last:pb-0`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`div`,{className:`font-medium`,children:e.name}),e.description&&(0,X.jsx)(`p`,{className:`truncate text-sm text-muted-foreground`,children:e.description})]}),(0,X.jsx)(Ue,{"aria-label":`Subscribe to ${e.name}`,checked:t,"data-testid":`member-subscription-toggle`,disabled:r,onCheckedChange:()=>i(Lt(n,e.id))})]},e.id)})}),(0,X.jsxs)(`p`,{className:`mt-4 text-sm text-muted-foreground`,children:[`If disabled, member will `,(0,X.jsx)(`em`,{children:`not`}),` receive newsletter emails`]})]})})})]})},mn=`complimentary`,hn=`gift subscription`;function gn(e){if(e.id)return`paid`;let t=e.plan?.nickname?.toLowerCase()??``;return t===mn?`complimentary`:t===hn?`gift`:`paid`}function _n(e){return e===`year`?`yearly`:`monthly`}function vn(e){if(e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`))return`Free trial`;let t=e.price?.nickname;return t&&t!==`Monthly`&&t!==`Yearly`?t:null}function yn(e){return e.status===`canceled`||e.cancel_at_period_end?`Canceled`:`Active`}var bn=e=>e?(0,Z.default)(new Date(e)).format(`D MMM YYYY`):``,xn=e=>e?(0,Z.default)(e).utc().format(`D MMM YYYY`):``;function Sn(e){let t=gn(e);if(t===`complimentary`||t===`gift`){let t=xn(e.tier?.expiry_at);return t?`Expires ${t}`:``}let n=e.status===`canceled`&&!e.cancel_at_period_end?``:bn(e.current_period_end);return e.status===`canceled`?n?`Ended ${n}`:``:e.cancel_at_period_end?n?`Has access until ${n}`:``:e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`)?`Ends ${bn(e.trial_end_at)}`:n?`Renews ${n}`:``}function Cn(e){let t=[],n=new Map;for(let r of e){if(!r.price)continue;let e=r.tier??r.price.tier;if(!e?.id)continue;let i=n.get(e.id);i||(i={tier:e,subscriptions:[]},n.set(e.id,i),t.push(i)),i.subscriptions.push(r)}return t}var wn=[`forever`,`week`,`month`,`half-year`,`year`,`custom`];function Tn(e){return wn.includes(e)}function En(e,t){switch(e){case`forever`:return null;case`week`:return Z.default.utc().add(7,`days`).startOf(`day`).toISOString();case`month`:return Z.default.utc().add(1,`month`).startOf(`day`).toISOString();case`half-year`:return Z.default.utc().add(6,`months`).startOf(`day`).toISOString();case`year`:return Z.default.utc().add(1,`year`).startOf(`day`).toISOString();case`custom`:return t?(0,Z.default)(t,`YYYY-MM-DD`).startOf(`day`).endOf(`day`).set(`millisecond`,0).add((0,Z.default)().utcOffset(),`minutes`).toISOString():null}}var Dn=new Set([`active`,`trialing`,`unpaid`,`past_due`]),On=[{value:`forever`,label:`Forever`},{value:`week`,label:`1 Week`},{value:`month`,label:`1 Month`},{value:`half-year`,label:`6 Months`},{value:`year`,label:`1 Year`},{value:`custom`,label:`Custom`}],kn=({open:e,onOpenChange:t,member:n})=>{let{data:r,isLoading:i}=$e({searchParams:{filter:`type:paid+active:true`,limit:`all`}}),a=r?.tiers??[],[o,s]=Y.useState(``),[l,u]=Y.useState(`forever`),[d,f]=Y.useState(``);Y.useEffect(()=>{e&&(s(``),u(`forever`),f(``))},[e]);let m=c(),h=p(),[_,v]=Y.useState(!1),ee=(n.subscriptions??[]).filter(e=>gn(e)===`paid`&&Dn.has(e.status)),te=(0,Z.default)().format(`YYYY-MM-DD`),ne=!!o&&!_&&(l!==`custom`||!!d),re=async()=>{if(ne){v(!0);try{for(let e of ee)await m.mutateAsync({memberId:n.id,subscriptionId:e.id,status:`canceled`});let e=En(l,l===`custom`?d:null),r=e?{id:o,expiry_at:e}:{id:o};await h.mutateAsync({id:n.id,...n.email?{email:n.email}:{},tiers:[r]}),g.success(`Complimentary subscription added`),t(!1)}catch{g.error(`Couldn’t add complimentary subscription`)}finally{v(!1)}}};return(0,X.jsx)(H,{open:e,onOpenChange:e=>{_||t(e)},children:(0,X.jsxs)(B,{"data-testid":`add-comp-modal`,children:[(0,X.jsxs)(z,{children:[(0,X.jsx)(V,{children:`Add complimentary subscription`}),(0,X.jsx)(R,{children:`Grants this member access to a paid tier for the chosen duration. Any active paid subscription is canceled first.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-tier`,children:`Tier`}),(0,X.jsxs)(He,{value:o,onValueChange:s,children:[(0,X.jsx)(Be,{"data-testid":`comp-tier-select`,disabled:i||_,id:`comp-tier`,children:(0,X.jsx)(Ve,{placeholder:i?`Loading tiers…`:`Select a tier`})}),(0,X.jsx)(ze,{children:a.map(e=>(0,X.jsx)(Re,{"data-tier-id":e.id,value:e.id,children:e.name},e.id))})]})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-duration`,children:`Duration`}),(0,X.jsxs)(He,{value:l,onValueChange:e=>{Tn(e)&&u(e)},children:[(0,X.jsx)(Be,{"data-testid":`comp-duration-select`,disabled:_,id:`comp-duration`,children:(0,X.jsx)(Ve,{})}),(0,X.jsx)(ze,{children:On.map(e=>(0,X.jsx)(Re,{value:e.value,children:e.label},e.value))})]})]}),l===`custom`&&(0,X.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,X.jsx)(U,{htmlFor:`comp-custom-date`,children:`Expires on`}),(0,X.jsx)(W,{"data-testid":`comp-custom-date`,disabled:_,id:`comp-custom-date`,min:te,type:`date`,value:d,onChange:e=>f(e.target.value)})]})]}),(0,X.jsxs)(L,{children:[(0,X.jsx)(A,{disabled:_,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`comp-add-confirm`,disabled:!ne,onClick:()=>void re(),children:_?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Adding`})]}):`Add subscription`})]})]})})},An=({memberId:e,subscription:t})=>{let{isAdmin7:n}=x(),r=c(),i=o(),a=r.isPending||r.isSuccess&&i,s=t.status===`canceled`,l=t.cancel_at_period_end,u=(n,i,a)=>{r.mutate({memberId:e,subscriptionId:t.id,cancelAtPeriodEnd:n},{onSuccess:()=>g.success(i),onError:()=>g.error(a)})};return(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:a,size:n?`icon`:`sm`,variant:`subtle`,children:a?(0,X.jsx)(G,{size:`sm`}):(0,X.jsx)(de,{})})}),(0,X.jsxs)(ot,{align:`end`,children:[(0,X.jsx)(q,{asChild:!0,children:(0,X.jsx)(`a`,{href:`https://dashboard.stripe.com/customers/${t.customer.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe customer`})}),(0,X.jsx)(at,{}),(0,X.jsx)(q,{asChild:!0,children:(0,X.jsx)(`a`,{href:`https://dashboard.stripe.com/subscriptions/${t.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe subscription`})}),!s&&(l?(0,X.jsx)(q,{"data-testid":`continue-subscription`,onSelect:()=>u(!1,`Subscription continued`,`Couldn’t continue subscription`),children:`Continue subscription`}):(0,X.jsx)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`cancel-subscription`,onSelect:()=>u(!0,`Subscription canceled`,`Couldn’t cancel subscription`),children:`Cancel subscription`}))]})]})},jn=({member:e,tierId:t})=>{let{isAdmin7:n}=x(),r=p(),[i,a]=Y.useState(!1),s=o(),c=r.isPending||r.isSuccess&&s;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(it,{children:[(0,X.jsx)(st,{asChild:!0,children:(0,X.jsx)(A,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:c,size:n?`icon`:`sm`,variant:`subtle`,children:c?(0,X.jsx)(G,{size:`sm`}):(0,X.jsx)(de,{})})}),(0,X.jsx)(ot,{align:`end`,children:(0,X.jsx)(q,{className:`text-destructive focus:text-destructive`,"data-testid":`remove-complimentary`,onSelect:()=>a(!0),children:`Remove complimentary subscription`})})]}),(0,X.jsx)(be,{open:i,onOpenChange:e=>{r.isPending||a(e)},children:(0,X.jsxs)(j,{children:[(0,X.jsxs)(ye,{children:[(0,X.jsx)(ve,{children:`Remove complimentary subscription?`}),(0,X.jsx)(_e,{children:`The member will lose access to this tier immediately.`})]}),(0,X.jsxs)(M,{children:[(0,X.jsx)(N,{disabled:r.isPending,children:`Cancel`}),(0,X.jsx)(A,{"data-testid":`confirm-remove-complimentary`,disabled:r.isPending,variant:`destructive`,onClick:()=>{let n=(e.tiers??[]).filter(e=>e.id!==t).map(e=>({id:e.id,expiry_at:e.expiry_at??null}));r.mutate({id:e.id,email:e.email,tiers:n},{onSuccess:()=>{g.success(`Complimentary subscription removed`),a(!1)},onError:()=>g.error(`Couldn’t remove complimentary subscription`)})},children:r.isPending?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Removing`})]}):`Remove`})]})]})})]})},Mn=e=>{let t=e/100;return t.toLocaleString(void 0,t%1==0?void 0:{minimumFractionDigits:2,maximumFractionDigits:2})},Nn=({sub:e,kind:t})=>{if(t===`complimentary`||t===`gift`)return(0,X.jsx)(`div`,{className:`flex size-20 shrink-0 items-center justify-center rounded-lg bg-muted text-center text-sm font-medium text-muted-foreground`,children:t===`complimentary`?`Comp`:`Gift`});let n=_(e.price.currency),r=Mn(e.price.amount),i=_n(e.price.interval);return(0,X.jsxs)(`div`,{className:`flex size-20 shrink-0 flex-col items-center justify-center rounded-lg bg-muted text-foreground`,children:[(0,X.jsxs)(`div`,{className:`flex items-start leading-none`,children:[(0,X.jsx)(`span`,{className:`mt-1 text-sm font-semibold`,children:n}),(0,X.jsx)(`span`,{className:`text-3xl font-semibold tracking-tight`,children:r})]}),(0,X.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:i})]})},Pn=e=>e?Z.default.utc(e).format(`D MMM YYYY`):``,Fn=({sub:e})=>{let t=Pn(e.start_date),n=e.attribution?.referrer_source,r=n&&n!==`Unknown`,i=e.attribution?.title?{title:e.attribution.title,url:e.attribution.url??null}:null;return(0,X.jsxs)(`div`,{className:`mt-3 space-y-1 border-t border-border pt-3 text-sm text-muted-foreground`,children:[t&&(0,X.jsxs)(`p`,{children:[`Created — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:t})]}),r&&(0,X.jsxs)(`p`,{children:[`Source — `,(0,X.jsx)(`span`,{className:`text-foreground`,children:n})]}),i&&(0,X.jsxs)(`p`,{children:[`Page —`,` `,ft(i.url)?(0,X.jsx)(`a`,{className:`text-foreground hover:underline`,href:i.url,rel:`noopener noreferrer`,target:`_blank`,children:i.title}):(0,X.jsx)(`span`,{className:`text-foreground`,children:i.title})]})]})},In=({member:e,sub:t,showDivider:n})=>{let[r,i]=Y.useState(!1),a=gn(t),o=yn(t),s=Sn(t),c=vn(t);return(0,X.jsxs)(`div`,{className:b(`flex items-start justify-between gap-4 py-5 first:pt-0 last:pb-0`,n&&`border-t border-border`),"data-testid":`member-subscription`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-4`,children:[(0,X.jsx)(Nn,{kind:a,sub:t}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 pt-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`min-w-0 truncate font-semibold`,"data-testid":`member-subscription-tier`,children:t.tier?.name??`Subscription`}),(0,X.jsx)(P,{"data-testid":`member-subscription-status`,variant:o===`Canceled`?`secondary`:`success`,children:o})]}),(c||s)&&(0,X.jsxs)(`div`,{className:`mt-1 text-sm`,children:[c&&(0,X.jsx)(`span`,{className:`font-semibold text-foreground`,children:c}),c&&s&&(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:` – `}),s&&(0,X.jsx)(`span`,{className:`text-muted-foreground`,children:s})]}),(0,X.jsxs)(`button`,{"aria-expanded":r,className:`mt-1 inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline`,"data-testid":`member-subscription-details-toggle`,type:`button`,onClick:()=>i(e=>!e),children:[`Details`,(0,X.jsx)(O,{className:b(`transition-transform`,r&&`rotate-180`),size:14})]}),r&&(0,X.jsx)(Fn,{sub:t})]})]}),a===`paid`&&(0,X.jsx)(An,{memberId:e.id,subscription:t}),a===`complimentary`&&t.tier?.id&&(0,X.jsx)(jn,{member:e,tierId:t.tier.id})]})},Ln=({member:e,canAddComp:t})=>{let[n,r]=Y.useState(!1);if(!e)return(0,X.jsx)(I,{"data-testid":`member-subscriptions`,children:(0,X.jsx)(F,{className:`pt-6`,children:(0,X.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,X.jsx)(Ne,{title:`No subscriptions`,children:(0,X.jsx)(w,{})})})})});let i=Cn(e.subscriptions??[]),a=i.length>0,o=t&&(e.tiers?.length??0)===0,s=o?(0,X.jsxs)(A,{"data-testid":`add-complimentary`,variant:`outline`,onClick:()=>r(!0),children:[(0,X.jsx)(k,{className:`mr-1`,size:16}),`Add complimentary subscription`]}):null;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(I,{"data-testid":`member-subscriptions`,children:(0,X.jsx)(F,{className:`pt-6`,children:a?(0,X.jsxs)(X.Fragment,{children:[i.map(t=>(0,X.jsxs)(`div`,{className:`flex flex-col`,children:[t.subscriptions.map((n,r)=>(0,X.jsx)(In,{member:e,showDivider:r>0,sub:n},n.id||`${t.tier.id}-${r}`)),t.subscriptions.length>1&&(0,X.jsxs)(`div`,{className:`pt-3 text-sm text-muted-foreground`,children:[t.subscriptions.length,` subscriptions`]})]},t.tier.id)),s&&(0,X.jsx)(`div`,{className:`mt-4 flex justify-center border-t border-border pt-4`,children:s})]}):(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:[(0,X.jsx)(Ne,{title:`No subscriptions`,children:(0,X.jsx)(w,{})}),s]})})}),o&&(0,X.jsx)(kn,{member:e,open:n,onOpenChange:r})]})};function Rn({atlas:e,country:t,region:n}){let r=t.id===`us`,i=typeof n==`string`?n.trim().toLowerCase().replace(/^us-/,``):``,a=r?e.states.find(e=>e.id===`us-${i}`||e.name.toLowerCase()===i||e.id===`us-dc`&&[`washington, dc`,`washington dc`,`washington, d.c.`,`d.c.`].includes(i)):void 0,o=a??t,s=!r||!!a,c=a?`${a.name}, US — approximate state location`:`${t.name} — approximate country location`,l=(0,Y.useId)(),u=(0,Y.useRef)(null),[d,f]=(0,Y.useState)(`0 0 360 360`),[p,,m]=d.split(` `).map(Number);return(0,Y.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>{let[,,t,n]=o.bounds,i=Math.max(e.clientWidth,1)/Math.max(e.clientHeight,1),[s,c]=o.anchor,l=r&&!a?1.2:3,u=Math.max(n*l,t*l/i,18)*1.15,d=u*i;f(`${s-d/2} ${c-u/2} ${d} ${u}`)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[o,r,a]),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`svg`,{ref:u,"aria-hidden":`true`,className:`size-full bg-muted dark:bg-muted/45`,"data-map-kind":`world`,"data-testid":`member-location-map`,preserveAspectRatio:`xMidYMid slice`,viewBox:d,children:[(0,X.jsxs)(`g`,{id:l,children:[e.countries.map(e=>(0,X.jsx)(`path`,{className:`fill-background stroke-border-default`,d:e.path,"data-location":e.id,strokeWidth:.7,vectorEffect:`non-scaling-stroke`},e.id)),r&&e.states.map(e=>(0,X.jsx)(`path`,{className:`fill-none stroke-border-default`,d:e.path,"data-location":e.id,strokeWidth:.7,vectorEffect:`non-scaling-stroke`},e.id))]}),p<0&&(0,X.jsx)(`use`,{href:`#${l}`,transform:`translate(-360 0)`}),p+m>360&&(0,X.jsx)(`use`,{href:`#${l}`,transform:`translate(360 0)`})]}),s&&(0,X.jsx)(S,{"aria-label":c,className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-full`,role:`img`,children:(0,X.jsx)(C,{className:`size-8 fill-foreground text-background drop-shadow-sm`,strokeWidth:1.5})})]})}function zn({geolocation:e,children:t}){let n=sn(e),r=typeof n?.country_code==`string`?n.country_code.trim().toLowerCase():``,[i,a]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{if(!r)return;let e=!0;return v(()=>import(`./world-states-Bb63Q180.js`).then(t=>{e&&a(t.default)},()=>{}),[],import.meta.url),()=>{e=!1}},[r]);let o=i?.countries.find(e=>e.id===r);return(0,X.jsxs)(S,{className:b(`relative isolate overflow-hidden rounded-xl`,o?`[&_[data-page-header=main]]:items-end`:`[&_[data-page-header=main]]:items-start`,o&&`-mt-5 -mr-[calc((100cqw-100%)/2-8px)] -ml-[calc((100cqw-100%)/2-var(--member-map-left-inset,8px))] rounded-t-xl rounded-b-none pt-40 pr-[calc((100cqw-100%)/2-8px)] pb-5 pl-[calc((100cqw-100%)/2-var(--member-map-left-inset,8px))]`,o&&`[&_[data-page-header=primary]]:ms-1`,o&&`max-sm:[&_[data-page-header=actions]]:absolute max-sm:[&_[data-page-header=actions]]:top-4 max-sm:[&_[data-page-header=actions]]:right-4`,o&&`max-sm:pt-49 max-sm:[&_[aria-label=breadcrumb]]:absolute max-sm:[&_[aria-label=breadcrumb]]:top-4 max-sm:[&_[aria-label=breadcrumb]]:right-40 max-sm:[&_[aria-label=breadcrumb]]:left-4 max-sm:[&_[aria-label=breadcrumb]>ol]:flex-nowrap max-sm:[&_[aria-label=breadcrumb]>ol>li:last-child]:min-w-0`),"data-member-map-location":o?`known`:`unknown`,"data-testid":`member-location-map-header`,children:[i&&o&&(0,X.jsx)(S,{className:`pointer-events-none absolute inset-0 -z-10 overflow-hidden [mask-image:linear-gradient(to_bottom,black_70%,transparent)]`,children:(0,X.jsx)(Rn,{atlas:i,country:o,region:n?.region})}),(0,X.jsx)(Ot.Provider,{value:!!o,children:t})]})}var Bn=class extends Y.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}};function Vn({enabled:e,children:t,geolocation:n}){return e?(0,X.jsx)(Bn,{fallback:t,children:(0,X.jsx)(zn,{geolocation:n,children:t})}):t}function Hn(e){let t=new URLSearchParams(e),n=t.get(`back`);if(n&&n.startsWith(`/members`))return n;let r=t.get(`post`);return r?`/members?post=${encodeURIComponent(r)}`:`/members`}var Un=`new`,Wn=({paidMembersEnabled:e,newslettersUiEnabled:t,engagementEnabled:n})=>{let{member_id:r=``}=ee(),i=ne(),a=re(),o=Hn(i.search),s=r===Un,{data:c,isLoading:l,error:u,refetch:m}=d(r,{enabled:!!r&&!s,searchParams:{include:`tiers`},defaultErrorHandler:!1}),h=c?.members?.[0],_=!!h,v=!s&&!l&&!!u,y=!s&&!l&&!u&&!h,ie=p(),b=f(),x=s?b:ie,{data:se}=$e({searchParams:{filter:`type:paid+active:true`,limit:`all`},enabled:e}),ce=(se?.tiers?.length??0)>0,{data:C}=Ze({searchParams:{filter:`status:active`,limit:`50`}}),le=C!==void 0,ue=(C?.newsletters?.length??0)>1,de=(se?.tiers?.length??0)>1,[w,T]=Y.useState(void 0),E=Y.useRef(void 0),D=Y.useRef(void 0),O=Y.useRef(!1);Y.useEffect(()=>{if(s){if(E.current!==Un){E.current=Un,O.current=!1;let e=Q({});D.current=e,T(e)}return}if(!h)return;let e=Q(h);if(E.current!==h.id){E.current=h.id,D.current=e,T(e);return}let t=D.current;D.current=e,T(n=>Xt(n,t)?e:n)},[h,s]),Y.useEffect(()=>{if(!s||O.current||!C?.newsletters)return;O.current=!0;let e=Vt(C.newsletters);if(e.length===0)return;let t={...D.current??Q({}),newsletters:[...e].sort()};D.current=t,T(t=>t&&{...t,newsletters:[...e].sort()})},[s,C]);let fe=s?D.current:h?Q(h):void 0,k=!!w&&!!fe&&!lt(Yt(w),fe),{dialogProps:pe,bypassNextNavigation:me}=ut({when:k,confirmUnloadWhen:x.isPending||k}),he=!!w&&Rt(w.email,h?.email??void 0),[ge,_e]=Y.useState(!1);Y.useEffect(()=>{_e(!1)},[h?.id,s]);let ve=w?zt(w.email,ge,h?.email??void 0):null,[j,M]=Y.useState({name:``,email:``});Y.useEffect(()=>{if(s){M({name:``,email:``});return}h&&M({name:h.name??``,email:h.email??``})},[h?.id,h?.name,h?.email,s]);let N=()=>{w&&M({name:w.name,email:w.email})},ye=e=>{x.isError&&x.reset(),T(t=>t&&{...t,...e})},be=()=>{if(!(!w||!k||!he||x.isPending)){if(N(),s){b.mutate({email:w.email.trim(),name:w.name.trim()||void 0,note:w.note.trim()||void 0,labels:w.labels.length?w.labels:void 0,newsletters:O.current?w.newsletters.map(e=>({id:e})):void 0},{onSuccess:e=>{let t=e.members?.[0];if(!t){g.error(`Member couldn’t be created`);return}me(),g.success(`Member created`),a(`/members/${t.id}`,{replace:!0})},onError:()=>{g.error(`Member couldn’t be created`)}});return}!h||E.current!==h.id||ie.mutate(Ut(h.id,w,Q(h)),{onSuccess:e=>{let t=e.members?.[0];if(t){let e=Q(t);D.current=e,T(e)}g.success(`Member updated`)},onError:()=>{g.error(`Member couldn’t be saved`)}})}},P=`Save`,L=`default`,R=!0;x.isPending?P=(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(G,{size:`sm`}),(0,X.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):k?(P=x.isError?`Retry`:`Save`,L=x.isError?`destructive`:`default`,R=!he):!s&&ie.isSuccess&&(P=`Saved`);let z=!!w&&(s||!!h),B=`Member`;return s?B=`New member`:h?B=Ge(h):y&&(B=`Member not found`),(0,X.jsx)(S,{className:_?`[container-type:inline-size] size-full sidebar:[--member-map-left-inset:0px]`:`size-full`,children:(0,X.jsx)(ae,{className:`relative flex h-full flex-col`,size:`page`,children:(0,X.jsxs)(J,{"data-testid":`member-detail`,children:[(0,X.jsx)(J.Header,{className:`has-[[data-member-map-location=unknown]]:py-7`,children:(0,X.jsx)(Vn,{enabled:_,geolocation:h?.geolocation,children:(0,X.jsxs)(K,{blurredBackground:!1,sticky:!1,children:[(0,X.jsxs)(K.Left,{children:[(0,X.jsx)(De,{children:(0,X.jsxs)(Ce,{children:[(0,X.jsx)(we,{children:(0,X.jsx)(Ee,{asChild:!0,children:(0,X.jsx)(te,{"data-test-link":`members-back`,state:Ye(o),to:o,children:`Members`})})}),(0,X.jsx)(Te,{}),(0,X.jsx)(we,{children:!s&&l?(0,X.jsx)(Le,{className:`h-4 w-40`}):(0,X.jsx)(Se,{className:`truncate`,"data-testid":`member-detail-title`,children:B})})]})}),_&&(0,X.jsxs)(oe,{className:`mt-3 max-w-full min-w-0`,gap:`md`,children:[(0,X.jsx)(xe,{className:`size-10 min-w-10 [&_span]:text-lg`,...qe(j),src:h?.avatar_image}),(0,X.jsx)(K.Title,{className:`min-w-0 truncate text-2xl tracking-tight sm:text-3xl`,children:Ge(j)})]})]}),(s||h)&&(0,X.jsx)(K.Actions,{children:(0,X.jsxs)(K.ActionGroup,{children:[h&&!s&&(0,X.jsx)(jt,{allowLeaveWithUnsavedChanges:me,member:h},h.id),(0,X.jsx)(K.ActionGroup.Primary,{children:(0,X.jsx)(A,{className:`min-w-16`,disabled:R,variant:L,onClick:be,children:P})})]})})]})})}),(0,X.jsxs)(J.Body,{children:[v&&(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3`,"data-testid":`member-detail-load-error`,children:[(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`Couldn’t load this member.`}),(0,X.jsx)(A,{variant:`outline`,onClick:()=>void m(),children:`Retry`})]}),y&&(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,X.jsx)(`p`,{className:`text-muted-foreground`,children:`This member couldn’t be found.`})}),z&&w&&(0,X.jsxs)(`div`,{className:`flex flex-1 flex-col gap-8 lg:flex-row lg:items-start lg:gap-12`,children:[(0,X.jsx)(fn,{draftEmail:j.email,draftName:j.name,engagementEnabled:n,member:h,showIdentity:!_}),(0,X.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-8`,children:[(0,X.jsx)(I,{children:(0,X.jsx)(F,{className:`p-6`,children:(0,X.jsx)(on,{disabled:x.isPending,draft:w,emailError:ve,onChange:ye,onEmailBlur:()=>{_e(!0),N()},onNameBlur:N})})}),h&&(0,X.jsx)(rn,{disabled:x.isPending,memberId:h.id,metafields:h.metafields}),t&&(s||h)&&(0,X.jsx)(pn,{disabled:x.isPending,emailSuppression:h?.email_suppression,memberId:h?.id,subscribedIds:w.newsletters,onChange:e=>ye({newsletters:e})}),e&&(0,X.jsxs)(`section`,{"aria-labelledby":`member-subscriptions-heading`,className:`flex flex-col gap-3`,children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-subscriptions-heading`,children:`Subscriptions`}),(0,X.jsx)(Ln,{canAddComp:ce,member:h})]}),(s||h&&le)&&(0,X.jsx)(pt,{hasMultipleNewsletters:ue,hasMultipleTiers:de,memberId:h?.id,paidMembersEnabled:e})]})]})]}),(0,X.jsx)(Qe,{...pe})]})})})},Gn=()=>{let{data:e,isLoading:t}=nt({}),n=et(),r=rt();if(t||!e?.settings)return(0,X.jsx)(S,{className:`size-full`,children:(0,X.jsx)(ae,{className:`relative flex h-full flex-col`,size:`page`,children:(0,X.jsx)(J,{children:(0,X.jsx)(J.Body,{children:(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,X.jsx)(G,{size:`lg`})})})})})});let i=tt(e.settings,`members_signup_access`);return(0,X.jsx)(Wn,{engagementEnabled:i!==`none`&&r===!0,newslettersUiEnabled:r===!0,paidMembersEnabled:n===!0})};export{Gn 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]=`21670d07-ae64-4620-8ca0-13a8f517e16f`,e._sentryDebugIdIdentifier=`sentry-dbid-21670d07-ae64-4620-8ca0-13a8f517e16f`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{i as n,l as r}from"./framework-provider-CIvHFnik.js";import{c as i,g as a,i as o,j as s,n as c,o as l,r as u,t as d,u as f}from"./hooks-C-BDQ6Hs.js";import{t as p}from"./src-BwdakGcc.js";import{i as m}from"./users-CzgQKbfO.js";var h=e(t(),1);function g(e,t){let i=n(t),a=i.getQueryCache();return h.useSyncExternalStore(h.useCallback(e=>a.subscribe(r.batchCalls(e)),[a]),()=>i.isFetching(e),()=>i.isFetching(e))}var _=`status:free`,v=`status:-free`,y=`${_},${v}`;function b(e){return e===`all`?y:!e||e===`none`?null:e}var x=[_,v];function S(e){let t=(e||``).split(`,`),n=[],r=[];for(let e of t)x.includes(e.trim())?n.includes(e)||n.push(e):e.trim()!==``&&(r.includes(e)||r.push(e));return{free:n.includes(_),paid:n.includes(v),base:n,specific:r}}function ee(e,{paidAvailable:t=!0}={}){let n=new Set([...e.base,...e.specific]);return t||n.delete(v),Array.from(n).join(`,`)||null}function C(e){return e?e===`status:free`?`free`:e===`status:-free`?`paid`:e.includes(`status:free`)&&e.includes(`status:-free`)?`all`:`specific`:`none`}function w({slug:e,visibility:t}){let n=[`newsletters.slug:${e}`,`email_disabled:0`];return t===`paid`&&n.push(v),n.join(`+`)}function T(e,t){let n=e;return t&&(n+=`+(${t})`),n}var E=e=>`${e.type}:${e.data.id}`,D=e=>e===`email_complaint_event`?[`email_complaint_event`,`email_complained_event`]:[e];function O(e){let t=e.data.created_at;if(!t||!Number.isFinite(Date.parse(t)))throw Error(`Member activity returned an event without a valid timestamp.`);return new Date(t).toISOString().replace(`T`,` `).replace(/(?:\.000)?Z$/,``)}function te(e){for(let t of e)if(O(t),typeof t.data.id!=`string`||!t.data.id||!t.type)throw Error(`Member activity returned an event without a valid identity.`)}function k(e,t){let n=e.meta?.pagination.total;return typeof n==`number`?n>e.events.length:e.events.length>=t}async function A({read:e,filter:t=``,limit:n,cursor:r={kind:`older`},signal:i}){if(!Number.isInteger(n)||n<1)throw Error(`Member activity page size must be a positive integer.`);let a=r.kind===`boundary`?{...r,seen:[...r.seen],completedTypes:[...r.completedTypes]}:{...r},o=[],s=async(n,r)=>{i?.throwIfAborted();let a=await e({filter:[t,...n].filter(Boolean).join(`+`),limit:String(r)});if(i?.throwIfAborted(),te(a.events),a.events.length>r||!a.events.length&&k(a,r))throw Error(`Member activity pagination did not make progress.`);return a};for(;o.length<n;){let e=n-o.length;if(a.kind===`older`){let t=a.before,r=await s(t?[`data.created_at:<${p(t)}`]:[],e);if(t&&r.events.some(e=>O(e)>=t))throw Error(`Member activity returned events outside the requested time range.`);if(o.push(...r.events),!k(r,e))return{events:o,meta:r.meta};let i=O(r.events[r.events.length-1]);if(a={kind:`boundary`,timestamp:i,seen:r.events.filter(e=>O(e)===i).map(E),completedTypes:[]},o.length===n)return{events:o,meta:r.meta,nextCursor:a};continue}let t=`data.created_at:${p(a.timestamp)}`;if(!a.currentType){let e=await s([t,...a.completedTypes.length?[`type:-[${a.completedTypes.flatMap(D).map(p).join(`,`)}]`]:[]],1),n=e.events[0];if(!n||!a.completedTypes.length&&e.meta?.pagination.total===a.seen.length){a={kind:`older`,before:a.timestamp};continue}if(O(n)!==a.timestamp||a.completedTypes.includes(n.type))throw Error(`Member activity returned events outside the requested type or timestamp.`);a.currentType=n.type}let r=a.beforeId,i=a.currentType,c=a.timestamp,l=await s([t,`type:[${D(i).map(p).join(`,`)}]`,...r?[`id:<${p(r)}`]:[]],e);if(l.events.some(e=>e.type!==i||O(e)!==c||r&&String(e.data.id)>=r))throw Error(`Member activity returned events outside the requested cursor.`);let u=new Set(a.seen);o.push(...l.events.filter(e=>!u.has(E(e)))),k(l,e)?a.beforeId=l.events.map(e=>String(e.data.id)).sort()[0]:(a.completedTypes.push(a.currentType),a.currentType=void 0,a.beforeId=void 0)}return{events:o,nextCursor:a}}function j({memberId:e,excludedEvents:t=[],limit:n=50,enabled:r=!0,defaultErrorHandler:o=!0}={}){let c=f(),l=a(),u=[t.length&&`type:-[${t.map(p).join(`,`)}]`,e&&`data.member_id:${p(e)}`].filter(Boolean).join(`+`),d=s({queryKey:[`MemberActivityFeedResponseType`,i(`/members/events/`,{filter:u,limit:String(n)}),`timeline`],enabled:r,initialPageParam:{kind:`older`},queryFn:({pageParam:e,signal:t})=>A({read:e=>c(i(`/members/events/`,e)),filter:u,limit:n,cursor:e,signal:t}),getNextPageParam:e=>e.nextCursor}),m=(0,h.useMemo)(()=>d.data&&{events:d.data.pages.flatMap(e=>e.events),meta:d.data.pages[0]?.meta,isEnd:!d.data.pages[d.data.pages.length-1]?.nextCursor},[d.data]);return(0,h.useEffect)(()=>{d.error&&o&&l(d.error)},[d.error,l,o]),{...d,data:m}}var M=`MembersResponseType`,N=`/members/`,P={limit:`1`},F=()=>[M,i(N,P)],I=()=>g({queryKey:[M]})>0,L=u({dataType:M,path:N}),R=u({dataType:M,path:N,defaultSearchParams:P});function z(){let{data:e}=l(),{data:t}=R({enabled:!!(e&&m(e))});return t?.meta?.pagination.total}var B=60*1e3,V=()=>Promise.resolve(),H=u({dataType:M,path:N});function U(e,{requestOptions:t}={}){let n=l({requestOptions:t}),{data:r}=n,i=!!(r&&m(r)),a=i&&e!=null,o=H({searchParams:{filter:e??``,order:`id`,limit:`1`,page:`1`},staleTime:B,enabled:a,defaultErrorHandler:!1,requestOptions:t});return n.isError?{count:null,isLoading:!1,isFetching:n.isFetching,error:n.error,refetch:async()=>{let t=await n.refetch();return t.isSuccess&&t.data&&m(t.data)&&e!=null?o.refetch():t}}:r===void 0?{count:null,isLoading:!0,isFetching:!1,error:null,refetch:V}:a?o.isError?{count:null,isLoading:!1,isFetching:o.isFetching,error:o.error,refetch:o.refetch}:{count:o.data?.meta?.pagination.total??null,isLoading:o.isLoading,isFetching:o.isFetching,error:o.error,refetch:o.refetch}:{count:i?0:null,isLoading:!1,isFetching:!1,error:null,refetch:V}}function W(e,t){return`${e.toLocaleString()} ${e===1?t:`${t}s`}`}function G(e=``,{count:t,newsletter:n,hasMultipleNewsletters:r=!1}={}){let i=n&&r?`subscriber`:`member`,a=`${i}s`,o=n&&r?` of ${n.name}`:``,s=(n?e.replace(n.recipientFilter,``).replace(/^\+\((.*)\)$/,`$1`):e).split(`,`),c=s.length===1&&s[0]===`status:free`,l=s.length===1&&s[0]===`status:-free`,u=!e||s.includes(`status:free`)&&s.includes(`status:-free`);return t==null?c?`all free ${a}${o}`:l?`all paid ${a}${o}`:u?`all ${a}${o}`:`a custom members segment`:c?W(t,`free ${i}`)+o:l?W(t,`paid ${i}`)+o:W(t,i)+o}var K=c({method:`POST`,path:()=>`/members/`,body:e=>({members:[e]}),invalidateQueries:{dataType:M}});function q(e){return typeof e.meta?.stats?.imported==`number`}function ne({file:e,labels:t=[],mapping:n={}}){let r=new FormData;r.append(`membersfile`,e);for(let e of t)r.append(`labels`,e);for(let[e,t]of Object.entries(n))typeof t==`string`&&r.append(`mapping[${e}]`,t);return r}var J=c({method:`POST`,retry:!1,path:()=>`/members/upload/`,body:ne,invalidateQueries:{dataType:M}}),Y=o({dataType:M,path:e=>`/members/${e}/`}),X=c({method:`POST`,path:({id:e})=>`/members/${e}/commenting/disable`,body:({reason:e,hideComments:t})=>({reason:e,hide_comments:t}),invalidateQueries:{dataType:[`CommentsResponseType`,M]}}),Z=c({method:`POST`,path:({id:e})=>`/members/${e}/commenting/enable`,body:()=>({}),invalidateQueries:{dataType:[`CommentsResponseType`,M]}}),re=d({dataType:M,path:N,defaultSearchParams:{include:`labels,tiers`,limit:`100`,order:`created_at desc`},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.members),r=t[t.length-1].meta;return{members:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}});function ie(e){return!e?.filter&&!e?.search}function ae(e,t){let r=n(),i=e.data?.meta?.pagination?.total,a=ie(t);(0,h.useEffect)(()=>{if(!(a&&!e.isError&&!e.isPlaceholderData&&typeof i==`number`))return;let t=F(),n=r.getQueryState(t),o=n?.data,s=o?.meta?.pagination;if(!n||!o||!s)return;let c=s.total===i,l=n.dataUpdatedAt<=e.dataUpdatedAt;c||!l||r.setQueryData(t,{...o,meta:{...o.meta,pagination:{...s,total:i}}},{updatedAt:e.dataUpdatedAt})},[r,a,i,e.dataUpdatedAt,e.isError,e.isPlaceholderData])}function oe(e={}){let t=re(e);return ae(t,e.searchParams),t}function Q({filter:e,search:t,all:n}){if(!n&&!e&&!t)throw Error(`Bulk operation requires a filter, search, or all flag`);let r={};return n&&(r.all=`true`),e&&(r.filter=e),t&&(r.search=t),r}var se=c({method:`PUT`,path:()=>`/members/bulk/`,body:({action:e})=>({bulk:{action:e.type,meta:e.meta||{},newsletter:e.newsletter}}),searchParams:Q,invalidateQueries:{dataType:M}}),ce=c({method:`DELETE`,path:()=>`/members/`,searchParams:Q,invalidateQueries:{dataType:M}}),le=c({method:`PUT`,path:({id:e})=>`/members/${e}/`,searchParams:()=>({include:`tiers,metafields`}),body:({id:e,...t})=>({members:[{id:e,...t}]}),invalidateQueries:{dataType:M}}),ue=c({method:`DELETE`,path:({id:e})=>`/members/${e}/`,searchParams:({cancel:e})=>({cancel:e?`true`:`false`}),invalidateQueries:{dataType:M}}),de=o({dataType:`MemberSigninUrlResponseType`,path:e=>`/members/${e}/signin_urls/`,returnData:e=>e.member_signin_urls?.[0]??{member_id:``,url:``}}),fe=c({method:`DELETE`,path:({id:e})=>`/members/${e}/sessions/`,invalidateQueries:{dataType:M}}),pe=c({method:`PUT`,path:({memberId:e,subscriptionId:t})=>`/members/${e}/subscriptions/${t}/`,body:({cancelAtPeriodEnd:e,status:t})=>({...e===void 0?{}:{cancel_at_period_end:e},...t?{status:t}:{}}),invalidateQueries:{dataType:M}}),me=c({method:`DELETE`,path:({id:e})=>`/members/${e}/suppression/`,invalidateQueries:{dataType:M}}),$=`20`;function he(e){let t=e[e.length-1]?.data?.created_at;if(t)return new Date(t).toISOString().slice(0,19).replace(`T`,` `)}function ge(e,t){return[t.length>0&&`type:-[${t.map(p).join(`,`)}]`,`data.member_id:'${e}'`].filter(Boolean).join(`+`)}var _e=d({dataType:`MemberActivityFeedResponseType`,path:`/members/events/`,defaultSearchParams:{limit:$},defaultNextPageParams:(e,t)=>{let n=Number(t.limit??$),r=he(e.events);if(!(!r||e.events.length<n))return{...t,filter:`data.created_at:<'${r}'+${t.filter??``}`}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.events),r=t[t.length-1],i=r?.meta?.pagination?.limit,a=typeof i==`number`?i:Number($);return{events:n,meta:r?.meta,isEnd:(r?.events.length??0)<a}}});function ve(e,t={}){let{limit:n=$,enabled:r,excludedEvents:i=[]}=t;return _e({searchParams:{filter:ge(e,i),limit:n},...r===void 0?{}:{enabled:r}})}export{b as A,y as C,T as D,ee as E,w as O,j as S,v as T,fe as _,oe as a,I as b,ue as c,pe as d,Z as f,z as g,ve as h,L as i,S as j,C as k,X as l,Y as m,G as n,ce as o,J as p,K as r,se as s,q as t,le as u,de as v,_ as w,me as x,U as y};
|
|
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]=`b041681b-6379-462e-beb6-2aa9076b4540`,e._sentryDebugIdIdentifier=`sentry-dbid-b041681b-6379-462e-beb6-2aa9076b4540`)}catch{}})();import{s as e,t}from"./react-C9lG_SsT.js";import{i as n,l as r}from"./framework-provider-CIvHFnik.js";import{c as i,g as a,i as o,j as s,n as c,o as l,r as u,t as d,u as f}from"./hooks-0r7qxGEo.js";import{t as p}from"./src-BwdakGcc.js";import{i as m}from"./users-CKJaAxEJ.js";var h=e(t(),1);function g(e,t){let i=n(t),a=i.getQueryCache();return h.useSyncExternalStore(h.useCallback(e=>a.subscribe(r.batchCalls(e)),[a]),()=>i.isFetching(e),()=>i.isFetching(e))}var _=`status:free`,v=`status:-free`,y=`${_},${v}`;function b(e){return e===`all`?y:!e||e===`none`?null:e}var x=[_,v];function S(e){let t=(e||``).split(`,`),n=[],r=[];for(let e of t)x.includes(e.trim())?n.includes(e)||n.push(e):e.trim()!==``&&(r.includes(e)||r.push(e));return{free:n.includes(_),paid:n.includes(v),base:n,specific:r}}function ee(e,{paidAvailable:t=!0}={}){let n=new Set([...e.base,...e.specific]);return t||n.delete(v),Array.from(n).join(`,`)||null}function C(e){return e?e===`status:free`?`free`:e===`status:-free`?`paid`:e.includes(`status:free`)&&e.includes(`status:-free`)?`all`:`specific`:`none`}function w({slug:e,visibility:t}){let n=[`newsletters.slug:${e}`,`email_disabled:0`];return t===`paid`&&n.push(v),n.join(`+`)}function T(e,t){let n=e;return t&&(n+=`+(${t})`),n}var E=e=>`${e.type}:${e.data.id}`,D=e=>e===`email_complaint_event`?[`email_complaint_event`,`email_complained_event`]:[e];function O(e){let t=e.data.created_at;if(!t||!Number.isFinite(Date.parse(t)))throw Error(`Member activity returned an event without a valid timestamp.`);return new Date(t).toISOString().replace(`T`,` `).replace(/(?:\.000)?Z$/,``)}function te(e){for(let t of e)if(O(t),typeof t.data.id!=`string`||!t.data.id||!t.type)throw Error(`Member activity returned an event without a valid identity.`)}function k(e,t){let n=e.meta?.pagination.total;return typeof n==`number`?n>e.events.length:e.events.length>=t}async function A({read:e,filter:t=``,limit:n,cursor:r={kind:`older`},signal:i}){if(!Number.isInteger(n)||n<1)throw Error(`Member activity page size must be a positive integer.`);let a=r.kind===`boundary`?{...r,seen:[...r.seen],completedTypes:[...r.completedTypes]}:{...r},o=[],s=async(n,r)=>{i?.throwIfAborted();let a=await e({filter:[t,...n].filter(Boolean).join(`+`),limit:String(r)});if(i?.throwIfAborted(),te(a.events),a.events.length>r||!a.events.length&&k(a,r))throw Error(`Member activity pagination did not make progress.`);return a};for(;o.length<n;){let e=n-o.length;if(a.kind===`older`){let t=a.before,r=await s(t?[`data.created_at:<${p(t)}`]:[],e);if(t&&r.events.some(e=>O(e)>=t))throw Error(`Member activity returned events outside the requested time range.`);if(o.push(...r.events),!k(r,e))return{events:o,meta:r.meta};let i=O(r.events[r.events.length-1]);if(a={kind:`boundary`,timestamp:i,seen:r.events.filter(e=>O(e)===i).map(E),completedTypes:[]},o.length===n)return{events:o,meta:r.meta,nextCursor:a};continue}let t=`data.created_at:${p(a.timestamp)}`;if(!a.currentType){let e=await s([t,...a.completedTypes.length?[`type:-[${a.completedTypes.flatMap(D).map(p).join(`,`)}]`]:[]],1),n=e.events[0];if(!n||!a.completedTypes.length&&e.meta?.pagination.total===a.seen.length){a={kind:`older`,before:a.timestamp};continue}if(O(n)!==a.timestamp||a.completedTypes.includes(n.type))throw Error(`Member activity returned events outside the requested type or timestamp.`);a.currentType=n.type}let r=a.beforeId,i=a.currentType,c=a.timestamp,l=await s([t,`type:[${D(i).map(p).join(`,`)}]`,...r?[`id:<${p(r)}`]:[]],e);if(l.events.some(e=>e.type!==i||O(e)!==c||r&&String(e.data.id)>=r))throw Error(`Member activity returned events outside the requested cursor.`);let u=new Set(a.seen);o.push(...l.events.filter(e=>!u.has(E(e)))),k(l,e)?a.beforeId=l.events.map(e=>String(e.data.id)).sort()[0]:(a.completedTypes.push(a.currentType),a.currentType=void 0,a.beforeId=void 0)}return{events:o,nextCursor:a}}function j({memberId:e,excludedEvents:t=[],limit:n=50,enabled:r=!0,defaultErrorHandler:o=!0}={}){let c=f(),l=a(),u=[t.length&&`type:-[${t.map(p).join(`,`)}]`,e&&`data.member_id:${p(e)}`].filter(Boolean).join(`+`),d=s({queryKey:[`MemberActivityFeedResponseType`,i(`/members/events/`,{filter:u,limit:String(n)}),`timeline`],enabled:r,initialPageParam:{kind:`older`},queryFn:({pageParam:e,signal:t})=>A({read:e=>c(i(`/members/events/`,e)),filter:u,limit:n,cursor:e,signal:t}),getNextPageParam:e=>e.nextCursor}),m=(0,h.useMemo)(()=>d.data&&{events:d.data.pages.flatMap(e=>e.events),meta:d.data.pages[0]?.meta,isEnd:!d.data.pages[d.data.pages.length-1]?.nextCursor},[d.data]);return(0,h.useEffect)(()=>{d.error&&o&&l(d.error)},[d.error,l,o]),{...d,data:m}}var M=`MembersResponseType`,N=`/members/`,P={limit:`1`},F=()=>[M,i(N,P)],I=()=>g({queryKey:[M]})>0,L=u({dataType:M,path:N}),R=u({dataType:M,path:N,defaultSearchParams:P});function z(){let{data:e}=l(),{data:t}=R({enabled:!!(e&&m(e))});return t?.meta?.pagination.total}var B=60*1e3,V=()=>Promise.resolve(),H=u({dataType:M,path:N});function U(e,{requestOptions:t}={}){let n=l({requestOptions:t}),{data:r}=n,i=!!(r&&m(r)),a=i&&e!=null,o=H({searchParams:{filter:e??``,order:`id`,limit:`1`,page:`1`},staleTime:B,enabled:a,defaultErrorHandler:!1,requestOptions:t});return n.isError?{count:null,isLoading:!1,isFetching:n.isFetching,error:n.error,refetch:async()=>{let t=await n.refetch();return t.isSuccess&&t.data&&m(t.data)&&e!=null?o.refetch():t}}:r===void 0?{count:null,isLoading:!0,isFetching:!1,error:null,refetch:V}:a?o.isError?{count:null,isLoading:!1,isFetching:o.isFetching,error:o.error,refetch:o.refetch}:{count:o.data?.meta?.pagination.total??null,isLoading:o.isLoading,isFetching:o.isFetching,error:o.error,refetch:o.refetch}:{count:i?0:null,isLoading:!1,isFetching:!1,error:null,refetch:V}}function W(e,t){return`${e.toLocaleString()} ${e===1?t:`${t}s`}`}function G(e=``,{count:t,newsletter:n,hasMultipleNewsletters:r=!1}={}){let i=n&&r?`subscriber`:`member`,a=`${i}s`,o=n&&r?` of ${n.name}`:``,s=(n?e.replace(n.recipientFilter,``).replace(/^\+\((.*)\)$/,`$1`):e).split(`,`),c=s.length===1&&s[0]===`status:free`,l=s.length===1&&s[0]===`status:-free`,u=!e||s.includes(`status:free`)&&s.includes(`status:-free`);return t==null?c?`all free ${a}${o}`:l?`all paid ${a}${o}`:u?`all ${a}${o}`:`a custom members segment`:c?W(t,`free ${i}`)+o:l?W(t,`paid ${i}`)+o:W(t,i)+o}var K=c({method:`POST`,path:()=>`/members/`,body:e=>({members:[e]}),invalidateQueries:{dataType:M}});function q(e){return typeof e.meta?.stats?.imported==`number`}function ne({file:e,labels:t=[],mapping:n={}}){let r=new FormData;r.append(`membersfile`,e);for(let e of t)r.append(`labels`,e);for(let[e,t]of Object.entries(n))typeof t==`string`&&r.append(`mapping[${e}]`,t);return r}var J=c({method:`POST`,retry:!1,path:()=>`/members/upload/`,body:ne,invalidateQueries:{dataType:[M,`LabelsResponseType`]}}),Y=o({dataType:M,path:e=>`/members/${e}/`}),X=c({method:`POST`,path:({id:e})=>`/members/${e}/commenting/disable`,body:({reason:e,hideComments:t})=>({reason:e,hide_comments:t}),invalidateQueries:{dataType:[`CommentsResponseType`,M]}}),Z=c({method:`POST`,path:({id:e})=>`/members/${e}/commenting/enable`,body:()=>({}),invalidateQueries:{dataType:[`CommentsResponseType`,M]}}),re=d({dataType:M,path:N,defaultSearchParams:{include:`labels,tiers`,limit:`100`,order:`created_at desc`},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.members),r=t[t.length-1].meta;return{members:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}});function ie(e){return!e?.filter&&!e?.search}function ae(e,t){let r=n(),i=e.data?.meta?.pagination?.total,a=ie(t);(0,h.useEffect)(()=>{if(!(a&&!e.isError&&!e.isPlaceholderData&&typeof i==`number`))return;let t=F(),n=r.getQueryState(t),o=n?.data,s=o?.meta?.pagination;if(!n||!o||!s)return;let c=s.total===i,l=n.dataUpdatedAt<=e.dataUpdatedAt;c||!l||r.setQueryData(t,{...o,meta:{...o.meta,pagination:{...s,total:i}}},{updatedAt:e.dataUpdatedAt})},[r,a,i,e.dataUpdatedAt,e.isError,e.isPlaceholderData])}function oe(e={}){let t=re(e);return ae(t,e.searchParams),t}function Q({filter:e,search:t,all:n}){if(!n&&!e&&!t)throw Error(`Bulk operation requires a filter, search, or all flag`);let r={};return n&&(r.all=`true`),e&&(r.filter=e),t&&(r.search=t),r}var se=c({method:`PUT`,path:()=>`/members/bulk/`,body:({action:e})=>({bulk:{action:e.type,meta:e.meta||{},newsletter:e.newsletter}}),searchParams:Q,invalidateQueries:{dataType:M}}),ce=c({method:`DELETE`,path:()=>`/members/`,searchParams:Q,invalidateQueries:{dataType:M}}),le=c({method:`PUT`,path:({id:e})=>`/members/${e}/`,searchParams:()=>({include:`tiers,metafields`}),body:({id:e,...t})=>({members:[{id:e,...t}]}),invalidateQueries:{dataType:M}}),ue=c({method:`DELETE`,path:({id:e})=>`/members/${e}/`,searchParams:({cancel:e})=>({cancel:e?`true`:`false`}),invalidateQueries:{dataType:M}}),de=o({dataType:`MemberSigninUrlResponseType`,path:e=>`/members/${e}/signin_urls/`,returnData:e=>e.member_signin_urls?.[0]??{member_id:``,url:``}}),fe=c({method:`DELETE`,path:({id:e})=>`/members/${e}/sessions/`,invalidateQueries:{dataType:M}}),pe=c({method:`PUT`,path:({memberId:e,subscriptionId:t})=>`/members/${e}/subscriptions/${t}/`,body:({cancelAtPeriodEnd:e,status:t})=>({...e===void 0?{}:{cancel_at_period_end:e},...t?{status:t}:{}}),invalidateQueries:{dataType:M}}),me=c({method:`DELETE`,path:({id:e})=>`/members/${e}/suppression/`,invalidateQueries:{dataType:M}}),$=`20`;function he(e){let t=e[e.length-1]?.data?.created_at;if(t)return new Date(t).toISOString().slice(0,19).replace(`T`,` `)}function ge(e,t){return[t.length>0&&`type:-[${t.map(p).join(`,`)}]`,`data.member_id:'${e}'`].filter(Boolean).join(`+`)}var _e=d({dataType:`MemberActivityFeedResponseType`,path:`/members/events/`,defaultSearchParams:{limit:$},defaultNextPageParams:(e,t)=>{let n=Number(t.limit??$),r=he(e.events);if(!(!r||e.events.length<n))return{...t,filter:`data.created_at:<'${r}'+${t.filter??``}`}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.events),r=t[t.length-1],i=r?.meta?.pagination?.limit,a=typeof i==`number`?i:Number($);return{events:n,meta:r?.meta,isEnd:(r?.events.length??0)<a}}});function ve(e,t={}){let{limit:n=$,enabled:r,excludedEvents:i=[]}=t;return _e({searchParams:{filter:ge(e,i),limit:n},...r===void 0?{}:{enabled:r}})}export{b as A,y as C,T as D,ee as E,w as O,j as S,v as T,fe as _,oe as a,I as b,ue as c,pe as d,Z as f,z as g,ve as h,L as i,S as j,C as k,X as l,Y as m,G as n,ce as o,J as p,K as r,se as s,q as t,le as u,de as v,_ as w,me as x,U as y};
|