ghost 6.62.0 → 6.64.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/bin/lib/duplicate-deps.js +204 -0
- package/bin/validate-adapters.js +50 -6
- package/components/tryghost-adapter-base-jobs-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
- package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
- package/components/tryghost-api-framework-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.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-cards-10.3.6.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.1.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-lexical-html-renderer-1.5.1.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
- package/components/tryghost-limit-service-0.0.0.tgz +0 -0
- package/components/tryghost-metafield-types-0.0.0.tgz +0 -0
- package/content/themes/source/assets/built/screen.css +1 -1
- package/content/themes/source/assets/css/screen.css +1 -1
- package/content/themes/source/package.json +7 -7
- package/content/themes/source/partials/post-card.hbs +1 -1
- package/core/boot.js +17 -9
- package/core/built/admin/assets/Combination-DWfJPcz9.js +41 -0
- package/core/built/admin/assets/{PolarAngleAxis-pkMyqz8g.js → PolarAngleAxis-a81ieQUO.js} +2 -2
- package/core/built/admin/assets/RadialBarChart-CHRBhiBN.js +1 -0
- package/core/built/admin/assets/_baseAssignValue-DcPokYW8.js +1 -0
- package/core/built/admin/assets/about-39CAfroa.js +1 -0
- package/core/built/admin/assets/accordion-CJmRaqK7.js +1 -0
- package/core/built/admin/assets/account-migration-DYf7skbb.js +1 -0
- package/core/built/admin/assets/action-list-Crnh-_UI.js +1 -0
- package/core/built/admin/assets/activitypub/{account-migration-By69CgCp.js → account-migration-KA6Jjf9L.js} +7 -7
- package/core/built/admin/assets/activitypub/activitypub.js +3 -3
- package/core/built/admin/assets/activitypub/{avatar-DLPL3Abs.js → avatar-DVJF5bxP.js} +2 -2
- package/core/built/admin/assets/activitypub/{avatar-flipboard-C9iDY-QV.js → avatar-flipboard-csQaNeYK.js} +2 -2
- package/core/built/admin/assets/activitypub/{bluesky-sharing-BJcPMrDd.js → bluesky-sharing-C7nTDMvw.js} +9 -9
- package/core/built/admin/assets/activitypub/{content-formatters-3rTHg3mp.js → content-formatters-CLcjaBwV.js} +4 -4
- package/core/built/admin/assets/activitypub/{copy-DIAOQoCZ.js → copy-DcOh8kXw.js} +2 -2
- package/core/built/admin/assets/activitypub/{domain-DUR4xSkV.js → domain-fZ-X8i4-.js} +9 -9
- package/core/built/admin/assets/activitypub/{edit-profile-BqtfzxCp.js → edit-profile-BqMLQV88.js} +6 -6
- package/core/built/admin/assets/activitypub/{explore-BxuJd-J4.js → explore-B4yPoP8E.js} +10 -10
- package/core/built/admin/assets/activitypub/{feed-BM1TcksA.js → feed-BRC_mvAe.js} +9 -9
- package/core/built/admin/assets/activitypub/{field-Dn7HHx2-.js → field-COacNgOt.js} +3 -3
- package/core/built/admin/assets/activitypub/{hash-Bm3WxYN4.js → hash-C7u-irQQ.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-CCjkuow2.js → inbox-BW-yvUoN.js} +10 -10
- package/core/built/admin/assets/activitypub/{inbox-d8oJRTf4.js → inbox-CbTTdDQ3.js} +2 -2
- package/core/built/admin/assets/activitypub/{label-1AA_s9Fa.js → label-kPMmYI7l.js} +3 -3
- package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-CnmxEB8w.js → moderation-CuidJzc0.js} +10 -10
- package/core/built/admin/assets/activitypub/{note-ZKc_Bnba.js → note-CAMRRSqD.js} +7 -7
- package/core/built/admin/assets/activitypub/{notifications-CB2tJZau.js → notifications-BmNlXGgp.js} +9 -9
- package/core/built/admin/assets/activitypub/{onboarding-BsJ9E5qf.js → onboarding-Bqg7fh_L.js} +2 -2
- package/core/built/admin/assets/activitypub/{onboarding-CSUJJIlh.js → onboarding-Dmun9jr_.js} +2 -2
- package/core/built/admin/assets/activitypub/{preferences-0-JZnUkI.js → preferences--oH19wf9.js} +11 -11
- package/core/built/admin/assets/activitypub/{profile-C35cFIhM.js → profile-DH_tQx2D.js} +14 -14
- package/core/built/admin/assets/activitypub/{reply-DYK5vVqb.js → reply-Cap9PxSH.js} +2 -2
- package/core/built/admin/assets/activitypub/{routes-BD4vscyc.js → routes-DdyY9uFF.js} +30 -30
- package/core/built/admin/assets/activitypub/{separator-BbQqTm-p.js → separator-CAxxu8VV.js} +3 -3
- package/core/built/admin/assets/activitypub/{settings-BsMROdqh.js → settings-B6EEcVkW.js} +6 -6
- package/core/built/admin/assets/activitypub/{site-O0RL9YCN.js → site-BYps63oh.js} +2 -2
- package/core/built/admin/assets/activitypub/{step-1-BMSx7c_X.js → step-1-CKjR2KAm.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-2-DtPQzlTH.js → step-2-B6PKfOUQ.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-3-CLlOZTyt.js → step-3-C-qBbcUo.js} +11 -11
- package/core/built/admin/assets/activitypub/{tabs-Dxk-b9M-.js → tabs-DLhZtVde.js} +6 -6
- package/core/built/admin/assets/activitypub/{topic-filter-5yZH6tId.js → topic-filter-DsUOuu0k.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CV50qe03.js → use-activity-pub-queries-CX9snsLs.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-Bmk5h4lW.js → use-navigate-with-base-path-DsJTGDSS.js} +988 -959
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-Cbvzgjzd.js → use-reply-chain-data-AJi9zkzm.js} +5 -5
- package/core/built/admin/assets/activitypub/{users-BjcoP_HC.js → users-inweyKL5.js} +186 -160
- package/core/built/admin/assets/activitypub/{x-DbQZOLiI.js → x-DR8AT3-4.js} +2 -2
- package/core/built/admin/assets/add-integration-modal-B12oRifD.js +1 -0
- package/core/built/admin/assets/add-newsletter-modal-CTvXiIqY.js +1 -0
- package/core/built/admin/assets/add-recommendation-modal-CJf92edY.js +1 -0
- package/core/built/admin/assets/analytics-PHR1Fggi.js +1 -0
- package/core/built/admin/assets/announcement-bar-modal-Bql0CXdp.js +1 -0
- package/core/built/admin/assets/api-keys-CubH-7_H.js +1 -0
- package/core/built/admin/assets/{api-keys-3-0vJC3Y.js → api-keys-omLA6iYn.js} +1 -1
- package/core/built/admin/assets/{audience-CtbA54Sn.js → audience-6GXevic-.js} +1 -1
- package/core/built/admin/assets/automated-emails-DJQ4uNZo.js +1 -0
- package/core/built/admin/assets/automations-DcZSLFDU.js +1 -0
- package/core/built/admin/assets/automations-hDVcRPjh.js +1 -0
- package/core/built/admin/assets/avatar-flipboard-DiAGgshK.js +1 -0
- package/core/built/admin/assets/badge-qP06OT7C.js +1 -0
- package/core/built/admin/assets/bluesky-sharing-CJw4d4Mf.js +1 -0
- package/core/built/admin/assets/box-CZ_LSVSy.js +1 -0
- package/core/built/admin/assets/brand-icon-D3ffDYaC.js +1 -0
- package/core/built/admin/assets/breadcrumb-Chn1Ip_q.js +1 -0
- package/core/built/admin/assets/button-DvIh2Bq-.js +1 -0
- package/core/built/admin/assets/calendar-1QGoStFM.js +1 -0
- package/core/built/admin/assets/card-FHQ4D10L.js +1 -0
- package/core/built/admin/assets/chart-helpers-CNpA7re_.js +1 -0
- package/core/built/admin/assets/{chart-BrhA41Zi.js → chart-jVz9Nf9t.js} +9 -9
- package/core/built/admin/assets/checkbox-DKht9xMl.js +1 -0
- package/core/built/admin/assets/{chunk-KS7C4IRE-DCsL4i4D.js → chunk-KS7C4IRE-DhOcHQOU.js} +1 -1
- package/core/built/admin/assets/chunk.368.22ce1b732c0b40abd3f1.js +479 -0
- package/core/built/admin/assets/chunk.524.cc9be98e44890cedc8c8.js +25 -0
- package/core/built/admin/assets/{chunk.582.5ed5d124cfca9c259b9c.js → chunk.582.e6fe742b3217207b11a6.js} +23 -30
- package/core/built/admin/assets/{chunk.492.f24d855d7e3f3aad261c.js → chunk.972.4b8c97f93d66db15e751.js} +13582 -11017
- package/core/built/admin/assets/clean-tracked-url-dkN05vOf.js +1 -0
- package/core/built/admin/assets/code-editor-view-BLQIV85-.js +1 -0
- package/core/built/admin/assets/code-editor-view-Cg5eJxcr.js +1 -0
- package/core/built/admin/assets/color-picker-DQoghc0t.js +3 -0
- package/core/built/admin/assets/color-picker-field-BbeK5RRs.js +1 -0
- package/core/built/admin/assets/combobox-weO4FBbv.js +1 -0
- package/core/built/admin/assets/command-DlLrCm9V.js +1 -0
- package/core/built/admin/assets/comments-BjTitLmP.js +1 -0
- package/core/built/admin/assets/components-CwL6a6As-CCRaoCeP.js +1 -0
- package/core/built/admin/assets/{config-DOMQDZGZ.js → config-BPljH6wF.js} +1 -1
- package/core/built/admin/assets/confirmation-context-IyqoXVk-.js +1 -0
- package/core/built/admin/assets/container-DAimjOF_.js +1 -0
- package/core/built/admin/assets/content-api-modal-0ZjuLcQ8.js +1 -0
- package/core/built/admin/assets/context-menu-BtioYFrg.js +1 -0
- package/core/built/admin/assets/copy-field-C6ujqJlP.js +1 -0
- package/core/built/admin/assets/create-ghost-browse-value-source-DAZMWZNq.js +1 -0
- package/core/built/admin/assets/custom-integration-modal-Dm8QI_J4.js +1 -0
- package/core/built/admin/assets/data-list-C0CKkeWW.js +1 -0
- package/core/built/admin/assets/date-range-select-DrjHQdgz.js +1 -0
- package/core/built/admin/assets/design-and-theme-modal-CXVOzBWu.js +2 -0
- package/core/built/admin/assets/detail-page-QpLIL-EO.js +1 -0
- package/core/built/admin/assets/dirty-confirm-dialog-DWwxREGh.js +1 -0
- package/core/built/admin/assets/disabled-sources-indicator-CLZhMv8J.js +1 -0
- package/core/built/admin/assets/dist-BRQkNYN1.js +11 -0
- package/core/built/admin/assets/{dist-B3keLvjj.js → dist-BXHrDV19.js} +2 -2
- package/core/built/admin/assets/dist-Bf-HQtVL.js +1 -0
- package/core/built/admin/assets/dist-Bm-PB47a.js +6 -0
- package/core/built/admin/assets/{dist-B6bJuxL3.js → dist-C2lYC76d.js} +1 -1
- package/core/built/admin/assets/dist-CUwte9v_.js +1 -0
- package/core/built/admin/assets/dist-Cm2qbZKL.js +1 -0
- package/core/built/admin/assets/{dist-BtaTA7Ii.js → dist-D7yMk931.js} +1 -1
- package/core/built/admin/assets/{dist-zwwGt8Yf.js → dist-DNAdeRyr.js} +1 -1
- package/core/built/admin/assets/dist-DS6zpxid.js +1 -0
- package/core/built/admin/assets/dist-DVVKsyPh.js +23 -0
- package/core/built/admin/assets/dist-DxfQlAmn.js +1 -0
- package/core/built/admin/assets/dist-DziNzWI2.js +1 -0
- package/core/built/admin/assets/dist-FEQQAwTe.js +1 -0
- package/core/built/admin/assets/dist-nmRzULcD.js +1 -0
- package/core/built/admin/assets/domain-DBrBic6q.js +1 -0
- package/core/built/admin/assets/dropzone-D61QVcEY.js +5 -0
- package/core/built/admin/assets/edit-profile-jCqJBxqw.js +1 -0
- package/core/built/admin/assets/editor-8Fm4UBEd.js +8 -0
- package/core/built/admin/assets/editor-screen-BSX_uC2B.js +27 -0
- package/core/built/admin/assets/email-previews-Bs-JDhIw.js +1 -0
- package/core/built/admin/assets/email-sending-status-context-C76KYL1V.js +1 -0
- package/core/built/admin/assets/email-sending-status-provider-DnNhlIvt.js +1 -0
- package/core/built/admin/assets/emails-CgvIIz3q.js +1 -0
- package/core/built/admin/assets/{embed-signup-form-modal-Ds6mPEi5.js → embed-signup-form-modal-DqtBs1WE.js} +1 -1
- package/core/built/admin/assets/empty-indicator-L4Ql5Db7.js +1 -0
- package/core/built/admin/assets/en-Cx75dJv5.js +1 -0
- package/core/built/admin/assets/esm--rhhUGIG.js +2 -0
- package/core/built/admin/assets/explore-DXhDCtKw.js +1 -0
- package/core/built/admin/assets/feature-flag-overrides-context-CrcQKm9Z.js +1 -0
- package/core/built/admin/assets/feature-image-placeholder-e2q6TcH6.js +1 -0
- package/core/built/admin/assets/feed-mmt4noNL.js +1 -0
- package/core/built/admin/assets/feedback-BTPBQLT5.js +1 -0
- package/core/built/admin/assets/field-p7KnP98B.js +1 -0
- package/core/built/admin/assets/filter-bar-CiIKBg3D.js +1 -0
- package/core/built/admin/assets/filter-sources-I-dRaQxl.js +1 -0
- package/core/built/admin/assets/filters-1injvyxJ.js +1 -0
- package/core/built/admin/assets/filters-DnpO6GWX.js +1 -0
- package/core/built/admin/assets/first-promoter-modal-wr73Dldc.js +1 -0
- package/core/built/admin/assets/focus-koenig-editor-on-bottom-click-CkFA8EkI.js +1 -0
- package/core/built/admin/assets/framework-provider-DB-svAju.js +4 -0
- package/core/built/admin/assets/{ghost-8eabfc1ece81b03cf7b90780d31487e8.css → ghost-8fd5bb799356bbefb254210ba7e1236d.css} +1 -1
- package/core/built/admin/assets/{ghost-c2848508292937415f20f5a830eea59e.js → ghost-a1e6e172c6917e8ef8fa6b0007756d9b.js} +71 -46
- package/core/built/admin/assets/{ghost-dark-a7bebe2c561f55369dcf29f4c820f7ff.css → ghost-dark-cac0cb2d5bb78e9bd14d8d1c2768ed45.css} +1 -1
- package/core/built/admin/assets/gift-link-modal-C3H7YFXO.js +1 -0
- package/core/built/admin/assets/{gift-links-DLDS7ljO.js → gift-links-D8gl_yJS.js} +1 -1
- package/core/built/admin/assets/global-data-context-3MItMry2.js +1 -0
- package/core/built/admin/assets/grid-5vplBYri.js +1 -0
- package/core/built/admin/assets/growth-B1og1kQp.js +1 -0
- package/core/built/admin/assets/growth-Bf6OHZlK.js +3 -0
- package/core/built/admin/assets/heading-BB21QAbb.js +1 -0
- package/core/built/admin/assets/history-modal-t_qEnxPx.js +1 -0
- package/core/built/admin/assets/hooks-DYfTEQLk.js +2 -0
- package/core/built/admin/assets/html-field-COLQbV4r.js +1 -0
- package/core/built/admin/assets/iframe-buffering-Bq1el-gw.js +1 -0
- package/core/built/admin/assets/images-4mvoc3lB.js +1 -0
- package/core/built/admin/assets/{inbox-Mcp4DXZN.js → inbox-DgSZ6w2p.js} +34 -34
- package/core/built/admin/assets/index-B3HZU2i8.css +2 -0
- package/core/built/admin/assets/index-DDd-zhNL.js +4 -0
- package/core/built/admin/assets/index.es-Ct5XQNSj.js +1 -0
- package/core/built/admin/assets/inline-B8H6NzIw.js +1 -0
- package/core/built/admin/assets/input-group-CLIN2ykI.js +1 -0
- package/core/built/admin/assets/{input-surface-BsrIZeSF.js → input-surface-wSO5CRy5.js} +1 -1
- package/core/built/admin/assets/integration-header-CKGrXNVP.js +1 -0
- package/core/built/admin/assets/{integrations-Bjbu86Z0.js → integrations-DnJrZnHv.js} +1 -1
- package/core/built/admin/assets/invite-user-modal-BaN2mdhI.js +1 -0
- package/core/built/admin/assets/jsx-runtime-BlNNh7jY.js +1 -0
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +4 -4
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +2 -2
- package/core/built/admin/assets/{koenig-lexical-DBSqAuiI.js → koenig-lexical-CXVgQFUk.js} +2 -2
- package/core/built/admin/assets/koenig-loader-B1XPPY5C.js +2 -0
- package/core/built/admin/assets/kpi-card-CRLPVlFW.js +1 -0
- package/core/built/admin/assets/kpi-card-CRPbW8NZ.js +1 -0
- package/core/built/admin/assets/kpi-helpers-D7zT96bp.js +1 -0
- package/core/built/admin/assets/kpi-tabs-DE_yh9Go.js +1 -0
- package/core/built/admin/assets/label-CgeBxy4o.js +1 -0
- package/core/built/admin/assets/label-picker-DGDp4Vwr.js +1 -0
- package/core/built/admin/assets/labels-KMkFoRG6.js +1 -0
- package/core/built/admin/assets/layout-DWnOMly4.js +1 -0
- package/core/built/admin/assets/lib-_QYaUU89.js +2 -0
- package/core/built/admin/assets/link-helpers-8J7ixADV.js +1 -0
- package/core/built/admin/assets/links-FwNCVyVe.js +1 -0
- package/core/built/admin/assets/list-page-DLMP0PxC.js +1 -0
- package/core/built/admin/assets/luxon-BXCsmep3.js +1 -0
- package/core/built/admin/assets/member-activity-ClMWFyvN.js +1 -0
- package/core/built/admin/assets/member-activity-feed-BQY5Rwaj.js +1 -0
- package/core/built/admin/assets/member-custom-fields-Dd_ie1zG.js +1 -0
- package/core/built/admin/assets/member-detail-DjwkGVne.js +1 -0
- package/core/built/admin/assets/members--N9lhk1N.js +4 -0
- package/core/built/admin/assets/modal-page-Dz-9TP4E.js +1 -0
- package/core/built/admin/assets/moderation-DfYBKq9s.js +1 -0
- package/core/built/admin/assets/multi-select-combobox-BcBEzUW_.js +1 -0
- package/core/built/admin/assets/navigation-modal-Cd-scywg.js +1 -0
- package/core/built/admin/assets/newsletter-detail-modal-CFRY6vg_.js +1 -0
- package/core/built/admin/assets/newsletter-emails-4ntck1AC.js +1 -0
- package/core/built/admin/assets/newsletter-o6eCJtab.js +1 -0
- package/core/built/admin/assets/newsletters-Bmlv0edG.js +1 -0
- package/core/built/admin/assets/newsletters-Dz77m__5.js +1 -0
- package/core/built/admin/assets/note-CWs3LF-0.js +1 -0
- package/core/built/admin/assets/notifications-BjSvTJqh.js +1 -0
- package/core/built/admin/assets/{nql-BLpCn7qX.js → nql-DnDc7UuU.js} +1 -1
- package/core/built/admin/assets/nql-lang-CeTB_Bhv.js +19 -0
- package/core/built/admin/assets/{offers-9J1CSiLy.js → offers-ByWSK0rR.js} +1 -1
- package/core/built/admin/assets/offers-container-modal-Bc9A196w.js +1 -0
- package/core/built/admin/assets/onboarding-B4hfBi9a.js +1 -0
- package/core/built/admin/assets/onboarding-DV_XbHts.js +1 -0
- package/core/built/admin/assets/onboarding-route-Di1LJYEE.js +1 -0
- package/core/built/admin/assets/overview-DE7NHZQN.js +1 -0
- package/core/built/admin/assets/overview-DEF-ZY6x.js +1 -0
- package/core/built/admin/assets/page-header-B-G_g42C.js +1 -0
- package/core/built/admin/assets/pagemenu-CnkTDO71.js +1 -0
- package/core/built/admin/assets/pages-DZ_YGB1D.js +1 -0
- package/core/built/admin/assets/pages-route-VT7r7YhG.js +1 -0
- package/core/built/admin/assets/papaparse.min-BlhnCUXn.js +10 -0
- package/core/built/admin/assets/pintura-modal-BljM7hf8.js +1 -0
- package/core/built/admin/assets/portal-frame-D9V8iq5x.js +1 -0
- package/core/built/admin/assets/portal-modal-B5OOR9ZD.js +1 -0
- package/core/built/admin/assets/post-analytics-context-bt2YTBAC.js +1 -0
- package/core/built/admin/assets/post-analytics-header-J0WciLx6.js +1 -0
- package/core/built/admin/assets/post-analytics-provider-CgreZDjS.js +1 -0
- package/core/built/admin/assets/post-analytics-rGb-PgD-.js +1 -0
- package/core/built/admin/assets/post-helpers-C88JBa4D.js +1 -0
- package/core/built/admin/assets/post-share-modal-D0BbTo4W.js +1 -0
- package/core/built/admin/assets/post-utils-DKF4mfuo.js +1 -0
- package/core/built/admin/assets/posts-list-screen-CO5jAWoU.js +2 -0
- package/core/built/admin/assets/posts-route-DV-CXWK9.js +1 -0
- package/core/built/admin/assets/posts-tcoO3iRG.js +1 -0
- package/core/built/admin/assets/preferences-Tac29oG6.js +5 -0
- package/core/built/admin/assets/preview-chrome-C2lQgZBZ.js +1 -0
- package/core/built/admin/assets/preview-modal-CjRbBr8U.js +1 -0
- package/core/built/admin/assets/profile-yiM1f_Og.js +1 -0
- package/core/built/admin/assets/prop-types-6lTeqvom.js +1 -0
- package/core/built/admin/assets/radio-group-CKROWsw4.js +1 -0
- package/core/built/admin/assets/react-BXwhMTuc.js +1 -0
- package/core/built/admin/assets/{jsx-runtime-DX3WBWVO.js → react-dom-CMOtJ5MH.js} +2 -2
- package/core/built/admin/assets/{referrers-CnhCMWCs.js → referrers-1R8bPpoV.js} +1 -1
- package/core/built/admin/assets/router-provider-CU87qxXw.js +1 -0
- package/core/built/admin/assets/schemas-BoYdB6YU.js +64 -0
- package/core/built/admin/assets/select-CKaC4ggu.js +1 -0
- package/core/built/admin/assets/settings-81kxUa28.js +1 -0
- package/core/built/admin/assets/settings-BVXFqBVK.js +4 -0
- package/core/built/admin/assets/settings-breadcrumbs-czGRx-iu.js +1 -0
- package/core/built/admin/assets/{shade-app-CcS3f8MZ-vwURazk8.js → shade-app-CcS3f8MZ-D5BnfHck.js} +1 -1
- package/core/built/admin/assets/share-modal-BL-16PiB.js +1 -0
- package/core/built/admin/assets/skeleton-DwCva0-b.js +1 -0
- package/core/built/admin/assets/slack-modal-D7W_fNON.js +1 -0
- package/core/built/admin/assets/sort-button-Dquc83jY.js +1 -0
- package/core/built/admin/assets/source-icon-CQboPZQ3.js +1 -0
- package/core/built/admin/assets/stack-BURz77VS.js +1 -0
- package/core/built/admin/assets/stats-Cvp8Ep5m.js +1 -0
- package/core/built/admin/assets/stats-view-NDja_g96.js +1 -0
- package/core/built/admin/assets/step-1-BKhjy0PV.js +1 -0
- package/core/built/admin/assets/step-2-PxA1OM7R.js +1 -0
- package/core/built/admin/assets/step-3-BJbAiq16.js +2 -0
- package/core/built/admin/assets/stripe-button-C3cfCAou.js +1 -0
- package/core/built/admin/assets/stripe-connect-modal-FyE3Ey2c.js +1 -0
- package/core/built/admin/assets/style-Wd9nQubI.css +1 -0
- package/core/built/admin/assets/switch-zfUUy9Jh.js +1 -0
- package/core/built/admin/assets/table-dE4GTIRT.js +1 -0
- package/core/built/admin/assets/tabs-B3XK93sR.js +1 -0
- package/core/built/admin/assets/tag-detail-D4P-tZdM.js +2 -0
- package/core/built/admin/assets/tag-picker-BNSZ6Qxw.js +1 -0
- package/core/built/admin/assets/tags-BsZcaJ6h.js +1 -0
- package/core/built/admin/assets/{tags-zTFiKRpb.js → tags-NwZ7BPK6.js} +1 -1
- package/core/built/admin/assets/testimonials-modal-Dkt6ODLW.js +1 -0
- package/core/built/admin/assets/text-DC-ot6u2.js +1 -0
- package/core/built/admin/assets/textarea-B4FffFmE.js +1 -0
- package/core/built/admin/assets/themes-DtcEFQWm.js +1 -0
- package/core/built/admin/assets/tier-detail-modal-a77Z2VMH.js +1 -0
- package/core/built/admin/assets/tiers-6mPzCXlM.js +1 -0
- package/core/built/admin/assets/toggle-group-D2p4okmJ.js +1 -0
- package/core/built/admin/assets/topic-filter-DVOe3D-b.js +1 -0
- package/core/built/admin/assets/transistor-modal-C8RMkhOD.js +1 -0
- package/core/built/admin/assets/trend-badge-B9v7kMF8.js +1 -0
- package/core/built/admin/assets/unsplash-modal-DXt7Brum.js +1 -0
- package/core/built/admin/assets/use-analytics-data-ChHqiZXv.js +1 -0
- package/core/built/admin/assets/use-availability-hPdeG76y.js +1 -0
- package/core/built/admin/assets/{use-check-theme-limit-error-Cw3WQHy8.js → use-check-theme-limit-error-JD-J5aaZ.js} +2 -2
- package/core/built/admin/assets/use-email-sending-status-DNMtL5B9.js +1 -0
- package/core/built/admin/assets/use-filter-params-BSFigDIn.js +1 -0
- package/core/built/admin/assets/use-filterable-api-CEMSAYPg.js +1 -0
- package/core/built/admin/assets/use-form-DJKZJhQh.js +1 -0
- package/core/built/admin/assets/use-growth-stats-CqqdnESN.js +1 -0
- package/core/built/admin/assets/use-host-limits-mpTkZIq8.js +1 -0
- package/core/built/admin/assets/use-limiter-DBGjYqu7.js +19 -0
- package/core/built/admin/assets/use-navigate-with-base-path-88EQpw2k.js +1 -0
- package/core/built/admin/assets/use-pintura-config-BmU45Ruy.js +1 -0
- package/core/built/admin/assets/use-pintura-editor-Bz2bZ4iT.js +1 -0
- package/core/built/admin/assets/use-post-referrers-DyPjyBSN.js +1 -0
- package/core/built/admin/assets/use-query-params-DlOHCo-R.js +1 -0
- package/core/built/admin/assets/use-reply-chain-data-DmD2yX5D.js +1 -0
- package/core/built/admin/assets/use-router-history-entry-CKx9LhqD.js +1 -0
- package/core/built/admin/assets/use-sending-eta-CQeG6OP_.js +1 -0
- package/core/built/admin/assets/use-setting-group-Dza6bQ7W.js +1 -0
- package/core/built/admin/assets/use-settings-navigation-BIjI5mL3.js +1 -0
- package/core/built/admin/assets/use-simple-pagination-DwVxe-Lo.js +1 -0
- package/core/built/admin/assets/use-staff-users-i_Mq9OGR.js +1 -0
- package/core/built/admin/assets/{use-tinybird-query-CSnGXzZh.js → use-tinybird-query-DXoF74NM.js} +1 -1
- package/core/built/admin/assets/use-tinybird-token-Lk1RSn0t.js +1 -0
- package/core/built/admin/assets/use-unsaved-changes-guard-CKVPWz_F.js +1 -0
- package/core/built/admin/assets/use-upgrade-route-CVjDlNSs.js +1 -0
- package/core/built/admin/assets/{use-url-input-DFr8lCbS.js → use-url-input-DpmbDppC.js} +1 -1
- package/core/built/admin/assets/user-detail-modal-BU4QCHE7.js +1 -0
- package/core/built/admin/assets/{users-Cg-OeGzC.js → users-C60_hpn6.js} +1 -1
- package/core/built/admin/assets/{validator-Cr0sMKuW.js → validator-DlFQP70j.js} +1 -1
- package/core/built/admin/assets/{vendor-5753232c7d6ffb3c44e1eb0a02133953.js → vendor-2dd263291938d407802568d3357ec69e.js} +19 -17
- package/core/built/admin/assets/virtual-list-DScLNuU8.js +1 -0
- package/core/built/admin/assets/web-BZS-t4H0.js +1 -0
- package/core/built/admin/assets/web-DxAUxnK3.js +2 -0
- package/core/built/admin/assets/zapier-modal-BafLUO4R.js +1 -0
- package/core/built/admin/index.html +38 -34
- package/core/cli/command.js +17 -2
- package/core/frontend/meta/asset-url.js +1 -16
- package/core/frontend/services/asset-hash/index.js +32 -2
- package/core/frontend/services/routing/controllers/unsubscribe.js +2 -1
- package/core/frontend/services/rss/generate-feed.js +1 -1
- package/core/frontend/services/theme-engine/active.js +2 -4
- package/core/frontend/services/theme-engine/i18n/i18n.js +11 -1
- package/core/frontend/services/theme-engine/i18next/theme-i18n.js +1 -1
- package/core/frontend/web/middleware/llms-discovery.js +34 -43
- package/core/server/adapters/jobs/InMemoryJobsBackend.js +74 -29
- package/core/server/adapters/route-settings/S3RouteSettingsStore.js +1 -1
- package/core/server/adapters/storage/LocalFilesStorage.js +12 -2
- package/core/server/adapters/storage/LocalStorageBase.js +13 -0
- package/core/server/api/endpoints/actions.js +2 -1
- package/core/server/api/endpoints/authentication.js +1 -2
- package/core/server/api/endpoints/authors-public.js +15 -5
- package/core/server/api/endpoints/automated-emails.js +3 -2
- package/core/server/api/endpoints/automations.js +77 -49
- package/core/server/api/endpoints/emails.js +21 -3
- package/core/server/api/endpoints/index.js +9 -1
- package/core/server/api/endpoints/invites.js +2 -1
- package/core/server/api/endpoints/labels.js +6 -2
- package/core/server/api/endpoints/member-metafields-members.js +23 -0
- package/core/server/api/endpoints/member-metafields.js +34 -21
- package/core/server/api/endpoints/members-account.js +42 -0
- package/core/server/api/endpoints/members.js +22 -6
- package/core/server/api/endpoints/newsletters-public.js +10 -1
- package/core/server/api/endpoints/pages-public.js +15 -5
- package/core/server/api/endpoints/pages.js +2 -6
- package/core/server/api/endpoints/posts-public.js +15 -5
- package/core/server/api/endpoints/posts.js +3 -11
- package/core/server/api/endpoints/snippets.js +2 -1
- package/core/server/api/endpoints/tags-public.js +22 -3
- package/core/server/api/endpoints/tags.js +6 -2
- package/core/server/api/endpoints/tiers-checkout-config.js +2 -2
- package/core/server/api/endpoints/tiers-public.js +38 -1
- package/core/server/api/endpoints/users.js +4 -8
- package/core/server/api/endpoints/utils/api-filter-utils.js +232 -6
- package/core/server/api/endpoints/utils/public-cache-keys.js +3 -0
- package/core/server/api/endpoints/utils/serializers/input/authors.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/members.js +16 -2
- package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/tags.js +2 -0
- package/core/server/api/endpoints/utils/serializers/output/emails.js +7 -0
- package/core/server/api/endpoints/utils/serializers/output/index.js +4 -0
- package/core/server/api/endpoints/utils/serializers/output/member-metafields.js +3 -3
- package/core/server/api/endpoints/utils/serializers/output/members-account.js +19 -0
- package/core/server/api/endpoints/utils/serializers/output/members-csv-transform.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/tiers.js +10 -2
- package/core/server/api/endpoints/utils/serializers/output/users.js +0 -10
- package/core/server/api/endpoints/utils/serializers/output/utils/clean.js +2 -0
- package/core/server/api/endpoints/utils/serializers/output/utils/extra-attrs.js +3 -0
- package/core/server/api/endpoints/utils/validators/input/settings.js +15 -1
- package/core/server/data/exporter/exporter.js +2 -1
- package/core/server/data/exporter/table-lists.js +6 -8
- package/core/server/data/importer/importers/data/settings-importer.js +8 -2
- package/core/server/data/migrations/versions/6.53/2026-07-15-20-22-53-add-members-custom-field-values.js +1 -1
- package/core/server/data/migrations/versions/6.57/2026-08-04-18-00-00-store-custom-field-values-as-leaf-rows.js +10 -1
- package/core/server/data/migrations/versions/6.63/2026-09-03-10-07-03-rename-custom-field-tables-to-metafields.js +169 -0
- package/core/server/data/migrations/versions/6.63/2026-09-03-11-03-31-remove-member-custom-field-read-permissions.js +30 -0
- package/core/server/data/migrations/versions/6.64/2026-09-03-15-40-25-add-member-access-to-members-metafields.js +12 -0
- package/core/server/data/migrations/versions/6.64/2026-09-08-11-01-12-add-posts-auto-excerpt-and-reading-time-columns.js +17 -0
- package/core/server/data/migrations/versions/6.64/2026-09-09-13-56-18-add-automation-run-updated-at-indexes.js +6 -0
- package/core/server/data/migrations/versions/6.64/2026-09-09-13-56-18-add-tinybird-syncs-table.js +10 -0
- package/core/server/data/schema/fixtures/fixtures.json +0 -11
- package/core/server/data/schema/lib/default-index-name.js +8 -11
- package/core/server/data/schema/schema.js +46 -20
- package/core/server/data/seeders/README.md +48 -0
- package/core/server/data/seeders/importers/automations-importer.js +0 -1
- package/core/server/data/seeders/importers/comments-importer.js +1 -1
- package/core/server/data/seeders/importers/email-recipients-importer.js +1 -1
- package/core/server/data/seeders/importers/emails-importer.js +1 -1
- package/core/server/data/seeders/importers/members-importer.js +1 -1
- package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +1 -1
- package/core/server/data/seeders/utils/blog-info.js +4 -3
- package/core/server/data/seeders/utils/event-generator.js +72 -46
- package/core/server/data/tinybird/datasources/_mv_automation_run_steps.datasource +10 -0
- package/core/server/data/tinybird/datasources/_mv_automation_runs.datasource +10 -0
- package/core/server/data/tinybird/datasources/_mv_pending_automation_runs.datasource +10 -0
- package/core/server/data/tinybird/datasources/automation_run_events.datasource +12 -0
- package/core/server/data/tinybird/datasources/automation_run_step_events.datasource +12 -0
- package/core/server/data/tinybird/endpoints/api_automation_browse_stats.pipe +43 -0
- package/core/server/data/tinybird/fixtures/automation_run_events.ndjson +7 -0
- package/core/server/data/tinybird/fixtures/automation_run_step_events.ndjson +8 -0
- package/core/server/data/tinybird/pipes/mv_automation_run_steps.pipe +13 -0
- package/core/server/data/tinybird/pipes/mv_automation_runs.pipe +15 -0
- package/core/server/data/tinybird/pipes/mv_hits.pipe +86 -50
- package/core/server/data/tinybird/pipes/mv_pending_automation_runs.pipe +7 -0
- package/core/server/data/tinybird/tests/api_automation_browse_stats.yaml +18 -0
- package/core/server/ghost-server.js +3 -3
- package/core/server/lib/db-types/count.js +16 -0
- package/core/server/lib/generate-password.js +54 -0
- package/core/server/lib/public-jwk.js +77 -0
- package/core/server/lib/validate-password.js +81 -120
- package/core/server/models/action.js +4 -4
- package/core/server/models/base/plugins/filtered-collection.js +16 -0
- package/core/server/models/member.js +6 -6
- package/core/server/models/user.js +12 -10
- package/core/server/services/adapter-manager/base-classes.js +21 -3
- package/core/server/services/automations/automations-api.js +46 -1
- package/core/server/services/automations/database-automations-repository.js +11 -4
- package/core/server/services/automations/tinybird-automation-stats.js +56 -0
- package/core/server/services/content-import/import/media.js +1 -1
- package/core/server/services/email-analytics/email-analytics-service-wrapper.js +15 -29
- package/core/server/services/email-analytics/email-analytics-service.js +19 -3
- package/core/server/services/email-analytics/index.js +9 -4
- package/core/server/services/email-rendering/finalize.js +7 -2
- package/core/server/services/email-service/CONTEXT.md +37 -0
- package/core/server/services/email-service/README.md +45 -0
- package/core/server/services/email-service/batch-sending-service.js +2 -0
- package/core/server/services/email-service/email-controller.js +18 -2
- package/core/server/services/email-service/email-renderer.js +7 -2
- package/core/server/services/email-service/email-service-wrapper.js +4 -1
- package/core/server/services/email-service/email-service.js +43 -34
- package/core/server/services/email-service/sending-status-schema.js +21 -0
- package/core/server/services/email-service/sending-status-serializers.js +33 -0
- package/core/server/services/email-service/sending-status-service.js +47 -0
- package/core/server/services/email-service/sending-status.js +117 -0
- package/core/server/services/email-suppression-list/email-suppression-list.js +0 -33
- package/core/server/services/email-suppression-list/mailgun-email-suppression-list.js +6 -7
- package/core/server/services/gifts/README.md +2 -2
- package/core/server/services/gifts/constants.js +1 -1
- package/core/server/services/gifts/gift-email-service.js +10 -3
- package/core/server/services/gifts/gift-service.js +19 -57
- package/core/server/services/gifts/index.js +1 -2
- package/core/server/services/i18n.js +1 -1
- package/core/server/services/identity-tokens/identity-token-service-wrapper.js +3 -4
- package/core/server/services/jobs-service/index.js +8 -0
- package/core/server/services/jobs-service/jobs-service.js +52 -3
- package/core/server/services/jobs-service/register-job-handlers.js +13 -2
- package/core/server/services/limits.js +17 -1
- package/core/server/services/member-welcome-emails/service.js +1 -1
- package/core/server/services/members/account-service.js +98 -0
- package/core/server/services/members/api.js +4 -4
- package/core/server/services/members/import-export/export/exporter.js +20 -20
- package/core/server/services/members/import-export/import/completion-email.js +6 -6
- package/core/server/services/members/import-export/import/importer.js +13 -13
- package/core/server/services/members/import-export/index.js +10 -9
- package/core/server/services/members/members-api/controllers/router-controller.js +7 -2
- package/core/server/services/members/members-api/controllers/well-known-controller.js +2 -1
- package/core/server/services/members/members-api/members-api.js +26 -6
- package/core/server/services/members/members-api/repositories/event-repository.js +4 -0
- package/core/server/services/members/members-api/repositories/member-repository.js +4 -4
- package/core/server/services/members/members-api/services/member-bread-service.js +57 -48
- package/core/server/services/members/members-api/services/token-service.js +11 -12
- package/core/server/services/members/members-ssr.js +18 -0
- package/core/server/services/members/middleware.js +104 -83
- package/core/server/services/members/request-integrity-token-provider.js +2 -1
- package/core/server/services/members/service.js +70 -42
- package/core/server/services/members/utils.js +9 -0
- package/core/server/services/members-metafields/access.js +39 -0
- package/core/server/services/{members-custom-fields → members-metafields}/actions.js +6 -5
- package/core/server/services/members-metafields/bindings-service.js +147 -0
- package/core/server/services/members-metafields/codec.js +21 -0
- package/core/server/services/{members-custom-fields → members-metafields}/config.js +1 -1
- package/core/server/services/{members-custom-fields → members-metafields}/definitions-service.js +71 -67
- package/core/server/services/{members-custom-fields → members-metafields}/filter.js +9 -9
- package/core/server/services/{members-custom-fields → members-metafields}/index.js +16 -7
- package/core/server/services/{members-custom-fields → members-metafields}/key.js +1 -1
- package/core/server/services/{members-custom-fields → members-metafields}/models.js +6 -4
- package/core/server/services/members-metafields/namespaces.js +34 -0
- package/core/server/services/members-metafields/queries.js +60 -0
- package/core/server/services/{members-custom-fields → members-metafields}/schema.js +18 -12
- package/core/server/services/{members-custom-fields → members-metafields}/serializers.js +7 -6
- package/core/server/services/{members-custom-fields → members-metafields}/values-service.js +46 -27
- package/core/server/services/mentions/mention-discovery-service.js +1 -1
- package/core/server/services/mentions/mention-sending-service.js +27 -10
- package/core/server/services/mentions/mention.js +1 -1
- package/core/server/services/mentions/send-webmentions-job.js +18 -0
- package/core/server/services/mentions/service.js +1 -31
- package/core/server/services/oembed/oembed-service.js +36 -11
- package/core/server/services/posts/post-scheduling.js +20 -0
- package/core/server/services/staff/staff-service-emails.js +5 -1
- package/core/server/services/stats/stats-service.js +12 -3
- package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +2 -2
- package/core/server/services/stripe/stripe-service.js +4 -4
- package/core/server/services/tier-checkout-config/codec.js +2 -2
- package/core/server/services/tier-checkout-config/index.js +2 -1
- package/core/server/services/tier-checkout-config/models.js +2 -2
- package/core/server/services/tier-checkout-config/queries.js +8 -8
- package/core/server/services/tier-checkout-config/serializers.js +57 -0
- package/core/server/services/tier-checkout-config/service.js +18 -2
- package/core/server/services/tiers/service.js +3 -3
- package/core/server/services/tinybird/tinybird-service.js +1 -0
- package/core/server/services/tinybird-sync/get-ingest-config.js +39 -0
- package/core/server/services/tinybird-sync/index.js +28 -0
- package/core/server/services/tinybird-sync/sync-table-to-tinybird.js +149 -0
- package/core/server/services/tinybird-sync/tinybird-sync-service.js +62 -0
- package/core/server/services/url/router-filter.js +8 -10
- package/core/server/services/users.js +1 -19
- package/core/server/web/api/endpoints/admin/routes.js +34 -34
- package/core/server/web/members/account/index.js +2 -0
- package/core/server/web/members/account/routes.js +46 -0
- package/core/server/web/members/app.js +4 -18
- package/core/server/web/well-known.js +12 -16
- package/core/shared/config/defaults.json +2 -3
- package/core/shared/{flush-logs.js → flush.js} +7 -3
- package/core/shared/labs.js +6 -2
- package/core/shared/timing-safe-string-equal.js +26 -0
- package/package.json +46 -46
- package/patches/@elastic__elasticsearch@8.19.2.patch +67 -0
- package/patches/juice@11.1.1.patch +46 -0
- package/pnpm-lock.yaml +750 -1742
- package/pnpm-workspace.yaml +37 -24
- package/scripts/prune.mts +70 -3
- package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
- package/core/built/admin/assets/Combination-B0l4MKVh.js +0 -41
- package/core/built/admin/assets/RadialBarChart-JAKoS4KT.js +0 -1
- package/core/built/admin/assets/_baseAssignValue-C_vooEQc.js +0 -1
- package/core/built/admin/assets/about-Dyae_UT6.js +0 -1
- package/core/built/admin/assets/account-migration-CESa0mnX.js +0 -1
- package/core/built/admin/assets/action-list-C4v0-du8.js +0 -1
- package/core/built/admin/assets/activitypub/layout-2-0bw6HN.js +0 -1
- package/core/built/admin/assets/add-integration-modal-BlF6rs_f.js +0 -1
- package/core/built/admin/assets/add-newsletter-modal-CglVQqah.js +0 -1
- package/core/built/admin/assets/add-recommendation-modal-wz7BsuaG.js +0 -1
- package/core/built/admin/assets/analytics-C4HE1gBg.js +0 -1
- package/core/built/admin/assets/announcement-bar-modal-Ci4zz8jO.js +0 -1
- package/core/built/admin/assets/api-keys-Ck-Yteiv.js +0 -1
- package/core/built/admin/assets/automated-emails-D5VVMND9.js +0 -1
- package/core/built/admin/assets/automations-CzKt5fb8.js +0 -1
- package/core/built/admin/assets/automations-sAcJ1334.js +0 -1
- package/core/built/admin/assets/avatar-flipboard-C6Kj3Awu.js +0 -1
- package/core/built/admin/assets/bluesky-sharing-BEtJ_gL_.js +0 -1
- package/core/built/admin/assets/box-CdfQAP_F.js +0 -1
- package/core/built/admin/assets/brand-icon-CrIGOA3Z.js +0 -1
- package/core/built/admin/assets/breadcrumb-zUrZrBtW.js +0 -1
- package/core/built/admin/assets/build-CsiH26uS.js +0 -1
- package/core/built/admin/assets/button-eNMKQWXr.js +0 -1
- package/core/built/admin/assets/card--VNbfgo3.js +0 -1
- package/core/built/admin/assets/chart-helpers-CfBKt0vT.js +0 -1
- package/core/built/admin/assets/checkbox-CgOn_tKW.js +0 -1
- package/core/built/admin/assets/chunk.524.a697dee88db67fdf6021.js +0 -32
- package/core/built/admin/assets/chunk.598.7e056fabb47ce7dbd73f.js +0 -366
- package/core/built/admin/assets/code-editor-view-BYNoAoNV.js +0 -1
- package/core/built/admin/assets/code-editor-view-K2wI-I5f.js +0 -1
- package/core/built/admin/assets/color-picker-Ddw80xX6.js +0 -3
- package/core/built/admin/assets/color-picker-field-D9nUhvA7.js +0 -1
- package/core/built/admin/assets/combobox-w9j8PPQT.js +0 -1
- package/core/built/admin/assets/command-BfpHORBv.js +0 -1
- package/core/built/admin/assets/comments-BLmCmyCs.js +0 -1
- package/core/built/admin/assets/components-CwL6a6As-B0E0-NBJ.js +0 -1
- package/core/built/admin/assets/confirmation-context-CBM8G0Vj.js +0 -1
- package/core/built/admin/assets/container-BuQG1wuP.js +0 -1
- package/core/built/admin/assets/content-api-modal-TXRz3U7S.js +0 -1
- package/core/built/admin/assets/context-menu-_QMdd3kp.js +0 -1
- package/core/built/admin/assets/copy-field-6N01S07E.js +0 -1
- package/core/built/admin/assets/create-ghost-browse-value-source-qIBymvvf.js +0 -1
- package/core/built/admin/assets/custom-field-type-option-BddFlJFa.js +0 -1
- package/core/built/admin/assets/custom-integration-modal-DmNquxUV.js +0 -1
- package/core/built/admin/assets/data-list-CA2jYGPq.js +0 -1
- package/core/built/admin/assets/date-range-select-uvz_DtPh.js +0 -1
- package/core/built/admin/assets/design-and-theme-modal-BSmo12Op.js +0 -2
- package/core/built/admin/assets/detail-page-Dnv-CdR1.js +0 -1
- package/core/built/admin/assets/dirty-confirm-dialog-BZ1iytEd.js +0 -1
- package/core/built/admin/assets/disabled-sources-indicator-DMRrxsiJ.js +0 -1
- package/core/built/admin/assets/dist-4m6pHdc0.js +0 -23
- package/core/built/admin/assets/dist-8YJUlf3B.js +0 -1
- package/core/built/admin/assets/dist-CZgIBXQN.js +0 -1
- package/core/built/admin/assets/dist-CiHx7vA5.js +0 -6
- package/core/built/admin/assets/dist-DIC8yz5C.js +0 -1
- package/core/built/admin/assets/dist-Dcsslyo72.js +0 -1
- package/core/built/admin/assets/dist-Dgt2cr6a.js +0 -1
- package/core/built/admin/assets/dist-ECAUrdGc.js +0 -1
- package/core/built/admin/assets/dist-JLOy8o0Q.js +0 -1
- package/core/built/admin/assets/dist-Ndy-PuGN.js +0 -1
- package/core/built/admin/assets/dist-Z97pCNqS.js +0 -11
- package/core/built/admin/assets/domain-BNYrt0aD.js +0 -1
- package/core/built/admin/assets/dropzone-D7nFdAe5.js +0 -5
- package/core/built/admin/assets/edit-profile-C5Asm4LA.js +0 -1
- package/core/built/admin/assets/editor-REokrzci.js +0 -8
- package/core/built/admin/assets/empty-indicator-D9QdpuNX.js +0 -1
- package/core/built/admin/assets/en-B1jX3WMs.js +0 -1
- package/core/built/admin/assets/esm-CXo5SEPy.js +0 -2
- package/core/built/admin/assets/explore-UY10Egsp.js +0 -1
- package/core/built/admin/assets/feature-image-placeholder-D1iF_8bc.js +0 -1
- package/core/built/admin/assets/feed-81C8mJWR.js +0 -1
- package/core/built/admin/assets/field-Dihp5p18.js +0 -1
- package/core/built/admin/assets/filter-bar-Da1qxybu.js +0 -1
- package/core/built/admin/assets/filter-sources-BO9xUPj7.js +0 -1
- package/core/built/admin/assets/filters-CRUWecfY.js +0 -1
- package/core/built/admin/assets/filters-DirqNXjH.js +0 -1
- package/core/built/admin/assets/first-promoter-modal-CT6MxYZb.js +0 -1
- package/core/built/admin/assets/framework-provider-DqI25epG.js +0 -4
- package/core/built/admin/assets/gift-link-modal-CQVAye17.js +0 -1
- package/core/built/admin/assets/global-data-context-gAMDH9u1.js +0 -1
- package/core/built/admin/assets/grid-Dj29PY05.js +0 -1
- package/core/built/admin/assets/growth-BWIu-6xj.js +0 -3
- package/core/built/admin/assets/growth-DU29oxeA.js +0 -1
- package/core/built/admin/assets/heading-Dh5SFVjL.js +0 -1
- package/core/built/admin/assets/history-modal-CFd1Hvx6.js +0 -1
- package/core/built/admin/assets/hooks-CuEZV2-q.js +0 -2
- package/core/built/admin/assets/html-field-CJBCLTvv.js +0 -1
- package/core/built/admin/assets/iframe-buffering-B2OKJzbz.js +0 -1
- package/core/built/admin/assets/images-scfkWZiK.js +0 -1
- package/core/built/admin/assets/index-6MkPdCtr.js +0 -4
- package/core/built/admin/assets/index-Bn7QhcZu.css +0 -2
- package/core/built/admin/assets/index.es-CNnuNH0d.js +0 -1
- package/core/built/admin/assets/inline-BWSs_VzR.js +0 -1
- package/core/built/admin/assets/input-group-CMhe2DvY.js +0 -1
- package/core/built/admin/assets/integration-header-Bm6IDb1A.js +0 -1
- package/core/built/admin/assets/invite-user-modal-DfheMXs0.js +0 -1
- package/core/built/admin/assets/koenig-loader-aFQNlJlD.js +0 -2
- package/core/built/admin/assets/kpi-card-DBRMfGOW.js +0 -1
- package/core/built/admin/assets/kpi-card-DFafD1qq.js +0 -1
- package/core/built/admin/assets/kpi-helpers-Cv8i8hns.js +0 -1
- package/core/built/admin/assets/kpi-tabs-BJItvLYm.js +0 -1
- package/core/built/admin/assets/label-BnSCvffu.js +0 -1
- package/core/built/admin/assets/label-picker-KVoo91sh.js +0 -1
- package/core/built/admin/assets/labels-CH3Kn8RV.js +0 -1
- package/core/built/admin/assets/layout-Bjv2Ll-5.js +0 -1
- package/core/built/admin/assets/limit-service-BhiEvqcP.js +0 -20
- package/core/built/admin/assets/link-helpers-MVDdnFCY.js +0 -1
- package/core/built/admin/assets/list-page-BucXJ0hi.js +0 -1
- package/core/built/admin/assets/luxon-D1RVjjpq.js +0 -1
- package/core/built/admin/assets/member-custom-fields-DDQV6QeG.js +0 -1
- package/core/built/admin/assets/member-detail-CdJF6Agw.js +0 -1
- package/core/built/admin/assets/members-DjQbq9Z2.js +0 -4
- package/core/built/admin/assets/modal-page-xCivTMvI.js +0 -1
- package/core/built/admin/assets/moderation-AgCIEso4.js +0 -1
- package/core/built/admin/assets/multi-select-combobox-BcITkUVr.js +0 -1
- package/core/built/admin/assets/navigation-modal-BkT7b1M2.js +0 -1
- package/core/built/admin/assets/newsletter-BMMAuvgq.js +0 -1
- package/core/built/admin/assets/newsletter-detail-modal-0SCJ7Zpm.js +0 -1
- package/core/built/admin/assets/newsletter-emails-DKzwafuh.js +0 -1
- package/core/built/admin/assets/newsletters-BRBb_uQC.js +0 -1
- package/core/built/admin/assets/newsletters-DhNigJUh.js +0 -1
- package/core/built/admin/assets/note-DyGHtS9a.js +0 -1
- package/core/built/admin/assets/notifications-ZgWniKna.js +0 -1
- package/core/built/admin/assets/nql-lang-CaWrLesS.js +0 -19
- package/core/built/admin/assets/offers-container-modal-B-E8TIWr.js +0 -1
- package/core/built/admin/assets/onboarding-CzIsre-d.js +0 -1
- package/core/built/admin/assets/onboarding-qg8Akovm.js +0 -1
- package/core/built/admin/assets/onboarding-route-CaavZulg.js +0 -1
- package/core/built/admin/assets/overview-BW8GLeYi.js +0 -1
- package/core/built/admin/assets/overview-BkXZNzaZ.js +0 -1
- package/core/built/admin/assets/page-header-De0VzKBi.js +0 -1
- package/core/built/admin/assets/pagemenu-B5KKCpbA.js +0 -1
- package/core/built/admin/assets/pages-jgaFm69d.js +0 -1
- package/core/built/admin/assets/pages-route-CIUAQxtY.js +0 -1
- package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +0 -10
- package/core/built/admin/assets/pintura-modal-BZ2J9w3n.js +0 -1
- package/core/built/admin/assets/portal-frame-B6Hr9wHc.js +0 -1
- package/core/built/admin/assets/portal-modal-D4ceei3t.js +0 -1
- package/core/built/admin/assets/post-analytics-context-D0Mw-Pmv.js +0 -1
- package/core/built/admin/assets/post-analytics-header-BYCsT0GP.js +0 -1
- package/core/built/admin/assets/post-analytics-ot7f6pih.js +0 -1
- package/core/built/admin/assets/post-analytics-provider-Bo1gmYaP.js +0 -1
- package/core/built/admin/assets/post-helpers-C5OQMBoi.js +0 -1
- package/core/built/admin/assets/post-share-modal-C-PaYZ_e.js +0 -1
- package/core/built/admin/assets/posts-DuGazgTb.js +0 -1
- package/core/built/admin/assets/posts-list-screen-CBGGgjjj.js +0 -2
- package/core/built/admin/assets/posts-route-D6xmS7Vf.js +0 -1
- package/core/built/admin/assets/preferences-C5YJLp74.js +0 -5
- package/core/built/admin/assets/preview-chrome-BljUBlOk.js +0 -1
- package/core/built/admin/assets/preview-modal-BfeFqi5y.js +0 -1
- package/core/built/admin/assets/profile-B8mx2yAu.js +0 -1
- package/core/built/admin/assets/prop-types-DeUPn3oD.js +0 -1
- package/core/built/admin/assets/radio-group-DczlLKOn.js +0 -1
- package/core/built/admin/assets/react-Bb3IsNbi.js +0 -1
- package/core/built/admin/assets/rolldown-runtime-DAXXjFlN.js +0 -1
- package/core/built/admin/assets/router-provider-B0gZyiGJ.js +0 -1
- package/core/built/admin/assets/schemas-DppqmpeJ.js +0 -64
- package/core/built/admin/assets/select-cb0t_TAJ.js +0 -1
- package/core/built/admin/assets/settings-DZqxR0Da.js +0 -1
- package/core/built/admin/assets/settings-DvfTNdHQ.js +0 -4
- package/core/built/admin/assets/settings-breadcrumbs-DLzbRRSt.js +0 -1
- package/core/built/admin/assets/share-modal-D2-Bz1_I.js +0 -1
- package/core/built/admin/assets/skeleton-Ce9GgUpf.js +0 -1
- package/core/built/admin/assets/slack-modal-DYDTUria.js +0 -1
- package/core/built/admin/assets/sort-button-VVeQjjbu.js +0 -1
- package/core/built/admin/assets/source-icon-Ck5_5Kgq.js +0 -1
- package/core/built/admin/assets/stack-B2eszIiq.js +0 -1
- package/core/built/admin/assets/stats-Rjmk5owg.js +0 -1
- package/core/built/admin/assets/stats-view-BGGmkmgv.js +0 -1
- package/core/built/admin/assets/step-1-CsaBjeN4.js +0 -1
- package/core/built/admin/assets/step-2-D2vnxOOM.js +0 -1
- package/core/built/admin/assets/step-3-wBoLdGEb.js +0 -2
- package/core/built/admin/assets/stripe-button-CDgLz0S0.js +0 -1
- package/core/built/admin/assets/stripe-connect-modal-CSjMJetP.js +0 -1
- package/core/built/admin/assets/switch-CI4gLWqb.js +0 -1
- package/core/built/admin/assets/table-Do6iQ83Q.js +0 -1
- package/core/built/admin/assets/tabs-D2yWLMp_.js +0 -1
- package/core/built/admin/assets/tag-detail-BhXlOsCa.js +0 -2
- package/core/built/admin/assets/tags-ldukRApe.js +0 -1
- package/core/built/admin/assets/testimonials-modal-CtnZBJKl.js +0 -1
- package/core/built/admin/assets/text-BQDSDsKs.js +0 -1
- package/core/built/admin/assets/textarea-DJ1Q5V39.js +0 -1
- package/core/built/admin/assets/tier-detail-modal-BOs8e_G8.js +0 -1
- package/core/built/admin/assets/tiers-Nd_z4BZY.js +0 -1
- package/core/built/admin/assets/toggle-group-ByUJsxwD.js +0 -1
- package/core/built/admin/assets/topic-filter-BgC3g5_v.js +0 -1
- package/core/built/admin/assets/transistor-modal-Drr0SNfo.js +0 -1
- package/core/built/admin/assets/trend-badge-6ye93YAW.js +0 -1
- package/core/built/admin/assets/unsplash-modal-p6AoQoWp.js +0 -1
- package/core/built/admin/assets/use-analytics-data-CWCMAESo.js +0 -1
- package/core/built/admin/assets/use-filter-params-BIni9taJ.js +0 -1
- package/core/built/admin/assets/use-filterable-api-CzXcpUh8.js +0 -1
- package/core/built/admin/assets/use-form-vRjI0Kwk.js +0 -1
- package/core/built/admin/assets/use-growth-stats-DCVG3s9w.js +0 -1
- package/core/built/admin/assets/use-host-limits-DZtR08oa.js +0 -1
- package/core/built/admin/assets/use-limiter-D2WRRx0H.js +0 -2
- package/core/built/admin/assets/use-navigate-with-base-path-BHPA228f.js +0 -1
- package/core/built/admin/assets/use-pintura-config-h-J0Lvta.js +0 -1
- package/core/built/admin/assets/use-pintura-editor-BfN1UwzH.js +0 -1
- package/core/built/admin/assets/use-post-referrers-Czg47m8s.js +0 -1
- package/core/built/admin/assets/use-query-params-BfzuqbcD.js +0 -1
- package/core/built/admin/assets/use-reply-chain-data-ns0caK8k.js +0 -1
- package/core/built/admin/assets/use-router-history-entry-uldn7zJO.js +0 -1
- package/core/built/admin/assets/use-setting-group-DpcuCUDg.js +0 -1
- package/core/built/admin/assets/use-settings-navigation-CZjGrhsp.js +0 -1
- package/core/built/admin/assets/use-simple-pagination-DzJWobPR.js +0 -1
- package/core/built/admin/assets/use-staff-users-Csipb-O0.js +0 -1
- package/core/built/admin/assets/use-tinybird-token-DTOKRR7e.js +0 -1
- package/core/built/admin/assets/use-unsaved-changes-guard-CBzs-KPi.js +0 -1
- package/core/built/admin/assets/use-upgrade-route-DhRSo7at.js +0 -1
- package/core/built/admin/assets/user-detail-modal-B_iUClI6.js +0 -1
- package/core/built/admin/assets/virtual-list-BW-padMe.js +0 -1
- package/core/built/admin/assets/web-C1v33ehA.js +0 -2
- package/core/built/admin/assets/web-C4BKzn2T.js +0 -1
- package/core/built/admin/assets/zapier-modal-BBFfI6Ml.js +0 -1
- package/core/server/services/email-suppression-list/in-memory-email-suppression-list.js +0 -39
- package/core/server/services/members-custom-fields/bindings-service.js +0 -120
- package/core/server/services/members-custom-fields/codec.js +0 -14
- package/core/server/services/members-custom-fields/queries.js +0 -32
- /package/core/built/admin/assets/{chunk.492.f24d855d7e3f3aad261c.js.LICENSE.txt → chunk.972.4b8c97f93d66db15e751.js.LICENSE.txt} +0 -0
- /package/core/server/services/{members-custom-fields → members-metafields}/storage.js +0 -0
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{_ as r}from"./framework-provider-DqI25epG.js";import{_ as i,b as a,g as o,m as s,o as c,p as l,u,v as d,x as f}from"./hooks-CuEZV2-q.js";import{n as p}from"./dist-Ndy-PuGN.js";import{t as m}from"./build-CsiH26uS.js";import{n as h}from"./offers-9J1CSiLy.js";import{s as g}from"./config-DOMQDZGZ.js";import{_,n as v,u as y}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as b}from"./router-provider-B0gZyiGJ.js";import{h as x,l as S,m as C,x as w}from"./dist-B3keLvjj.js";import{t as T}from"./box-CdfQAP_F.js";import{t as E}from"./container-BuQG1wuP.js";import{$n as D,B as O,C as k,D as A,F as j,Fn as M,Gt as N,I as P,Mn as ee,Nn as F,O as I,Qn as te,S as ne,V as L,Wt as R,Zn as re,_n as ie,a as z,bn as B,et as ae,ft as oe,g as se,kr as V,l as ce,nt as le,sr as ue,t as H,u as U,v as de,vn as fe}from"./button-eNMKQWXr.js";import{i as pe,n as me,r as he}from"./filters-CRUWecfY.js";import{a as ge,i as _e,l as ve,n as ye,o as be,r as xe,s as Se,t as Ce}from"./command-BfpHORBv.js";import{n as we}from"./input-surface-BsrIZeSF.js";import{t as Te}from"./dropzone-D7nFdAe5.js";import{i as Ee,n as De,o as Oe,s as ke,t as Ae}from"./select-cb0t_TAJ.js";import{t as je}from"./checkbox-CgOn_tKW.js";import{t as Me}from"./empty-indicator-D9QdpuNX.js";import{a as Ne,i as Pe,o as Fe,t as Ie}from"./field-Dihp5p18.js";import{i as Le,n as Re,t as ze}from"./input-group-CMhe2DvY.js";import{a as W,c as G,n as Be,r as K,s as Ve,t as He}from"./table-Do6iQ83Q.js";import{m as Ue}from"./users-Cg-OeGzC.js";import{c as We,f as q,h as Ge,l as Ke,m as qe,n as Je,o as Ye,s as Xe,u as Ze}from"./schemas-DppqmpeJ.js";import{r as Qe}from"./newsletters-DhNigJUh.js";import{$n as $e,$r as et,A as tt,Cr as nt,D as rt,E as it,Gn as at,Jn as ot,Kn as st,N as ct,P as lt,Qn as ut,Tr as dt,_r as J,a as ft,ar as pt,c as mt,ci as ht,di as gt,dr as _t,ei as vt,er as yt,fr as bt,gr as xt,gt as St,h as Ct,hr as wt,i as Tt,ii as Et,ir as Dt,jr as Ot,k as kt,kr as At,l as jt,li as Mt,lr as Nt,nr as Pt,o as Ft,oi as It,or as Lt,pr as Rt,rr as zt,s as Bt,si as Vt,sr as Ht,t as Ut,ui as Wt,vr as Gt,xr as Kt,yr as qt}from"./index-6MkPdCtr.js";import{t as Y}from"./page-header-De0VzKBi.js";import{t as Jt}from"./filter-bar-Da1qxybu.js";import{n as Yt}from"./dirty-confirm-dialog-BZ1iytEd.js";import{t as Xt}from"./get-site-timezone-HgL0jI_F.js";import{t as Zt}from"./list-page-BucXJ0hi.js";import{t as Qt}from"./validator-Cr0sMKuW.js";import{A as $t,C as en,D as tn,E as nn,O as rn,S as an,T as on,_ as sn,a as cn,b as ln,c as un,d as dn,f as fn,g as pn,h as mn,i as hn,j as gn,k as _n,l as vn,m as yn,n as bn,o as xn,p as Sn,r as Cn,s as wn,t as Tn,u as En,v as Dn,w as On,x as kn}from"./filters-DirqNXjH.js";import{a as An,i as jn,n as Mn,t as Nn}from"./filter-sources-BO9xUPj7.js";import{i as Pn,n as Fn,r as In,t as Ln}from"./virtual-list-BW-padMe.js";import{_ as Rn,a as zn,g as Bn,i as Vn,o as Hn,r as Un,t as Wn,u as Gn,v as Kn}from"./member-custom-fields-DDQV6QeG.js";import{a as qn,i as Jn,n as Yn,r as Xn,t as Zn}from"./label-picker-KVoo91sh.js";import{t as Qn}from"./papaparse.min-cQwnxGCG.js";import{n as $n,t as er}from"./custom-field-type-option-BddFlJFa.js";var X=e(t(),1),Z=n();function tr({open:e,memberCount:t,onOpenChange:n,onConfirm:r,isLoading:i=!1}){let[a,o]=(0,X.useState)([]),s=Yn({selectedSlugs:a,onSelectionChange:o}),c=(0,X.useCallback)(e=>{e||o([]),n(e)},[n]);return(0,Z.jsx)(Rt,{open:e,onOpenChange:c,children:(0,Z.jsxs)(wt,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Gt,{children:(0,Z.jsxs)(qt,{children:[`Add label to `,C(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(Xn,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:a,onCreate:s.createLabel,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel}),(0,Z.jsxs)(J,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(H,{disabled:a.length===0||i,onClick:()=>{let e=s.labels.filter(e=>a.includes(e.slug)).map(e=>e.id);e.length>0&&r(e)},children:i?`Adding...`:a.length>1?`Add ${C(a.length)} labels`:`Add label`})]})]})})}function nr({open:e,memberCount:t,nql:n,search:r,onOpenChange:i,onConfirm:a,isLoading:o=!1}){let[s,c]=(0,X.useState)([]),{data:l,isLoading:u}=Ft({searchParams:{...n?{filter:n}:{},...r?{search:r}:{},include:`labels`,limit:`all`,fields:`id`},enabled:e}),d=(0,X.useMemo)(()=>{let e=new Set;for(let t of l?.members||[])for(let n of t.labels||[])e.add(n.slug);return e},[l]),f=Yn({selectedSlugs:s,onSelectionChange:c}),p={...f.optionSource,options:f.optionSource.options.filter(e=>d.has(String(e.value)))},m=(0,X.useCallback)(e=>{e||c([]),i(e)},[i]),h=()=>{let e=f.labels.filter(e=>s.includes(e.slug)).map(e=>e.id);e.length>0&&a(e)};return(0,Z.jsx)(Rt,{open:e,onOpenChange:m,children:(0,Z.jsxs)(wt,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Gt,{children:(0,Z.jsxs)(qt,{children:[`Remove label from `,C(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(Xn,{labels:f.labels.filter(e=>d.has(e.slug)),optionSource:{...p,isInitialLoad:p.isInitialLoad||u},resolvedSelectedLabels:f.resolvedSelectedLabels.filter(e=>d.has(e.slug)),selectedSlugs:s,onDelete:f.deleteLabel,onEdit:f.editLabel,onToggle:f.toggleLabel}),(0,Z.jsxs)(J,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(H,{disabled:s.length===0||o,onClick:h,children:o?`Removing...`:s.length>1?`Remove ${C(s.length)} labels`:`Remove label`})]})]})})}function rr({open:e,newsletters:t,memberCount:n,onOpenChange:r,onConfirm:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(`all`),[c,l]=(0,X.useState)([]),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),m=(0,X.useRef)(null),h=(0,X.useRef)(null);(0,X.useEffect)(()=>{e||(s(`all`),l([]),d(``),p(!1))},[e]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{m.current&&!m.current.contains(e.target)&&p(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[f]);let g=e=>{e||(s(`all`),l([]),d(``),p(!1)),r(e)},_=(0,X.useCallback)(e=>{l(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=t.length>=2,y=()=>{i(!v||o===`all`?null:c)},b=a||v&&o===`selected`&&c.length===0,x=n===1?`member`:`members`;return(0,Z.jsx)(Rt,{open:e,onOpenChange:g,children:(0,Z.jsxs)(wt,{className:`gap-5`,children:[(0,Z.jsx)(Gt,{children:(0,Z.jsx)(qt,{children:`Unsubscribe members`})}),v?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"aria-label":`Unsubscribe scope`,className:`flex flex-col gap-3`,role:`radiogroup`,children:[(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`all`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`all`,onChange:()=>s(`all`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from all newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[C(n),` `,x,` will be unsubscribed from`,` `,t.length,` `,t.length===1?`newsletter`:`newsletters`,`.`]})]})]}),(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`selected`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`selected`,onChange:()=>s(`selected`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from selected newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Select which newsletters to unsubscribe `,C(n),` `,x,` from.`]})]})]})]}),o===`selected`&&(0,Z.jsxs)(`div`,{ref:m,className:`relative space-y-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-semibold`,htmlFor:`newsletter-search`,children:`Newsletters`}),(0,Z.jsxs)(`div`,{className:`flex min-h-9 w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background px-3 py-1 text-sm`,onClick:()=>{h.current?.focus(),p(!0)},children:[c.map(e=>{let n=t.find(t=>t.id===e);return n?(0,Z.jsxs)(st,{className:`cursor-pointer gap-1 pr-1`,variant:`outline`,onClick:t=>{t.stopPropagation(),_(e)},children:[n.name,(0,Z.jsx)(z,{className:`size-3`})]},e):null}),(0,Z.jsx)(`input`,{ref:h,className:`min-w-[80px] flex-1 bg-transparent py-1 text-sm outline-hidden placeholder:text-muted-foreground`,id:`newsletter-search`,placeholder:c.length===0?`Search newsletters...`:``,value:u,onChange:e=>{d(e.target.value),f||p(!0)},onFocus:()=>p(!0),onKeyDown:e=>{e.key===`Escape`&&(p(!1),h.current?.blur()),e.key===`Backspace`&&!u&&c.length>0&&_(c[c.length-1])}})]}),f&&(0,Z.jsx)(`div`,{className:`absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-white shadow-md dark:bg-gray-950`,children:(0,Z.jsx)(Ce,{shouldFilter:!1,children:(0,Z.jsxs)(Se,{className:`max-h-64 overflow-y-auto`,children:[(0,Z.jsx)(xe,{children:`No newsletters found.`}),t.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())).map(e=>(0,Z.jsxs)(be,{value:e.name,onSelect:()=>_(e.id),children:[e.name,c.includes(e.id)&&(0,Z.jsx)(ye,{})]},e.id))]})})})]})]}):(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Are you sure you want to unsubscribe `,C(n),` `,x,` from all newsletters? They will no longer receive any email newsletters from you.`]}),(0,Z.jsxs)(J,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:()=>g(!1),children:`Cancel`}),(0,Z.jsx)(H,{disabled:b,variant:`destructive`,onClick:y,children:a?`Unsubscribing...`:`Unsubscribe`})]})]})})}function ir({open:e,memberCount:t,onOpenChange:n,onConfirm:r,onExportBackup:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(!1),c=e=>{e||s(!1),n(e)},l=async()=>{if(!(t<1||a||o))try{s(!0),await i(),r()}catch{}finally{s(!1)}};return(0,Z.jsx)(Rt,{open:e,onOpenChange:c,children:(0,Z.jsxs)(wt,{className:`gap-5`,children:[(0,Z.jsx)(Gt,{children:(0,Z.jsx)(qt,{children:`Delete selected members?`})}),t>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{children:[`You're about to delete`,` `,(0,Z.jsxs)(`strong`,{children:[C(t),` `,t===1?`member`:`members`]}),`. This is permanent! All Ghost data will be deleted, this will have no effect on subscriptions in Stripe.`]}),(0,Z.jsx)(`p`,{children:`A backup of your selection will be automatically downloaded to your device before deletion.`})]}):(0,Z.jsx)(`p`,{children:`No members are selected.`}),(0,Z.jsxs)(J,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(H,{disabled:a||o||t<1,variant:`destructive`,onClick:()=>void l(),children:a||o?`Deleting...`:`Download backup & delete members`})]})]})})}function ar({fileError:e,onClose:t,onDropAccepted:n,onDropRejected:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[(0,Z.jsxs)(at,{variant:`info`,children:[`Need some help?`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://ghost.org/help/import-members/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`}),` `,`about importing members or`,` `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://static.ghost.org/v4.0.0/files/member-import-template.csv`,rel:`noopener noreferrer`,target:`_blank`,children:`download a sample CSV file`}),`.`]}),e&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(k,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]}),(0,Z.jsx)(Te,{accept:{"text/csv":[`.csv`],"application/vnd.ms-excel":[`.csv`]},"aria-label":`Select or drop a CSV file`,onDropAccepted:e=>{let t=e[0];t&&n(t)},onDropRejected:r,children:({isDragActive:e,isDragReject:t})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(de,{className:`mb-2 size-6 text-gray-600`}),(0,Z.jsx)(`span`,{className:`text-sm text-gray-700`,children:t?`The file type you uploaded is not supported`:e?`Drop CSV file to upload`:`Select or drop a CSV file`})]})})]}),(0,Z.jsx)(J,{className:`mt-5`,children:(0,Z.jsx)(H,{variant:`outline`,onClick:t,children:`Close`})})]})}var or=e(Qt(),1),sr=[{label:`Email`,value:`email`},{label:`Name`,value:`name`},{label:`Note`,value:`note`},{label:`Subscribed to emails`,value:`subscribed_to_emails`},{label:`Stripe Customer ID`,value:`stripe_customer_id`},{label:`Complimentary plan`,value:`complimentary_plan`},{label:`Labels`,value:`labels`},{label:`Created at`,value:`created_at`},{label:`Gift ID`,value:`gift_id`}],cr={label:`Tier`,value:`import_tier`},lr=[`email`,`name`,`note`,`subscribed_to_emails`,`complimentary_plan`,`stripe_customer_id`,`labels`,`created_at`,`gift_id`];function ur({importMemberTier:e=!1,customFieldColumns:t=[]}={}){return[...lr,...e?[cr.value]:[],...t.map(e=>e.value)]}function dr({importMemberTier:e=!1}={}){return[...sr,...e?[cr]:[]]}var fr=[`email`],pr=class e{_mapping;constructor(e){if(this._mapping={},e)for(let[t,n]of Object.entries(e))this._mapping[n]=t}get(e){return this._mapping[e]??null}toJSON(){return{...this._mapping}}getKeyByValue(e){for(let[t,n]of Object.entries(this._mapping))if(n===e)return t;return null}updateMapping(t,n){let r=new e({});if(r._mapping={...this._mapping},n)for(let e in r._mapping)r._mapping[e]===n&&(r._mapping[e]=null);return r._mapping[t]=n,r}};function mr(e){let t=new Set;for(let n of e)for(let e of Object.keys(n))e!==`__parsed_extra`&&t.add(e);return[...t]}function hr(e,t=30){if(!e||e.length<=t)return e;let n=[];return mr(e).forEach(r=>{let i=e.filter(e=>e[r]&&e[r].trim()!==``),a=[];if(i.length<=t)a=i;else{let e=Math.floor(t/3),n=e,r=t-e-n,o=i.slice(0,e),s=n>0?i.slice(-n):[],c=Math.max(0,Math.floor(i.length/2)-Math.floor(r/2)),l=i.slice(c,c+r);a=[...o,...l,...s].slice(0,t)}a.forEach((e,t)=>{n[t]||(n[t]={}),n[t][r]=e[r]})}),n}function gr(e,t={}){let n=hr(e),r={},i=ur(t);if(e.length>0)for(let t of mr(e)){if(!r.name&&/name/i.test(t)&&!Bn(t)){r.name=t;continue}!r[t]&&i.includes(t)&&!fr.includes(t)&&(r[t]=t)}let a=0;for(;a<=n.length-1&&!r.email;){let e=n[a];for(let[t,n]of Object.entries(e))!r.email&&n&&or.default.isEmail(n)&&!Bn(t)&&(r.email=t);a+=1}return r}function _r(e){return e.replace(`Value in [members.email] cannot be blank.`,`Missing email address`).replace(`Value in [members.note] exceeds maximum length of 2000 characters.`,`Note is too long`).replace(`Value in [members.subscribed] must be one of true, false, 0 or 1.`,`Value of "Subscribed to emails" must be "true" or "false"`).replace(`Validation (isEmail) failed for email`,`Invalid email address`).replace(/No such customer:[\s\S]*/,`Could not find Stripe customer`)}function vr({status:e,fileData:t,mapping:n,mappingError:r,showMappingErrors:i,membersCount:a,dataPreviewIndex:o,hasPrevRecord:s,hasNextRecord:c,fieldMappings:l,labelPicker:u,onUpdateMapping:d,onDataPreviewIndexChange:f,onStartOver:p,onUpload:m}){let h=t&&t.length>0&&n?Object.entries(t[o]||{}).map(([e,t])=>({key:e,value:t,mapTo:n.get(e)})):[];return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 flex min-h-0 flex-1 flex-col space-y-5`,children:t===null?(0,Z.jsx)(`div`,{className:`flex items-center justify-center rounded-md border bg-muted p-10`,children:(0,Z.jsx)(ut,{size:`md`})}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:S(`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,i&&r&&`border-red-500`),children:(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,Z.jsxs)(He,{className:`table-fixed`,children:[(0,Z.jsx)(Ve,{children:(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{className:`w-1/3`,children:`Field`}),(0,Z.jsx)(W,{className:`w-1/3`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data`,` `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,C(o+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:S(`rounded p-0.5 hover:bg-muted`,!s&&`cursor-default opacity-30`),disabled:!s||e===`UPLOADING`,type:`button`,onClick:()=>f(o-1),children:(0,Z.jsx)(te,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:S(`rounded p-0.5 hover:bg-muted`,!c&&`cursor-default opacity-30`),disabled:!c||e===`UPLOADING`,type:`button`,onClick:()=>f(o+1),children:(0,Z.jsx)(re,{className:`size-4`})})]})]})}),(0,Z.jsx)(W,{className:`w-1/3`,children:`Import as`})]})}),(0,Z.jsx)(Be,{children:h.length>0?h.map(t=>(0,Z.jsxs)(G,{className:S(!t.mapTo&&`bg-muted`),children:[(0,Z.jsx)(K,{className:`text-sm font-medium break-all`,children:t.key}),(0,Z.jsx)(K,{className:S(`text-sm break-all`,!t.value&&`text-muted-foreground`),children:t.value||`\xA0`}),(0,Z.jsx)(K,{children:(0,Z.jsxs)(Ae,{disabled:e===`UPLOADING`,value:t.mapTo||`__not_imported__`,onValueChange:e=>{d(t.key,e===`__not_imported__`?null:e)},children:[(0,Z.jsx)(Oe,{className:S(`h-8 text-sm`,!t.mapTo&&`text-muted-foreground`),children:(0,Z.jsx)(ke,{})}),(0,Z.jsxs)(De,{children:[(0,Z.jsx)(Ee,{value:`__not_imported__`,children:`Not imported`}),l.map(e=>(0,Z.jsx)(Ee,{value:e.value,children:e.label},e.value))]})]})})]},t.key)):(0,Z.jsx)(G,{children:(0,Z.jsx)(K,{className:`text-muted-foreground`,colSpan:3,children:`No data found in the uploaded CSV.`})})})]})})}),i&&r&&(0,Z.jsx)(`p`,{className:`text-sm text-red-600`,children:r}),a>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(Xn,{isCreating:u.isCreating,labels:u.labels,optionSource:u.optionSource,resolvedSelectedLabels:u.resolvedSelectedLabels,selectedSlugs:u.selectedSlugs,onCreate:u.createLabel,onDelete:u.deleteLabel,onEdit:u.editLabel,onToggle:u.toggleLabel})]})]})}),(0,Z.jsxs)(J,{className:`mt-5`,children:[(0,Z.jsx)(H,{disabled:e===`UPLOADING`,variant:`outline`,onClick:p,children:`Start over`}),(0,Z.jsx)(H,{disabled:e===`UPLOADING`||a===0,onClick:m,children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(ut,{color:`light`,size:`sm`}),`Uploading`]}):a>0?`Import ${C(a)} ${a===1?`member`:`members`}`:`Import members`})]})]})}function yr({onUploadAnotherFile:e,onClose:t}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`Your import is being processed, and you'll receive a confirmation email as soon as it's complete. Usually this only takes a few minutes, but larger imports may take longer.`})}),(0,Z.jsxs)(J,{className:`mt-5`,children:[(0,Z.jsx)(H,{variant:`outline`,onClick:e,children:`Upload another file`}),(0,Z.jsx)(H,{onClick:t,children:`Got it`})]})]})}var br=()=>({status:`INIT`,file:null,fileData:null,mapping:null,selectedLabelSlugs:[],dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,importResponse:null,errorMessage:null,errorHeader:`Import error`,showTryAgainButton:!0,dragOver:!1,fileError:null});function xr({importResponse:e,onReset:t,onClose:n}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-4`,children:[e.importedCount===0?(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`No members were added`,e.errorCount>0?` due to the following errors:`:`.`]}):(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`A total of `,(0,Z.jsx)(`strong`,{children:C(e.importedCount)}),` `,e.importedCount===1?`person was`:`people were`,` successfully added or updated in your list of members, and now have access to your site.`]}),e.errorCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[e.importedCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hr`,{className:`border-gray-200`}),(0,Z.jsxs)(`p`,{className:`text-sm`,children:[(0,Z.jsx)(`strong`,{children:C(e.errorCount)}),` `,e.errorCount===1?`member was`:`members were`,` skipped due to the following errors:`]})]}),(0,Z.jsx)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-muted-foreground`,children:e.errorList.map(e=>(0,Z.jsxs)(`li`,{children:[e.message,` (`,e.count,`)`]},e.message))})]})]}),(0,Z.jsx)(J,{className:`mt-5`,children:e.errorCount>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{download:e.errorCsvName,href:e.errorCsvUrl,children:`Download error file`})}),e.importedCount===0?(0,Z.jsx)(H,{onClick:t,children:`Try again`}):(0,Z.jsx)(H,{onClick:n,children:`View members`})]}):(0,Z.jsx)(Z.Fragment,{children:e.importedCount===0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:n,children:`Close`}),(0,Z.jsx)(H,{onClick:t,children:`Try again`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{variant:`outline`,onClick:t,children:`Upload another file`}),(0,Z.jsx)(H,{onClick:n,children:`View members`})]})})})]})}function Sr({errorMessage:e,showTryAgainButton:t,onTryAgain:n,onClose:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(k,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]})}),(0,Z.jsxs)(J,{className:`mt-5`,children:[t&&(0,Z.jsx)(H,{variant:`outline`,onClick:n,children:`Try again`}),(0,Z.jsx)(H,{onClick:r,children:`OK`})]})]})}var Cr=e(w(),1),wr=e(Qn(),1);function Tr(e){let t=wr.default.parse(e,{header:!0,skipEmptyLines:!0});return!t.data||t.data.length<1?[]:t.data.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):``;return t})}var Er=qe([q(),Ke({name:q()})]),Dr=Ke({error:q().catch(``)}).catchall(Ge());function Or(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{let t=Er.safeParse(e);return t.success?typeof t.data==`string`?t.data:t.data.name:``}).filter(Boolean).join(`,`):``}function Q(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):``}function kr(e){let t={email:Q(e.email),name:Q(e.name),note:Q(e.note),...e.subscribed===void 0?{}:{subscribed_to_emails:Q(e.subscribed)},...e.complimentary_plan===void 0?{}:{complimentary_plan:Q(e.complimentary_plan)},stripe_customer_id:Q(e.stripe_customer_id),created_at:Q(e.created_at),labels:Or(e.labels)};e.newsletters!==void 0&&(t.newsletters=Or(e.newsletters));for(let[n,r]of Object.entries(e))Bn(n)&&(t[n]=Q(r));return t.gift_id=Q(e.gift_id),t.error=Q(e.error),t}function Ar(e){if(e.length===0)return``;let t=e.map(e=>kr(Dr.parse(e))),n=[];for(let e of t)for(let t of Object.keys(e))t!==`error`&&!n.includes(t)&&n.push(t);return n.push(`error`),wr.default.unparse(t,{quotes:!0,escapeFormulae:!0,columns:n})}var jr=Ke({errors:Je(q()).catch([])}).catchall(Ge());function Mr(e){let t=e.meta.stats.imported,n=Array.isArray(e.meta.stats.invalid)?e.meta.stats.invalid:[],r=n.length,i={},a=Ar(n.map(e=>{let t=jr.safeParse(e),{errors:n,...r}=t.success?t.data:{errors:[]},a=n.map(e=>_r(e).trim()).filter(Boolean);for(let e of a)i[e]?i[e].count+=1:i[e]={message:e,count:1};return{...r,error:a.join(`
|
|
2
|
-
`)}})),o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=e.meta.import_label;return{importedCount:t,errorCount:r,errorCsvUrl:s,errorCsvName:c?`${c.name} - Errors.csv`:`Import ${(0,Cr.default)().format(`YYYY-MM-DD HH:mm`)} - Errors.csv`,errorList:Object.values(i),importLabel:e.meta.import_label||void 0}}function Nr(e,t){switch(t.type){case`SELECT_FILE`:return{...e,status:`MAPPING`,file:t.file,fileData:null,mapping:null,dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,fileError:null};case`SET_FILE_ERROR`:return{...e,fileError:t.fileError};case`PARSE_SUCCESS`:return{...e,fileData:t.fileData,mapping:t.mapping,mappingError:t.mappingError};case`PARSE_FAILURE`:return{...e,fileData:[],mapping:null,mappingError:t.mappingError};case`UPDATE_MAPPING`:return{...e,mapping:t.mapping,mappingError:t.mappingError};case`SET_SELECTED_LABEL_SLUGS`:return{...e,selectedLabelSlugs:t.selectedLabelSlugs};case`SET_DATA_PREVIEW_INDEX`:return{...e,dataPreviewIndex:t.dataPreviewIndex};case`SET_SHOW_MAPPING_ERRORS`:return{...e,showMappingErrors:t.showMappingErrors};case`SET_DRAG_OVER`:return{...e,dragOver:t.dragOver};case`UPLOAD_START`:return{...e,status:`UPLOADING`,showMappingErrors:!1};case`UPLOAD_ACCEPTED`:return{...e,status:`PROCESSING`};case`UPLOAD_COMPLETE`:return{...e,status:`COMPLETE`,importResponse:t.importResponse};case`UPLOAD_ERROR`:return{...e,status:`ERROR`,errorMessage:t.errorMessage,errorHeader:t.errorHeader??`Import error`,showTryAgainButton:t.showTryAgainButton??!0};case`RESET`:return br();default:return e}}function Pr({open:e,onOpenChange:t,onComplete:n,onClose:r}){let[s,c]=(0,X.useReducer)(Nr,void 0,br),l=(0,X.useRef)(null),{mutateAsync:u}=Ct(),f=Ut(`importMemberTier`),p=(0,X.useRef)({importMemberTier:f});p.current={importMemberTier:f};let m=(0,X.useMemo)(()=>dr({importMemberTier:f}),[f]),h=Yn({selectedSlugs:s.selectedLabelSlugs,onSelectionChange:e=>c({type:`SET_SELECTED_LABEL_SLUGS`,selectedLabelSlugs:e})}),g=(0,X.useCallback)(()=>{l.current&&typeof URL.revokeObjectURL==`function`?(URL.revokeObjectURL(l.current),l.current=null):l.current&&=null},[]),_=(0,X.useCallback)(()=>{g(),c({type:`RESET`})},[g]);(0,X.useEffect)(()=>()=>{g()},[g]);let v=(0,X.useCallback)(e=>{if(!(!e&&s.status===`UPLOADING`)){if(!e){let e=s.importResponse??void 0;_(),r?.(e)}t(e)}},[r,t,_,s.importResponse,s.status]);(0,X.useEffect)(()=>{if(!s.file)return;let e=!1,t=new FileReader;return t.onload=t=>{if(!e)try{let e=t.target?.result,n=Tr(e);if(n.length>0){let e=new pr(gr(n,p.current));c({type:`PARSE_SUCCESS`,fileData:n,mapping:e,mappingError:e.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`})}else c({type:`PARSE_SUCCESS`,fileData:[],mapping:null,mappingError:`File is empty, nothing to import. Please select a different file.`})}catch{c({type:`PARSE_FAILURE`,mappingError:`Failed to parse this file. Please try another CSV file.`})}},t.onerror=()=>{e||c({type:`PARSE_FAILURE`,mappingError:`Failed to read file${t.error?.message?`: ${t.error.message}`:``}`})},t.onabort=()=>{e||c({type:`PARSE_FAILURE`,mappingError:`File read was interrupted. Please try again.`})},t.readAsText(s.file),()=>{e=!0,t.readyState===FileReader.LOADING&&t.abort()}},[s.file]);let y=(0,X.useCallback)(e=>{let t=/(?:\.([^.]+))?$/.exec(e.name)?.[1];return!t||t.toLowerCase()!==`csv`?(c({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`}),!1):(c({type:`SET_FILE_ERROR`,fileError:null}),!0)},[]),b=(0,X.useCallback)(e=>{y(e)&&c({type:`SELECT_FILE`,file:e})},[y]),x=(0,X.useCallback)((e,t)=>{if(!s.mapping)return;let n=s.mapping.updateMapping(e,t),r=s.fileData&&s.fileData.length===0?`File is empty, nothing to import. Please select a different file.`:n.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`;c({type:`UPDATE_MAPPING`,mapping:n,mappingError:r})},[s.fileData,s.mapping]),C=(0,X.useCallback)(async()=>{if(!s.file||s.mappingError){c({type:`SET_SHOW_MAPPING_ERRORS`,showMappingErrors:!0});return}c({type:`UPLOAD_START`});let e=[];for(let t of s.selectedLabelSlugs){let n=h.labels.find(e=>e.slug===t);n&&e.push(n.name)}try{let t=await u({file:s.file,labels:e,mapping:s.mapping?.toJSON()});if(Tt(t)){let e=Mr(t);g(),l.current=e.errorCsvUrl,c({type:`UPLOAD_COMPLETE`,importResponse:e}),n?.(e);return}c({type:`UPLOAD_ACCEPTED`}),n?.()}catch(e){if(e instanceof d){c({type:`UPLOAD_ERROR`,errorMessage:`The file you uploaded was larger than the maximum file size your server allows.`});return}let t=e instanceof i?e.data?.errors?.[0]:null;if(e instanceof o&&t?.code===`EMAIL_VERIFICATION_NEEDED`){c({type:`UPLOAD_ERROR`,errorMessage:t.message,errorHeader:`Woah there cowboy, that's a big list`,showTryAgainButton:!1}),n?.();return}if(e instanceof a||t?.type===`DataImportError`){c({type:`UPLOAD_ERROR`,errorMessage:t?.message||(e instanceof Error?e.message:`An unexpected error occurred, please try again`)});return}c({type:`UPLOAD_ERROR`,errorMessage:`An unexpected error occurred, please try again`})}},[s.file,s.mapping,s.mappingError,s.selectedLabelSlugs,h.labels,u,g,n]),w=s.fileData?!!s.fileData[s.dataPreviewIndex+1]:!1,T=s.dataPreviewIndex>0,E=s.fileData?.length??0,D=s.status===`MAPPING`||s.status===`UPLOADING`,O=(0,X.useMemo)(()=>{switch(s.status){case`PROCESSING`:return`Import in progress`;case`COMPLETE`:return`Import complete`;case`ERROR`:return s.errorHeader;default:return`Import members`}},[s.errorHeader,s.status]);return(0,Z.jsx)(Rt,{open:e,onOpenChange:v,children:(0,Z.jsxs)(wt,{className:S(`gap-0`,D&&`max-w-2xl`,D&&`flex max-h-[calc(100vh-16vmin)] flex-col`),children:[(0,Z.jsxs)(Gt,{children:[(0,Z.jsx)(qt,{children:O}),(0,Z.jsx)(xt,{className:`sr-only`,children:`Import members from a CSV file.`})]}),s.status===`INIT`&&(0,Z.jsx)(ar,{fileError:s.fileError,onClose:()=>v(!1),onDropAccepted:b,onDropRejected:()=>c({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`})}),(s.status===`MAPPING`||s.status===`UPLOADING`)&&(0,Z.jsx)(vr,{dataPreviewIndex:s.dataPreviewIndex,fieldMappings:m,fileData:s.fileData,hasNextRecord:w,hasPrevRecord:T,labelPicker:h,mapping:s.mapping,mappingError:s.mappingError,membersCount:E,showMappingErrors:s.showMappingErrors,status:s.status,onDataPreviewIndexChange:e=>{c({type:`SET_DATA_PREVIEW_INDEX`,dataPreviewIndex:e})},onStartOver:_,onUpdateMapping:x,onUpload:()=>void C()}),s.status===`PROCESSING`&&(0,Z.jsx)(yr,{onClose:()=>v(!1),onUploadAnotherFile:_}),s.status===`COMPLETE`&&s.importResponse&&(0,Z.jsx)(xr,{importResponse:s.importResponse,onClose:()=>v(!1),onReset:_}),s.status===`ERROR`&&(0,Z.jsx)(Sr,{errorMessage:s.errorMessage,showTryAgainButton:s.showTryAgainButton,onClose:()=>v(!1),onTryAgain:_})]})})}function Fr(e){let t=((Bn(e)?e.split(`.`)[2]:e)??e).replace(/[._-]+/g,` `).trim();return t.charAt(0).toUpperCase()+t.slice(1)}function Ir({columnKey:e,isSaving:t,nameError:n,saveError:r,canRetry:i,onSubmit:a,onEdit:o,onCancel:s}){let[c,l]=(0,X.useState)(()=>Fr(e)),[u,d]=(0,X.useState)(Hn[0].id),f=(0,X.useRef)(null);(0,X.useEffect)(()=>{f.current?.scrollIntoView({block:`nearest`})},[]);let p=()=>a(c,u);return(0,Z.jsxs)(`div`,{ref:f,className:`scroll-mb-8 space-y-3`,"data-testid":`import-create-custom-field`,onKeyDown:e=>{if(e.key===`Escape`){e.stopPropagation(),t||s();return}e.key===`Enter`&&!t&&i&&(e.preventDefault(),p())},children:[(0,Z.jsxs)(Ne,{className:`flex-row flex-wrap items-start gap-3`,children:[(0,Z.jsxs)(Ie,{className:`min-w-56 flex-1`,"data-invalid":!!n||void 0,children:[(0,Z.jsx)(Fe,{className:`text-sm!`,htmlFor:`import-custom-field-name`,children:`Name`}),(0,Z.jsx)($e,{"aria-invalid":!!n||void 0,autoComplete:`off`,className:`h-8 text-sm!`,id:`import-custom-field-name`,placeholder:`Enter custom field name`,value:c,autoFocus:!0,onChange:e=>{l(e.target.value),o()}}),n&&(0,Z.jsx)(Pe,{children:n})]}),(0,Z.jsxs)(Ie,{className:`w-44`,children:[(0,Z.jsx)(Fe,{className:`text-sm!`,children:`Type`}),(0,Z.jsxs)(Ae,{value:u,onValueChange:e=>d(e),children:[(0,Z.jsx)(Oe,{"aria-label":`Type`,className:`h-8 text-sm!`,children:(0,Z.jsx)(ke,{children:(0,Z.jsx)(er,{type:u})})}),(0,Z.jsx)(De,{children:Hn.map(e=>(0,Z.jsx)(Ee,{value:e.id,children:(0,Z.jsx)(er,{type:e.id})},e.id))})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 self-end pb-0.5`,children:[(0,Z.jsx)(H,{disabled:t,size:`sm`,variant:`outline`,onClick:s,children:`Cancel`}),(0,Z.jsx)(H,{disabled:t||!i,size:`sm`,onClick:p,children:t?`Saving`:`Save`})]})]}),r&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:r})]})}var Lr={membership:{heading:`Membership fields`,badge:null,ariaKind:null},custom:{heading:`Custom fields`,badge:`Custom`,ariaKind:`Custom field`}},Rr=Object.keys(Lr);function zr({membershipFields:e,customFieldColumns:t}){let n=[...e.map(e=>({value:e.value,source:`membership`,fieldName:e.label,label:e.label})),...t.map(e=>({value:e.value,source:`custom`,fieldName:e.fieldName,...e.partLabel===void 0?{}:{partLabel:e.partLabel},label:e.label,type:e.type}))],r=Vr(n),i=n.map(e=>({...e,badge:r.has(Br(e))?Lr[e.source].badge:null,ariaKind:Lr[e.source].ariaKind}));return Rr.map(e=>({source:e,heading:Lr[e].heading,targets:i.filter(t=>t.source===e)})).filter(e=>e.targets.length>0)}function Br(e){return e.label.trim().toLowerCase()}function Vr(e){let t=new Map;for(let n of e){let e=t.get(Br(n))??new Set;e.add(n.source),t.set(Br(n),e)}return new Set([...t].filter(([,e])=>e.size>1).map(([e])=>e))}var Hr={email:R,name:U,note:O,subscribed_to_emails:ae,stripe_customer_id:M,complimentary_plan:I,labels:P,created_at:ue,gift_id:ie,import_tier:L};function Ur(e,t){return(0,Z.jsx)(ne,{className:t})}function Wr({target:e,className:t}){switch(e.source){case`membership`:return(0,Z.jsx)(Hr[e.value]??ne,{className:t});case`custom`:return(0,Z.jsx)($n,{className:t,type:e.type});default:return Ur(e,t)}}function Gr(e,t,n){return ve((n??[]).join(` `),t)}function Kr({className:e,columnKey:t,value:n,disabled:r,invalid:i,targetGroups:a,canCreateField:o,open:s,search:c,onOpenChange:l,onSearchChange:u,onSelect:d,onCreateField:f,triggerRef:p}){let m=(0,X.useRef)(!1),h=a.flatMap(e=>e.targets).find(e=>e.value===n),g=h?.badge??null,_=h?.ariaKind??null,v=e=>{l(!1),d(e)};return(0,Z.jsxs)(Nt,{open:s,modal:!0,onOpenChange:e=>{r||l(e)},children:[(0,Z.jsx)(bt,{asChild:!0,children:(0,Z.jsxs)(H,{ref:p,"aria-disabled":r||void 0,"aria-invalid":i||void 0,"aria-label":h?`Field for ${t}, ${h.label}${_?`, ${_}`:``}`:`Field for ${t}, not chosen`,className:S(`h-(--control-height) w-full scroll-my-8 justify-start gap-2 px-2 font-normal`,e,`hover:text-current`,we.invalidSelf,`aria-[invalid=true]:ring-2`,r&&`cursor-not-allowed hover:bg-transparent`),role:`combobox`,variant:`outline`,children:[(0,Z.jsxs)(`span`,{className:S(`flex shrink-0 items-center`,r&&`opacity-60`),children:[h&&(0,Z.jsx)(Wr,{className:`size-4 text-foreground`,target:h}),!h&&(0,Z.jsx)(`span`,{className:`size-4 rounded-sm border border-dashed border-border-strong`})]}),h?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`span`,{className:S(`flex min-w-0 flex-1 items-baseline text-left text-sm font-medium`,r&&`opacity-60`),children:[(0,Z.jsx)(`span`,{className:`min-w-0 shrink-[999] truncate`,children:h.fieldName}),h.partLabel&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate whitespace-pre`,children:` (${h.partLabel})`})]}),g&&(0,Z.jsx)(st,{className:S(`ms-2 shrink-0 max-md:hidden`,r&&`opacity-60`),variant:`secondary`,children:g})]}):(0,Z.jsx)(`span`,{className:S(`min-w-0 truncate text-sm text-muted-foreground`,r&&`opacity-60`),children:`Select field`}),(0,Z.jsx)(D,{className:`ms-auto size-4 shrink-0 opacity-50`})]})}),(0,Z.jsx)(_t,{align:`start`,className:`flex max-h-(--radix-popover-content-available-height) w-(--radix-popover-trigger-width) min-w-64 flex-col p-0`,collisionPadding:16,onCloseAutoFocus:e=>{m.current&&(m.current=!1,e.preventDefault(),f())},children:(0,Z.jsxs)(Ce,{className:`min-h-0`,filter:Gr,children:[(0,Z.jsx)(ge,{className:`h-(--control-height) shrink-0`,placeholder:`Search fields...`,value:c,onValueChange:u}),(0,Z.jsxs)(Se,{className:`min-h-0 flex-1`,children:[a.map(e=>(0,Z.jsx)(_e,{heading:e.heading,children:e.targets.map(e=>(0,Z.jsxs)(be,{keywords:[e.label],value:e.value,onSelect:()=>v(e.value),children:[(0,Z.jsx)(Wr,{target:e}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.label}),n===e.value&&(0,Z.jsx)(ye,{})]},e.value))},e.source)),o?(0,Z.jsx)(_e,{forceMount:!0,children:(0,Z.jsxs)(be,{className:`font-semibold text-green`,value:`Add custom field`,forceMount:!0,onSelect:()=>{m.current=!0,l(!1)},children:[(0,Z.jsx)(oe,{}),(0,Z.jsx)(`span`,{children:`Add custom field`})]})}):(0,Z.jsx)(xe,{children:`No fields found.`})]})]})})]})}function qr(e,t,n){let r=new Set(e);return n?r.add(t):r.delete(t),r}function Jr(e){return zn(e.type)?null:Un([e])[0]?.value??null}function Yr({status:e,fileData:t,mapping:n,mappingError:r,showMappingErrors:c,dataPreviewIndex:u,targetGroups:d,canCreateCustomFields:p,labelPicker:m,onUpdateMapping:h,onFieldCreated:g,onDataPreviewIndexChange:_,onStartOver:v,onColumnsChanged:y,onUpload:b}){let[x,w]=(0,X.useState)(new Set),[T,E]=(0,X.useState)(new Set),[D,O]=(0,X.useState)(null),k=(0,X.useRef)(new Map);(0,X.useLayoutEffect)(()=>{let[e]=D?.columns??[];e&&k.current.get(e)?.scrollIntoView({block:`nearest`,behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})},[D]);let[A,j]=(0,X.useState)(null),[M,N]=(0,X.useState)(null),{mutateAsync:P,isPending:ee}=Gn(),[F,I]=(0,X.useState)(null),[ne,L]=(0,X.useState)(null),[R,ie]=(0,X.useState)(!0),z=l(),B=(0,X.useCallback)(()=>{I(null),L(null),ie(!0)},[]),ae=e=>{let t=e instanceof i?e.data?.errors?.[0]:null;if(e instanceof a&&t?.property===`name`){I(f(e,`Invalid name`));return}L(f(e,e instanceof s?e.message:`Could not create the custom field, please try again.`)),ie(!(e instanceof o)&&t?.type!==`NoPermissionError`),e instanceof o||z(e,{withToast:!1})},oe=async(e,t,n)=>{B();let r;try{r=(await P({name:t,type:n})).members_metafields?.[0]}catch(e){ae(e);return}if(!r){L(`The field was created, but this column could not be mapped to it. Choose it from the list.`),ie(!1),z(Error(`Custom field create returned no field`));return}let i=Jr(r);if(g(e,i),j(null),O(null),i){k.current.get(e)?.focus();return}ce(e,r.name)},se=e=>!!A&&A!==e.key,V=t=>e===`UPLOADING`||ee,ce=(e,t)=>{B(),j(null),N({columnKey:e,search:t})},le=e=>{B(),j(e)},ue=(e,t)=>{let r=n?.getKeyByValue(t);r&&r!==e.key&&w(e=>qr(e,r,!0)),h(e.key,t)},U=e=>!T.has(e.key)&&(!!e.mapTo||x.has(e.key)),de=(e,t)=>{O(null),y(),E(n=>qr(n,e.key,!t)),w(n=>qr(n,e.key,t&&!e.mapTo)),!t&&A===e.key&&j(null)},fe=c&&r||D?.message,pe=!!fe&&!D?.columns.size,me=t.length,he=u>0,ge=!!t[u+1],_e=(0,X.useMemo)(()=>mr(t),[t]),ve=n?_e.map(e=>({key:e,value:t[u]?.[e]??``,mapTo:n.get(e)})):[],ye=Object.fromEntries(ve.map(e=>[e.key,U(e)?e.mapTo:``])),be=()=>{if(r)return null;if(!Object.values(ye).includes(`email`))return{message:`Please map "Email" to one of the fields in the CSV, and make sure it is selected.`,columns:new Set};let e=Object.keys(ye).filter(e=>ye[e]===null);return e.length===0?null:{message:`Choose a field for ${e.map(e=>`"${e}"`).join(`, `)}, or deselect ${e.length===1?`it`:`them`}.`,columns:new Set(e)}};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 flex min-h-0 flex-1 flex-col space-y-5`,children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:S(`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,pe&&`border-destructive`),children:(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,Z.jsxs)(He,{className:`table-fixed`,children:[(0,Z.jsx)(Ve,{children:(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{className:`w-10`,children:(0,Z.jsx)(`span`,{className:`sr-only`,children:`Import this column`})}),(0,Z.jsx)(W,{className:`w-[26%]`,children:`Field`}),(0,Z.jsx)(W,{className:`w-[30%]`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data`,` `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,C(u+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:S(`rounded p-0.5 hover:bg-muted`,!he&&`cursor-default opacity-30`),disabled:!he||e===`UPLOADING`,type:`button`,onClick:()=>_(u-1),children:(0,Z.jsx)(te,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:S(`rounded p-0.5 hover:bg-muted`,!ge&&`cursor-default opacity-30`),disabled:!ge||e===`UPLOADING`,type:`button`,onClick:()=>_(u+1),children:(0,Z.jsx)(re,{className:`size-4`})})]})]})}),(0,Z.jsx)(W,{className:`w-[38%]`,children:`Import as`})]})}),(0,Z.jsx)(Be,{children:ve.length>0?ve.map(e=>(0,Z.jsxs)(X.Fragment,{children:[(0,Z.jsxs)(G,{className:S(`transition-opacity [&>td]:group-hover:bg-transparent`,!U(e)&&`bg-muted/50`,se(e)&&`opacity-40`),children:[(0,Z.jsx)(K,{children:(0,Z.jsx)(je,{"aria-label":`Import ${e.key}`,checked:U(e),disabled:V(e),onCheckedChange:t=>de(e,t===!0)})}),(0,Z.jsx)(K,{className:S(`text-sm font-medium break-all`,!U(e)&&`text-muted-foreground`),children:e.key}),(0,Z.jsx)(K,{className:S(`text-sm break-all`,(!e.value||!U(e))&&`text-muted-foreground`),children:e.value||`\xA0`}),(0,Z.jsx)(K,{children:(0,Z.jsx)(Kr,{canCreateField:p,className:S(!U(e)&&`invisible`),columnKey:e.key,disabled:V(e),invalid:D?.columns.has(e.key),open:M?.columnKey===e.key,search:M?.columnKey===e.key?M.search:``,targetGroups:d,triggerRef:t=>{t?k.current.set(e.key,t):k.current.delete(e.key)},value:e.mapTo,onCreateField:()=>le(e.key),onOpenChange:t=>t?ce(e.key,``):N(null),onSearchChange:t=>N({columnKey:e.key,search:t}),onSelect:t=>{O(null),ue(e,t)}})})]}),A===e.key&&(0,Z.jsx)(G,{className:`bg-transparent hover:bg-transparent`,children:(0,Z.jsx)(K,{className:`p-2`,colSpan:4,children:(0,Z.jsx)(`div`,{className:`rounded-lg border bg-surface-elevated-2 p-3 shadow-lg`,children:(0,Z.jsx)(Ir,{canRetry:R,columnKey:e.key,isSaving:ee,nameError:F,saveError:ne,onCancel:()=>{B(),j(null),k.current.get(e.key)?.focus()},onEdit:B,onSubmit:(t,n)=>void oe(e.key,t,n)})})})})]},e.key)):(0,Z.jsx)(G,{children:(0,Z.jsx)(K,{className:`text-muted-foreground`,colSpan:4,children:`No data found in the uploaded CSV.`})})})]})})}),fe&&(0,Z.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:fe}),me>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(Xn,{isCreating:m.isCreating,labels:m.labels,optionSource:m.optionSource,resolvedSelectedLabels:m.resolvedSelectedLabels,selectedSlugs:m.selectedSlugs,onCreate:m.createLabel,onDelete:m.deleteLabel,onEdit:m.editLabel,onToggle:m.toggleLabel})]})]})}),(0,Z.jsxs)(J,{className:`mt-5`,children:[(0,Z.jsx)(H,{disabled:e===`UPLOADING`,variant:`outline`,onClick:v,children:`Start over`}),(0,Z.jsx)(H,{disabled:e===`UPLOADING`||me===0,onClick:()=>{let e=be();if(e){O(e);return}b(ye)},children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(ut,{color:`light`,size:`sm`}),`Uploading`]}):me>0?`Import ${C(me)} ${me===1?`member`:`members`}`:`Import members`})]})]})}function Xr({open:e,onOpenChange:t,onComplete:n,onClose:r}){let[s,c]=(0,X.useReducer)(Nr,void 0,br),l=(0,X.useRef)(null),{mutateAsync:u}=Ct(),p=Ut(`importMemberTier`),m=Ut(`membersCustomFields`),{data:h,isError:g}=Jn(),_=(0,X.useMemo)(()=>Un(h??[]),[h]),v=h!==void 0||g,y=(0,X.useRef)({importMemberTier:p,customFieldColumns:_});(0,X.useLayoutEffect)(()=>{y.current={importMemberTier:p,customFieldColumns:_}},[p,_]);let b=(0,X.useMemo)(()=>zr({membershipFields:dr({importMemberTier:p}),customFieldColumns:_}),[p,_]),x=Yn({selectedSlugs:s.selectedLabelSlugs,onSelectionChange:e=>{D.current=!0,c({type:`SET_SELECTED_LABEL_SLUGS`,selectedLabelSlugs:e})}}),C=(0,X.useCallback)(()=>{l.current&&typeof URL.revokeObjectURL==`function`?(URL.revokeObjectURL(l.current),l.current=null):l.current&&=null},[]),w=(0,X.useCallback)(()=>{C(),D.current=!1,c({type:`RESET`})},[C]);(0,X.useEffect)(()=>()=>{C()},[C]);let{confirm:T,dialogProps:E}=Yt(),D=(0,X.useRef)(!1),O=(0,X.useCallback)(e=>{if(!(!e&&s.status===`UPLOADING`)){if(!e){T(s.status===`MAPPING`&&D.current,()=>{let e=s.importResponse??void 0;w(),r?.(e),t(!1)});return}t(e)}},[T,r,t,w,s.importResponse,s.status]);(0,X.useEffect)(()=>{if(!s.file||!v)return;let e=!1,t=new FileReader;return t.onload=t=>{if(!e)try{let e=t.target?.result,n=Tr(e);if(n.length>0){let e=new pr(gr(n,y.current));c({type:`PARSE_SUCCESS`,fileData:n,mapping:e,mappingError:null})}else c({type:`PARSE_SUCCESS`,fileData:[],mapping:null,mappingError:`File is empty, nothing to import. Please select a different file.`})}catch{c({type:`PARSE_FAILURE`,mappingError:`Failed to parse this file. Please try another CSV file.`})}},t.onerror=()=>{e||c({type:`PARSE_FAILURE`,mappingError:`Failed to read file${t.error?.message?`: ${t.error.message}`:``}`})},t.onabort=()=>{e||c({type:`PARSE_FAILURE`,mappingError:`File read was interrupted. Please try again.`})},t.readAsText(s.file),()=>{e=!0,t.readyState===FileReader.LOADING&&t.abort()}},[s.file,v]);let k=(0,X.useCallback)(e=>{let t=/(?:\.([^.]+))?$/.exec(e.name)?.[1];return!t||t.toLowerCase()!==`csv`?(c({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`}),!1):(c({type:`SET_FILE_ERROR`,fileError:null}),!0)},[]),A=(0,X.useCallback)(e=>{k(e)&&c({type:`SELECT_FILE`,file:e})},[k]),j=(0,X.useCallback)((e,t)=>{if(!s.mapping)return;D.current=!0;let n=s.mapping.updateMapping(e,t),r=s.fileData&&s.fileData.length===0?`File is empty, nothing to import. Please select a different file.`:null;c({type:`UPDATE_MAPPING`,mapping:n,mappingError:r})},[s.fileData,s.mapping]),M=(0,X.useCallback)((e,t)=>{t&&j(e,t)},[j]),N=(0,X.useCallback)(async e=>{if(!s.file||s.mappingError){c({type:`SET_SHOW_MAPPING_ERRORS`,showMappingErrors:!0});return}c({type:`UPLOAD_START`});let t=[];for(let e of s.selectedLabelSlugs){let n=x.labels.find(t=>t.slug===e);n&&t.push(n.name)}try{let r=await u({file:s.file,labels:t,mapping:e});if(Tt(r)){let e=Mr(r);C(),l.current=e.errorCsvUrl,c({type:`UPLOAD_COMPLETE`,importResponse:e}),n?.(e);return}c({type:`UPLOAD_ACCEPTED`}),n?.()}catch(e){if(e instanceof d){c({type:`UPLOAD_ERROR`,errorMessage:`The file you uploaded was larger than the maximum file size your server allows.`});return}let t=e instanceof i?e.data?.errors?.[0]:null;if(e instanceof o&&t?.code===`EMAIL_VERIFICATION_NEEDED`){c({type:`UPLOAD_ERROR`,errorMessage:f(e,e.message),errorHeader:`Woah there cowboy, that's a big list`,showTryAgainButton:!1}),n?.();return}if(e instanceof a||t?.type===`DataImportError`){c({type:`UPLOAD_ERROR`,errorMessage:f(e,e instanceof Error?e.message:`An unexpected error occurred, please try again`)});return}c({type:`UPLOAD_ERROR`,errorMessage:`An unexpected error occurred, please try again`})}},[s.file,s.mappingError,s.selectedLabelSlugs,x.labels,u,C,n]),P=s.status===`MAPPING`||s.status===`UPLOADING`,ee=(0,X.useMemo)(()=>{switch(s.status){case`PROCESSING`:return`Import in progress`;case`COMPLETE`:return`Import complete`;case`ERROR`:return s.errorHeader;default:return`Import members`}},[s.errorHeader,s.status]);return(0,Z.jsxs)(Rt,{open:e,onOpenChange:O,children:[(0,Z.jsxs)(wt,{className:S(`gap-0`,P&&`max-w-4xl`,P&&`flex max-h-[calc(100vh-16vmin)] flex-col`),children:[(0,Z.jsxs)(Gt,{children:[(0,Z.jsx)(qt,{children:ee}),(0,Z.jsx)(xt,{className:`sr-only`,children:`Import members from a CSV file.`})]}),s.status===`INIT`&&(0,Z.jsx)(ar,{fileError:s.fileError,onClose:()=>O(!1),onDropAccepted:A,onDropRejected:()=>c({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`})}),(s.status===`MAPPING`||s.status===`UPLOADING`)&&s.fileData===null&&(0,Z.jsx)(`div`,{className:`flex items-center justify-center rounded-md border bg-muted p-10`,children:(0,Z.jsx)(ut,{size:`md`})}),(s.status===`MAPPING`||s.status===`UPLOADING`)&&s.fileData!==null&&(0,Z.jsx)(Yr,{canCreateCustomFields:m,dataPreviewIndex:s.dataPreviewIndex,fileData:s.fileData,labelPicker:x,mapping:s.mapping,mappingError:s.mappingError,showMappingErrors:s.showMappingErrors,status:s.status,targetGroups:b,onColumnsChanged:()=>{D.current=!0},onDataPreviewIndexChange:e=>{c({type:`SET_DATA_PREVIEW_INDEX`,dataPreviewIndex:e})},onFieldCreated:M,onStartOver:w,onUpdateMapping:j,onUpload:e=>void N(e)}),s.status===`PROCESSING`&&(0,Z.jsx)(yr,{onClose:()=>O(!1),onUploadAnotherFile:w}),s.status===`COMPLETE`&&s.importResponse&&(0,Z.jsx)(xr,{importResponse:s.importResponse,onClose:()=>O(!1),onReset:w}),s.status===`ERROR`&&(0,Z.jsx)(Sr,{errorMessage:s.errorMessage,showTryAgainButton:s.showTryAgainButton,onClose:()=>O(!1),onTryAgain:w})]}),(0,Z.jsx)(yt,{open:E.open,onOpenChange:E.onOpenChange,children:(0,Z.jsxs)(zt,{className:`z-[1100]`,"data-testid":`import-members-leave-guard`,overlayClassName:`z-[1100]`,onEscapeKeyDown:e=>e.stopPropagation(),children:[(0,Z.jsxs)(Lt,{children:[(0,Z.jsx)(Ht,{children:`Leave without importing?`}),(0,Z.jsx)(Dt,{children:`The columns you have mapped will be lost.`})]}),(0,Z.jsxs)(pt,{children:[(0,Z.jsx)(Pt,{children:`Keep mapping`}),(0,Z.jsx)(H,{variant:`destructive`,onClick:E.onConfirm,children:`Leave`})]})]})})]})}function Zr(e){return Ut(`membersImportRedesign`)?(0,Z.jsx)(Xr,{...e}):(0,Z.jsx)(Pr,{...e})}var Qr=`metafields`,$r=`${Qr}.key`,ei=`${Qr}.value`,ti=`metafields.`;function $(e){return`${ti}${e.namespace}.${e.key}`}function ni(e){if(!e.startsWith(`metafields.`))return null;let[t,n,...r]=e.slice(11).split(`.`);return!t||!n||r.length>0?null:{namespace:t,key:n}}function ri(e,t){return Rn({namespace:e.namespace,key:e.key,partPath:t||null})}function ii(e){let t=typeof e==`string`?Kn(e):null;return t?{namespace:t.namespace,key:t.key,subfield:t.partPath??``}:null}var ai=On;function oi(e){return`${$r}:${m(e)}`}function si(e){let[t,n]=e;return{subfield:typeof t==`string`?t:``,value:n}}function ci(e,t){return e||(t.namespace&&t.key?{namespace:t.namespace,key:t.key}:null)}function li(e){return{presenceOperators:ai,address(t,n){let r=ci(e,n.params),{subfield:i,value:a}=si(t.values);return r?{valueKey:ei,companions:[oi(ri(r,i))],values:[a]}:null},addressPresence(t,n){let r=ci(e,n.params),{subfield:i}=si(t.values);if(!r)return null;let a=ri(r,i);return t.operator===`is-set`?[oi(a)]:[`${$r}:-${m(a)}`]},match(){return null},matchCompound(t){let n=t=>e===void 0||t.namespace===e.namespace&&t.key===e.key,r=nn(t,`$and`);if(!r){let e=ii(t[$r]);if(e)return n(e)?{kind:`predicate`,predicate:{field:$(e),operator:`is-set`,values:[e.subfield,``]}}:null;let r=ii(tn(t[$r]));return r&&n(r)?{kind:`predicate`,predicate:{field:$(r),operator:`is-not-set`,values:[r.subfield,``]}}:null}if(r.length!==2)return null;let i,a,o=!1;for(let e of r){let t=ii(e[$r]);t&&(i=t),ei in e&&(a=e[ei],o=!0)}if(!i||!o||!n(i))return null;let s=rn(a);return s?{kind:`value`,field:$(i),leadingValues:[i.subfield],comparator:s}:null}}}var ui=`newsletters.`,di=`newsletters.slug`,fi=`email_disabled`,pi=[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`}];function mi(e){return{operators:[`is`],serialize({operator:t,values:n},r){let i=e??r.params.slug,a=n[0];return!i||t!==`is`?null:a===`subscribed`?{join:`and`,fragments:[{expression:i},{key:fi,expression:`0`}]}:a===`unsubscribed`?{join:`or`,fragments:[{expression:`-${i}`},{key:fi,expression:`1`}]}:null},parse(){return null}}}function hi(e){return{address(t,n){return e??n.params.slug?{valueKey:di,values:t.values}:null},match(){return null},matchCompound(e){for(let t of[`and`,`or`]){let n=nn(e,t===`and`?`$and`:`$or`);if(!n||n.length!==2)continue;let r,i=!1,a;for(let e of n){let t=e[di];typeof t==`string`&&(r=t,i=!1);let n=tn(t);n!==null&&(r=n,i=!0),typeof e[fi]==`number`&&(a=e[fi])}let o=!i&&t===`and`&&a===0;if(!(!r||!o&&!(i&&t===`or`&&a===1)))return{kind:`predicate`,predicate:{field:`${ui}${r}`,operator:`is`,values:[o?`subscribed`:`unsubscribed`]}}}return null}}}function gi(e){return cn({key:`${ui}${e.slug}`,icon:`newspaper`,semantics:mi(e.slug),addressing:hi(e.slug),operators:[`is`],options:pi,ui:{label:e.name,type:`select`,searchable:!1,hideOperatorSelect:!0}})}function _i(e){return{resolved:e!==void 0,claims:[di],fields:(e??[]).map(gi)}}var vi=cn({key:`${ui}:slug`,icon:`newspaper`,semantics:mi(),addressing:hi(),operators:[`is`],options:pi,ui:{label:`Newsletter`,type:`select`,searchable:!1,hideOperatorSelect:!0}}),yi=`email_disabled`;function bi(e,t){return e.clauses.find(e=>e.key===t)}function xi(){return{operators:[`is`,`is-not`],serialize({operator:e,values:t}){let n=t[0],r=e===`is`;if(e!==`is`&&e!==`is-not`)return null;if(n===`email-disabled`)return{fragments:[{key:yi,expression:r?`1`:`0`}]};if(n!==`subscribed`&&n!==`unsubscribed`)return null;let i=n===`subscribed`;return r?{join:`and`,fragments:[{expression:String(i)},{key:yi,expression:`0`}]}:{join:`or`,fragments:[{expression:String(!i)},{key:yi,expression:`1`}]}},parse(){return null},parseClauses(e){let t=bi(e,yi),n=bi(e,`subscribed`);return t&&!n&&e.clauses.length===1?t.value===1?{operator:`is`,values:[`email-disabled`]}:t.value===0?{operator:`is-not`,values:[`email-disabled`]}:null:!n||typeof n.value!=`boolean`?null:!t&&e.clauses.length===1?{operator:`is`,values:[n.value?`subscribed`:`unsubscribed`]}:!t||e.clauses.length!==2?null:e.join===`and`&&t.value===0?{operator:`is`,values:[n.value?`subscribed`:`unsubscribed`]}:e.join===`or`&&t.value===1?{operator:`is-not`,values:[n.value?`unsubscribed`:`subscribed`]}:null}}}function Si(){return{operators:[`1`,`0`],serialize({operator:e,values:t}){let n=t[0];return typeof n!=`string`||!n?null:{join:`and`,fragments:[{expression:m(n)},{key:`feedback.score`,expression:e}]}},parse(){return null},parseClauses(e){let t=bi(e,`feedback.post_id`),n=bi(e,`feedback.score`);return e.clauses.length!==2||e.join!==`and`||!t||!n||typeof t.value!=`string`||n.value!==0&&n.value!==1?null:{operator:n.value===1?`1`:`0`,values:[t.value]}}}}var Ci=`count.active_stripe_customers`,wi=`${Ci}:>1`;`${Ci}`;var Ti=Xe({multipleActiveSubscriptionsBanner:Xe({dismissedCount:We().finite().optional().catch(void 0),dismissedAt:q().optional().catch(void 0)}).optional().catch(void 0)});function Ei(e){return e===wi}function Di(e){if(!e)return Ti.parse({});try{let t=JSON.parse(e);return Ti.parse(t)}catch{return Ti.parse({})}}function Oi(e){return Di(e).multipleActiveSubscriptionsBanner??{}}function ki(e,t,n){let r=Di(e),i=Oi(e);return JSON.stringify({...r,multipleActiveSubscriptionsBanner:{...i,dismissedCount:t,dismissedAt:n}})}function Ai(e,t,n){return{...e,accessibility:ki(e.accessibility,t,n)}}var ji=[{key:`name`,icon:`person`,type:`text`,ui:{label:`Name`,placeholder:`Enter name...`,className:`w-48`}},{key:`email`,icon:`mail`,type:`text`,ui:{label:`Email`,placeholder:`Enter email...`,className:`w-48`}},{key:`label`,icon:`tag`,type:`set`,ui:{label:`Label`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`labels`,label:`Labels`},columnInclude:`labels`}},cn({key:`subscribed`,icon:`mail`,semantics:xi(),operators:sn.scalar.operators,ui:{label:`Newsletter subscription`,type:`select`,searchable:!1},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`},{value:`email-disabled`,label:`Email disabled`}]}),{key:`last_seen_at`,icon:`eye`,type:`timestamp`,operators:kn,ui:{label:`Last seen`}},{key:`created_at`,icon:`calendar`,type:`timestamp`,operators:kn,ui:{label:`Created`}},{key:`signup`,icon:`person-plus`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Signed up on post/page`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`}},{key:`tier_id`,icon:`card`,type:`set`,ui:{label:`Membership tier`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`tiers`,label:`Tiers`},columnInclude:`tiers`}},{key:`status`,icon:`person-circle`,type:`scalar`,ui:{label:`Member status`,searchable:!1},options:[{value:`paid`,label:`Paid`},{value:`free`,label:`Free`},{value:`comped`,label:`Complimentary`}]},{key:`subscriptions.plan_interval`,icon:`calendar-clock`,type:`scalar`,ui:{label:`Billing period`,searchable:!1},options:[{value:`month`,label:`Monthly`},{value:`year`,label:`Yearly`}],metadata:{activeColumn:{key:`subscriptions.plan_interval`,label:`Billing period`},columnInclude:`subscriptions`}},{key:`subscriptions.status`,icon:`card`,type:`scalar`,ui:{label:`Stripe subscription status`,searchable:!1},options:[{value:`active`,label:`Active`},{value:`trialing`,label:`Trialing`},{value:`canceled`,label:`Canceled`},{value:`unpaid`,label:`Unpaid`},{value:`past_due`,label:`Past Due`},{value:`incomplete`,label:`Incomplete`},{value:`incomplete_expired`,label:`Incomplete - Expired`}],metadata:{activeColumn:{key:`subscriptions.status`,label:`Subscription status`},columnInclude:`subscriptions`}},{key:`subscriptions.start_date`,icon:`calendar-start`,type:`timestamp`,operators:kn,ui:{label:`Paid start date`},metadata:{activeColumn:{key:`subscriptions.start_date`,label:`Paid start date`},columnInclude:`subscriptions`}},{key:`subscriptions.current_period_end`,icon:`calendar-end`,type:`timestamp`,operators:ln,ui:{label:`Next billing date`},metadata:{activeColumn:{key:`subscriptions.current_period_end`,label:`Next billing date`},columnInclude:`subscriptions`}},{key:`conversion`,icon:`arrows`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Subscription started on post/page`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`}},{key:`email_count`,icon:`send`,type:`number`,ui:{label:`Emails sent (all time)`,defaultOperator:`is-greater`,min:0,className:`w-24`}},{key:`email_opened_count`,icon:`mail-open`,type:`number`,ui:{label:`Emails opened (all time)`,defaultOperator:`is-greater`,min:0,className:`w-24`}},{key:`email_open_rate`,icon:`percent`,type:`number`,ui:{label:`Open rate (all time)`,defaultOperator:`is-greater`,min:0,max:100,suffix:`%`,className:`w-24`}},{key:`emails.post_id`,icon:`send`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Sent email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},{key:`opened_emails.post_id`,icon:`mail-open`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Opened email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},{key:`clicked_links.post_id`,icon:`click`,type:`scalar`,valueConfig:{quoteStrings:!0},ui:{label:`Clicked email`,searchable:!0,placeholder:`Select an email...`,className:`w-64`}},cn({key:`newsletter_feedback`,icon:`message`,semantics:Si(),addressing:en({field:`feedback.post_id`}),operators:[`1`,`0`],ui:{label:`Responded with feedback`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`,defaultOperator:`1`}}),{key:`offer_redemptions`,icon:`ticket`,type:`set`,valueConfig:{quoteStrings:!0,serializeSingletonAsScalar:!0},ui:{label:`Offer`,searchable:!0,className:`w-64`},metadata:{activeColumn:{key:`offer_redemptions`,label:`Offer`}}},{key:Ci,icon:`layers`,type:`count`,valueConfig:{threshold:1,absentForm:`below`},ui:{label:`Multiple active subscriptions`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`true`,label:`Yes`},{value:`false`,label:`No`}]}],Mi=[...sn.text.operators,...ai],Ni={key:`metafields.:namespace.:key`,icon:`text`,type:`text`,addressing:li(),operators:Mi,ui:{label:`Custom field`,type:`custom`},metadata:{activeColumn:({params:e,label:t})=>t&&e.namespace&&e.key?{key:$({namespace:e.namespace,key:e.key}),label:t}:null,columnInclude:`metafields`}},Pi=[...ji,vi,Ni],Fi=bn(Pi),Ii=2;function Li(e,t={}){let n=new Map;for(let r of e){let e=yn(Fi,r.field,`UTC`),i=e?.definition.metadata?.activeColumn;if(!i)continue;let{context:a}=e;if(typeof i!=`function`){let e=Hi[i.key];e&&n.set(i.key,{...i,getValue:e});continue}let o=Ui[a.pattern]?.(a.params,t);if(!o)continue;let s=i({...a,label:o.label});s&&n.set(s.key,{...s,getValue:o.getValue})}return Array.from(n.values()).slice(0,Ii)}function Ri(e){let t=new Set([`labels`,`tiers`]);for(let n of e){let e=yn(Fi,n.field,`UTC`)?.definition.metadata?.columnInclude;e&&t.add(e)}return Array.from(t).join(`,`)}function zi({filters:e,nql:t,search:n}){if(!t&&!n)return;let r={include:Ri(e),limit:`100`,order:`created_at desc`};return t&&(r.filter=t),n&&(r.search=n),r}function Bi({nql:e,search:t}){return!e&&!t?{all:!0}:{...e?{filter:e}:{},...t?{search:t}:{}}}function Vi(e,t){return e?{text:Cr.default.tz(e,t).format(`D MMM YYYY`),subtext:(0,Cr.default)(e).fromNow()}:null}var Hi={labels:e=>e.labels?.length?{text:e.labels.map(e=>e.name).join(`, `)}:null,tiers:e=>e.tiers?.length?{text:e.tiers.map(e=>e.name).join(`, `)}:null,"subscriptions.plan_interval":e=>{let t=e.current_subscription?.plan?.interval;return t?{text:t===`month`?`Monthly`:`Yearly`}:null},"subscriptions.status":e=>{let t=e.current_subscription?.status;return t?{text:t.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}:null},"subscriptions.start_date":(e,t)=>Vi(e.current_subscription?.start_date,t),"subscriptions.current_period_end":(e,t)=>Vi(e.current_subscription?.current_period_end,t),offer_redemptions:e=>{let t=e.subscriptions?.map(e=>e.offer?.name).filter(Boolean);return t?.length?{text:t.join(`, `)}:null}},Ui={"metafields.:namespace.:key":({namespace:e,key:t},{customFields:n})=>{let r=n?.find(n=>n.namespace===e&&n.key===t);return r?{label:r.name,getValue:e=>{let t=Wn(r.type,e.metafields?.[r.namespace]?.[r.key]);return t?{text:t}:null}}:null}};async function Wi(e,t){let n=new URLSearchParams({limit:`all`});e&&n.set(`filter`,e),t&&n.set(`search`,t),await u(`/members/upload/?${n}`,`members.csv`)}var Gi=({hasFilterOrSearch:e,memberCount:t,nql:n,search:r,canBulkDelete:i,showMenu:a=!0,showNewMember:o=!0,onImportComplete:s})=>{let c=y(),l=b(),u=c.pathname===`/members/import`,d=c.search??``,f=c.pathname===`/members`?`${c.pathname}${d}`:`/members`,m=`#/members/new?back=${encodeURIComponent(f)}`,[h,g]=(0,X.useState)(!1),[_,v]=(0,X.useState)(!1),[x,S]=(0,X.useState)(!1),[w,T]=(0,X.useState)(!1),{data:E,isLoading:D}=Qe({searchParams:{filter:`status:-archived`,limit:`50`}}),O=E?.newsletters||[],{mutateAsync:k,isPending:M}=jt(),{mutate:I,isPending:te}=mt(),[ne,L]=(0,X.useState)(!1),R=Bi({nql:n,search:r}),re=(0,X.useCallback)(async()=>{try{await Wi(n,r)}catch(e){throw p.error(`Export failed`,{description:`There was a problem downloading your member data. Please check your connection and try again.`}),e}},[n,r]),ie=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...R,action:{type:`addLabel`,meta:{label:{id:t}}}});g(!1),p.success(e.length>1?`Labels added successfully`:`Label added successfully`)}catch{p.error(`Failed to add label`,{description:`There was a problem applying this label. Please try again.`})}},[k,R]),z=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...R,action:{type:`removeLabel`,meta:{label:{id:t}}}});v(!1),p.success(e.length>1?`Labels removed successfully`:`Label removed successfully`)}catch{p.error(`Failed to remove label`,{description:`There was a problem removing this label. Please try again.`})}},[k,R]),B=(0,X.useCallback)(async e=>{let t=R;if(e===null){try{await k({...t,action:{type:`unsubscribe`}}),S(!1),p.success(`Members unsubscribed successfully`)}catch{p.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}return}L(!0);try{let n=await Promise.allSettled(e.map(e=>k({...t,action:{type:`unsubscribe`,newsletter:e}}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length;S(!1),r===i?p.success(`Unsubscribed from ${i} ${i===1?`newsletter`:`newsletters`}`):r>0?p.warning(`Unsubscribed from ${r} of ${i} newsletters`,{description:`Some newsletters could not be unsubscribed. Please try again.`}):p.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}catch{p.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}finally{L(!1)}},[k,R]),ae=(0,X.useCallback)(()=>{I(R,{onSuccess:()=>{T(!1),p.success(`Members deleted successfully`)},onError:()=>{p.error(`Failed to delete members`,{description:`There was a problem deleting these members. Please try again.`})}})},[I,R]),se=(0,X.useCallback)(async()=>{try{await Wi(n,r)}catch(e){throw p.error(`Export failed`,{description:`There was a problem downloading your backup. Please check your connection and try again.`}),e}},[n,r]),V=(0,X.useCallback)(()=>{},[]),ce=(0,X.useCallback)(()=>{l(`/members/import${d}`)},[d,l]),le=(0,X.useCallback)(e=>{s?.(e)},[s]),ue=(0,X.useCallback)(e=>{if(e?.importLabel){l(lt({filter:`label:[${e.importLabel.slug}]`}),{replace:!0});return}l(`/members${d}`,{replace:!0})},[d,l]);return(0,Z.jsxs)(Z.Fragment,{children:[a&&(0,Z.jsxs)(Kt,{children:[(0,Z.jsx)(Ot,{asChild:!0,children:(0,Z.jsx)(H,{"data-testid":`members-actions`,variant:`outline`,children:(0,Z.jsx)(ee,{className:`size-4`})})}),(0,Z.jsxs)(nt,{align:`end`,children:[(0,Z.jsxs)(dt,{onClick:ce,children:[(0,Z.jsx)(de,{className:`mr-2 size-4`}),`Import members`]}),t>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(dt,{onClick:()=>void re(),children:[(0,Z.jsx)(F,{className:`mr-2 size-4`}),e?`Export ${C(t)} members`:`Export all members`]}),(0,Z.jsx)(At,{}),(0,Z.jsxs)(dt,{onClick:()=>g(!0),children:[(0,Z.jsx)(j,{className:`mr-2 size-4`}),`Add label to `,C(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(dt,{onClick:()=>v(!0),children:[(0,Z.jsx)(P,{className:`mr-2 size-4`}),`Remove label from `,C(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(dt,{disabled:D,onClick:()=>S(!0),children:[(0,Z.jsx)(N,{className:`mr-2 size-4`}),`Unsubscribe `,C(t),` `,t===1?`member`:`members`]}),(0,Z.jsx)(At,{}),(0,Z.jsxs)(dt,{className:`text-destructive focus:text-destructive`,disabled:!i,onClick:()=>T(!0),children:[(0,Z.jsx)(A,{className:`mr-2 size-4`}),`Delete `,C(t),` `,t===1?`member`:`members`]})]})]})]}),o&&(0,Z.jsx)(H,{asChild:!0,children:(0,Z.jsxs)(`a`,{"aria-label":`New member`,className:`inline-flex items-center`,href:m,children:[(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`New member`}),(0,Z.jsx)(`span`,{className:`sm:hidden`,children:(0,Z.jsx)(oe,{})})]})}),(0,Z.jsx)(Zr,{open:u,onClose:ue,onComplete:le,onOpenChange:V}),(0,Z.jsx)(tr,{isLoading:M,memberCount:t,open:h,onConfirm:e=>void ie(e),onOpenChange:g}),(0,Z.jsx)(nr,{isLoading:M,memberCount:t,nql:n,open:_,search:r,onConfirm:e=>void z(e),onOpenChange:v}),(0,Z.jsx)(rr,{isLoading:M||ne,memberCount:t,newsletters:O,open:x,onConfirm:e=>void B(e),onOpenChange:S}),(0,Z.jsx)(ir,{isLoading:te,memberCount:t,open:w,onConfirm:ae,onExportBackup:se,onOpenChange:T})]})},Ki=({membershipsEnabled:e,onMemberCreated:t})=>{let{data:n,isLoading:r}=c(),{mutateAsync:i,isPending:a}=ft(),o=l(),s=(0,X.useCallback)(async()=>{if(!(!n||a))try{await i({email:n.email,name:n.name}),p.success(`You've been added as a member`),await t?.()}catch(e){o(e)}},[i,n,o,a,t]);return e?(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(Me,{actions:(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 sm:flex-row`,children:[(0,Z.jsx)(H,{asChild:!0,children:(0,Z.jsx)(v,{to:`/members/new?back=%2Fmembers`,children:`New member`})}),(0,Z.jsx)(H,{disabled:a||r||!n,variant:`outline`,onClick:()=>void s(),children:a?`Adding...`:`Add yourself as a member`})]}),(0,Z.jsxs)(`p`,{className:`text-sm leading-tight text-pretty text-muted-foreground`,children:[`Already have members?`,` `,(0,Z.jsx)(v,{className:`font-medium text-foreground underline-offset-4 hover:underline`,to:`/members/import`,children:`Import with CSV`})]})]}),description:`Use memberships to allow your readers to sign up and subscribe to your content.`,title:`Start building your audience`,children:(0,Z.jsx)(ce,{})})}):(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(Me,{actions:(0,Z.jsx)(H,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/settings/members`,children:`Membership settings`})}),description:`Adjust your membership settings to start adding members.`,title:`Memberships have been disabled`,children:(0,Z.jsx)(ce,{})})})},qi=tt.extend({route:Ye(`members`),filter:Ze(q(),q().nullable()).refine(e=>typeof e.filter==`string`&&e.filter.length>0)}),Ji=`A view with this name already exists`,Yi=`Saved view could not be found for update`,Xi=`Multiple saved views matched update target`,Zi=`Saved view could not be found for delete`,Qi=`Multiple saved views matched delete target`;function $i(e){return qi.safeParse(e).success}function ea(e){let t=kt(e);return t.ok?{ok:!0,views:t.views.filter($i)}:t}function ta(e,t){return{name:e.trim(),route:`members`,filter:{filter:t}}}function na(e,t,n,r){let i=ta(t,n);if(r){let t=it(e,r);if(t.length===0)throw Error(Yi);if(t.length>1)throw Error(Xi);let n=t[0];if(rt(e,i,n))throw Error(Ji);return e.map((e,t)=>t===n?i:e)}if(rt(e,i))throw Error(Ji);return[...e,i]}function ra(e,t){let n=it(e,t);if(n.length===0)throw Error(Zi);if(n.length>1)throw Error(Qi);let r=n[0];return e.filter((e,t)=>t!==r)}var ia=`Cannot modify saved views because shared_views is invalid`;function aa(e){return vt(e?.settings??null,`shared_views`)??`[]`}function oa(){let{data:e}=Et(),t=l(),n=aa(e),r=(0,X.useRef)(null),i=(0,X.useMemo)(()=>ea(n),[n]);return(0,X.useEffect)(()=>{i.ok||r.current===n||(r.current=n,t(i.error,{withToast:!1}))},[t,i,n]),i.ok?i.views:[]}function sa(){let{data:e}=Et(),{mutateAsync:t}=It(),n=l();return(0,X.useCallback)(async(r,i,a)=>{let o=kt(aa(e));if(!o.ok){let e=Error(ia,{cause:o.error});throw n(e,{withToast:!1}),e}let s=na(o.views,r,i,a);try{await t([{key:`shared_views`,value:JSON.stringify(s)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function ca(){let{data:e}=Et(),{mutateAsync:t}=It(),n=l();return(0,X.useCallback)(async r=>{let i=kt(aa(e));if(!i.ok){let e=Error(ia,{cause:i.error});throw n(e,{withToast:!1}),e}let a=ra(i.views,r);try{await t([{key:`shared_views`,value:JSON.stringify(a)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function la(e,t){return(0,X.useMemo)(()=>!t||e.length===0?null:e.find(e=>e.filter.filter===t)??null,[e,t])}var ua=({filter:e,existingViews:t,activeView:n,onDeleted:r,onClose:i})=>{let[a,o]=(0,X.useState)(()=>n?.name??``),[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[p,m]=(0,X.useState)(!1),h=sa(),g=ca(),_=!!n,v=async()=>{let r=a.trim();if(!r){c(`Please enter a name`);return}if(!_&&t.find(e=>e.name.trim().toLowerCase()===r.toLowerCase())){c(`A view with this name already exists`);return}u(!0);try{await h(r,e,n??void 0),i()}catch(e){c(e instanceof Error?e.message:`Failed to save view`)}finally{u(!1)}},y=async()=>{if(n){f(!0);try{await g(n),i(),r?.()}catch(e){c(e instanceof Error?e.message:`Failed to delete view`)}finally{f(!1)}}};return(0,Z.jsx)(_t,{align:`end`,className:`w-72`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:_?`Edit view`:`Save view`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)($e,{placeholder:`View name`,value:a,autoFocus:!0,onChange:e=>{o(e.target.value),s&&c(``)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),s&&(0,Z.jsx)(`p`,{className:`text-xs text-red-500`,children:s})]}),_?p?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Delete view?`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(H,{size:`sm`,variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(H,{disabled:d,size:`sm`,variant:`destructive`,onClick:()=>void y(),children:d?`Deleting...`:`Delete`})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(H,{className:`text-red hover:bg-red/5 hover:text-red`,size:`sm`,variant:`ghost`,onClick:()=>m(!0),children:`Delete`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(H,{size:`sm`,variant:`outline`,onClick:i,children:`Cancel`}),(0,Z.jsx)(H,{disabled:l||!a.trim(),size:`sm`,onClick:()=>void v(),children:l?`Saving...`:`Save`})]})]}):(0,Z.jsx)(H,{className:`w-full`,disabled:l||!a.trim(),onClick:()=>void v(),children:l?`Saving...`:`Save`})]})})},da=({filter:e,existingViews:t,activeView:n,onDeleted:r})=>{let[i,a]=(0,X.useState)(!1),o=n?`edit:${n.name}:${n.filter.filter}`:`save:${e}`;return(0,Z.jsxs)(Nt,{open:i,onOpenChange:a,children:[(0,Z.jsx)(bt,{asChild:!0,children:(0,Z.jsx)(H,{variant:`outline`,children:n?`Edit view`:`Save view`})}),i&&(0,Z.jsx)(ua,{activeView:n,existingViews:t,filter:e,onClose:()=>a(!1),onDeleted:r},o)]})},fa=Dn(ai);function pa(e,t){let n=e.operators?.length?e.operators:fa,r=t?n.filter(e=>on(ai,e.value)):n,i=r.map(e=>e.value);return{options:r,ids:i,fallback:e.defaultOperator&&i.includes(e.defaultOperator)?e.defaultOperator:i[0]??`is-set`}}var ma=({field:e,values:t,onChange:n,operator:r,onOperatorChange:i,readOnly:a})=>{let{data:o}=qn(),s=o??[],c=ni(e.key??``)?.key??``,l=s.find(e=>e.key===c),u=l?(zn(l.type)??[]).map(({key:e,label:t})=>({value:e,label:t})):[],d=e.label??l?.name??`Custom field`,f=u.length>0,[p=``,m=``]=t,{options:h,ids:g,fallback:_}=pa(e,f&&p===``);(0,X.useEffect)(()=>{a||!i||g.includes(r)||i(_)},[a,r,g,_,i]);let v=!on(ai,r),y=[{value:``,label:`Any`},...u];return(0,Z.jsxs)(Z.Fragment,{children:[f&&(0,Z.jsx)(he,{ariaLabel:`${d} part`,options:y,readOnly:a,testId:`custom-field-filter-subfield`,value:p,onChange:e=>n([e,m])}),i&&(0,Z.jsx)(he,{ariaLabel:`${d} operator`,options:h,readOnly:a,testId:`custom-field-filter-operator`,value:r,onChange:i}),v&&(0,Z.jsx)(me,{ariaLabel:`${d} value`,placeholder:`Enter value...`,readOnly:a,testId:`custom-field-filter-value`,value:m,onChange:e=>n([p,e])})]})},ha={text:`text`,date:`plain_date`,number:`number`},ga={short_text:`text`,postal_code:`text`,country_code:`text`};function _a(e){let t=[...new Set((zn(e)??[]).map(e=>ga[e.type]))];if(t.length>1)throw Error(`The parts of '${e}' filter as different types (${t.join(`, `)}), but the filter engine reads a composite with a single semantics. Build per-part dispatch into the codec before mapping a part type away from its siblings.`);return t[0]??`text`}var va=ti;function ya(e){let t=Vn(e.type);return{key:$(e),icon:`text`,type:t===`record`?_a(e.type):ha[t],addressing:li(e),ui:{label:e.name,type:`custom`,...t===`record`?{defaultOperator:`is-set`}:{}}}}function ba(e){return{resolved:e!==void 0,claims:[va],fields:(e??[]).map(ya)}}function xa({newsletters:e,customFields:t}={}){return[{resolved:!0,fields:Pi},_i(e),ba(t)]}function Sa(e={}){return!e.newsletters&&!e.customFields?Fi:Cn(xa(e))}function Ca(e,t={}){return hn(e,xa(t))}var wa=[`name`,`email`,`label`,`subscribed`,`last_seen_at`,`created_at`,`signup`],Ta=[`tier_id`,`status`,Ci,`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`],Ea=[`email_count`,`email_opened_count`,`email_open_rate`,`emails.post_id`,`opened_emails.post_id`,`clicked_links.post_id`,`newsletter_feedback`],Da=[],Oa=[],ka=[],Aa=[],ja=[],Ma=5,Na={"is-any":`is any of`,"is-not-any":`is none of`,"does-not-contain":`does not contain`,...$t,1:`More like this`,0:`Less like this`};function Pa(e,t){return{options:e,valueSource:t}}function Fa(e){let t=new Map,n=[],r=[];for(let t of e)t.redemption_type===`retention`&&(t.cadence===`month`?n.push(t.id):t.cadence===`year`&&r.push(t.id));return n.length>0&&t.set(`retention:month`,n),r.length>0&&t.set(`retention:year`,r),t}function Ia(e){return Array.isArray(e.metadata?.offerIds)?e.metadata.offerIds.filter(e=>typeof e==`string`):null}function La(e){let t=[],n=Fa(e);for(let n of e)n.redemption_type!==`retention`&&t.push({value:n.id,label:n.name});return n.has(`retention:month`)&&t.push({value:`retention:month`,label:`Monthly Retention`,metadata:{offerIds:n.get(`retention:month`)}}),n.has(`retention:year`)&&t.push({value:`retention:year`,label:`Yearly Retention`,metadata:{offerIds:n.get(`retention:year`)}}),t}function Ra(e,t){let n=[],r=new Set;for(let i of t){let t=Ia(i);t&&t.length>0&&t.every(t=>e.includes(t))&&(n.push(String(i.value)),t.forEach(e=>{r.add(e)}))}for(let t of e)r.has(t)||n.push(t);return n}function za(e,t){let n=[];for(let r of e){let e=t.find(e=>e.value===r),i=e?Ia(e):null;i?n.push(...i):n.push(r)}return[...new Set(n)]}function Ba(e){return new Map(e.map(e=>[e.id,e.name]))}function Va(e,t,n){let r=e.map(e=>t.find(t=>t.value===e)).filter(e=>!!e);return r.length===1?r[0].label:r.length>1?`${r.length} selected`:e.length===1?n.get(e[0])??`Select...`:e.length>1?`${e.length} selected`:`Select...`}function Ha({labelValueSource:e,tierValueSource:t,newsletters:n=Da,hydratedNewsletterSlugs:r=Oa,hasMultipleTiers:i=!1,paidMembersEnabled:a=!1,emailFiltersEnabled:o=!1,postValueSource:s,emailValueSource:c,offers:l=ka,multipleActiveSubscriptionsCount:u=0,membersTrackSources:d=!1,emailTrackOpens:f=!1,emailTrackClicks:p=!1,customFields:m=Aa,archivedCustomFields:h=ja,siteTimezone:g=`UTC`}){let _=(0,X.useMemo)(()=>Sa({newsletters:[...n,...r.filter(e=>!n.some(t=>t.slug===e)).map(e=>({slug:e,name:e}))],customFields:[...m,...h.map(e=>({...e,type:`short_text`}))]}),[n,r,m,h]);return(0,X.useMemo)(()=>{function v(e,t={},n=Na){let r=pn(e,`newsletters`)?_[`newsletters.:slug`]:pn(e,`metafields.`)?_[`metafields.:namespace.:key`]:void 0,i=_[e]??r;return{key:e,...i.ui,icon:Tn[i.ui.icon],operators:Dn(i.operators,{labels:{...n,...i.operatorLabels}}),...`options`in i&&i.options?{options:i.options}:{},...t}}function y(e,t,n={}){let r=_[e],i=v(e,{defaultValue:t,...n});return gn(r)?{...i,customRenderer:_n(t)}:i}let b=[],x=n.filter(e=>e.status!==`archived`),S=new Set(x.map(e=>e.slug)),C=[...new Set(r)].map(e=>({slug:e,name:n.find(t=>t.slug===e)?.name??e})),w=C.filter(e=>!S.has(e.slug)),T=La(l),E=Ba(l),D=an(g),O=x.length<=1,k={label:!!e,subscribed:O,signup:d},A=wa.filter(e=>k[e]??!0).flatMap(t=>{switch(t){case`label`:return[v(t,{...Pa([],e),customRenderer:e=>X.createElement(Zn,e)})];case`subscribed`:return[v(t),...C.map(e=>v(`newsletters.${e.slug}`,{label:e.name}))];case`last_seen_at`:case`created_at`:return[y(t,D)];case`signup`:return[v(t,Pa([],s))];default:return[v(t)]}});b.push({group:`Basic`,fields:A});let j=m.map(e=>v($(e),{label:e.name,icon:X.createElement($n,{type:e.type,className:`size-4`}),renderOperatorInValue:!0,customRenderer:e=>X.createElement(ma,e)})),M=h.map(e=>v($(e),{label:e.name,icon:X.createElement(V,{className:`size-4`}),readOnly:!0,renderOperatorInValue:!0,customRenderer:e=>X.createElement(ma,e)})),N=[...j,...M];if(N.length>0&&b.push({group:`Custom fields`,fields:N,previewLimit:Ma}),x.length>1){let e=[v(`subscribed`,{label:`All newsletters`,options:[{value:`subscribed`,label:`Subscribed to at least one`},{value:`unsubscribed`,label:`Unsubscribed from all`},{value:`email-disabled`,label:`Email disabled`}]})];for(let t of x)e.push(v(`newsletters.${t.slug}`,{label:t.name}));for(let t of w)e.push(v(`newsletters.${t.slug}`,{label:t.name}));b.push({group:`Newsletters`,fields:e})}if(a){let e={tier_id:i,[Ci]:u>0,conversion:d,offer_redemptions:l.length>0},n=Ta.filter(t=>e[t]??!0).map(e=>{switch(e){case`tier_id`:return v(e,Pa([],t));case`status`:return v(e,{options:[..._.status?.options??[],{value:`gift`,label:`Gift subscription`}]});case`subscriptions.start_date`:case`subscriptions.current_period_end`:return y(e,D);case`conversion`:return v(e,Pa([],s));case`offer_redemptions`:return v(e,{options:T,customValueRenderer:e=>Va(e,T,E)});default:return v(e)}});b.push({group:`Subscription`,fields:n})}if(o){let e={email_open_rate:f,"opened_emails.post_id":f,"clicked_links.post_id":p},t=new Set([`email_count`,`email_opened_count`,`email_open_rate`]),n=Ea.filter(t=>e[t]??!0).map(e=>t.has(e)?v(e):v(e,Pa([],c)));b.push({group:`Email`,fields:n})}return b},[_,o,c,p,f,i,e,d,u,n,l,r,a,s,g,t])}var Ua=[],Wa=[],Ga=[],Ka=[];function qa(e,t){let n=[...new Set(e.map(e=>e.field).map(e=>mn(e,t)).filter(e=>e!==null))].sort().join(`
|
|
3
|
-
`);return(0,X.useMemo)(()=>n?n.split(`
|
|
4
|
-
`):Ka,[n])}function Ja(e,t){return e.map(e=>e.field===`offer_redemptions`?{...e,values:t(e.values)}:e)}var Ya=({filters:e,multipleActiveSubscriptionsCount:t,nql:n,onFiltersChange:r,savedViews:i=[],activeView:a,iconOnly:o=!1})=>{let{data:s}=h({}),{data:c}=Qe({searchParams:{limit:`100`}}),{data:l}=Et({}),u=l?.settings||[],d=gt()===!0,f=Wt()??!0,p=Mt()===!0,m=ht()===!0,g=Vt()===!0,_=Xt(u),v=c?.newsletters??Ga,y=(0,X.useMemo)(()=>s?.offers??Ua,[s?.offers]),b=(0,X.useMemo)(()=>La(y),[y]),x=qa(e,`newsletters.`),C=(0,X.useMemo)(()=>Ja(e,e=>Ra(e,b)),[e,b]),w=(0,X.useCallback)(e=>{r(Ja(e,e=>za(e,b)))},[r,b]),T=Mn(),E=An(),D=jn(),{valueSource:O,hasMultipleTiers:k}=Nn(),{data:A}=qn(),j=A??Wa,M=(0,X.useMemo)(()=>j.filter(e=>e.status===`active`),[j]),N=qa(e,ti),P=(0,X.useMemo)(()=>new Set(N),[N]),ee=Ha({newsletters:v,hydratedNewsletterSlugs:x,hasMultipleTiers:k,paidMembersEnabled:d,emailFiltersEnabled:f,labelValueSource:D,tierValueSource:O,offers:y,multipleActiveSubscriptionsCount:t,postValueSource:T,emailValueSource:E,membersTrackSources:p,emailTrackOpens:m,emailTrackClicks:g,siteTimezone:_,customFields:M,archivedCustomFields:(0,X.useMemo)(()=>j.filter(e=>e.status===`archived`&&P.has(`${e.namespace}.${e.key}`)).map(e=>({namespace:e.namespace,key:e.key,name:e.name})),[j,P])}),F=e.length>0,I=S(`bg-white dark:bg-background`,o&&!F&&`min-w-[34px] gap-0 !px-3 text-[0px] lg:min-w-0 lg:gap-1.5 lg:px-3 lg:text-base`),te=F?(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4 sm:absolute sm:top-0 sm:right-0`,children:[(0,Z.jsxs)(H,{className:`hidden items-center gap-1 !px-0 text-sm font-normal text-muted-foreground hover:bg-transparent hover:text-foreground lg:inline-flex`,type:`button`,variant:`ghost`,onClick:()=>r([]),children:[(0,Z.jsx)(z,{className:`size-4`}),`Clear`]}),n&&(0,Z.jsx)(da,{activeView:a,existingViews:i,filter:n,onDeleted:()=>r([])})]}):void 0;return(0,Z.jsx)(pe,{addButtonClassName:I,addButtonIcon:F?(0,Z.jsx)(B,{}):(0,Z.jsx)(fe,{}),addButtonText:F?`Add filter`:`Filter`,allowMultiple:!0,className:`[&>button]:order-last ${F?`sm:!pr-40 [&>button]:border-none`:`w-auto`}`,clearButton:te,fields:ee,filters:C,keyboardShortcut:`f`,popoverAlign:`start`,popoverContentClassName:`z-[80] w-[280px] [&_[data-slot=command-list]]:max-h-[450px]`,showClearButton:F,showSearchInput:!0,onChange:w})},Xa=({search:e,onSearchChange:t,autoFocus:n=!1,ariaLabel:r=`Search members`})=>{let i=r===`Search members mobile`?`members-mobile-search-input`:`members-search-input`;return(0,Z.jsxs)(ze,{className:`h-(--control-height) min-w-0 basis-full lg:w-[180px] lg:basis-auto xl:w-[240px]`,children:[(0,Z.jsx)(Re,{children:(0,Z.jsx)(le,{className:`size-4`,strokeWidth:1.75})}),(0,Z.jsx)(Le,{"aria-label":r,autoFocus:n,className:`!h-[34px]`,"data-testid":i,placeholder:`Search members...`,value:e,onChange:e=>t(e.target.value)})]})},Za=({children:e,description:t,title:n,url:r})=>(0,Z.jsx)(`a`,{className:`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,href:r,rel:`noopener noreferrer`,target:`_blank`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-6`,children:[e,(0,Z.jsxs)(`div`,{className:`flex flex-col leading-tight`,children:[(0,Z.jsx)(`h4`,{className:`text-md font-medium tracking-normal text-pretty text-foreground`,children:n}),(0,Z.jsx)(`p`,{className:`mt-1.5 text-sm leading-tight text-pretty text-muted-foreground`,children:t})]})]})}),Qa=`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md p-4 opacity-80 transition-all group-hover/card:opacity-100`,$a=()=>(0,Z.jsxs)(`div`,{className:`grid w-full grid-cols-1 gap-4 lg:grid-cols-2`,children:[(0,Z.jsx)(Za,{description:`Learn how to turn anonymous visitors into logged-in members with memberships in Ghost.`,title:`Building your audience with subscriber signups`,url:`https://ghost.org/resources/build-audience-subscriber-signups/`,children:(0,Z.jsx)(`div`,{className:S(Qa,`bg-gradient-to-tr from-[#22C55E]/20 to-[#84CC16]/20`),children:(0,Z.jsx)(se,{className:`text-[#16A34A]`,size:20,strokeWidth:1.5})})}),(0,Z.jsx)(Za,{description:`Starting from zero? Use this guide to find your founding audience members.`,title:`Get your first 100 email subscribers`,url:`https://ghost.org/resources/first-100-email-subscribers/`,children:(0,Z.jsx)(`div`,{className:S(Qa,`bg-gradient-to-tl from-[#A855F7]/20 to-[#EC4899]/20`),children:(0,Z.jsx)(R,{className:`text-[#DB2777]`,size:20,strokeWidth:1.5})})})]});function eo(e,t){let n=new URLSearchParams;t&&n.set(`back`,t);let r=n.toString();return`/members/${e}${r?`?${r}`:``}`}var to={left:`100%`};function no(e){if(!e)return{text:`Unknown`,isKnown:!1};try{let t=JSON.parse(e);return t.country?t.country_code===`US`&&t.region?{text:`${t.region}, US`,isKnown:!0}:{text:t.country,isKnown:!0}:{text:`Unknown`,isKnown:!1}}catch{return{text:`Unknown`,isKnown:!1}}}function ro(e){switch(e){case`paid`:return`Paid`;case`comped`:return`Complimentary`;case`gift`:return`Gift`;default:return`Free`}}function io(e){return e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey}function ao(e,t){window.open(`#${eo(e,t)}`,`_blank`,`noopener`)}function oo({item:e,backPath:t,onClick:n}){return(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(ot,{className:`size-8 min-w-8`,...ct(e),src:e.avatar_image}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(v,{className:`block min-w-0 cursor-pointer`,to:eo(e.id,t),onClick:n?t=>{if(io(t)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation(),n(e.id)}:void 0,children:(0,Z.jsx)(`span`,{className:`block truncate text-md font-semibold`,children:e.name||e.email||`Anonymous`})}),e.name&&e.email&&(0,Z.jsx)(`div`,{className:`truncate text-muted-foreground`,"data-testid":`member-email`,children:e.email})]})]})}function so({status:e,tiers:t}){let n=t?.map(e=>e.name).join(`, `);return(0,Z.jsx)(`div`,{className:`flex min-w-0 justify-start`,children:(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate`,children:ro(e)}),n&&(0,Z.jsx)(`div`,{className:`truncate text-sm text-muted-foreground`,children:n})]})})}function co({emailOpenRate:e}){let t=e!=null;return(0,Z.jsx)(`div`,{className:S(`text-base`,t?`text-foreground`:`text-muted-foreground`),children:t?x(e/100):`N/A`})}function lo({geolocation:e}){let t=no(e);return(0,Z.jsx)(`div`,{className:S(`truncate text-base`,t.isKnown?`text-foreground`:`text-muted-foreground`),children:t.text})}function uo({createdAt:e}){return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-base`,children:Cr.default.utc(e).format(`D MMM YYYY`)}),(0,Z.jsx)(`div`,{className:`text-base text-muted-foreground`,children:Cr.default.utc(e).fromNow()})]})}function fo({column:e,member:t,timezone:n}){let r=e.getValue(t,n);return r?(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate text-base`,title:r.text,children:r.text}),r.subtext&&(0,Z.jsx)(`div`,{className:`truncate text-base text-muted-foreground`,title:r.subtext,children:r.subtext})]}):(0,Z.jsx)(`span`,{className:`text-base text-muted-foreground`,children:`-`})}var po=(0,X.forwardRef)(function({item:e,activeColumns:t,backPath:n,columnStyles:r,showPinnedEdge:i,showEmailOpenRate:a,timezone:o,onClick:s,...c},l){let u=t=>{if(io(t)){ao(e.id,n);return}s(e.id)},d=t=>{t.button===1&&(t.preventDefault(),ao(e.id,n))};return(0,Z.jsxs)(G,{...c,ref:l,className:S(`group cursor-pointer`,c.className),"data-testid":`members-list-item`,onAuxClick:d,onClick:u,children:[(0,Z.jsxs)(K,{className:S(`min-w-0 bg-background px-4 py-3 group-hover:bg-table-row-hover max-sm:!w-full max-sm:!min-w-0 lg:sticky lg:left-0 lg:z-20`),children:[(0,Z.jsx)(oo,{backPath:n,item:e,onClick:s}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] group-hover:opacity-0 lg:block`,style:{...to,background:`linear-gradient(to right, var(--background) 0px, color-mix(in hsl, var(--background) 78%, transparent) 6px, color-mix(in hsl, var(--background) 28%, transparent) 16px, transparent 24px)`}}),(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] opacity-0 group-hover:opacity-100 lg:block`,style:{...to,background:`linear-gradient(to right, var(--table-row-hover) 0px, color-mix(in hsl, var(--table-row-hover) 78%, transparent) 6px, color-mix(in hsl, var(--table-row-hover) 28%, transparent) 16px, transparent 24px)`}})]})]}),(0,Z.jsx)(K,{className:`hidden px-4 py-3 sm:table-cell`,style:r.status,children:(0,Z.jsx)(so,{status:e.status,tiers:e.tiers})}),a&&(0,Z.jsx)(K,{className:`hidden px-4 py-3 lg:table-cell`,style:r.openRate,children:(0,Z.jsx)(co,{emailOpenRate:e.email_open_rate})}),(0,Z.jsx)(K,{className:`hidden px-4 py-3 lg:table-cell`,style:r.location,children:(0,Z.jsx)(lo,{geolocation:e.geolocation})}),(0,Z.jsx)(K,{className:`hidden px-4 py-3 lg:table-cell`,style:r.created,children:(0,Z.jsx)(uo,{createdAt:e.created_at})}),t.map(t=>(0,Z.jsx)(K,{className:`hidden px-4 py-3 lg:table-cell`,style:r.dynamic,children:(0,Z.jsx)(fo,{column:t,member:e,timezone:o})},t.key))]})}),mo={left:`100%`,background:`linear-gradient(to right, var(--members-sticky-fade-base) 0px, color-mix(in hsl, var(--members-sticky-fade-base) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-fade-base) 28%, transparent) 16px, transparent 24px)`},ho=({activeColumns:e,columnStyles:t,showEmailOpenRate:n})=>(0,Z.jsxs)(`colgroup`,{children:[(0,Z.jsx)(`col`,{className:`max-sm:!w-full max-sm:!min-w-0 sm:max-lg:!w-auto sm:max-lg:!min-w-0`,style:t.member}),(0,Z.jsx)(`col`,{className:`hidden sm:table-column`,style:t.status}),n&&(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.openRate}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.location}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.created}),e.map(e=>(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.dynamic},e.key))]}),go=({activeColumns:e,className:t,columnStyles:n,headerRef:r,memberHeaderRef:i,showEmailOpenRate:a})=>(0,Z.jsx)(Ve,{ref:r,className:S(`hidden bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,t),children:(0,Z.jsxs)(G,{children:[(0,Z.jsx)(W,{ref:i,className:`sticky left-0 z-[70] bg-transparent px-4 [--members-sticky-fade-base:var(--background)]`,style:n.member,children:`Member`}),(0,Z.jsx)(W,{className:`bg-transparent px-4`,style:n.status,children:`Status`}),a&&(0,Z.jsx)(W,{className:`bg-transparent px-4`,style:n.openRate,children:`Open rate`}),(0,Z.jsx)(W,{className:`bg-transparent px-4`,style:n.location,children:`Location`}),(0,Z.jsx)(W,{className:`bg-transparent px-4`,style:n.created,children:`Created`}),e.map(e=>(0,Z.jsx)(W,{className:`bg-transparent px-4`,style:n.dynamic,children:e.label},e.key))]})}),_o=({columnStyle:e,showPinnedEdge:t})=>(0,Z.jsxs)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 z-[70] overflow-visible bg-transparent [--members-sticky-fade-base:var(--background)]`,style:e,children:[(0,Z.jsxs)(He,{className:`w-full table-fixed border-collapse`,children:[(0,Z.jsx)(`colgroup`,{children:(0,Z.jsx)(`col`,{style:{width:`100%`}})}),(0,Z.jsx)(Ve,{className:`bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,children:(0,Z.jsx)(G,{children:(0,Z.jsx)(W,{className:`bg-transparent px-4`,children:`Member`})})})]}),t&&(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px w-[24px]`,style:mo})]}),vo={member:40,status:15,openRate:10,location:17.5,created:17.5},yo={member:320,status:180,openRate:140,location:180,created:160},bo=17.5,xo=220;function So(e){return Number.isFinite(e)?Math.max(0,Math.floor(e)):0}function Co({showEmailOpenRate:e,activeColumnCount:t}){let n=[{key:`member`,width:vo.member},{key:`status`,width:vo.status},...e?[{key:`openRate`,width:vo.openRate}]:[],{key:`location`,width:vo.location},{key:`created`,width:vo.created}],r=So(t),i=n.reduce((e,t)=>e+t.width,0),a=100+r*bo,o=bo/a*100,s=n.reduce((e,t)=>{let n=t.width/i*100;return e[t.key]=n/a*100,e},{member:0,status:0,openRate:0,location:0,created:0});return{tableWidthPercentage:a,minTableWidth:n.reduce((e,t)=>e+yo[t.key],0)+r*xo,dynamicColumnWidthPercentage:o,baseColumnWidthPercentages:s,baseColumnMinWidths:{member:yo.member,status:yo.status,openRate:yo.openRate,location:yo.location,created:yo.created},dynamicColumnMinWidth:xo}}function wo(e){let t=(e,t)=>({width:`${e}%`,minWidth:`${t}px`});return{tableStyle:{"--members-table-width":`${e.tableWidthPercentage}%`,"--members-table-min-width":`${e.minTableWidth}px`},columnStyles:{member:t(e.baseColumnWidthPercentages.member,e.baseColumnMinWidths.member),status:t(e.baseColumnWidthPercentages.status,e.baseColumnMinWidths.status),openRate:t(e.baseColumnWidthPercentages.openRate,e.baseColumnMinWidths.openRate),location:t(e.baseColumnWidthPercentages.location,e.baseColumnMinWidths.location),created:t(e.baseColumnWidthPercentages.created,e.baseColumnMinWidths.created),dynamic:t(e.dynamicColumnWidthPercentage,e.dynamicColumnMinWidth)}}}var To=({height:e})=>(0,Z.jsx)(`tr`,{"aria-hidden":`true`,style:{height:e},children:(0,Z.jsx)(`td`,{colSpan:999})}),Eo=(0,X.forwardRef)(function(e,t){return(0,Z.jsx)(G,{ref:t,...e,"aria-hidden":`true`,children:(0,Z.jsx)(K,{className:`h-[72px] px-4 py-3`,colSpan:999,children:(0,Z.jsx)(`div`,{className:`h-full animate-pulse rounded-md bg-muted`,"data-testid":`loading-placeholder`})})})});function Do({items:e,totalItems:t,backPath:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,isLoading:o,showEmailOpenRate:s=!0,activeColumns:c,timezone:l,pageHeaderRef:u,onRowClick:d}){let f=(0,X.useRef)(null),p=(0,X.useRef)(null),m=(0,X.useRef)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(null),[_,v]=(0,X.useState)(0),[y,x]=(0,X.useState)(0),[S,C]=(0,X.useState)(!1),{visibleItemCount:w,canLoadMore:T,loadMore:E}=In(t),D=(0,X.useMemo)(()=>Co({showEmailOpenRate:s,activeColumnCount:c.length}),[c.length,s]),{tableStyle:O,columnStyles:k}=(0,X.useMemo)(()=>wo(D),[D]);Fn({parentRef:f,isLoading:o}),(0,X.useEffect)(()=>{let e=g.current;if(!e)return;let t=()=>{let t=e.scrollLeft;C(t>0),h.current&&(h.current.scrollLeft=t)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[c.length,e.length,s]),(0,X.useEffect)(()=>{let e=u?.current,t=p.current,n=m.current;if(!e||!t||!n){v(0),x(0);return}let r=e.style.paddingBottom,i=e.style.marginBottom,a=parseFloat(getComputedStyle(e).paddingBottom)||0,o=parseFloat(getComputedStyle(e).marginBottom)||0,s=()=>{r?e.style.setProperty(`padding-bottom`,r):e.style.removeProperty(`padding-bottom`),i?e.style.setProperty(`margin-bottom`,i):e.style.removeProperty(`margin-bottom`)},c=()=>{if(!window.matchMedia(`(min-width: 1024px)`).matches){s(),v(0),x(0);return}let r=t.getBoundingClientRect().height,i=n.getBoundingClientRect().width;e.style.setProperty(`padding-bottom`,`${a+r}px`,`important`),e.style.setProperty(`margin-bottom`,`${o-r}px`,`important`);let c=e.getBoundingClientRect().height;v(i),x(Math.max(c-r,0))};c();let l=new ResizeObserver(()=>{c()});return l.observe(e),l.observe(t),l.observe(n),window.addEventListener(`resize`,c),()=>{s(),l.disconnect(),window.removeEventListener(`resize`,c)}},[c.length,u,s]);let{visibleItems:A,spaceBefore:j,spaceAfter:M}=Pn({items:e,totalItems:w,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,parentRef:f,estimateSize:()=>72}),N=b(),P=e=>{d?d(e):N(eo(e,n))};return(0,Z.jsxs)(`div`,{ref:f,className:`w-full min-w-0`,"data-testid":`members-list-scroll-root`,children:[(0,Z.jsx)(`div`,{className:`sticky z-[50] hidden overflow-visible bg-transparent lg:block`,style:{top:y},children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(_o,{columnStyle:_>0?{width:_}:k.member,showPinnedEdge:S}),(0,Z.jsx)(`div`,{ref:h,className:`w-full overflow-hidden`,style:_>0?{clipPath:`inset(0 0 0 ${_}px)`}:void 0,children:(0,Z.jsxs)(He,{"aria-hidden":`true`,className:`w-full border-collapse lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,style:O,children:[(0,Z.jsx)(ho,{activeColumns:c,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsx)(go,{activeColumns:c,columnStyles:k,headerRef:p,memberHeaderRef:m,showEmailOpenRate:s})]})})]})}),(0,Z.jsx)(`div`,{ref:g,className:`w-full overflow-x-auto overflow-y-visible`,children:(0,Z.jsxs)(He,{className:`w-full border-collapse max-sm:table-fixed sm:max-lg:table-auto lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,"data-testid":`members-list`,style:O,children:[(0,Z.jsx)(ho,{activeColumns:c,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsx)(go,{activeColumns:c,className:`lg:h-0 lg:overflow-hidden lg:[&_th]:pointer-events-none lg:[&_th]:h-0 lg:[&_th]:border-0 lg:[&_th]:p-0 lg:[&_th]:text-[0px] lg:[&_th]:leading-none lg:[&_th]:opacity-0 lg:[&_tr]:h-0 lg:[&_tr]:border-0`,columnStyles:k,showEmailOpenRate:s}),(0,Z.jsxs)(Be,{children:[(0,Z.jsx)(To,{height:j}),A.map(({key:t,virtualItem:r,item:i,props:a})=>r.index>e.length-1?(0,Z.jsx)(Eo,{...a},t):(0,Z.jsx)(po,{...a,activeColumns:c,backPath:n,columnStyles:k,item:i,showEmailOpenRate:s,showPinnedEdge:S,timezone:l,onClick:P},t)),(0,Z.jsx)(To,{height:M})]})]})}),T&&(0,Z.jsx)(Ln,{isLoading:i,onClick:E})]})}function Oo({count:e,hasResolvedCount:t,nql:n,search:r}){let i=b(),{data:a}=c(),{mutateAsync:o,isPending:s}=Ue(),[l,u]=(0,X.useState)(null),d=Ei(n),f=!r&&(!n||d),m=(0,X.useMemo)(()=>Oi(a?.accessibility),[a?.accessibility]),h=l??m.dismissedCount??0,g=!d,_=f&&(d||e>h);return(0,X.useEffect)(()=>{let n=m.dismissedCount;!a||l!==null||s||n===void 0||!t||e>=n||(u(e),o(Ai(a,e,m.dismissedAt??new Date().toISOString())).then(()=>{u(null)}).catch(e=>{u(null),console.log(`Unable to update multiple active subscriptions banner dismissed count`,e)}))},[e,a,o,t,s,l,m.dismissedAt,m.dismissedCount]),{canDismiss:g,count:e,handleDismiss:(0,X.useCallback)(()=>{if(!a||s)return;let t=l;u(e),o(Ai(a,e,new Date().toISOString())).then(()=>{u(null)}).catch(()=>{u(t),p.error(`Unable to dismiss notification. Please try again.`)})},[e,a,o,s,l]),handleViewMembers:(0,X.useCallback)(()=>{i(lt({filter:wi}))},[i]),shouldShow:_}}var ko=({count:e,hasResolvedCount:t,nql:n,search:r})=>{let i=Oo({count:e,hasResolvedCount:t,nql:n,search:r});return i.shouldShow?(0,Z.jsx)(at,{role:`status`,variant:`warning`,...i.canDismiss?{dismissible:!0,onDismiss:i.handleDismiss}:{dismissible:!1},children:(0,Z.jsxs)(`div`,{className:`flex flex-col items-baseline gap-3 pr-8 sm:flex-row`,children:[`We found `,C(i.count),` `,i.count===1?`member`:`members`,` with more than one active paid subscription.`,` `,(0,Z.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[i.canDismiss&&(0,Z.jsx)(`button`,{className:`nowrap font-semibold !underline`,type:`button`,onClick:i.handleViewMembers,children:`View members`}),(0,Z.jsx)(`a`,{className:`nowrap font-semibold underline`,href:`https://ghost.org/help/duplicate-subscription-warning/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]})}):null},Ao=[`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`,Ci];function jo(e,t){return t&&e.length===0?!1:!e.some(e=>Ao.includes(e.field))}function Mo({isFetching:e,isFetchingNextPage:t}){return e&&!t}var No=wn(Fi,`date`);function Po(e,t=Fi){return vn(e,t)}function Fo(e,t,n=Fi){let r=En(e??``);return r?Sn(dn(r,n,t)):[]}function Io(e){let t=En(e??``);return t?un(t,No):!1}function Lo(e,t,n=Fi){return fn(e,n,t)}function Ro(e,{hasResolvedSettings:t,isLoadingSettings:n=!t,newsletters:r,customFields:i}){return e?n&&!t&&Io(e)||!Ca(e,{newsletters:r,customFields:i}):!1}function zo(e,t){return e.filter(e=>Po(e,t))}function Bo({baseSearchParams:e,filters:t,search:n,timezone:r,fields:i}){let a=new URLSearchParams(e),o=Lo(zo(t,i),r,i);return a.delete(`filter`),a.delete(`search`),o&&a.set(`filter`,o),n&&a.set(`search`,n),a}function Vo(e,t,n){let r=(0,X.useMemo)(()=>Sa({newsletters:t,customFields:n}),[t,n]),[i,a]=_(),o=(0,X.useRef)(null),s=(0,X.useMemo)(()=>i.get(`filter`)??void 0,[i]),c=(0,X.useMemo)(()=>i.toString(),[i]),l=(0,X.useMemo)(()=>zo(Fo(s,e,r),r),[s,e,r]),[u,d]=(0,X.useState)(l),f=(0,X.useMemo)(()=>i.get(`search`)??``,[i]),p=(0,X.useMemo)(()=>Lo(zo(u,r),e,r),[u,e,r]);return(0,X.useEffect)(()=>{c!==o.current&&(d(l),o.current=c)},[c,l]),(0,X.useEffect)(()=>{if(o.current!==null&&c!==o.current)return;let t=Bo({baseSearchParams:i,filters:u,search:f,timezone:e,fields:r}),n=t.toString();n!==c&&(o.current=n,a(t,{replace:!0}))},[c,u,f,i,a,e,r]),{filters:u,nql:p,search:f,setFilters:(0,X.useCallback)((t,n={})=>{let s=n.replace??!0,c=Bo({baseSearchParams:i,filters:t,search:f,timezone:e,fields:r});d(t),o.current=c.toString(),a(c,{replace:s})},[f,i,a,e,r]),setSearch:(0,X.useCallback)((t,n={})=>{let s=n.replace??!0,c=Bo({baseSearchParams:i,filters:u,search:t,timezone:e,fields:r});o.current=c.toString(),a(c,{replace:s})},[u,i,a,e,r]),clearFilters:(0,X.useCallback)(({replace:t=!0}={})=>{let n=Bo({baseSearchParams:i,filters:[],search:f,timezone:e,fields:r});d([]),o.current=n.toString(),a(n,{replace:t})},[f,i,a,e,r]),clearAll:(0,X.useCallback)(({replace:t=!0}={})=>{let n=Bo({baseSearchParams:i,filters:[],search:``,timezone:e,fields:r});d([]),o.current=n.toString(),a(n,{replace:t})},[i,a,e,r]),hasFilterOrSearch:!!p||f.length>0}}var Ho=`newsletters`,Uo=[],Wo=[];function Go(e){let t=xn(e,Ho),{data:n,isError:r}=Qe({searchParams:{limit:`100`},enabled:t}),{data:i,isError:a}=qn();return{newsletters:!t||r?Uo:n?.newsletters,customFields:a?Wo:i}}function Ko({enabled:e}){let{data:t}=Ft({searchParams:{filter:wi,limit:`1`,fields:`id`,order:`id`},defaultErrorHandler:!1,enabled:e,refetchOnMount:`always`,staleTime:0});return{count:t?.meta?.pagination?.total??0,hasResolvedCount:t!==void 0}}var qo=250,Jo=6,Yo=({emailAnalyticsEnabled:e,hasStripeEnabled:t,membershipsEnabled:n,timezone:i})=>{let a=(0,X.useRef)(null),o=(0,X.useCallback)(e=>{a.current=e?.closest(`[data-list-page="header"]`)},[]),[s]=_(),{newsletters:c,customFields:l}=Go(s.get(`filter`)??void 0),{filters:u,nql:d,search:f,setFilters:p,setSearch:m,hasFilterOrSearch:h,clearAll:g}=Vo(i,c,l),v=y(),b=oa(),x=la(b,d),[w,D]=(0,X.useState)(!1),[O,k]=(0,X.useState)(!1),[A,j]=(0,X.useState)(f),M=St(e=>{m(e)},qo),{count:N,hasResolvedCount:P}=Ko({enabled:t}),ee=(0,X.useMemo)(()=>Li(u,{customFields:l}),[u,l]),F=(0,X.useMemo)(()=>jo(u,d),[u,d]),{data:I,isError:te,isFetching:ne,isFetchingNextPage:L,refetch:R,fetchNextPage:re,hasNextPage:ie}=Bt({searchParams:(0,X.useMemo)(()=>zi({filters:u,nql:d,search:f}),[u,d,f]),placeholderData:r}),z=Mo({isFetching:ne,isFetchingNextPage:L}),B=I?.meta?.pagination?.total??0,ae=u.length>0,oe=w,se=ae,V=h||B>0,ue=!h&&!z&&!te&&B<Jo;(0,X.useEffect)(()=>{j(f),M.cancel()},[f,M]);let U=e=>{j(e),M(e)};return(0,Z.jsx)(T,{className:`size-full`,children:(0,Z.jsx)(E,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(Zt,{"data-testid":`members-page`,children:[(0,Z.jsx)(Zt.Header,{className:`py-4 sidebar:py-5`,children:(0,Z.jsxs)(`div`,{ref:o,className:`flex flex-col gap-4 sidebar:gap-6`,children:[(0,Z.jsxs)(Y,{blurredBackground:!1,sticky:!1,children:[(0,Z.jsx)(Y.Left,{children:(0,Z.jsxs)(Y.Title,{children:[`Members`,` `,!z&&B>0&&(0,Z.jsx)(Y.Count,{className:`hidden sm:inline`,children:C(B)})]})}),(0,Z.jsx)(Y.Actions,{children:(0,Z.jsxs)(Y.ActionGroup,{className:`ml-auto flex-wrap justify-end sm:ml-0 sm:flex-nowrap`,children:[V&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`hidden lg:flex`,children:(0,Z.jsx)(Xa,{search:A,onSearchChange:U})}),(0,Z.jsx)(H,{"aria-label":w?`Hide member search`:`Show member search`,className:S(`lg:hidden`,w&&`bg-secondary hover:bg-secondary`),variant:`outline`,onClick:()=>{if(w){D(!1),k(!1);return}k(!0),D(!0)},children:(0,Z.jsx)(le,{className:`size-4`})}),!ae&&(0,Z.jsx)(Ya,{activeView:x,filters:u,iconOnly:!0,multipleActiveSubscriptionsCount:N,nql:d,savedViews:b,onFiltersChange:p})]}),(0,Z.jsx)(Gi,{canBulkDelete:F,hasFilterOrSearch:h,memberCount:B,nql:d,search:f,showMenu:V,showNewMember:V,onImportComplete:()=>{R()}})]})})]}),V&&(se||oe)&&(0,Z.jsxs)(Jt,{className:S(`flex-col gap-4 lg:flex-row lg:items-center sidebar:gap-6 lg:gap-6`,!se&&`lg:hidden`),children:[oe&&(0,Z.jsx)(`div`,{className:`w-full lg:hidden`,children:(0,Z.jsx)(Xa,{ariaLabel:`Search members mobile`,autoFocus:O,search:A,onSearchChange:U})}),se&&(0,Z.jsx)(Ya,{activeView:x,filters:u,multipleActiveSubscriptionsCount:N,nql:d,savedViews:b,onFiltersChange:p})]}),t&&(0,Z.jsx)(ko,{count:N,hasResolvedCount:P,nql:d,search:f})]})}),(0,Z.jsxs)(Zt.Body,{children:[z?(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(ut,{size:`lg`})}):te?(0,Z.jsxs)(`div`,{className:`mb-16 flex flex-1 flex-col items-center justify-center`,children:[(0,Z.jsx)(`h2`,{className:`mb-2 text-xl font-medium`,children:`Error loading members`}),(0,Z.jsx)(`p`,{className:`mb-4 text-muted-foreground`,children:`Please reload the page to try again`}),(0,Z.jsx)(H,{onClick:()=>window.location.reload(),children:`Reload page`})]}):I?.members.length?(0,Z.jsx)(Do,{activeColumns:ee,backPath:`${v.pathname}${v.search}`,fetchNextPage:()=>void re(),hasNextPage:ie,isFetchingNextPage:L,isLoading:ne&&!L,items:I.members,pageHeaderRef:a,showEmailOpenRate:e,timezone:i,totalItems:B}):h?(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:(0,Z.jsx)(Me,{actions:(0,Z.jsx)(H,{variant:`outline`,onClick:()=>{M.cancel(),j(``),g({replace:!1})},children:`Show all members`}),title:`No matching members found.`,children:(0,Z.jsx)(ce,{})})}):(0,Z.jsx)(Ki,{membershipsEnabled:n,onMemberCreated:async()=>{await R()}}),ue&&(0,Z.jsx)(`div`,{className:S(I?.members.length&&`mt-8`),children:(0,Z.jsx)($a,{})})]})]})})})},Xo=()=>{let[e]=_(),{data:t,isLoading:n}=Et({}),{data:r,isLoading:i}=g(),a=e.get(`filter`)??void 0,o=!!t?.settings,{newsletters:s,customFields:c}=Go(a),l=Ro(a,{hasResolvedSettings:o,isLoadingSettings:n,newsletters:s,customFields:c});if(n||i||!t?.settings||!r?.config||l)return(0,Z.jsx)(T,{className:`size-full`,children:(0,Z.jsx)(E,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(Zt,{children:[(0,Z.jsx)(Zt.Header,{className:`py-4 sidebar:py-6`,children:(0,Z.jsx)(Y,{blurredBackground:!1,sticky:!1,children:(0,Z.jsx)(Y.Left,{children:(0,Z.jsx)(Y.Title,{children:`Members`})})})}),(0,Z.jsx)(Zt.Body,{children:(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(ut,{size:`lg`})})})]})})});let u=Xt(t.settings),d=vt(t.settings,`members_signup_access`)!==`none`,f=r.config.emailAnalytics===!0,p=et(t.settings,r.config);return(0,Z.jsx)(Yo,{emailAnalyticsEnabled:f,hasStripeEnabled:p,membershipsEnabled:d,timezone:u})};export{Xo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{l as r}from"./dist-B3keLvjj.js";import{t as i}from"./box-CdfQAP_F.js";import{t as a}from"./text-BQDSDsKs.js";var o=e(t(),1),s=n(),c=o.forwardRef(function({className:e,...t},n){return(0,s.jsx)(a,{ref:n,as:`h1`,className:r(`mb-8 text-4xl`,e),"data-modal-page":`title`,leading:`supertight`,weight:`bold`,...t})});c.displayName=`ModalPage.Title`;var l=o.forwardRef(function({className:e,...t},n){return(0,s.jsx)(i,{ref:n,className:r(`w-full p-[8vmin] pt-5`,e),"data-modal-page":`root`,...t})});l.displayName=`ModalPage`;var u=Object.assign(l,{Title:c});export{u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{n as r}from"./dist-Ndy-PuGN.js";import{n as i}from"./heading-Dh5SFVjL.js";import{t as a,yr as o}from"./button-eNMKQWXr.js";import{i as s,n as c,r as l,t as u}from"./tabs-D2yWLMp_.js";import{t as d}from"./switch-CI4gLWqb.js";import{t as f}from"./skeleton-Ce9GgUpf.js";import{t as p}from"./use-navigate-with-base-path-BHPA228f.js";import{$t as m,Gt as h,In as g,It as _,Ln as v,Nt as y,Qt as b,_n as x,en as S,fn as C,ht as w,tn as T,vn as E,vt as D,xn as O}from"./index-6MkPdCtr.js";import"./layout-Bjv2Ll-5.js";import{a as k,i as A,n as j,r as M,t as N}from"./settings-DZqxR0Da.js";var P=e(t(),1),F=n(),I=()=>{let{data:e,isLoading:t}=S(`index`),{data:n,isLoading:I}=T(`index`),L=t?[,,,,,].fill({apId:``,name:``,handle:``,avatarUrl:``}):e?.pages.flatMap(e=>e.accounts)??[],R=I?[,,,,,].fill({apId:``,name:``}):n?.pages.flatMap(e=>e.domains)??[],ee=m(`index`),z=E(`index`),[B,V]=(0,P.useState)(new Set),H=b(`index`),U=x(`index`),[W,G]=(0,P.useState)(new Set),[K,q]=(0,P.useState)(null),J=p(),{data:Y,isError:X,isLoading:Z,isSuccess:Q}=C(),$=O({onError:()=>{r.error(`Could not update sensitive media preference.`)}}),te=Y?.showSensitiveMedia??!1,ne=e=>{Q&&$.mutate({showSensitiveMedia:e})},re=e=>{V(t=>{let n=new Set([...t]);return n.add(e.apId),n}),z.mutate(e),r.success(`User unblocked`)},ie=e=>{V(t=>{let n=new Set([...t]);return n.delete(e.apId),n}),ee.mutate(e),r.success(`User blocked`)},ae=e=>{G(t=>{let n=new Set([...t]);return n.add(e.url),n}),U.mutate({url:e.url}),r.success(`Domain unblocked`)},oe=e=>{G(t=>{let n=new Set([...t]);return n.delete(e.url),n}),H.mutate({url:e.url}),r.success(`Domain blocked`)};return(0,F.jsx)(w,{children:(0,F.jsxs)(`div`,{className:`mx-auto max-w-[620px] py-[min(4vh,48px)]`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-between gap-8`,children:(0,F.jsx)(i,{children:`Moderation`})}),!X&&(0,F.jsx)(`div`,{className:`mt-6`,children:(0,F.jsxs)(A,{children:[(0,F.jsxs)(M,{children:[(0,F.jsx)(k,{children:`Show sensitive media`}),(0,F.jsx)(j,{children:`Display adult content or media marked as sensitive without a warning`})]}),(0,F.jsx)(N,{children:(0,F.jsx)(d,{"aria-label":`Show sensitive media`,checked:te,disabled:Z||!Q,onCheckedChange:ne})})]})}),(0,F.jsx)(`div`,{className:`mt-6`,children:(0,F.jsxs)(u,{defaultValue:`blocked_users`,variant:`underline`,children:[(0,F.jsxs)(l,{children:[(0,F.jsx)(s,{value:`blocked_users`,children:`Blocked users`}),(0,F.jsx)(s,{value:`blocked_domains`,children:`Blocked domains`})]}),(0,F.jsx)(c,{className:`mt-2`,value:`blocked_users`,children:!t&&L.length===0?(0,F.jsxs)(g,{children:[(0,F.jsx)(v,{children:(0,F.jsx)(o,{})}),(0,F.jsx)(`div`,{className:`mt-2 flex max-w-[400px] flex-col items-center gap-1 text-center`,children:(0,F.jsx)(`p`,{children:`When you block someone, they won't be able to follow you or interact with your content on the social web.`})})]}):L.map((e,n)=>(0,F.jsx)(_,{actor:e,isCurrentUser:!0,children:(0,F.jsx)(`div`,{children:(0,F.jsxs)(D,{onClick:t?void 0:()=>y(e.handle,J),children:[(0,F.jsx)(h,{author:{icon:{url:e.avatarUrl},name:e.name,handle:e.handle}}),(0,F.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,F.jsx)(`span`,{className:`block truncate font-semibold text-black dark:text-white`,children:t?(0,F.jsx)(f,{className:`w-24`}):e.name}),(0,F.jsx)(`span`,{className:`block truncate text-sm text-gray-600`,children:t?(0,F.jsx)(f,{className:`w-40`}):e.handle})]}),B.has(e.apId)?(0,F.jsx)(a,{className:`ml-auto min-w-[90px] text-red hover:bg-red/5! hover:text-red-400`,variant:`outline`,onClick:t=>{t.stopPropagation(),ie(e)},children:`Block`}):t?(0,F.jsx)(`div`,{className:`ml-auto w-16`,children:(0,F.jsx)(f,{})}):(0,F.jsx)(a,{className:`ml-auto min-w-[90px]`,variant:`destructive`,onClick:t=>{t.stopPropagation(),re(e)},onMouseEnter:()=>q(e.apId),onMouseLeave:()=>q(null),children:K===e.apId?`Unblock`:`Blocked`})]})})},e.apId?e.apId:`loading-${n}`))}),(0,F.jsx)(c,{className:`mt-[11px]`,value:`blocked_domains`,children:!I&&R.length===0?(0,F.jsxs)(g,{children:[(0,F.jsx)(v,{children:(0,F.jsx)(o,{})}),(0,F.jsx)(`div`,{className:`mt-2 flex max-w-[400px] flex-col items-center gap-1 text-center`,children:(0,F.jsx)(`p`,{children:`When you block a domain, all users from that domain won't be able to follow you or interact with your content.`})})]}):R.map((e,t)=>(0,F.jsxs)(D,{children:[(0,F.jsx)(`div`,{className:`flex min-w-0 flex-col`,children:(0,F.jsx)(`span`,{className:`block truncate font-semibold text-black dark:text-white`,children:I?(0,F.jsx)(f,{className:`w-48`}):new URL(e.url).hostname})}),W.has(e.url)?(0,F.jsx)(a,{className:`ml-auto min-w-[90px] text-red hover:bg-red/5! hover:text-red-400`,variant:`outline`,onClick:()=>oe(e),children:`Block`}):I?(0,F.jsx)(`div`,{className:`ml-auto w-16`,children:(0,F.jsx)(f,{})}):(0,F.jsx)(a,{className:`ml-auto min-w-[90px]`,variant:`destructive`,onClick:()=>ae(e),onMouseEnter:()=>q(e.url),onMouseLeave:()=>q(null),children:K===e.url?`Unblock`:`Blocked`})]},e.url?e.url:`loading-${t}`))})]})})]})})};export{I as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{l as r}from"./dist-B3keLvjj.js";import{$t as i,er as a}from"./button-eNMKQWXr.js";import{a as o,c as s,i as c,o as l,r as u,s as d,t as f}from"./command-BfpHORBv.js";var p=e(t(),1),m=n(),h={searchPlaceholder:`Search...`,noResultsFound:`No results found.`,loading:`Loading...`,loadMore:`Load more`};function g(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.label.toLowerCase().includes(n)||e.detail?.toLowerCase().includes(n)):e}function _(e,t,n,r,i,a,o){if(e)return{...e,shouldClientFilter:o??e.shouldClientFilter};let s=!!t,c=t?.useOptions({query:r,selectedValues:i});return{options:s?c?.options??[]:n??[],isInitialLoad:s?c?.isInitialLoad??!1:a&&(n?.length??0)===0,isSearching:s?c?.isSearching??!1:a&&(n?.length??0)>0,hasMore:s?c?.hasMore??!1:!1,isLoadingMore:s?c?.isLoadingMore??!1:!1,loadMore:s?c?.loadMore??(()=>{}):()=>{},shouldClientFilter:o??!s}}function v({optionSource:e,options:t,values:n,onChange:v,valueSource:y,searchable:b=!0,isLoading:x=!1,maxSelections:S,isMultiSelect:C=!0,onClose:w,autoCloseOnSelect:T=!1,className:E,searchInputClassName:D,shouldFilter:O,onSearchChange:k,i18n:A,renderItem:ee,groupBy:j,header:M,footer:N}){let P=(0,p.useMemo)(()=>({...h,...A}),[A]),[F,I]=(0,p.useState)(``),L=(0,p.useCallback)(t=>{I(t),e?.onSearchChange?.(t),k?.(t)},[k,e]),R=_(e,y,t,F,n,x,O),z=R.options,[B,V]=(0,p.useState)([]),H=(0,p.useMemo)(()=>z.filter(e=>n.includes(e.value)),[z,n]);(0,p.useEffect)(()=>{if(n.length===0){V([]);return}H.length>0&&V(e=>{let t=[];for(let r of n){let n=H.find(e=>e.value===r)??e.find(e=>e.value===r);n&&t.push(n)}return t})},[H,n]);let U=(0,p.useMemo)(()=>n.length===0?[]:B.length>0?B:H,[B,n.length,H]),W=(0,p.useMemo)(()=>g(U,F),[F,U]),G=(0,p.useMemo)(()=>z.filter(e=>!n.includes(e.value)),[z,n]),K=(0,p.useMemo)(()=>{let e=new Map;for(let t of G){let n=j?.(t),r=typeof n==`string`?n:n?.key,i=typeof n==`string`?n:n?.label,a=e.get(r);e.set(r,{label:i,options:[...a?.options??[],t]})}return[...e.entries()].map(([e,t])=>({key:e,...t}))},[j,G]),q=(0,p.useCallback)(e=>{v(n.filter(t=>t!==e.value))},[v,n]),J=e=>{v([]),w?.()},Y=e=>{let t=[...n,e.value];S&&t.length>S||(v(t),T&&w?.())},X=e=>{v([e.value]),w?.()},Z=C?q:J,Q=C?Y:X,te=(0,p.useCallback)(()=>L(``),[L]),ne=(e,t)=>{if(t)return;let n=e.detail?` - ${e.detail}`:``;return e.label+n},$=ee??(({option:e,isSelected:t,onSelect:n})=>(0,m.jsxs)(l,{className:`group flex items-center gap-2`,value:ne(e,t),onSelect:n,children:[e.icon,(0,m.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,m.jsx)(`span`,{className:`truncate text-accent-foreground`,title:e.label,children:e.label}),e.detail&&(0,m.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,title:e.detail,children:e.detail})]}),(0,m.jsx)(a,{className:r(`ms-auto text-primary`,!t&&`opacity-0`)})]},String(e.value)));return(0,m.jsx)(`div`,{className:r(`w-full`,E),children:(0,m.jsxs)(f,{shouldFilter:R.shouldClientFilter,children:[M?.({selectedOptions:U,onDeselect:q}),b&&(0,m.jsxs)(`div`,{className:`relative`,children:[(0,m.jsx)(o,{className:r(`h-(--control-height) pr-8`,D),placeholder:P.searchPlaceholder,value:F,onValueChange:L}),R.isSearching&&(0,m.jsx)(i,{className:`pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 animate-spin text-muted-foreground`})]}),(0,m.jsxs)(d,{className:`outline-hidden`,children:[R.isInitialLoad?(0,m.jsxs)(`div`,{className:`flex items-center justify-center py-6 text-sm text-muted-foreground`,children:[(0,m.jsx)(i,{className:`mr-2 size-4 animate-spin`}),P.loading]}):(0,m.jsx)(u,{children:P.noResultsFound}),W.length>0&&(0,m.jsx)(c,{heading:P.selectedHeading,children:W.map(e=>$({option:e,isSelected:!0,onSelect:()=>Z(e)}))}),G.length>0&&(0,m.jsxs)(m.Fragment,{children:[W.length>0&&(0,m.jsx)(s,{}),K.map(e=>(0,m.jsx)(c,{heading:e.label,children:e.options.map(e=>$({option:e,isSelected:!1,onSelect:()=>Q(e)}))},e.key===void 0?`ungrouped`:`group:${e.key}`))]}),R.hasMore&&(0,m.jsxs)(m.Fragment,{children:[(W.length>0||G.length>0)&&(0,m.jsx)(s,{}),(0,m.jsx)(`div`,{className:`p-1.5`,children:(0,m.jsxs)(`button`,{className:`flex w-full items-center justify-center rounded-xs px-2 py-1.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground disabled:opacity-50`,disabled:R.isLoadingMore,type:`button`,onClick:R.loadMore,children:[R.isLoadingMore&&(0,m.jsx)(i,{className:`mr-2 size-4 animate-spin`}),R.isLoadingMore?P.loading:P.loadMore]})})]})]}),N?.({searchInput:F,clearSearch:te})]})})}export{v as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{p as r}from"./hooks-CuEZV2-q.js";import{w as i}from"./dist-B3keLvjj.js";import{t as a}from"./inline-BWSs_VzR.js";import{$n as o,D as s,ft as c,t as l,v as u}from"./button-eNMKQWXr.js";import{i as d,n as f,r as p,t as m}from"./tabs-D2yWLMp_.js";import{t as h}from"./switch-CI4gLWqb.js";import{o as g,t as _}from"./use-settings-navigation-CZjGrhsp.js";import{i as v,o as y,t as b}from"./field-Dihp5p18.js";import{i as x,n as S,t as C}from"./use-url-input-DFr8lCbS.js";import{$n as w,$r as T,Cr as E,Tr as D,jr as O,t as k,ti as A,xr as j}from"./index-6MkPdCtr.js";import{a as M,c as N,i as P,n as ee,o as te,r as ne,s as F,t as I}from"./images-scfkWZiK.js";import{t as L}from"./validator-Cr0sMKuW.js";import{n as re}from"./global-data-context-gAMDH9u1.js";import{t as ie}from"./use-setting-group-DpcuCUDg.js";import{t as R}from"./format-url-Ju4k5CIm.js";var ae=e(L(),1),z=e(t(),1),B=[`public`,`members`,`paid`,`public_free`,`public_paid`,`public_only`,`free_members`,`none`],V=e=>!!(e&&!e.match(/^\s*$/)),H=e=>!!(V(e.label)||e.url!==`/`||V(e.icon)),U=e=>({...e,icon:e.icon||``,visibility:e.visibility||`public`,errors:{}}),W=({url:e,label:t,icon:n,visibility:r})=>({url:e.trim(),label:t.trim(),...n?.trim()?{icon:n.trim()}:{},...r&&r!==`public`?{visibility:r}:{}}),G=({items:e,setItems:t})=>{let n=S({items:(0,z.useMemo)(()=>e.map(U),[e]),setItems:(0,z.useCallback)(e=>{t(e.map(W))},[t]),blank:{url:`/`,label:``,icon:``,visibility:`public`,errors:{}},canAddNewItem:H}),r=new RegExp(/^(\/|#|[a-zA-Z0-9-]+:)/),i=e=>{let t={},n=V(e.label),i=V(e.icon);return!n&&!i&&(t.label=`You must specify a label or icon`),(!e.url||e.url.match(/\s/)||!ae.default.isURL(e.url,{require_protocol:!0})&&!e.url.match(r))&&(t.url=`You must specify a valid URL or relative path`),e.visibility&&!B.includes(e.visibility)&&(t.visibility=`You must specify a valid visibility`),t},a=(e,t)=>{let n={...e.errors};return V(t.icon)&&(n.icon=void 0,n.label=void 0),{...e,...t,errors:n}},o=(e,t)=>{let r=n.items.find(t=>t.id===e);n.updateItem(e,a(r.item,t))},s=()=>{let e=i(n.newItem);Object.values(e).some(e=>e)?n.setNewItem({...n.newItem,errors:e}):n.addItem()},c=e=>{n.removeItem(e)},l=(e,t)=>{n.moveItem(e,t)},u=(e,t)=>{if(e===`new`)n.setNewItem({...n.newItem,errors:{...n.newItem.errors,[t]:void 0}});else{let r=n.items.find(t=>t.id===e).item;n.updateItem(e,{...r,errors:{...r.errors,[t]:void 0}})}};return{items:n.items.map(({item:e,id:t})=>({...e,id:t})),updateItem:o,addItem:s,removeItem:c,moveItem:l,newItem:{...n.newItem,id:`new`},setNewItem:e=>n.setNewItem(a(n.newItem,e)),clearError:u,validate:()=>{let e=!0;if(n.items.forEach(({item:t,id:r})=>{let a=i(t);Object.values(a).some(e=>e)&&(e=!1,n.updateItem(r,{...t,errors:a}))}),H(n.newItem)){let t=i(n.newItem);Object.values(t).some(e=>e)&&(e=!1,n.setNewItem({...n.newItem,errors:t}))}return e}}},K=n(),q=({idPrefix:e,item:t,clearError:n,updateItem:r,uploadIcon:i})=>(0,K.jsx)(ne,{className:`size-[38px]`,children:t.icon?(0,K.jsxs)(N,{children:[(0,K.jsx)(F,{alt:``,className:`size-[38px] rounded-lg object-contain p-2.5`,src:t.icon}),(0,K.jsx)(M,{className:`inset-0 flex items-center justify-center`,children:(0,K.jsx)(P,{"aria-label":`Remove navigation icon`,className:`size-full rounded-lg bg-black/75 p-0 text-white hover:bg-black/90 hover:text-white`,onClick:()=>{n?.(`icon`),r?.({icon:``})},children:(0,K.jsx)(s,{className:`size-4`})})})]}):(0,K.jsx)(te,{accept:{"image/*":[]},"aria-label":`Upload navigation icon`,className:`size-[38px] rounded-lg border-0 bg-muted p-0 text-muted-foreground hover:bg-muted hover:text-foreground`,id:`${e}-icon-${t.id}`,inputAriaLabel:`Upload navigation icon`,onDropAccepted:([e])=>void i?.(e).then(e=>{e&&r?.({icon:e})}),children:(0,K.jsx)(u,{"aria-hidden":`true`,className:`size-4`})})}),J={public:`Everyone`,members:`Members only`,paid:`Paid-members only`,public_free:`Public + free`,public_paid:`Public + paid`,public_only:`Public only`,free_members:`Free only`,none:`Hidden`},oe=B.map(e=>({value:e,label:J[e]})),se=[{key:`public-visitors`,label:`Public visitors`},{key:`free-members`,label:`Free members`},{key:`paid-members`,label:`Paid members`}],ce={public:{"public-visitors":!0,"free-members":!0,"paid-members":!0},members:{"public-visitors":!1,"free-members":!0,"paid-members":!0},paid:{"public-visitors":!1,"free-members":!1,"paid-members":!0},public_free:{"public-visitors":!0,"free-members":!0,"paid-members":!1},public_paid:{"public-visitors":!0,"free-members":!1,"paid-members":!0},public_only:{"public-visitors":!0,"free-members":!1,"paid-members":!1},free_members:{"public-visitors":!1,"free-members":!0,"paid-members":!1},none:{"public-visitors":!1,"free-members":!1,"paid-members":!1}},le=[`paid`,`public_paid`],ue={"000":`none`,"001":`paid`,"010":`free_members`,"011":`members`,100:`public_only`,101:`public_paid`,110:`public_free`,111:`public`},de=e=>oe.some(t=>t.value===e)?e:`public`,fe=e=>J[e],pe=(e,t)=>({...ce[e],...t?{}:{"paid-members":!1}}),me=e=>ue[[e[`public-visitors`],e[`free-members`],e[`paid-members`]].map(e=>e?`1`:`0`).join(``)],he=({idPrefix:e,item:t,clearError:n,updateItem:r,showPaidVisibility:i})=>{let a=de(t.visibility),s=fe(a),c=`${e}-visibility-${t.id}`,l=`${c}-error`,u=pe(a,i),d=e=>{n?.(`visibility`),r?.({visibility:e})},f=(e,t)=>{let n={...u,[e]:t};i||(n[`paid-members`]=n[`free-members`]);let r=me(n);!i&&le.includes(r)||d(r)};return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`label`,{className:`sr-only`,id:c,children:`Visibility`}),(0,K.jsxs)(j,{children:[(0,K.jsx)(O,{asChild:!0,children:(0,K.jsxs)(`button`,{"aria-describedby":t.errors.visibility?l:void 0,"aria-invalid":!!t.errors.visibility,"aria-labelledby":c,className:`flex h-[38px] w-full items-center justify-between rounded-lg border-transparent bg-gray-100 px-3 text-md text-black hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:outline-hidden dark:bg-gray-900 dark:text-white dark:hover:bg-gray-900`,"data-testid":`navigation-item-visibility`,type:`button`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:s}),(0,K.jsx)(o,{"aria-hidden":`true`,className:`size-4 opacity-80`})]})}),(0,K.jsx)(E,{align:`end`,className:`z-[300] w-[190px] rounded-lg p-2`,sideOffset:6,children:(0,K.jsx)(`div`,{className:`flex flex-col`,children:se.filter(e=>e.key!==`paid-members`||i).map(e=>{let t=u[e.key];return(0,K.jsxs)(D,{className:`flex cursor-pointer items-center justify-between gap-3 rounded-md px-2 py-1.5 text-sm text-gray-900 dark:text-gray-100`,onSelect:n=>{n.preventDefault(),f(e.key,!t)},children:[(0,K.jsx)(`span`,{children:e.label}),(0,K.jsx)(h,{"aria-label":e.label,checked:t,size:`sm`,onCheckedChange:t=>f(e.key,t),onClick:e=>e.stopPropagation()})]},e.key)})})})]}),t.errors.visibility&&(0,K.jsx)(`div`,{className:`mt-1 text-xs text-red`,id:l,role:`alert`,children:t.errors.visibility})]})},ge=`flex w-full items-start gap-3 [--control-height:38px]`,Y={icon:`w-[38px] shrink-0`,label:`min-w-0 flex-[0.75]`,url:`min-w-0 flex-[1.25]`,visibility:`w-[190px] shrink-0`,action:`w-10 shrink-0`},X=`pt-1`,Z=({baseUrl:e,idPrefix:t,item:n,updateItem:r,uploadIcon:o,addItem:s,clearError:c,labelPlaceholder:l,unstyled:u,textFieldClasses:d,action:f,showIcon:p,showPaidVisibility:m,showVisibility:h,className:g,..._})=>{let x=C({baseUrl:e,nullable:!0,value:n.url,onChange:e=>r?.({url:e||``})});return(0,K.jsxs)(`div`,{className:i(ge,g),"data-testid":`navigation-item-editor`,..._,children:[p&&(0,K.jsx)(`div`,{className:i(`flex flex-col`,Y.icon,`pt-1`),children:(0,K.jsx)(q,{clearError:c,idPrefix:t,item:n,updateItem:r,uploadIcon:o})}),(0,K.jsx)(`div`,{className:i(`flex`,Y.label,X),children:(0,K.jsxs)(b,{className:`grow`,"data-invalid":!!n.errors.label||void 0,children:[(0,K.jsx)(y,{className:`sr-only`,htmlFor:`navigation-label-${n.id}`,children:`Label`}),(0,K.jsx)(w,{"aria-invalid":!!n.errors.label||void 0,className:i(u&&`border-0 bg-transparent shadow-none focus-visible:ring-0`,d),id:`navigation-label-${n.id}`,placeholder:l,value:n.label,onChange:e=>r?.({label:e.target.value}),onKeyDown:e=>{r?.({label:e.target.value}),e.key===`Enter`&&(e.preventDefault(),s?.()),n.errors.label&&c?.(`label`)}}),n.errors.label&&(0,K.jsx)(v,{children:n.errors.label})]})}),(0,K.jsx)(`div`,{className:i(`flex`,Y.url,X),children:(0,K.jsxs)(b,{className:`grow`,"data-invalid":!!n.errors.url||void 0,children:[(0,K.jsx)(y,{className:`sr-only`,htmlFor:`navigation-url-${n.id}`,children:`URL`}),(0,K.jsx)(w,{"aria-invalid":!!n.errors.url||void 0,className:d,id:`navigation-url-${n.id}`,value:x.displayValue,onBlur:x.commitValue,onChange:e=>x.setDisplayValue(e.target.value),onFocus:x.handleFocus,onKeyDown:t=>{x.handleKeyDown(t);let n=R(t.target.value,e,!0);r?.({url:n.save||``})},onKeyUp:t=>{if(t.key===`Enter`){t.preventDefault();let n=R(t.target.value,e,!0);r?.({url:n.save||``}),s?.()}n.errors.url&&c?.(`url`)}}),n.errors.url&&(0,K.jsx)(v,{children:n.errors.url})]})}),h&&(0,K.jsx)(`div`,{className:i(`flex flex-col`,Y.visibility,`pt-1`),children:(0,K.jsx)(he,{clearError:c,idPrefix:t,item:n,showPaidVisibility:m,updateItem:r})}),f&&(0,K.jsx)(a,{align:`center`,className:i(`h-[calc(var(--control-height)+0.25rem)] shrink-0 pt-1`,Y.action),children:f})]})},Q=`text-xs font-semibold text-muted-foreground`,$=({baseUrl:e,idPrefix:t,navigation:n,showIcon:r,showPaidVisibility:i,showVisibility:o,uploadIcon:u})=>(0,K.jsxs)(`div`,{className:`w-full pt-2`,children:[(r||o)&&(0,K.jsxs)(`div`,{className:`-mb-1 flex w-full items-center gap-3`,children:[(0,K.jsx)(`div`,{className:`h-7 w-4 shrink-0`}),(0,K.jsxs)(`div`,{className:`flex w-full items-start gap-3 [--control-height:38px]`,children:[r&&(0,K.jsx)(`div`,{className:`${Y.icon} ${Q}`,children:`Icon`}),(0,K.jsx)(`div`,{className:`${Y.label} ${Q}`,children:`Label`}),(0,K.jsx)(`div`,{className:`${Y.url} ${Q}`,children:`URL`}),o&&(0,K.jsx)(`div`,{className:`${Y.visibility} ${Q}`,children:`Visibility`}),(0,K.jsx)(`div`,{className:Y.action})]})]}),(0,K.jsx)(x,{dragHandleClass:`translate-y-0.5`,getDragHandleLabel:e=>`Reorder ${e.label||`navigation item`}`,items:n.items,itemSeparator:!1,renderItem:a=>(0,K.jsx)(Z,{action:(0,K.jsx)(l,{"aria-label":`Delete navigation item`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.removeItem(a.id),children:(0,K.jsx)(s,{})}),baseUrl:e,clearError:e=>n.clearError(a.id,e),idPrefix:t,item:a,showIcon:r,showPaidVisibility:i,showVisibility:o,updateItem:e=>n.updateItem(a.id,e),uploadIcon:u}),onMove:n.moveItem}),(0,K.jsxs)(a,{align:`start`,className:`mt-5 border-t pt-5`,gap:`md`,children:[(0,K.jsx)(a,{align:`center`,className:`h-[calc(var(--control-height)+0.5rem)] shrink-0 translate-y-0.5 pt-2`,children:(0,K.jsx)(c,{className:`size-4 text-muted-foreground`})}),(0,K.jsx)(Z,{action:(0,K.jsx)(l,{"aria-label":`Add navigation item`,"data-testid":`add-button`,size:`icon`,type:`button`,variant:`ghost`,onClick:n.addItem,children:(0,K.jsx)(c,{})}),addItem:n.addItem,baseUrl:e,className:`mt-1`,clearError:e=>n.clearError(n.newItem.id,e),"data-testid":`new-navigation-item`,idPrefix:t,item:n.newItem,labelPlaceholder:`New item label`,showIcon:r,showPaidVisibility:i,showVisibility:o,updateItem:n.setNewItem,uploadIcon:u})]})]});function _e(){let{updateRoute:e}=_(),t=r(),{mutateAsync:n}=ee(),{config:i}=re(),{localSettings:a,updateSetting:o,saveState:s,handleSave:c,siteData:l}=ie(),[u,h,v]=A(a,[`navigation`,`secondary_navigation`,`members_signup_access`]),y=k(`navigationIcons`),b=y,x=y&&v!==`none`,S=T(a,i),C=(0,z.useMemo)(()=>JSON.parse(u||`[]`),[u]),w=(0,z.useMemo)(()=>JSON.parse(h||`[]`),[h]),E=(0,z.useCallback)(e=>{o(`navigation`,JSON.stringify(e))},[o]),D=(0,z.useCallback)(e=>{o(`secondary_navigation`,JSON.stringify(e))},[o]),O=G({items:C,setItems:E}),j=G({items:w,setItems:D}),[M,N]=(0,z.useState)(`primary-nav`),P=async e=>{try{return I(await n({file:e}))}catch(e){let n=e;n.response?.status===415&&(n.message=`Unsupported file type`),t(n)}};return(0,K.jsx)(g,{buttonsDisabled:s===`saving`,cancelLabel:`Close`,dirty:a.some(e=>e.dirty),okLabel:s===`saving`?`Saving...`:`Save`,scrolling:!0,size:`lg`,stickyFooter:!0,testId:`navigation-modal`,title:`Navigation`,onClose:()=>{e(`navigation`)},onOk:async()=>{O.validate()&&j.validate()&&(await c(),e(`navigation`))},children:(0,K.jsx)(`div`,{className:`mt-6 mb-1`,children:(0,K.jsxs)(m,{value:M,variant:`underline`,onValueChange:N,children:[(0,K.jsxs)(p,{children:[(0,K.jsx)(d,{value:`primary-nav`,children:`Primary`}),(0,K.jsx)(d,{value:`secondary-nav`,children:`Secondary`})]}),(0,K.jsx)(f,{value:`primary-nav`,children:(0,K.jsx)($,{baseUrl:l.url,idPrefix:`primary-navigation`,navigation:O,showIcon:b,showPaidVisibility:S,showVisibility:x,uploadIcon:P})}),(0,K.jsx)(f,{value:`secondary-nav`,children:(0,K.jsx)($,{baseUrl:l.url,idPrefix:`secondary-navigation`,navigation:j,showIcon:b,showPaidVisibility:S,showVisibility:x,uploadIcon:P})})]})})})}export{_e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{i as r}from"./hooks-CuEZV2-q.js";import{n as i}from"./dist-Ndy-PuGN.js";import{c as a}from"./posts-DuGazgTb.js";import{o}from"./post-helpers-C5OQMBoi.js";import{h as s}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as c}from"./router-provider-B0gZyiGJ.js";import{b as l,g as u,h as d,m as f}from"./dist-B3keLvjj.js";import{a as p}from"./heading-Dh5SFVjL.js";import{A as m,L as h,Sr as g,Zn as _,k as v,t as y,xt as b}from"./button-eNMKQWXr.js";import{i as x,r as S,t as C}from"./tabs-D2yWLMp_.js";import{n as ee}from"./skeleton-Ce9GgUpf.js";import{a as w,i as te,n as T,o as E,r as D,t as O}from"./card--VNbfgo3.js";import{c as k,l as A,n as ne,o as re,r as ie,s as ae,t as oe,u as se}from"./data-list-CA2jYGPq.js";import{i as ce,n as le,o as j,r as M,t as N}from"./use-simple-pagination-DzJWobPR.js";import{$n as ue,Jn as P,M as F,P as de,Un as I,Yn as L,Zn as fe,ci as pe,j as R,si as me}from"./index-6MkPdCtr.js";import{i as he,r as ge}from"./stats-Rjmk5owg.js";import{a as z,i as B,n as V,r as H,t as U}from"./kpi-card-DFafD1qq.js";import{r as _e,t as ve}from"./post-analytics-header-BYCsT0GP.js";import{n as ye}from"./post-analytics-context-D0Mw-Pmv.js";import{a as be,i as xe,n as W,o as G,r as K}from"./link-helpers-MVDdnFCY.js";var q=r({dataType:`FeedbackResponseType`,path:e=>`/feedback/${e}/`}),J=e(t(),1),Y=(e,t)=>{let{data:n,isLoading:r,error:i}=q(e,{searchParams:{limit:`50`,...t===void 0?{}:{score:t.toString()}}});return{feedback:(0,J.useMemo)(()=>n?.feedback?n.feedback:[],[n]),isLoading:r,error:i}},X=n(),Se=({feedbackStats:e})=>{let{postId:t}=s(),n=c(),[r,i]=(0,J.useState)(`positive`),{feedback:a,isLoading:o}=Y(t||``,+(r===`positive`)),{totalPages:f,paginatedData:g,nextPage:_,previousPage:b,hasNextPage:k,hasPreviousPage:A}=N({data:a,itemsPerPage:9}),ne=o;return(0,X.jsxs)(O,{children:[(0,X.jsxs)(w,{className:`pb-5`,children:[(0,X.jsx)(E,{children:`Feedback`}),(0,X.jsx)(D,{children:`What did your readers think?`})]}),e.totalFeedback>0?(0,X.jsxs)(T,{className:`pb-3`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,X.jsx)(C,{className:`pb-3`,defaultValue:`positive`,value:r,variant:`button`,onValueChange:e=>i(e),children:(0,X.jsxs)(S,{className:`gap-1`,children:[(0,X.jsx)(x,{className:`h-7`,value:`positive`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,X.jsx)(v,{size:14,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`More like this`}),(0,X.jsx)(`span`,{className:`font-semibold tracking-tight`,children:d(e.positiveFeedback/e.totalFeedback)})]})}),(0,X.jsx)(x,{className:`h-7`,value:`negative`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,X.jsx)(m,{size:14,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`Less like this`}),(0,X.jsx)(`span`,{className:`font-semibold tracking-tight`,children:d(e.negativeFeedback/e.totalFeedback)})]})})]})}),(0,X.jsx)(p,{className:`mr-2 mb-3 lg:hidden xl:visible! xl:block!`,children:`Date`})]}),(0,X.jsx)(I,{}),ne?(0,X.jsx)(ee,{className:`mt-3`,lines:3}):g&&g.length>0?(0,X.jsx)(`div`,{className:`flex w-full flex-col py-3`,children:g.map(e=>(0,X.jsxs)(`div`,{className:`flex h-10 w-full items-center justify-between gap-3 rounded-sm border-none px-2 text-sm hover:cursor-pointer hover:bg-accent`,onClick:()=>{n(`/members/${e.member.id}`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,X.jsxs)(P,{className:`size-7`,children:[e.member?.avatar_image&&(0,X.jsx)(`img`,{className:`absolute aspect-square size-full`,src:e.member?.avatar_image}),(0,X.jsx)(L,{className:`text-white`,style:{backgroundColor:`${l(R(e.member),`45`,`55`)}`},children:F(e.member)})]}),R(e.member)]}),(0,X.jsx)(`div`,{className:`whitespace-nowrap text-muted-foreground`,children:u(e.created_at)})]},e.id))}):(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center py-8 text-center text-sm text-muted-foreground`,children:(0,X.jsxs)(`div`,{children:[`No `,r===`positive`?`positive`:`negative`,` feedback yet`]})})]}):(0,X.jsxs)(T,{className:`flex grow flex-col items-center justify-center text-center text-sm text-muted-foreground`,children:[(0,X.jsx)(`div`,{children:`No members have given feedback yet`}),(0,X.jsx)(`div`,{children:`When someone does, you'll see their response here.`})]}),e.totalFeedback>0&&(0,X.jsx)(te,{className:`grow-0`,children:(0,X.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,X.jsxs)(y,{variant:`outline`,onClick:()=>{let e=`(feedback.post_id:'${t}'+feedback.score:1)`,i=`(feedback.post_id:'${t}'+feedback.score:0)`,a=`${encodeURIComponent(e)}&post=${t}`,o=`${encodeURIComponent(i)}&post=${t}`;n(`/members?filter=${r===`positive`?a:o}`)},children:[`View all`,(0,X.jsx)(h,{})]}),f>1&&(0,X.jsx)(le,{className:`pb-0`,children:(0,X.jsxs)(M,{children:[(0,X.jsx)(j,{disabled:!A,onClick:b}),(0,X.jsx)(ce,{disabled:!k,onClick:_})]})})]})})]})},Ce=e=>{let{data:t,isLoading:n}=a(e),{data:r,isLoading:i}=a(e,{searchParams:{include:`count.positive_feedback,count.negative_feedback`}}),o=(0,J.useMemo)(()=>t?.posts[0],[t]),s=(0,J.useMemo)(()=>r?.posts[0],[r]),c=(0,J.useMemo)(()=>o?{sent:o.email?.email_count||0,opened:o.email?.opened_count||0,clicked:o.count?.clicks||0,openedRate:o.email?.opened_count?o.email.opened_count/o.email.email_count:0,clickedRate:o.count?.clicks&&o.email?.email_count?o.count.clicks/o.email.email_count:0}:{sent:0,opened:0,clicked:0,openedRate:0,clickedRate:0},[o]),l=(0,J.useMemo)(()=>{if(!s?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=s.count.positive_feedback||0,t=s.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[s]),u=(0,J.useMemo)(()=>o?.newsletter?.id,[o]),{data:d,isLoading:f}=ge({searchParams:u?{newsletter_id:u}:{},enabled:!!u}),p=(0,J.useMemo)(()=>d?.stats?d.stats.map(e=>e.post_id):[],[d]),{data:m,isLoading:h}=he({searchParams:u&&p.length>0?{newsletter_id:u,post_ids:p.join(`,`)}:{},enabled:!!u&&p.length>0}),g=(0,J.useMemo)(()=>{if(!d?.stats)return;let e=d.stats,t=m?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...d,stats:r}},[d,m]),_=f||h,{data:v,isLoading:y,refetch:b}=be({searchParams:{filter:`post_id:'${e}'`}}),x=(0,J.useMemo)(()=>{if(!g||!g.stats)return{openRate:0,clickRate:0};let e=g.stats;if(e.length===0)return{openRate:0,clickRate:0};let t=e.reduce((e,t)=>e+(t.open_rate||0),0),n=e.reduce((e,t)=>e+(t.click_rate||0),0);return{openRate:Number((t/e.length).toFixed(2)),clickRate:Number((n/e.length).toFixed(2))}},[g]),S=(0,J.useMemo)(()=>K(v),[v]);return{post:o,stats:c,feedbackStats:l,averageStats:(0,J.useMemo)(()=>({openedRate:x.openRate,clickedRate:x.clickRate}),[x]),topLinks:S,refetchTopLinks:b,isLoading:n||i||_||y}},we=({breakpoints:e={sm:1080,md:1280,lg:1360}}={})=>{let[t,n]=(0,J.useState)(`md`);return(0,J.useEffect)(()=>{let t=()=>{let t=window.innerWidth;t<e.sm?n(`sm`):t<e.md?n(`md`):n(`lg`)};return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),{chartSize:t,isSmall:t===`sm`,isMedium:t===`md`,isLarge:t===`lg`}},Te=()=>(0,X.jsx)(`div`,{className:`absolute top-1/2 -right-4 z-10 hidden size-8 -translate-y-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground md:visible! md:flex!`,children:(0,X.jsx)(_,{className:`ml-0.5`,size:16,strokeWidth:1.5})}),Ee=({dataColor:e,value:t,avgValue:n})=>(0,X.jsxs)(`div`,{className:`absolute top-6 left-1/2 z-50 flex w-[200px] -translate-x-1/2 flex-col items-stretch gap-1.5 rounded-md bg-background px-4 py-2 text-sm opacity-0 shadow-md transition-all group-hover/block:top-3 group-hover/block:opacity-100`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`div`,{className:`size-2 rounded-full bg-chart-blue opacity-50`,style:{backgroundColor:e}}),`This newsletter`]}),(0,X.jsx)(`div`,{className:`text-right font-mono`,children:t})]}),(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`div`,{className:`size-2 rounded-full bg-chart-gray opacity-80`}),`Average`]}),(0,X.jsx)(`div`,{className:`text-right font-mono`,children:n})]})]}),De=()=>{let e=c(),[t,n]=(0,J.useState)(null),[r,a]=(0,J.useState)(``),s=(0,J.useRef)(null),l=(0,J.useRef)(null),{chartSize:u}=we(),m=me(),h=pe(),{post:_,isPostLoading:v,postId:x}=ye(),S=t=>e(de({filter:t})),C=_,P=o(C);(0,J.useEffect)(()=>{!v&&!P&&e(`/posts/analytics/${x}`)},[e,x,v,P]);let{stats:F,averageStats:L,topLinks:R,isLoading:he,refetchTopLinks:ge}=Ce(x),{mutate:be}=xe(),K=(0,J.useMemo)(()=>{if(!C?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=C.count.positive_feedback||0,t=C.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[C]),q=(0,J.useMemo)(()=>C?.newsletter?.feedback_enabled===!0,[C]),Y=(0,J.useMemo)(()=>K.totalFeedback>0?!0:q,[K.totalFeedback,q]),De=e=>{let t=W(R,e);t&&(n(e),a(t.link.to))},Oe=()=>{if(!t)return;let e=W(R,t);if(!e)return;let o=r.trim();if(o===``||o===e.link.to){n(null),a(``);return}be({originalUrl:e.link.originalTo,editedUrl:r,postId:x},{onSuccess:()=>{n(null),a(``),ge()},onError:()=>{i.error(`Couldn’t update the link. Please try again.`)}})},{totalPages:ke,paginatedData:Ae,nextPage:je,previousPage:Me,hasNextPage:Ne,hasPreviousPage:Pe}=N({data:R,itemsPerPage:10});(0,J.useEffect)(()=>{if(t&&s.current){s.current.focus();let e=W(R,t),i=t=>{l.current&&!l.current.contains(t.target)&&r===e?.link.to&&(n(null),a(``))};return document.addEventListener(`mousedown`,i),()=>{document.removeEventListener(`mousedown`,i)}}},[t,r,R]);let Z=he||v,Fe=[{datatype:`Sent`,value:1,fill:`url(#gradientPurple)`,color:`var(--chart-purple)`}],Ie={percentage:{label:`O`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Le=[{datatype:`Average`,value:L.openedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],Re={percentage:{label:`Opened`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},ze=[{datatype:`Average`,value:L.clickedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`}],Be={percentage:{label:`Clicked`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Q=`grid-cols-3`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-[10/14] md:max-w-none lg:aspect-square`;return(!m||!h)&&(Q=`grid-cols-2`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-square md:max-w-none lg:aspect-[15/10]`),!m&&!h&&(Q=`grid-cols-1`,$=`aspect-square w-full sm:aspect-[16/10] md:max-w-[320px] md:max-h-[320px] lg:aspect-[12/10]`),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{currentTab:`Newsletter`}),(0,X.jsx)(_e,{children:(0,X.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 ${Y&&m&&`lg:grid-cols-2`}`,children:[(0,X.jsxs)(O,{className:Y&&m?`lg:col-span-2`:``,children:[(0,X.jsxs)(w,{className:`hidden`,children:[(0,X.jsx)(E,{children:`Newsletters`}),(0,X.jsx)(D,{children:`How did this post perform`})]}),Z?(0,X.jsx)(T,{className:`h-[25vw] p-6`,children:(0,X.jsx)(fe,{})}):(0,X.jsxs)(T,{className:`p-0`,children:[(0,X.jsxs)(`div`,{className:`grid ${Q} items-stretch border-b`,children:[(0,X.jsxs)(U,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`emails.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`emails.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-purple opacity-50`}),`Sent`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.sent)})})]}),h&&(0,X.jsxs)(U,{className:`p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`opened_emails.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`opened_emails.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-blue opacity-50`}),`Opened`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.opened)})})]}),m&&(0,X.jsxs)(U,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`clicked_links.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`clicked_links.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-teal opacity-50`}),`Clicked`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.clicked)})})]})]}),(0,X.jsxs)(`div`,{className:`$ mx-auto grid grid-cols-1 items-center justify-center gap-4 transition-all md:gap-0 ${Q===`grid-cols-2`&&`md:grid-cols-2`} ${Q===`grid-cols-3`&&`md:grid-cols-3`}`,children:[(0,X.jsxs)(`div`,{className:`relative border-r-0 px-6 ${(h||m)&&`md:border-r`}`,children:[(0,X.jsx)(G,{className:$,config:Ie,data:Fe,percentageLabel:`Sent`,percentageValue:d(1),size:u,tooltip:!1}),(h||m)&&(0,X.jsx)(Te,{})]}),h&&(0,X.jsxs)(`div`,{className:`group/block relative border-r-0 px-6 transition-all hover:bg-muted/25 ${m&&`md:border-r`}`,children:[(0,X.jsx)(Ee,{avgValue:d(L.openedRate),dataColor:`var(--chart-blue)`,value:d(F.openedRate)}),(0,X.jsx)(G,{className:$,config:Re,data:Le,percentageLabel:`Open rate`,percentageValue:d(F.openedRate),size:u,tooltip:!1}),m&&(0,X.jsx)(Te,{})]}),m&&(0,X.jsxs)(`div`,{className:`group/block relative px-6 transition-all hover:bg-muted/25`,children:[(0,X.jsx)(Ee,{avgValue:d(L.clickedRate),dataColor:`var(--chart-teal)`,value:d(F.clickedRate)}),(0,X.jsx)(G,{className:$,config:Be,data:ze,percentageLabel:`Click rate`,percentageValue:d(F.clickedRate),size:u,tooltip:!1})]})]})]})]}),Y&&(0,X.jsx)(Se,{feedbackStats:K}),m&&(0,X.jsxs)(O,{className:`group/datalist overflow-hidden`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,X.jsxs)(w,{className:`p-0`,children:[(0,X.jsx)(E,{children:`Newsletter clicks`}),(0,X.jsx)(D,{children:`Which links resonated with your readers`})]}),(0,X.jsx)(p,{className:`mr-2`,children:`Members`})]}),Z?(0,X.jsxs)(T,{className:`p-6 pt-0`,children:[(0,X.jsx)(I,{}),(0,X.jsx)(ee,{className:`mt-6`})]}):(0,X.jsxs)(T,{className:`pb-0`,children:[(0,X.jsx)(I,{}),R.length>0?(0,X.jsx)(oe,{className:``,children:(0,X.jsx)(ie,{children:Ae?.map(e=>{let n=F.clicked>0?e.count/F.clicked:0,i=e.link.link_id,o=e.link.title,c=e.link.to,u=e.link.edited;return(0,X.jsxs)(se,{children:[t!==i&&(0,X.jsx)(ne,{style:{width:`${n?Math.round(n*100):0}%`}}),(0,X.jsx)(re,{className:`w-full`,children:t===i?(0,X.jsxs)(`div`,{ref:l,className:`flex w-full items-center gap-2`,children:[(0,X.jsx)(ue,{ref:s,className:`z-50 h-7 w-full border-border bg-background text-sm`,value:r,onChange:e=>a(e.target.value)}),(0,X.jsx)(y,{size:`sm`,onClick:Oe,children:`Update`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(y,{className:`mr-2 shrink-0 bg-background`,size:`sm`,variant:`outline`,onClick:()=>De(i),children:(0,X.jsx)(b,{})}),(0,X.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:c,rel:`noreferrer`,target:`_blank`,title:o,children:o}),u&&(0,X.jsx)(`span`,{className:`ml-1 text-gray-500`,children:`(edited)`})]})}),(0,X.jsxs)(ae,{children:[(0,X.jsx)(k,{children:f(e.count||0)}),(0,X.jsx)(A,{children:d(n)})]})]},i)})})}):(0,X.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]}),!Z&&R.length>1&&(0,X.jsx)(te,{children:(0,X.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-3`,children:[(0,X.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 pl-4 text-sm text-green`,children:[(0,X.jsx)(g,{size:20,strokeWidth:1.5}),`Sent a broken link? You can update it!`]}),ke>1&&(0,X.jsx)(le,{className:`pb-0`,children:(0,X.jsxs)(M,{children:[(0,X.jsx)(j,{disabled:!Pe,onClick:Me}),(0,X.jsx)(ce,{disabled:!Ne,onClick:je})]})})]})})]})]})})]})};export{De as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{g as r,p as i}from"./hooks-CuEZV2-q.js";import{n as a}from"./dist-Ndy-PuGN.js";import{t as o}from"./use-form-vRjI0Kwk.js";import{a as s,i as c,r as l}from"./config-DOMQDZGZ.js";import{h as u}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{w as d}from"./dist-B3keLvjj.js";import{t as f}from"./inline-BWSs_VzR.js";import{t as p}from"./stack-B2eszIiq.js";import{i as m,o as h,r as g}from"./shade-app-CcS3f8MZ-vwURazk8.js";import{A as _,N as v,P as y,Rt as b,S as x,U as S,Un as C,W as w,Z as T,hr as ee,k as E,mn as te,t as ne,x as re}from"./button-eNMKQWXr.js";import{i as D,n as O,r as k,t as ie}from"./tabs-D2yWLMp_.js";import{t as A}from"./switch-CI4gLWqb.js";import{i as ae,n as j,o as M,s as N,t as oe}from"./select-cb0t_TAJ.js";import{t as P}from"./use-settings-navigation-CZjGrhsp.js";import{a as F,c as I,i as L,n as R,o as z,r as se,s as B,t as V}from"./field-Dihp5p18.js";import{t as ce}from"./textarea-DJ1Q5V39.js";import{n as H,t as U}from"./toggle-group-ByUJsxwD.js";import{r as le}from"./components-CwL6a6As-B0E0-NBJ.js";import{t as W}from"./use-limiter-D2WRRx0H.js";import{i as ue,r as de}from"./newsletters-DhNigJUh.js";import{$n as G,Un as fe,ei as pe,t as me,ti as K}from"./index-6MkPdCtr.js";import{t as he}from"./validator-Cr0sMKuW.js";import{n as ge}from"./confirmation-context-CBM8G0Vj.js";import{n as q}from"./global-data-context-gAMDH9u1.js";import{t as _e}from"./use-upgrade-route-DhRSo7at.js";import{t as ve}from"./use-setting-group-DpcuCUDg.js";import{t as J}from"./color-picker-field-D9nUhvA7.js";import{i as ye,r as be,t as Y}from"./newsletter-emails-DKzwafuh.js";import{t as xe}from"./html-field-CJBCLTvv.js";import{t as X}from"./color-utils-Dzeeuj1F.js";import{t as Se}from"./preview-modal-BfeFqi5y.js";``+new URL(`user-cover-yM4cP_Mo.jpg`,import.meta.url).href,``+new URL(`latest-posts-1-D7-ilqhR.jpg`,import.meta.url).href,``+new URL(`latest-posts-2-BPfbGB8B.jpg`,import.meta.url).href,``+new URL(`latest-posts-3-D72O3dn8.jpg`,import.meta.url).href;var Z=n(),Ce=({senderName:e,senderEmail:t,senderReplyTo:n,headerImage:r,headerIcon:i,headerTitle:a,headerSubtitle:o,showPostTitleSection:s,showExcerpt:l,titleAlignment:u,titleFontCategory:f,titleFontWeight:p,bodyFontCategory:m,authorPlaceholder:h,showCommentCta:g,showFeatureImage:v,showFeedback:y,showShareButton:x,showLatestPosts:S,showSubscriptionDetails:C,siteTitle:w,footerContent:ee,showBadge:te,backgroundColor:ne,headerBackgroundColor:re,accentColor:D,textColor:O,secondaryTextColor:k,headerTextColor:ie,secondaryHeaderTextColor:A,postTitleColor:ae,sectionTitleColor:j,dividerColor:M,buttonColor:N,buttonTextColor:oe,linkColor:P,buttonCorners:F,buttonStyle:I,imageCorners:L,linkStyle:R,dividerStyle:z})=>{let se=i||a,{config:B}=q(),V=new Date().toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`numeric`}),ce=new Date().getFullYear(),H=ee?ee.replace(/<a/g,`<a target="_blank" rel="noopener noreferrer"`):``,U;U=c(B)?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`From: `}),(0,Z.jsxs)(`span`,{children:[e,` (`,t,`)`]})]}),(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`Reply-to: `}),n||t]})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:e}),(0,Z.jsxs)(`span`,{children:[` `,t]})]}),(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`To:`}),` Jamie Larson jamie@example.com`]})]});let W=`mb-5 text-pretty leading-[1.7] text-black`;return W=f===`serif`&&m===`serif`?d(W,`mb-8 font-serif text-[2.0rem] leading-tight`):f!==`serif`&&m===`serif`?d(W,`mb-8 text-[1.7rem] leading-tight tracking-tight`):f===`serif`&&m!==`serif`?d(W,`mb-8 font-serif text-[2.0rem] leading-tight`):d(W,`mb-8 text-[1.9rem] leading-tight tracking-tight`),u===`center`&&(W=d(W,`text-center`)),(0,Z.jsx)(`div`,{className:`relative flex grow flex-col`,children:(0,Z.jsx)(`div`,{className:`absolute inset-0 m-5 flex items-center justify-center`,children:(0,Z.jsxs)(`div`,{className:`mx-auto my-0 flex max-h-full w-full max-w-[700px] flex-col overflow-hidden rounded-[4px] text-black shadow-sm`,children:[(0,Z.jsx)(`div`,{className:`flex-column flex min-h-[77px] justify-center gap-1 rounded-t-sm border-b border-gray-200 bg-white px-6 text-gray-700`,children:U}),(0,Z.jsxs)(`div`,{className:`overflow-y-auto`,style:{backgroundColor:ne},children:[(0,Z.jsxs)(`div`,{className:`px-[7rem]`,style:{backgroundColor:re},children:[r&&(0,Z.jsx)(`div`,{children:(0,Z.jsx)(`img`,{alt:``,className:`mb-4 block pt-6`,src:r})}),se&&(0,Z.jsxs)(`div`,{className:`py-3`,children:[i&&(0,Z.jsx)(`img`,{alt:``,className:`mx-auto mb-2 size-10`,role:`presentation`,src:i}),a&&(0,Z.jsx)(`h4`,{className:`mb-1 text-center text-[1.6rem] leading-tight font-bold tracking-tight text-gray-900 uppercase`,style:{color:ie},children:a}),o&&(0,Z.jsx)(`h5`,{className:`mb-1 text-center text-[1.3rem] font-normal text-gray-700`,style:{color:A},children:o})]}),s&&(0,Z.jsxs)(`div`,{className:d(`flex flex-col py-8`,u===`center`?`items-center`:`items-start`),children:[(0,Z.jsx)(`h2`,{className:d(`text-4xl leading-supertight font-bold text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`,u===`center`?`text-center`:`text-left`,l?`mb-2`:`mb-8`),style:{color:ae},children:`Your email newsletter`}),l&&(0,Z.jsx)(`p`,{className:W,style:{color:ie},children:`A subtitle to highlight key points and engage your readers.`}),(0,Z.jsxs)(`div`,{className:d(`flex w-full justify-between text-center text-md leading-none text-gray-700`,u===`center`?`flex-col gap-1`:`flex-row`),children:[(0,Z.jsxs)(`p`,{className:`pb-1 text-[1.3rem]`,style:{color:A},children:[`By `,h,(0,Z.jsx)(`span`,{className:`before:pr-1 before:pl-0.5 before:content-['•']`,children:V})]}),(0,Z.jsx)(`p`,{className:`pb-1 text-[1.3rem] underline`,style:{color:A},children:(0,Z.jsx)(`span`,{children:`View in browser`})})]})]}),v&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:d(`h-[unset] w-full max-w-[600px] bg-cover bg-no-repeat`,s?``:`pt-6`),children:(0,Z.jsx)(`img`,{alt:`Feature`,className:d(`min-h-full min-w-full shrink-0`,L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`user-cover-yM4cP_Mo.jpg`,import.meta.url).href})}),(0,Z.jsx)(`div`,{className:`mt-1 w-full max-w-[600px] pb-8 text-center text-[1.3rem] text-gray-700`,style:{color:A},children:`Feature image caption`})]})]}),(0,Z.jsxs)(`div`,{className:d(`px-[7rem]`,re!==`transparent`&&`pt-10`),children:[(0,Z.jsxs)(`div`,{className:d(`max-w-[600px] border-b border-gray-200 pb-[52px] leading-[27.2px] text-black`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`,m===`serif`?`font-serif text-[1.8rem]`:`text-[1.7rem] tracking-tight`,v||s?``:`pt-8`),style:{borderColor:M},children:[(0,Z.jsx)(`p`,{className:`mb-6`,style:{color:O},children:`This is what your content will look like when you send one of your posts as an email newsletter to your subscribers.`}),(0,Z.jsx)(`p`,{className:`mb-6`,style:{color:O},children:`Over there on the right you'll see some settings that allow you to customize the look and feel of this template – from colors and typography to layout and buttons – to make it perfectly suited to your brand.`}),(0,Z.jsx)(`p`,{className:`mb-[52px]`,style:{color:O},children:`Email templates are exceptionally finnicky to make, but we've spent a long time optimising this one to make it work beautifully across devices, email clients and content types. So, you can trust that every email you send with Ghost will look great and work well. Just like the rest of your site.`}),(0,Z.jsx)(`hr`,{className:d(`my-[52px] border-[#e0e7eb]`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-t-0 border-b-2 border-dotted`),style:{borderColor:M}}),(0,Z.jsx)(`h3`,{className:d(`mb-[13px] text-[2.6rem] leading-supertight`,f===`serif`&&`font-serif`,f===`sans_serif`&&`font-sans`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`Need inspiration?`}),(0,Z.jsxs)(`p`,{className:`mb-[27px]`,style:{color:O},children:[`We've put together a`,` `,(0,Z.jsx)(`a`,{className:d(R===`underline`&&`underline`,R===`bold`&&`font-bold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:{color:P||D},target:`_blank`,children:`quick guide`}),` `,`that walks through all of the available settings, along with a few examples of what's possible.`]}),(0,Z.jsx)(`a`,{className:d(`inline-block border px-[18px] py-2 font-sans text-[15px]`,F===`rounded`&&`rounded-[6px]`,F===`pill`&&`rounded-full`,F===`square`&&`rounded-none`,I===`outline`?`bg-transparent`:`border-transparent text-white`,R===`bold`?`font-bold`:`font-semibold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:I===`outline`?{borderColor:N||D,color:N||D}:{backgroundColor:N||D,color:oe},target:`_blank`,children:`Learn more`})]}),(y||g||x)&&(0,Z.jsx)(`div`,{className:d(`grid gap-5 border-b border-gray-200 px-6 py-5`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:(0,Z.jsxs)(`div`,{className:`grid auto-cols-fr grid-flow-col gap-4`,children:[y&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(E,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`More like this`})]}),(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(_,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Less like this`})]})]}),g&&(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(b,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Comment`})]}),x&&(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(T,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Share`})]})]})}),S&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-6`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:[(0,Z.jsx)(`h3`,{className:`mt-2 mb-4 pb-1 text-[1.2rem] font-semibold tracking-wide text-black uppercase`,style:{color:O},children:`Keep reading`}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`The three latest posts published on your site`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Posts sent as an email only will never be shown here.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-1-D7-ilqhR.jpg`,import.meta.url).href})})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`Displayed at the bottom of each newsletter`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Giving your readers one more place to discover your stories.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-2-BPfbGB8B.jpg`,import.meta.url).href})})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`To keep your work front and center`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Making sure that your audience stays engaged.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-3-D72O3dn8.jpg`,import.meta.url).href})})]})]}),C&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-8`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:[(0,Z.jsx)(`h4`,{className:`mb-3 text-[1.2rem] tracking-wide text-black uppercase`,style:{color:O},children:`Subscription details`}),(0,Z.jsxs)(`p`,{className:`m-0 mb-4 text-base`,style:{color:O},children:[`You are receiving this because you are a paid subscriber to `,w,`. Your subscription will renew on 17 Jul 2024.`]}),(0,Z.jsxs)(`div`,{className:`flex`,children:[(0,Z.jsxs)(`div`,{className:`shrink-0 text-base`,children:[(0,Z.jsx)(`p`,{style:{color:O},children:`Name: Jamie Larson`}),(0,Z.jsx)(`p`,{style:{color:O},children:`Email: jamie@example.com`}),(0,Z.jsx)(`p`,{style:{color:O},children:`Member since: 17 July 2023`})]}),(0,Z.jsx)(`span`,{className:d(`w-full self-end text-right text-base whitespace-nowrap`,R===`underline`&&`underline`,R===`bold`&&`font-bold`),style:{color:P||D},children:`Manage subscription`})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col items-center pt-10`,children:[(0,Z.jsx)(`div`,{dangerouslySetInnerHTML:{__html:H||``},className:`text px-8 py-3 text-center text-[1.3rem] leading-base break-words text-gray-700 [&_a]:underline`,style:{color:k}}),(0,Z.jsxs)(`div`,{className:`px-8 pt-3 pb-14 text-center text-[1.3rem] text-gray-700`,children:[(0,Z.jsxs)(`span`,{style:{color:k},children:[w,` © `,ce,` —`,` `]}),(0,Z.jsx)(`span`,{className:`pointer-events-none cursor-auto underline`,style:{color:k},children:`Unsubscribe`})]}),te&&(0,Z.jsx)(`div`,{className:`flex flex-col items-center pt-[10px] pb-[40px]`,children:(0,Z.jsxs)(`a`,{className:`pointer-events-none inline-flex cursor-auto items-center px-2 py-1 text-[1.25rem] font-semibold tracking-tight text-gray-900`,href:`https://ghost.org`,style:{color:O},children:[(0,Z.jsx)(le,{className:`mr-[6px] size-4`}),(0,Z.jsx)(`span`,{children:`Powered by Ghost`})]})})]})]})]})]})})})},Q=e(t(),1),we=({newsletter:e})=>{let{currentUser:t,settings:n,siteData:r,config:i}=q(),[a,o,s,c,l]=K(n,[`title`,`icon`,`comments_enabled`,`support_email_address`,`default_email_address`]),u=null;e.show_header_title?u=a||null:e.show_header_name&&(u=e.name);let d=e.show_header_title&&e.show_header_name?e.name:void 0,f=e.show_comment_cta&&s!==`off`,p=e.feedback_enabled,m=e.show_share_button,h=()=>{let t=e.background_color;return/#([0-9a-f]{3}){1,2}$/i.test(t)?t:`#ffffff`},g=()=>{let t=e.header_background_color;return!t||t===`transparent`?`transparent`:/#([0-9a-f]{3}){1,2}$/i.test(t)?t:`transparent`},_=()=>{let t=e.button_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===null?X(h()).hex():r.accent_color},v=()=>{let t=e.button_style,n=_();if(n&&t===`fill`)return X(n).hex()},y=()=>{let t=e.link_color===void 0?`accent`:e.link_color;return t===`accent`?r.accent_color:/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:X(h()).hex()},b=()=>{let t=e.post_title_color;if(/#([0-9a-f]{3}){1,2}$/i.test(t||``))return t;if(t===`accent`)return r.accent_color;let n=g();return X(n===`transparent`?h():n).hex()},x=()=>{let t=e.section_title_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===`accent`?r.accent_color:X(h()).hex()},S=()=>{let t=e.divider_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===`accent`?r.accent_color:`#e0e7eb`},C=X(h()).hex(),w=X(h()).alpha(.5).toString(),T=g()===`transparent`?C:X(g()).hex(),ee=g()===`transparent`?w:X(g()).alpha(.5).toString(),E={backgroundColor:h(),headerBackgroundColor:g(),postTitleColor:b()||void 0,sectionTitleColor:x()||void 0,buttonColor:_()||void 0,buttonTextColor:v()||void 0,linkColor:y()||void 0,dividerColor:S()||void 0,textColor:C,secondaryTextColor:w,headerTextColor:T,secondaryHeaderTextColor:ee};return(0,Z.jsx)(Ce,{accentColor:r.accent_color,authorPlaceholder:t.name||t.email,backgroundColor:E.backgroundColor||`#ffffff`,bodyFontCategory:e.body_font_category,buttonCorners:e.button_corners||`rounded`,buttonStyle:e.button_style||`fill`,dividerStyle:e.divider_style||`solid`,footerContent:e.footer_content,headerBackgroundColor:E.headerBackgroundColor||`transparent`,headerIcon:e.show_header_icon?o:void 0,headerImage:e.header_image,headerSubtitle:d,headerTitle:u,imageCorners:e.image_corners||`square`,linkStyle:e.link_style||`underline`,senderEmail:be(e,i,l),senderName:e.sender_name||a,senderReplyTo:Y(e,i,c,l),showBadge:e.show_badge,showCommentCta:f,showExcerpt:e.show_excerpt,showFeatureImage:e.show_feature_image,showFeedback:p,showLatestPosts:e.show_latest_posts,showPostTitleSection:e.show_post_title_section,showShareButton:m,showSubscriptionDetails:e.show_subscription_details,siteTitle:a,titleAlignment:e.title_alignment,titleFontCategory:e.title_font_category,titleFontWeight:e.title_font_weight||`bold`,...E})},Te=e(he(),1),$=({label:e,value:t,options:n,onValueChange:r})=>(0,Z.jsx)(U,{"aria-label":e,type:`single`,value:t,onValueChange:e=>e&&r(e),children:n.map(e=>(0,Z.jsxs)(g,{children:[(0,Z.jsx)(h,{asChild:!0,children:(0,Z.jsx)(H,{"aria-label":e.label,disabled:e.disabled,value:e.value,children:e.icon})}),(0,Z.jsx)(m,{children:e.label})]},e.value))}),Ee=({newsletter:e,updateNewsletter:t,errors:n,clearError:r})=>{let{settings:i,config:a}=q(),[o,s]=K(i,[`default_email_address`,`support_email_address`]),[c,l]=(0,Q.useState)(Y(e,a,s,o)||``),u=be(e,a,o),d=(0,Q.useCallback)(e=>{l(e.target.value),t({sender_reply_to:e.target.value||`newsletter`})},[t,l]);return(0,Z.jsxs)(V,{"data-invalid":!!n.sender_reply_to||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-reply-to`,children:`Reply-to email`}),(0,Z.jsx)(G,{"aria-invalid":!!n.sender_reply_to||void 0,id:`newsletter-reply-to`,maxLength:191,placeholder:u||``,value:c,onBlur:()=>{let t=Y(e,a,s,o)||``;l(t)},onChange:d,onKeyDown:()=>r(`sender_reply_to`)}),n.sender_reply_to&&(0,Z.jsx)(L,{children:n.sender_reply_to})]})},De=({newsletter:e,onlyOne:t,updateNewsletter:n,validate:o,errors:s,clearError:u})=>{let{updateRoute:d}=P(),m=_e(),{mutateAsync:h}=ue(),g=W(),{settings:_,config:b,siteData:T}=q(),[E,H]=K(_,[`icon`,`default_email_address`]),[U,le]=(0,Q.useState)(`generalSettings`),{localSettings:me}=ve(),[he]=K(me,[`title`]),Y=i(),{confirm:Se,showLimit:Ce}=ge(),{data:{newsletters:we}={}}=de(),Te=[`all`,`paid`].includes(pe(_,`comments_enabled`)||``),De=be(e,b,H),[Oe,ke]=(0,Q.useState)(we||[]),Ae=Oe.filter(e=>e.status===`active`);(0,Q.useEffect)(()=>{ke(we||[])},[we]);let je=[{value:`serif`,label:`Elegant serif`,className:`font-serif`},{value:`sans_serif`,label:`Clean sans-serif`}],Me={sans_serif:{options:[{value:`normal`,label:`Regular`,className:`font-normal`},{value:`medium`,label:`Medium`,className:`font-medium`},{value:`semibold`,label:`Semi-bold`,className:`font-semibold`},{value:`bold`,label:`Bold`,className:`font-bold`}]},serif:{options:[{value:`normal`,label:`Regular`,className:`font-normal`},{value:`bold`,label:`Bold`,className:`font-bold`}],map:{medium:`normal`,semibold:`bold`}}},Ne=()=>e.background_color===`light`?!1:X(e.background_color).hex().toLowerCase()===`#ffffff`,Pe=async()=>{if(e.status===`active`)Se({title:`Archive newsletter`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mb-6`,children:[`Your newsletter `,(0,Z.jsx)(`strong`,{children:e.name}),` will no longer be visible to members or available as an option when publishing new posts.`]}),(0,Z.jsx)(`div`,{children:`Existing posts previously sent as this newsletter will remain unchanged.`})]}),okLabel:`Archive`,okVariant:`destructive`,onOk:async t=>{try{await h({...e,status:`archived`}),t?.remove(),a.success(`Newsletter archived`)}catch(e){Y(e)}}});else{try{await g?.errorIfWouldGoOverLimit(`newsletters`)}catch(e){if(e instanceof r){Ce({prompt:e.message||`Your current plan doesn't support more newsletters.`,onOk:()=>d({route:m,isExternal:!0})});return}else throw e}Se({title:`Reactivate newsletter`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[`Reactivating `,(0,Z.jsx)(`strong`,{children:e.name}),` will immediately make it visible to members and re-enable it as an option when publishing new posts.`]}),okLabel:`Reactivate`,onOk:async t=>{await h({...e,status:`active`}),t?.remove(),a.success(`Newsletter reactivated`)}})}},Fe=()=>{if(!c(b))return(0,Z.jsxs)(V,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(G,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,placeholder:De||``,value:e.sender_email||``,onChange:e=>n({sender_email:e.target.value}),onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(L,{children:s.sender_email})]});if(l(b))return(0,Z.jsxs)(V,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(G,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,maxLength:191,placeholder:H,value:e.sender_email||``,onChange:e=>{n({sender_email:e.target.value})},onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(L,{children:s.sender_email})]})},Ie=Me[e.title_font_category||`sans_serif`].options,Le=[{id:`generalSettings`,title:`General`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Name and description`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{"data-invalid":!!s.name||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-detail-name`,children:`Name`}),(0,Z.jsx)(G,{"aria-invalid":!!s.name||void 0,id:`newsletter-detail-name`,maxLength:191,placeholder:`Weekly Roundup`,value:e.name||``,onChange:e=>n({name:e.target.value}),onKeyDown:()=>u(`name`)}),s.name&&(0,Z.jsx)(L,{children:s.name})]}),(0,Z.jsxs)(V,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-description`,children:`Description`}),(0,Z.jsx)(ce,{id:`newsletter-description`,maxLength:2e3,rows:2,value:e.description||``,onChange:e=>n({description:e.target.value})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Email info`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-name`,children:`Sender name`}),(0,Z.jsx)(G,{id:`newsletter-sender-name`,maxLength:191,placeholder:he,value:e.sender_name||``,onChange:e=>n({sender_name:e.target.value})})]}),Fe(),(0,Z.jsx)(Ee,{clearError:u,errors:s,newsletter:e,updateNewsletter:n,validate:o})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Member settings`}),(0,Z.jsx)(F,{children:(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-subscribe-on-signup`,children:`Subscribe new members on signup`}),(0,Z.jsx)(A,{checked:!!e.subscribe_on_signup,id:`newsletter-subscribe-on-signup`,onCheckedChange:e=>n({subscribe_on_signup:e})})]})})]}),(0,Z.jsx)(`div`,{className:`mt-10 mb-5`,children:e.status===`active`?!t&&(0,Z.jsx)(ne,{className:`text-destructive hover:text-destructive`,disabled:Ae.length===1,type:`button`,variant:`ghost`,onClick:()=>void Pe(),children:`Archive newsletter`}):(0,Z.jsx)(ne,{className:`text-green hover:text-green`,type:`button`,variant:`ghost`,onClick:()=>void Pe(),children:`Reactivate newsletter`})})]})},{id:`content`,title:`Content`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(ye,{inputId:`newsletter-header-image`,value:e.header_image||``,onChange:e=>n({header_image:e||null}),onUploadError:Y}),(0,Z.jsxs)(p,{gap:`md`,children:[E&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-icon`,children:`Publication icon`}),(0,Z.jsx)(A,{checked:!!e.show_header_icon,id:`newsletter-show-header-icon`,onCheckedChange:e=>n({show_header_icon:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-title`,children:`Publication title`}),(0,Z.jsx)(A,{checked:!!e.show_header_title,id:`newsletter-show-header-title`,onCheckedChange:e=>n({show_header_title:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-name`,children:`Newsletter name`}),(0,Z.jsx)(A,{checked:!!e.show_header_name,id:`newsletter-show-header-name`,onCheckedChange:e=>n({show_header_name:e})})]})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Title section`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-post-title`,children:`Post title`}),(0,Z.jsx)(A,{checked:!!e.show_post_title_section,id:`newsletter-show-post-title`,onCheckedChange:e=>n({show_post_title_section:e})})]}),e.show_post_title_section&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-excerpt`,children:`Post excerpt`}),(0,Z.jsx)(A,{checked:!!e.show_excerpt,id:`newsletter-show-excerpt`,onCheckedChange:e=>n({show_excerpt:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-feature-image`,children:`Feature image`}),(0,Z.jsx)(A,{checked:!!e.show_feature_image,id:`newsletter-show-feature-image`,onCheckedChange:e=>n({show_feature_image:e})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Footer`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(p,{gap:`lg`,children:[(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-feedback-enabled`,children:`Ask your readers for feedback`}),(0,Z.jsx)(A,{checked:!!e.feedback_enabled,id:`newsletter-feedback-enabled`,onCheckedChange:e=>n({feedback_enabled:e})})]}),Te&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-comment-cta`,children:`Add a link to your comments`}),(0,Z.jsx)(A,{checked:!!e.show_comment_cta,id:`newsletter-show-comment-cta`,onCheckedChange:e=>n({show_comment_cta:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-share-button`,children:`Show share button`}),(0,Z.jsx)(A,{checked:!!e.show_share_button,id:`newsletter-show-share-button`,onCheckedChange:e=>n({show_share_button:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-latest-posts`,children:`Share your latest posts`}),(0,Z.jsx)(A,{checked:!!e.show_latest_posts,id:`newsletter-show-latest-posts`,onCheckedChange:e=>n({show_latest_posts:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-subscription-details`,children:`Show subscription details`}),(0,Z.jsx)(A,{checked:!!e.show_subscription_details,id:`newsletter-show-subscription-details`,onCheckedChange:e=>n({show_subscription_details:e})})]})]}),(0,Z.jsx)(xe,{hint:`Any extra information or legal text`,nodes:`MINIMAL_NODES`,placeholder:` `,title:`Email footer`,value:e.footer_content||``,onChange:e=>n({footer_content:e})})]})]}),(0,Z.jsx)(fe,{className:`mt-8`}),(0,Z.jsxs)(`div`,{className:`my-5 flex w-full items-start`,children:[(0,Z.jsx)(`span`,{children:(0,Z.jsx)(te,{className:`mt-[-1px] mr-2 size-5 text-red`})}),(0,Z.jsx)(F,{className:`gap-8`,children:(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsxs)(R,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-badge`,children:`Promote independent publishing`}),(0,Z.jsx)(se,{children:`Show you're a part of the indie publishing movement with a small badge in the footer`})]}),(0,Z.jsx)(A,{checked:!!e.show_badge,id:`newsletter-show-badge`,onCheckedChange:e=>n({show_badge:e})})]})})]})]})},{id:`design`,title:`Design`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Global`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{hex:`#ffffff`,value:`light`,title:`White`}],title:`Background color`,value:e.background_color||`light`,onChange:e=>n({background_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Heading font`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Heading font`}),(0,Z.jsxs)(oe,{value:e.title_font_category,onValueChange:t=>{let r=e.title_font_weight,i=r;return Me[t].options.find(e=>e.value===r)||(i=Me[t].map?.[r]||`bold`),n({title_font_category:t,title_font_weight:i})},children:[(0,Z.jsx)(M,{"aria-label":`Heading font`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:je.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Heading weight`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Heading weight`}),(0,Z.jsxs)(oe,{value:(()=>{let t=e.title_font_category||`sans_serif`,n=e.title_font_weight,r=Me[t].map,i=r&&r[n]||n;return Ie.find(e=>e.value===i)||Ie[0]})().value,onValueChange:e=>n({title_font_weight:e}),children:[(0,Z.jsx)(M,{"aria-label":`Heading weight`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:Ie.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Body font`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Body font`}),(0,Z.jsxs)(oe,{value:e.body_font_category,onValueChange:e=>n({body_font_category:e}),children:[(0,Z.jsx)(M,{"aria-label":`Body font`,"data-testid":`body-font-select`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:je.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`transparent`,title:`Transparent`,hex:`#00000000`}],title:`Header background color`,value:e.header_background_color||`transparent`,onChange:e=>n({header_background_color:e})})}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Post title color`,value:e.post_title_color,onChange:e=>n({post_title_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Title alignment`}),(0,Z.jsx)($,{label:`Title alignment`,options:[{value:`left`,label:`Left`,icon:(0,Z.jsx)(v,{className:`size-3.5!`}),disabled:!e.show_post_title_section},{value:`center`,label:`Center`,icon:(0,Z.jsx)(y,{className:`size-3.5!`}),disabled:!e.show_post_title_section}],value:e.title_alignment,onValueChange:e=>n({title_alignment:e})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Body`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Section title color`,value:e.section_title_color,onChange:e=>n({section_title_color:e})})}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`accent`,title:`Accent`,hex:T.accent_color},{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`}],title:`Button color`,value:e.button_color,onChange:e=>n({button_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Button style`}),(0,Z.jsx)($,{label:`Button style`,options:[{value:`fill`,label:`Fill`,icon:(0,Z.jsx)(S,{className:`size-3.5!`,fill:`currentColor`})},{value:`outline`,label:`Outline`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})}],value:e.button_style||`fill`,onValueChange:e=>n({button_style:e})})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Button corners`}),(0,Z.jsx)($,{label:`Button corners`,options:[{value:`square`,label:`Squared`,icon:(0,Z.jsx)(w,{className:`size-3.5!`})},{value:`rounded`,label:`Rounded`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})},{value:`pill`,label:`Pill`,icon:(0,Z.jsx)(C,{className:`size-3.5!`})}],value:e.button_corners||`rounded`,onValueChange:e=>n({button_corners:e})})]}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`accent`,title:`Accent`,hex:T.accent_color},{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`}],title:`Link color`,value:e.link_color,onChange:e=>n({link_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Link style`}),(0,Z.jsx)($,{label:`Link style`,options:[{value:`underline`,label:`Underline`,icon:(0,Z.jsx)(re,{className:`size-3.5!`})},{value:`regular`,label:`Regular`,icon:(0,Z.jsx)(x,{className:`size-3.5!`})},{value:`bold`,label:`Bold`,icon:(0,Z.jsx)(ee,{className:`size-3.5!`})}],value:e.link_style||`underline`,onValueChange:e=>n({link_style:e})})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Image corners`}),(0,Z.jsx)($,{label:`Image corners`,options:[{value:`square`,label:`Squared`,icon:(0,Z.jsx)(w,{className:`size-3.5!`})},{value:`rounded`,label:`Rounded`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})}],value:e.image_corners||`square`,onValueChange:e=>n({image_corners:e})})]}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`light`,title:`Light`,hex:`#e0e7eb`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Divider color`,value:e.divider_color||`light`,onChange:e=>n({divider_color:e})})})]})]})]})}];return(0,Z.jsx)(`div`,{className:`flex flex-col`,children:(0,Z.jsx)(`div`,{className:`px-7 pt-0 pb-7`,children:(0,Z.jsxs)(ie,{value:U,variant:`underline`,onValueChange:e=>{le(e)},children:[(0,Z.jsx)(k,{className:`sticky top-0 z-50 bg-surface-elevated-2`,children:Le.map(e=>(0,Z.jsx)(D,{value:e.id,children:e.title},e.id))}),Le.map(e=>(0,Z.jsx)(O,{value:e.id,children:e.contents},e.id))]})})})},Oe=({newsletter:e,onlyOne:t})=>{let{config:n}=q(),{mutateAsync:r}=ue(),{updateRoute:c}=P(),u=me(`automations`)?`emails`:`newsletters`,{formState:d,saveState:f,updateForm:p,setFormState:m,handleSave:h,validate:g,errors:_,clearError:v,okProps:y}=o({initialState:e,savingDelay:500,onSave:async()=>{let{meta:{sent_email_verification:[e]=[]}={}}=await r(d),t;(e&&e===`sender_email`||e&&e===`sender_reply_to`)&&(t=(0,Z.jsx)(`div`,{children:`We‘ve sent a confirmation email to the new address.`})),t&&a.info(t)},onSaveError:i(),onValidate:()=>{let e={};return d.name||(e.name=`A name is required for your newsletter`),d.sender_email&&!Te.default.isEmail(d.sender_email)?e.sender_email=`Enter a valid email address`:d.sender_email&&l(n)&&d.sender_email.split(`@`)[1]!==s(n)&&(e.sender_email=`Email address must end with @${s(n)}`),d.sender_reply_to&&!Te.default.isEmail(d.sender_reply_to)&&![`newsletter`,`support`].includes(d.sender_reply_to)&&(e.sender_reply_to=`Enter a valid email address`),e}}),b=e=>{p(t=>({...t,...e}))};(0,Q.useEffect)(()=>{m(()=>e)},[m,e]);let x=(0,Z.jsx)(we,{newsletter:d}),S=(0,Z.jsx)(De,{clearError:v,errors:_,newsletter:d,onlyOne:t,updateNewsletter:b,validate:g});return(0,Z.jsx)(Se,{buttonsDisabled:y.disabled,cancelLabel:`Close`,dirty:f===`unsaved`,okLabel:y.label||`Save`,okVariant:y.variant,preview:x,previewBgColor:`grey`,previewToolbar:!1,sidebar:S,sidebarPadding:!1,testId:`newsletter-modal`,title:`Newsletter`,onClose:()=>c(u),onOk:async()=>{await h({fakeWhenUnchanged:!0})}})},ke=()=>{let{newsletterId:e}=u(),{data:{newsletters:t,isEnd:n}={},fetchNextPage:r}=de(),i=t?.find(({id:t})=>t===e);return(0,Q.useEffect)(()=>{!i&&!n&&r()},[r,n,i]),i?(0,Z.jsx)(Oe,{newsletter:i,onlyOne:t.length===1}):null};export{ke as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-DAXXjFlN.js";import{t as e}from"./react-Bb3IsNbi.js";import{t}from"./jsx-runtime-DX3WBWVO.js";import{i as n,r}from"./config-DOMQDZGZ.js";import{m as i}from"./dist-B3keLvjj.js";import{D as a}from"./button-eNMKQWXr.js";import{o,r as s,t as c}from"./field-Dihp5p18.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./images-scfkWZiK.js";e();var _=t(),v=({inputId:e=`welcome-email-header-image`,onUploadError:t,value:n,onChange:r})=>{let{mutateAsync:v}=f(),y=async e=>{try{r(g(await v({file:e})))}catch(e){if(t){t(e);return}throw e}};return(0,_.jsxs)(c,{"data-testid":`header-image-field`,children:[(0,_.jsx)(o,{htmlFor:e,children:`Header image`}),(0,_.jsx)(m,{className:`aspect-[2/1] w-full`,children:n?(0,_.jsxs)(u,{children:[(0,_.jsx)(h,{alt:`Header`,src:n}),(0,_.jsx)(l,{children:(0,_.jsx)(d,{"aria-label":`Remove header image`,type:`button`,onClick:()=>r(``),children:(0,_.jsx)(a,{})})})]}):(0,_.jsx)(p,{accept:{"image/*":[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.svg`]},inputId:e,onDropAccepted:e=>e[0]&&void y(e[0]),children:(0,_.jsx)(`span`,{className:`text-control font-medium`,children:`Upload header image`})})}),(0,_.jsxs)(s,{children:[i(1200),`×`,i(600),` recommended. Use a transparent PNG for best results on any background.`]})]})},y=(e,t,i)=>n(t)&&!r(t)&&i?i:e.sender_email||i||``,b=(e,t,r,i)=>e.sender_reply_to===`newsletter`?n(t)?``:y(e,t,i):e.sender_reply_to===`support`?r||i||``:e.sender_reply_to,x=(e,t,n,r)=>b(e,t,n,r)||(e.sender_reply_to===`newsletter`?y(e,t,r)||n||r||``:n||r||``);export{v as i,x as n,y as r,b as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{i as r}from"./pagemenu-B5KKCpbA.js";import{_ as i}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a,t as o}from"./router-provider-B0gZyiGJ.js";import{c as s,h as c,m as l,u}from"./dist-B3keLvjj.js";import{Ut as d,Wt as f,t as p}from"./button-eNMKQWXr.js";import{g as m,n as h,o as g,r as _}from"./chart-BrhA41Zi.js";import{a as v,i as y,o as b,r as ee}from"./trend-badge-6ye93YAW.js";import{n as te,t as x}from"./sort-button-VVeQjjbu.js";import{r as ne,t as re}from"./tabs-D2yWLMp_.js";import{a as S,i as C,n as w,o as T,r as E,s as D,t as O}from"./select-cb0t_TAJ.js";import{n as k}from"./skeleton-Ce9GgUpf.js";import{a as A,n as j,o as M,r as N,t as P}from"./card--VNbfgo3.js";import{t as F}from"./empty-indicator-D9QdpuNX.js";import{a as I,c as L,n as R,r as z,s as B,t as ie}from"./table-Do6iQ83Q.js";import{r as V}from"./newsletters-DhNigJUh.js";import{Cr as ae,J as H,Tr as U,Zn as oe,ci as W,jr as se,si as G,ui as ce,xr as le}from"./index-6MkPdCtr.js";import{i as ue,n as de,r as fe,t as pe}from"./stats-view-BGGmkmgv.js";import{i as me,r as he,u as ge}from"./stats-Rjmk5owg.js";import{a as K,c as _e,i as q,n as J,r as ve}from"./chart-helpers-CfBKt0vT.js";import{n as Y,r as X,t as ye}from"./kpi-tabs-BJItvLYm.js";import{t as be}from"./use-analytics-data-CWCMAESo.js";import{t as xe}from"./get-site-timezone-HgL0jI_F.js";var Z=e(t(),1),Q=n(),Se=({active:e,payload:t})=>{if(!e||!t?.length)return null;let n=t[0].payload,r=typeof n.send_date==`string`?n.send_date:n.send_date.toISOString().split(`T`)[0];return(0,Q.jsxs)(`div`,{className:`max-w-[240px] min-w-[220px] rounded-lg border bg-background px-3 py-2 shadow-lg`,children:[(0,Q.jsxs)(`div`,{className:`mb-2 flex w-full flex-col border-b pb-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm leading-tight font-semibold`,children:n.post_title}),(0,Q.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Sent on `,u(r)]})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Sent`}),(0,Q.jsx)(`div`,{className:`ml-2 w-full text-right font-mono`,children:l(n.sent_to)})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Opens`}),(0,Q.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[l(n.total_opens),` / `]}),c(n.open_rate)]})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Clicks`}),(0,Q.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[l(n.total_clicks),` / `]}),c(n.click_rate)]})]})]})},Ce=({subscribersData:e,avgsData:t,totals:n,isLoading:r,isAvgsLoading:o,initialTab:u=`total-subscribers`})=>{let[d,p]=(0,Z.useState)(u),[x,S]=(0,Z.useState)(!1),{range:C}=H(),w=a(),[T]=i(),E=G(),D=W(),{totalSubscribers:O,avgOpenRate:k,avgClickRate:A}=n,j=(0,Z.useMemo)(()=>{if(!e||e.length===0)return[];let t=[];return t=_e(e,C,`value`,`exact`),t.map(e=>({...e,formattedValue:l(e.value),label:`Total Subscribers`}))},[e,C]),M=(0,Z.useMemo)(()=>ve(C,e||[]),[e,C]),N=(0,Z.useMemo)(()=>{if(!j||j.length<=1)return{direction:`same`,value:`0%`};let e=j[0]?.value??0,t=j[j.length-1]?.value??0,n=`same`;t>e?n=`up`:t<e&&(n=`down`);let r;if(e===0)r=t===0?`0%`:`+100%`;else{let n=(t-e)/e*100,i=Math.round(n*10)/10;r=`${n>=0?`+`:``}${i}%`}return{direction:n,value:r}},[j]);(0,Z.useEffect)(()=>{p(u)},[u]);let P=e=>{p(e);let t=new URLSearchParams(T);t.set(`tab`,e),w(`?${t.toString()}`,{replace:!0})},I={open_rate:{label:`Open rate`}},L=(0,Z.useMemo)(()=>({"total-subscribers":{color:`var(--chart-darkblue)`,datakey:`value`},"avg-open-rate":{color:`var(--chart-blue)`,datakey:`open_rate`},"avg-click-rate":{color:`var(--chart-teal)`,datakey:`click_rate`}}),[]),{barDomain:R,barTicks:z}=(0,Z.useMemo)(()=>{if(!t||t.length===0||d===`total-subscribers`)return{barDomain:[0,1],barTicks:[0,1]};let e=L[d]?.datakey;if(!e)return{barDomain:[0,1],barTicks:[0,1]};let n=t.map(t=>t[e]).filter(e=>typeof e==`number`);if(n.length===0)return{barDomain:[0,1],barTicks:[0,1]};let r=d===`avg-open-rate`?k:A,i=Math.max(Math.max(...n),r),a;return a=i<.01?.01:i<.1?(Math.floor(i*100)+1)/100:(Math.floor(i*10)+1)/10,{barDomain:[0,a],barTicks:[0,a]}},[t,d,L,k,A]);if(r)return(0,Q.jsx)(`div`,{className:`-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center`,children:(0,Q.jsx)(oe,{})});let B=`grid-cols-3`;(!E||!D)&&(B=`grid-cols-2`),!E&&!D&&(B=`grid-cols-1`);let ie=d===`avg-open-rate`&&k>R[0]&&k<R[1]||d===`avg-click-rate`&&A>R[0]&&A<R[1],V=d===`avg-open-rate`?k:A;return(0,Q.jsxs)(re,{defaultValue:u,variant:`kpis`,children:[(0,Q.jsxs)(ne,{className:`-mx-6 hidden grid-cols-3 md:visible! md:grid! ${B}`,children:[(0,Q.jsx)(Y,{className:`${!D&&!E&&`cursor-auto after:hidden`}`,value:`total-subscribers`,onClick:()=>{P(`total-subscribers`)},children:(0,Q.jsx)(X,{color:L[`total-subscribers`].color,"data-testid":`total-subscribers-value`,diffDirection:N.direction,diffValue:N.value,label:`Total subscribers`,value:l(O)})}),D&&(0,Q.jsx)(Y,{value:`avg-open-rate`,onClick:()=>{P(`avg-open-rate`)},children:(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-open-rate`].color,label:`Avg. open rate`,value:c(k)})}),E&&(0,Q.jsx)(Y,{value:`avg-click-rate`,onClick:()=>{P(`avg-click-rate`)},children:(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-click-rate`].color,label:`Avg. click rate`,value:c(A)})})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(se,{className:`md:hidden`,asChild:!0,children:(0,Q.jsxs)(ye,{children:[d===`total-subscribers`&&(0,Q.jsx)(X,{color:L[`total-subscribers`].color,label:`Total subscribers`,value:l(O)}),d===`avg-open-rate`&&D&&(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-open-rate`].color,label:`Avg. open rate`,value:c(k)}),d===`avg-click-rate`&&E&&(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-click-rate`].color,label:`Avg. click rate`,value:c(A)})]})}),(0,Q.jsxs)(ae,{align:`end`,className:`w-56`,children:[(0,Q.jsx)(U,{onClick:()=>P(`total-subscribers`),children:`Total subscribers`}),D&&(0,Q.jsx)(U,{onClick:()=>P(`avg-open-rate`),children:`Avg. open rate`}),E&&(0,Q.jsx)(U,{onClick:()=>P(`avg-click-rate`),children:`Avg. click rate`})]})]}),(0,Q.jsxs)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:[d===`total-subscribers`&&(0,Q.jsx)(ee,{className:`-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:L[`total-subscribers`].color,data:j,id:`mrr`,range:M}),(d===`avg-open-rate`&&D||d===`avg-click-rate`&&E)&&(0,Q.jsx)(Q.Fragment,{children:o?(0,Q.jsx)(`div`,{className:`h-[320px] w-full items-center justify-center`,children:(0,Q.jsx)(oe,{})}):t&&t.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(h,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]`,config:I,children:(0,Q.jsxs)(te,{className:x?`cursor-pointer!`:``,data:t,margin:{top:20},onClick:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;t&&w(`/posts/analytics/${t}`)},onMouseLeave:()=>S(!1),onMouseMove:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;S(!!t)},children:[(0,Q.jsx)(`defs`,{children:(0,Q.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,Q.jsx)(`stop`,{offset:`0%`,stopColor:L[d].color,stopOpacity:.8}),(0,Q.jsx)(`stop`,{offset:`100%`,stopColor:L[d].color,stopOpacity:.6})]})}),(0,Q.jsx)(b,{horizontal:!0,stroke:`var(--border)`,vertical:!1}),(0,Q.jsx)(v,{axisLine:{stroke:`var(--border)`,strokeWidth:1},dataKey:`post_id`,interval:0,stroke:`var(--border)`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,Q.jsx)(y,{axisLine:!1,domain:R,tickFormatter:e=>c(e),tickLine:!1,ticks:z,width:s(z,e=>c(e))}),(0,Q.jsx)(_,{content:(0,Q.jsx)(Se,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ie&&(0,Q.jsx)(g,{label:{value:`${c(V)}`,position:`left`,offset:8,fill:`var(--muted-foreground)`},opacity:.5,stroke:`var(--muted-foreground)`,strokeDasharray:`4 4`,y:V}),(0,Q.jsx)(m,{activeBar:{fillOpacity:1},dataKey:L[d].datakey,fill:`url(#barGradient)`,fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),(0,Q.jsxs)(`div`,{className:`-mt-4 text-center text-sm text-muted-foreground`,children:[`Newsletters `,d===`avg-open-rate`?`opens`:`clicks`,` in this period`]})]}):(0,Q.jsx)(F,{className:`size-full py-20`,title:`No newsletters ${q(C)}`,children:(0,Q.jsx)(f,{strokeWidth:1.5})})})]})]})},we=({newsletters:e})=>{let{selectedNewsletterId:t,setSelectedNewsletterId:n}=H(),r=(0,Z.useMemo)(()=>e?.filter(e=>e.status===`active`)||[],[e]);return(0,Z.useEffect)(()=>{if(r.length>0&&!t){let e=r.find(e=>e.sort_order===0);n(e?e.id:r[0].id)}},[r,t,n]),r.length<=1?null:(0,Q.jsxs)(O,{value:t||``,onValueChange:e=>{n(e)},children:[(0,Q.jsxs)(T,{className:`w-auto`,children:[(0,Q.jsx)(d,{className:`mr-2`,size:16,strokeWidth:1.5}),(0,Q.jsx)(D,{placeholder:`Select a newsletter`})]}),(0,Q.jsx)(w,{align:`end`,children:(0,Q.jsxs)(E,{children:[(0,Q.jsx)(S,{children:`Newsletters`}),r.map(e=>(0,Q.jsx)(C,{value:e.id,children:e.name},e.id))]})})]})},Te=(e,t,n=!0)=>{let r=e??30,{startDate:i,endDate:a}=(0,Z.useMemo)(()=>K(r),[r]),o=ge({searchParams:(0,Z.useMemo)(()=>{let e={date_from:J(i),date_to:J(a)};return t&&(e.newsletter_id=t),e},[i,a,t]),enabled:n});return n?o:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:o.refetch}},Ee=(e,t,n,r=!0)=>{let i=e??30,a=t??`date desc`,{startDate:o,endDate:s}=(0,Z.useMemo)(()=>K(i),[i]),c=he({searchParams:(0,Z.useMemo)(()=>{let e={date_from:J(o),date_to:J(s),order:a};return n&&(e.newsletter_id=n),e},[o,s,a,n]),enabled:r});return r?c:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:c.refetch}},De=(e,t=[],n=!0)=>{let r=me({searchParams:(0,Z.useMemo)(()=>{let n={};return e&&(n.newsletter_id=e),t.length>0&&(n.post_ids=t.join(`,`)),n},[e,t]),enabled:n});return n?r:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:r.refetch}},Oe=(e,t,n,r=!0)=>{let i=Ee(e,t,n,r),a=(0,Z.useMemo)(()=>i.data?.stats?i.data.stats.map(e=>e.post_id):[],[i.data]),o=De(n,a,r&&a.length>0);return{data:(0,Z.useMemo)(()=>{if(!i.data?.stats)return;let e=i.data.stats,t=o.data?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...i.data,stats:r}},[i.data,o.data]),isLoading:i.isLoading,isClicksLoading:o.isLoading,error:i.error||o.error,isError:i.isError||o.isError,refetch:()=>{i.refetch(),o.refetch()}}},ke=Z.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})=>{let i=a(),{settings:o}=be(),s=xe(o),{data:d,isLoading:m,isClicksLoading:h}=Oe(e,r,t||void 0,!!n),g=G(),_=W(),v=(0,Z.useMemo)(()=>d?.stats||[],[d]),y=_&&g?5:_||g?4:3,b=(0,Z.useMemo)(()=>(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(L,{className:`last:border-none [&>td]:py-2.5`,children:(0,Q.jsx)(z,{className:`font-medium`,colSpan:y,children:(0,Q.jsx)(k,{className:`mt-5`})})})}),[y]),ee=(0,Z.useMemo)(()=>v.length>0?(0,Q.jsx)(Q.Fragment,{children:v.map(e=>(0,Q.jsxs)(L,{className:`last:border-none [&>td]:py-2.5`,children:[(0,Q.jsx)(z,{className:`font-medium`,children:(0,Q.jsx)(`div`,{className:`group/link inline-flex items-center gap-2`,children:e.post_id?(0,Q.jsx)(p,{className:`h-auto p-0 text-left whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:()=>{i(`/posts/analytics/${e.post_id}/`)},children:e.post_title}):(0,Q.jsx)(Q.Fragment,{children:e.post_title})})}),(0,Q.jsx)(z,{className:`text-sm whitespace-nowrap`,children:u(e.send_date,s)}),(0,Q.jsx)(z,{className:`text-right font-mono text-sm`,children:l(e.sent_to)}),_&&(0,Q.jsxs)(z,{className:`text-right font-mono text-sm`,children:[(0,Q.jsx)(`span`,{className:`group-hover:hidden`,children:c(e.open_rate)}),(0,Q.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:l(e.total_opens)})]}),g&&(0,Q.jsx)(z,{className:`text-right font-mono text-sm`,children:h?(0,Q.jsx)(`span`,{className:`inline-block h-4 w-8 animate-pulse rounded bg-gray-200`}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`group-hover:hidden`,children:c(e.click_rate)}),(0,Q.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:l(e.total_clicks)})]})})]},e.post_id))}):(0,Q.jsx)(L,{className:`border-none hover:bg-transparent`,children:(0,Q.jsx)(z,{className:`text-center group-hover:bg-transparent!`,colSpan:y,children:(0,Q.jsx)(F,{className:`size-full py-20`,title:`No newsletters ${q(e)}`,children:(0,Q.jsx)(f,{strokeWidth:1.5})})})}),[v,h,i,g,_,e,s]);return m||!d?b:ee});ke.displayName=`NewsletterTableRows`;var Ae=Z.memo(({sortBy:e,setSortBy:t,range:n})=>{let r=(0,Z.useMemo)(()=>(0,Q.jsxs)(A,{children:[(0,Q.jsx)(M,{children:`Top newsletters`}),(0,Q.jsxs)(N,{children:[` Your best performing newsletters `,q(n)]})]}),[n]),i=G(),a=W();return(0,Q.jsx)(B,{children:(0,Q.jsxs)(L,{children:[(0,Q.jsx)(I,{className:`min-w-[320px]`,variant:`cardhead`,children:r}),(0,Q.jsx)(I,{className:`w-[65px]`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`date desc`,children:`Date`})}),(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`sent_to desc`,children:`Sent`})}),a&&(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`open_rate desc`,children:`Opens`})}),i&&(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`click_rate desc`,children:`Clicks`})})]})})});Ae.displayName=`NewsletterTableHeader`;var $=Z.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n})=>{let[r,i]=(0,Z.useState)(`open_rate desc`);return(0,Q.jsx)(P,{className:`w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]`,"data-testid":`top-newsletters-card`,children:(0,Q.jsx)(j,{children:(0,Q.jsxs)(ie,{children:[(0,Q.jsx)(Ae,{range:e,setSortBy:i,sortBy:r}),(0,Q.jsx)(R,{children:(0,Q.jsx)(ke,{range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})})]})})})});$.displayName=`TopNewslettersTable`;var je=()=>{let{range:e,selectedNewsletterId:t}=H(),[n]=i(),a=ce(),s=n.get(`tab`)||`total-subscribers`,{data:c,isLoading:l}=V({searchParams:{limit:`50`}}),u=!l&&c&&c.newsletters.length>0&&!!t,{data:d,isLoading:f}=Te(e,t||void 0,u||!1),{data:p,isLoading:m,isClicksLoading:h}=Oe(e,`date asc`,t||void 0,u||!1),g=(0,Z.useMemo)(()=>!c?.newsletters||!t?null:c.newsletters.find(e=>e.id===t)||null,[c,t]),_=(0,Z.useMemo)(()=>{let e=g?.count?.active_members||d?.stats?.[0]?.total||0,t=0,n=0;if(p?.stats&&p.stats.length>0){let e=p.stats,r=e.reduce((e,t)=>e+(t.open_rate||0),0),i=e.reduce((e,t)=>e+(t.click_rate||0),0);t=r/e.length,n=i/e.length}return{totalSubscribers:e,avgOpenRate:t,avgClickRate:n}},[g,d,p]),v=(0,Z.useMemo)(()=>{if(!d?.stats?.[0]?.values||d.stats[0].values.length===0){let{startDate:t,endDate:n}=K(e),r=[],i=t.clone().toDate(),a=n.toDate();for(;i<=a;)r.push({date:i.toISOString().split(`T`)[0],value:0}),i.setDate(i.getDate()+1);return r}let t=d.stats[0].values;if(t.length===1){let n=t[0],r=new Date,i=e,a=new Date(r.getTime()-i*24*60*60*1e3);return[{...n,date:a.toISOString().split(`T`)[0]},{...n,date:r.toISOString().split(`T`)[0]}]}return t},[d,e]),y=(0,Z.useMemo)(()=>p?.stats?p.stats.map(e=>({post_id:e.post_id,post_title:e.post_title,send_date:e.send_date,sent_to:e.sent_to,total_opens:e.total_opens,open_rate:e.open_rate,total_clicks:e.total_clicks||0,click_rate:e.click_rate||0})):[],[p]),b=f||h||m;return a===!1?(0,Q.jsx)(o,{to:`/analytics`}):(0,Q.jsxs)(de,{children:[(0,Q.jsx)(fe,{children:(0,Q.jsxs)(r,{children:[(0,Q.jsx)(we,{newsletters:c?.newsletters}),(0,Q.jsx)(ue,{})]})}),(0,Q.jsx)(pe,{isLoading:!1,loadingComponent:(0,Q.jsx)(Q.Fragment,{}),children:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(P,{"data-testid":`newsletters-card`,children:(0,Q.jsx)(j,{children:(0,Q.jsx)(Ce,{avgsData:y,initialTab:s,isAvgsLoading:!1,isLoading:b,subscribersData:v,totals:_})})}),(0,Q.jsx)($,{range:e,selectedNewsletterId:t,shouldFetchStats:!!u})]})})]})};export{je as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./hooks-CuEZV2-q.js";import{n,r}from"./update-queries-C4CnvJaW.js";var i=`NewslettersResponseType`,a=i,o=t({dataType:i,path:`/newsletters/`,defaultSearchParams:{include:`count.active_members,count.posts`,limit:`50`},defaultNextPageParams:(e,t)=>({...t,page:(e.meta?.pagination.next||1).toString()}),returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.newsletters),r=t[t.length-1].meta;return{newsletters:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),s=e({method:`POST`,path:()=>`/newsletters/`,body:({opt_in_existing:e,...t})=>({newsletters:[t]}),searchParams:e=>({opt_in_existing:e.opt_in_existing.toString(),include:`count.active_members,count.posts`}),updateQueries:{dataType:i,emberUpdateType:`createOrUpdate`,update:n(`newsletters`)}}),c=e({method:`PUT`,path:e=>`/newsletters/${e.id}/`,body:e=>({newsletters:[e]}),defaultSearchParams:{include:`count.active_members,count.posts`},updateQueries:{dataType:i,emberUpdateType:`createOrUpdate`,update:r(`newsletters`)}}),l=e({method:`PUT`,path:()=>`/newsletters/verifications/`,body:({token:e})=>({token:e}),defaultSearchParams:{include:`count.active_members,count.posts`},updateQueries:{dataType:i,emberUpdateType:`createOrUpdate`,update:r(`newsletters`)}});export{l as a,c as i,s as n,o as r,a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{h as r}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{s as i}from"./router-provider-B0gZyiGJ.js";import{hn as a}from"./button-eNMKQWXr.js";import{t as o}from"./skeleton-Ce9GgUpf.js";import{t as s}from"./use-navigate-with-base-path-BHPA228f.js";import{Dn as c,Et as l,Gt as u,It as d,Mt as f,Nt as p,Qn as m,Tn as h,ht as g,mt as _,pt as v}from"./index-6MkPdCtr.js";import{i as y,n as b,r as x,t as S}from"./use-reply-chain-data-ns0caK8k.js";var C=e(t(),1),w=n(),T=()=>(0,w.jsx)(`div`,{className:`h-px w-full bg-gray-200 dark:bg-gray-950`}),E=()=>{let{postId:e}=r(),{canGoBack:t}=i(),[n,E]=(0,C.useState)(new Set),[D,O]=(0,C.useState)(new Set),[k,A]=(0,C.useState)(new Set),[j,M]=(0,C.useState)(!1),N=(0,C.useRef)(null),P=(0,C.useRef)(null),F=(0,C.useRef)(null),I=(0,C.useRef)(null),L=s(),{threadParents:R,post:z,processedReplies:B,isLoading:V,loadMoreChildren:H,loadMoreChildReplies:U,hasMoreChildren:W,hasMoreChildReplies:G}=S(decodeURIComponent(e??``),{includeAncestors:!0}),K=z?.object,q=K?.replyCount??0,[J,Y]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{P.current&&R.length>0&&!J&&(P.current.scrollIntoView({behavior:`instant`,block:`start`}),Y(!0))},[R,J]),(0,C.useEffect)(()=>{F.current&&F.current.disconnect();let e=document.querySelector(`[data-scrollable-container]`);if(e)return F.current=new IntersectionObserver(async e=>{if(e[0].isIntersecting&&W&&!j){M(!0);try{await H()}catch(e){console.error(`Failed to load more top-level replies:`,e)}finally{M(!1)}}},{root:e,rootMargin:`200px`}),I.current&&F.current.observe(I.current),()=>{F.current&&F.current.disconnect()}},[W,j,H]),V)return(0,w.jsx)(g,{children:(0,w.jsxs)(`div`,{className:`mx-auto flex max-w-[620px] flex-col items-center gap-3 pt-9 lg:px-8`,children:[(0,w.jsxs)(`div`,{className:`flex w-full items-center gap-3`,children:[(0,w.jsx)(o,{className:`size-10 rounded-full`}),(0,w.jsxs)(`div`,{className:`grow pt-1`,children:[(0,w.jsx)(o,{className:`w-24`}),(0,w.jsx)(o,{className:`w-3/5`})]})]}),(0,w.jsxs)(`div`,{className:`mb-7 w-full`,children:[(0,w.jsx)(o,{}),(0,w.jsx)(o,{className:`w-4/5`}),(0,w.jsx)(o,{})]}),(0,w.jsx)(T,{}),(0,w.jsxs)(`div`,{className:`flex w-full items-center gap-3 py-3`,children:[(0,w.jsx)(o,{className:`block size-full`,containerClassName:`size-10 rounded-full overflow-hidden`}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(o,{className:`w-52`}),(0,w.jsx)(o,{className:`w-28`})]})]}),(0,w.jsx)(T,{})]})});if(!z)return(0,w.jsx)(g,{children:(0,w.jsx)(`div`,{className:`mx-auto mt-4 flex w-full max-w-[620px] flex-col items-center`,children:(0,w.jsxs)(_,{children:[(0,w.jsx)(v,{children:(0,w.jsx)(a,{})}),(0,w.jsx)(`div`,{children:`Error loading note.`})]})})});function X(){}function Z(e){E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),O(t=>{let n=new Set(t);return n.add(e),n})),n})}async function Q(e,t){if(!k.has(e)){A(t=>new Set(t).add(e));try{U&&await U(t)}catch(e){console.error(`Failed to load more replies for chain:`,e)}finally{A(t=>{let n=new Set(t);return n.delete(e),n})}}}return(0,w.jsx)(g,{children:(0,w.jsx)(`div`,{className:`mx-auto flex h-full max-w-[620px] flex-col`,children:(0,w.jsx)(`div`,{className:`relative flex-1`,children:(0,w.jsx)(`div`,{className:`grow overflow-y-auto`,children:(0,w.jsxs)(`div`,{className:`mx-auto px-8 pt-5 pb-10 max-lg:px-0`,children:[!R.length&&(0,w.jsx)(d,{actor:z.actor,isCurrentUser:z.object.authored,children:(0,w.jsxs)(`div`,{className:`col-[2/3] mx-auto flex w-full cursor-pointer items-center gap-3 ${t?`pt-10 max-md:pt-5`:`pt-5`}`,children:[(0,w.jsx)(`div`,{className:`relative z-10`,children:(0,w.jsx)(u,{author:z.actor,showFollowButton:!z.object.authored&&!z.actor.followedByMe})}),(0,w.jsxs)(`div`,{className:`relative z-10 flex w-full min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]`,onClick:e=>{p(z.actor,L,e)},children:[(0,w.jsx)(`div`,{className:`flex w-full`,children:(0,w.jsx)(`span`,{className:`min-w-0 truncate font-semibold whitespace-nowrap hover:underline`,children:z.actor.name})}),(0,w.jsxs)(`div`,{className:`flex w-full`,children:[(0,w.jsx)(`span`,{className:`truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-["·"]`,children:c(z.actor)}),(0,w.jsx)(`span`,{className:`text-gray-700`,children:f(K,!K.authored)})]})]})]})}),R.map(e=>e.object.type===`Tombstone`?(0,w.jsx)(x,{last:!1}):(0,w.jsx)(l,{actor:e.actor,allowDelete:!1,commentCount:e.object.replyCount??0,last:!1,layout:`reply`,likeCount:e.object.likeCount??0,object:e.object,repostCount:e.object.repostCount??0,type:`Note`,onClick:()=>{L(`/${e.object.type===`Article`?`reader`:`notes`}/${encodeURIComponent(e.object.id)}`)}})),(0,w.jsx)(`div`,{ref:P,className:`${t?`scroll-mt-[12px]`:`scroll-mt-[124px]`}`,children:(0,w.jsxs)(`div`,{className:`${R.length>0&&`min-h-[calc(100vh-52px)]`}`,children:[(0,w.jsx)(l,{actor:z.actor,allowDelete:!1,commentCount:q,last:!0,layout:`modal`,likeCount:K.likeCount??0,object:K,repostCount:K.repostCount,showHeader:R.length>0,showStats:!0,type:`Note`}),(0,w.jsx)(y,{object:K}),(0,w.jsx)(T,{}),(0,w.jsxs)(`div`,{ref:N,children:[B.map((e,t)=>{let r=t===B.length-1,i=e.mainReply.id,a=n.has(i),o=D.has(i),s=k.has(i),c=e.chain.length>0;return(0,w.jsxs)(C.Fragment,{children:[(0,w.jsx)(l,{actor:e.mainReply.actor,allowDelete:e.mainReply.object.authored,commentCount:e.mainReply.object.replyCount??0,isChainParent:c,isPending:h(e.mainReply.id),last:!c,layout:`reply`,likeCount:e.mainReply.object.likeCount??0,object:e.mainReply.object,parentId:K.id,repostCount:e.mainReply.object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(e.mainReply.id)}`)},onDelete:X}),c&&e.chain[0]&&(0,w.jsx)(l,{actor:e.chain[0].actor,allowDelete:e.chain[0].object.authored,commentCount:e.chain[0].object.replyCount??0,isChainContinuation:!0,isPending:h(e.chain[0].id),last:e.chain.length===1,layout:`reply`,likeCount:e.chain[0].object.likeCount??0,object:e.chain[0].object,parentId:K.id,repostCount:e.chain[0].object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(e.chain[0].id)}`)},onDelete:X},e.chain[0].id),c&&a&&e.chain.slice(1).map((n,r)=>{let i=r===e.chain.slice(1).length-1,a=G&&G(t),o=i&&a;return(0,w.jsx)(l,{actor:n.actor,allowDelete:n.object.authored,commentCount:n.object.replyCount??0,isChainContinuation:!0,isPending:h(n.id),last:i&&!o,layout:`reply`,likeCount:n.object.likeCount??0,object:n.object,parentId:K.id,repostCount:n.object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(n.id)}`)},onDelete:X},n.id)}),c&&e.chain.length>1&&!a&&(0,w.jsx)(b,{variant:`expand`,onClick:()=>Z(i)}),c&&a&&o&&G&&G(t)&&(0,w.jsx)(b,{loading:s,variant:`loadMore`,onClick:()=>Q(i,t)}),!r&&(0,w.jsx)(T,{})]},e.mainReply.id)}),j&&(0,w.jsx)(`div`,{className:`flex flex-col items-center justify-center text-center`,children:(0,w.jsx)(m,{size:`md`})})]}),W&&(0,w.jsx)(`div`,{ref:I,className:`h-1`})]})})]})})})})})};export{E as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{m as r}from"./dist-B3keLvjj.js";import{$n as i,_r as a,ct as o,h as s,mn as c,ot as l,t as u,xr as d}from"./button-eNMKQWXr.js";import{t as f}from"./skeleton-Ce9GgUpf.js";import{t as p}from"./use-navigate-with-base-path-BHPA228f.js";import{At as m,En as h,Ft as g,Gt as _,Ht as v,It as y,Mt as b,Nt as x,Ot as S,Qn as C,Tt as w,Ut as T,Wt as E,ft as D,ht as O,jt as k,ln as A,mt as j,pt as M}from"./index-6MkPdCtr.js";import"./layout-Bjv2Ll-5.js";var N=e(t(),1),P=n(),F=({notificationType:e,size:t=`lg`,className:n})=>{let r,i=``,a=`white`,u=t===`sm`?13:20,f=t===`sm`?2:1.5;switch(e){case`follow`:r=(0,P.jsx)(s,{className:`-mt-0.5 -mr-0.5 ${t===`sm`&&`size-[11px]`}`,color:a,size:u,strokeWidth:f}),i=`bg-blue-600`;break;case`like`:r=(0,P.jsx)(c,{className:`${t===`sm`?`size-[11px]`:`mt-px size-5`}`,color:a,strokeWidth:f}),i=`bg-pink-600`;break;case`reply`:r=(0,P.jsx)(l,{className:`mr-px mb-px`,color:a,size:u,strokeWidth:f}),i=`bg-purple-600`;break;case`repost`:r=(0,P.jsx)(o,{color:a,size:u,strokeWidth:f}),i=`bg-green-500`;break;case`mention`:r=(0,P.jsx)(d,{className:`${t===`sm`?`size-[12px]`:`size-5`}`,color:a,size:u,strokeWidth:f}),i=`bg-orange-500`;break}return(0,P.jsx)(`div`,{className:`flex ${t===`sm`?`size-5`:`size-9`} items-center justify-center rounded-full ${i} ${n&&n}`,children:r})},I=N.createContext(void 0),L=({isGrouped:e,centerAlign:t,children:n,onClick:r,url:i,className:a})=>(0,P.jsx)(I.Provider,{value:{onClick:r,url:i},children:(0,P.jsx)(`div`,{className:`group relative -mx-4 -my-px ${e?`grid`:`flex`} ${t?`items-center`:`items-start`} break-anywhere cursor-pointer grid-cols-[auto_1fr] gap-x-4 gap-y-2.5 rounded-lg px-4 py-5 text-left hover:bg-gray-100 ${a}`,role:`button`,onClick:r,children:n})});L.Icon=({size:e=`lg`,type:t})=>(0,P.jsx)(`div`,{className:`col-start-1 row-start-1`,children:(0,P.jsx)(F,{notificationType:t,size:e})}),L.Avatars=({children:e})=>(0,P.jsx)(`div`,{className:`col-start-2 row-start-1 flex gap-2`,children:e}),L.Content=({children:e})=>(0,P.jsx)(`div`,{className:`col-start-2 row-start-2 -mt-0.5 grow overflow-hidden`,children:e});var R=()=>(0,P.jsx)(`div`,{className:`h-px w-full bg-gray-200 dark:bg-gray-950`});function z(e){let t=1440*60*1e3,n=new Date(e).getTime();return(Math.floor(n/t)*t).toString()}function B(e){let t={},n=null,r=0;return e.forEach(e=>{e.type!==n&&(r+=1,n=e.type);let i=``,a=`_${z(e.createdAt)}`,o=`_seq${r}`;switch(e.type){case`like`:e.post?.id&&(i=`like_${e.post.id}${a}${o}`);break;case`reply`:i=`reply_${e.id}`;break;case`repost`:e.post?.id&&(i=`repost_${e.post.id}${a}${o}`);break;case`follow`:i=`follow_${a}${o}`;break;case`mention`:i=`mention_${e.id}`;break}t[i]||(t[i]={id:e.id,type:e.type,actors:[],post:e.post,inReplyTo:e.inReplyTo,createdAt:e.createdAt}),t[i].actors.find(t=>t.id===e.actor.id)||t[i].actors.push(e.actor)}),Object.values(t)}var V=({group:e})=>{let[t,...n]=e.actors,i=n.length>0,a=n.length,o=p(),s=(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(y,{actor:t,align:`center`,isCurrentUser:!1,children:(0,P.jsx)(`span`,{className:`cursor-pointer font-semibold hover:underline text-black dark:text-white`,onClick:e=>{e?.stopPropagation(),t.handle&&x(t.handle,o)},children:t.name})}),i&&` and ${r(a)} ${a>1?`others`:`other`}`]});switch(e.type){case`follow`:return(0,P.jsxs)(P.Fragment,{children:[s,` followed you`]});case`like`:return(0,P.jsxs)(P.Fragment,{children:[s,` liked your `,e.post?.type===`article`?`post`:`note`]});case`repost`:return(0,P.jsxs)(P.Fragment,{children:[s,` reposted your `,e.post?.type===`article`?`post`:`note`]});case`reply`:if(e.inReplyTo&&typeof e.inReplyTo!=`string`)return s;break;case`mention`:return s}return(0,P.jsx)(P.Fragment,{})},H=({content:e,className:t,stripTags:n=[]})=>{let r=(0,N.useRef)(null),i=p();return(0,N.useEffect)(()=>{let e=r.current;if(!e)return;let t=e=>{let t=e.target.closest(`a[data-profile]`);if(t){let n=t.getAttribute(`data-profile`)?.trim();/^@([\w.-]+)@([\w-]+\.[\w.-]+[a-zA-Z])$/.test(n||``)&&n&&(e.preventDefault(),e.stopPropagation(),x(n,i))}};return e.addEventListener(`click`,t),()=>{e.removeEventListener(`click`,t)}},[i,e]),(0,P.jsx)(`div`,{dangerouslySetInnerHTML:{__html:v(T(e||``,n))},ref:r,className:t})},U=({post:e,variant:t})=>{let n=e?.attachments??[],r=n.length>0,{contentWarning:i,shouldHideContentWarning:a,shouldHideSensitiveMedia:o,revealSensitiveMedia:s,revealContentWarning:c}=k({contentWarning:e?.contentWarning,sensitive:e?.sensitive,hasMedia:r,resetKey:e?.id});return e?a&&i?t===`inline`?(0,P.jsxs)(`button`,{className:`mt-0.5 block max-w-full truncate text-left text-sm text-gray-700 hover:text-black dark:text-gray-600 dark:hover:text-white`,type:`button`,onClick:c,children:[(0,P.jsx)(`span`,{className:`font-semibold`,children:`Content warning:`}),` `,i,` `,(0,P.jsx)(`span`,{className:`font-semibold`,children:`Show`})]}):(0,P.jsx)(w,{className:`mt-2.5`,label:i,size:`compact`,onReveal:c}):t===`inline`?(0,P.jsxs)(`div`,{className:`ap-note-content mt-0.5 line-clamp-1 text-sm text-pretty text-gray-700 dark:text-gray-600`,children:[e.type===`article`&&e.title&&(0,P.jsxs)(P.Fragment,{children:[e.title,` — `]}),(0,P.jsx)(`span`,{dangerouslySetInnerHTML:{__html:v(T(e.content||``))}})]}):(0,P.jsxs)(`div`,{className:`mt-2.5 rounded-md bg-gray-100 px-5 py-[14px] group-hover:bg-gray-200 dark:bg-gray-950/30 group-hover:dark:bg-black/40`,children:[(0,P.jsx)(H,{className:`ap-note-content text-pretty`,content:e.content||``,stripTags:[`a`]}),r&&(0,P.jsxs)(`div`,{className:`relative mt-2.5 aspect-square w-[calc(20%-6.4px)] min-w-[96px] overflow-hidden rounded-md [&_img]:absolute [&_img]:inset-0 [&_img]:mt-0 [&_img]:size-full [&_img]:max-h-none [&_img]:max-w-none [&_img]:object-cover [&>.attachment-gallery]:absolute [&>.attachment-gallery]:inset-0 [&>.attachment-gallery]:mt-0 [&>.attachment-gallery]:grid [&>.attachment-gallery]:size-full`,children:[m({type:`Note`,attachment:n}),o&&(0,P.jsx)(S,{showLabel:!1,size:`compact`,isLayered:!0,onReveal:s})]})]}):null},W=()=>{let[e,t]=N.useState({}),n=p(),o=e=>{t(t=>({...t,[e]:!t[e]}))},s=()=>{},{data:c,error:l,fetchNextPage:d,hasNextPage:m,isFetchingNextPage:v,isLoading:y}=A(`index`),S=c?.pages.flatMap(e=>B(e.notifications))??Array(10).fill({actors:[{}]}),w=(0,N.useRef)(null),T=(0,N.useRef)(null);(0,N.useEffect)(()=>(w.current&&w.current.disconnect(),w.current=new IntersectionObserver(e=>{e[0].isIntersecting&&m&&!v&&d()}),T.current&&w.current.observe(T.current),()=>{w.current&&w.current.disconnect()}),[m,v,d]);let k=(e,t)=>{switch(e.type){case`like`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`reply`:e.post&&e.inReplyTo&&n(`/notes/${encodeURIComponent(e.post.id)}`);break;case`repost`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`follow`:e.actors.length>1?o(e.id||`${e.type}_${t}`):e.actors[0]?.handle&&x(e.actors[0].handle,n);break;case`mention`:e.post&&n(`/notes/${encodeURIComponent(e.post.id)}`);break}};return l&&h(l)?(0,P.jsx)(D,{errorCode:l.code,statusCode:l.statusCode}):(0,P.jsx)(O,{children:(0,P.jsxs)(`div`,{className:`z-0 flex w-full flex-col items-center`,children:[y===!1&&S.length===0&&(0,P.jsxs)(j,{children:[(0,P.jsx)(M,{children:(0,P.jsx)(a,{})}),`Quiet for now, but not for long! When someone likes, boosts, or replies to you, you'll find it here.`]}),S.length>0&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`my-8 flex w-full max-w-[620px] flex-col max-md:mt-5`,children:S.map((t,a)=>(0,P.jsxs)(N.Fragment,{children:[(0,P.jsxs)(L,{centerAlign:t.actors.length<2&&t.type===`follow`,className:`hover:bg-gray-100 dark:hover:bg-gray-950`,isGrouped:t.actors.length>1,onClick:()=>k(t,a),children:[y?(0,P.jsx)(f,{className:`rounded-full`,containerClassName:`flex h-10 w-10`}):t.actors.length>1?(0,P.jsx)(L.Icon,{type:t.type}):(0,P.jsxs)(`div`,{className:`relative`,children:[(0,P.jsx)(_,{author:{icon:{url:t.actors[0].avatarUrl||``},name:t.actors[0].name,handle:t.actors[0].handle},size:`notification`},t.actors[0].id),(0,P.jsx)(F,{className:`absolute -right-1 -bottom-1 z-10 border-2 border-white dark:border-black`,notificationType:t.type,size:`sm`})]}),t.actors.length>1&&(0,P.jsx)(L.Avatars,{children:(0,P.jsxs)(`div`,{className:`flex w-full flex-col`,children:[(0,P.jsxs)(`div`,{className:`relative flex w-fit items-center pl-2`,children:[!e[t.id||`${t.type}_${a}`]&&t.actors.slice(0,5).map(e=>(0,P.jsx)(_,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},className:`-ml-2 bg-[#F3F3F3]! outline-2 outline-white group-hover:bg-[#EDEEF0]! group-hover:outline-gray-100 dark:outline-black group-hover:dark:outline-gray-950`,size:`notification`},e.id)),t.actors.length>5&&!e[t.id||`${t.type}_${a}`]&&(0,P.jsx)(`div`,{className:`absolute right-[28px] z-10 flex size-9 items-center justify-center rounded-full bg-black/50 text-base font-semibold tracking-tightest text-white`,children:`+${r(t.actors.length-5)}`}),t.actors.length>1&&(0,P.jsxs)(u,{className:`group flex items-center gap-0.5 text-gray-700 hover:bg-transparent hover:text-black dark:text-gray-600 dark:hover:text-white ${e[t.id||`${t.type}_${a}`]?`ml-[-20px]`:`ml-0 w-[28px]`}`,variant:`ghost`,onClick:e=>{e?.stopPropagation(),o(t.id||`${t.type}_${a}`)},children:[(0,P.jsx)(i,{className:`${e[t.id||`${t.type}_${a}`]?`rotate-180`:``}`,size:20,strokeWidth:1.5}),e[t.id||`${t.type}_${a}`]?`Hide`:(0,P.jsx)(`span`,{className:`sr-only`,children:`Show all`})]})]}),(0,P.jsx)(`div`,{className:`overflow-hidden transition-all duration-300 ease-in-out ${e[t.id||`${t.type}_${a}`]?`mb-2 max-h-[1384px] opacity-100`:`max-h-0 opacity-0`}`,children:e[t.id||`${t.type}_${a}`]&&t.actors.length>1&&(0,P.jsx)(`div`,{className:`flex flex-col gap-2 pt-2`,children:t.actors.map(e=>(0,P.jsxs)(`div`,{className:`group/item break-anywhere flex items-center justify-between gap-4`,onClick:t=>{t?.stopPropagation(),e.handle&&x(e.handle,n)},children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center`,children:[(0,P.jsx)(_,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},size:`xs`}),(0,P.jsx)(`span`,{className:`ml-2 line-clamp-1 text-base font-semibold group-hover/item:underline dark:text-white`,children:e.name}),(0,P.jsx)(`span`,{className:`ml-1 line-clamp-1 text-base text-gray-700 dark:text-gray-600`,children:e.handle})]}),t.type===`follow`&&!e.followedByMe&&e.handle&&(0,P.jsx)(E,{following:!1,handle:e.handle,variant:`link`})]},e.id))})})]})}),(0,P.jsxs)(L.Content,{children:[(0,P.jsx)(`div`,{children:y?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(f,{}),(0,P.jsx)(f,{className:`w-full max-w-60`})]}):(0,P.jsxs)(`div`,{className:`flex justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,P.jsx)(`span`,{className:`truncate`,children:(0,P.jsx)(V,{group:t})}),t.actors.length<2&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`span`,{className:`mt-px text-[8px] text-gray-700 dark:text-gray-600`,children:`•`}),(0,P.jsx)(`span`,{className:`mt-0.5 text-sm text-gray-700 dark:text-gray-600`,children:b(t,!1)})]})]}),t.actors.length===1&&(t.type===`follow`||t.type===`reply`||t.type===`mention`)&&!t.actors[0].followedByMe&&t.actors[0].handle&&(0,P.jsx)(E,{following:!1,handle:t.actors[0].handle,variant:`link`})]})}),(t.type===`reply`&&t.inReplyTo||t.type===`mention`||t.type===`like`&&!t.post?.name&&t.post?.content||t.type===`repost`&&!t.post?.name&&t.post?.content)&&(0,P.jsx)(U,{post:t.post,variant:t.type!==`reply`&&t.type!==`mention`?`inline`:`quoted`}),(t.type===`reply`&&t.post||t.type===`mention`)&&(0,P.jsx)(`div`,{className:`mt-1.5`,children:(0,P.jsx)(g,{actor:{...t.actors[0],icon:{url:t.actors[0].avatarUrl||``},id:t.actors[0].url,preferredUsername:t.actors[0].handle?.replace(/^@([^@]+)@.*$/,`$1`)||`unknown`},buttonClassName:`hover:bg-gray-200`,commentCount:t.post.replyCount||0,layout:`notification`,likeCount:t.post.likeCount||0,object:{...t.post,liked:t.post.likedByMe,reposted:t.post.repostedByMe},repostCount:t.post.repostCount||0,onLikeClick:s})})]})]}),a<S.length-1&&(0,P.jsx)(`div`,{className:`pl-[52px]`,children:(0,P.jsx)(R,{})})]},t.id||`${t.type}_${a}`))}),(0,P.jsx)(`div`,{ref:T,className:`h-1`}),v&&(0,P.jsx)(`div`,{className:`-mt-4 mb-8 flex flex-col items-center justify-center gap-4 text-center`,children:(0,P.jsx)(C,{size:`md`})})]})]})})};export{W as default};
|