ghost 6.54.0 → 6.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ghost-storage-base-3.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.0.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.1.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.1.3.tgz +0 -0
- package/core/built/admin/assets/Growth-BTP1LthE.js +3 -0
- package/core/built/admin/assets/Newsletters-CSEX0myc.js +1 -0
- package/core/built/admin/assets/Overview-BjACEsJF.js +1 -0
- package/core/built/admin/assets/Web-CxxxjCcv.js +2 -0
- package/core/built/admin/assets/{account-migration-DLvVA5yq.js → account-migration-BklF2I_I.js} +1 -1
- package/core/built/admin/assets/activitypub/{account-migration-DHbZcxGM.js → account-migration-CNovr6W-.js} +4 -4
- package/core/built/admin/assets/activitypub/activitypub.js +2 -2
- package/core/built/admin/assets/activitypub/{bluesky-sharing-zfxUey_L.js → bluesky-sharing-Ceslb1_M.js} +4 -4
- package/core/built/admin/assets/activitypub/{dist-BqkDUQxJ2.js → dist-ByFmDSNP2.js} +64 -63
- package/core/built/admin/assets/activitypub/{dist-Ba_QxHHl.js → dist-DHAjBcV3.js} +2 -2
- package/core/built/admin/assets/activitypub/{domain-CmwSZLHK.js → domain-C1qQvJ8C.js} +5 -5
- package/core/built/admin/assets/activitypub/{edit-profile-CXdwNmVG.js → edit-profile-BcH-jEfM.js} +3 -3
- package/core/built/admin/assets/activitypub/{explore-DfbjzGM1.js → explore-AxwBh9dI.js} +3 -3
- package/core/built/admin/assets/activitypub/{feed-DSEBJOqf.js → feed-BaOlbh7a.js} +3 -3
- package/core/built/admin/assets/activitypub/{field-CY7XVcx6.js → field-B7mYYQpN.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-DtQ0kytT.js → inbox-vXez-5uJ.js} +4 -4
- package/core/built/admin/assets/activitypub/{label-Dw96GQ7u.js → label-Chv5T8bw.js} +2 -2
- package/core/built/admin/assets/activitypub/layout-CziktJXo.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-Dg_-I-8C.js → moderation-DtSM2i1I.js} +4 -4
- package/core/built/admin/assets/activitypub/{note-Cy1-uKMY.js → note-Dckp4S-2.js} +3 -3
- package/core/built/admin/assets/activitypub/{notifications-B_fvoLIM.js → notifications-CG5T22vg.js} +3 -3
- package/core/built/admin/assets/activitypub/{preferences-ByJseZp6.js → preferences-D_799jdl.js} +6 -6
- package/core/built/admin/assets/activitypub/{profile-BFtbnIjz.js → profile-D2JfXBQl.js} +6 -6
- package/core/built/admin/assets/activitypub/{routes-Dh3xXfce.js → routes-CCHe2dQp.js} +28 -25
- package/core/built/admin/assets/activitypub/{settings-DTgqJPxM.js → settings-kx-9Enkz.js} +3 -3
- package/core/built/admin/assets/activitypub/{site-CdL9ZLqm.js → site-x4_IjVJ0.js} +2 -2
- package/core/built/admin/assets/activitypub/{tabs-ogqwoBlb.js → tabs-CyPRQQ1N.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-CxonteFD.js → use-reply-chain-data-BAB6fNGt.js} +2 -2
- package/core/built/admin/assets/{audience-BKRdsFmy.js → audience-X_XsZivI.js} +1 -1
- package/core/built/admin/assets/{automated-emails-Cn87L5Md.js → automated-emails-of1MvVsv.js} +1 -1
- package/core/built/admin/assets/{automations-BP_aHamJ.js → automations-DRFjW5fw.js} +1 -1
- package/core/built/admin/assets/{bluesky-sharing-Bh36XPh4.js → bluesky-sharing-BbbjWdzs.js} +1 -1
- package/core/built/admin/assets/{breadcrumb-D34YWnaw.js → breadcrumb-B-M9Ip_2.js} +1 -1
- package/core/built/admin/assets/{chart-helpers-DbklaJw9.js → chart-helpers-xiSsW8r0.js} +1 -1
- package/core/built/admin/assets/checkbox-EhJKHFdZ.js +1 -0
- package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js → chunk.211.6f7328d63c41536451b3.js} +737 -559
- package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js.LICENSE.txt → chunk.211.6f7328d63c41536451b3.js.LICENSE.txt} +2 -0
- package/core/built/admin/assets/{chunk.589.096f4d0bb775e5229aa9.js → chunk.361.3cdb584b973959e52ccc.js} +3 -3
- package/core/built/admin/assets/chunk.524.8365cd9280405c0f6216.js +25 -0
- package/core/built/admin/assets/chunk.582.61d078937e6102769f2c.js +27 -0
- package/core/built/admin/assets/code-editor-view-CZtJFGhR.js +1 -0
- package/core/built/admin/assets/comments-CvyXxOyN.js +1 -0
- package/core/built/admin/assets/{date-range-select-B5vSsrpx.js → date-range-select-CTlyo8zW.js} +1 -1
- package/core/built/admin/assets/{disabled-sources-indicator-NkOIoMue.js → disabled-sources-indicator-qs2GfLvl.js} +1 -1
- package/core/built/admin/assets/dist-2Tnz2Yfq.js +1 -0
- package/core/built/admin/assets/dist-CjY-f5Z1.js +1 -0
- package/core/built/admin/assets/dist-DIC8yz5C.js +1 -0
- package/core/built/admin/assets/{domain-B7_n5nfx.js → domain-CPNXKVOV.js} +1 -1
- package/core/built/admin/assets/dropzone-BmCXnw6J.js +5 -0
- package/core/built/admin/assets/{edit-profile-rvDGrS8J.js → edit-profile-SGrJve5M.js} +1 -1
- package/core/built/admin/assets/editor-BOG2YPUm.js +8 -0
- package/core/built/admin/assets/{explore-BZAZOg5X.js → explore-CUYLv9G9.js} +1 -1
- package/core/built/admin/assets/{feed-CFV8xDw9.js → feed-CPdJMttL.js} +1 -1
- package/core/built/admin/assets/{field-BW-M2Zwp.js → field-D0XISCK2.js} +1 -1
- package/core/built/admin/assets/{filter-sources-Fx8wiYYw.js → filter-sources-Bieps75g.js} +1 -1
- package/core/built/admin/assets/{filters-CGX_pf2N.js → filters-CuB-A7ma.js} +1 -1
- package/core/built/admin/assets/filters-bXkkWro8.js +1 -0
- package/core/built/admin/assets/{ghost-b1dce91ad3232cc259ee5fbbf9526243.js → ghost-05f9a7182ed56903dba05878a5b8422b.js} +290 -289
- package/core/built/admin/assets/{gift-link-modal-Bk8qpnMw.js → gift-link-modal-su8MsRdg.js} +1 -1
- package/core/built/admin/assets/{growth-Ck2s3JjR.js → growth-Ba6S5FQX.js} +1 -1
- package/core/built/admin/assets/{inbox-BRp1_aaC.js → inbox-Xx1CdnfO.js} +8 -8
- package/core/built/admin/assets/index-D8PbzuT9.css +1 -0
- package/core/built/admin/assets/index-ukW_0Uie.js +67 -0
- package/core/built/admin/assets/input-group-CGOXcy4l.js +1 -0
- package/core/built/admin/assets/input-surface-BpAjZXY5.js +1 -0
- package/core/built/admin/assets/{koenig-lexical-CM7UFNdL.js → koenig-lexical-B61IALf5.js} +1 -1
- package/core/built/admin/assets/{kpi-card-CIGyijjx.js → kpi-card-BlZaG1Lo.js} +1 -1
- package/core/built/admin/assets/{kpi-card-BrGH6FsT.js → kpi-card-DCdlyaSS.js} +1 -1
- package/core/built/admin/assets/{kpi-helpers-_HRRsklE.js → kpi-helpers-DpAuS1Nb.js} +1 -1
- package/core/built/admin/assets/{kpi-tabs-BSvh9eoq.js → kpi-tabs-Dme44bQS.js} +1 -1
- package/core/built/admin/assets/{label-BOR9XdKl.js → label-dSs5aepE.js} +1 -1
- package/core/built/admin/assets/{label-picker-BdNAWuUX.js → label-picker-Uq91atex.js} +1 -1
- package/core/built/admin/assets/layout-WUcz6tu1.js +1 -0
- package/core/built/admin/assets/{member-custom-fields-DvFyamLu.js → member-custom-fields-NCzrMuba.js} +1 -1
- package/core/built/admin/assets/member-detail-DPWDtYnN.js +1 -0
- package/core/built/admin/assets/{members-DsPxYAVm.js → members-B9rO7qr4.js} +2 -2
- package/core/built/admin/assets/modals-CxRaan1J.js +31 -0
- package/core/built/admin/assets/{moderation-Dlp7M5sa.js → moderation-D8zon60E.js} +1 -1
- package/core/built/admin/assets/{multi-select-combobox-CH1o8XXQ.js → multi-select-combobox-1wYm3nle.js} +1 -1
- package/core/built/admin/assets/newsletter-DbYMRxRS.js +1 -0
- package/core/built/admin/assets/{note-BrAZ7Z0o.js → note-PiWPnnrh.js} +1 -1
- package/core/built/admin/assets/{notifications-BnbHLOPC.js → notifications-DEgqqB9G.js} +1 -1
- package/core/built/admin/assets/{onboarding-route-eU146kuA.js → onboarding-route-BzF6HeVn.js} +1 -1
- package/core/built/admin/assets/{overview-BpbaK-xu.js → overview-DixLeIqY.js} +1 -1
- package/core/built/admin/assets/{page-header-C0jVxtS8.js → page-header-op0eN36I.js} +1 -1
- package/core/built/admin/assets/{post-analytics-Iw7dk1mT.js → post-analytics-WwRDEnrV.js} +1 -1
- package/core/built/admin/assets/post-analytics-header-DsMoLx0R.js +1 -0
- package/core/built/admin/assets/{post-analytics-provider-BDqcfBor.js → post-analytics-provider-BJCPLMIb.js} +1 -1
- package/core/built/admin/assets/{post-share-modal-DBfKl2GZ.js → post-share-modal-Dx-MEjhI.js} +1 -1
- package/core/built/admin/assets/preferences-D7-j6A4C.js +5 -0
- package/core/built/admin/assets/profile-Dl69QPp0.js +1 -0
- package/core/built/admin/assets/select-C1qDZnW4.js +1 -0
- package/core/built/admin/assets/settings-BbmC_Iqq.js +4 -0
- package/core/built/admin/assets/{settings-Bz3RZRmE.js → settings-H6HxFgfI.js} +1 -1
- package/core/built/admin/assets/shade-app-B3heOAfz-CGXQwWeO.js +3 -0
- package/core/built/admin/assets/{share-modal-CkdTTMJd.js → share-modal-BJCadJyp.js} +1 -1
- package/core/built/admin/assets/social-urls-BPL1nADp.js +8 -0
- package/core/built/admin/assets/{sort-button-DZp9Y2r1.js → sort-button-DyYlfYp7.js} +1 -1
- package/core/built/admin/assets/{source-icon-CHr9qJ2Y.js → source-icon-_ubRDbg_.js} +1 -1
- package/core/built/admin/assets/{stats-DGoXZxWE.js → stats-BQZMGMvn.js} +1 -1
- package/core/built/admin/assets/{stats-view-D2-1L0ms.js → stats-view-Doei-qCX.js} +1 -1
- package/core/built/admin/assets/{step-1-RdahbwyG.js → step-1-IKiLBPoC.js} +1 -1
- package/core/built/admin/assets/{step-2-D83PeRwd.js → step-2-jJ41PsDN.js} +1 -1
- package/core/built/admin/assets/{step-3-p_Op4wv4.js → step-3-CaqFAEqf.js} +2 -2
- package/core/built/admin/assets/switch-t-WyENU2.js +1 -0
- package/core/built/admin/assets/{table-B8LgTQJZ.js → table-DxUL78jU.js} +1 -1
- package/core/built/admin/assets/{tabs-D3ZOYkM7.js → tabs-BQcJQ1ke.js} +1 -1
- package/core/built/admin/assets/{tags-B4l891z2.js → tags-CNujGwkT.js} +1 -1
- package/core/built/admin/assets/textarea-Bjccvh_E.js +1 -0
- package/core/built/admin/assets/{toggle-group-DNXDkAwf.js → toggle-group-BeEpQ69p.js} +1 -1
- package/core/built/admin/assets/{topic-filter-DZGjEcz3.js → topic-filter-Bb5MOD-1.js} +1 -1
- package/core/built/admin/assets/{use-analytics-data-CaT8RirX.js → use-analytics-data-Cds6XDjg.js} +1 -1
- package/core/built/admin/assets/use-filter-params-DjXkhO54.js +1 -0
- package/core/built/admin/assets/{use-growth-stats-9Db2CuJe.js → use-growth-stats-D8uf98-G.js} +1 -1
- package/core/built/admin/assets/{use-post-referrers-BV54YcQS.js → use-post-referrers-CRtgyuXB.js} +1 -1
- package/core/built/admin/assets/{use-reply-chain-data-DuYZGDan.js → use-reply-chain-data-DbKYX50v.js} +1 -1
- package/core/built/admin/assets/{use-simple-pagination-8fTua9Nt.js → use-simple-pagination-DC01kpo0.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-query-Dz156HvZ.js → use-tinybird-query-C7bQRJWw.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-token-C9RUdL_n.js → use-tinybird-token-Az4tam7_.js} +1 -1
- package/core/built/admin/assets/{virtual-list-BCvP0YF-.js → virtual-list-Dhuh9fGx.js} +1 -1
- package/core/built/admin/assets/web-LtHNiNBV.js +1 -0
- package/core/built/admin/index.html +11 -7
- package/core/frontend/services/proxy.js +11 -1
- package/core/server/adapters/storage/LocalFilesStorage.js +13 -11
- package/core/server/adapters/storage/LocalFilesStorage.ts +24 -0
- package/core/server/adapters/storage/LocalImagesStorage.js +14 -12
- package/core/server/adapters/storage/LocalImagesStorage.ts +24 -0
- package/core/server/adapters/storage/LocalMediaStorage.js +13 -11
- package/core/server/adapters/storage/LocalMediaStorage.ts +24 -0
- package/core/server/adapters/storage/LocalStorageBase.js +107 -167
- package/core/server/adapters/storage/LocalStorageBase.ts +342 -0
- package/core/server/adapters/storage/utils.js +36 -50
- package/core/server/adapters/storage/utils.ts +60 -0
- package/core/server/api/endpoints/db.js +6 -0
- package/core/server/api/endpoints/members.js +25 -28
- package/core/server/api/endpoints/pages.js +6 -1
- package/core/server/api/endpoints/posts.js +11 -2
- package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +4 -1
- package/core/server/api/endpoints/utils/serializers/output/members.js +18 -87
- package/core/server/data/exporter/export-filename.js +2 -1
- package/core/server/data/importer/importers/data/revue-subscriber-importer.js +6 -10
- package/core/server/data/importer/importers/json-to-html.js +24 -4
- package/core/server/lib/image/image-size.js +3 -17
- package/core/server/lib/image/image-utils.js +15 -1
- package/core/server/lib/request-external.js +1 -1
- package/core/server/models/user.js +46 -70
- package/core/server/services/auth/session/session-service.js +28 -1
- package/core/server/services/automations/automations-api.js +6 -6
- package/core/server/services/automations/automations-api.ts +6 -6
- package/core/server/services/automations/automations-repository.ts +1 -0
- package/core/server/services/automations/database-automations-repository.js +7 -2
- package/core/server/services/automations/database-automations-repository.ts +8 -2
- package/core/server/services/comments/comments-service-emails.js +4 -1
- package/core/server/services/members/{importer → import-export}/config.js +4 -9
- package/core/server/services/members/{importer → import-export}/config.ts +4 -9
- package/core/server/services/members/{csv → import-export/csv}/index.js +3 -3
- package/core/server/services/members/import-export/csv/index.ts +2 -0
- package/core/server/services/members/import-export/csv/parse.js +64 -0
- package/core/server/services/members/import-export/csv/parse.ts +69 -0
- package/core/server/services/members/import-export/csv/serialize.js +13 -0
- package/core/server/services/members/import-export/csv/serialize.ts +18 -0
- package/core/server/services/members/import-export/export/exporter.js +202 -0
- package/core/server/services/members/import-export/export/exporter.ts +325 -0
- package/core/server/services/members/import-export/import/completion-email.js +65 -0
- package/core/server/services/members/import-export/import/completion-email.ts +119 -0
- package/core/server/services/members/import-export/import/importer.js +276 -0
- package/core/server/services/members/import-export/import/importer.ts +430 -0
- package/core/server/services/members/import-export/import/reader.js +32 -0
- package/core/server/services/members/import-export/import/reader.ts +33 -0
- package/core/server/services/members/import-export/import/row.js +33 -0
- package/core/server/services/members/import-export/import/row.ts +52 -0
- package/core/server/services/members/import-export/import/spool.js +30 -0
- package/core/server/services/members/import-export/import/spool.ts +38 -0
- package/core/server/services/members/import-export/index.js +90 -0
- package/core/server/services/members/import-export/index.ts +118 -0
- package/core/server/services/members/members-api/controllers/router-controller.js +7 -0
- package/core/server/services/members/service.js +17 -19
- package/core/server/services/posts/posts-exporter.js +6 -4
- package/core/server/services/posts/posts-service.js +2 -2
- package/core/server/services/themes/storage.js +9 -0
- package/core/server/services/themes/theme-storage.js +1 -1
- package/core/shared/config/defaults.json +2 -1
- package/core/shared/express.js +6 -1
- package/core/shared/labs.js +2 -1
- package/package.json +9 -9
- package/pnpm-lock.yaml +17 -17
- package/pnpm-workspace.yaml +7 -7
- package/components/tryghost-adapter-base-scheduling-0.1.1.tgz +0 -0
- package/core/built/admin/assets/Growth-CSaHoSVD.js +0 -3
- package/core/built/admin/assets/Newsletters-C5cs6FGo.js +0 -1
- package/core/built/admin/assets/Overview-j4NaeUNm.js +0 -1
- package/core/built/admin/assets/Web-_fD935OX.js +0 -2
- package/core/built/admin/assets/activitypub/layout-IdVq3lRy.js +0 -1
- package/core/built/admin/assets/checkbox-DA4-1UiI.js +0 -1
- package/core/built/admin/assets/chunk.524.45e0875f41b71e46e849.js +0 -25
- package/core/built/admin/assets/chunk.582.51defd4b009f0de8d4d5.js +0 -27
- package/core/built/admin/assets/code-editor-view-BKBrkffZ.js +0 -1
- package/core/built/admin/assets/comments-CzVNIT8b.js +0 -1
- package/core/built/admin/assets/dist-CT46_f_J.js +0 -1
- package/core/built/admin/assets/dropzone-DcuJEEUf.js +0 -5
- package/core/built/admin/assets/editor-BCiIyFjm.js +0 -8
- package/core/built/admin/assets/filters-DtcXMZDU.js +0 -1
- package/core/built/admin/assets/index-BBf502Wg.js +0 -69
- package/core/built/admin/assets/index-BCCZKxP2.css +0 -1
- package/core/built/admin/assets/input-group-DjuYnNCd.js +0 -1
- package/core/built/admin/assets/layout-Bw4GnxXp.js +0 -1
- package/core/built/admin/assets/member-detail-Cg2vTqvJ.js +0 -1
- package/core/built/admin/assets/modals-Bf_fyvHZ.js +0 -31
- package/core/built/admin/assets/newsletter-CQ5CAYUI.js +0 -1
- package/core/built/admin/assets/post-analytics-header-D9pJ4iNm.js +0 -1
- package/core/built/admin/assets/preferences-D4EANGoc.js +0 -5
- package/core/built/admin/assets/profile-dJ44Bn_W.js +0 -1
- package/core/built/admin/assets/select--2uVN9_-.js +0 -1
- package/core/built/admin/assets/settings-SD9bxIpt.js +0 -4
- package/core/built/admin/assets/social-urls-BvFZwYcE.js +0 -8
- package/core/built/admin/assets/switch-qp518gFQ.js +0 -1
- package/core/built/admin/assets/textarea-CTlb3Uu6.js +0 -1
- package/core/built/admin/assets/use-filter-params-DeQ8sX4N.js +0 -1
- package/core/built/admin/assets/web-DTZnnUGr.js +0 -1
- package/core/server/services/mail/templates/newsletter.html +0 -876
- package/core/server/services/members/csv/index.ts +0 -3
- package/core/server/services/members/csv/parse.js +0 -94
- package/core/server/services/members/csv/parse.ts +0 -111
- package/core/server/services/members/csv/types.js +0 -2
- package/core/server/services/members/csv/types.ts +0 -39
- package/core/server/services/members/csv/unparse.js +0 -69
- package/core/server/services/members/csv/unparse.ts +0 -79
- package/core/server/services/members/exporter/query.js +0 -233
- package/core/server/services/members/importer/index.js +0 -30
- package/core/server/services/members/importer/labels.js +0 -125
- package/core/server/services/members/importer/members-csv-importer.js +0 -520
- /package/core/server/services/members/{importer → import-export/import}/email-template.js +0 -0
- /package/core/server/services/members/{importer/members-csv-importer-stripe-utils.js → import-export/import/stripe-utils.js} +0 -0
|
@@ -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{c as r,o as i}from"./dist-DGzPJ_bO.js";import{t as a}from"./textarea-CTlb3Uu6.js";import{Ir as o,ar as s,rr as c}from"./index-BBf502Wg.js";var l=e(t(),1),u=n();function d({className:e,...t}){return(0,u.jsx)(`div`,{className:r(s.base,s.invalidWithin,`group/input-group relative flex w-full items-center outline-hidden`,`h-9 has-[>textarea]:h-auto`,`has-[>[data-align=inline-start]]:[&>input]:pl-2`,`has-[>[data-align=inline-end]]:[&>input]:pr-2`,`has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3`,`has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3`,`has-[[data-slot=input-group-control]:focus-visible]:border-focus-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-focus-ring/25 has-[[data-slot=input-group-control]:focus-visible]:outline-hidden`,e),"data-slot":`input-group`,role:`group`,...t})}var f=i(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-control font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--input-group-radius)-5px)] [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]`,"inline-end":`order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]`,"block-start":`order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3`,"block-end":`order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3`}},defaultVariants:{align:`inline-start`}});function p({className:e,align:t=`inline-start`,...n}){return(0,u.jsx)(`div`,{className:r(f({align:t}),e),"data-align":t,"data-slot":`input-group-addon`,role:`group`,onClick:e=>{e.target.closest(`button`)||(e.currentTarget.closest(`[data-slot="input-group"]`)?.querySelector(`[data-slot="input-group-control"]`))?.focus()},...n})}var m=i(`flex items-center gap-2 text-control shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-[calc(var(--input-group-radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5`,sm:`h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5`,"icon-xs":`size-6 rounded-[calc(var(--input-group-radius)-5px)] p-0 has-[>svg]:p-0`,"icon-sm":`size-8 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}}),h=l.forwardRef(({className:e,type:t=`button`,variant:n=`ghost`,size:i=`xs`,...a},s)=>(0,u.jsx)(o,{ref:s,className:r(m({size:i}),e),"data-size":i,type:t,variant:n,...a}));h.displayName=`InputGroupButton`;function g({className:e,...t}){return(0,u.jsx)(`span`,{className:r(`flex items-center gap-2 text-control text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4`,e),...t})}var _=l.forwardRef(({className:e,...t},n)=>(0,u.jsx)(c,{ref:n,className:r(`flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:shadow-none focus-visible:ring-0 focus-visible:outline-hidden`,e),"data-slot":`input-group-control`,...t}));_.displayName=`InputGroupInput`;var v=l.forwardRef(({className:e,...t},n)=>(0,u.jsx)(a,{ref:n,className:r(`flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:shadow-none focus-visible:ring-0 focus-visible:outline-hidden`,e),"data-slot":`input-group-control`,...t}));v.displayName=`InputGroupTextarea`;export{g as a,_ as i,p as n,v as o,h as r,d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./index-BBf502Wg.js";
|
|
@@ -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{o as r}from"./framework-provider-CmtnPXIT.js";import{a as i}from"./hooks-BApwwBE0.js";import{n as a}from"./dist-Ndy-PuGN.js";import{n as o,t as s}from"./dist-DMFGvqqU.js";import{t as c}from"./currency-CQsJu8iC.js";import{c as l,l as u,m as d,t as f}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as p}from"./router-provider-C1R4AZ2o.js";import{c as m,v as h}from"./dist-DGzPJ_bO.js";import{t as g}from"./box-BWbhXh21.js";import{t as _}from"./container-BYz2Ed39.js";import{t as v}from"./stack-xiN0eQ6Z.js";import{t as y}from"./switch-qp518gFQ.js";import{i as b,n as x,o as ee,s as S,t as te}from"./select--2uVN9_-.js";import{a as ne,i as re,n as ie,o as ae,r as oe,t as se}from"./breadcrumb-D34YWnaw.js";import{n as C,t as w}from"./card-DGoDJzrn.js";import{t as T}from"./empty-indicator-oX1u1Pkn.js";import{t as E}from"./label-BOR9XdKl.js";import{t as ce}from"./textarea-CTlb3Uu6.js";import{n as D,o as le,t as ue}from"./input-group-DjuYnNCd.js";import{i as O}from"./users-CcSCQFcQ.js";import{Ar as k,Bo as de,D as fe,Dr as A,Ds as j,E as M,En as N,Er as P,Ir as F,Jn as pe,Jr as I,Ka as me,Ko as L,Lo as he,M as ge,N as R,Na as _e,O as ve,Oo as ye,Or as z,P as be,Ps as xe,Qa as Se,Qr as B,Sa as Ce,Sn as V,T as we,Uo as H,Va as Te,Vr as Ee,Wi as U,Xa as De,Xn as Oe,Xr as ke,_ as Ae,ao as je,b as Me,co as Ne,cr as Pe,cs as Fe,do as Ie,dr as Le,er as W,f as Re,fr as ze,ia as Be,ii as Ve,j as He,k as Ue,ko as We,kr as G,lo as Ge,lr as Ke,ni as qe,oo as Je,or as Ye,pr as Xe,ra as Ze,ro as Qe,rr as K,so as $e,tr as et,ts as tt,uo as nt,ur as rt,v as it,wr as q}from"./index-BBf502Wg.js";import{t as at}from"./page-header-C0jVxtS8.js";import{r as ot}from"./newsletters-D1jbtV-h.js";import{a as st}from"./tiers-BgYLWRJv.js";import{c as ct,n as lt,s as ut}from"./member-custom-fields-DvFyamLu.js";import{n as dt,r as ft}from"./label-picker-BdNAWuUX.js";var J=e(t(),1),Y=n();function pt({className:e,children:t,...n}){return(0,Y.jsx)(v,{className:m(`py-5`,e),"data-detail-page":`header`,gap:`lg`,...n,children:t})}function mt({className:e,children:t,...n}){return(0,Y.jsx)(v,{className:m(`min-h-0 min-w-0 grow overflow-y-auto pb-4 lg:pb-8`,e),"data-detail-page":`body`,gap:`none`,...n,children:t})}var X=Object.assign(function({className:e,children:t,...n}){return(0,Y.jsx)(v,{className:m(`h-full min-h-0 grow px-4 lg:px-6`,e),"data-detail-page":`detail-page`,gap:`none`,...n,children:t})},{Header:pt,Body:mt}),ht=new Set([`active`,`trialing`,`unpaid`,`past_due`]);function gt(e){return(e.subscriptions??[]).some(e=>ht.has(e.status))}function _t(e){return e?`Delete member + Cancel subscription`:`Delete member`}var vt=({open:e,onOpenChange:t,member:n,allowLeaveWithUnsavedChanges:r})=>{let i=p(),o=we(),[s,c]=J.useState(!1);J.useEffect(()=>{e&&c(!1)},[e]);let l=gt(n),u=n.email||n.name||`this member`,d=async()=>{try{let e=l&&s;await o.mutateAsync({id:n.id,cancel:e}),a.success(e?`${u} was deleted and their Stripe subscription was cancelled.`:`${u} was deleted.`),t(!1),r(),i(`/members`)}catch{a.error(`Couldn’t delete the member. Please try again.`)}};return(0,Y.jsx)(q,{open:e,onOpenChange:e=>{o.isPending||t(e)},children:(0,Y.jsxs)(P,{"data-testid":`delete-member-modal`,children:[(0,Y.jsxs)(G,{children:[(0,Y.jsx)(k,{children:`Delete member account`}),(0,Y.jsxs)(A,{children:[`Permanently delete `,(0,Y.jsx)(`strong`,{children:u}),` from Ghost.`]})]}),l&&(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`h4`,{className:`text-sm font-medium`,children:`Also cancel subscription in Stripe`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If disabled, the member’s premium subscription will continue`})]}),(0,Y.jsx)(y,{"aria-label":`Also cancel subscription in Stripe`,checked:s,"data-testid":`delete-member-cancel-stripe`,disabled:o.isPending,onCheckedChange:c})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(F,{"data-testid":`cancel-delete-member`,disabled:o.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)(F,{"data-testid":`confirm-delete-member`,disabled:o.isPending,variant:`destructive`,onClick:()=>void d(),children:o.isPending?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Deleting`})]}):_t(s&&l)})]})]})})},yt=`Disabled from member settings`,bt=({open:e,onOpenChange:t,member:n})=>{let i=r(),o=M(),[s,c]=J.useState(!1);J.useEffect(()=>{e&&c(!1)},[e]);let l=n.name||n.email||`this member`,u=async()=>{try{await o.mutateAsync({id:n.id,reason:yt,hideComments:s})}catch{a.error(`Couldn’t disable commenting. Please try again.`);return}a.success(`Commenting has been disabled for ${l}.`),t(!1),i.invalidateQueries({queryKey:[`MembersResponseType`]})};return(0,Y.jsx)(q,{open:e,onOpenChange:e=>{o.isPending||t(e)},children:(0,Y.jsxs)(P,{"data-testid":`disable-commenting-modal`,children:[(0,Y.jsxs)(G,{children:[(0,Y.jsx)(k,{children:`Disable commenting`}),(0,Y.jsxs)(A,{children:[(0,Y.jsx)(`strong`,{children:l}),` won’t be able to comment in the future. You can re-enable commenting anytime.`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,Y.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:(0,Y.jsx)(`h4`,{className:`text-sm font-medium`,children:`Hide all previous comments`})}),(0,Y.jsx)(y,{"aria-label":`Hide all previous comments`,checked:s,"data-testid":`disable-commenting-hide-comments`,disabled:o.isPending,onCheckedChange:c})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(F,{"data-testid":`cancel-disable-commenting`,disabled:o.isPending,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)(F,{"data-testid":`confirm-disable-commenting`,disabled:o.isPending,onClick:()=>void u(),children:o.isPending?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Disabling`})]}):`Disable commenting`})]})]})})},xt=({open:e,onOpenChange:t,memberId:n})=>{let i=r();J.useEffect(()=>{e&&i.removeQueries({queryKey:[`MemberSigninUrlResponseType`]})},[e,i]);let{data:o,isFetching:s,isError:c}=it(n,{enabled:e,defaultErrorHandler:!1}),l=o?.url??``,u=c||!s&&!c&&!l,[d,f]=J.useState(!1),p=J.useRef(null),m=J.useCallback(()=>{p.current!==null&&(clearTimeout(p.current),p.current=null)},[]);J.useEffect(()=>{e||(m(),f(!1))},[e,m]),J.useEffect(()=>m,[m]);let h=async()=>{try{await navigator.clipboard.writeText(l),f(!0),m(),p.current=setTimeout(()=>{f(!1),p.current=null},1e3)}catch{a.error(`Couldn’t copy the impersonation link`)}};return(0,Y.jsx)(q,{open:e,onOpenChange:t,children:(0,Y.jsxs)(P,{"data-testid":`impersonate-modal`,children:[(0,Y.jsxs)(G,{children:[(0,Y.jsx)(k,{children:`Impersonate member`}),(0,Y.jsx)(A,{children:`A single-use signin link that works for 24 hours. Anyone with the link can sign in as this member.`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`member-signin-url`,children:`Signin link`}),(0,Y.jsx)(K,{"data-testid":`member-signin-url`,id:`member-signin-url`,value:s?`Generating link…`:u?`Failed to generate link`:l,readOnly:!0})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(F,{variant:`outline`,onClick:()=>t(!1),children:`Close`}),(0,Y.jsx)(F,{disabled:s||u||!l,onClick:()=>void h(),children:s?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Generating link`})]}):d?`Copied`:`Copy link`})]})]})})},St=({open:e,onOpenChange:t,member:n})=>{let r=ge(),i=n.name||n.email||`This member`,o=async()=>{try{await r.mutateAsync({id:n.id}),a.success(`${i} has been signed out from all devices.`),t(!1)}catch{a.error(`Couldn’t sign the member out. Please try again.`)}};return(0,Y.jsx)(Ye,{open:e,onOpenChange:e=>{r.isPending||t(e)},children:(0,Y.jsxs)(Ke,{"data-testid":`logout-member-modal`,children:[(0,Y.jsxs)(ze,{children:[(0,Y.jsx)(Xe,{children:`Sign out member from all devices?`}),(0,Y.jsxs)(rt,{children:[(0,Y.jsx)(`strong`,{children:i}),` will be signed out of all active sessions, and will need to sign in again upon return.`]})]}),(0,Y.jsxs)(Le,{children:[(0,Y.jsx)(Pe,{disabled:r.isPending,children:`Cancel`}),(0,Y.jsx)(F,{"data-testid":`confirm-logout-member`,disabled:r.isPending,variant:`destructive`,onClick:()=>void o(),children:r.isPending?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Signing out`})]}):`Sign out`})]})]})})};function Ct(e){return e.can_comment===!1}function wt(e){return Ct(e)?`Enable commenting`:`Disable commenting`}var Tt=({member:e,allowLeaveWithUnsavedChanges:t})=>{let n=r(),{data:o}=i(),[s,c]=J.useState(!1),[l,u]=J.useState(!1),[d,f]=J.useState(!1),[p,m]=J.useState(!1),h=Ue(),g=R(),_=h.isPending||h.isSuccess&&g,v=Ct(e),y=wt(e),b=e.name||e.email||`this member`;if(!o||!O(o))return null;let x=async()=>{if(!v){f(!0);return}try{await h.mutateAsync({id:e.id}),a.success(`Commenting has been enabled for ${b}.`)}catch{a.error(`Couldn’t enable commenting. Please try again.`);return}n.invalidateQueries({queryKey:[`MembersResponseType`]})};return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(Ve,{asChild:!0,children:(0,Y.jsx)(F,{"aria-label":`Actions`,className:`size-(--control-height)`,"data-testid":`member-actions`,size:`icon`,variant:`outline`,children:(0,Y.jsx)(H,{size:16})})}),(0,Y.jsxs)(ke,{align:`end`,children:[(0,Y.jsx)(B,{"data-testid":`member-actions-impersonate`,onSelect:()=>c(!0),children:`Impersonate`}),(0,Y.jsx)(B,{"data-testid":`member-actions-logout`,onSelect:()=>u(!0),children:`Sign out of all devices`}),(0,Y.jsx)(B,{"data-testid":`member-actions-commenting`,disabled:_,onSelect:()=>void x(),children:y}),(0,Y.jsx)(qe,{}),(0,Y.jsx)(B,{className:`text-destructive focus:text-destructive`,"data-testid":`member-actions-delete`,onSelect:()=>m(!0),children:`Delete member`})]})]}),(0,Y.jsx)(xt,{memberId:e.id,open:s,onOpenChange:c}),(0,Y.jsx)(St,{member:e,open:l,onOpenChange:u}),(0,Y.jsx)(bt,{member:e,open:d,onOpenChange:f}),(0,Y.jsx)(vt,{allowLeaveWithUnsavedChanges:t,member:e,open:p,onOpenChange:m})]})},Z=e(h(),1);function Et(e){return e?/^(https?:\/\/|\/|#\/)/i.test(e):!1}var Dt=new Set([`bif`,`clp`,`djf`,`gnf`,`jpy`,`kmf`,`krw`,`mga`,`pyg`,`rwf`,`ugx`,`vnd`,`vuv`,`xaf`,`xof`,`xpf`]);function Ot(e,t){let n=Dt.has(t.toLowerCase())?e:e/100,r=n%1==0;try{return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:t.toUpperCase(),minimumFractionDigits:r?0:2,maximumFractionDigits:r?0:2}).format(n)}catch{return`${n}`}}function kt(e){return e?.trim()||null}function At(e){let t;return e.type===`login_event`&&(t=`logged-in`),e.type===`payment_event`&&(t=`subscriptions`),e.type===`newsletter_event`&&(t=e.data.subscribed?`subscribed-to-email`:`unsubscribed-from-email`),e.type===`subscription_event`&&(t=`subscriptions`,e.data.type===`canceled`&&(t=`canceled-subscription`)),(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)&&(t=`signed-up`),e.type===`email_opened_event`&&(t=`opened-email`),(e.type===`email_sent_event`||e.type===`automated_email_sent_event`)&&(t=`sent-email`),e.type===`email_delivered_event`&&(t=`received-email`),e.type===`email_failed_event`&&(t=`email-delivery-failed`),e.type===`email_complaint_event`&&(t=`email-delivery-spam`),e.type===`comment_event`&&(t=`comment`),(e.type===`click_event`||e.type===`aggregated_click_event`)&&(t=`click`),e.type===`feedback_event`&&(t=e.data.score===1?`more-like-this`:`less-like-this`),e.type===`donation_event`&&(t=`subscriptions`),(e.type===`gift_purchase_event`||e.type===`gift_redemption_event`||e.type===`gift_ended_event`)&&(t=`gift`),e.type===`email_change_event`&&(t=`email-changed`),`event-${t}`}function jt(e,t){if(e.type===`signup_event`||e.type===`subscription_event`&&e.data.type===`created`&&e.data.signup)return`signed up`;if(e.type===`login_event`)return`logged in`;if(e.type===`payment_event`)return`made payment`;if(e.type===`newsletter_event`){let n=e.data.newsletter,r=t&&n?.name?n.name:`newsletter`;return e.data.subscribed?`subscribed to ${r}`:`unsubscribed from ${r}`}if(e.type===`subscription_event`){let t=e.data.type;return t===`created`?`started paid subscription`:t===`canceled`?`canceled paid subscription`:t===`reactivated`?`reactivated paid subscription`:t===`expired`?`ended paid subscription`:`changed paid subscription`}if(e.type===`email_opened_event`)return`opened email`;if(e.type===`email_sent_event`)return`sent email`;if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source!==`automation_action_revision`)return`received welcome email (${(t?.slug||``).includes(`paid`)?`Paid`:`Free`})`;let n=kt(t.subject);return n?`received automated email: ${n}`:`received automated email`}if(e.type===`email_delivered_event`)return`received email`;if(e.type===`email_failed_event`)return`bounced email`;if(e.type===`email_complaint_event`)return`email flagged as spam`;if(e.type===`comment_event`)return e.data.parent?`replied to comment`:`commented`;if(e.type===`click_event`)return`clicked link in email`;if(e.type===`aggregated_click_event`){let t=e.data.count?.clicks??1;return t<=1?`clicked link in email`:`clicked ${t} links in email`}if(e.type===`feedback_event`)return e.data.score===1?`more like this`:`less like this`;if(e.type===`email_change_event`)return e.data.from_email&&e.data.to_email?`Email address changed from ${e.data.from_email} to ${e.data.to_email}`:`Email address changed`;if(e.type===`donation_event`)return`Made a one-time payment`;if(e.type===`gift_purchase_event`){let t=e.data.amount,n=e.data.currency,r=e.data.tier_name,i=e.data.duration,a=e.data.cadence;return typeof t==`number`&&n&&r&&typeof i==`number`&&a?`Purchased gift subscription for ${Ot(t,n)} (${r}, ${i} ${i===1?a:`${a}s`})`:`Purchased gift subscription`}if(e.type===`gift_redemption_event`)return`started gift subscription`;if(e.type===`gift_ended_event`)return`gift subscription expired`}function Mt(e,t){if(e.type===`automated_email_sent_event`){let t=e.data.automatedEmail;if(t?.source===`automation_action_revision`){let e=kt(t.subject);return e?`received automated email: ${e}`:`received automated email`}}return jt(e,t)}function Nt(e){if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.title)return t.title}if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.title)return t.title}return``}function Pt(e){let t=e.data.attribution;return t?.referrer_source?{name:t.referrer_source,url:t.referrer_url??null}:null}function Ft(e,t){if(e.type===`signup_event`&&t.paidMembersEnabled){let t=e.data.created_with_status;return t&&t!==`free`?null:`Free`}if(e.type===`gift_redemption_event`)return e.data.tier_name??void 0}function It(e){if(e.type===`click_event`)return e.data.link?.to}function Lt(e){if(e.type===`comment_event`||e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.url)return t.url}if(e.type===`signup_event`||e.type===`subscription_event`||e.type===`donation_event`){let t=e.data.attribution;if(t?.url)return t.url}}function Rt(e){if(e.type===`click_event`||e.type===`feedback_event`){let t=e.data.post;if(t?.id)return`#/posts/analytics/${t.id}`}if((e.type===`signup_event`||e.type===`subscription_event`)&&e.data.attribution_type===`post`&&e.data.attribution_id)return`#/posts/analytics/${e.data.attribution_id}`}function zt(e,t){let n=kt(e.data.member?.name),r=e.data.member?n||e.data.member.email||``:e.data.name||e.data.email||``,i=e.data.member?{...e.data.member,name:n??void 0}:e.data.member;return{id:e.data.id,memberId:e.data.member_id??e.data.member?.id,member:i,emailId:e.data.email_id,email:e.data.email,icon:At(e),subject:r,action:jt(e,t.hasMultipleNewsletters),actionTitle:Mt(e,t.hasMultipleNewsletters),join:`–`,object:Nt(e),source:Pt(e),info:Ft(e,t),description:It(e),url:Lt(e),route:Rt(e),timestamp:e.data.created_at}}var Bt=({iconName:e})=>{let t={className:`shrink-0 text-muted-foreground`,size:16};switch(e){case`event-signed-up`:return(0,Y.jsx)(U,{...t});case`event-logged-in`:return(0,Y.jsx)(Ie,{...t});case`event-subscriptions`:return(0,Y.jsx)(L,{...t});case`event-canceled-subscription`:return(0,Y.jsx)(tt,{...t});case`event-subscribed-to-email`:return(0,Y.jsx)(Ne,{...t});case`event-unsubscribed-from-email`:return(0,Y.jsx)(nt,{...t});case`event-opened-email`:return(0,Y.jsx)(Ge,{...t});case`event-received-email`:return(0,Y.jsx)(je,{...t});case`event-sent-email`:return(0,Y.jsx)(Ce,{...t});case`event-email-delivery-failed`:return(0,Y.jsx)(Je,{...t});case`event-email-delivery-spam`:return(0,Y.jsx)($e,{...t});case`event-email-changed`:return(0,Y.jsx)(j,{...t});case`event-comment`:return(0,Y.jsx)(De,{...t});case`event-click`:return(0,Y.jsx)(me,{...t});case`event-more-like-this`:return(0,Y.jsx)(Ze,{...t});case`event-less-like-this`:return(0,Y.jsx)(Be,{...t});case`event-gift`:return(0,Y.jsx)(We,{...t});default:return(0,Y.jsx)(xe,{...t})}},Vt=({memberId:e})=>(0,Y.jsx)(`a`,{className:`block pt-3 font-medium text-primary hover:underline`,"data-testid":`member-activity-view-all`,href:`#/members-activity?member=${e}`,children:`View all member activity →`}),Ht=`All events related to this member will be shown here.`,Ut=e=>e?e.charAt(0).toUpperCase()+e.slice(1):``;function Wt(e){if(e&&typeof e==`object`){let t=e.subject;return t?`“${t}”`:`Email`}}var Gt=({event:e})=>{if(!e.action)return null;let t=Wt(e.email),n=e.object&&(e.route||Et(e.url)),r=!n&&t,i=e.timestamp?(0,Z.default)(e.timestamp).fromNow():`—`;return(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 py-3`,"data-testid":`member-activity-event`,children:[(0,Y.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-muted`,children:(0,Y.jsx)(Bt,{iconName:e.icon})}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,Y.jsxs)(`div`,{className:`text-sm leading-snug`,children:[(0,Y.jsx)(`span`,{"data-testid":`member-activity-action`,children:Ut(e.action)}),e.info&&(0,Y.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.info,`)`]}),n&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),e.route?(0,Y.jsx)(`a`,{className:`hover:underline`,href:e.route,children:e.object}):(0,Y.jsx)(`a`,{className:`hover:underline`,href:e.url,rel:`noopener noreferrer`,target:`_blank`,children:e.object})]}),r&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:e.join}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:t})]})]}),e.description&&(0,Y.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:e.description}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:i})]})]})},Kt=({memberId:e,hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:r})=>{let{data:i,isLoading:a}=He(e??``,{limit:`5`,enabled:!!e}),o=(i?.events??[]).map(e=>zt(e,{hasMultipleNewsletters:t,hasMultipleTiers:n,paidMembersEnabled:r})),s=new Set;return e?(0,Y.jsxs)(`section`,{className:`flex flex-col gap-3`,"data-testid":`member-activity-feed`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold`,children:`Activity`}),(0,Y.jsx)(w,{children:(0,Y.jsxs)(C,{className:`pt-3`,children:[a?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(et,{className:`h-10`}),(0,Y.jsx)(et,{className:`h-10`}),(0,Y.jsx)(et,{className:`h-10`})]}):o.length===0?(0,Y.jsx)(`p`,{className:`py-4 text-center text-sm text-muted-foreground`,"data-testid":`member-activity-empty`,children:`No activity yet`}):(0,Y.jsx)(`div`,{className:`divide-y divide-border`,children:o.map(e=>{let t=e.id||`${e.timestamp??`?`}-${e.icon}-${e.action}`,n=t,r=1;for(;s.has(n);)n=`${t}#${r}`,r+=1;return s.add(n),(0,Y.jsx)(Gt,{event:e},n)})}),!a&&o.length>0&&(0,Y.jsx)(Vt,{memberId:e})]})})]}):(0,Y.jsxs)(`section`,{className:`flex flex-col gap-3`,"data-testid":`member-activity-feed`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold`,children:`Activity`}),(0,Y.jsx)(w,{children:(0,Y.jsx)(C,{className:`pt-6`,children:(0,Y.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,Y.jsx)(T,{description:Ht,title:`Activity`,children:(0,Y.jsx)(xe,{})})})})})]})},qt=[`line1`,`line2`,`city`,`state`,`postal_code`,`country`],Jt=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Q(e){return{name:(e.name??``).trim(),email:(e.email??``).trim(),note:e.note??``,labels:(e.labels??[]).map(e=>({name:e.name,slug:e.slug})).sort((e,t)=>e.slug<t.slug?-1:+(e.slug>t.slug)),newsletters:(e.newsletters??[]).map(e=>e.id).sort()}}function Yt(e){let t={};for(let[n,r]of Object.entries(e??{}))if(typeof r==`string`&&r.trim()!==``)t[n]=r.trim();else if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Xt(r);e&&(t[n]=e)}return t}function Xt(e){let t={};for(let n of qt){let r=e[n];typeof r==`string`&&r.trim()!==``&&(t[n]=r.trim())}return Object.keys(t).length?t:void 0}function Zt(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t].sort()}function Qt(e){return Jt.test(e.trim())}function $t(e,t){return t?e.trim()===``?`Email is required.`:Qt(e)?null:`Invalid email.`:null}function en(e){if(!e?.suppressed)return null;let t=e.info;if(!t)return{label:null};let{reason:n,timestamp:r}=t,i=(0,Z.default)(new Date(r)).format(`D MMM YYYY`);switch(n){case`fail`:return{reason:n,label:`Bounced on ${i}`};case`spam`:return{reason:n,label:`Flagged as spam on ${i}`};default:return{reason:n,label:`Email disabled on ${i}`}}}function tn(e){return e?e.filter(e=>e.subscribe_on_signup===!0&&e.visibility===`members`).map(e=>e.id):[]}function nn(e){return e!==`disabled`}function rn(e){return 500-[...e].length}function an(e,t,n){let r=pn(t),i={id:e,name:r.name,email:r.email,note:r.note,labels:r.labels};return s(r.newsletters,n.newsletters)||(i.newsletters=r.newsletters.map(e=>({id:e}))),i}function on(e,t,n){let r=typeof n==`string`?n.trim()||void 0:Xt(n);return{id:e,custom_fields:{[t]:r??null}}}var sn={line1:`Enter a street address.`,line2:`Enter a shorter address line.`,city:`Enter a city.`,state:`Enter a shorter state.`,postal_code:`Enter a postal code.`,country:`Enter a 2-letter country code, like US.`},cn=new Set([`line1`,`city`,`postal_code`]);function ln(e,t){let n=t.code===`too_big`&&typeof t.maximum==`number`?t.maximum:void 0;if(e.type===`address`){let e=t.path[0];if(typeof e==`string`){if(n!==void 0&&cn.has(e))return`Use ${n} characters or fewer.`;if(e in sn)return sn[e]}}return n===void 0?`This text is too long to save. Shorten it a little.`:`Use ${n} characters or fewer.`}function un(e,t){let n={},r=Yt(e);for(let e of t){let t=r[e.key];if(t===void 0)continue;let i=ct[e.type];if(!i)continue;let a=i.value.safeParse(t);if(!a.success)for(let t of a.error.issues){let r=[e.key,...t.path].join(`.`);n[r]??=ln(e,t)}}return n}function dn(e){let t=e?.data,n={};for(let e of t?.errors??[])e.property?.startsWith(`custom_fields.`)&&(n[e.property.slice(14)]=e.context||e.message||`Invalid value.`);return Object.keys(n).length?n:void 0}function fn(e,t){return e.map(e=>t.get(e)??{name:e,slug:e})}function pn(e){return{name:e.name.trim(),email:e.email.trim(),note:e.note,labels:e.labels,newsletters:e.newsletters}}function mn(e,t){return!e||!!t&&s(pn(e),t)}function hn(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function gn(e){let t=hn(e);return t?t.country_code===`US`&&t.region?`${t.region}, US`:t.country||`Unknown location`:`Unknown location`}function _n(e){let t=[e.state,e.postal_code].filter(Boolean).join(` `);return[e.line1,e.line2,e.city,t,e.country].filter(Boolean).join(`, `)}function vn(e){let t=e?.referrer_source;return!t||t===`Created manually`?null:t}var yn={line1:`Address line 1`,line2:`Address line 2`,city:`City`,state:`State`,postal_code:`Postal code`,country:`Country`},bn=({message:e})=>e?(0,Y.jsx)(`p`,{className:`text-sm text-destructive`,role:`alert`,children:e}):null,xn=({inputId:e,value:t,errors:n,disabled:r,onChange:i})=>(0,Y.jsx)(`div`,{className:`grid gap-x-4 gap-y-3 md:grid-cols-2`,children:qt.map(a=>{let o=`${e}-${a}`,s=n?.[a];return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:o,children:yn[a]}),(0,Y.jsx)(K,{"aria-invalid":s?!0:void 0,disabled:r,id:o,value:t[a]??``,onChange:e=>i({...t,[a]:e.target.value})}),(0,Y.jsx)(bn,{message:s})]},a)})}),Sn=({field:e,inputId:t,value:n,errors:r,disabled:i,onChange:a})=>{let o=r?.[``];switch(ut(e).input){case`text`:return(0,Y.jsx)(K,{"aria-invalid":o?!0:void 0,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`textarea`:return(0,Y.jsx)(ce,{"aria-invalid":o?!0:void 0,className:`max-w-full resize-y`,disabled:i,id:t,value:typeof n==`string`?n:``,onChange:e=>a(e.target.value)});case`address`:return(0,Y.jsx)(xn,{disabled:i,errors:r,inputId:t,value:typeof n==`object`&&n?n:{},onChange:a});default:return null}},Cn=({memberId:e,field:t,initialValue:n,onClose:r})=>{let i=ut(t).input===`address`,[o,c]=J.useState(n??(i?{}:``)),[l,u]=J.useState(!1),[d,f]=J.useState(),p=fe(),m=un({[t.key]:o},[t]),h={...l?m:{},...d},g=Object.fromEntries(Object.entries(h).map(([e,n])=>[e===t.key?``:e.slice(t.key.length+1),n])),_=`member-custom-field-${t.key}`,v=!s(Yt({[t.key]:o}),Yt({[t.key]:n}));return(0,Y.jsx)(q,{open:!0,onOpenChange:e=>{!e&&!p.isPending&&r()},children:(0,Y.jsxs)(P,{"data-testid":`member-custom-field-edit-modal`,onEscapeKeyDown:e=>{(v||p.isPending)&&e.preventDefault()},onInteractOutside:e=>{(v||p.isPending)&&e.preventDefault()},children:[(0,Y.jsx)(G,{children:(0,Y.jsx)(k,{children:t.name})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[!i&&(0,Y.jsx)(E,{className:`sr-only`,htmlFor:_,children:t.name}),(0,Y.jsx)(Sn,{disabled:p.isPending,errors:g,field:t,inputId:_,value:o,onChange:e=>{f(void 0),c(e)}}),(0,Y.jsx)(bn,{message:g[``]})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(F,{disabled:p.isPending,variant:`outline`,onClick:r,children:`Cancel`}),(0,Y.jsx)(F,{className:`min-w-16`,disabled:p.isPending,onClick:()=>{if(!p.isPending){if(!v){r();return}if(Object.keys(m).length>0){u(!0);return}p.mutate(on(e,t.key,o),{onSuccess:()=>{a.success(`${t.name} saved`),r()},onError:e=>{let n=dn(e);f(n),n||a.error(`${t.name} couldn’t be saved`)}})}},children:p.isPending?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):`Save`})]})]})})};function wn(e){return e===void 0?null:typeof e==`string`?e:_n(e)||null}var Tn=({memberId:e,customFields:t,disabled:n})=>{let{data:r,isLoading:i}=lt(),a=r?.members_custom_fields??[],o=Yt(t),[s,c]=J.useState(null);return i||a.length===0?null:(0,Y.jsxs)(`section`,{"aria-labelledby":`member-custom-fields-heading`,className:`flex flex-col gap-3`,"data-testid":`member-custom-fields-field`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-custom-fields-heading`,children:`Custom fields`}),(0,Y.jsx)(w,{children:(0,Y.jsx)(C,{className:`px-6 py-4`,children:(0,Y.jsx)(`ul`,{children:a.map(e=>{let t=wn(o[e.key]);return(0,Y.jsx)(`li`,{className:`border-b border-border transition-colors last:border-b-0 hover:border-b-transparent [&:has(+li:hover)]:border-b-transparent`,children:(0,Y.jsxs)(`button`,{"aria-label":t?`Edit ${e.name}: ${t}`:`Edit ${e.name}`,className:`group -mx-3 flex w-[calc(100%+1.5rem)] items-center justify-between gap-4 rounded-md px-3 py-3 text-left transition-colors hover:bg-table-row-hover disabled:cursor-not-allowed disabled:opacity-50`,disabled:n,type:`button`,onClick:()=>{window.getSelection()?.toString()||c(e)},children:[(0,Y.jsxs)(`span`,{className:`min-w-0`,children:[(0,Y.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:e.name}),t?(0,Y.jsx)(`span`,{className:`block break-words select-text`,children:t}):(0,Y.jsx)(`span`,{className:`block text-muted-foreground`,children:`–`})]}),(0,Y.jsx)(Te,{"aria-hidden":`true`,className:`shrink-0 text-muted-foreground opacity-0 transition-all group-hover:opacity-100 group-focus-visible:opacity-100`,size:16})]})},e.key)})})})}),s&&(0,Y.jsx)(Cn,{field:s,initialValue:o[s.key],memberId:e,onClose:()=>c(null)},s.key)]})},En=({labels:e,disabled:t,onChange:n})=>{let r=e.map(e=>e.slug),i=J.useRef(e);i.current=e;let a=J.useRef(new Map),o=e=>{for(let t of e)a.current.set(t.slug,{name:t.name,slug:t.slug})};o(e);let s=dt({selectedSlugs:r,onSelectionChange:e=>n(fn(e,a.current))});o(s.labels);let c=async e=>{let t=await s.createLabel(e);if(t){let e={name:t.name,slug:t.slug};a.current.set(t.slug,e),n([...i.current.filter(e=>e.slug!==t.slug),e])}return t};return(0,Y.jsx)(`div`,{className:t?`pointer-events-none opacity-60`:void 0,"data-testid":`member-labels-field`,...t?{inert:``}:{},children:(0,Y.jsx)(ft,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,placeholder:``,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:r,onCreate:c,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel})})},Dn=({draft:e,emailError:t,disabled:n,onChange:r,onEmailBlur:i,onNameBlur:a})=>{let o=rn(e.note),s=500-o,c=o<0?`text-destructive`:s>=500*.8?`text-state-warning`:`text-state-success`;return(0,Y.jsxs)(`div`,{className:`grid items-stretch gap-6 md:grid-cols-2`,"data-testid":`member-detail-form`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`member-name`,children:`Name`}),(0,Y.jsx)(K,{disabled:n,id:`member-name`,value:e.name,onBlur:a,onChange:e=>r({name:e.target.value})})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`member-email`,children:`Email`}),(0,Y.jsx)(K,{"aria-invalid":!!t,disabled:n,id:`member-email`,type:`email`,value:e.email,onBlur:i,onChange:e=>r({email:e.target.value})}),t&&(0,Y.jsx)(`p`,{className:`text-sm text-destructive`,children:t})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{children:`Labels`}),(0,Y.jsx)(En,{disabled:n,labels:e.labels,onChange:e=>r({labels:e})})]})]}),(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-1.5`,children:[(0,Y.jsxs)(E,{htmlFor:`member-note`,children:[`Note `,(0,Y.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(not visible to member)`})]}),(0,Y.jsxs)(ue,{className:`flex-1`,children:[(0,Y.jsx)(le,{className:`h-full`,disabled:n,id:`member-note`,value:e.note,onChange:e=>r({note:e.target.value})}),(0,Y.jsx)(D,{align:`block-end`,className:`justify-end`,children:(0,Y.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Maximum: `,(0,Y.jsx)(`span`,{className:`font-semibold text-foreground`,children:500}),` characters. You’ve used`,` `,(0,Y.jsx)(`span`,{className:m(`font-semibold`,c),children:s})]})})]})]})]})},On=e=>Z.default.utc(e).format(`D MMM YYYY`),$=({icon:e,children:t})=>(0,Y.jsxs)(`p`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e}),(0,Y.jsx)(`span`,{className:`min-w-0 truncate`,children:t})]}),kn=e=>e.split(` `)[0]||``,An=({member:e,draftName:t,draftEmail:n,engagementEnabled:r})=>{let i=(t??e?.name??``).trim(),a=(n??e?.email??``).trim(),o=i||a||`New member`,s=!e;return(0,Y.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col gap-6 lg:w-80`,"data-testid":`member-detail-sidebar`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,Y.jsx)(Oe,{className:`size-12 min-w-12 [&_span]:text-lg`,email:a||void 0,name:i||void 0,src:e?.avatar_image}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`h2`,{className:`truncate text-xl font-semibold`,children:o}),i&&a&&(0,Y.jsx)(`a`,{className:`block truncate text-muted-foreground hover:underline`,href:`mailto:${a}`,children:a}),!i&&a&&(0,Y.jsx)(`span`,{className:`block truncate text-muted-foreground`,children:a})]})]}),!s&&e&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 text-sm`,children:[(0,Y.jsx)($,{icon:(0,Y.jsx)(Qe,{size:16}),children:(0,Y.jsx)(`span`,{"data-testid":`member-detail-location`,children:gn(e.geolocation)})}),(0,Y.jsx)($,{icon:(0,Y.jsx)(de,{size:16}),children:e.last_seen_at?`Last seen on ${On(e.last_seen_at)}`:`Not seen yet`}),e.can_comment===!1&&(0,Y.jsx)($,{icon:(0,Y.jsx)(Se,{size:16}),children:`Comments disabled`})]}),(0,Y.jsxs)(`div`,{className:`mt-4 flex flex-col gap-3 text-sm`,children:[(0,Y.jsx)(`h3`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Signup info`}),(0,Y.jsxs)($,{icon:(0,Y.jsx)(U,{size:16}),children:[`Created — `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:On(e.created_at)})]}),(()=>{let t=vn(e.attribution);return t?(0,Y.jsxs)($,{icon:(0,Y.jsx)(ye,{size:16}),children:[`Source — `,(0,Y.jsx)(`span`,{className:`text-foreground`,title:t,children:t})]}):null})(),e.attribution?.title&&(0,Y.jsxs)($,{icon:(0,Y.jsx)(he,{size:16}),children:[`Page — `,Et(e.attribution.url)?(0,Y.jsx)(`a`,{className:`truncate text-foreground hover:underline`,href:e.attribution.url,rel:`noopener noreferrer`,target:`_blank`,title:e.attribution.title,children:e.attribution.title}):(0,Y.jsx)(`span`,{className:`truncate text-foreground`,title:e.attribution.title,children:e.attribution.title})]})]}),r&&(0,Y.jsxs)(`section`,{className:`mt-4 flex flex-col gap-3 text-sm`,"data-testid":`member-detail-engagement`,children:[(0,Y.jsx)(`h4`,{className:`border-b border-border pb-2 text-base font-semibold`,children:`Engagement`}),(e.email_count??0)===0?(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:i?`We’ll show ${kn(i)}’s email stats here once they receive their first newsletter.`:`We’ll show this member’s email stats here once they receive their first newsletter.`}):(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails received`}),(0,Y.jsx)(`p`,{className:`text-2xl font-semibold`,children:e.email_count})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`Emails opened`}),(0,Y.jsx)(`p`,{className:`text-2xl font-semibold`,children:e.email_opened_count??0})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`Average open rate`}),e.email_open_rate===null||e.email_open_rate===void 0?(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`This metric is calculated once a member has received 5 newsletters.`}):(0,Y.jsxs)(`p`,{className:`text-2xl font-semibold`,children:[e.email_open_rate,(0,Y.jsx)(`span`,{className:`text-base font-normal text-muted-foreground`,children:`%`})]})]})]})]})]})]})},jn=({memberId:e,emailSuppression:t,subscribedIds:n,disabled:r,onChange:i})=>{let o=e?en(t):null,s=be(),{data:c,isLoading:l}=ot({searchParams:{filter:`status:active`,limit:`50`}}),u=c?.newsletters??[],d=R(),f=s.isPending||s.isSuccess&&d;return!o&&(l||u.length===0)?null:(0,Y.jsxs)(`section`,{"aria-labelledby":`member-newsletters-heading`,className:`flex flex-col gap-3`,"data-testid":`member-newsletters-field`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-newsletters-heading`,children:`Newsletters`}),(0,Y.jsx)(w,{children:(0,Y.jsx)(C,{className:`p-6`,children:o?(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,"data-testid":`member-suppression-banner`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(Je,{className:`mt-0.5 shrink-0 text-muted-foreground`,size:20}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:`Email disabled`}),o.label&&(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o.label}),(0,Y.jsx)(`a`,{className:`text-sm text-muted-foreground hover:underline`,href:`https://ghost.org/help/disabled-emails`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]}),(0,Y.jsx)(F,{disabled:r||f,onClick:()=>{e&&s.mutate({id:e},{onSuccess:()=>a.success(`Email re-enabled successfully`),onError:()=>a.error(`Failed to re-enable email. Please try again.`)})},children:f?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Re-enabling email`})]}):`Re-enable email`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`ul`,{className:`divide-y divide-border`,children:u.map(e=>{let t=n.includes(e.id);return(0,Y.jsxs)(`li`,{className:`flex items-center justify-between gap-4 py-3 first:pt-0 last:pb-0`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:e.name}),e.description&&(0,Y.jsx)(`p`,{className:`truncate text-sm text-muted-foreground`,children:e.description})]}),(0,Y.jsx)(y,{"aria-label":`Subscribe to ${e.name}`,checked:t,"data-testid":`member-subscription-toggle`,disabled:r,onCheckedChange:()=>i(Zt(n,e.id))})]},e.id)})}),(0,Y.jsxs)(`p`,{className:`mt-4 text-sm text-muted-foreground`,children:[`If disabled, member will `,(0,Y.jsx)(`em`,{children:`not`}),` receive newsletter emails`]})]})})})]})},Mn=`complimentary`,Nn=`gift subscription`;function Pn(e){if(e.id)return`paid`;let t=e.plan?.nickname?.toLowerCase()??``;return t===Mn?`complimentary`:t===Nn?`gift`:`paid`}function Fn(e){return e===`year`?`yearly`:`monthly`}function In(e){if(e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`))return`Free trial`;let t=e.price?.nickname;return t&&t!==`Monthly`&&t!==`Yearly`?t:null}function Ln(e){return e.status===`canceled`||e.cancel_at_period_end?`Canceled`:`Active`}var Rn=e=>e?(0,Z.default)(new Date(e)).format(`D MMM YYYY`):``,zn=e=>e?(0,Z.default)(e).utc().format(`D MMM YYYY`):``;function Bn(e){let t=Pn(e);if(t===`complimentary`||t===`gift`){let t=zn(e.tier?.expiry_at);return t?`Expires ${t}`:``}let n=e.status===`canceled`&&!e.cancel_at_period_end?``:Rn(e.current_period_end);return e.status===`canceled`?n?`Ended ${n}`:``:e.cancel_at_period_end?n?`Has access until ${n}`:``:e.trial_end_at&&(0,Z.default)(e.trial_end_at).isAfter(new Date,`day`)?`Ends ${Rn(e.trial_end_at)}`:n?`Renews ${n}`:``}function Vn(e){let t=[],n=new Map;for(let r of e){if(!r.price)continue;let e=r.tier??r.price.tier;if(!e?.id)continue;let i=n.get(e.id);i||(i={tier:e,subscriptions:[]},n.set(e.id,i),t.push(i)),i.subscriptions.push(r)}return t}var Hn=[`forever`,`week`,`month`,`half-year`,`year`,`custom`];function Un(e){return Hn.includes(e)}function Wn(e,t){switch(e){case`forever`:return null;case`week`:return Z.default.utc().add(7,`days`).startOf(`day`).toISOString();case`month`:return Z.default.utc().add(1,`month`).startOf(`day`).toISOString();case`half-year`:return Z.default.utc().add(6,`months`).startOf(`day`).toISOString();case`year`:return Z.default.utc().add(1,`year`).startOf(`day`).toISOString();case`custom`:return t?(0,Z.default)(t,`YYYY-MM-DD`).startOf(`day`).endOf(`day`).set(`millisecond`,0).add((0,Z.default)().utcOffset(),`minutes`).toISOString():null}}var Gn=new Set([`active`,`trialing`,`unpaid`,`past_due`]),Kn=[{value:`forever`,label:`Forever`},{value:`week`,label:`1 Week`},{value:`month`,label:`1 Month`},{value:`half-year`,label:`6 Months`},{value:`year`,label:`1 Year`},{value:`custom`,label:`Custom`}],qn=({open:e,onOpenChange:t,member:n})=>{let{data:r,isLoading:i}=st({searchParams:{filter:`type:paid+active:true`,limit:`all`}}),o=r?.tiers??[],[s,c]=J.useState(``),[l,u]=J.useState(`forever`),[d,f]=J.useState(``);J.useEffect(()=>{e&&(c(``),u(`forever`),f(``))},[e]);let p=ve(),m=fe(),[h,g]=J.useState(!1),_=(n.subscriptions??[]).filter(e=>Pn(e)===`paid`&&Gn.has(e.status)),v=(0,Z.default)().format(`YYYY-MM-DD`),y=!!s&&!h&&(l!==`custom`||!!d),ne=async()=>{if(y){g(!0);try{for(let e of _)await p.mutateAsync({memberId:n.id,subscriptionId:e.id,status:`canceled`});let e=Wn(l,l===`custom`?d:null),r=e?{id:s,expiry_at:e}:{id:s};await m.mutateAsync({id:n.id,...n.email?{email:n.email}:{},tiers:[r]}),a.success(`Complimentary subscription added`),t(!1)}catch{a.error(`Couldn’t add complimentary subscription`)}finally{g(!1)}}};return(0,Y.jsx)(q,{open:e,onOpenChange:e=>{h||t(e)},children:(0,Y.jsxs)(P,{"data-testid":`add-comp-modal`,children:[(0,Y.jsxs)(G,{children:[(0,Y.jsx)(k,{children:`Add complimentary subscription`}),(0,Y.jsx)(A,{children:`Grants this member access to a paid tier for the chosen duration. Any active paid subscription is canceled first.`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`comp-tier`,children:`Tier`}),(0,Y.jsxs)(te,{value:s,onValueChange:c,children:[(0,Y.jsx)(ee,{"data-testid":`comp-tier-select`,disabled:i||h,id:`comp-tier`,children:(0,Y.jsx)(S,{placeholder:i?`Loading tiers…`:`Select a tier`})}),(0,Y.jsx)(x,{children:o.map(e=>(0,Y.jsx)(b,{"data-tier-id":e.id,value:e.id,children:e.name},e.id))})]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`comp-duration`,children:`Duration`}),(0,Y.jsxs)(te,{value:l,onValueChange:e=>{Un(e)&&u(e)},children:[(0,Y.jsx)(ee,{"data-testid":`comp-duration-select`,disabled:h,id:`comp-duration`,children:(0,Y.jsx)(S,{})}),(0,Y.jsx)(x,{children:Kn.map(e=>(0,Y.jsx)(b,{value:e.value,children:e.label},e.value))})]})]}),l===`custom`&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(E,{htmlFor:`comp-custom-date`,children:`Expires on`}),(0,Y.jsx)(K,{"data-testid":`comp-custom-date`,disabled:h,id:`comp-custom-date`,min:v,type:`date`,value:d,onChange:e=>f(e.target.value)})]})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(F,{disabled:h,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)(F,{"data-testid":`comp-add-confirm`,disabled:!y,onClick:()=>void ne(),children:h?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Adding`})]}):`Add subscription`})]})]})})},Jn=({memberId:e,subscription:t})=>{let n=ve(),r=R(),i=n.isPending||n.isSuccess&&r,o=t.status===`canceled`,s=t.cancel_at_period_end,c=(r,i,o)=>{n.mutate({memberId:e,subscriptionId:t.id,cancelAtPeriodEnd:r},{onSuccess:()=>a.success(i),onError:()=>a.error(o)})};return(0,Y.jsxs)(I,{children:[(0,Y.jsx)(Ve,{asChild:!0,children:(0,Y.jsx)(F,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:i,size:`sm`,variant:`outline`,children:i?(0,Y.jsx)(W,{size:`sm`}):(0,Y.jsx)(H,{})})}),(0,Y.jsxs)(ke,{align:`end`,children:[(0,Y.jsx)(B,{asChild:!0,children:(0,Y.jsx)(`a`,{href:`https://dashboard.stripe.com/customers/${t.customer.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe customer`})}),(0,Y.jsx)(qe,{}),(0,Y.jsx)(B,{asChild:!0,children:(0,Y.jsx)(`a`,{href:`https://dashboard.stripe.com/subscriptions/${t.id}`,rel:`noopener noreferrer`,target:`_blank`,children:`View Stripe subscription`})}),!o&&(s?(0,Y.jsx)(B,{"data-testid":`continue-subscription`,onSelect:()=>c(!1,`Subscription continued`,`Couldn’t continue subscription`),children:`Continue subscription`}):(0,Y.jsx)(B,{className:`text-destructive focus:text-destructive`,"data-testid":`cancel-subscription`,onSelect:()=>c(!0,`Subscription canceled`,`Couldn’t cancel subscription`),children:`Cancel subscription`}))]})]})},Yn=({member:e,tierId:t})=>{let n=fe(),[r,i]=J.useState(!1),o=R(),s=n.isPending||n.isSuccess&&o;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(Ve,{asChild:!0,children:(0,Y.jsx)(F,{"aria-label":`Subscription menu`,"data-testid":`subscription-actions`,disabled:s,size:`sm`,variant:`outline`,children:s?(0,Y.jsx)(W,{size:`sm`}):(0,Y.jsx)(H,{})})}),(0,Y.jsx)(ke,{align:`end`,children:(0,Y.jsx)(B,{className:`text-destructive focus:text-destructive`,"data-testid":`remove-complimentary`,onSelect:()=>i(!0),children:`Remove complimentary subscription`})})]}),(0,Y.jsx)(Ye,{open:r,onOpenChange:e=>{n.isPending||i(e)},children:(0,Y.jsxs)(Ke,{children:[(0,Y.jsxs)(ze,{children:[(0,Y.jsx)(Xe,{children:`Remove complimentary subscription?`}),(0,Y.jsx)(rt,{children:`The member will lose access to this tier immediately.`})]}),(0,Y.jsxs)(Le,{children:[(0,Y.jsx)(Pe,{disabled:n.isPending,children:`Cancel`}),(0,Y.jsx)(F,{"data-testid":`confirm-remove-complimentary`,disabled:n.isPending,variant:`destructive`,onClick:()=>{let r=(e.tiers??[]).filter(e=>e.id!==t).map(e=>({id:e.id,expiry_at:e.expiry_at??null}));n.mutate({id:e.id,email:e.email,tiers:r},{onSuccess:()=>{a.success(`Complimentary subscription removed`),i(!1)},onError:()=>a.error(`Couldn’t remove complimentary subscription`)})},children:n.isPending?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Removing`})]}):`Remove`})]})]})})]})},Xn=e=>{let t=e/100;return t.toLocaleString(void 0,t%1==0?void 0:{minimumFractionDigits:2,maximumFractionDigits:2})},Zn=({sub:e,kind:t})=>{if(t===`complimentary`||t===`gift`)return(0,Y.jsx)(`div`,{className:`flex size-20 shrink-0 items-center justify-center rounded-lg bg-muted text-center text-sm font-medium text-muted-foreground`,children:t===`complimentary`?`Comp`:`Gift`});let n=c(e.price.currency),r=Xn(e.price.amount),i=Fn(e.price.interval);return(0,Y.jsxs)(`div`,{className:`flex size-20 shrink-0 flex-col items-center justify-center rounded-lg bg-muted text-foreground`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start leading-none`,children:[(0,Y.jsx)(`span`,{className:`mt-1 text-sm font-semibold`,children:n}),(0,Y.jsx)(`span`,{className:`text-3xl font-semibold tracking-tight`,children:r})]}),(0,Y.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:i})]})},Qn=e=>e?Z.default.utc(e).format(`D MMM YYYY`):``,$n=({sub:e})=>{let t=Qn(e.start_date),n=e.attribution?.referrer_source,r=n&&n!==`Unknown`,i=e.attribution?.title?{title:e.attribution.title,url:e.attribution.url??null}:null;return(0,Y.jsxs)(`div`,{className:`mt-3 space-y-1 border-t border-border pt-3 text-sm text-muted-foreground`,children:[t&&(0,Y.jsxs)(`p`,{children:[`Created — `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:t})]}),r&&(0,Y.jsxs)(`p`,{children:[`Source — `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:n})]}),i&&(0,Y.jsxs)(`p`,{children:[`Page — `,i.url?(0,Y.jsx)(`a`,{className:`text-foreground hover:underline`,href:i.url,rel:`noopener noreferrer`,target:`_blank`,children:i.title}):(0,Y.jsx)(`span`,{className:`text-foreground`,children:i.title})]})]})},er=({member:e,sub:t,showDivider:n})=>{let[r,i]=J.useState(!1),a=Pn(t),o=Ln(t),s=Bn(t),c=In(t);return(0,Y.jsxs)(`div`,{className:m(`flex items-start justify-between gap-4 py-5 first:pt-0 last:pb-0`,n&&`border-t border-border`),"data-testid":`member-subscription`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-4`,children:[(0,Y.jsx)(Zn,{kind:a,sub:t}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 pt-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 truncate font-semibold`,"data-testid":`member-subscription-tier`,children:t.tier?.name??`Subscription`}),(0,Y.jsx)(pe,{"data-testid":`member-subscription-status`,variant:o===`Canceled`?`secondary`:`success`,children:o})]}),(c||s)&&(0,Y.jsxs)(`div`,{className:`mt-1 text-sm`,children:[c&&(0,Y.jsx)(`span`,{className:`font-semibold text-foreground`,children:c}),c&&s&&(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:` – `}),s&&(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:s})]}),(0,Y.jsxs)(`button`,{"aria-expanded":r,className:`mt-1 inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline`,"data-testid":`member-subscription-details-toggle`,type:`button`,onClick:()=>i(e=>!e),children:[`Details`,(0,Y.jsx)(Fe,{className:m(`transition-transform`,r&&`rotate-180`),size:14})]}),r&&(0,Y.jsx)($n,{sub:t})]})]}),a===`paid`&&(0,Y.jsx)(Jn,{memberId:e.id,subscription:t}),a===`complimentary`&&t.tier?.id&&(0,Y.jsx)(Yn,{member:e,tierId:t.tier.id})]})},tr=({member:e,canAddComp:t})=>{let[n,r]=J.useState(!1);if(!e)return(0,Y.jsx)(w,{"data-testid":`member-subscriptions`,children:(0,Y.jsx)(C,{className:`pt-6`,children:(0,Y.jsx)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:(0,Y.jsx)(T,{title:`No subscriptions`,children:(0,Y.jsx)(L,{})})})})});let i=Vn(e.subscriptions??[]),a=i.length>0,o=t&&(e.tiers?.length??0)===0,s=o?(0,Y.jsxs)(F,{"data-testid":`add-complimentary`,variant:`outline`,onClick:()=>r(!0),children:[(0,Y.jsx)(_e,{className:`mr-1`,size:16}),`Add complimentary subscription`]}):null;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(w,{"data-testid":`member-subscriptions`,children:(0,Y.jsx)(C,{className:`pt-6`,children:a?(0,Y.jsxs)(Y.Fragment,{children:[i.map(t=>(0,Y.jsxs)(`div`,{className:`flex flex-col`,children:[t.subscriptions.map((n,r)=>(0,Y.jsx)(er,{member:e,showDivider:r>0,sub:n},n.id||`${t.tier.id}-${r}`)),t.subscriptions.length>1&&(0,Y.jsxs)(`div`,{className:`pt-3 text-sm text-muted-foreground`,children:[t.subscriptions.length,` subscriptions`]})]},t.tier.id)),s&&(0,Y.jsx)(`div`,{className:`mt-4 flex justify-center border-t border-border pt-4`,children:s})]}):(0,Y.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-4`,children:[(0,Y.jsx)(T,{title:`No subscriptions`,children:(0,Y.jsx)(L,{})}),s]})})}),o&&(0,Y.jsx)(qn,{member:e,open:n,onOpenChange:r})]})};function nr(e){let t=new URLSearchParams(e),n=t.get(`back`);if(n&&n.startsWith(`/members`))return n;let r=t.get(`post`);return r?`/members?post=${encodeURIComponent(r)}`:`/members`}function rr(e){let[t,n]=J.useState(null),r=J.useRef(e);return r.current=e,J.useEffect(()=>{let e=e=>{if(!r.current||e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0)return;let t=e.target.closest?.(`a[href^="#/"]`);!t||t.hasAttribute(`data-discover`)||(e.preventDefault(),e.stopPropagation(),n(t.getAttribute(`href`)))};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)},[]),{blockedHref:t,isBlocked:t!==null,proceed:()=>{t&&(n(null),window.location.hash=t)},reset:()=>n(null)}}var ir=`new`,ar=({paidMembersEnabled:e,newslettersUiEnabled:t,engagementEnabled:n})=>{let{member_id:r=``}=d(),i=u(),c=p(),m=nr(i.search),h=r===ir,v=Re(`membersCustomFields`),{data:y,isLoading:b,error:x,refetch:ee}=Ae(r,{enabled:!!r&&!h,searchParams:{include:v?`tiers,custom_fields`:`tiers`},defaultErrorHandler:!1}),S=y?.members?.[0],te=!h&&!b&&!!x,T=!h&&!b&&!x&&!S,E=fe(),ce=Me(),D=h?ce:E,{data:le}=st({searchParams:{filter:`type:paid+active:true`,limit:`all`},enabled:e}),ue=(le?.tiers?.length??0)>0,{data:O}=ot({searchParams:{filter:`status:active`,limit:`50`}}),k=O!==void 0,de=(O?.newsletters?.length??0)>1,A=(le?.tiers?.length??0)>1,[j,M]=J.useState(void 0),N=J.useRef(void 0),P=J.useRef(void 0),pe=J.useRef(!1),I=J.useRef(!1);J.useEffect(()=>{if(h){if(N.current!==ir){N.current=ir,pe.current=!1;let e=Q({});P.current=e,M(e)}return}if(!S)return;let e=Q(S);if(N.current!==S.id){N.current=S.id,P.current=e,M(e);return}let t=P.current;P.current=e,M(n=>mn(n,t)?e:n)},[S,h]),J.useEffect(()=>{I.current=!1},[r]),J.useEffect(()=>{if(!h||pe.current||!O?.newsletters)return;pe.current=!0;let e=tn(O.newsletters);if(e.length===0)return;let t={...P.current??Q({}),newsletters:[...e].sort()};P.current=t,M(t=>t&&{...t,newsletters:[...e].sort()})},[h,O]);let me=h?P.current:S?Q(S):void 0,L=!!j&&!!me&&!s(pn(j),me),he=!!j&&Qt(j.email),[ge,R]=J.useState(!1);J.useEffect(()=>{R(!1)},[S?.id,h]);let _e=j?$t(j.email,ge):null,[ve,ye]=J.useState({name:``,email:``});J.useEffect(()=>{if(h){ye({name:``,email:``});return}S&&ye({name:S.name??``,email:S.email??``})},[S?.id,S?.name,S?.email,h]);let z=()=>{j&&ye({name:j.name,email:j.email})},be=e=>{D.isError&&D.reset(),M(t=>t&&{...t,...e})},xe=()=>{if(!(!j||!L||!he||D.isPending)){if(z(),h){ce.mutate({email:j.email.trim(),name:j.name.trim()||void 0,note:j.note.trim()||void 0,labels:j.labels.length?j.labels:void 0,newsletters:pe.current?j.newsletters.map(e=>({id:e})):void 0},{onSuccess:e=>{let t=e.members?.[0];if(!t){a.error(`Member couldn’t be created`);return}I.current=!0,a.success(`Member created`),c(`/members/${t.id}`,{replace:!0})},onError:()=>{a.error(`Member couldn’t be created`)}});return}!S||N.current!==S.id||E.mutate(an(S.id,j,Q(S)),{onSuccess:e=>{let t=e.members?.[0];if(t){let e=Q(t);P.current=e,M(e)}a.success(`Member updated`)},onError:()=>{a.error(`Member couldn’t be saved`)}})}};o(D.isPending||L);let Se=l(({currentLocation:e,nextLocation:t})=>!I.current&&L&&e.pathname!==t.pathname),B=rr(L),Ce=Se.state===`blocked`||B.isBlocked,V=`Save`,we=`default`,H=!0;D.isPending?V=(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{size:`sm`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Saving`})]}):L?(V=D.isError?`Retry`:`Save`,we=D.isError?`destructive`:`default`,H=!he):!h&&E.isSuccess&&(V=`Saved`);let Te=!!j&&(h||!!S),U=`Member`;return h?U=`New member`:S?U=Ee(S):T&&(U=`Member not found`),(0,Y.jsx)(g,{className:`size-full`,children:(0,Y.jsx)(_,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Y.jsxs)(X,{"data-testid":`member-detail`,children:[(0,Y.jsx)(X.Header,{children:(0,Y.jsxs)(at,{blurredBackground:!1,sticky:!1,children:[(0,Y.jsx)(at.Left,{children:(0,Y.jsx)(se,{children:(0,Y.jsxs)(re,{children:[(0,Y.jsx)(ie,{children:(0,Y.jsx)(oe,{asChild:!0,children:(0,Y.jsx)(f,{"data-test-link":`members-back`,to:m,children:`Members`})})}),(0,Y.jsx)(ae,{}),(0,Y.jsx)(ie,{children:!h&&b?(0,Y.jsx)(et,{className:`h-4 w-40`}):(0,Y.jsx)(ne,{className:`truncate`,"data-testid":`member-detail-title`,children:U})})]})})}),(h||S)&&(0,Y.jsx)(at.Actions,{children:(0,Y.jsxs)(at.ActionGroup,{children:[S&&!h&&(0,Y.jsx)(Tt,{allowLeaveWithUnsavedChanges:()=>{I.current=!0},member:S},S.id),(0,Y.jsx)(F,{className:`min-w-16`,disabled:H,variant:we,onClick:xe,children:V})]})})]})}),(0,Y.jsxs)(X.Body,{children:[te&&(0,Y.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3`,"data-testid":`member-detail-load-error`,children:[(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`Couldn’t load this member.`}),(0,Y.jsx)(F,{variant:`outline`,onClick:()=>void ee(),children:`Retry`})]}),T&&(0,Y.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Y.jsx)(`p`,{className:`text-muted-foreground`,children:`This member couldn’t be found.`})}),Te&&j&&(0,Y.jsxs)(`div`,{className:`flex flex-1 flex-col gap-8 lg:flex-row lg:items-start lg:gap-12`,children:[(0,Y.jsx)(An,{draftEmail:ve.email,draftName:ve.name,engagementEnabled:n,member:S}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-8`,children:[(0,Y.jsx)(w,{children:(0,Y.jsx)(C,{className:`p-6`,children:(0,Y.jsx)(Dn,{disabled:D.isPending,draft:j,emailError:_e,onChange:be,onEmailBlur:()=>{R(!0),z()},onNameBlur:z})})}),v&&S&&(0,Y.jsx)(Tn,{customFields:S.custom_fields,disabled:D.isPending,memberId:S.id}),t&&(h||S)&&(0,Y.jsx)(jn,{disabled:D.isPending,emailSuppression:S?.email_suppression,memberId:S?.id,subscribedIds:j.newsletters,onChange:e=>be({newsletters:e})}),e&&(0,Y.jsxs)(`section`,{"aria-labelledby":`member-subscriptions-heading`,className:`flex flex-col gap-3`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold`,id:`member-subscriptions-heading`,children:`Subscriptions`}),(0,Y.jsx)(tr,{canAddComp:ue,member:S})]}),(h||S&&k)&&(0,Y.jsx)(Kt,{hasMultipleNewsletters:de,hasMultipleTiers:A,memberId:S?.id,paidMembersEnabled:e})]})]})]}),(0,Y.jsx)(Ye,{open:Ce,onOpenChange:e=>{!e&&Ce&&(Se.reset?.(),B.reset())},children:(0,Y.jsxs)(Ke,{children:[(0,Y.jsxs)(ze,{children:[(0,Y.jsx)(Xe,{children:`Discard unsaved changes?`}),(0,Y.jsx)(rt,{children:`Your changes will be lost if you leave this member.`})]}),(0,Y.jsxs)(Le,{children:[(0,Y.jsx)(Pe,{children:`Keep editing`}),(0,Y.jsx)(F,{variant:`destructive`,onClick:()=>{B.isBlocked?B.proceed():Se.proceed?.()},children:`Leave`})]})]})})]})})})},or=()=>{let{data:e,isLoading:t}=N({});if(t||!e?.settings)return(0,Y.jsx)(g,{className:`size-full`,children:(0,Y.jsx)(_,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Y.jsx)(X,{children:(0,Y.jsx)(X.Body,{children:(0,Y.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Y.jsx)(W,{size:`lg`})})})})})});let n=V(e.settings,`editor_default_email_recipients`),r=V(e.settings,`members_signup_access`);return(0,Y.jsx)(ar,{engagementEnabled:r!==`none`&&n!==`disabled`,newslettersUiEnabled:nn(n),paidMembersEnabled:V(e.settings,`paid_members_enabled`)===!0})};export{or as default};
|