ghost 6.53.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.
Files changed (639) hide show
  1. package/components/ghost-storage-base-3.0.0.tgz +0 -0
  2. package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
  3. package/components/tryghost-adapter-base-scheduling-0.2.0.tgz +0 -0
  4. package/components/tryghost-adapter-base-sso-0.1.1.tgz +0 -0
  5. package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
  6. package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
  7. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  8. package/components/tryghost-kg-converters-1.2.3.tgz +0 -0
  9. package/components/tryghost-kg-default-nodes-2.1.3.tgz +0 -0
  10. package/components/tryghost-kg-lexical-html-renderer-1.4.3.tgz +0 -0
  11. package/core/boot.js +9 -6
  12. package/core/built/admin/assets/Combination-CJG7Flp-.js +41 -0
  13. package/core/built/admin/assets/Growth-BTP1LthE.js +3 -0
  14. package/core/built/admin/assets/Newsletters-CSEX0myc.js +1 -0
  15. package/core/built/admin/assets/Overview-BjACEsJF.js +1 -0
  16. package/core/built/admin/assets/{PolarAngleAxis-pciQ0MOy.js → PolarAngleAxis-BGjf7sBu.js} +1 -1
  17. package/core/built/admin/assets/{RadialBarChart-DWmw2PcX.js → RadialBarChart-zeFf9mBz.js} +1 -1
  18. package/core/built/admin/assets/Web-CxxxjCcv.js +2 -0
  19. package/core/built/admin/assets/account-migration-BklF2I_I.js +1 -0
  20. package/core/built/admin/assets/activitypub/{account-migration-BPZG37DJ.js → account-migration-CNovr6W-.js} +13 -13
  21. package/core/built/admin/assets/activitypub/activitypub.js +8 -8
  22. package/core/built/admin/assets/activitypub/{avatar-ZYco0ITb.js → avatar-B3DEDB1l.js} +10 -10
  23. package/core/built/admin/assets/activitypub/{avatar-flipboard-D541lc4F.js → avatar-flipboard-Cqrg0XMx.js} +3 -3
  24. package/core/built/admin/assets/activitypub/{bluesky-sharing-NOHUtHjl.js → bluesky-sharing-Ceslb1_M.js} +38 -37
  25. package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-B-GOFDPZ.js → chunk-KS7C4IRE-D4HEcEwi.js} +716 -710
  26. package/core/built/admin/assets/activitypub/{content-formatters-bwrp4iEO.js → content-formatters-BpQARh28.js} +229 -181
  27. package/core/built/admin/assets/activitypub/{copy-C7m7ovHw.js → copy-D9UWIAan.js} +2 -2
  28. package/core/built/admin/assets/activitypub/{dist-BqkDUQxJ2.js → dist-ByFmDSNP2.js} +64 -63
  29. package/core/built/admin/assets/activitypub/{dist-B5ira32t.js → dist-DHAjBcV3.js} +5 -5
  30. package/core/built/admin/assets/activitypub/{domain-iqE4YXwD.js → domain-C1qQvJ8C.js} +33 -33
  31. package/core/built/admin/assets/activitypub/{edit-profile-B8MFYh28.js → edit-profile-BcH-jEfM.js} +46 -45
  32. package/core/built/admin/assets/activitypub/{explore-BbdKodp3.js → explore-AxwBh9dI.js} +20 -20
  33. package/core/built/admin/assets/activitypub/{feed-Cl3A5owG.js → feed-BaOlbh7a.js} +15 -15
  34. package/core/built/admin/assets/activitypub/{field-DL6WyR-c.js → field-B7mYYQpN.js} +13 -13
  35. package/core/built/admin/assets/activitypub/{hash-6G3DzwL9.js → hash-BC9Q0N4c.js} +2 -2
  36. package/core/built/admin/assets/activitypub/{inbox-YmhuBice.js → inbox-DQ4ZnC1m.js} +2 -2
  37. package/core/built/admin/assets/activitypub/inbox-vXez-5uJ.js +1221 -0
  38. package/core/built/admin/assets/activitypub/{label-DGbLjDvE.js → label-Chv5T8bw.js} +6 -6
  39. package/core/built/admin/assets/activitypub/layout-CziktJXo.js +1 -0
  40. package/core/built/admin/assets/activitypub/{moderation-qnBtk1zS.js → moderation-DtSM2i1I.js} +32 -31
  41. package/core/built/admin/assets/activitypub/{note-C7ZRoSJv.js → note-Dckp4S-2.js} +21 -21
  42. package/core/built/admin/assets/activitypub/{notifications-DiEA4b1o.js → notifications-CG5T22vg.js} +17 -17
  43. package/core/built/admin/assets/activitypub/{onboarding-_JVgEwgV.js → onboarding-BFDkzeR2.js} +2 -2
  44. package/core/built/admin/assets/activitypub/{onboarding-DG4zu3qM.js → onboarding-D6rcBdPe.js} +5 -5
  45. package/core/built/admin/assets/activitypub/{preferences-B3FtocnP.js → preferences-D_799jdl.js} +1607 -1606
  46. package/core/built/admin/assets/activitypub/{profile-D8ZJfYXB.js → profile-D2JfXBQl.js} +264 -263
  47. package/core/built/admin/assets/activitypub/{reply-C1vggenw.js → reply-CpdMeAO5.js} +2 -2
  48. package/core/built/admin/assets/activitypub/{routes-BOii-V9n.js → routes-CCHe2dQp.js} +1317 -1298
  49. package/core/built/admin/assets/activitypub/{separator-1gNokN5S.js → separator-BI1FLsYM.js} +4 -4
  50. package/core/built/admin/assets/activitypub/{settings--9Sb0nbl.js → settings-kx-9Enkz.js} +14 -14
  51. package/core/built/admin/assets/activitypub/{site-fkMmqv0V.js → site-x4_IjVJ0.js} +10 -10
  52. package/core/built/admin/assets/activitypub/{step-1-QhivSMw2.js → step-1-DIDg4aHb.js} +15 -15
  53. package/core/built/admin/assets/activitypub/{step-2-pMk9YwqD.js → step-2-BfGe8BYt.js} +7 -7
  54. package/core/built/admin/assets/activitypub/{step-3-DvmVC1fo.js → step-3-mE9spAqw.js} +12 -12
  55. package/core/built/admin/assets/activitypub/{tabs-Dc0FEEYD.js → tabs-CyPRQQ1N.js} +241 -237
  56. package/core/built/admin/assets/activitypub/{topic-filter-CuDyM5bD.js → topic-filter-DLHBZT93.js} +4 -4
  57. package/core/built/admin/assets/activitypub/use-activity-pub-queries-VzbN99u_.js +1957 -0
  58. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-Drx1kdAK.js → use-navigate-with-base-path-CAwXTmqH.js} +165 -175
  59. package/core/built/admin/assets/activitypub/{use-reply-chain-data-BHkCHcW5.js → use-reply-chain-data-BAB6fNGt.js} +8 -8
  60. package/core/built/admin/assets/activitypub/users-BLeiOTHc.js +1464 -0
  61. package/core/built/admin/assets/activitypub/{x-BHCEe-c2.js → x-C8tAnXly.js} +2 -2
  62. package/core/built/admin/assets/{audience-adiFehTD.js → audience-X_XsZivI.js} +1 -1
  63. package/core/built/admin/assets/{automated-emails-UWM02CMr.js → automated-emails-of1MvVsv.js} +1 -1
  64. package/core/built/admin/assets/automations-B7-y3dXt.js +1 -0
  65. package/core/built/admin/assets/automations-DRFjW5fw.js +1 -0
  66. package/core/built/admin/assets/{avatar-flipboard-Lz3F9fNT.js → avatar-flipboard-C6Kj3Awu.js} +1 -1
  67. package/core/built/admin/assets/bluesky-sharing-BbbjWdzs.js +1 -0
  68. package/core/built/admin/assets/box-BWbhXh21.js +1 -0
  69. package/core/built/admin/assets/breadcrumb-B-M9Ip_2.js +1 -0
  70. package/core/built/admin/assets/card-DGoDJzrn.js +1 -0
  71. package/core/built/admin/assets/{chart-ChpW-NzQ.js → chart-BuRT2Y6p.js} +14 -14
  72. package/core/built/admin/assets/chart-helpers-xiSsW8r0.js +1 -0
  73. package/core/built/admin/assets/checkbox-EhJKHFdZ.js +1 -0
  74. package/core/built/admin/assets/{chunk.432.c2caa0b20f03e71d1a35.js → chunk.211.6f7328d63c41536451b3.js} +2025 -2819
  75. package/core/built/admin/assets/{chunk.432.c2caa0b20f03e71d1a35.js.LICENSE.txt → chunk.211.6f7328d63c41536451b3.js.LICENSE.txt} +1 -62
  76. package/core/built/admin/assets/{chunk.831.0703a12e49f51cec3f3a.js → chunk.361.3cdb584b973959e52ccc.js} +78 -85
  77. package/core/built/admin/assets/chunk.524.8365cd9280405c0f6216.js +25 -0
  78. package/core/built/admin/assets/chunk.582.61d078937e6102769f2c.js +27 -0
  79. package/core/built/admin/assets/code-editor-view-CZtJFGhR.js +1 -0
  80. package/core/built/admin/assets/comments-CvyXxOyN.js +1 -0
  81. package/core/built/admin/assets/container-BYz2Ed39.js +1 -0
  82. package/core/built/admin/assets/data-list-16rkJYYi.js +1 -0
  83. package/core/built/admin/assets/date-range-select-CTlyo8zW.js +1 -0
  84. package/core/built/admin/assets/disabled-sources-indicator-qs2GfLvl.js +1 -0
  85. package/core/built/admin/assets/{dist-DJ6c4_De.js → dist-2Tnz2Yfq.js} +1 -1
  86. package/core/built/admin/assets/{dist-CsekE4FL.js → dist-CQJY6SVY.js} +1 -1
  87. package/core/built/admin/assets/dist-CjY-f5Z1.js +1 -0
  88. package/core/built/admin/assets/dist-DGzPJ_bO.js +4 -0
  89. package/core/built/admin/assets/dist-DIC8yz5C.js +1 -0
  90. package/core/built/admin/assets/{dist-BbGrW05X.js → dist-DyViJwIy.js} +1 -1
  91. package/core/built/admin/assets/dist-Ndy-PuGN.js +1 -0
  92. package/core/built/admin/assets/dist-P_ohUlTi.js +1 -0
  93. package/core/built/admin/assets/domain-CPNXKVOV.js +1 -0
  94. package/core/built/admin/assets/dropzone-BmCXnw6J.js +5 -0
  95. package/core/built/admin/assets/edit-profile-SGrJve5M.js +1 -0
  96. package/core/built/admin/assets/editor-BOG2YPUm.js +8 -0
  97. package/core/built/admin/assets/empty-indicator-oX1u1Pkn.js +1 -0
  98. package/core/built/admin/assets/esm-CFX93H5M.js +2 -0
  99. package/core/built/admin/assets/explore-CUYLv9G9.js +1 -0
  100. package/core/built/admin/assets/feed-CPdJMttL.js +1 -0
  101. package/core/built/admin/assets/field-D0XISCK2.js +1 -0
  102. package/core/built/admin/assets/{filter-sources-v39ihhhV.js → filter-sources-Bieps75g.js} +1 -1
  103. package/core/built/admin/assets/filters-CuB-A7ma.js +1 -0
  104. package/core/built/admin/assets/filters-bXkkWro8.js +1 -0
  105. package/core/built/admin/assets/framework-provider-CmtnPXIT.js +4 -0
  106. package/core/built/admin/assets/{ghost-b57f077997b739a8ae9a70772dc016cb.js → ghost-05f9a7182ed56903dba05878a5b8422b.js} +46 -41
  107. package/core/built/admin/assets/ghost-dark-c8d0ab7f515b2010c173e23e9b32ea8a.css +1 -0
  108. package/core/built/admin/assets/gift-link-modal-su8MsRdg.js +1 -0
  109. package/core/built/admin/assets/{gift-links-CY3GwiVi.js → gift-links-nBxJjZiQ.js} +1 -1
  110. package/core/built/admin/assets/growth-Ba6S5FQX.js +1 -0
  111. package/core/built/admin/assets/hooks-BApwwBE0.js +2 -0
  112. package/core/built/admin/assets/{inbox-TEISAmth.js → inbox-Xx1CdnfO.js} +38 -38
  113. package/core/built/admin/assets/index-D8PbzuT9.css +1 -0
  114. package/core/built/admin/assets/index-ukW_0Uie.js +67 -0
  115. package/core/built/admin/assets/inline-EMAm3okk.js +1 -0
  116. package/core/built/admin/assets/input-group-CGOXcy4l.js +1 -0
  117. package/core/built/admin/assets/input-surface-BpAjZXY5.js +1 -0
  118. package/core/built/admin/assets/{react-dom-C6aoWSfl.js → jsx-runtime-DX3WBWVO.js} +1 -1
  119. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +5 -2
  120. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +2 -2
  121. package/core/built/admin/assets/{koenig-lexical-Di7b48ED.js → koenig-lexical-B61IALf5.js} +2 -2
  122. package/core/built/admin/assets/kpi-card-BlZaG1Lo.js +1 -0
  123. package/core/built/admin/assets/kpi-card-DCdlyaSS.js +1 -0
  124. package/core/built/admin/assets/kpi-helpers-DpAuS1Nb.js +1 -0
  125. package/core/built/admin/assets/kpi-tabs-Dme44bQS.js +1 -0
  126. package/core/built/admin/assets/label-dSs5aepE.js +1 -0
  127. package/core/built/admin/assets/label-picker-Uq91atex.js +1 -0
  128. package/core/built/admin/assets/{labels-GbxlXWtf.js → labels-Cyayfd-e.js} +1 -1
  129. package/core/built/admin/assets/layout-WUcz6tu1.js +1 -0
  130. package/core/built/admin/assets/limit-service-9fwD33lU.js +20 -0
  131. package/core/built/admin/assets/link-helpers-tOlxmuH5.js +1 -0
  132. package/core/built/admin/assets/list-page-B6ANtzkd.js +1 -0
  133. package/core/built/admin/assets/mailchimp-Ds_NQ04w.svg +9 -0
  134. package/core/built/admin/assets/member-custom-fields-NCzrMuba.js +1 -0
  135. package/core/built/admin/assets/member-detail-DPWDtYnN.js +1 -0
  136. package/core/built/admin/assets/members-B9rO7qr4.js +10 -0
  137. package/core/built/admin/assets/modals-CxRaan1J.js +31 -0
  138. package/core/built/admin/assets/moderation-D8zon60E.js +1 -0
  139. package/core/built/admin/assets/multi-select-combobox-1wYm3nle.js +1 -0
  140. package/core/built/admin/assets/newsletter-DbYMRxRS.js +1 -0
  141. package/core/built/admin/assets/{newsletters-DZm3yLj8.js → newsletters-D1jbtV-h.js} +1 -1
  142. package/core/built/admin/assets/note-PiWPnnrh.js +1 -0
  143. package/core/built/admin/assets/notifications-DEgqqB9G.js +1 -0
  144. package/core/built/admin/assets/nql-lang-B7faUf8D.js +19 -0
  145. package/core/built/admin/assets/{offers-D11QtPXX.js → offers-CrY6nSRR.js} +1 -1
  146. package/core/built/admin/assets/onboarding-route-BzF6HeVn.js +1 -0
  147. package/core/built/admin/assets/overview-DixLeIqY.js +1 -0
  148. package/core/built/admin/assets/page-header-op0eN36I.js +1 -0
  149. package/core/built/admin/assets/{pages-BnObVRrf.js → pages-BbNWFcGj.js} +1 -1
  150. package/core/built/admin/assets/pintura-CXOmq-5H.svg +15 -0
  151. package/core/built/admin/assets/post-analytics-WwRDEnrV.js +1 -0
  152. package/core/built/admin/assets/post-analytics-header-DsMoLx0R.js +1 -0
  153. package/core/built/admin/assets/{post-analytics-provider-DSfBCtnj.js → post-analytics-provider-BJCPLMIb.js} +1 -1
  154. package/core/built/admin/assets/post-share-modal-Dx-MEjhI.js +1 -0
  155. package/core/built/admin/assets/{posts-CwH8VJvB.js → posts-EWpZIjkr.js} +1 -1
  156. package/core/built/admin/assets/preferences-D7-j6A4C.js +5 -0
  157. package/core/built/admin/assets/profile-Dl69QPp0.js +1 -0
  158. package/core/built/admin/assets/{referrers-nxR52jPI.js → referrers-BCfFYSHc.js} +1 -1
  159. package/core/built/admin/assets/router-provider-C1R4AZ2o.js +1 -0
  160. package/core/built/admin/assets/select-C1qDZnW4.js +1 -0
  161. package/core/built/admin/assets/settings-BbmC_Iqq.js +4 -0
  162. package/core/built/admin/assets/settings-H6HxFgfI.js +1 -0
  163. package/core/built/admin/assets/shade-app-B3heOAfz-CGXQwWeO.js +3 -0
  164. package/core/built/admin/assets/share-modal-BJCadJyp.js +1 -0
  165. package/core/built/admin/assets/social-urls-BPL1nADp.js +8 -0
  166. package/core/built/admin/assets/sort-button-DyYlfYp7.js +1 -0
  167. package/core/built/admin/assets/source-icon-_ubRDbg_.js +1 -0
  168. package/core/built/admin/assets/stack-xiN0eQ6Z.js +1 -0
  169. package/core/built/admin/assets/stats-BQZMGMvn.js +1 -0
  170. package/core/built/admin/assets/stats-view-Doei-qCX.js +1 -0
  171. package/core/built/admin/assets/step-1-IKiLBPoC.js +1 -0
  172. package/core/built/admin/assets/step-2-jJ41PsDN.js +1 -0
  173. package/core/built/admin/assets/step-3-CaqFAEqf.js +2 -0
  174. package/core/built/admin/assets/switch-t-WyENU2.js +1 -0
  175. package/core/built/admin/assets/table-DxUL78jU.js +1 -0
  176. package/core/built/admin/assets/tabs-BQcJQ1ke.js +1 -0
  177. package/core/built/admin/assets/tags-CNujGwkT.js +1 -0
  178. package/core/built/admin/assets/text-DwtjwGkh.js +1 -0
  179. package/core/built/admin/assets/textarea-Bjccvh_E.js +1 -0
  180. package/core/built/admin/assets/{tiers-EghDzCKc.js → tiers-BgYLWRJv.js} +1 -1
  181. package/core/built/admin/assets/toggle-group-BeEpQ69p.js +1 -0
  182. package/core/built/admin/assets/topic-filter-Bb5MOD-1.js +1 -0
  183. package/core/built/admin/assets/{use-analytics-data-0l_OHtnR.js → use-analytics-data-Cds6XDjg.js} +1 -1
  184. package/core/built/admin/assets/use-filter-params-DjXkhO54.js +1 -0
  185. package/core/built/admin/assets/use-growth-stats-D8uf98-G.js +1 -0
  186. package/core/built/admin/assets/{use-post-referrers-DwI31Ril.js → use-post-referrers-CRtgyuXB.js} +1 -1
  187. package/core/built/admin/assets/use-reply-chain-data-DbKYX50v.js +1 -0
  188. package/core/built/admin/assets/use-simple-pagination-DC01kpo0.js +1 -0
  189. package/core/built/admin/assets/{use-tinybird-query-DvZBBMG7.js → use-tinybird-query-C7bQRJWw.js} +1 -1
  190. package/core/built/admin/assets/{use-tinybird-token-CQtebkvU.js → use-tinybird-token-Az4tam7_.js} +1 -1
  191. package/core/built/admin/assets/{users-Pc8IRjk9.js → users-CcSCQFcQ.js} +1 -1
  192. package/core/built/admin/assets/virtual-list-Dhuh9fGx.js +1 -0
  193. package/core/built/admin/assets/web-LtHNiNBV.js +1 -0
  194. package/core/built/admin/index.html +22 -22
  195. package/core/frontend/apps/private-blogging/index.js +1 -1
  196. package/core/frontend/apps/private-blogging/lib/middleware.js +1 -1
  197. package/core/frontend/helpers/split.js +2 -1
  198. package/core/frontend/meta/asset-url.js +1 -1
  199. package/core/frontend/meta/author-image.js +1 -1
  200. package/core/frontend/meta/blog-logo.js +1 -1
  201. package/core/frontend/meta/canonical-url.js +1 -1
  202. package/core/frontend/meta/cover-image.js +1 -1
  203. package/core/frontend/meta/get-meta.js +1 -1
  204. package/core/frontend/meta/og-image.js +1 -1
  205. package/core/frontend/meta/paginated-url.js +1 -1
  206. package/core/frontend/meta/twitter-image.js +1 -1
  207. package/core/frontend/meta/url.js +1 -1
  208. package/core/frontend/services/assets-minification/admin-auth-assets.js +1 -1
  209. package/core/frontend/services/llms/handler.js +1 -1
  210. package/core/frontend/services/proxy.js +42 -3
  211. package/core/frontend/services/routing/collection-router.js +1 -1
  212. package/core/frontend/services/routing/controllers/email-post.js +1 -1
  213. package/core/frontend/services/routing/controllers/entry/markdown.js +1 -1
  214. package/core/frontend/services/routing/controllers/entry/markdown.ts +1 -1
  215. package/core/frontend/services/routing/controllers/entry.js +1 -1
  216. package/core/frontend/services/routing/controllers/entry.ts +1 -1
  217. package/core/frontend/services/routing/controllers/previews.js +6 -7
  218. package/core/frontend/services/routing/controllers/unsubscribe.js +7 -3
  219. package/core/frontend/services/routing/email-router.js +1 -1
  220. package/core/frontend/services/routing/events.js +12 -0
  221. package/core/frontend/services/routing/middleware/page-param.js +1 -1
  222. package/core/frontend/services/routing/parent-router.js +1 -1
  223. package/core/frontend/services/routing/preview-router.js +1 -1
  224. package/core/frontend/services/routing/router-manager.js +4 -8
  225. package/core/frontend/services/routing/rss-router.js +1 -1
  226. package/core/frontend/services/routing/static-pages-router.js +1 -1
  227. package/core/frontend/services/routing/static-routes-router.js +1 -1
  228. package/core/frontend/services/routing/taxonomy-router.js +1 -1
  229. package/core/frontend/services/rss/generate-feed.js +1 -1
  230. package/core/frontend/services/sitemap/base-site-map-generator.js +23 -4
  231. package/core/frontend/services/sitemap/site-map-index-generator.js +1 -1
  232. package/core/frontend/services/sitemap/site-map-manager.js +14 -8
  233. package/core/frontend/services/sitemap/utils.js +1 -1
  234. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +1 -1
  235. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +1 -1
  236. package/core/frontend/utils/images.js +1 -1
  237. package/core/frontend/web/middleware/admin-toolbar.js +1 -1
  238. package/core/frontend/web/middleware/handle-image-sizes.js +2 -2
  239. package/core/frontend/web/middleware/redirect-ghost-to-admin.js +1 -1
  240. package/core/frontend/web/routers/serve-favicon.js +1 -1
  241. package/core/frontend/web/routers/serve-public-file.js +1 -1
  242. package/core/frontend/web/site.js +5 -5
  243. package/core/server/adapters/cache/AdapterCacheMemoryTTL.js +2 -2
  244. package/core/server/adapters/cache/MemoryCache.js +2 -2
  245. package/core/server/adapters/cache/Redis.js +1 -1
  246. package/core/server/adapters/cache/index.js +1 -1
  247. package/core/server/adapters/lib/redis/AdapterCacheRedis.js +2 -2
  248. package/core/server/adapters/route-settings/FileStore.js +2 -8
  249. package/core/server/adapters/route-settings/FileStore.ts +1 -6
  250. package/core/server/adapters/route-settings/S3RouteSettingsStore.js +206 -0
  251. package/core/server/adapters/route-settings/S3RouteSettingsStore.ts +199 -0
  252. package/core/server/adapters/route-settings/utils.js +13 -0
  253. package/core/server/adapters/route-settings/utils.ts +7 -0
  254. package/core/server/adapters/scheduling/deps.d.ts +0 -2
  255. package/core/server/adapters/scheduling/error-capture.js +76 -0
  256. package/core/server/adapters/scheduling/error-capture.ts +91 -0
  257. package/core/server/adapters/scheduling/utils.js +18 -34
  258. package/core/server/adapters/scheduling/utils.ts +36 -0
  259. package/core/server/adapters/storage/LocalFilesStorage.js +13 -11
  260. package/core/server/adapters/storage/LocalFilesStorage.ts +24 -0
  261. package/core/server/adapters/storage/LocalImagesStorage.js +14 -12
  262. package/core/server/adapters/storage/LocalImagesStorage.ts +24 -0
  263. package/core/server/adapters/storage/LocalMediaStorage.js +13 -11
  264. package/core/server/adapters/storage/LocalMediaStorage.ts +24 -0
  265. package/core/server/adapters/storage/LocalStorageBase.js +107 -167
  266. package/core/server/adapters/storage/LocalStorageBase.ts +342 -0
  267. package/core/server/adapters/storage/S3Storage.js +2 -2
  268. package/core/server/adapters/storage/S3Storage.ts +1 -1
  269. package/core/server/adapters/storage/utils.js +36 -50
  270. package/core/server/adapters/storage/utils.ts +60 -0
  271. package/core/server/api/endpoints/authentication.js +1 -1
  272. package/core/server/api/endpoints/db.js +6 -0
  273. package/core/server/api/endpoints/featurebase.js +1 -1
  274. package/core/server/api/endpoints/files.js +2 -2
  275. package/core/server/api/endpoints/images.js +2 -2
  276. package/core/server/api/endpoints/libraries.d.ts +0 -1
  277. package/core/server/api/endpoints/media.js +8 -5
  278. package/core/server/api/endpoints/member-custom-fields.js +4 -1
  279. package/core/server/api/endpoints/member-custom-fields.ts +4 -1
  280. package/core/server/api/endpoints/members.js +25 -28
  281. package/core/server/api/endpoints/pages.js +6 -1
  282. package/core/server/api/endpoints/posts.js +28 -3
  283. package/core/server/api/endpoints/search-index-public.js +4 -3
  284. package/core/server/api/endpoints/search-index.js +5 -4
  285. package/core/server/api/endpoints/settings-public.js +1 -1
  286. package/core/server/api/endpoints/settings.js +3 -1
  287. package/core/server/api/endpoints/utils/serializers/input/utils/url.js +9 -1
  288. package/core/server/api/endpoints/utils/serializers/output/default.js +7 -0
  289. package/core/server/api/endpoints/utils/serializers/output/files.js +1 -1
  290. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +4 -1
  291. package/core/server/api/endpoints/utils/serializers/output/media.js +1 -1
  292. package/core/server/api/endpoints/utils/serializers/output/member-custom-fields.js +7 -4
  293. package/core/server/api/endpoints/utils/serializers/output/member-custom-fields.ts +8 -4
  294. package/core/server/api/endpoints/utils/serializers/output/members.js +27 -106
  295. package/core/server/api/endpoints/utils/serializers/output/pages.js +7 -0
  296. package/core/server/api/endpoints/utils/serializers/output/posts.js +13 -0
  297. package/core/server/api/endpoints/utils/serializers/output/utils/url.js +1 -1
  298. package/core/server/api/endpoints/utils/validators/input/members.js +2 -52
  299. package/core/server/data/db/backup.js +1 -1
  300. package/core/server/data/exporter/export-filename.js +2 -1
  301. package/core/server/data/importer/handlers/image.js +3 -3
  302. package/core/server/data/importer/import-manager.js +6 -4
  303. package/core/server/data/importer/importers/content-file-importer.js +2 -2
  304. package/core/server/data/importer/importers/data/revue-subscriber-importer.js +6 -10
  305. package/core/server/data/importer/importers/json-to-html.js +24 -4
  306. package/core/server/data/migrations/utils/schema.js +4 -2
  307. package/core/server/data/migrations/versions/6.54/2026-07-19-16-59-00-add-content-import-permission.js +10 -0
  308. package/core/server/data/migrations/versions/6.54/2026-07-20-13-59-21-drop-email-tracked-sent-count-from-automation-action-revisions.js +7 -0
  309. package/core/server/data/migrations/versions/6.54/2026-07-21-01-58-20-add-automation-run-steps-poller-index.js +3 -0
  310. package/core/server/data/migrations/versions/6.54/2026-07-21-21-08-15-add-automated-email-recipients-mailgun-message-id-index.js +3 -0
  311. package/core/server/data/migrations/versions/6.54/2026-07-22-10-41-08-add-click-tracking-to-automated-email-recipients.js +13 -0
  312. package/core/server/data/migrations/versions/6.54/2026-07-22-15-10-30-add-email-clicked-count-to-automation-action-revisions.js +7 -0
  313. package/core/server/data/migrations/versions/6.54/2026-07-23-10-24-18-add-automation-action-revision-to-redirects.js +9 -0
  314. package/core/server/data/schema/commands.js +37 -3
  315. package/core/server/data/schema/fixtures/fixtures.json +7 -0
  316. package/core/server/data/schema/lib/default-index-name.js +20 -0
  317. package/core/server/data/schema/schema.js +40 -17
  318. package/core/server/data/seeders/data-generator.js +4 -2
  319. package/core/server/lib/image/image-size.js +7 -23
  320. package/core/server/lib/image/image-utils.js +16 -2
  321. package/core/server/lib/image/index.js +4 -4
  322. package/core/server/lib/lexical.js +3 -3
  323. package/core/server/lib/mobiledoc.js +2 -2
  324. package/core/server/lib/request-external.js +1 -1
  325. package/core/server/lib/validate-password.js +1 -1
  326. package/core/server/models/action.js +9 -0
  327. package/core/server/models/base/plugins/generate-slug.js +1 -1
  328. package/core/server/models/collection.js +1 -1
  329. package/core/server/models/custom-theme-setting.js +1 -1
  330. package/core/server/models/member.js +73 -0
  331. package/core/server/models/newsletter.js +1 -1
  332. package/core/server/models/post.js +19 -5
  333. package/core/server/models/posts-meta.js +1 -1
  334. package/core/server/models/redirect.js +1 -1
  335. package/core/server/models/settings.js +1 -1
  336. package/core/server/models/snippet.js +1 -1
  337. package/core/server/models/tag.js +1 -1
  338. package/core/server/models/user.js +47 -71
  339. package/core/server/models/welcome-email-automated-email.js +1 -1
  340. package/core/server/services/activitypub/activity-pub-service-wrapper.js +1 -1
  341. package/core/server/services/adapter-manager/adapter-manager.js +5 -1
  342. package/core/server/services/adapter-manager/adapter-manager.ts +7 -2
  343. package/core/server/services/adapter-manager/index.js +18 -15
  344. package/core/server/services/adapter-manager/index.ts +23 -17
  345. package/core/server/services/adapter-manager/utils.js +124 -14
  346. package/core/server/services/adapter-manager/utils.ts +130 -14
  347. package/core/server/services/api-version-compatibility/mw-version-rewrites.js +1 -1
  348. package/core/server/services/audience-feedback/index.js +1 -1
  349. package/core/server/services/auth/passwordreset.js +1 -1
  350. package/core/server/services/auth/session/express-session.js +1 -1
  351. package/core/server/services/auth/session/index.js +2 -2
  352. package/core/server/services/auth/session/session-service.js +29 -2
  353. package/core/server/services/automations/automations-api.js +8 -25
  354. package/core/server/services/automations/automations-api.ts +8 -37
  355. package/core/server/services/automations/automations-repository.ts +16 -0
  356. package/core/server/services/automations/database-automations-repository.js +37 -4
  357. package/core/server/services/automations/database-automations-repository.ts +41 -4
  358. package/core/server/services/automations/poll.js +16 -12
  359. package/core/server/services/automations/poll.ts +17 -15
  360. package/core/server/services/automations/service.js +1 -1
  361. package/core/server/services/automations/service.ts +3 -13
  362. package/core/server/services/automations/welcome-email-automation-poll.js +2 -1
  363. package/core/server/services/comments/comments-service-emails.js +4 -1
  364. package/core/server/services/comments/index.js +1 -1
  365. package/core/server/services/custom-redirects/index.js +2 -2
  366. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +14 -13
  367. package/core/server/services/email-analytics/email-analytics-service.js +1 -1
  368. package/core/server/services/email-analytics/events/start-email-analytics-job-event.js +11 -15
  369. package/core/server/services/email-analytics/events/start-email-analytics-job-event.ts +15 -0
  370. package/core/server/services/email-analytics/index.js +2 -3
  371. package/core/server/services/email-analytics/index.ts +1 -2
  372. package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.js +1 -6
  373. package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.ts +0 -9
  374. package/core/server/services/email-analytics/jobs/fetch-latest/index.js +1 -1
  375. package/core/server/services/email-analytics/jobs/index.js +0 -2
  376. package/core/server/services/email-service/email-service-wrapper.js +1 -1
  377. package/core/server/services/email-service/email-service.js +20 -4
  378. package/core/server/services/explore-ping/explore-ping-service.js +24 -39
  379. package/core/server/services/explore-ping/explore-ping-service.ts +198 -0
  380. package/core/server/services/explore-ping/index.js +11 -11
  381. package/core/server/services/explore-ping/index.ts +42 -0
  382. package/core/server/services/gifts/gift-reminder-scheduler.js +1 -1
  383. package/core/server/services/gifts/gift-reminder-scheduler.ts +1 -1
  384. package/core/server/services/gifts/gift-service-wrapper.js +1 -1
  385. package/core/server/services/identity-tokens/identity-token-service-wrapper.js +1 -1
  386. package/core/server/services/indexnow-ping/constants.js +30 -0
  387. package/core/server/services/indexnow-ping/constants.ts +32 -0
  388. package/core/server/services/indexnow-ping/index.js +29 -253
  389. package/core/server/services/indexnow-ping/index.ts +37 -0
  390. package/core/server/services/indexnow-ping/indexnow-ping-service.js +229 -0
  391. package/core/server/services/indexnow-ping/indexnow-ping-service.ts +319 -0
  392. package/core/server/services/invites/index.js +1 -1
  393. package/core/server/services/lib/mailgun-client.js +3 -3
  394. package/core/server/services/link-redirection/index.js +2 -2
  395. package/core/server/services/link-redirection/link-redirect-repository.js +1 -1
  396. package/core/server/services/link-redirection/link-redirect.js +12 -13
  397. package/core/server/services/link-redirection/link-redirect.ts +22 -0
  398. package/core/server/services/link-redirection/link-redirects-service.js +1 -1
  399. package/core/server/services/link-tracking/full-post-link.js +2 -2
  400. package/core/server/services/link-tracking/index.js +1 -1
  401. package/core/server/services/mail/ghost-mailer.js +1 -1
  402. package/core/server/services/mail/index.js +1 -1
  403. package/core/server/services/media-inliner/external-media-inliner.js +2 -2
  404. package/core/server/services/media-inliner/service.js +4 -3
  405. package/core/server/services/member-attribution/index.js +1 -1
  406. package/core/server/services/member-welcome-emails/service.js +1 -1
  407. package/core/server/services/members/api.js +8 -2
  408. package/core/server/services/members/import-export/config.js +30 -0
  409. package/core/server/services/members/import-export/config.ts +34 -0
  410. package/core/server/services/members/import-export/csv/index.js +10 -0
  411. package/core/server/services/members/import-export/csv/index.ts +2 -0
  412. package/core/server/services/members/import-export/csv/parse.js +64 -0
  413. package/core/server/services/members/import-export/csv/parse.ts +69 -0
  414. package/core/server/services/members/import-export/csv/serialize.js +13 -0
  415. package/core/server/services/members/import-export/csv/serialize.ts +18 -0
  416. package/core/server/services/members/import-export/export/exporter.js +202 -0
  417. package/core/server/services/members/import-export/export/exporter.ts +325 -0
  418. package/core/server/services/members/import-export/import/completion-email.js +65 -0
  419. package/core/server/services/members/import-export/import/completion-email.ts +119 -0
  420. package/core/server/services/members/import-export/import/importer.js +276 -0
  421. package/core/server/services/members/import-export/import/importer.ts +430 -0
  422. package/core/server/services/members/import-export/import/reader.js +32 -0
  423. package/core/server/services/members/import-export/import/reader.ts +33 -0
  424. package/core/server/services/members/import-export/import/row.js +33 -0
  425. package/core/server/services/members/import-export/import/row.ts +52 -0
  426. package/core/server/services/members/import-export/import/spool.js +30 -0
  427. package/core/server/services/members/import-export/import/spool.ts +38 -0
  428. package/core/server/services/members/import-export/index.js +90 -0
  429. package/core/server/services/members/import-export/index.ts +118 -0
  430. package/core/server/services/members/members-api/controllers/router-controller.js +7 -0
  431. package/core/server/services/members/members-api/members-api.js +4 -2
  432. package/core/server/services/members/members-api/repositories/event-repository.js +13 -2
  433. package/core/server/services/members/members-api/services/member-bread-service.js +42 -19
  434. package/core/server/services/members/middleware.js +1 -1
  435. package/core/server/services/members/service.js +28 -17
  436. package/core/server/services/members/stripe-connect.js +1 -1
  437. package/core/server/services/members-custom-fields/actions.js +3 -0
  438. package/core/server/services/members-custom-fields/actions.ts +6 -2
  439. package/core/server/services/members-custom-fields/config.js +34 -0
  440. package/core/server/services/members-custom-fields/config.ts +38 -0
  441. package/core/server/services/members-custom-fields/definitions-service.js +156 -21
  442. package/core/server/services/members-custom-fields/definitions-service.ts +170 -25
  443. package/core/server/services/members-custom-fields/index.js +16 -3
  444. package/core/server/services/members-custom-fields/index.ts +17 -3
  445. package/core/server/services/members-custom-fields/values-service.js +56 -10
  446. package/core/server/services/members-custom-fields/values-service.ts +62 -10
  447. package/core/server/services/mentions/mention-sending-service.js +22 -2
  448. package/core/server/services/mentions/service.js +21 -5
  449. package/core/server/services/newsletters/index.js +1 -1
  450. package/core/server/services/oembed/oembed-service.js +122 -33
  451. package/core/server/services/oembed/service.js +4 -2
  452. package/core/server/services/offers/service.js +1 -1
  453. package/core/server/services/post-scheduling/index.js +4 -3
  454. package/core/server/services/post-scheduling/index.ts +4 -3
  455. package/core/server/services/post-scheduling/post-scheduling.js +1 -1
  456. package/core/server/services/post-scheduling/post-scheduling.ts +1 -1
  457. package/core/server/services/posts/post-email-handler.js +13 -6
  458. package/core/server/services/posts/post-scheduling.js +1 -1
  459. package/core/server/services/posts/posts-exporter.js +6 -4
  460. package/core/server/services/posts/posts-service-instance.js +1 -1
  461. package/core/server/services/posts/posts-service.js +4 -4
  462. package/core/server/services/posts-public/service.js +1 -1
  463. package/core/server/services/public-config/site.js +1 -1
  464. package/core/server/services/recommendations/recommendation-service-wrapper.js +1 -1
  465. package/core/server/services/recommendations/service/libraries.d.ts +0 -2
  466. package/core/server/services/route-settings/dynamic-routing-service.js +2 -3
  467. package/core/server/services/route-settings/index.js +1 -1
  468. package/core/server/services/route-settings/route-settings-parser.js +134 -124
  469. package/core/server/services/route-settings/route-settings-parser.ts +160 -125
  470. package/core/server/services/route-settings/validation-errors.js +178 -0
  471. package/core/server/services/route-settings/validation-errors.ts +196 -0
  472. package/core/server/services/settings/settings-service.js +2 -2
  473. package/core/server/services/settings-helpers/index.js +1 -1
  474. package/core/server/services/slack-notifications/service.js +1 -1
  475. package/core/server/services/slack-ping/constants.js +16 -0
  476. package/core/server/services/slack-ping/constants.ts +15 -0
  477. package/core/server/services/slack-ping/index.js +26 -204
  478. package/core/server/services/slack-ping/index.ts +35 -0
  479. package/core/server/services/slack-ping/slack-ping-service.js +214 -0
  480. package/core/server/services/slack-ping/slack-ping-service.ts +296 -0
  481. package/core/server/services/staff/index.js +1 -1
  482. package/core/server/services/stats/posts-stats-service.js +1 -1
  483. package/core/server/services/stats/service.js +1 -1
  484. package/core/server/services/stripe/service.js +1 -1
  485. package/core/server/services/tags-public/service.js +1 -1
  486. package/core/server/services/themes/storage.js +9 -0
  487. package/core/server/services/themes/theme-storage.js +1 -1
  488. package/core/server/services/themes/validate.js +1 -1
  489. package/core/server/services/update-check/index.js +1 -1
  490. package/core/server/services/url/lazy-url-service.js +66 -6
  491. package/core/server/services/url/lazy-url-service.ts +73 -6
  492. package/core/server/services/url/url-generator.js +1 -1
  493. package/core/server/services/url/url-service-facade.js +68 -3
  494. package/core/server/services/url/url-service-facade.ts +79 -4
  495. package/core/server/services/url/url-service.js +1 -1
  496. package/core/server/services/url/urls.js +1 -1
  497. package/core/server/services/webhooks/index.js +19 -2
  498. package/core/server/services/webhooks/listen.js +6 -11
  499. package/core/server/services/webhooks/payload.js +1 -3
  500. package/core/server/services/webhooks/serialize.js +16 -1
  501. package/core/server/web/admin/app.js +1 -1
  502. package/core/server/web/admin/middleware/redirect-admin-urls.js +1 -1
  503. package/core/server/web/api/endpoints/admin/routes.js +1 -0
  504. package/core/server/web/api/middleware/cors.js +1 -1
  505. package/core/server/web/api/middleware/upload.js +4 -0
  506. package/core/server/web/gift-preview/controller.js +1 -1
  507. package/core/server/web/shared/middleware/redirect-amp-urls.js +1 -1
  508. package/core/server/web/shared/middleware/uncapitalise.js +2 -2
  509. package/core/server/web/shared/middleware/url-redirects.js +1 -1
  510. package/core/shared/config/defaults.json +10 -2
  511. package/core/shared/config/overrides.json +4 -0
  512. package/core/shared/express.js +6 -1
  513. package/core/shared/labs.js +2 -1
  514. package/core/shared/url-utils.js +19 -15
  515. package/core/shared/url-utils.ts +20 -0
  516. package/ghost.js +0 -1
  517. package/package.json +30 -35
  518. package/pnpm-lock.yaml +681 -2789
  519. package/pnpm-workspace.yaml +31 -17
  520. package/components/tryghost-adapter-base-scheduling-0.0.0.tgz +0 -0
  521. package/components/tryghost-adapter-base-sso-0.0.0.tgz +0 -0
  522. package/core/built/admin/assets/Combination--5EZGaDs.js +0 -43
  523. package/core/built/admin/assets/Growth-C0NoKcHQ.js +0 -3
  524. package/core/built/admin/assets/Newsletters-Ed8kDjdy.js +0 -1
  525. package/core/built/admin/assets/Overview-CArPgRZt.js +0 -1
  526. package/core/built/admin/assets/Web-CjjYoVM3.js +0 -2
  527. package/core/built/admin/assets/account-migration-mfa5mNI9.js +0 -1
  528. package/core/built/admin/assets/activitypub/inbox-B3rjKMTv.js +0 -1221
  529. package/core/built/admin/assets/activitypub/layout-jcurg3rU.js +0 -1
  530. package/core/built/admin/assets/activitypub/use-activity-pub-queries-yqGRcnLn.js +0 -2569
  531. package/core/built/admin/assets/activitypub/users-CfyHIsTG.js +0 -1316
  532. package/core/built/admin/assets/automations-DkUnxNdv.js +0 -1
  533. package/core/built/admin/assets/automations-vjXofmV_.js +0 -1
  534. package/core/built/admin/assets/bluesky-sharing-T-pO3RcP.js +0 -1
  535. package/core/built/admin/assets/breadcrumb-CekPYTCn.js +0 -1
  536. package/core/built/admin/assets/button--i2uMDDn.js +0 -4
  537. package/core/built/admin/assets/card-CSWz_BXq.js +0 -1
  538. package/core/built/admin/assets/chart-helpers-C_4Ka_vT.js +0 -1
  539. package/core/built/admin/assets/chunk.524.8ce2c741473e2f0929dc.js +0 -25
  540. package/core/built/admin/assets/chunk.582.453459d6228d2955408b.js +0 -27
  541. package/core/built/admin/assets/code-editor-view-BfkwQto2.js +0 -1
  542. package/core/built/admin/assets/command-K75Jzs0G.js +0 -1
  543. package/core/built/admin/assets/comments-BEIi1DH-.js +0 -1
  544. package/core/built/admin/assets/container-BNXvlcjA.js +0 -1
  545. package/core/built/admin/assets/data-list-BmK5QMab.js +0 -1
  546. package/core/built/admin/assets/date-range-select-5sKzwbt7.js +0 -1
  547. package/core/built/admin/assets/disabled-sources-indicator-L_ssJTNr.js +0 -1
  548. package/core/built/admin/assets/dist-BBIJuyPg.js +0 -1
  549. package/core/built/admin/assets/dist-BHE0dp6o.js +0 -1
  550. package/core/built/admin/assets/dist-CT46_f_J.js +0 -1
  551. package/core/built/admin/assets/dist-DW0QXQO3.js +0 -1
  552. package/core/built/admin/assets/dist-DxFLceO5.js +0 -1
  553. package/core/built/admin/assets/dist-QcACAOAD.js +0 -1
  554. package/core/built/admin/assets/dist-duxRDcQu.js +0 -177
  555. package/core/built/admin/assets/domain-CLaPZ9Rc.js +0 -1
  556. package/core/built/admin/assets/dropzone-E0bSX4_a.js +0 -5
  557. package/core/built/admin/assets/edit-profile-DqNPKaA4.js +0 -1
  558. package/core/built/admin/assets/editor-CkLXQDRp.js +0 -8
  559. package/core/built/admin/assets/empty-indicator-BTtOlgIo.js +0 -1
  560. package/core/built/admin/assets/esm-TSfGW7nz.js +0 -2
  561. package/core/built/admin/assets/explore-BEstLxKr.js +0 -1
  562. package/core/built/admin/assets/feed-C58p2voG.js +0 -1
  563. package/core/built/admin/assets/field-BSbDUHPv.js +0 -1
  564. package/core/built/admin/assets/filters-BgYv8Gt7.js +0 -1
  565. package/core/built/admin/assets/filters-DvenFkmK.js +0 -1
  566. package/core/built/admin/assets/framework-provider-jQktxm9P.js +0 -4
  567. package/core/built/admin/assets/ghost-dark-8590dea6cd695ff90f27d262c4464538.css +0 -1
  568. package/core/built/admin/assets/gift-link-modal-BPjXkEFt.js +0 -1
  569. package/core/built/admin/assets/growth-D4JNiVTe.js +0 -1
  570. package/core/built/admin/assets/hooks-Cjxexi_I.js +0 -2
  571. package/core/built/admin/assets/index-BacwlcOy.js +0 -67
  572. package/core/built/admin/assets/index-DxRNHH0o.css +0 -1
  573. package/core/built/admin/assets/inline-C22rnPro.js +0 -1
  574. package/core/built/admin/assets/input-group-CKfrILLP.js +0 -1
  575. package/core/built/admin/assets/jsx-runtime-CtMZ-PAS.js +0 -1
  576. package/core/built/admin/assets/kpi-card-DZxQKAIb.js +0 -1
  577. package/core/built/admin/assets/kpi-card-FidQ5zg3.js +0 -1
  578. package/core/built/admin/assets/kpi-helpers-C5T8Vaf1.js +0 -1
  579. package/core/built/admin/assets/kpi-tabs-_VRK6hGV.js +0 -1
  580. package/core/built/admin/assets/label-Cza7hPgn.js +0 -1
  581. package/core/built/admin/assets/label-picker-DgC_zLaw.js +0 -1
  582. package/core/built/admin/assets/layout-BxsXnKFX.js +0 -1
  583. package/core/built/admin/assets/limit-service-CTurluJQ.js +0 -20
  584. package/core/built/admin/assets/link-helpers-C3Gqy2cz.js +0 -1
  585. package/core/built/admin/assets/list-page-BtqCnow_.js +0 -1
  586. package/core/built/admin/assets/member-custom-fields-9uXFBqSt.js +0 -1
  587. package/core/built/admin/assets/member-detail-Dq6ZDIxo.js +0 -1
  588. package/core/built/admin/assets/members-CUWD9jal.js +0 -10
  589. package/core/built/admin/assets/modals-CIdwHVga.js +0 -31
  590. package/core/built/admin/assets/moderation-DTt04UDA.js +0 -1
  591. package/core/built/admin/assets/newsletter-cC8vcc9h.js +0 -1
  592. package/core/built/admin/assets/note-DZU0IY9e.js +0 -1
  593. package/core/built/admin/assets/notifications-NoHpBHJ4.js +0 -1
  594. package/core/built/admin/assets/nql-lang-CvCSOQG3.js +0 -19
  595. package/core/built/admin/assets/onboarding-route-Deg2hNm8.js +0 -1
  596. package/core/built/admin/assets/overview-BQPt_9w3.js +0 -1
  597. package/core/built/admin/assets/page-header-D6bEqPo2.js +0 -1
  598. package/core/built/admin/assets/post-analytics-header-BPw_B2_D.js +0 -1
  599. package/core/built/admin/assets/post-analytics-kp2_--XO.js +0 -1
  600. package/core/built/admin/assets/post-share-modal-Cave3Z4W.js +0 -1
  601. package/core/built/admin/assets/preferences-C7h3j_uy.js +0 -5
  602. package/core/built/admin/assets/profile-B2x4q2oB.js +0 -1
  603. package/core/built/admin/assets/router-provider-5fsX1CYn.js +0 -1
  604. package/core/built/admin/assets/select-PhPjIBBT.js +0 -1
  605. package/core/built/admin/assets/settings-D5P9Gwgo.js +0 -6
  606. package/core/built/admin/assets/settings-zUOzQV5I.js +0 -1
  607. package/core/built/admin/assets/share-modal-EfpfbuWF.js +0 -1
  608. package/core/built/admin/assets/social-urls-DgAF08Xc.js +0 -18
  609. package/core/built/admin/assets/sort-button-WOQYJm2H.js +0 -1
  610. package/core/built/admin/assets/source-icon-hm8Cj-Gx.js +0 -1
  611. package/core/built/admin/assets/stats-CnQDb62m.js +0 -1
  612. package/core/built/admin/assets/stats-view-CCfTJgSe.js +0 -1
  613. package/core/built/admin/assets/step-1-BGlhY4DS.js +0 -1
  614. package/core/built/admin/assets/step-2-D3sDEyFH.js +0 -1
  615. package/core/built/admin/assets/step-3-CvZoUdsc.js +0 -2
  616. package/core/built/admin/assets/switch-CNjkOmwz.js +0 -1
  617. package/core/built/admin/assets/table-C5nZYPnW.js +0 -1
  618. package/core/built/admin/assets/tabs-dtOcExye.js +0 -1
  619. package/core/built/admin/assets/tags-Dhm0FB_g.js +0 -1
  620. package/core/built/admin/assets/textarea-CeKw3wmV.js +0 -1
  621. package/core/built/admin/assets/toggle-group-DfhZIMTW.js +0 -1
  622. package/core/built/admin/assets/topic-filter-Cxe1Il41.js +0 -1
  623. package/core/built/admin/assets/typeof-Ca-duI-z.js +0 -1
  624. package/core/built/admin/assets/use-filter-params-Bub6BqNy.js +0 -1
  625. package/core/built/admin/assets/use-growth-stats-BJORomv0.js +0 -1
  626. package/core/built/admin/assets/use-reply-chain-data-B89YjVoo.js +0 -1
  627. package/core/built/admin/assets/use-simple-pagination-BL2SYXKi.js +0 -1
  628. package/core/built/admin/assets/virtual-list-DNJOSK9I.js +0 -1
  629. package/core/built/admin/assets/web-BHUE3YQc.js +0 -1
  630. package/core/server/adapters/scheduling/scheduling-base.js +0 -5
  631. package/core/server/adapters/sso/SSOBase.js +0 -5
  632. package/core/server/adapters/storage/index.js +0 -17
  633. package/core/server/services/mail/templates/newsletter.html +0 -876
  634. package/core/server/services/members/exporter/query.js +0 -206
  635. package/core/server/services/members/importer/index.js +0 -30
  636. package/core/server/services/members/importer/labels.js +0 -125
  637. package/core/server/services/members/importer/members-csv-importer.js +0 -502
  638. /package/core/server/services/members/{importer → import-export/import}/email-template.js +0 -0
  639. /package/core/server/services/members/{importer/members-csv-importer-stripe-utils.js → import-export/import/stripe-utils.js} +0 -0
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./code-editor-view-CZtJFGhR.js","./rolldown-runtime-DAXXjFlN.js","./react-Bb3IsNbi.js","./jsx-runtime-DX3WBWVO.js","./dist-DGzPJ_bO.js","./shade-app-B3heOAfz-CGXQwWeO.js","./dist-Ndy-PuGN.js","./esm-CFX93H5M.js","./dist-BnFdlebk.js","./dist-DDY6GRVz.js","./field-D0XISCK2.js","./label-dSs5aepE.js","./index-ukW_0Uie.js","./framework-provider-CmtnPXIT.js","./hooks-BApwwBE0.js","./Combination-CJG7Flp-.js","./dist-CQJY6SVY.js","./dist-P_ohUlTi.js","./preload-helper-DYl5dUZ5.js","./chunk-KS7C4IRE-DG9HTHQ3.js","./router-provider-C1R4AZ2o.js","./text-DwtjwGkh.js","./dist-CjY-f5Z1.js","./dist-2Tnz2Yfq.js","./input-surface-BpAjZXY5.js","./users-CcSCQFcQ.js","./update-queries-C4CnvJaW.js","./index-D8PbzuT9.css","./dist-pHiOxyxa.js","./dist-CbHbGtQ-.js","./dist-Q1p9iXwH.js","./dist-DG78yroX.js","./dist-t6AXpf_4.js","./modals-CxRaan1J.js","./automated-emails-of1MvVsv.js","./nql-BsgFMd93.js","./offers-CrY6nSRR.js","./posts-EWpZIjkr.js","./box-BWbhXh21.js","./types-uYQ1HgqL.js","./social-urls-BPL1nADp.js","./analytics-53FOa2wq.js","./inline-EMAm3okk.js","./stack-xiN0eQ6Z.js","./switch-t-WyENU2.js","./dist-JLOy8o0Q.js","./dropzone-BmCXnw6J.js","./prop-types-DeUPn3oD.js","./select-C1qDZnW4.js","./textarea-Bjccvh_E.js","./input-group-CGOXcy4l.js","./multi-select-combobox-1wYm3nle.js","./newsletters-D1jbtV-h.js","./tiers-BgYLWRJv.js","./tabs-BQcJQ1ke.js","./breadcrumb-B-M9Ip_2.js","./checkbox-EhJKHFdZ.js","./table-DxUL78jU.js","./toggle-group-BeEpQ69p.js","./page-header-op0eN36I.js","./nql-lang-B7faUf8D.js"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{g as i,n as a,o}from"./framework-provider-CmtnPXIT.js";import{_ as s,a as c,b as l,d as u,f as d,l as f,m as p,n as m,p as h,r as g,u as _,y as v}from"./hooks-BApwwBE0.js";import{n as y}from"./dist-Ndy-PuGN.js";import{a as b,c as x,d as S,f as C,g as w,h as T,i as ee,l as E,m as te,n as ne,o as re,p as ie,r as ae,s as D,t as oe,u as se}from"./automated-emails-of1MvVsv.js";import{n as ce}from"./offers-CrY6nSRR.js";import{t as le}from"./preload-helper-DYl5dUZ5.js";import{c as O,f as k,s as ue,x as de}from"./dist-DGzPJ_bO.js";import{t as fe}from"./box-BWbhXh21.js";import{$t as pe,A as me,At as he,Bt as ge,C as _e,Ct as ve,Dt as ye,E as be,Et as xe,Ft as Se,G as Ce,Gt as we,H as Te,Ht as A,It as Ee,Jt as De,Lt as Oe,M as j,Mt as ke,Nt as Ae,O as M,Ot as je,P as Me,Pt as Ne,Qt as Pe,R as Fe,Rt as Ie,S as Le,St as Re,T as ze,Tt as Be,U as Ve,Ut as N,V as He,Vt as Ue,W as We,Wt as Ge,X as Ke,Xt as qe,Y as Je,Yt as Ye,Z as Xe,Zt as Ze,_t as Qe,an as $e,b as et,bt as tt,c as nt,cn as rt,ct as it,d as at,dn as ot,en as st,et as ct,f as lt,fn as ut,ft as P,g as dt,gt as ft,h as pt,ht as mt,i as ht,in as gt,j as _t,jt as vt,kt as yt,ln as F,n as bt,nn as xt,o as St,on as Ct,ot as wt,p as Tt,pt as Et,q as Dt,qt as Ot,r as kt,rn as At,s as jt,sn as Mt,t as Nt,tn as Pt,u as Ft,un as It,vt as Lt,w as Rt,wt as I,x as zt,y as Bt,yt as L,z as Vt,zt as Ht}from"./social-urls-BPL1nADp.js";import{t as Ut}from"./inline-EMAm3okk.js";import{t as Wt}from"./stack-xiN0eQ6Z.js";import{t as Gt}from"./text-DwtjwGkh.js";import{i as Kt,r as qt}from"./shade-app-B3heOAfz-CGXQwWeO.js";import"./esm-CFX93H5M.js";import{a as Jt,i as R,n as z,r as Yt,t as Xt}from"./tabs-BQcJQ1ke.js";import{t as B}from"./switch-t-WyENU2.js";import{t as Zt}from"./dropzone-BmCXnw6J.js";import{i as Qt,n as $t,o as en,s as tn,t as nn}from"./select-C1qDZnW4.js";import{a as rn,i as an,n as on,o as V,r as H,t as U}from"./field-D0XISCK2.js";import{t as sn}from"./textarea-Bjccvh_E.js";import{i as cn,n as ln,r as un,t as dn}from"./input-group-CGOXcy4l.js";import{t as fn}from"./multi-select-combobox-1wYm3nle.js";import{n as pn,t as mn}from"./toggle-group-BeEpQ69p.js";import{l as hn,o as gn,t as _n,u as vn}from"./users-CcSCQFcQ.js";import{$a as yn,$o as bn,Bi as xn,Bn as Sn,Bo as Cn,Cn as W,Cr as wn,Di as Tn,Dr as En,Ei as Dn,Eo as On,Fi as kn,Fo as An,Fs as jn,Gn as Mn,Gr as Nn,Hi as Pn,Ho as Fn,Ii as In,Is as Ln,Ja as Rn,Ji as zn,Jn as Bn,Jo as Vn,Ki as Hn,Mi as Un,Nr as G,Ns as Wn,On as Gn,Pa as Kn,Po as qn,Ps as Jn,Qi as Yn,Rn as Xn,Ro as Zn,Sn as Qn,Ta as $n,Tn as er,Ui as tr,Uo as nr,Vi as rr,Vn as ir,Xa as ar,Xn as or,Yr as sr,Za as cr,Zi as lr,_o as ur,_r as dr,bo as fr,br as pr,do as mr,er as hr,es as gr,fs as _r,go as vr,gr as yr,hr as br,hs as xr,ja as Sr,jn as Cr,ka as wr,kn as Tr,lo as Er,ma as Dr,oa as Or,pa as kr,po as Ar,pr as jr,ps as Mr,qa as Nr,qn as Pr,qr as Fr,ra as Ir,ro as Lr,rr as K,sa as Rr,so as zr,ta as Br,ti as Vr,tn as Hr,uo as Ur,vr as Wr,wa as Gr,x as Kr,xa as qr,xn as Jr,xr as Yr,xs as Xr,yo as Zr,yr as Qr,zn as $r}from"./index-ukW_0Uie.js";import{a as ei,i as ti,r as ni,t as ri}from"./newsletters-D1jbtV-h.js";import{a as ii,n as ai,r as oi,t as si}from"./tiers-BgYLWRJv.js";import{t as ci}from"./referrers-BCfFYSHc.js";import{a as li,i as ui,o as di,r as fi,s as pi,t as mi}from"./member-custom-fields-NCzrMuba.js";import{i as hi}from"./gift-links-nBxJjZiQ.js";var q=e(t(),1),J=r(),gi=()=>{let{isDirty:e}=Kt(),{confirm:t,dialogProps:n}=Ht(),r=()=>{window.location.hash=`/`};return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(G,{"aria-label":`Close settings`,className:`text-muted-foreground hover:text-foreground`,"data-testid":`exit-settings`,id:`done-button`,size:`icon`,title:`Close (ESC)`,type:`button`,variant:`ghost`,onClick:()=>t(e,r),children:(0,J.jsx)(Dn,{className:`size-6!`})}),(0,J.jsx)(Ie,{...n})]})},_i=q.lazy(()=>le(()=>import(`./code-editor-view-CZtJFGhR.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url)),vi=(0,q.forwardRef)(function(e,t){return(0,J.jsx)(q.Suspense,{fallback:null,children:(0,J.jsx)(_i,{...e,ref:t})})}),yi=(e,t)=>{let[n,r]=(0,q.useState)(`Save`),[i,a]=(0,q.useState)(!1);return{savingTitle:n,isSaving:i,onSaveClick:async()=>{a(!0),r(`Saving`),await e({fakeWhenUnchanged:t}),setTimeout(()=>{r(`Saved`),setTimeout(()=>{r(`Save`),a(!1)},1e3)},1e3)}}},bi=N.create(({afterClose:e})=>{let{localSettings:t,handleSave:n,updateSetting:r}=M(),i=Ge(),[a,o]=W(t,[`codeinjection_head`,`codeinjection_foot`]),[s,c]=(0,q.useState)(`header`),l=(0,q.useRef)(null),u=(0,q.useRef)(null),d=(0,q.useMemo)(()=>le(()=>import(`./dist-pHiOxyxa.js`).then(e=>e.html()),__vite__mapDeps([28,8,29,30,1,31,9]),import.meta.url),[]),f={extensions:[d],hint:`Code here will be injected into the {{ghost_head}} tag on every page of the site`,value:a||``,onChange:e=>r(`codeinjection_head`,e)},p={extensions:[d],hint:`Code here will be injected into the {{ghost_foot}} tag on every page of the site`,value:o||``,onChange:e=>r(`codeinjection_foot`,e)},{savingTitle:m,isSaving:h,onSaveClick:g}=yi(n,!0);return(0,q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),g())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),(0,J.jsx)(tt,{afterClose:e,backDropClick:!1,cancelLabel:`Close`,footer:(0,J.jsx)(J.Fragment,{}),height:`full`,size:`full`,testId:`modal-code-injection`,children:(0,J.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,J.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,J.jsx)(Gt,{as:`h2`,className:`md:text-3xl`,leading:`heading`,size:`2xl`,weight:`bold`,children:`Code injection`}),(0,J.jsxs)(Ut,{gap:`md`,children:[(0,J.jsx)(G,{className:`font-semibold`,type:`button`,variant:`ghost`,onClick:()=>{i.remove(),e?.()},children:`Close`}),(0,J.jsx)(G,{disabled:h,type:`button`,onClick:g,children:m})]})]}),(0,J.jsxs)(Xt,{className:`mb-16 flex flex-auto flex-col`,value:s,variant:`underline`,onValueChange:e=>c(e),children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`header`,children:`Site header`}),(0,J.jsx)(R,{value:`footer`,children:`Site footer`})]}),(0,J.jsx)(z,{className:`h-full flex-auto`,value:`header`,children:(0,J.jsx)(vi,{ref:l,className:`mt-2`,"data-testid":`header-code`,height:`full`,autoFocus:!0,...f})}),(0,J.jsx)(z,{className:`h-full flex-auto`,value:`footer`,children:(0,J.jsx)(vi,{ref:u,className:`mt-2`,"data-testid":`footer-code`,height:`full`,...p})})]})]})})}),Y=({keywords:e,navid:t,testId:n,title:r,description:i,isEditing:a=!1,saveState:o,headerMedia:s,customButtons:c,beta:l=!1,children:u,hideEditButton:d,alwaysShowSaveButton:f=!0,highlightOnModalClose:p=!0,enableCMDS:m=!0,onEditingChange:h,onSave:g,onCancel:_})=>{let{checkVisible:v,noResult:y,registerComponent:b,unregisterComponent:x}=ct(),{route:S}=A(),[C,w]=(0,q.useState)(!1),{ref:T}=mt(t),ee=(0,q.useId)(),E=Lt(t||`component`,ee);(0,q.useEffect)(()=>(b(E,e),()=>{x(E)}),[E,e,b,x]),(0,q.useEffect)(()=>{if(w(S===t),S===t){let e=setTimeout(()=>w(!1),2e3);return()=>clearTimeout(e)}},[S,t]),(0,q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),g?.())};if(m)return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m,g]);let te=a?(0,J.jsxs)(Ut,{className:`-mt-1.25`,gap:`sm`,children:[(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{_?.(),h?.(!1)},children:`Cancel`}),(o===`unsaved`||f)&&(0,J.jsx)(G,{disabled:o!==`unsaved`,size:`sm`,type:`button`,onClick:g,children:o===`saving`?`Saving...`:`Save`})]}):!d||o===`saved`?(0,J.jsx)(G,{className:`-mt-1.25 -mr-1`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>h?.(!0),children:o===`saved`?`Saved`:`Edit`}):null,ne=q.Children.toArray(u).some(e=>q.isValidElement(e)&&e.type===`img`)?(0,J.jsx)(`div`,{className:`-mx-5 -mb-5 overflow-hidden rounded-b-xl bg-muted md:-mx-7 md:-mb-7`,children:q.Children.map(u,e=>q.isValidElement(e)&&e.type===`img`?q.cloneElement(e,{className:`${e.props.className||``} h-full w-full rounded-b-xl`.trim()}):e)}):u;return(0,J.jsxs)(Re,{className:v(e)||y?void 0:`hidden`,"data-testid":n,editing:a,highlighted:C&&p||a,children:[(0,J.jsx)(`div`,{ref:T,className:`absolute`,id:t}),s,(r||i||c||h)&&(0,J.jsxs)(ye,{children:[(r||i)&&(0,J.jsxs)(xe,{children:[r&&(0,J.jsxs)(je,{children:[r,l&&(0,J.jsx)(`sup`,{className:`ml-0.5 text-[10px] font-semibold tracking-wide uppercase`,children:`Beta`})]}),i&&(0,J.jsx)(Be,{children:i})]}),(0,J.jsx)(ve,{children:c||h&&te})]}),ne]})},xi=j(({keywords:e})=>(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{N.show(bi)},children:`Open`}),description:`Add custom code to your publication`,keywords:e,navid:`code-injection`,testId:`code-injection`,title:`Code injection`}),`Code injection`),Si=m({method:`POST`,path:()=>`/db/`,body:e=>{let t=new FormData;return t.append(`importfile`,e),t}}),Ci=m({method:`DELETE`,path:()=>`/db/`}),wi=()=>u(`/db/`),Ti=m({method:`POST`,path:()=>`/authentication/reset/`}),Ei=j(({keywords:e})=>{let{mutateAsync:t}=Ci(),{mutateAsync:n}=Ti(),{mutateAsync:r}=hi(),i=o(),a=h(),{config:s}=L(),{totalUsers:c}=Ce(),l=!!s?.labs?.dangerZoneResetAuth,u=c===1?`You will be signed out and must reset your password before signing back in.`:c>1?`All ${c} staff users, including you, will be signed out and must reset their password before signing back in.`:`All staff users, including you, will be signed out and must reset their password before signing back in.`;return(0,J.jsx)(Y,{description:`Destructive actions that affect your entire site.`,keywords:e,navid:`dangerzone`,testId:`dangerzone`,title:`Danger zone`,children:(0,J.jsxs)(F,{children:[(0,J.jsxs)(It,{"data-testid":`delete-all-content`,hover:!1,children:[(0,J.jsxs)(ut,{className:`py-3 pr-6`,children:[(0,J.jsx)(`div`,{children:`Delete all content`}),(0,J.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Permanently delete all posts and tags from the database.`})]}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{"aria-label":`Delete all content`,size:`sm`,type:`button`,variant:`destructive`,onClick:()=>{N.show(P,{title:`Would you really like to delete all content from your blog?`,prompt:`This is permanent! No backups, no restores, no magic undo button. We warned you, k?`,okVariant:`destructive`,okLabel:`Delete`,onOk:async e=>{try{await t(null),y.success(`All content deleted from database.`),e?.remove(),await i.refetchQueries()}catch(e){a(e)}}})},children:`Delete`})})]}),l&&(0,J.jsxs)(It,{"data-testid":`reset-all-authentication`,hover:!1,children:[(0,J.jsxs)(ut,{className:`py-3 pr-6`,children:[(0,J.jsx)(`div`,{children:`Reset all authentication`}),(0,J.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Rotate every API key, sign out every staff user, and require a password reset. Use after a suspected credential compromise.`})]}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{"aria-label":`Reset all authentication`,size:`sm`,type:`button`,variant:`destructive`,onClick:()=>{N.show(P,{title:`Reset all authentication?`,prompt:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`p`,{className:`mb-4`,children:[`This rotates every API key on your site. Any integration using one will stop working until you reconfigure it with the new key from `,(0,J.jsx)(`strong`,{children:`Settings → Advanced → Integrations`}),`.`]}),(0,J.jsxs)(`p`,{children:[u,` Your members aren't affected.`]})]}),okLabel:`Reset all authentication`,okRunningLabel:`Resetting...`,okVariant:`destructive`,onOk:async e=>{try{let t=(await n(null))?.security_action?.[0],r=t?.api_keys_rotated??0,i=t?.users_locked??0;y.success(`Rotated ${k(r)} API ${r===1?`key`:`keys`} and locked ${k(i)} ${i===1?`user`:`users`}. You will be signed out shortly.`),e?.remove(),window.location.href=d().adminRoot}catch(e){a(e)}}})},children:`Reset`})})]}),(0,J.jsxs)(It,{"data-testid":`reset-all-gift-links`,hover:!1,children:[(0,J.jsxs)(ut,{className:`py-3 pr-6`,children:[(0,J.jsx)(`div`,{children:`Reset all gift links`}),(0,J.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Invalidate every active gift link across your site. Anyone holding one will lose access.`})]}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{"aria-label":`Reset all gift links`,size:`sm`,type:`button`,variant:`destructive`,onClick:()=>{N.show(P,{title:`Reset all gift links?`,prompt:`This immediately invalidates every active gift link across your site. Anyone holding one will lose access. New gift links can still be created afterwards.`,okLabel:`Reset all gift links`,okRunningLabel:`Resetting...`,okVariant:`destructive`,onOk:async e=>{try{let t=(await r(null))?.meta?.count??0;Me(`All Gift Links Reset`),y.success(`Reset ${k(t)} gift ${t===1?`link`:`links`}.`),e?.remove()}catch(e){a(e)}}})},children:`Reset`})})]})]})})},`Danger zone`),Di=j(({keywords:e})=>{let{updateRoute:t}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`history/view`)},children:`View history`}),description:`View system event log`,keywords:e,navid:`history`,testId:`history`,title:`History`})},`History`),Oi=``+new URL(`integrations-settings-Ba5Zx8yQ.png`,import.meta.url).href,ki=({icon:e,title:t,detail:n,action:r,onDelete:i,active:a,disabled:o,testId:s,custom:c=!1})=>{let{updateRoute:l}=A(),u=e=>{e?.stopPropagation(),o?l({route:`pro`,isExternal:!0}):r()},d=c?(0,J.jsx)(G,{className:`text-destructive hover:text-destructive`,size:`sm`,type:`button`,variant:`ghost`,onClick:e=>{e?.stopPropagation(),i?.()},children:`Delete`}):o?(0,J.jsxs)(G,{size:`sm`,type:`button`,variant:`ghost`,onClick:u,children:[(0,J.jsx)(Lr,{}),`Upgrade`]}):(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,size:`sm`,type:`button`,variant:`link`,onClick:u,children:`Configure`});return(0,J.jsxs)(It,{className:o?`opacity-50 saturate-0`:``,"data-testid":s,children:[(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsxs)(`button`,{className:`flex w-full items-center gap-3 py-3 text-left`,type:`button`,onClick:u,children:[e,(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t,a&&(0,J.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-green/10 px-1.5 py-px text-xs font-semibold tracking-wide text-green uppercase`,children:`Active`})]}),(0,J.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:n})]})]})}),(0,J.jsx)(ot,{visibility:o?`always`:`hover`,children:d})]})},Ai=()=>{let{config:e}=L(),{updateRoute:t}=A(),n=e=>{t(e)},r=e.hostSettings?.limits?.customIntegrations?.disabled,i=Le(),{settings:a}=L(),[o,s,c,l,u]=W(a,[`unsplash`,`firstpromoter`,`slack_url`,`slack_username`,`transistor`]),d=[{detail:`Automation for your apps`,disabled:r,icon:(0,J.jsx)(Et,{name:`zapier`,size:32}),modal:`integrations/zapier`,testId:`zapier-integration`,title:`Zapier`},{active:!!(c&&l),detail:`A messaging app for teams`,icon:(0,J.jsx)(Et,{name:`slack`,size:32}),modal:`integrations/slack`,testId:`slack-integration`,title:`Slack`},{active:!!o,detail:`Beautiful, free photos`,icon:(0,J.jsx)(Et,{name:`unsplash`,size:32}),modal:`integrations/unsplash`,testId:`unsplash-integration`,title:`Unsplash`},{active:!!s,detail:`Launch your member referral program`,icon:(0,J.jsx)(Et,{name:`firstpromoter`,size:32}),modal:`integrations/firstpromoter`,testId:`firstpromoter-integration`,title:`FirstPromoter`},{active:i.isEnabled,detail:`Advanced image editing`,icon:(0,J.jsx)(Et,{name:`pintura`,size:32}),modal:`integrations/pintura`,testId:`pintura-integration`,title:`Pintura`},{active:!!u,detail:`Give your members access to private podcasts`,disabled:r,icon:(0,J.jsx)(Et,{name:`transistor`,size:32}),modal:`integrations/transistor`,testId:`transistor-integration`,title:`Transistor.fm`},{detail:`Access your content programmatically`,icon:(0,J.jsx)(Cn,{className:`size-8`}),modal:`integrations/contentapi`,testId:`content-api-integration`,title:`Content API`}];return(0,J.jsx)(F,{children:[...d.filter(e=>!e.disabled),...d.filter(e=>e.disabled)].map(e=>(0,J.jsx)(ki,{action:()=>{n(e.modal)},active:e.active,detail:e.detail,disabled:e.disabled,icon:e.icon,testId:e.testId,title:e.title},e.testId))})},ji=({integrations:e})=>{let{updateRoute:t}=A(),{mutateAsync:n}=it(),r=h();return e.length?(0,J.jsx)(F,{children:e.map(e=>(0,J.jsx)(ki,{action:()=>t({route:`integrations/${e.id}`}),detail:(0,J.jsx)(`div`,{className:`line-clamp-2 break-words`,children:(0,J.jsx)(`span`,{title:`${e.name}: ${e.description||`No description`}`,children:e.description||`No description`})}),icon:e.icon_image?(0,J.jsx)(`img`,{className:`size-8 shrink-0 object-cover`,role:`presentation`,src:e.icon_image}):(0,J.jsx)(Mr,{className:`size-6 shrink-0`}),title:e.name,custom:!0,onDelete:()=>{N.show(P,{title:`Are you sure?`,prompt:`Deleting this integration will remove all webhooks and api keys associated with it.`,okVariant:`destructive`,okLabel:`Delete Integration`,onOk:async t=>{try{await n(e.id),t?.remove(),y.info(`Integration deleted`,{position:`bottom-left`})}catch(e){r(e)}}})}},e.id))}):(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)($n,{})}),`No custom integration.`]})},Mi=j(({keywords:e})=>{let[t,n]=(0,q.useState)(`built-in`),{data:{integrations:r}={integrations:[]}}=wt(),{updateRoute:i}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{i(`integrations/new`),n(`custom`)},children:`Add custom integration`}),description:`Make Ghost work with apps and tools.`,headerMedia:(0,J.jsx)(`div`,{className:`-mx-5 overflow-hidden rounded-t-xl border-b border-border-default sm:-mt-5 md:-mx-7 md:-mt-7`,children:(0,J.jsx)(`img`,{className:`size-full`,src:Oi})}),keywords:e,navid:`integrations`,testId:`integrations`,title:`Integrations`,children:(0,J.jsxs)(Xt,{value:t,variant:`underline`,onValueChange:e=>n(e),children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`built-in`,children:`Built-in`}),(0,J.jsx)(R,{value:`custom`,children:`Custom`})]}),(0,J.jsx)(z,{value:`built-in`,children:(0,J.jsx)(Ai,{})}),(0,J.jsx)(z,{value:`custom`,children:(0,J.jsx)(ji,{integrations:r.filter(e=>e.type===`custom`)})})]})})},`Integrations`),Ni=N.create(({title:e,prompt:t,okLabel:n,okRunningLabel:r=`Enabling...`,onConfirm:i})=>{let a=Ge(),[o,s]=q.useState(!1);return(0,J.jsx)(tt,{backDropClick:!1,buttonsDisabled:o,cancelLabel:`Cancel`,okLabel:o?r:n,testId:`feature-toggle-confirmation-modal`,title:e,width:540,onCancel:()=>{a.remove()},onOk:async()=>{s(!0);try{await i()&&a.remove()}finally{s(!1)}},children:(0,J.jsx)(`div`,{className:`py-4`,children:t})})}),Pi=({label:e,flag:t,disabled:n,confirmation:r})=>{let{settings:i}=L(),a=JSON.parse(Qn(i,`labs`)||`{}`),{mutateAsync:s}=Gn(),c=o(),l=h(),u=!!a[t],d=async e=>{try{return await s([{key:`labs`,value:JSON.stringify({...a,[t]:e})}]),Me(`Feature Toggled`,{state:e?`on`:`off`,feature:t}),c.setQueriesData({queryKey:[Wn]},n=>({config:{...n.config,labs:{...n.config.labs,[t]:e}}})),!0}catch(e){return l(e),!1}};return(0,J.jsx)(B,{"aria-label":e||t,checked:u,disabled:n,name:`feature-${t}`,onCheckedChange:async e=>{if(r&&e){N.show(Ni,{...r,onConfirm:()=>d(e)});return}await d(e)}})},Fi=({title:e,detail:t,action:n,testId:r})=>(0,J.jsxs)(It,{"data-testid":r,hover:!1,children:[(0,J.jsxs)(ut,{className:`py-3 pr-6`,children:[(0,J.jsx)(`div`,{children:e}),t&&(0,J.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:t})]}),n&&(0,J.jsx)(ot,{children:n})]}),Ii=e=>e instanceof s&&e.data?.errors?.[0]?e.data.errors[0].context||e.data.errors[0].message:e instanceof p?e.message:`Something went wrong, please try again.`,Li=N.create(({title:e,hint:t,testId:n,downloadPath:r,uploadFilename:i,successMessage:a,onUpload:o,afterClose:s})=>{let c=Ge(),l=h(),[u,f]=(0,q.useState)(``),[p,m]=(0,q.useState)(!0),[g,_]=(0,q.useState)(null),[v,b]=(0,q.useState)(null),[x,S]=(0,q.useState)(!1),C=(0,q.useMemo)(()=>le(()=>import(`./dist-t6AXpf_4.js`).then(e=>e.yaml()),__vite__mapDeps([32,8,29]),import.meta.url),[]);(0,q.useEffect)(()=>{let e=!0;return(async()=>{m(!0),_(null);try{let{apiRoot:t}=d(),n=await fetch(`${t}${r}`,{credentials:`include`,headers:{Accept:`text/yaml, text/plain, */*`}});if(!n.ok)throw Error(`Failed to load ${i} (${n.status})`);let a=await n.text();e&&f(a)}catch(t){e&&_(t instanceof Error?t.message:`Failed to load ${i}`)}finally{e&&m(!1)}})(),()=>{e=!1}},[r,i]);let w=()=>{c.remove(),s?.()},T=async()=>{if(!(x||p||g)){S(!0),b(null);try{await o(new File([u],i,{type:`text/yaml`})),y.success(a),w()}catch(e){b(Ii(e)),l(e,{withToast:!1})}finally{S(!1)}}};return(0,q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),T())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),(0,J.jsx)(tt,{afterClose:s,backDropClick:!1,cancelLabel:`Close`,footer:(0,J.jsx)(J.Fragment,{}),height:`full`,size:`full`,testId:n,children:(0,J.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,J.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,J.jsx)(Gt,{as:`h2`,className:`md:text-3xl`,leading:`heading`,size:`2xl`,weight:`bold`,children:e}),(0,J.jsxs)(Ut,{gap:`md`,children:[(0,J.jsx)(G,{className:`font-semibold`,type:`button`,variant:`ghost`,onClick:w,children:`Close`}),(0,J.jsx)(G,{disabled:!(!p&&!g&&!x),type:`button`,onClick:()=>void T(),children:x?`Saving...`:`Save`})]})]}),(g||v)&&(0,J.jsx)(`div`,{className:`mb-4 rounded-sm border border-red bg-red/5 px-4 py-2 text-sm text-red`,"data-testid":`yaml-editor-error`,children:v||g}),(0,J.jsx)(`div`,{className:`mb-16 min-h-0 flex-auto`,children:!p&&(0,J.jsx)(vi,{"data-testid":`yaml-editor`,extensions:[C],height:`full`,hint:t,value:u,autoFocus:!0,onChange:f})})]})})}),Ri=m({method:`POST`,path:()=>`/redirects/upload/`,body:e=>{let t=new FormData;return t.append(`redirects`,e),t}}),zi=()=>u(`/redirects/download/`),Bi=m({method:`POST`,path:()=>`/settings/routes/yaml/`,body:e=>{let t=new FormData;return t.append(`routes`,e),t}}),Vi=()=>u(`/settings/routes/yaml/`),Hi=()=>{let{settings:e}=L(),{mutateAsync:t}=Ri(),{mutateAsync:n}=Bi(),r=h(),[i,a]=(0,q.useState)(!1),[o,s]=(0,q.useState)(!1),c=!!JSON.parse(Qn(e,`labs`)||`{}`).automations;return(0,J.jsxs)(F,{children:[(0,J.jsx)(Fi,{action:(0,J.jsx)(Pi,{confirmation:{title:`Automations (beta)`,prompt:`This is a one-way street. Once enabled, the automations beta can't be turned off. Existing welcome emails will move into your automations automatically.`,okLabel:`Enable`,okRunningLabel:`Enabling...`},disabled:c,flag:`automations`,label:`Automations (beta)`}),detail:(0,J.jsxs)(J.Fragment,{children:[`Build automated email flows for your members, and get early access to new automation features as they ship. `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/automations-beta`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more →`})]}),title:`Automations (beta)`}),(0,J.jsx)(Fi,{action:(0,J.jsx)(Pi,{flag:`superEditors`}),detail:(0,J.jsx)(J.Fragment,{children:`Allows newly-assigned editors to manage members and comments in addition to regular roles.`}),title:`Enhanced Editor role (beta)`}),(0,J.jsx)(Fi,{action:(0,J.jsx)(Pi,{flag:`editorExcerpt`}),detail:(0,J.jsx)(J.Fragment,{children:`Adds the excerpt input below the post title in the editor`}),title:`Show post excerpt inline`}),(0,J.jsx)(Fi,{action:(0,J.jsx)(Pi,{flag:`additionalPaymentMethods`}),detail:(0,J.jsxs)(J.Fragment,{children:[`Enable support for CashApp, iDEAL, Bancontact, and others. `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/payment-methods`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more →`})]}),title:`Additional payment methods`}),(0,J.jsx)(Fi,{action:(0,J.jsxs)(Wt,{align:`end`,gap:`xs`,children:[(0,J.jsxs)(Ut,{gap:`sm`,children:[(0,J.jsx)(Zt,{inputId:`upload-redirects`,variant:`buttonSecondary`,onDropAccepted:async([e])=>{try{a(!0),await t(e),y.success(`Redirects uploaded`)}catch(e){r(e)}finally{a(!1)}},children:i?`Uploading ...`:`Upload redirects file`}),(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`secondary`,onClick:()=>{N.show(Li,{title:`Redirects`,hint:(0,J.jsxs)(J.Fragment,{children:[`Configure redirects for old or moved content. See the `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/tutorials/implementing-redirects/`,rel:`noopener noreferrer`,target:`_blank`,children:`docs`}),` for the file format.`]}),testId:`modal-redirects-editor`,downloadPath:`/redirects/download/`,uploadFilename:`redirects.yaml`,successMessage:`Redirects updated`,onUpload:e=>t(e)})},children:`Edit`})]}),(0,J.jsx)(G,{className:`h-auto p-0 text-green hover:text-green`,size:`sm`,type:`button`,variant:`link`,onClick:()=>zi(),children:`Download current redirects`})]}),detail:(0,J.jsxs)(J.Fragment,{children:[`Configure redirects for old or moved content, `,(0,J.jsx)(`br`,{}),` more info in the `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/tutorials/implementing-redirects/`,rel:`noopener noreferrer`,target:`_blank`,children:`docs`})]}),testId:`redirects`,title:`Redirects`}),(0,J.jsx)(Fi,{action:(0,J.jsxs)(Wt,{align:`end`,gap:`xs`,children:[(0,J.jsxs)(Ut,{gap:`sm`,children:[(0,J.jsx)(Zt,{inputId:`upload-routes`,variant:`buttonSecondary`,onDropAccepted:async([e])=>{try{s(!0),await n(e),y.success(`Routes uploaded`)}catch(e){r(e)}finally{s(!1)}},children:o?`Uploading ...`:`Upload routes file`}),(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`secondary`,onClick:()=>{N.show(Li,{title:`Routes`,hint:(0,J.jsxs)(J.Fragment,{children:[`Configure dynamic routing by editing the routes.yaml file. See the `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://docs.ghost.org/themes/routing/`,rel:`noopener noreferrer`,target:`_blank`,children:`docs`}),` for the file format.`]}),testId:`modal-routes-editor`,downloadPath:`/settings/routes/yaml/`,uploadFilename:`routes.yaml`,successMessage:`Routes updated`,onUpload:e=>n(e)})},children:`Edit`})]}),(0,J.jsx)(G,{className:`h-auto p-0 text-green hover:text-green`,size:`sm`,type:`button`,variant:`link`,onClick:()=>Vi(),children:`Download current routes`})]}),detail:`Configure dynamic routing by modifying the routes.yaml file`,testId:`routes`,title:`Routes`})]})},Ui=`data:image/svg+xml,%3csvg%20width='267'%20height='285'%20viewBox='0%200%20267%20285'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='165'%20cy='183'%20r='102'%20fill='%23F1F3F4'/%3e%3ccircle%20cx='68'%20cy='71'%20r='31'%20fill='%23F1F3F4'/%3e%3ccircle%20cx='99'%20cy='17'%20r='17'%20fill='%23F1F3F4'/%3e%3ccircle%20cx='118'%20cy='70'%20r='7'%20fill='%23F1F3F4'/%3e%3ccircle%20cx='45'%20cy='32'%20r='3'%20fill='%23F1F3F4'/%3e%3ccircle%20cx='12.5'%20cy='83.5'%20r='12.5'%20fill='%23F1F3F4'/%3e%3c/svg%3e`,Wi=[{title:`Automations`,description:`Toggle the automations beta. Unexpected problems can occur if you turn this off after previously turning it on.`,flag:`automations`},{title:`Automations analytics`,description:`Show analytics for automations. Assumes the "automations" flag is also on.`,flag:`automationAnalytics`},{title:`Stripe Automatic Tax (private beta)`,description:`Use Stripe Automatic Tax at Stripe Checkout. Needs to be enabled in Stripe`,flag:`stripeAutomaticTax`},{title:`Email customization (internal beta)`,description:`Newsletter customization settings that have been released to Ghost's own production sites`,flag:`emailCustomization`},{title:`Import Member Tier`,description:`Enables tier to be specified when importing members`,flag:`importMemberTier`},{title:`CSV Content Importer`,description:`Enables importing posts from CSV files in the Universal Importer`,flag:`csvContentImporter`},{title:`Admin UI Refresh`,description:`Enable Admin UI refresh (exploration)`,flag:`adminUIRefresh`},{title:`Explore`,description:`Enables keeping in touch with the new Explore API`,flag:`explore`},{title:`Tags X`,description:`Enables the new Tags UI`,flag:`tagsX`},{title:`Email Unique ID`,description:`Enables {uniqueid} variable in emails for unique image URLs to bypass ESP image caching`,flag:`emailUniqueid`},{title:`Updated theme translation (beta)`,description:`Enable theme translation using i18next instead of the old translation package.`,flag:`themeTranslation`},{title:`Featurebase Feedback`,description:`Display a Feedback menu item in the admin sidebar. Requires the new admin experience.`,flag:`featurebaseFeedback`},{title:`Picture Element`,description:`Use the HTML picture element to serve modern image formats (AVIF, WebP) with automatic fallbacks`,flag:`pictureImageFormats`},{title:`Smarter Counts`,description:`Use optimized COUNT queries for API pagination when safe`,flag:`smarterCounts`},{title:`Get helper deduplication`,description:`Deduplicate identical {{#get}} helper queries within a single request to avoid redundant database calls`,flag:`getHelperDeduplication`},{title:`React member details`,description:`Renders the member detail screen (/members/:id) from the React app instead of the Ember screen. Gates the migration behind a runtime toggle so we can compare both implementations.`,flag:`memberDetailsReact`},{title:`Member custom fields`,description:`Let admins create and manage custom field definitions for members`,flag:`membersCustomFields`},{title:`Preview by tier`,description:`Preview posts and emails as a member of a specific tier`,flag:`previewByTier`},{title:`Paywall improvements`,description:`Enables paywall usability, discoverability and email customization improvements`,flag:`paywallImprovements`}],Gi=()=>{let e=We(),[t,n]=(0,q.useState)([]);return(0,q.useEffect)(()=>{(async()=>{let t=[];for(let n of Wi)if(n.limitName&&e?.isLimited(n.limitName))try{await e.errorIfWouldGoOverLimit(n.limitName),t.push(n)}catch(e){e instanceof Ve||t.push(n)}else t.push(n);n(t)})()},[e]),(0,J.jsx)(F,{children:t.map(e=>(0,J.jsx)(Fi,{action:(0,J.jsx)(Pi,{flag:e.flag,label:e.title}),detail:e.description,title:e.title},e.flag))})};function Ki(e){let[t,n]=(0,q.useState)(!1),r=(0,q.useRef)(!1),{filter:i,getVisibleComponents:a,checkVisible:o}=ct();return(0,q.useEffect)(()=>{i||(r.current=!1)},[i]),(0,q.useEffect)(()=>{if(r.current)return;let t=o(e),s=a(),c=!!i&&t&&s.size===1;n(c)},[i,e,o,a]),{isOpen:t,openManually:()=>{r.current=!0,n(!0)},closeManually:()=>{r.current=!0,n(!1)}}}var qi=j(({keywords:e})=>{let[t,n]=(0,q.useState)(`labs-beta-features`),{config:r}=L(),{isOpen:i,openManually:a,closeManually:o}=Ki(e);return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:i?`secondary`:`ghost`,onClick:i?o:a,children:i?`Close`:`Open`}),description:`This is a testing ground for new or experimental features. They may change, break or inexplicably disappear at any time.`,isEditing:i,keywords:e,navid:`labs`,testId:`labs`,title:`Labs`,children:i?(0,J.jsxs)(Xt,{value:t,variant:`underline`,onValueChange:e=>n(e),children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`labs-beta-features`,children:`Beta features`}),r.enableDeveloperExperiments&&(0,J.jsx)(R,{value:`labs-private-features`,children:`Private features`})]}),(0,J.jsx)(z,{value:`labs-beta-features`,children:(0,J.jsx)(Hi,{})}),r.enableDeveloperExperiments&&(0,J.jsx)(z,{value:`labs-private-features`,children:(0,J.jsx)(Gi,{})})]}):(0,J.jsx)(`div`,{className:`absolute inset-0 z-0 overflow-hidden opacity-70`,children:(0,J.jsx)(`img`,{className:`absolute -top-6 -right-6 dark:opacity-10`,src:Ui})})})},`Labs`),Ji=()=>{let[e,t]=q.useState(!1),n=h();return(0,J.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 pt-4 md:grid-cols-2 lg:grid-cols-3`,children:[(0,J.jsxs)(G,{className:`h-9 font-semibold`,type:`button`,variant:`secondary`,onClick:()=>wi(),children:[(0,J.jsx)(An,{}),`Content & settings`]}),(0,J.jsx)(G,{className:`h-9 font-semibold`,"data-testid":`post-analytics-export-button`,disabled:e,type:`button`,variant:`secondary`,onClick:async()=>{if(!e){t(!0);try{await f(`/posts/export/?limit=1000`,`posts.analytics.csv`)}catch(e){n(e)}finally{t(!1)}}},children:e?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(hr,{size:`sm`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Loading...`})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(tr,{}),`Post analytics`]})})]})},Yi=N.create(()=>{let e=Ge(),{mutateAsync:t}=Si(),[n,r]=(0,q.useState)(!1),i=h();return(0,J.jsx)(tt,{backDropClick:!1,footer:(0,J.jsxs)(`div`,{className:`flex w-full items-center justify-between p-8`,children:[(0,J.jsx)(`a`,{className:`text-green hover:text-green-400`,href:`https://docs.ghost.org/migration/ghost`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn about importing`}),(0,J.jsx)(G,{className:`font-semibold`,disabled:n,type:`button`,variant:`ghost`,onClick:()=>e.remove(),children:`Cancel`})]}),okLabel:``,size:`sm`,testId:`universal-import-modal`,title:`Universal import`,children:(0,J.jsx)(`div`,{className:`py-4`,children:(0,J.jsx)(Zt,{accept:{"application/json":[`.json`],"application/zip":[`.zip`]},inputId:`import-file`,onDropAccepted:async([n])=>{r(!0);try{await t(n),e.remove(),N.show(P,{title:`Import in progress`,prompt:`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.`,cancelLabel:``,okLabel:`Got it`,onOk:e=>e?.remove(),formSheet:!1})}catch(e){i(e)}finally{r(!1)}},children:(0,J.jsx)(`div`,{className:`text-center`,children:n?`Uploading...`:(0,J.jsxs)(J.Fragment,{children:[`Select any JSON or zip file that contains `,(0,J.jsx)(`br`,{}),`posts and settings`]})})})})})}),Xi=()=>{let{updateRoute:e}=A();return(0,J.jsx)(`div`,{className:`grid grid-cols-1 gap-4 pt-4 md:grid-cols-2 lg:grid-cols-3`,children:[{icon:(0,J.jsx)(Et,{className:`w-auto`,name:`substack`,size:18}),title:`Substack`,onClick:()=>e({isExternal:!0,route:`/migrate/substack`})},{icon:(0,J.jsx)(Et,{className:`w-auto`,name:`beehiiv`,size:18}),title:`beehiiv`,onClick:()=>e({isExternal:!0,route:`/migrate/beehiiv`})},{icon:(0,J.jsx)(Et,{className:`w-auto`,name:`wordpress`,size:18}),title:`WordPress`,onClick:()=>e({isExternal:!0,route:`/migrate/wordpress`})},{icon:(0,J.jsx)(Et,{className:`w-auto`,name:`squarespace`,size:18}),title:`Squarespace`,onClick:()=>e({isExternal:!0,route:`/migrate/squarespace`})},{icon:(0,J.jsx)(Et,{className:`w-auto dark:invert`,name:`medium`,size:18}),title:`Medium`,onClick:()=>e({isExternal:!0,route:`/migrate/medium`})},{icon:(0,J.jsx)(Et,{className:`w-auto`,name:`mailchimp`,size:20}),title:`Mailchimp`,onClick:()=>e({isExternal:!0,route:`/migrate/mailchimp`})},{icon:(0,J.jsx)(Ar,{className:`size-4`}),title:`Universal import`,onClick:()=>{N.show(Yi)}}].map(e=>(0,J.jsxs)(G,{className:`h-9 font-semibold`,type:`button`,variant:`secondary`,onClick:e.onClick,children:[e.icon,e.title]},e.title))})},Zi=j(({keywords:e})=>{let[t,n]=(0,q.useState)(`import`);return(0,J.jsx)(Y,{description:`Import content, members and subscriptions from other platforms or export your Ghost data.`,keywords:e,navid:`migration`,testId:`migrationtools`,title:`Migration tools`,children:(0,J.jsxs)(Xt,{value:t,variant:`underline`,onValueChange:e=>n(e),children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`import`,children:`Import`}),(0,J.jsx)(R,{value:`export`,children:`Export`})]}),(0,J.jsx)(z,{value:`import`,children:(0,J.jsx)(Xi,{})}),(0,J.jsx)(z,{value:`export`,children:(0,J.jsx)(Ji,{})})]})})},`Migration tools`),Qi=({children:e,keywords:t,title:n})=>{let{checkVisible:r,noResult:i}=ct();return(0,J.jsxs)(fe,{className:r(t)||i?`mb-[10vh]`:`hidden`,children:[n&&(0,J.jsx)(Gt,{as:`h2`,className:`z-20 mt-[-5px] mb-px pb-10 tracking-tight`,leading:`heading`,size:`2xl`,weight:`semibold`,children:n}),e&&(0,J.jsx)(Wt,{className:`mb-10 gap-12`,gap:`none`,children:e})]})},$i={integrations:[`advanced`,`integrations`,`zapier`,`slack`,`unsplash`,`first promoter`,`firstpromoter`,`pintura`,`disqus`,`analytics`,`ulysses`,`typeform`,`buffer`,`plausible`,`github`,`webhooks`],migrationtools:[`import`,`export`,`migrate`,`substack`,`substack`,`migration`,`medium`,`wordpress`,`wp`,`squarespace`,`beehiiv`],codeInjection:[`advanced`,`code injection`,`head`,`footer`],labs:[`advanced`,`labs`,`alpha`,`private`,`beta`,`flag`,`routes`,`redirect`,`translation`,`editor`,`portal`],history:[`advanced`,`history`,`log`,`events`,`user events`,`staff`,`audit`,`action`],dangerzone:[`danger zone`,`delete all content`,`delete site`,`reset all authentication`,`reset api keys`,`reset password`,`compromised credentials`,`lock staff users`,`sign out all staff`]},ea=()=>(0,J.jsxs)(Qi,{keywords:Object.values($i).flat(),title:`Advanced`,children:[(0,J.jsx)(Mi,{keywords:$i.integrations}),(0,J.jsx)(Zi,{keywords:$i.migrationtools}),(0,J.jsx)(xi,{keywords:$i.codeInjection}),(0,J.jsx)(qi,{keywords:$i.labs}),(0,J.jsx)(Di,{keywords:$i.history}),(0,J.jsx)(Ei,{keywords:$i.dangerzone})]});function ta(e){let t=new Date,n={timeZone:e},r=navigator.language.startsWith(`en`)?navigator.language:`en-US`;return t.toLocaleString(r,n)}function na(e){return/^[a-z0-9]{24}$/.test(e)}var ra=[{label:`Free members`,value:`status:free`},{label:`Paid members`,value:`status:-free`}],ia=(e,t)=>{let n=T({path:`/tiers/`,filterKey:`name`,responseKey:`tiers`}),r=T({path:`/labels/`,filterKey:`name`,responseKey:`labels`}),i=T({path:`/offers/`,filterKey:`name`,responseKey:`offers`}),[a,o]=(0,q.useState)(null),[s,c]=(0,q.useState)(`idle`),l=(0,q.useRef)(!0),u=(0,q.useRef)(),d=(0,q.useRef)(0),f=e=>({value:e.id,label:e.name}),p=e=>({value:`label:${e.slug}`,label:e.name}),m=e=>({value:`offer_redemptions:${e.id}`,label:e.name}),h=async(e,t)=>{let[a,o,s]=await Promise.all([n.loadData(e),r.loadData(e),i.loadData(e)]);t([{label:`Member status`,options:ra.filter(({label:t})=>t.toLowerCase().includes(e.toLowerCase()))},{label:`Active Tiers`,options:a.filter(({active:e,type:t})=>e&&t!==`free`).map(f)||[]},{label:`Archived Tiers`,options:a.filter(({active:e})=>!e).map(f)||[]},{label:`Labels`,options:o.map(p)||[]},{label:`Offers`,options:s.map(m)||[]}].filter(e=>e.options.length>0))},g=async()=>{d.current+=1;let e=d.current;u.current=t,c(`loading`);let a=t?.split(`,`)||[],s=[],h=[],g=[];for(let e of a)e.startsWith(`label:`)?h.push(e.replace(`label:`,``)):e.startsWith(`offer_redemptions:`)?g.push(e.replace(`offer_redemptions:`,``)):na(e)&&s.push(e);try{let t=await Promise.all([n.loadInitialValues(s,`id`).then(e=>e.map(f)),r.loadInitialValues(h,`slug`).then(e=>e.map(p)),i.loadInitialValues(g,`id`).then(e=>e.map(m))]).then(e=>[...ra,...e.flat()]);l.current&&e===d.current&&(o(a.map(e=>t.find(t=>t.value===e)).filter(e=>e!==void 0)),c(`ready`))}catch{l.current&&e===d.current&&c(`error`)}};return(0,q.useEffect)(()=>{let n=u.current!==t;e===`segment`&&a===null&&(s===`idle`||n)&&g()},[t,s,e,a]),(0,q.useEffect)(()=>(l.current=!0,()=>{l.current=!1,d.current+=1}),[]),{loadOptions:h,hydrationState:s,retrySelectedSegments:g,resetSelectedSegments:()=>{d.current+=1,o(null),c(`idle`)},selectedSegments:a,setSelectedSegments:o}},aa=[{label:`Whoever has access to the post`,hint:`Free posts to everyone, premium posts sent to paid members`,value:`visibility`},{label:`All members`,hint:`Everyone who is subscribed to newsletter updates, whether free or paid members`,value:`all-members`},{label:`Paid-members only`,hint:`People who have a premium subscription`,value:`paid-only`},{label:`Specific people`,hint:`Only people with any of the selected tiers or labels`,value:`segment`},{label:`Usually nobody`,hint:`Newsletters are off for new posts, but can be enabled when needed`,value:`none`}],oa=e=>e.flatMap(e=>`options`in e?e.options:[e]);function sa({defaultEmailRecipients:e,defaultEmailRecipientsFilter:t}){return e===`filter`?t===`status:free,status:-free`?`all-members`:t===`status:-free`?`paid-only`:t===null?`none`:`segment`:e}var ca=j(({keywords:e})=>{let[t,n]=(0,q.useState)(!1),[r,i]=(0,q.useState)(!1),a=(0,q.useRef)(0),o=(0,q.useRef)(null),{localSettings:s,isEditing:c,saveState:l,handleSave:u,handleCancel:d,updateSetting:f,handleEditingChange:p}=M(),[m,h]=W(s,[`editor_default_email_recipients`,`editor_default_email_recipients_filter`]),[g,_]=(0,q.useState)(sa({defaultEmailRecipients:m,defaultEmailRecipientsFilter:h})),v=aa.find(e=>e.value===g)?.label,{hydrationState:y,loadOptions:b,resetSelectedSegments:x,retrySelectedSegments:S,selectedSegments:C,setSelectedSegments:w}=ia(g,h),[T,ee]=(0,q.useState)([]),E=(0,q.useRef)(b),te=(0,q.useRef)(C);E.current=b,te.current=C,(0,q.useEffect)(()=>{C&&ee(e=>{let t=new Set(oa(e).map(e=>e.value)),n=C.filter(e=>!t.has(e.value));return n.length?[...n,...e]:e})},[C]),(0,q.useEffect)(()=>{let e=sa({defaultEmailRecipients:m,defaultEmailRecipientsFilter:h});_(e)},[m,h]);let ne=e=>{[`visibility`,`disabled`].includes(e)?(f(`editor_default_email_recipients`,e),f(`editor_default_email_recipients_filter`,null)):f(`editor_default_email_recipients`,`filter`),e===`all-members`&&f(`editor_default_email_recipients_filter`,`status:free,status:-free`),e===`paid-only`&&f(`editor_default_email_recipients_filter`,`status:-free`),e===`none`&&f(`editor_default_email_recipients_filter`,null),_(e),c||p(!0)},re=e=>{let t=[...C||[],...oa(T)],n=e.map(e=>t.find(t=>t.value===e)).filter(e=>e!==void 0);w(n),e.length?f(`editor_default_email_recipients_filter`,e.join(`,`)):(f(`editor_default_email_recipients_filter`,null),_(`none`)),c||p(!0)},ie=(e,t=!1)=>{a.current+=1;let n=a.current;i(!0),o.current&&clearTimeout(o.current);let r=()=>{E.current(e,e=>{n===a.current&&ee(e)}).catch(()=>{n===a.current&&ee(te.current||[])}).finally(()=>{n===a.current&&i(!1)})};t?o.current=setTimeout(r,500):r()};(0,q.useEffect)(()=>()=>{a.current+=1,o.current&&clearTimeout(o.current)},[]);let ae=T.flatMap(e=>`options`in e?e.options.map(t=>({...t,metadata:{group:e.label}})):[e]);return(0,J.jsx)(Y,{description:`When you publish new content, who do you usually want to send it to?`,isEditing:c,keywords:e,navid:`default-recipients`,saveState:l,testId:`default-recipients`,title:`Default recipients`,hideEditButton:!0,onCancel:()=>{x(),d()},onEditingChange:p,onSave:u,children:(0,J.jsxs)(I,{columns:1,children:[(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{children:`Default Newsletter recipients`}),(0,J.jsxs)(nn,{value:g,onValueChange:ne,children:[(0,J.jsx)(en,{"aria-label":`Default Newsletter recipients`,"data-testid":`default-recipients-select`,children:(0,J.jsx)(tn,{children:v})}),(0,J.jsx)($t,{children:aa.map(e=>(0,J.jsx)(Qt,{value:e.value,children:(0,J.jsxs)(`span`,{className:`flex flex-col`,children:[(0,J.jsx)(`span`,{children:e.label}),(0,J.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.hint})]})},e.value))})]}),(0,J.jsx)(H,{children:`Who should receive your posts by default?`})]}),g===`segment`&&(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{children:`Filter`}),C?(0,J.jsxs)($e,{open:t,onOpenChange:e=>{n(e),e&&ie(``)},children:[(0,J.jsx)(Mt,{"aria-label":`Filter`,children:(0,J.jsx)(rt,{placeholder:!C.length,children:C.length?C.map((e,t)=>(0,J.jsxs)(q.Fragment,{children:[(0,J.jsx)(`span`,{children:e.label}),t<C.length-1?(0,J.jsx)(`span`,{children:`,\xA0`}):null]},e.value)):`Select...`})}),(0,J.jsx)(Ct,{children:(0,J.jsx)(fn,{groupBy:e=>e.metadata?.group,isLoading:r,options:ae,shouldFilter:!1,values:C.map(e=>e.value),onChange:re,onSearchChange:e=>ie(e,!0)})})]}):(0,J.jsx)($e,{open:!1,onOpenChange:()=>{y===`error`&&S()},children:(0,J.jsx)(Mt,{"aria-label":`Filter`,disabled:y!==`error`,children:(0,J.jsx)(rt,{placeholder:!0,children:y===`error`?`Retry loading saved filter`:`Loading saved filter…`})})}),y===`error`&&(0,J.jsx)(an,{children:`Could not load the saved filter. Try again.`})]})]})})},`Default recipients`),la=j(({keywords:e})=>{let{settings:t}=L(),{mutateAsync:n}=Gn(),{updateRoute:r}=A(),i=h(),[a,o]=W(t,[`editor_default_email_recipients`,`members_signup_access`]),s=o===`none`;return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(J.Fragment,{children:(0,J.jsx)(B,{"aria-label":`Newsletters`,checked:a!==`disabled`&&!s,disabled:s,onCheckedChange:async e=>{let t=[{key:`editor_default_email_recipients`,value:e?`visibility`:`disabled`}];e||t.push({key:`editor_default_email_recipients_filter`,value:null});try{await n(t)}catch(e){i(e)}}})}),description:`Newsletter features are active, posts can be sent by email`,keywords:e,navid:`enable-newsletters`,testId:`enable-newsletters`,title:`Newsletter sending`,children:(0,J.jsx)(I,{children:a!==`disabled`&&!s?(0,J.jsx)(`div`,{className:`w-full`,children:(0,J.jsxs)(Ut,{align:`center`,gap:`sm`,children:[(0,J.jsx)(gr,{className:`size-4 text-state-success`}),(0,J.jsx)(`span`,{children:`Enabled`})]})}):(0,J.jsxs)(`div`,{className:`w-full`,children:[(0,J.jsxs)(Ut,{align:`center`,className:`text-foreground`,gap:`sm`,children:[(0,J.jsx)(cr,{className:`size-4 text-muted-foreground`}),(0,J.jsx)(`span`,{children:`Disabled`})]}),s&&(0,J.jsxs)(Pr,{className:`mt-6`,size:`sm`,variant:`default`,children:[`Your `,(0,J.jsx)(`button`,{className:`underline!`,type:`button`,onClick:()=>{r(`members`)},children:`Subscription access`}),` is set to ‘Nobody’, which disables all newsletter sending. Change to ‘Invite-only’ to send newsletters to existing members without allowing new signups.`]})]})})})},`Newsletter sending`),ua=[{label:`🇺🇸 US`,value:`https://api.mailgun.net/v3`},{label:`🇪🇺 EU`,value:`https://api.eu.mailgun.net/v3`}],da=j(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=M(),{mutateAsync:c}=Gn(),l=h(),[u,d,f]=W(t,[`mailgun_base_url`,`mailgun_domain`,`mailgun_api_key`]),p=d&&f,m=(0,J.jsx)(I,{children:(0,J.jsxs)(yt,{children:[!p&&(0,J.jsx)(vt,{children:`Status`}),(0,J.jsx)(he,{className:p?void 0:`mt-1`,children:p?(0,J.jsxs)(Ut,{align:`center`,gap:`sm`,children:[(0,J.jsx)(gr,{className:`size-4 text-state-success`}),`Mailgun is set up`]}):`Mailgun is not set up`})]})}),g=(0,J.jsxs)(J.Fragment,{children:[`Find your Mailgun API keys `,(0,J.jsx)(`a`,{className:`text-green hover:text-green-400`,href:`https://app.mailgun.com/settings/api_security`,rel:`noopener noreferrer`,target:`_blank`,children:`here`})]}),_=(0,J.jsx)(I,{children:(0,J.jsxs)(`div`,{className:`grid grid-cols-[120px_auto] gap-x-3 gap-y-6`,children:[(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{children:`Mailgun region`}),(0,J.jsxs)(nn,{value:u??``,onValueChange:e=>o(`mailgun_base_url`,e),children:[(0,J.jsx)(en,{"aria-label":`Mailgun region`,className:`border-transparent bg-muted hover:bg-muted`,children:(0,J.jsx)(tn,{})}),(0,J.jsx)($t,{children:ua.map(e=>(0,J.jsx)(Qt,{value:e.value,children:e.label},e.value))})]})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`mailgun-domain`,children:`Mailgun domain`}),(0,J.jsx)(K,{className:`border-transparent bg-muted`,id:`mailgun-domain`,value:d??``,onChange:e=>{o(`mailgun_domain`,e.target.value)}})]}),(0,J.jsx)(`div`,{className:`col-span-2`,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`mailgun-api-key`,children:`Mailgun private API key`}),(0,J.jsx)(K,{className:`border-transparent bg-muted`,id:`mailgun-api-key`,type:`password`,value:f??``,onChange:e=>{o(`mailgun_api_key`,e.target.value)}}),(0,J.jsx)(H,{children:g})]})})]})});return(0,J.jsx)(Y,{description:(0,J.jsxs)(J.Fragment,{children:[`The Mailgun API is used for bulk email newsletter delivery. `,(0,J.jsx)(`a`,{className:`text-green hover:text-green-400`,href:`https://ghost.org/docs/faq/mailgun-newsletters/`,rel:`noopener noreferrer`,target:`_blank`,children:`Why is this required?`})]}),isEditing:n,keywords:e,navid:`mailgun`,saveState:r,testId:`mailgun`,title:`Mailgun`,onCancel:a,onEditingChange:s,onSave:async()=>{if(!u)try{await c([{key:`mailgun_base_url`,value:ua[0].value}])}catch(e){l(e);return}i()},children:n?_:m})},`Mailgun`),fa=({id:e,setRef:t,isDragging:n,style:r,children:i,separator:a,...o})=>{let{updateRoute:s}=A(),c=()=>{s({route:`newsletters/${e}`})},l=(0,J.jsxs)(It,{ref:t,className:n?`opacity-75`:``,style:r,children:[(0,J.jsxs)(ut,{className:`flex`,children:[(o.dragHandleAttributes||n)&&(0,J.jsx)(Ut,{align:`center`,className:`w-10 shrink-0`,children:(0,J.jsx)(qe,{className:`h-10`,isDragging:n||!1,...o})}),(0,J.jsx)(`button`,{className:`flex min-w-0 grow text-left`,type:`button`,onClick:c,children:i})]}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,"data-testid":`edit-newsletter-button`,size:`sm`,type:`button`,variant:`link`,onClick:c,children:`Edit`})})]});return n?(0,J.jsx)(F,{children:l}):l},pa=({newsletter:e})=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`grow py-3 pr-6`,children:(0,J.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,J.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,J.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight text-muted-foreground`,children:e.description||`No description`})]})}),(0,J.jsx)(`div`,{className:`hidden py-3 pr-6 md:block md:min-w-[11rem]`,children:(0,J.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,J.jsx)(`span`,{children:k(e.count?.active_members||0)}),(0,J.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight whitespace-nowrap text-muted-foreground`,children:`Subscribers`})]})}),(0,J.jsx)(`div`,{className:`hidden py-3 pr-6 md:block md:min-w-[11rem]`,children:(0,J.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,J.jsx)(`span`,{children:k(e.count?.posts||0)}),(0,J.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight whitespace-nowrap text-muted-foreground`,children:`Delivered`})]})})]}),ma=({newsletters:e,isLoading:t,isSortable:n,onSort:r})=>t?(0,J.jsx)(`div`,{className:`flex justify-center p-5`,children:(0,J.jsx)(hr,{size:`md`})}):e.length&&n?(0,J.jsx)(Ze,{container:e=>(0,J.jsx)(fa,{...e}),getDragHandleLabel:e=>`Reorder ${e.name}`,items:e,renderItem:e=>(0,J.jsx)(pa,{newsletter:e}),wrapper:F,onMove:(e,t)=>r?.(e,t)}):e.length?(0,J.jsx)(F,{children:e.map(e=>(0,J.jsx)(fa,{id:e.id,children:(0,J.jsx)(pa,{newsletter:e})},e.id))}):(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)(ar,{})}),`No newsletters found.`]}),ha=({id:e,children:t})=>{let n=Ge(),{updateRoute:r}=A();return(0,J.jsx)(G,{className:`h-auto p-0 text-green hover:text-green`,type:`button`,variant:`link`,onClick:()=>{r(`newsletters/${e}`),n.remove()},children:t})},ga=j(({keywords:e})=>{let{updateRoute:t}=A(),n=()=>{t(`newsletters/new`)},[r,i]=(0,q.useState)(`active-newsletters`),{data:{newsletters:a,meta:s,isEnd:c}={},isLoading:l,fetchNextPage:u}=ni(),{mutateAsync:d}=ti(),f=o(),m=zt().getParam(`verifyEmail`),{mutateAsync:g}=ei(),_=h(),[v,y]=(0,q.useState)(a||[]);(0,q.useEffect)(()=>{y(a||[])},[a]),(0,q.useEffect)(()=>{!m||!window.location.href.includes(`newsletters`)||(async()=>{try{let{newsletters:[e],meta:{email_verified:t}={}}=await g({token:m}),n,r;t&&t===`sender_email`?(n=`Newsletter email verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Newsletter `,(0,J.jsx)(ha,{id:e.id,children:e.name}),` will now be sent from `,(0,J.jsx)(`strong`,{children:e.sender_email}),`.`]})):t&&t===`sender_reply_to`?(n=`Reply-to address verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Newsletter `,(0,J.jsx)(ha,{id:e.id,children:e.name}),` will now use `,(0,J.jsx)(`strong`,{children:e.sender_reply_to}),` as the reply-to address.`]})):(n=`Email address verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Email address for newsletter `,(0,J.jsx)(ha,{id:e.id,children:e.name}),` has been changed.`]})),N.show(P,{title:n,prompt:r,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Try again later.`;e instanceof p&&e.message===`Token expired`&&(t=`Verification link has expired.`),N.show(P,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),_(e,{withToast:!1})}})()},[m,_,g]);let b=(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{n()},children:`Add newsletter`}),x=v.filter(e=>e.status===`active`).sort((e,t)=>e.sort_order-t.sort_order)||[],S=v.filter(e=>e.status!==`active`);return(0,J.jsxs)(Y,{customButtons:b,description:`Edit details and customize your design`,keywords:e,navid:`newsletters`,testId:`newsletters`,title:`Newsletters`,children:[(0,J.jsxs)(Xt,{value:r,variant:`underline`,onValueChange:i,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`active-newsletters`,children:`Active`}),(0,J.jsx)(R,{value:`archived-newsletters`,children:`Archived`})]}),(0,J.jsx)(z,{value:`active-newsletters`,children:(0,J.jsx)(ma,{isLoading:l,newsletters:x,isSortable:!0,onSort:async(e,t)=>{let n=x.findIndex(t=>t.id===e),r=x.findIndex(e=>e.id===t)||0,i=Pe(x,n,r).map((e,t)=>e.sort_order===t?null:{...e,sort_order:t}).filter(e=>!!e),a=S.map((e,t)=>e.sort_order===t+x.length?null:{...e,sort_order:t}).filter(e=>!!e),o=[...i,...a].sort((e,t)=>e.sort_order-t.sort_order);y(v.map(e=>o.find(t=>t.id===e.id)||e)),f.setQueriesData({queryKey:[ri]},e=>{if(e)return{...e,pages:e.pages.map(e=>({...e,newsletters:e.newsletters.map(e=>o.find(t=>t.id===e.id)||e)}))}});for(let e of o)await d(e)}})}),(0,J.jsx)(z,{value:`archived-newsletters`,children:(0,J.jsx)(ma,{isLoading:l,newsletters:S})})]}),c===!1&&(0,J.jsxs)(G,{type:`button`,variant:`link`,onClick:()=>u(),children:[`Load more (showing `,k(v?.length||0),`/`,k(s?.pagination.total||0),` newsletters)`]})]})},`Newsletters`),_a={enableNewsletters:[`emails`,`newsletters`,`newsletter sending`,`enable`,`disable`,`turn on`,`turn off`],newsletters:[`newsletters`,`emails`,`design`,`customization`],defaultRecipients:[`newsletters`,`default recipients`,`emails`],mailgun:[`mailgun`,`emails`,`newsletters`]},va=()=>{let{settings:e,config:t}=L(),[n]=W(e,[`editor_default_email_recipients`]),r=n!==`disabled`,i=r&&!t.mailgunIsConfigured;return(0,J.jsxs)(Qi,{keywords:[_a.enableNewsletters,...r?[_a.defaultRecipients,_a.newsletters]:[],...i?[_a.mailgun]:[]].flat(),title:`Newsletters`,children:[(0,J.jsx)(la,{keywords:_a.enableNewsletters}),r&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ca,{keywords:_a.defaultRecipients}),(0,J.jsx)(ga,{keywords:_a.newsletters}),i&&(0,J.jsx)(da,{keywords:_a.mailgun})]})]})},ya=({id:e,children:t})=>{let n=Ge(),{updateRoute:r}=A();return(0,J.jsx)(G,{className:`h-auto p-0 text-green hover:text-green`,type:`button`,variant:`link`,onClick:()=>{r(`newsletters/${e}`),n.remove()},children:t})},ba=()=>{let e=window.location.hash.slice(1),t=new URL(e||`/`,window.location.origin).pathname;return t.startsWith(`/settings/emails`)||t.startsWith(`/settings/newsletters`)},xa=j(({filter:e})=>{let{data:{newsletters:t,meta:n,isEnd:r}={},isLoading:i,fetchNextPage:a}=ni(),{mutateAsync:s}=ti(),c=o(),l=zt().getParam(`verifyEmail`),{mutateAsync:u}=ei(),d=h(),[f,m]=(0,q.useState)(t||[]);(0,q.useEffect)(()=>{m(t||[])},[t]),(0,q.useEffect)(()=>{!l||!ba()||(async()=>{try{let{newsletters:[e],meta:{email_verified:t}={}}=await u({token:l}),n,r;t&&t===`sender_email`?(n=`Newsletter email verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Newsletter `,(0,J.jsx)(ya,{id:e.id,children:e.name}),` will now be sent from `,(0,J.jsx)(`strong`,{children:e.sender_email}),`.`]})):t&&t===`sender_reply_to`?(n=`Reply-to address verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Newsletter `,(0,J.jsx)(ya,{id:e.id,children:e.name}),` will now use `,(0,J.jsx)(`strong`,{children:e.sender_reply_to}),` as the reply-to address.`]})):(n=`Email address verified`,r=(0,J.jsxs)(J.Fragment,{children:[`Email address for newsletter `,(0,J.jsx)(ya,{id:e.id,children:e.name}),` has been changed.`]})),N.show(P,{title:n,prompt:r,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Try again later.`;e instanceof p&&e.message===`Token expired`&&(t=`Verification link has expired.`),N.show(P,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),d(e,{withToast:!1})}})()},[l,d,u]);let g=f.filter(e=>e.status===`active`).sort((e,t)=>e.sort_order-t.sort_order)||[],_=f.filter(e=>e.status!==`active`);return(0,J.jsxs)(J.Fragment,{children:[e===`active`?(0,J.jsx)(ma,{isLoading:i,isSortable:!0,newsletters:g,onSort:async(e,t)=>{let n=g.findIndex(t=>t.id===e),r=g.findIndex(e=>e.id===t)||0,i=Pe(g,n,r).map((e,t)=>e.sort_order===t?null:{...e,sort_order:t}).filter(e=>!!e),a=_.map((e,t)=>e.sort_order===t+g.length?null:{...e,sort_order:t}).filter(e=>!!e),o=[...i,...a].sort((e,t)=>e.sort_order-t.sort_order);m(f.map(e=>o.find(t=>t.id===e.id)||e)),c.setQueriesData({queryKey:[ri]},e=>{if(e)return{...e,pages:e.pages.map(e=>({...e,newsletters:e.newsletters.map(e=>o.find(t=>t.id===e.id)||e)}))}});for(let e of o)await s(e)}}):(0,J.jsx)(ma,{isLoading:i,newsletters:_}),r===!1&&(0,J.jsxs)(G,{type:`button`,variant:`link`,onClick:()=>a(),children:[`Load more (showing `,k(f?.length||0),`/`,k(n?.pagination.total||0),` newsletters)`]})]})},`Newsletters`),Sa=({open:e,title:t,preview:n,sidebar:r,dirty:i=!1,isLoading:a=!1,okProps:o,onSave:s,onClose:c,afterClose:l,testId:u})=>{let d=(0,q.useRef)(s),f=(0,q.useRef)(e),{confirm:p,dialogProps:m}=Ht();(0,q.useEffect)(()=>{d.current=s},[s]),(0,q.useEffect)(()=>{f.current&&!e&&l?.(),f.current=e},[l,e]),(0,q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),d.current())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let h=()=>{p(i,c)};return(0,J.jsxs)(Yr,{open:e,onOpenChange:e=>{e||h()},children:[(0,J.jsx)(wn,{"aria-describedby":void 0,className:O(`top-[50%] left-[50%] h-[calc(100vh-8vmin)] w-[calc(100vw-8vmin)] max-w-none translate-[-50%] gap-0 overflow-hidden p-0`),"data-testid":u,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),h()},children:(0,J.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,J.jsx)(`div`,{className:`hidden min-h-0 flex-1 flex-col bg-gray-50 dark:bg-black [@media(min-width:801px)]:flex`,children:(0,J.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center p-8`,children:n})}),(0,J.jsxs)(`div`,{className:`flex min-h-0 w-full flex-col border-l border-gray-200 dark:border-gray-900 [@media(min-width:801px)]:w-[400px] [@media(min-width:801px)]:shrink-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-5`,children:[(0,J.jsx)(En,{children:t}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(G,{className:`font-semibold`,type:`button`,variant:`ghost`,onClick:()=>h(),children:`Close`}),(0,J.jsx)(G,{disabled:a||o?.disabled,type:`button`,variant:o?.variant,onClick:s,children:o?.label||`Save`})]})]}),r]})]})}),(0,J.jsx)(Ie,{testId:`welcome-email-dirty-confirm-modal`,...m})]})},Ca=/^#(?:[0-9a-f]{3}){1,2}$/i;function wa(e){return Ca.test(e)?e:`#ffffff`}function Ta(e,t){return!e||e===`transparent`?`transparent`:e===`accent`?t:Ca.test(e)?e:`transparent`}function Ea(e,t,n){return Ca.test(e||``)?e:e===null?Bt(n).hex():t}function Da(e,t){if(e===`fill`)return Bt(t).hex()}function Oa(e,t,n){let r=e===void 0?`accent`:e;return r===`accent`?t:Ca.test(r||``)?r:Bt(n).hex()}function ka(e,t,n){return Ca.test(e||``)?e:e===`accent`?t:Bt(n).hex()}function Aa(e,t){return Ca.test(e||``)?e:e===`accent`?t:`#e0e7eb`}function ja(e,t){let n=wa(e.background_color),r=Ta(e.header_background_color,t),i=Ea(e.button_color,t,n),a=Bt(n).hex(),o=Bt(n).alpha(.5).toString(),s=r===`transparent`?a:Bt(r).hex(),c=r===`transparent`?o:Bt(r).alpha(.5).toString();return{backgroundColor:n,headerBackgroundColor:r,sectionTitleColor:ka(e.section_title_color,t,n),buttonColor:i,buttonTextColor:Da(e.button_style,i),linkColor:Oa(e.link_color,t,n),dividerColor:Aa(e.divider_color,t),textColor:a,secondaryTextColor:o,headerTextColor:s,secondaryHeaderTextColor:c}}function Ma(e){return e===`serif`?`Georgia, serif`:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`}function Na(e){switch(e){case`square`:return`rounded-none`;case`pill`:return`rounded-full`;default:return`rounded-[6px]`}}function Pa(e){return e===`rounded`?`rounded-md`:``}var Fa=({senderName:e,senderEmail:t,replyToEmail:n,subject:r,showRecipientLine:i=!0,showSubjectLine:a=!0})=>{let o=n||t,s=e&&t?`${e} (${t})`:e||t;return!s&&!o&&(!a||!r)?null:(0,J.jsxs)(`div`,{className:`flex flex-col justify-center gap-1 border-b border-grey-200 bg-white p-6 text-grey-700`,children:[s&&(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`From:`}),` `,s]}),i&&t&&(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`To:`}),` subscriber@example.com`]}),o&&(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`Reply-to:`}),` `,o]}),a&&r&&(0,J.jsx)(`div`,{className:`text-base font-medium text-grey-900`,children:r})]})},Ia=({iconUrl:e,showIcon:t,showTitle:n,siteTitle:r,backgroundColor:i,textColor:a})=>!t&&(!n||!r)?null:(0,J.jsxs)(`div`,{className:`px-[7rem] py-3 text-center`,style:{backgroundColor:i===`transparent`?void 0:i},children:[t&&e&&(0,J.jsx)(`img`,{alt:r||`Publication icon`,className:`mx-auto mb-3 size-12 rounded`,src:e}),n&&r&&(0,J.jsx)(`h4`,{className:`mb-1 text-[1.6rem] leading-tight font-bold tracking-tight uppercase`,style:{color:a},children:r})]}),La=({siteTitle:e,footerLinkText:t=`Unsubscribe`,emailFooter:n,showBadge:r,color:i,textColor:a})=>(0,J.jsxs)(`div`,{className:`flex flex-col items-center pt-10`,children:[n&&(0,J.jsx)(`div`,{className:`px-8 py-3 text-center text-[1.3rem] leading-base break-words whitespace-pre-line`,style:{color:i},children:n}),(0,J.jsxs)(`div`,{className:`px-8 pt-3 pb-14 text-center text-[1.3rem]`,children:[(0,J.jsxs)(`span`,{style:{color:i},children:[e||`Your publication`,` © `,new Date().getFullYear(),` — `]}),(0,J.jsx)(`span`,{className:`underline`,style:{color:i},children:t})]}),r&&(0,J.jsx)(`div`,{className:`flex flex-col items-center pt-[10px] pb-[40px]`,children:(0,J.jsxs)(`span`,{className:`inline-flex items-center px-2 py-1 text-[1.25rem] font-semibold tracking-tight`,style:{color:a},children:[(0,J.jsx)(Ot,{className:`mr-[6px] size-4`}),(0,J.jsx)(`span`,{children:`Powered by Ghost`})]})})]}),Ra=({settings:e,accentColor:t,publicationIcon:n,siteTitle:r,senderName:i,senderEmail:a,replyToEmail:o,subject:s,showRecipientLine:c=!0,showSubjectLine:l=!0,headerImage:u,showPublicationIcon:d=!1,showPublicationTitle:f=!0,showBadge:p=!0,emailFooter:m,footerLinkText:h,children:g})=>{let _=ja(e,t),v=Pa(e.image_corners),y=r||void 0;return(0,J.jsxs)(`div`,{className:`mx-auto flex max-h-full min-h-0 w-full max-w-[700px] flex-col overflow-hidden rounded-[4px] text-black shadow-sm`,children:[(0,J.jsx)(Fa,{replyToEmail:o,senderEmail:a,senderName:i,showRecipientLine:c,showSubjectLine:l,subject:s}),(0,J.jsxs)(`div`,{className:`min-h-0 w-full flex-1 overflow-y-auto`,style:{backgroundColor:_.backgroundColor},children:[(0,J.jsxs)(`div`,{className:`px-[7rem]`,style:{backgroundColor:_.headerBackgroundColor===`transparent`?void 0:_.headerBackgroundColor},children:[u&&(0,J.jsx)(`div`,{className:`pt-8`,children:(0,J.jsx)(`img`,{alt:`Header`,className:O(`h-auto w-full`,v),src:u})}),(0,J.jsx)(Ia,{backgroundColor:`transparent`,iconUrl:n,showIcon:d&&!!n,showTitle:f,siteTitle:y,textColor:_.headerTextColor})]}),g,(0,J.jsx)(La,{color:_.secondaryTextColor,emailFooter:m,footerLinkText:h,showBadge:p,siteTitle:y,textColor:_.textColor})]})]})},za=({value:e,onChange:t})=>{let{mutateAsync:n}=be(),r=async e=>{t(ze(await n({file:e})))};return(0,J.jsxs)(U,{"data-testid":`header-image-field`,children:[(0,J.jsx)(V,{htmlFor:`welcome-email-header-image`,children:`Header image`}),(0,J.jsx)(ke,{className:`h-24 w-full`,children:e?(0,J.jsxs)(Oe,{children:[(0,J.jsx)(Ee,{alt:`Header`,src:e}),(0,J.jsx)(Ne,{children:(0,J.jsx)(Ae,{"aria-label":`Remove header image`,type:`button`,onClick:()=>t(``),children:(0,J.jsx)(Hn,{})})})]}):(0,J.jsx)(Se,{accept:{"image/*":[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.svg`]},inputId:`welcome-email-header-image`,onDropAccepted:e=>e[0]&&r(e[0]),children:(0,J.jsx)(`span`,{className:`text-control font-medium`,children:`Upload header image`})})}),(0,J.jsxs)(H,{children:[k(1200),`×`,k(600),` recommended. Use a transparent PNG for best results on any background.`]})]})},Ba=({value:e,onChange:t})=>(0,J.jsxs)(`div`,{className:`mt-6 flex items-start justify-between gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,J.jsx)(ur,{className:`mt-0.5 size-4 shrink-0 text-red-500`}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,J.jsx)(`span`,{children:`Promote independent publishing`}),(0,J.jsx)(`span`,{className:`text-sm leading-tight text-muted-foreground`,children:`Show you're a part of the indie publishing movement with a small badge in the footer`})]})]}),(0,J.jsx)(B,{checked:e,size:`sm`,onCheckedChange:t})]}),Va=``+new URL(`email-design-user-image-BWe5RYS0.jpg`,import.meta.url).href,Ha=(0,q.createContext)(void 0),Ua=({settings:e,onSettingsChange:t,accentColor:n,children:r})=>(0,J.jsx)(Ha.Provider,{value:{settings:e,onSettingsChange:t,accentColor:n},children:r}),Wa=()=>{let e=(0,q.useContext)(Ha);if(!e)throw Error(`useEmailDesign must be used within an EmailDesignProvider`);return e},Ga=()=>{let{settings:e,accentColor:t}=Wa(),n=ja(e,t),r=Ma(e.body_font_category),i=Na(e.button_corners),a=e.button_style===`outline`,o=O(`no-underline`,e.link_style===`underline`&&`underline`,e.link_style===`bold`&&`font-bold`),s=O(`mb-5 text-[2.6rem] tracking-tighter`,e.title_font_category===`serif`&&`font-serif`,e.title_font_category===`sans_serif`&&`font-sans`,e.title_font_weight===`normal`&&`font-normal`,e.title_font_weight===`medium`&&`font-medium`,e.title_font_weight===`semibold`&&`font-semibold`,e.title_font_weight===`bold`&&`font-bold`),c=O(e.body_font_category===`serif`?`font-serif text-[1.8rem]`:`text-[1.7rem]`);return(0,J.jsxs)(`div`,{className:`mx-auto w-full max-w-[600px] px-10 pt-16`,children:[(0,J.jsx)(`h3`,{className:s,style:{color:n.sectionTitleColor},children:`Your welcome email`}),(0,J.jsxs)(`div`,{className:O(c),style:{color:n.textColor,fontFamily:r},children:[(0,J.jsx)(`p`,{className:`mt-0 mb-6`,children:`This is what your welcome email will look like when someone signs up to your site.`}),(0,J.jsx)(`p`,{className:`mt-0 mb-8`,children:`Use the settings on the right to shape the design — from colors and typography to layout and buttons — so it feels like a natural extension of your brand.`}),(0,J.jsx)(`div`,{className:O(`h-[unset] w-full max-w-[600px] bg-cover bg-no-repeat`),children:(0,J.jsx)(`img`,{alt:`Example cover image`,className:O(`min-h-full min-w-full shrink-0`,Pa(e.image_corners)),src:Va})}),(0,J.jsx)(`div`,{className:`mt-1 w-full max-w-[600px] pb-8 text-center text-body-sm`,style:{color:n.secondaryTextColor},children:`Image caption`}),(0,J.jsx)(`p`,{className:`mt-0 mb-6`,children:`Welcome emails set the tone for your relationship with new members. We’ve optimized this template to look great across devices and inboxes, so your first impression lands exactly how you want it.`})]}),(0,J.jsx)(`div`,{className:`my-5 py-4`,children:(0,J.jsx)(`hr`,{className:`m-0 border-0 border-t`,style:{borderColor:n.dividerColor}})}),(0,J.jsx)(`h3`,{className:s,style:{color:n.sectionTitleColor},children:`Need inspiration?`}),(0,J.jsx)(`div`,{className:O(c),style:{color:n.textColor,fontFamily:r},children:(0,J.jsxs)(`p`,{className:`mt-0 mb-6`,children:[`We’ve put together a `,(0,J.jsx)(`a`,{className:o,href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:{color:n.linkColor},target:`_blank`,children:`quick guide`}),` that walks through all the available settings, along with a few examples of what’s possible.`]})}),(0,J.jsx)(`div`,{className:`pb-6`,children:(0,J.jsx)(`a`,{className:O(`inline-block border px-[18px] py-2.5 font-sans text-[15px] no-underline`,i,a?`bg-transparent`:`border-transparent`,e.link_style===`bold`?`font-bold`:`font-semibold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:a?{borderColor:n.buttonColor,color:n.buttonColor}:{backgroundColor:n.buttonColor,color:n.buttonTextColor},target:`_blank`,children:`Learn more`})}),(0,J.jsx)(`div`,{className:`py-4`,children:(0,J.jsx)(`hr`,{className:`m-0 border-0 border-t`,style:{borderColor:n.dividerColor}})})]})},Ka=e(x(),1),qa=`AutomatedEmailDesignResponseType`,Ja=g({dataType:qa,path:`/automated_emails/design/`}),Ya=m({method:`PUT`,path:()=>`/automated_emails/design/`,body:e=>({automated_email_design:[e]}),updateQueries:{emberUpdateType:`skip`,dataType:qa,update:e=>e}}),Xa=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsx)(_e,{swatches:[{title:`White`,value:`light`,hex:`#ffffff`}],title:`Background color`,value:e.background_color,onChange:e=>e&&t({background_color:e})})},Za=[{value:`serif`,label:`Elegant serif`},{value:`sans_serif`,label:`Clean sans-serif`}],Qa={sans_serif:{options:[{value:`normal`,label:`Regular`},{value:`medium`,label:`Medium`},{value:`semibold`,label:`Semi-bold`},{value:`bold`,label:`Bold`}]},serif:{options:[{value:`normal`,label:`Regular`},{value:`bold`,label:`Bold`}],map:{medium:`normal`,semibold:`bold`}}};function $a(e,t){let n=Qa[e]||Qa.sans_serif;return n.options.find(e=>e.value===t)?t:n.map?.[t]||`bold`}var eo=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Body font`}),(0,J.jsxs)(nn,{value:e.body_font_category||`sans_serif`,onValueChange:e=>t({body_font_category:e}),children:[(0,J.jsx)(en,{className:`w-[180px]`,children:(0,J.jsx)(tn,{})}),(0,J.jsx)($t,{onEscapeKeyDown:e=>{e.stopPropagation()},children:Za.map(e=>(0,J.jsx)(Qt,{value:e.value,children:e.label},e.value))})]})]})},to=/^#(?:[0-9a-f]{3}){1,2}$/i,no=e=>e===`light`?`#ffffff`:to.test(e)?e:`#ffffff`,ro=e=>Bt(no(e)).hex(),io=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=Wa(),r=ro(e.background_color);return(0,J.jsx)(_e,{accentColor:n,swatches:[{title:`Accent`,value:`accent`,hex:n},{title:`Auto`,value:null,hex:r}],title:`Button color`,value:e.button_color,onChange:e=>t({button_color:e})})},ao=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Button corners`}),(0,J.jsxs)(mn,{type:`single`,value:e.button_corners||`rounded`,onValueChange:e=>e&&t({button_corners:e}),children:[(0,J.jsx)(pn,{"aria-label":`Square`,value:`square`,children:(0,J.jsx)(`span`,{className:`inline-block size-4 border-[1.5px] border-current`})}),(0,J.jsx)(pn,{"aria-label":`Rounded`,value:`rounded`,children:(0,J.jsx)(`span`,{className:`inline-block size-4 rounded-sm border-[1.5px] border-current`})}),(0,J.jsx)(pn,{"aria-label":`Pill`,value:`pill`,children:(0,J.jsx)(`span`,{className:`inline-block size-4 rounded-full border-[1.5px] border-current`})})]})]})},oo=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Button style`}),(0,J.jsxs)(mn,{type:`single`,value:e.button_style||`fill`,onValueChange:e=>e&&t({button_style:e}),children:[(0,J.jsx)(pn,{"aria-label":`Fill`,value:`fill`,children:(0,J.jsx)(`span`,{className:`inline-block h-4 w-5 rounded-sm bg-current`})}),(0,J.jsx)(pn,{"aria-label":`Outline`,value:`outline`,children:(0,J.jsx)(`span`,{className:`inline-block h-4 w-5 rounded-sm border-[1.5px] border-current`})})]})]})},so=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=Wa();return(0,J.jsx)(_e,{accentColor:n,swatches:[{title:`Light`,value:null,hex:`#e0e7eb`},{title:`Accent`,value:`accent`,hex:n}],title:`Divider color`,value:e.divider_color,onChange:e=>t({divider_color:e})})},co=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsx)(_e,{swatches:[{title:`Transparent`,value:`transparent`,hex:`#00000000`}],title:`Header background color`,value:e.header_background_color,onChange:e=>e&&t({header_background_color:e})})},lo=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Heading font`}),(0,J.jsxs)(nn,{value:e.title_font_category||`sans_serif`,onValueChange:n=>{let r=$a(n,e.title_font_weight);t({title_font_category:n,title_font_weight:r})},children:[(0,J.jsx)(en,{className:`w-[180px]`,children:(0,J.jsx)(tn,{})}),(0,J.jsx)($t,{onEscapeKeyDown:e=>{e.stopPropagation()},children:Za.map(e=>(0,J.jsx)(Qt,{value:e.value,children:e.label},e.value))})]})]})},uo=()=>{let{settings:e,onSettingsChange:t}=Wa(),n=e.title_font_category||`sans_serif`,r=Qa[n]?.options||Qa.sans_serif.options,i=$a(n,e.title_font_weight);return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Heading weight`}),(0,J.jsxs)(nn,{value:i,onValueChange:e=>t({title_font_weight:e}),children:[(0,J.jsx)(en,{className:`w-[180px]`,children:(0,J.jsx)(tn,{})}),(0,J.jsx)($t,{onEscapeKeyDown:e=>{e.stopPropagation()},children:r.map(e=>(0,J.jsx)(Qt,{value:e.value,children:e.label},e.value))})]})]})},fo=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Image corners`}),(0,J.jsxs)(mn,{type:`single`,value:e.image_corners||`square`,onValueChange:e=>e&&t({image_corners:e}),children:[(0,J.jsx)(pn,{"aria-label":`Square`,value:`square`,children:(0,J.jsx)(`span`,{className:`inline-block size-4 border-[1.5px] border-current`})}),(0,J.jsx)(pn,{"aria-label":`Rounded`,value:`rounded`,children:(0,J.jsx)(`span`,{className:`inline-block size-4 rounded-sm border-[1.5px] border-current`})})]})]})},po=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=Wa(),r=ro(e.background_color);return(0,J.jsx)(_e,{accentColor:n,swatches:[{title:`Accent`,value:`accent`,hex:n},{title:`Auto`,value:null,hex:r}],title:`Link color`,value:e.link_color,onChange:e=>t({link_color:e})})},mo=()=>{let{settings:e,onSettingsChange:t}=Wa();return(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{children:`Link style`}),(0,J.jsxs)(mn,{type:`single`,value:e.link_style||`underline`,onValueChange:e=>e&&t({link_style:e}),children:[(0,J.jsx)(pn,{"aria-label":`Underline`,value:`underline`,children:(0,J.jsx)(xn,{className:`size-4`})}),(0,J.jsx)(pn,{"aria-label":`Regular`,value:`regular`,children:(0,J.jsx)(rr,{className:`size-4`})}),(0,J.jsx)(pn,{"aria-label":`Bold`,value:`bold`,children:(0,J.jsx)(_r,{className:`size-4`})})]})]})},ho=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=Wa();return(0,J.jsx)(_e,{accentColor:n,swatches:[{title:`Auto`,value:null,hex:ro(e.background_color)},{title:`Accent`,value:`accent`,hex:n}],title:`Section title color`,value:e.section_title_color,onChange:e=>t({section_title_color:e})})},go={background_color:`light`,title_font_category:`sans_serif`,title_font_weight:`bold`,body_font_category:`sans_serif`,header_background_color:`transparent`,section_title_color:null,button_color:`accent`,button_style:`fill`,button_corners:`rounded`,link_color:`accent`,link_style:`underline`,image_corners:`square`,divider_color:null},_o={free:`member-welcome-email-free`,paid:`member-welcome-email-paid`},vo=`{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Welcome! Thanks for subscribing — it's great to have you here.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"You'll now receive new posts straight to your inbox. You can also log in any time to read the ","type":"extended-text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"full archive","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":"noreferrer","target":null,"title":null,"url":"__GHOST_URL__/"},{"detail":0,"format":0,"mode":"normal","style":"","text":" or catch up on new posts as they go live.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"A little housekeeping: If this email landed in spam or promotions, try moving it to your primary inbox and adding this address to your contacts. Small signals like that help your inbox recognize that these messages matter to you.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Have questions or just want to say hi? Feel free to reply directly to this email or any newsletter in the future.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`,yo=`{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Welcome, and thank you for your support — it means a lot.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"As a paid member, you now have full access to everything: the complete archive, and any paid-only content going forward. New posts will land straight to your inbox, and you can log in any time to ","type":"extended-text","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"catch up","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"rel":"noreferrer","target":null,"title":null,"url":"__GHOST_URL__/"},{"detail":0,"format":0,"mode":"normal","style":"","text":" on anything you've missed.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"A little housekeeping: If this email landed in spam or promotions, try moving it to your primary inbox and adding this address to your contacts. Small signals like that help your inbox recognize that these messages matter to you.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Have questions or just want to say hi? Feel free to reply directly to this email or any newsletter in the future.","type":"extended-text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`,bo=(e,t)=>({name:e===`free`?`Free member welcome flow`:`Paid member welcome flow`,slug:_o[e],subject:e===`free`?`Welcome to ${t||`our site`}`:`Welcome to your paid subscription`,lexical:e===`free`?vo:yo}),xo=(e,t)=>({id:``,status:`inactive`,...bo(e,t),sender_name:null,sender_email:null,sender_reply_to:null,created_at:``,updated_at:null}),So=e=>e?.trim()||``,Co=(...e)=>e.map(So).find(Boolean)||``,wo=({automatedEmails:e=[],config:t,defaultEmailAddress:n,newsletter:r,siteTitle:i,supportEmailAddress:a})=>{let o=e.find(e=>e.slug===_o.free),s=e.find(e=>e.slug===_o.paid),c=Co(o?.sender_name,s?.sender_name),l=Co(o?.sender_email,s?.sender_email),u=Co(o?.sender_reply_to,s?.sender_reply_to),d=So(r?.sender_name),f=r?So(dt(r,t,n||void 0)):``,p=r?So(pt(r,t,a||void 0,n||void 0)):``,m=d||So(i)||`Your site name`,h=f||So(n),g=p||So(a)||So(n),_=c||m||`Your Site`,v=l||h||``,y=u||g||``,b=y!==``&&y!==v,x=jn(t),S=Jn(t);return{hasDistinctReplyTo:b,replyToEmailInput:u,replyToEmailPlaceholder:g,resolvedReplyToEmail:y,resolvedSenderEmail:v,resolvedSenderName:_,senderEmailDomain:S?Ln(t):null,senderEmailInput:l,senderEmailPlaceholder:h,senderNameInput:c,senderNamePlaceholder:m,showSenderEmailInput:!x||S}},To=(e=[],{config:t,defaultEmailAddress:n,siteTitle:r,supportEmailAddress:i})=>{let{data:a}=ni({searchParams:{filter:`status:active`,limit:`1`}}),o=a?.newsletters?.[0];return(0,q.useMemo)(()=>wo({automatedEmails:e,config:t,defaultEmailAddress:n,newsletter:o,siteTitle:r,supportEmailAddress:i}),[e,t,n,o,r,i])},Eo=`welcome-email-design-save-error`,Do=new Set(Object.keys(go)),Oo=e=>Do.has(e),ko=({generalSettings:e,onGeneralChange:t,showPublicationIconToggle:n,senderNamePlaceholder:r,senderEmailPlaceholder:i,replyToEmailPlaceholder:a,showSenderEmailInput:o,senderNameError:s,senderEmailError:c,replyToEmailError:l})=>(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 pt-6`,children:[(0,J.jsxs)(`section`,{children:[(0,J.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Email info`}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,J.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-sender-name`,children:`Sender name`}),(0,J.jsx)(K,{id:`welcome-email-sender-name`,placeholder:r,value:e.senderName,onChange:e=>t({senderName:e.target.value})}),s?(0,J.jsx)(`p`,{className:`text-sm text-red`,children:s}):null]}),o?(0,J.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,J.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-sender-email`,children:`Sender email`}),(0,J.jsx)(K,{id:`welcome-email-sender-email`,placeholder:i,value:e.senderEmail,onChange:e=>t({senderEmail:e.target.value})}),c?(0,J.jsx)(`p`,{className:`text-sm text-red`,children:c}):null]}):null,(0,J.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,J.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-reply-to-email`,children:`Reply-to email`}),(0,J.jsx)(K,{id:`welcome-email-reply-to-email`,placeholder:a,value:e.replyToEmail,onChange:e=>t({replyToEmail:e.target.value})}),l?(0,J.jsx)(`p`,{className:`text-sm text-red`,children:l}):null]})]})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`section`,{children:[(0,J.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Content`}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(za,{value:e.headerImage,onChange:e=>t({headerImage:e})}),n&&(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{className:`font-medium`,children:`Publication icon`}),(0,J.jsx)(B,{checked:e.showPublicationIcon,size:`sm`,onCheckedChange:e=>t({showPublicationIcon:e})})]}),(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{className:`font-medium`,children:`Publication title`}),(0,J.jsx)(B,{checked:e.showPublicationTitle,size:`sm`,onCheckedChange:e=>t({showPublicationTitle:e})})]}),(0,J.jsxs)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:[(0,J.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-footer`,children:`Email footer`}),(0,J.jsx)(sn,{id:`welcome-email-footer`,placeholder:`Any extra information or legal text`,rows:3,value:e.emailFooter,onChange:e=>t({emailFooter:e.target.value})})]}),(0,J.jsx)(Ba,{value:e.showBadge,onChange:e=>t({showBadge:e})})]})]})]}),Ao=()=>(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 pt-6`,children:[(0,J.jsxs)(`section`,{children:[(0,J.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Global`}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(Xa,{}),(0,J.jsx)(lo,{}),(0,J.jsx)(uo,{}),(0,J.jsx)(eo,{})]})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`section`,{children:[(0,J.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Header`}),(0,J.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,J.jsx)(co,{})})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`section`,{children:[(0,J.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Body`}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,J.jsx)(ho,{}),(0,J.jsx)(io,{}),(0,J.jsx)(oo,{}),(0,J.jsx)(ao,{}),(0,J.jsx)(po,{}),(0,J.jsx)(mo,{}),(0,J.jsx)(fo,{}),(0,J.jsx)(so,{})]})]})]}),jo=({generalSettings:e,onGeneralChange:t,showPublicationIconToggle:n,senderNamePlaceholder:r,senderEmailPlaceholder:i,replyToEmailPlaceholder:a,showSenderEmailInput:o,senderNameError:s,senderEmailError:c,replyToEmailError:l,isLoading:u,errorMessage:d})=>(0,J.jsxs)(Xt,{className:`flex min-h-0 flex-1 flex-col`,defaultValue:`general`,variant:`underline`,children:[(0,J.jsxs)(Yt,{className:`px-5`,children:[(0,J.jsx)(R,{value:`general`,children:`General`}),(0,J.jsx)(R,{value:`design`,children:`Design`})]}),u?(0,J.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,J.jsx)(hr,{size:`md`})}):d?(0,J.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-center text-gray-700 dark:text-gray-300`,children:d}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(z,{className:`min-h-0 flex-1 overflow-y-auto px-5 pb-5`,value:`general`,children:(0,J.jsx)(ko,{generalSettings:e,replyToEmailError:l,replyToEmailPlaceholder:a,senderEmailError:c,senderEmailPlaceholder:i,senderNameError:s,senderNamePlaceholder:r,showPublicationIconToggle:n,showSenderEmailInput:o,onGeneralChange:t})}),(0,J.jsx)(z,{className:`min-h-0 flex-1 overflow-y-auto px-5 pb-5`,value:`design`,children:(0,J.jsx)(Ao,{})})]})]});function Mo(e,t){return{senderName:t.senderName,senderEmail:t.senderEmail,replyToEmail:t.replyToEmail,headerImage:e.header_image||``,showPublicationIcon:e.show_header_icon,showPublicationTitle:e.show_header_title,showBadge:e.show_badge,emailFooter:e.footer_content||``}}function No(e){return Object.fromEntries(Object.entries(e).filter(([e])=>Oo(e)))}function Po(e){return{...Object.fromEntries(Object.entries(e.designSettings).filter(([e])=>Oo(e))),header_image:e.generalSettings.headerImage||null,show_header_icon:e.generalSettings.showPublicationIcon,show_header_title:e.generalSettings.showPublicationTitle,show_badge:e.generalSettings.showBadge,footer_content:e.generalSettings.emailFooter||null}}var Fo=({message:e})=>(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center text-gray-700 dark:text-gray-300`,children:e}),Io=e=>e?.trim()||null,Lo=N.create(()=>{let e=Ge(),{siteData:t,settings:n,config:r}=L(),[i,a,o,s]=W(n,[`title`,`default_email_address`,`icon`,`support_email_address`]),c=h(),{data:l,isLoading:u,isError:d}=Ja(),{data:f}=ne(),{mutateAsync:p}=Ya(),{mutateAsync:m}=oe(),{mutateAsync:g}=ee(),_=Te(`automations`),[v,b]=(0,q.useState)(!1),[x,S]=(0,q.useState)(!1),{senderNameInput:C,senderEmailInput:T,replyToEmailInput:E,senderNamePlaceholder:te,senderEmailPlaceholder:re,replyToEmailPlaceholder:ie,showSenderEmailInput:ae,senderEmailDomain:D}=To(f?.automated_emails||[],{config:r,defaultEmailAddress:a,siteTitle:i,supportEmailAddress:s}),se=(0,q.useMemo)(()=>({senderName:C,senderEmail:T,replyToEmail:E,headerImage:``,showPublicationIcon:!0,showPublicationTitle:!0,showBadge:!0,emailFooter:``}),[E,T,C]),ce=(0,q.useCallback)(async()=>{let e=new Map((f?.automated_emails||[]).map(e=>[e.slug,e]));for(let t of[`free`,`paid`]){if(e.has(_o[t]))continue;let n=bo(t,i),r=(await m({...n,status:`inactive`})).automated_emails?.[0];r&&e.set(r.slug,r)}},[m,f?.automated_emails,i]),{formState:le,saveState:O,updateForm:k,setFormState:ue,handleSave:de,okProps:fe,errors:pe}=w({initialState:{designSettings:{...go},generalSettings:se},savingDelay:500,onSave:async e=>{if(!ge)throw y.error(`Unable to load email design settings. Please try again.`,{id:Eo}),b(!0),Error(`Unable to load email design settings`);_||await ce();let t={sender_name:Io(e.generalSettings.senderName),sender_reply_to:Io(e.generalSettings.replyToEmail),...ae?{sender_email:Io(e.generalSettings.senderEmail)}:{}},{meta:{sent_email_verification:n=[]}={}}=await g(t);await p(Po(e)),n.length>0&&y.info(`We’ve sent a confirmation email to the new address.`),b(!1),y.dismiss(Eo)},onSaveError:e=>{c(e,{withToast:!1}),y.error(`Unable to save email design settings. Please try again.`,{id:Eo}),b(!0)},onValidate:e=>{let t={},n=e.generalSettings.senderEmail?.trim(),r=e.generalSettings.replyToEmail?.trim();return ae&&n&&(Ka.default.isEmail(n)?D&&n.split(`@`)[1]?.toLowerCase()!==D.toLowerCase()&&(t.senderEmail=`Email address must end with @${D}`):t.senderEmail=`Enter a valid email address`),r&&!Ka.default.isEmail(r)&&(t.replyToEmail=`Enter a valid email address`),t}}),[me,he]=(0,q.useState)(null),ge=l?.automated_email_design?.[0],_e=ge?`${ge.id}:${ge.updated_at??`initial`}`:null,{designSettings:ve,generalSettings:ye}=le;(0,q.useEffect)(()=>{ge&&me===null&&(ue(e=>({designSettings:No(ge),generalSettings:Mo(ge,e.generalSettings)})),he(_e))},[ge,_e,me,ue]),(0,q.useEffect)(()=>{x||f===void 0||(ue(e=>({...e,generalSettings:{...e.generalSettings,senderName:C,senderEmail:T,replyToEmail:E}})),S(!0))},[f,E,T,x,C,ue]);let be=(0,q.useCallback)(e=>{b(!1),y.dismiss(Eo),k(t=>({...t,designSettings:{...t.designSettings,...e}}))},[k]),xe=(0,q.useCallback)(e=>{b(!1),y.dismiss(Eo),k(t=>({...t,generalSettings:{...t.generalSettings,...e}}))},[k]),Se=(0,q.useCallback)(()=>{e.hide()},[e]),Ce=`Unable to load email design settings. Please try again.`,we=v?{...fe,variant:`destructive`,label:`Retry`}:fe;return(0,J.jsx)(Ua,{accentColor:t.accent_color,settings:ve,onSettingsChange:be,children:(0,J.jsx)(Sa,{afterClose:()=>{e.resolveHide(),e.remove()},dirty:O===`unsaved`,isLoading:u||d,okProps:we,open:e.visible,preview:d?(0,J.jsx)(Fo,{message:Ce}):(0,J.jsx)(Ra,{accentColor:t.accent_color,emailFooter:ye.emailFooter,footerLinkText:`Manage your preferences`,headerImage:ye.headerImage,publicationIcon:o,replyToEmail:ye.replyToEmail||ie||``,senderEmail:ye.senderEmail||re||a||``,senderName:ye.senderName||te||i||`Your site`,settings:ve,showBadge:ye.showBadge,showPublicationIcon:ye.showPublicationIcon&&!!o,showPublicationTitle:ye.showPublicationTitle,showRecipientLine:!1,showSubjectLine:!1,siteTitle:i,subject:`Welcome to ${ye.senderName||te||i||`our publication`}`,children:(0,J.jsx)(Ga,{})}),sidebar:(0,J.jsx)(jo,{errorMessage:d?Ce:void 0,generalSettings:ye,isLoading:u,replyToEmailError:pe.replyToEmail,replyToEmailPlaceholder:ie,senderEmailError:pe.senderEmail,senderEmailPlaceholder:re,senderNameError:pe.senderName,senderNamePlaceholder:te,showPublicationIconToggle:!!o,showSenderEmailInput:ae,onGeneralChange:xe}),testId:`welcome-email-customize-modal`,title:`Welcome emails`,onClose:Se,onSave:()=>de({fakeWhenUnchanged:!0})})})}),Ro={enableNewsletters:[`emails`,`newsletters`,`newsletter sending`,`enable`,`disable`,`turn on`,`turn off`],emails:[`emails`,`newsletters`,`automation emails`,`transactional`,`design`,`customization`,`automations`,`welcome`],defaultRecipients:[`newsletters`,`default recipients`,`emails`],mailgun:[`mailgun`,`emails`,`newsletters`]},zo=()=>{let e=()=>{N.show(Lo)};return(0,J.jsx)(F,{children:(0,J.jsxs)(It,{"data-testid":`automations-transactional-row`,children:[(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsxs)(`button`,{className:`flex w-full min-w-0 items-center gap-3 py-3 text-left focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none`,type:`button`,onClick:e,children:[(0,J.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-muted`,children:(0,J.jsx)(yn,{className:`size-5 text-muted-foreground`})}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block leading-tight font-medium`,children:`Email design`}),(0,J.jsx)(`span`,{className:`mt-1 block text-sm leading-[1.35] text-muted-foreground`,children:`Customize the appearance of automation emails`})]})]})}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,type:`button`,variant:`link`,onClick:e,children:`Edit`})})]})})},Bo=()=>{let e=window.location.hash.slice(1);return new URL(e||`/`,window.location.origin).pathname.startsWith(`/settings/memberemails`)},Vo=({keywords:e,newslettersEnabled:t})=>{let{updateRoute:n}=A(),r=zt().getParam(`verifyEmail`),{mutateAsync:i}=D(),a=h(),o=(0,q.useRef)(null),[s,c]=(0,q.useState)(t?`newsletters`:`transactional`),[l,u]=(0,q.useState)(`active`);return(0,q.useEffect)(()=>{!t&&s===`newsletters`&&c(`transactional`)},[t,s]),(0,q.useEffect)(()=>{!r||!Bo()||o.current===r||(o.current=r,c(`transactional`),(async()=>{try{let{meta:{email_verified:e}={}}=await i({token:r}),t=`Sender email verified`,a=(0,J.jsx)(J.Fragment,{children:`Automation email sender settings have been updated.`});e===`sender_reply_to`&&(t=`Reply-to address verified`,a=(0,J.jsx)(J.Fragment,{children:`Automation email reply-to address has been verified and updated.`})),n(`emails`),N.show(P,{title:t,prompt:a,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Try again later.`;e instanceof p&&e.message===`Token expired`&&(t=`Verification link has expired.`),n(`emails`),N.show(P,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),a(e,{withToast:!1})}})())},[a,n,r,i]),(0,J.jsx)(Y,{customButtons:t&&s===`newsletters`?(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{n(`newsletters/new`)},children:`Add newsletter`}):void 0,description:`Manage newsletters and design automation emails.`,keywords:e,navid:`emails`,testId:`emails`,title:`Newsletters & automation emails`,children:(0,J.jsxs)(Xt,{value:s,variant:`underline`,onValueChange:e=>c(e),children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between border-b border-grey-200 dark:border-grey-900`,children:[(0,J.jsxs)(Yt,{className:`border-b-0`,children:[t&&(0,J.jsx)(R,{value:`newsletters`,children:`Newsletters`}),(0,J.jsx)(R,{value:`transactional`,children:`Automation emails`})]}),t&&s===`newsletters`&&(0,J.jsxs)(nn,{value:l,onValueChange:e=>u(e),children:[(0,J.jsx)(en,{className:`h-7 w-auto gap-1 border-0 bg-transparent px-2 text-sm shadow-none hover:bg-muted focus:ring-0 focus:ring-offset-0`,"data-testid":`newsletters-filter`,children:(0,J.jsx)(tn,{})}),(0,J.jsxs)($t,{children:[(0,J.jsx)(Qt,{value:`active`,children:`Active`}),(0,J.jsx)(Qt,{value:`archived`,children:`Archived`})]})]})]}),t&&(0,J.jsx)(z,{value:`newsletters`,children:(0,J.jsx)(xa,{filter:l})}),(0,J.jsx)(z,{value:`transactional`,children:(0,J.jsx)(zo,{})})]})})},Ho=()=>{let{settings:e,config:t}=L(),[n]=W(e,[`editor_default_email_recipients`]),r=n!==`disabled`,i=r&&!t.mailgunIsConfigured;return(0,J.jsxs)(Qi,{keywords:[Ro.enableNewsletters,...r?[Ro.defaultRecipients]:[],Ro.emails,...i?[Ro.mailgun]:[]].flat(),title:`Email`,children:[(0,J.jsx)(la,{keywords:Ro.enableNewsletters}),r&&(0,J.jsx)(ca,{keywords:Ro.defaultRecipients}),(0,J.jsx)(Vo,{keywords:Ro.emails,newslettersEnabled:r}),i&&(0,J.jsx)(da,{keywords:Ro.mailgun})]})},Uo=j(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=M(),[c,l,u,d,f,p]=W(t,[`email_track_opens`,`email_track_clicks`,`members_track_sources`,`outbound_link_tagging`,`web_analytics`,`web_analytics_configured`]),m=er(t,`email_track_clicks`),[h,g]=(0,q.useState)(!1),_=We(),{updateRoute:v}=A();(0,q.useEffect)(()=>{_?.isLimited(`limitAnalytics`)?_.errorIfWouldGoOverLimit(`limitAnalytics`).catch(e=>{e instanceof Ve&&g(!0)}):g(!1)},[_]);let y=(e,t)=>{o(e,t),s(!0)},b=p&&!h;return(0,J.jsxs)(Y,{description:`Decide what data you collect across your publication`,isEditing:n,keywords:e,navid:`analytics`,saveState:r,testId:`analytics`,title:`Analytics`,hideEditButton:!0,onCancel:a,onEditingChange:s,onSave:i,children:[(0,J.jsxs)(I,{className:`analytics-settings gap-y-0!`,columns:1,children:[(0,J.jsxs)(U,{className:`py-4`,"data-disabled":!b||void 0,orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`web-analytics`,children:`Web analytics`}),(0,J.jsx)(H,{children:p?(0,J.jsxs)(J.Fragment,{children:[`Cookie-free, first party traffic analytics for your site, powered by `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/integrations/tinybird`,rel:`noopener noreferrer`,target:`_blank`,children:`Tinybird`})]}):(0,J.jsx)(J.Fragment,{children:`Cookie-free, first party traffic analytics for your site`})})]}),(0,J.jsx)(B,{checked:!!(f&&b),disabled:!b,id:`web-analytics`,onCheckedChange:e=>y(`web_analytics`,e)})]}),h?(0,J.jsx)(`div`,{className:`mb-5 rounded-md border border-grey-200 bg-grey-50 px-4 py-2.5 dark:border-grey-900 dark:bg-grey-900`,children:(0,J.jsx)(`span`,{className:`flex items-start gap-2`,children:(0,J.jsxs)(`span`,{children:[`Web analytics is available on the Publisher plan and above. `,(0,J.jsx)(`span`,{className:`cursor-pointer text-green`,onClick:()=>v({route:`/pro`,isExternal:!0}),children:`Upgrade now →`})]})})}):p?(0,J.jsx)(Mn,{}):(0,J.jsx)(`div`,{className:`mb-5 rounded-md border border-grey-200 bg-grey-50 px-4 py-2.5 dark:border-grey-900 dark:bg-grey-900`,children:(0,J.jsx)(`span`,{className:`flex items-start gap-2`,children:(0,J.jsxs)(`span`,{children:[`Web analytics in Ghost is powered by `,(0,J.jsx)(`a`,{className:`font-medium text-green`,href:`https://tbrd.co/ghost`,rel:`noopener noreferrer`,target:`_blank`,children:`Tinybird`}),` and requires configuration to start collecting data. `,(0,J.jsx)(`a`,{className:`font-medium text-green`,href:`https://docs.ghost.org/install/docker#tinybird-integration`,rel:`noopener noreferrer`,target:`_blank`,children:`Get started →`})]})})}),(0,J.jsxs)(U,{className:`py-4`,orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`email-opens`,children:`Email opens`}),(0,J.jsx)(H,{children:`Record when a member opens an email`})]}),(0,J.jsx)(B,{checked:!!c,id:`email-opens`,onCheckedChange:e=>y(`email_track_opens`,e)})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(U,{className:`py-4`,"data-disabled":m||void 0,orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`email-clicks`,children:`Email clicks`}),(0,J.jsx)(H,{children:`Record when a member clicks on any link in an email`})]}),(0,J.jsx)(B,{checked:!!l,disabled:m,id:`email-clicks`,onCheckedChange:e=>y(`email_track_clicks`,e)})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(U,{className:`py-4`,orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`member-sources`,children:`Member sources`}),(0,J.jsx)(H,{children:`Track the traffic sources and posts that drive the most member growth`})]}),(0,J.jsx)(B,{checked:!!u,id:`member-sources`,onCheckedChange:e=>y(`members_track_sources`,e)})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(U,{className:`py-4`,orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`outbound-link-tagging`,children:`Outbound link tagging`}),(0,J.jsx)(H,{children:`Make it easier for other sites to track the traffic you send them in their analytics`})]}),(0,J.jsx)(B,{checked:!!d,id:`outbound-link-tagging`,onCheckedChange:e=>y(`outbound_link_tagging`,e)})]})]}),(0,J.jsx)(`div`,{className:`items-center-mt-1 flex justify-between`,children:(0,J.jsx)(`a`,{className:`font-medium text-green`,href:`https://ghost.org/help/post-analytics/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn about analytics`})})]})},`Analytics`),Wo=[{code:`af`,label:`Afrikaans`},{code:`ar`,label:`Arabic`},{code:`bg`,label:`Bulgarian`},{code:`bn`,label:`Bengali`},{code:`bs`,label:`Bosnian`},{code:`ca`,label:`Catalan`},{code:`cs`,label:`Czech`},{code:`da`,label:`Danish`},{code:`de`,label:`German`},{code:`de-CH`,label:`Swiss German`},{code:`el`,label:`Greek`},{code:`en`,label:`English`},{code:`eo`,label:`Esperanto`},{code:`es`,label:`Spanish`},{code:`et`,label:`Estonian`},{code:`eu`,label:`Basque`},{code:`fa`,label:`Persian/Farsi`},{code:`fi`,label:`Finnish`},{code:`fr`,label:`French`},{code:`gd`,label:`Gaelic (Scottish)`},{code:`he`,label:`Hebrew`},{code:`hi`,label:`Hindi`},{code:`hr`,label:`Croatian`},{code:`hu`,label:`Hungarian`},{code:`id`,label:`Indonesian`},{code:`is`,label:`Icelandic`},{code:`it`,label:`Italian`},{code:`ja`,label:`Japanese`},{code:`ko`,label:`Korean`},{code:`kz`,label:`Kazakh`},{code:`lt`,label:`Lithuanian`},{code:`lv`,label:`Latvian`},{code:`mk`,label:`Macedonian`},{code:`mn`,label:`Mongolian`},{code:`ms`,label:`Malay`},{code:`nb`,label:`Norwegian Bokmål`},{code:`ne`,label:`Nepali`},{code:`nl`,label:`Dutch`},{code:`nn`,label:`Norwegian Nynorsk`},{code:`pa`,label:`Punjabi`},{code:`pl`,label:`Polish`},{code:`pt`,label:`Portuguese`},{code:`pt-BR`,label:`Portuguese (Brazil)`},{code:`ro`,label:`Romanian`},{code:`ru`,label:`Russian`},{code:`si`,label:`Sinhala`},{code:`sk`,label:`Slovak`},{code:`sl`,label:`Slovenian`},{code:`sq`,label:`Albanian`},{code:`sr`,label:`Serbian`},{code:`sr-Cyrl`,label:`Serbian (Cyrillic)`},{code:`sv`,label:`Swedish`},{code:`sw`,label:`Swahili`},{code:`ta`,label:`Tamil`},{code:`th`,label:`Thai`},{code:`tr`,label:`Turkish`},{code:`uk`,label:`Ukrainian`},{code:`ur`,label:`Urdu`},{code:`uz`,label:`Uzbek`},{code:`vi`,label:`Vietnamese`},{code:`zh`,label:`Chinese`},{code:`zh-Hant`,label:`Traditional Chinese`}],Go=new Set(`en-gb-oed.i-ami.i-bnn.i-default.i-enochian.i-hak.i-klingon.i-lux.i-mingo.i-navajo.i-pwn.i-tao.i-tay.i-tsu.sgn-be-fr.sgn-be-nl.sgn-ch-de.art-lojban.cel-gaulish.no-bok.no-nyn.zh-guoyu.zh-hakka.zh-min.zh-min-nan.zh-xiang`.split(`.`)),Ko=e=>{let t=`Invalid locale format. Examples: en, pt-BR, zh-Hant, sr-Cyrl, x-private`;if(!e)return`Enter a value`;let n=e.trim();if(!n)return t;if(Go.has(n.toLowerCase()))return null;if(!/^[a-z0-9]+(-[a-z0-9]+)*$/i.test(n))return t;let r=n.split(`-`);if(r[0].toLowerCase()===`x`){if(r.length<2)return t;for(let e=1;e<r.length;e++)if(r[e].length<1||r[e].length>8)return t;return null}let i=0,a=r[i];if(!/^[a-z]{2,3}$/i.test(a))return t;for(i+=1,i<r.length&&/^[a-z]{4}$/i.test(r[i])&&(i+=1),i<r.length&&/^([a-z]{2}|[0-9]{3})$/i.test(r[i])&&(i+=1);i<r.length&&/^([a-z0-9]{5,8}|[0-9][a-z0-9]{3})$/i.test(r[i]);)i+=1;for(;i<r.length&&/^[0-9a-wy-z]$/i.test(r[i]);){if(i+=1,i>=r.length||!/^[a-z0-9]{2,8}$/i.test(r[i]))return t;for(i+=1;i<r.length&&/^[a-z0-9]{2,8}$/i.test(r[i]);)i+=1}if(i<r.length&&r[i].toLowerCase()===`x`){if(i+=1,i>=r.length)return t;for(;i<r.length;){if(!/^[a-z0-9]+$/i.test(r[i]))return t;i+=1}}if(i!==r.length)return t;let o=r.findIndex(e=>e.toLowerCase()===`x`),s=[`english`,`french`,`spanish`,`german`,`italian`,`chinese`,`japanese`,`korean`,`russian`,`arabic`,`united`,`states`,`kingdom`,`traditional`,`simplified`];for(let e=0;e<r.length;e++){let n=r[e];if(![`i`,`x`,`sgn`,`art`,`cel`,`no`,`zh`].includes(n.toLowerCase())&&!(o!==-1&&e>o)&&(n.length>16||s.includes(n.toLowerCase())))return t}return null},qo=j(({keywords:e})=>{let t=q.useId(),[n,r]=q.useState(!1),{localSettings:i,isEditing:a,saveState:o,handleSave:s,handleCancel:c,updateSetting:l,errors:u,handleEditingChange:d}=M({onValidate:()=>{let e=Ko(f);return e?{publicationLanguage:e}:{}}}),[f]=W(i,[`locale`]),p=q.useMemo(()=>Wo.map(e=>({value:e.code,label:`${e.label} (${e.code})`})),[]),m=e=>{l(`locale`,e),a||d(!0)},h=!!(f&&!p.some(e=>e.value===f)),[g,_]=q.useState(h),[v,y]=q.useState(null),b=q.useMemo(()=>[...p,{label:`Other...`,value:`other`}],[p]),x=b.find(e=>e.value===f);q.useEffect(()=>{f&&p.some(e=>e.value===f)&&(_(!1),y(null))},[p,f]);let S=e=>{let t=e.target.value;y(Ko(t)||(t?null:`Enter a value`)),m(t)},C=(0,J.jsxs)(J.Fragment,{children:[`Default: English (`,(0,J.jsx)(`strong`,{children:`en`}),`); find out more about`,(0,J.jsx)(`a`,{className:`text-primary`,href:`https://ghost.org/docs/faq/translation/`,rel:`noopener noreferrer`,target:`_blank`,children:` using Ghost in other languages`})]});return(0,J.jsx)(Y,{description:`Set the language/locale which is used on your site`,isEditing:a,keywords:e,navid:`publication-language`,saveState:o,testId:`publication-language`,title:`Publication Language`,hideEditButton:!0,onCancel:()=>{y(null),c()},onEditingChange:d,onSave:s,children:(0,J.jsx)(I,{columns:1,children:g||h?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(U,{"data-invalid":!!(u.publicationLanguage||v)||void 0,children:[(0,J.jsx)(V,{htmlFor:`custom-locale`,children:`Site language`}),(0,J.jsx)(K,{"aria-invalid":!!(u.publicationLanguage||v)||void 0,className:`border-transparent bg-muted`,"data-testid":`locale-select`,id:`custom-locale`,placeholder:`e.g. pt-BR, sr-Cyrl, en`,value:f,onChange:S}),v||u.publicationLanguage?(0,J.jsx)(an,{children:v||u.publicationLanguage}):(0,J.jsx)(H,{children:`Enter a custom locale code.`})]}),(0,J.jsx)(G,{className:`h-auto self-start px-0`,size:`sm`,type:`button`,variant:`link`,onClick:()=>{_(!1),y(null),m(`en`)},children:`Choose from list`})]}):(0,J.jsxs)(U,{"data-invalid":!!u.publicationLanguage||void 0,children:[(0,J.jsx)(V,{children:`Site language`}),(0,J.jsxs)($e,{open:n,onOpenChange:r,children:[(0,J.jsx)(Mt,{"aria-describedby":u.publicationLanguage?t:void 0,"aria-invalid":!!u.publicationLanguage||void 0,"aria-label":`Site language`,"data-testid":`locale-select`,children:(0,J.jsx)(rt,{children:x?.label})}),(0,J.jsx)(Ct,{children:(0,J.jsx)(fn,{i18n:{searchPlaceholder:`Search languages...`},isMultiSelect:!1,options:b,values:f?[f]:[],autoCloseOnSelect:!0,onChange:e=>{e[0]===`other`?(_(!0),m(``)):e[0]&&m(e[0])},onClose:()=>r(!1)})})]}),u.publicationLanguage?(0,J.jsx)(an,{id:t,children:u.publicationLanguage}):(0,J.jsx)(H,{children:C})]})})})},`Publication language`),Jo=({title:e,description:t,icon:n,url:r})=>{let i=r?.replace(/\/$/,``),a=i?.replace(/^https?:\/\//,``).replace(/\/?$/,``);return(0,J.jsx)(`div`,{children:(0,J.jsxs)(`div`,{className:`-mx-5 -mb-5 overflow-hidden rounded-b-xl bg-grey-50 px-5 pt-2 md:-mx-7 md:-mb-7 md:px-7 md:pt-7 dark:bg-grey-950`,children:[(0,J.jsx)(`div`,{className:`-mt-4 mb-2 text-sm text-grey-500 uppercase dark:text-grey-800`,children:`Preview`}),(0,J.jsxs)(`div`,{className:`rounded-t-sm bg-white px-5 py-3 shadow-lg dark:bg-grey-950`,children:[(0,J.jsxs)(`div`,{className:`mt-3 flex items-center`,children:[(0,J.jsx)(`div`,{children:(0,J.jsx)(De,{className:`mr-7 h-7`})}),(0,J.jsx)(`div`,{className:`grow`,children:(0,J.jsx)(`div`,{className:`flex w-full items-center justify-end rounded-full bg-white p-3 px-4 shadow dark:bg-grey-900`,children:(0,J.jsx)(Dr,{className:`size-4 stroke-2 text-blue-600`})})})]}),(0,J.jsxs)(`div`,{className:`mt-4 flex items-center gap-2 border-t border-grey-200 pt-4 dark:border-grey-900`,children:[(0,J.jsx)(`div`,{className:`flex size-7 items-center justify-center rounded-full bg-grey-200 dark:bg-grey-700`,style:{backgroundImage:n?`url(${n})`:`none`,backgroundSize:`contain`}}),(0,J.jsxs)(`div`,{className:`flex flex-col`,children:[(0,J.jsx)(`span`,{children:a}),(0,J.jsx)(`span`,{className:`-mt-0.5 inline-block text-sm text-grey-600`,children:i})]})]}),(0,J.jsxs)(`div`,{className:`mt-1 flex flex-col`,children:[(0,J.jsx)(`span`,{className:`text-lg text-[#1a0dab] dark:text-blue`,children:e}),(0,J.jsx)(`span`,{className:`text-grey-900 dark:text-grey-700`,children:t})]})]})]})})},Yo=j(({keywords:e})=>{let{localSettings:t,saveState:n,siteData:r,focusRef:i,isEditing:a,handleSave:o,handleCancel:s,handleEditingChange:c,updateSetting:l}=M(),u=h(),{mutateAsync:d}=be(),f=Le(),p=Te(`llmsTxt`),[m,g,_,v,y,b,x,S,C,w]=W(t,[`meta_title`,`meta_description`,`title`,`description`,`og_title`,`og_description`,`og_image`,`twitter_title`,`twitter_description`,`twitter_image`]).map(e=>e||``),[T]=W(t,[`llms_enabled`]),ee=T!==!1,[E,te]=(0,q.useState)(`metadata`),ne=e=>t=>{l(e,t.target.value),a||c(!0)},re=e=>async t=>{try{let n=ze(await d({file:t}));l(e,n),a||c(!0)}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),u(t)}},ie=e=>()=>{l(e,``),a||c(!0)},ae=e=>{l(`llms_enabled`,e),a||c(!0)},D=ne(`meta_title`),oe=ne(`meta_description`),se=ne(`og_title`),ce=ne(`og_description`),le=re(`og_image`),O=ie(`og_image`),k=ne(`twitter_title`),ue=ne(`twitter_description`),de=re(`twitter_image`),fe=ie(`twitter_image`),pe=(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(I,{className:`my-6 gap-3 [&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:[p&&(0,J.jsxs)(U,{orientation:`horizontal`,children:[(0,J.jsx)(V,{htmlFor:`llms-enabled`,children:`Enable structured data for LLMs and AI search engines`}),(0,J.jsx)(B,{checked:ee,id:`llms-enabled`,onCheckedChange:ae})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`meta-title`,children:`Meta title`}),(0,J.jsx)(K,{ref:i,id:`meta-title`,maxLength:300,placeholder:_,value:m,onChange:D}),(0,J.jsx)(H,{children:`Recommended: 70 characters`})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`meta-description`,children:`Meta description`}),(0,J.jsx)(K,{id:`meta-description`,maxLength:500,placeholder:v,value:g,onChange:oe}),(0,J.jsx)(H,{children:`Recommended: 156 characters`})]})]}),(0,J.jsx)(Jo,{description:g||v,icon:r?.icon,title:m||_,url:r?.url})]}),me=(0,J.jsxs)(`div`,{className:`mt-6 md:mx-[52px]`,children:[(0,J.jsxs)(`div`,{className:`mb-4 flex items-center gap-2`,children:[(0,J.jsx)(`div`,{children:(0,J.jsx)(we,{className:`size-10`})}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`mb-1 leading-none font-semibold text-grey-900 dark:text-grey-300`,children:_}),(0,J.jsx)(`div`,{className:`leading-none text-grey-700`,children:`2h`})]})]}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`mb-2 h-3 w-full rounded bg-grey-200 dark:bg-grey-900`}),(0,J.jsx)(`div`,{className:`mb-4 h-3 w-3/5 rounded bg-grey-200 dark:bg-grey-900`}),(0,J.jsxs)(I,{className:`overflow-hidden rounded-md border border-grey-300 dark:border-grey-900`,children:[(0,J.jsx)(ke,{className:`h-75 rounded-b-none`,children:x?(0,J.jsxs)(Oe,{className:`rounded-b-none`,children:[(0,J.jsx)(Ee,{id:`facebook-image`,src:x}),(0,J.jsxs)(Ne,{children:[f.isEnabled&&(0,J.jsx)(Ae,{"aria-label":`Edit Facebook image`,onClick:()=>f.openEditor({image:x,handleSave:async e=>{let t=ze(await d({file:e}));l(`og_image`,t)}}),children:(0,J.jsx)(Sr,{})}),(0,J.jsx)(Ae,{"aria-label":`Remove Facebook image`,"data-testid":`image-delete-button`,onClick:O,children:(0,J.jsx)(Hn,{})})]})]}):(0,J.jsx)(Se,{className:`rounded-b-none`,inputAriaLabel:`Upload Facebook image`,inputId:`facebook-image`,onDropAccepted:e=>le(e[0]),children:`Upload Facebook image`})}),(0,J.jsxs)(`div`,{className:`mt-5 flex flex-col gap-x-6 gap-y-7 px-4 pb-7 [&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:[(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`facebook-title`,children:`Facebook title`}),(0,J.jsx)(K,{id:`facebook-title`,maxLength:300,placeholder:_,value:y,onChange:se})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`facebook-description`,children:`Facebook description`}),(0,J.jsx)(K,{id:`facebook-description`,maxLength:300,placeholder:v,value:b,onChange:ce})]})]})]})]})]}),he=(0,J.jsxs)(`div`,{className:`mt-6 flex flex-col gap-3 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`pt-1`,children:(0,J.jsx)(Ye,{className:`-mb-1 size-10`})}),(0,J.jsxs)(`div`,{className:`w-full md:mr-[52px]`,children:[(0,J.jsxs)(`div`,{className:`mb-2`,children:[(0,J.jsx)(`span`,{className:`mr-1 font-semibold text-grey-900 dark:text-grey-300`,children:_}),(0,J.jsx)(`span`,{className:`text-grey-700`,children:`· 2h`})]}),(0,J.jsx)(`div`,{className:`mb-2 h-3 w-full rounded bg-grey-200 dark:bg-grey-900`}),(0,J.jsx)(`div`,{className:`mb-4 h-3 w-3/5 rounded bg-grey-200 dark:bg-grey-900`}),(0,J.jsxs)(I,{className:`overflow-hidden rounded-md border border-grey-300 dark:border-grey-900`,children:[(0,J.jsx)(ke,{className:`h-75 rounded-b-none`,children:w?(0,J.jsxs)(Oe,{className:`rounded-b-none`,children:[(0,J.jsx)(Ee,{id:`twitter-image`,src:w}),(0,J.jsxs)(Ne,{children:[f.isEnabled&&(0,J.jsx)(Ae,{"aria-label":`Edit X image`,onClick:()=>f.openEditor({image:w,handleSave:async e=>{let t=ze(await d({file:e}));l(`twitter_image`,t)}}),children:(0,J.jsx)(Sr,{})}),(0,J.jsx)(Ae,{"aria-label":`Remove X image`,"data-testid":`image-delete-button`,onClick:fe,children:(0,J.jsx)(Hn,{})})]})]}):(0,J.jsx)(Se,{className:`rounded-b-none`,inputAriaLabel:`Upload X image`,inputId:`twitter-image`,onDropAccepted:e=>de(e[0]),children:`Upload X image`})}),(0,J.jsxs)(`div`,{className:`mt-6 flex flex-col gap-x-6 gap-y-7 px-4 pb-7 [&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:[(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`x-title`,children:`X title`}),(0,J.jsx)(K,{id:`x-title`,maxLength:300,placeholder:_,value:S,onChange:k})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`x-description`,children:`X description`}),(0,J.jsx)(K,{id:`x-description`,maxLength:300,placeholder:v,value:C,onChange:ue})]})]})]})]})]});return(0,J.jsx)(Y,{description:`Extra content for search engines and social accounts`,isEditing:a,keywords:e,navid:`metadata`,saveState:n,testId:`seometa`,title:`Meta data`,hideEditButton:!0,onCancel:s,onEditingChange:c,onSave:o,children:(0,J.jsxs)(Xt,{"data-testid":`seo-tabview`,value:E,variant:`underline`,onValueChange:te,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`metadata`,children:`Search`}),(0,J.jsx)(R,{value:`twitter`,children:`X card`}),(0,J.jsx)(R,{value:`facebook`,children:`Facebook card`})]}),(0,J.jsx)(z,{value:`metadata`,children:pe}),(0,J.jsx)(z,{value:`twitter`,children:he}),(0,J.jsx)(z,{value:`facebook`,children:me})]})})},`SEO meta`),Xo=[`facebook`,`twitter`],Zo=bt.filter(e=>!Xo.includes(e)),Qo=e=>{let t=W(e,[...bt]);return Object.fromEntries(Nt.map((e,n)=>{let r=t[n];return[e.key,e.toDisplayValue(r)]}))},$o=j(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=M(),[c,l]=(0,q.useState)({}),[u,d]=(0,q.useState)(()=>Qo(t)),[f,p]=(0,q.useState)(null),[m,h]=(0,q.useState)({});(0,q.useEffect)(()=>{n||h({})},[n]);let g=W(t,[...bt]),_=Zo.some(e=>t?.some(t=>t.key===e)),v=(0,q.useMemo)(()=>_?Nt:Nt.filter(e=>Xo.includes(e.key)),[_]);(0,q.useEffect)(()=>{f||d(Qo(t))},[g.map(e=>e??``).join(`|`)]);let y=(e,t)=>{d(n=>({...n,[e]:t})),h(t=>({...t,[e]:!0})),n||s(!0);try{let{storedValue:n}=ht(e,t);o(e,n),c[e]&&l(t=>({...t,[e]:``}))}catch{l(n=>({...n,[e]:kt(e,t)}))}},b=e=>{if(p(t=>t===e?null:t),kt(e,u[e]))return;let{displayValue:t}=ht(e,u[e]);d(n=>({...n,[e]:t}))};return(0,J.jsx)(Y,{description:`Link your social accounts for full structured data and rich card support`,isEditing:n,keywords:e,navid:`social-accounts`,saveState:r,testId:`social-accounts`,title:`Social accounts`,hideEditButton:!0,onCancel:a,onEditingChange:s,onSave:()=>{let e=v.reduce((e,t)=>{if(!m[t.key])return e;let n=kt(t.key,u[t.key]);return n&&(e[t.key]=n),e},{});l(e),Object.keys(e).length===0&&i()},children:(0,J.jsx)(I,{className:`[&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:v.map(e=>(0,J.jsxs)(U,{"data-invalid":!!c[e.key]||void 0,children:[(0,J.jsx)(V,{htmlFor:`publication-${e.key}`,children:e.publicationTitle}),(0,J.jsx)(K,{"aria-invalid":!!c[e.key]||void 0,"data-testid":e.testId,id:`publication-${e.key}`,placeholder:e.placeholder,value:u[e.key],onBlur:()=>b(e.key),onChange:t=>y(e.key,t.target.value),onFocus:()=>p(e.key)}),c[e.key]&&(0,J.jsx)(an,{children:c[e.key]})]},e.key))})})},`Social accounts`),es=[{name:`Pacific/Pago_Pago`,label:`Midway Island, Samoa`},{name:`Pacific/Honolulu`,label:`Hawaii`},{name:`America/Anchorage`,label:`Alaska`},{name:`America/Tijuana`,label:`Tijuana`},{name:`America/Los_Angeles`,label:`Pacific Time (US & Canada)`},{name:`America/Mazatlan`,label:`La Paz, Mazatlan`},{name:`America/Phoenix`,label:`Arizona`},{name:`America/Denver`,label:`Mountain Time (US & Canada)`},{name:`America/Chihuahua`,label:`Chihuahua`},{name:`America/Costa_Rica`,label:`Central America`},{name:`America/Chicago`,label:`Central Time (US & Canada)`},{name:`America/Mexico_City`,label:`Guadalajara, Mexico City, Monterrey`},{name:`America/Regina`,label:`Saskatchewan`},{name:`America/Bogota`,label:`Bogota, Lima, Quito`},{name:`America/New_York`,label:`Eastern Time (US & Canada)`},{name:`America/Fort_Wayne`,label:`Indiana (East)`},{name:`America/Caracas`,label:`Caracas, La Paz, Georgetown`},{name:`America/Halifax`,label:`Atlantic Time (Canada); Greenland`},{name:`America/Santiago`,label:`Santiago`},{name:`America/St_Johns`,label:`Newfoundland`},{name:`America/Argentina/Buenos_Aires`,label:`Buenos Aires, Brasilia`},{name:`America/Noronha`,label:`Fernando de Noronha`},{name:`Atlantic/Azores`,label:`Azores`},{name:`Atlantic/Cape_Verde`,label:`Cape Verde Is.`},{name:`Etc/UTC`,label:`UTC`},{name:`Africa/Casablanca`,label:`Casablanca, Monrovia`},{name:`Europe/Dublin`,label:`Dublin, Edinburgh, London`},{name:`Europe/Amsterdam`,label:`Amsterdam, Berlin, Rome, Stockholm, Vienna`},{name:`Europe/Prague`,label:`Belgrade, Bratislava, Budapest, Prague`},{name:`Europe/Paris`,label:`Brussels, Copenhagen, Madrid, Paris`},{name:`Europe/Warsaw`,label:`Sarajevo, Skopje, Warsaw, Zagreb`},{name:`Africa/Lagos`,label:`West Central Africa`},{name:`Europe/Athens`,label:`Athens, Beirut, Bucharest`},{name:`Africa/Cairo`,label:`Cairo, Egypt`},{name:`Africa/Maputo`,label:`Harare`},{name:`Europe/Kiev`,label:`Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius`},{name:`Asia/Jerusalem`,label:`Jerusalem`},{name:`Africa/Johannesburg`,label:`Pretoria`},{name:`Asia/Baghdad`,label:`Baghdad`},{name:`Asia/Riyadh`,label:`Kuwait, Nairobi, Riyadh`},{name:`Europe/Istanbul`,label:`Istanbul, Ankara`},{name:`Europe/Moscow`,label:`Moscow, St. Petersburg, Volgograd`},{name:`Asia/Tehran`,label:`Tehran`},{name:`Asia/Dubai`,label:`Abu Dhabi, Muscat`},{name:`Asia/Baku`,label:`Baku, Tbilisi, Yerevan`},{name:`Asia/Kabul`,label:`Kabul`},{name:`Asia/Almaty`,label:`Almaty, Astana`},{name:`Asia/Karachi`,label:`Islamabad, Karachi, Tashkent`},{name:`Asia/Yekaterinburg`,label:`Yekaterinburg`},{name:`Asia/Kolkata`,label:`Chennai, Kolkata, Mumbai, New Delhi`},{name:`Asia/Colombo`,label:`Colombo, Sri Jayawardenepura`},{name:`Asia/Kathmandu`,label:`Kathmandu`},{name:`Asia/Dhaka`,label:`Dhaka`},{name:`Asia/Rangoon`,label:`Yangon (Rangoon)`},{name:`Asia/Bangkok`,label:`Bangkok, Hanoi, Jakarta`},{name:`Asia/Krasnoyarsk`,label:`Krasnoyarsk, Novosibirsk`},{name:`Asia/Hong_Kong`,label:`Beijing, Chongqing, Hong Kong, Urumqi`},{name:`Asia/Irkutsk`,label:`Irkutsk, Ulaanbaatar`},{name:`Asia/Singapore`,label:`Kuala Lumpur, Perth, Singapore, Taipei`},{name:`Asia/Tokyo`,label:`Osaka, Sapporo, Tokyo`},{name:`Asia/Seoul`,label:`Seoul`},{name:`Asia/Yakutsk`,label:`Yakutsk`},{name:`Australia/Adelaide`,label:`Adelaide`},{name:`Australia/Darwin`,label:`Darwin`},{name:`Australia/Brisbane`,label:`Brisbane, Guam, Port Moresby`},{name:`Australia/Sydney`,label:`Canberra, Hobart, Melbourne, Sydney, Vladivostok`},{name:`Asia/Magadan`,label:`Magadan, Soloman Is., New Caledonia`},{name:`Pacific/Auckland`,label:`Auckland, Wellington`},{name:`Pacific/Fiji`,label:`Fiji, Kamchatka, Marshall Is.`},{name:`Pacific/Kwajalein`,label:`International Date Line West`}],ts=e=>{let t={timeZone:e,timeZoneName:`longOffset`};try{let e=new Intl.DateTimeFormat(`en-GB`,t).formatToParts(new Date).find(e=>e.type===`timeZoneName`)?.value;if(!e)return{offsetString:null,offsetMinutes:0};let n=e.match(/^GMT([+-])(\d{2}):(\d{2})$/);if(!n)return{offsetString:e,offsetMinutes:0};let[,r,i,a]=n,o=parseInt(i,10),s=parseInt(a,10),c=r===`+`?o*60+s:-(o*60+s);return{offsetString:c===0?`GMT`:`GMT ${r}${o}:${s.toString().padStart(2,`0`)}`,offsetMinutes:c}}catch{return{offsetString:null,offsetMinutes:0}}},ns=(e,t)=>`(${t}) ${e}`,rs=()=>es.map(({name:e,label:t})=>{let{offsetString:n,offsetMinutes:r}=ts(e);return{name:e,label:n?ns(t,n):t,offsetMinutes:r}}).sort((e,t)=>e.offsetMinutes-t.offsetMinutes),is=({timezone:e})=>{let[t,n]=(0,q.useState)(ta(e));return(0,q.useEffect)(()=>{let t=setInterval(()=>{n(ta(e))},1e3);return()=>{clearInterval(t)}},[e]),(0,J.jsxs)(J.Fragment,{children:[`The local time here is currently `,t]})},as=j(({keywords:e})=>{let[t,n]=(0,q.useState)(!1),{localSettings:r,isEditing:i,saveState:a,handleSave:o,handleCancel:s,updateSetting:c,handleEditingChange:l}=M(),[u]=W(r,[`timezone`]),d=rs().map(e=>({value:e.name,label:e.label})),f=d.find(e=>e.value===u),p=e=>{c(`timezone`,e||null),l(!0)};return(0,J.jsx)(Y,{description:`Set the time and date of your publication, used for all published posts`,hideEditButton:!0,isEditing:i,keywords:e,navid:`timezone`,saveState:a,testId:`timezone`,title:`Site timezone`,onCancel:s,onEditingChange:l,onSave:o,children:(0,J.jsx)(I,{columns:1,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{children:`Site timezone`}),(0,J.jsxs)($e,{open:t,onOpenChange:n,children:[(0,J.jsx)(Mt,{"aria-label":`Site timezone`,"data-testid":`timezone-select`,children:(0,J.jsx)(rt,{children:f?.label})}),(0,J.jsx)(Ct,{children:(0,J.jsx)(fn,{i18n:{searchPlaceholder:`Search timezones...`},isMultiSelect:!1,options:d,values:u?[u]:[],autoCloseOnSelect:!0,onChange:e=>{e[0]&&p(e[0])},onClose:()=>n(!1)})})]}),(0,J.jsx)(H,{children:(0,J.jsx)(is,{timezone:u})})]})})})},`Site timezone`),os=j(({keywords:e})=>{let{errors:t,localSettings:n,isEditing:r,saveState:i,focusRef:a,clearError:o,handleSave:s,handleCancel:c,updateSetting:l,handleEditingChange:u}=M({onValidate:()=>d?d.length<4?{title:`Please use a site title longer than 3 characters.`}:d.length>63?{title:`Please use a site title shorter than 63 characters.`}:{}:{title:`Please enter a site title.`}}),[d,f]=W(n,[`title`,`description`]),p=e=>{l(`title`,e.target.value)},m=e=>{l(`description`,e.target.value)},h=(0,J.jsxs)(I,{columns:2,children:[(0,J.jsxs)(yt,{children:[(0,J.jsx)(vt,{children:`Site title`}),(0,J.jsx)(he,{className:`mt-1`,children:d})]}),(0,J.jsxs)(yt,{children:[(0,J.jsx)(vt,{children:`Site description`}),(0,J.jsx)(he,{className:`mt-1`,children:f})]})]}),g=(0,J.jsxs)(I,{className:`[&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:[(0,J.jsxs)(U,{"data-invalid":!!t.title||void 0,children:[(0,J.jsx)(V,{htmlFor:`site-title`,children:`Site title`}),(0,J.jsx)(K,{ref:a,"aria-invalid":!!t.title||void 0,id:`site-title`,maxLength:63,placeholder:`Site title`,value:d,onChange:p,onKeyDown:()=>o(`title`)}),t.title?(0,J.jsx)(an,{children:t.title}):(0,J.jsx)(H,{children:`The name of your site`})]}),(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{htmlFor:`site-description`,children:`Site description`}),(0,J.jsx)(K,{id:`site-description`,maxLength:200,placeholder:`Site description`,value:f,onChange:m}),(0,J.jsx)(H,{children:`A short description, used in your theme, meta data and search results`})]})]});return(0,J.jsx)(Y,{description:`The details used to identify your publication around the web`,isEditing:r,keywords:e,navid:`general`,saveState:i,testId:`title-and-description`,title:`Title & description`,onCancel:c,onEditingChange:u,onSave:s,children:r?g:h})},`Title & description`),ss=({user:e})=>{let{updateRoute:t}=A(),{currentUser:n}=L(),r=()=>{gn(n)&&t({route:`staff/${e.slug}`})};return e?(0,J.jsxs)(`div`,{className:de(`group flex gap-3`,gn(n)&&`cursor-pointer`),"data-testid":`owner-user`,onClick:r,children:[(0,J.jsx)(or,{className:`size-12`,email:e.email,name:e.name,src:e.profile_image}),(0,J.jsxs)(`div`,{className:`flex flex-col`,children:[(0,J.jsxs)(`span`,{children:[e.name,` — `,(0,J.jsx)(`strong`,{children:`Owner`}),` `,gn(n)&&(0,J.jsx)(G,{className:`ml-2 h-auto p-0 text-green group-hover:visible hover:text-green md:invisible`,type:`button`,variant:`link`,onClick:e=>{e.stopPropagation(),r()},children:`View profile`})]}),(0,J.jsx)(`span`,{className:`text-sm text-grey-700`,children:e.email})]})]}):null},cs=({users:e,groupname:t})=>{let{updateRoute:n}=A(),{currentUser:r}=L(),i=e=>{n({route:`staff/${e.slug}`})};return!e||!e.length?(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)(Un,{})}),`No `,t,` found.`]}):(0,J.jsx)(F,{children:e.map(e=>{let t=e.name||``;e.status===`inactive`&&(t=`${t} (Suspended)`);let n=gn(r)||vn(r)&&hn(e)||r.id===e.id;return(0,J.jsxs)(It,{className:`min-h-16`,"data-testid":`user-list-item`,hover:n,children:[(0,J.jsx)(ut,{asChild:!0,children:n?(0,J.jsxs)(`button`,{className:`flex w-full items-center gap-3 py-3 text-left`,id:`list-item-${e.id}`,type:`button`,onClick:()=>i(e),children:[(0,J.jsx)(or,{className:`size-10`,email:e.email,name:e.name,src:e.profile_image}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block`,children:t}),(0,J.jsx)(`span`,{className:`block truncate text-sm text-muted-foreground`,children:e.email})]})]}):(0,J.jsxs)(`div`,{className:`flex w-full items-center gap-3 py-3`,id:`list-item-${e.id}`,children:[(0,J.jsx)(or,{className:`size-10`,email:e.email,name:e.name,src:e.profile_image}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block`,children:t}),(0,J.jsx)(`span`,{className:`block truncate text-sm text-muted-foreground`,children:e.email})]})]})}),n&&(0,J.jsx)(ot,{visibility:`hover`,children:(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,size:`sm`,type:`button`,variant:`link`,onClick:()=>i(e),children:`Edit`})})]},e.id)})})},ls=({invite:e})=>{let[t,n]=(0,q.useState)(``),[r,i]=(0,q.useState)(``),{mutateAsync:a}=Je(),{mutateAsync:o}=Dt(),s=h(),c=`Revoke`;t===`progress`&&(c=`Revoking...`);let l=`Resend`;return r===`progress`&&(l=`Resending...`),(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsx)(G,{className:`text-destructive hover:text-destructive`,disabled:t===`progress`,size:`sm`,type:`button`,variant:`ghost`,onClick:async()=>{try{n(`progress`),await a(e.id),y.success(`Invitation revoked`,{description:e.email})}catch(e){s(e)}finally{n(``)}},children:c}),(0,J.jsx)(G,{className:`ml-2`,disabled:r===`progress`,size:`sm`,type:`button`,variant:`ghost`,onClick:async()=>{try{i(`progress`),await a(e.id),await o({email:e.email,roleId:e.role_id}),y.success(`Invitation resent`,{description:e.email})}catch(e){s(e)}finally{i(``)}},children:l})]})},us=({users:e})=>!e||!e.length?(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)(Un,{})}),`No invitations found.`]}):(0,J.jsx)(F,{children:e.map(e=>(0,J.jsxs)(It,{className:`min-h-16`,"data-testid":`user-invite`,hover:!1,children:[(0,J.jsxs)(ut,{className:`flex items-center gap-3 py-3`,id:`list-item-${e.id}`,children:[(0,J.jsx)(or,{className:`size-10`,email:e.email}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block`,children:e.email}),(0,J.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:e.role})]})]}),(0,J.jsx)(ot,{children:(0,J.jsx)(ls,{invite:e})})]},e.id))}),ds=j(({keywords:e,highlight:t=!0})=>{let{totalUsers:n,totalInvites:r,users:i,ownerUser:a,adminUsers:o,editorUsers:s,authorUsers:c,contributorUsers:l,invites:u,hasNextPage:d,fetchNextPage:f,invitesHasNextPage:p,fetchNextInvitePage:m}=Ce(),{updateRoute:g}=A(),{settings:_,config:v,currentUser:y}=L(),b=()=>{g(`staff/invite`)},x=(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{b()},children:`Invite people`}),S=zt().getParam(`tab`),[C,w]=(0,q.useState)(S||`administrators`);(0,q.useEffect)(()=>{S&&w(S)},[S]);let T=e=>{g(`staff?tab=${e}`),w(e)},ee=Qn(_,`require_email_mfa`)||!1,{mutateAsync:E}=Gn(),te=h();return(0,J.jsxs)(Y,{customButtons:x,highlightOnModalClose:t,keywords:e,navid:`staff`,testId:`users`,title:`Staff`,children:[(0,J.jsx)(ss,{user:a}),(i.length>1||u.length>0)&&(0,J.jsxs)(Xt,{"data-testid":`user-tabview`,value:C,variant:`underline`,onValueChange:T,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsxs)(R,{value:`administrators`,children:[`Administrators`,o.length>0&&(0,J.jsx)(Jt,{children:k(o.length)})]}),(0,J.jsxs)(R,{value:`editors`,children:[`Editors`,s.length>0&&(0,J.jsx)(Jt,{children:k(s.length)})]}),(0,J.jsxs)(R,{value:`authors`,children:[`Authors`,c.length>0&&(0,J.jsx)(Jt,{children:k(c.length)})]}),(0,J.jsxs)(R,{value:`contributors`,children:[`Contributors`,l.length>0&&(0,J.jsx)(Jt,{children:k(l.length)})]}),(0,J.jsxs)(R,{value:`invited`,children:[`Invited`,r>0&&(0,J.jsx)(Jt,{children:k(r)})]})]}),(0,J.jsx)(z,{value:`administrators`,children:(0,J.jsx)(cs,{groupname:`administrators`,users:o})}),(0,J.jsx)(z,{value:`editors`,children:(0,J.jsx)(cs,{groupname:`editors`,users:s})}),(0,J.jsx)(z,{value:`authors`,children:(0,J.jsx)(cs,{groupname:`authors`,users:c})}),(0,J.jsx)(z,{value:`contributors`,children:(0,J.jsx)(cs,{groupname:`contributors`,users:l})}),(0,J.jsx)(z,{value:`invited`,children:(0,J.jsx)(us,{users:u})})]}),d&&C!==`invited`&&(0,J.jsx)(G,{type:`button`,variant:`link`,onClick:()=>f(),children:`Load more (showing ${k(i.length)}/${k(n)} users)`}),p&&C===`invited`&&(0,J.jsx)(G,{type:`button`,variant:`link`,onClick:()=>m(),children:`Load more (showing ${k(u.length)}/${k(r)} invites)`}),v?.security?.staffDeviceVerification&&gn(y)&&(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 ${i.length>1||u.length>0?`-mt-6`:``}`,children:[(0,J.jsx)(Mn,{}),(0,J.jsxs)(`div`,{className:`flex items-baseline justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col`,children:[(0,J.jsx)(`span`,{className:`text-[1.5rem] font-semibold tracking-tight`,children:`Security settings`}),(0,J.jsx)(`span`,{children:`Require email 2FA codes to be used on all staff logins`})]}),(0,J.jsx)(B,{"aria-label":`Require email 2FA codes on staff logins`,checked:ee,onCheckedChange:async e=>{try{await E([{key:`require_email_mfa`,value:e}])}catch(e){te(e)}}})]})]})]})},`Staff`),X={titleAndDescription:[`general`,`title and description`,`site title`,`site description`,`title & description`],timeZone:[`general`,`time`,`date`,`site timezone`,`time zone`],publicationLanguage:[`general`,`publication language`,`locale`],users:[`general`,`users and permissions`,`roles`,`staff`,`invite people`,`contributors`,`editors`,`authors`,`administrators`],metadata:[`general`,`metadata`,`title`,`description`,`search`,`engine`,`google`,`meta data`,`twitter card`,`structured data`,`rich cards`,`x card`,`social`,`facebook card`,`llms`,`ai`,`ai search engines`,`llm`],socialAccounts:[`general`,`social accounts`,`facebook`,`twitter`,`threads`,`bluesky`,`mastodon`,`tiktok`,`youtube`,`instagram`,`linkedin`,`structured data`,`rich cards`],analytics:[`general`,`analytics`,`tracking`,`privacy`,`membership`]},fs=()=>(0,J.jsxs)(Qi,{keywords:Object.values(X).flat(),title:`General settings`,children:[(0,J.jsx)(os,{keywords:X.titleAndDescription}),(0,J.jsx)(as,{keywords:X.timeZone}),(0,J.jsx)(qo,{keywords:X.publicationLanguage}),(0,J.jsx)(ds,{keywords:X.users}),(0,J.jsx)(Yo,{keywords:X.metadata}),(0,J.jsx)($o,{keywords:X.socialAccounts}),(0,J.jsx)(Uo,{keywords:X.analytics})]}),ps=({keywords:e})=>{let{updateRoute:t}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`embed-signup-form/show`)},children:`Embed`}),description:`Grow your audience from anywhere on the web`,keywords:e,navid:`embed-signup-form`,testId:`embed-signup-form`,title:`Signup forms`})},ms=``+new URL(`explore-default-logo-P7UjmPqe.png`,import.meta.url).href,hs=``+new URL(`ghost-explore-BuZQ7HbF.png`,import.meta.url).href,gs=j(({keywords:e})=>{let{settings:t}=L(),{mutateAsync:n}=Gn(),r=h(),{updateRoute:i}=A(),{refetch:a}=Kr({searchParams:{limit:`1`}}),[o,s]=(0,q.useState)(0);(0,q.useEffect)(()=>{(async()=>{let{data:e}=await a(),t=e?.meta?.pagination?.total||0;s(t)})()},[a]);let[c,l]=W(t,[`accent_color`,`icon`]),{localSettings:u,siteData:d}=M(),[f,p]=W(u,[`title`,`description`]),m=!!Qn(t,`explore_ping`),g=!!Qn(t,`explore_ping_growth`),_=d?.url,v=_?.replace(/^https?:\/\//,``).replace(/\/?$/,``),y=c||`#F6414E`,b=async(e,t)=>{let i=[{key:e,value:t}];try{await n(i)}catch(e){r(e)}};return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(B,{"aria-label":`Ghost Explore`,checked:m,"data-testid":`explore-toggle`,onCheckedChange:e=>b(`explore_ping`,e)}),description:`Promote your site across Ghost's website and publishing network`,keywords:e,navid:`explore`,testId:`explore`,title:`Ghost Explore`,children:m?(0,J.jsxs)(I,{columns:1,children:[(0,J.jsx)(Mn,{}),(0,J.jsxs)(U,{orientation:`horizontal`,children:[(0,J.jsxs)(on,{children:[(0,J.jsx)(V,{htmlFor:`explore-growth-toggle`,children:`Share growth data to rank higher?`}),(0,J.jsx)(H,{children:`Enabling this will use your revenue/member growth data to rank your site more highly on Ghost Explore. Total member count will be displayed publicly, other data will be kept private.`})]}),(0,J.jsx)(B,{checked:!!g,"data-testid":`explore-growth-toggle`,id:`explore-growth-toggle`,onCheckedChange:e=>b(`explore_ping_growth`,e)})]}),(0,J.jsx)(`div`,{className:`-mx-5 -mb-5 flex flex-col items-center bg-grey-50 px-7 py-10 md:-mx-7 md:-mb-7`,"data-testid":`explore-preview`,children:(0,J.jsxs)(`div`,{className:`relative w-full max-w-[320px] rounded-lg bg-white p-6 text-black shadow-lg`,children:[(0,J.jsx)(`div`,{className:`absolute top-2.5 right-3 text-sm text-grey-300 uppercase`,children:`Preview`}),l?(0,J.jsx)(`div`,{className:`size-9 rounded-sm bg-cover bg-center`,style:{backgroundImage:`url(${l})`}}):(0,J.jsx)(`div`,{className:`flex aspect-square size-10 items-center justify-center overflow-hidden rounded-full p-1 text-white`,style:{backgroundColor:y},children:(0,J.jsx)(`img`,{className:`h-auto w-8`,src:ms})}),(0,J.jsx)(`div`,{className:`mt-3 text-lg font-semibold tracking-tight`,children:f}),p&&(0,J.jsx)(`div`,{className:`mt-0.5 leading-tight text-grey-700`,children:p}),(0,J.jsxs)(`a`,{className:`group mt-8 flex h-6 w-full items-center justify-between gap-5 hover:cursor-pointer`,href:_,rel:`noopener noreferrer`,target:`_blank`,children:[(0,J.jsx)(`span`,{className:`font-semibold`,children:v}),g?(0,J.jsxs)(`span`,{className:`rounded-sm bg-black px-2 py-0.5 text-sm font-semibold text-white`,"data-testid":`explore-members-count`,children:[ue(o),`\xA0`,o===1?`member`:`members`]}):(0,J.jsx)(`span`,{className:`flex size-5 items-center justify-center rounded-full border border-black text-black group-hover:bg-black group-hover:text-white`,children:(0,J.jsx)(Xr,{className:`size-2.5`})})]})]})}),(0,J.jsxs)(`div`,{className:`-mx-5 -mb-5 flex items-center justify-between gap-4 rounded-b-xl border-t border-[rgba(142,66,255,0.1)] bg-gradient-to-tr from-[rgba(142,66,255,0.07)] to-[rgba(142,66,255,0.02)] p-6 px-7 md:-mx-7 md:-mb-7`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col`,children:[(0,J.jsx)(`span`,{className:`font-medium`,children:`Get featured on the Ghost.org homepage`}),(0,J.jsx)(`span`,{className:`text-pretty text-black/80 dark:text-white/80`,children:`Send us a quote we can use to highlight your site`})]}),(0,J.jsxs)(G,{className:`border border-purple bg-transparent text-purple hover:bg-purple/5 hover:text-purple`,type:`button`,variant:`outline`,onClick:()=>{i(`explore/testimonial`)},children:[(0,J.jsx)(kr,{}),`Send testimonial`]})]})]}):(0,J.jsx)(`img`,{src:hs})})},`Ghost Explore`),_s=``+new URL(`network-C2Wz-Sfw.png`,import.meta.url).href,vs=j(({keywords:e})=>{let{settings:t}=L(),{mutateAsync:n}=Gn(),r=h(),{updateRoute:i}=A(),a=We()?.isDisabled(`limitSocialWeb`),{subdir:o}=d(),[s]=W(t,[`is_private`]),c=!!o,l=[`localhost`,`127.0.0.1`,`::1`].includes(window.location.hostname),u=Ka.default.isIP(window.location.hostname),f=a||c||l||u,p=!!s,m=f||p,[g]=W(t,[`social_web`]),_=!!g&&!m;return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(B,{"aria-label":`Network`,checked:_,disabled:m,onCheckedChange:async e=>{let t=[{key:`social_web`,value:e}];try{await n(t)}catch(e){r(e)}}}),description:`Distribute posts to the social web, so people can discover and follow your content across BlueSky, Threads, Mastodon, Flipboard, WordPress, and more.`,keywords:e,navid:`network`,testId:`network`,title:`Network`,children:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(I,{columns:1,children:m&&(0,J.jsxs)(`div`,{className:`flex w-full gap-1.5 rounded-md border border-border-default bg-muted p-3`,children:[(0,J.jsx)(mr,{className:`size-4`}),(0,J.jsx)(`div`,{className:`-mt-0.5`,children:p?(0,J.jsxs)(J.Fragment,{children:[`Network is automatically disabled while your site is in `,(0,J.jsx)(`span`,{className:`cursor-pointer text-green`,onClick:()=>i(`members`),children:`private mode`})]}):(0,J.jsxs)(J.Fragment,{children:[`You need to configure a supported custom domain to use this feature. `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/social-web/#custom-domain-required`,rel:`noopener noreferrer`,target:`_blank`,children:`Help →`})]})})]})}),(0,J.jsx)(`div`,{className:`-mx-5 -mb-5 overflow-hidden rounded-b-xl md:-mx-7 md:-mb-7`,children:(0,J.jsx)(`img`,{className:`dark:opacity-90`,src:_s})})]})})},`Network`),ys=j(({keywords:e})=>{let{updateRoute:t}=A(),{settings:n,config:r}=L(),{data:{offers:i=[]}={}}=ce(),{data:{tiers:a}={}}=ii(),o=oi(a||[]),s=i.filter(e=>e.redemption_type===`signup`);return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,disabled:!Jr(n,r),size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`offers/edit`)},children:`Manage offers`}),description:(0,J.jsxs)(J.Fragment,{children:[`Create discounts & coupons to boost new subscriptions and retain existing members.`,(0,J.jsx)(`span`,{children:` `}),(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/offers`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]}),keywords:e,navid:`offers`,testId:`offers`,title:`Offers`,children:o.length===0&&s.length===0?(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`span`,{children:`You must have an active tier to create an offer.`}),` `,(0,J.jsx)(G,{className:`h-auto p-1 font-normal`,type:`button`,variant:`link`,onClick:()=>{t(`/tiers`)},children:`Manage tiers`})]}):``})},`Portal settings`),bs=({incomingRecommendation:e,stats:t})=>{let{updateRoute:n}=A(),r=(0,q.useMemo)(()=>{let n=e.url;try{n=new URL(e.url).hostname.replace(/^www\./,``)}catch{}return t.reduce((e,t)=>t.source===n?e+t.signups:e,0)},[t,e.url]),i=()=>{n({route:`recommendations/add?url=${e.url}`})},a=()=>{window.open(e.url,`_blank`)},o=r===1?`free member`:`free members`;return(0,J.jsxs)(It,{"data-testid":`incoming-recommendation-list-item`,children:[(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsx)(`button`,{className:`flex w-full text-left`,type:`button`,onClick:a,children:(0,J.jsxs)(Ut,{className:`w-full`,gap:`none`,children:[(0,J.jsx)(`div`,{className:`grow py-3 pr-6`,children:(0,J.jsxs)(Ut,{className:`group`,gap:`md`,children:[(0,J.jsx)(He,{favicon:e.favicon,featured_image:e.featured_image,title:e.title||e.url}),(0,J.jsx)(`span`,{className:`line-clamp-1 font-medium`,children:e.title||e.url})]})}),(0,J.jsx)(`div`,{className:`hidden py-3 pr-6 text-left whitespace-nowrap md:block`,children:r===0?(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}):(0,J.jsx)(`div`,{className:`mr-2`,children:(0,J.jsx)(`span`,{children:k(r)})})}),(0,J.jsx)(`div`,{className:`hidden w-[1%] py-3 pr-6 whitespace-nowrap md:block`,children:r===0?null:(0,J.jsx)(`div`,{className:`-mt-px text-left`,children:(0,J.jsx)(`span`,{className:`-mb-px inline-block min-w-[60px] text-left whitespace-nowrap text-muted-foreground lowercase`,children:o})})}),e.recommending_back&&(0,J.jsx)(`div`,{className:`w-[1%] py-3 pr-6 whitespace-nowrap md:invisible md:group-hover/action-list-item:visible`,children:(0,J.jsx)(`div`,{className:`mt-1 text-right whitespace-nowrap text-muted-foreground`,children:`Recommending`})})]})})}),!e.recommending_back&&(0,J.jsx)(ot,{visibility:`hover`,children:(0,J.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`ghost`,onClick:i,children:`Recommend back`})})})]})},xs=({incomingRecommendations:e,stats:t,showMore:n,isLoading:r})=>r?(0,J.jsx)(`div`,{className:`flex justify-center p-5`,children:(0,J.jsx)(hr,{size:`md`})}):e.length?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(F,{children:e.map(e=>(0,J.jsx)(bs,{incomingRecommendation:e,stats:t},e.id))}),n?.hasMore&&(0,J.jsx)(`div`,{className:`border-t border-border pt-2`,children:(0,J.jsx)(G,{className:`h-auto p-0 text-green hover:text-green`,type:`button`,variant:`link`,onClick:n.loadMore,children:`Show all`})})]}):(0,J.jsx)(Xn,{children:(0,J.jsx)(`span`,{className:`max-w-[40ch] text-center`,children:`No one’s recommended you yet. Once they do, you’ll find them here along with how many memberships they’ve driven.`})}),Ss=({recommendation:e})=>{let{route:t}=A(),n=()=>{N.show(et,{pathName:t,animate:!1,recommendation:e})},r=e.one_click_subscribe,i=r&&!!e.count?.subscribers,a=(i?e.count?.subscribers:e.count?.clicks)||0,o=a===1?`signup`:`signups`,s=a===1?`click`:`clicks`;return(0,J.jsx)(It,{className:`group`,"data-testid":`recommendation-list-item`,children:(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsxs)(`button`,{className:`flex w-full text-left`,type:`button`,onClick:n,children:[(0,J.jsx)(`div`,{className:`grow py-3 pr-6`,children:(0,J.jsxs)(Ut,{gap:`md`,children:[(0,J.jsx)(He,{isGhostSite:r,...e}),(0,J.jsx)(`span`,{className:`line-clamp-1 font-medium`,children:e.title})]})}),(0,J.jsx)(`div`,{className:`hidden py-3 pr-6 text-left whitespace-nowrap md:block`,children:a===0?(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}):(0,J.jsxs)(`div`,{className:`flex items-center`,children:[(0,J.jsx)(`div`,{className:`mr-2`,children:(0,J.jsx)(`span`,{children:k(a)})}),(0,J.jsxs)(`div`,{className:`text-muted-foreground lowercase`,children:[(0,J.jsx)(`span`,{children:i?o:s}),(0,J.jsx)(`span`,{className:`invisible group-hover:visible`,children:` from you`})]})]})})]})})})},Cs=({recommendations:e,showMore:t,isLoading:n})=>{let{siteData:r}=M(),i=`${r?.url.replace(/\/$/,``)}/#/portal/recommendations`,{updateRoute:a}=A(),o=()=>{a(`recommendations/add`)},[s,c]=(0,q.useState)(!1);return n?(0,J.jsx)(`div`,{className:`flex justify-center p-5`,children:(0,J.jsx)(hr,{size:`md`})}):e.length?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(F,{children:e.map(e=>(0,J.jsx)(Ss,{recommendation:e},e.id))}),(0,J.jsxs)(`div`,{className:`border-t border-border pt-2`,children:[t?.hasMore&&(0,J.jsx)(G,{className:`mb-2 h-auto p-0 text-green hover:text-green`,type:`button`,variant:`link`,onClick:t.loadMore,children:`Show all`}),(0,J.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`Shared with new members after signup, or anytime using `,(0,J.jsx)(`a`,{className:`text-green hover:text-green-400`,href:i,rel:`noopener noreferrer`,target:`_blank`,children:`this link`}),(0,J.jsx)(Qr,{delayDuration:0,children:(0,J.jsxs)(dr,{children:[(0,J.jsx)(pr,{asChild:!0,children:(0,J.jsx)(G,{"aria-label":s?`Copied`:`Copy`,className:`ml-1 size-6 align-middle leading-none`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>{navigator.clipboard.writeText(i),c(!0),setTimeout(()=>c(!1),2e3)},children:s?(0,J.jsx)(Vn,{className:`size-3.5! text-green`}):(0,J.jsx)(Zn,{className:`size-3.5! text-muted-foreground`})})}),(0,J.jsx)(Wr,{children:s?`Copied`:`Copy link`})]})})]})]})]}):(0,J.jsxs)(Xn,{children:[(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`secondary`,onClick:()=>{o()},children:`Add first recommendation`}),(0,J.jsxs)(`span`,{className:`mt-2 max-w-[40ch] text-center text-sm`,children:[`Need inspiration? `,(0,J.jsx)(`a`,{className:`text-green hover:text-green-400`,href:`https://ghost.org/explore`,rel:`noopener noreferrer`,target:`_blank`,children:`Explore thousands of sites`})]})]})},ws=j(({keywords:e})=>{let{saveState:t,handleSave:n}=M(),{data:{meta:r,recommendations:a}={},isLoading:o,hasNextPage:s,fetchNextPage:c}=Vt({searchParams:{include:`count.clicks,count.subscribers`,order:`created_at desc`,limit:`5`},getNextPageParams:(e,t)=>{if(!e.meta)return;let{limit:n,page:r,pages:i}=e.meta.pagination;if(r>=i)return;let a=typeof n==`number`&&n<100?1:r+1;return{...t,page:a.toString(),limit:`100`}},placeholderData:i}),l={hasMore:!!s,loadMore:c},{data:{recommendations:u,meta:d}={},isLoading:f,hasNextPage:p,fetchNextPage:m}=Fe({searchParams:{limit:`5`,order:`created_at desc`},getNextPageParams:(e,t)=>{if(!e.meta)return;let{limit:n,page:r,pages:i}=e.meta.pagination;if(r>=i)return;let a=typeof n==`number`&&n<100?1:r+1;return{...t,page:a.toString(),limit:`100`}},placeholderData:i}),{data:{stats:h}={},isLoading:g}=ci({}),_={hasMore:!!p,loadMore:m},[v,y]=(0,q.useState)(`your-recommendations`),b=(0,J.jsx)(J.Fragment,{children:`Recommend any publication that your audience will find valuable, and find out when others are recommending you.`}),{updateRoute:x}=A(),S=()=>{x(`recommendations/add`)};return(0,J.jsxs)(Y,{beta:!0,customButtons:(0,J.jsx)(G,{className:`mt-[-5px] hidden md:!visible md:!block`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{S()},children:`Add recommendation`}),description:b,keywords:e,navid:`recommendations`,saveState:t,testId:`recommendations`,title:`Recommendations`,onSave:n,children:[(0,J.jsx)(`div`,{className:`flex justify-center rounded border border-green px-4 py-2 md:hidden`,children:(0,J.jsx)(G,{type:`button`,variant:`ghost`,onClick:()=>{S()},children:`Add recommendation`})}),(0,J.jsxs)(Xt,{value:v,variant:`underline`,onValueChange:y,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsxs)(R,{value:`your-recommendations`,children:[`Your recommendations`,typeof r?.pagination?.total==`number`&&(0,J.jsx)(Jt,{children:k(r.pagination.total)})]}),(0,J.jsxs)(R,{value:`recommending-you`,children:[`Recommending you`,typeof d?.pagination?.total==`number`&&(0,J.jsx)(Jt,{children:k(d.pagination.total)})]})]}),(0,J.jsx)(z,{value:`your-recommendations`,children:(0,J.jsx)(Cs,{isLoading:o,recommendations:a??[],showMore:l})}),(0,J.jsx)(z,{value:`recommending-you`,children:(0,J.jsx)(xs,{incomingRecommendations:u??[],isLoading:f||g,showMore:_,stats:h??[]})})]})]})},`Recommendations`),Z={network:[`growth`,`network`,`activitypub`,`blog`,`fediverse`,`sharing`],explore:[`ghost explore`,`explore`,`growth`,`share`,`list`,`listing`],recommendations:[`growth`,`recommendations`,`recommend`,`blogroll`],embedSignupForm:[`growth`,`embeddable signup form`,`embeddable form`,`embeddable sign up form`,`embeddable sign up`],offers:[`growth`,`offers`,`discounts`,`coupons`,`promotions`]},Ts=()=>{let{config:e,settings:t}=L(),n=Jr(t||[],e||{});return(0,J.jsxs)(Qi,{keywords:[Z.network,Z.explore,Z.recommendations,Z.embedSignupForm,...n?[Z.offers]:[]].flat(),title:`Growth`,children:[(0,J.jsx)(vs,{keywords:Z.network}),(0,J.jsx)(gs,{keywords:Z.explore}),(0,J.jsx)(ws,{keywords:Z.recommendations}),(0,J.jsx)(ps,{keywords:Z.embedSignupForm}),n&&(0,J.jsx)(ys,{keywords:Z.offers})]})},Es=[{value:`public`,label:`Public`,hint:`Anyone can visit and read the website`},{value:`private`,label:`Private`,hint:`Access code required`}],Ds=[{value:`all`,label:`Public`,hint:`Anyone can sign up and log in`},{value:`paid`,label:`Paid-members only`,hint:`A paid Stripe subscription is required to sign up`},{value:`invite`,label:`Invite-only`,hint:`People can sign in but won't be able to sign up`},{value:`none`,label:`Nobody`,hint:`Disable all member features, including newsletters`}],Os=[{value:`public`,label:`Public`,hint:`All site visitors to your site, no login required`},{value:`members`,label:`Members only`,hint:`All logged-in members`},{value:`paid`,label:`Paid-members only`,hint:`Only logged-in members with an active Stripe subscription`},{value:`tiers`,label:`Specific tiers`,hint:`Members with any of the selected tiers`}],ks=[{value:`all`,label:`All members`,hint:`Logged-in members`},{value:`paid`,label:`Paid-members only`,hint:`Only logged-in members with an active Stripe subscription`},{value:`off`,label:`Nobody`,hint:`Disable commenting completely`}],As=`Pre-launch mode`,js=`During your free trial, a private access code is required to browse your site. When you're ready to launch, pick a plan to upgrade your account and make everything public.`,Ms=`#/pro/billing/plans`,Ns=e=>e.map(e=>(0,J.jsx)(Qt,{value:e.value,children:(0,J.jsxs)(`span`,{className:`flex flex-col`,children:[(0,J.jsx)(`span`,{children:e.label}),(0,J.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.hint})]})},e.value)),Ps=(e,t)=>e.find(e=>e.value===t)?.label,Fs=j(({keywords:e})=>{let[t,n]=q.useState(!1),{settings:r,config:i}=L(),a=We()?.isDisabled(`publicSiteAccess`),o=i.hostSettings?.limits?.publicSiteAccess,s=o?.title||As,c=o?.error||js,l=o?.upgradeUrl||Ms,u=er(r,`is_private`)||er(r,`password`),{mutateAsync:d}=Tr(),[f,p]=q.useState(!1),{localSettings:m,isEditing:h,saveState:g,siteData:_,handleSave:v,handleCancel:b,updateSetting:x,handleEditingChange:S,errors:C,clearError:w}=M({onValidate:()=>T&&!ee?{password:`Enter an access code`}:{}}),[T,ee,E,te,ne,re]=W(m,[`is_private`,`password`,`members_signup_access`,`default_content_visibility`,`default_content_visibility_tiers`,`comments_enabled`]),[ie,ae]=W(r,[`is_private`,`public_hash`]),D=u?!0:T,{data:{tiers:oe}={}}=ii(),se=[{label:`Active Tiers`,options:oe?.filter(({active:e})=>e).map(e=>({value:e.id,label:e.name}))||[]},{label:`Archived Tiers`,options:oe?.filter(({active:e})=>!e).map(e=>({value:e.id,label:e.name}))||[]}],ce=JSON.parse(ne||`[]`),le=se.flatMap(e=>e.options.map(t=>({...t,metadata:{group:e.label}}))),O=le.filter(e=>ce.includes(e.value)).map(e=>e.label).join(`, `),k=ie&&D&&_?.url&&ae?`${_.url.replace(/\/$/,``)}/${ae}/rss`:null,ue=e=>{x(`default_content_visibility_tiers`,JSON.stringify(e))};return(0,J.jsx)(Y,{description:`Set up who can browse your site, subscribe, read posts, and comment`,isEditing:h,keywords:e,navid:`members`,saveState:g,testId:`access`,title:`Access`,hideEditButton:!0,onCancel:b,onEditingChange:S,onSave:v,children:(0,J.jsxs)(I,{className:`gap-y-4`,columns:1,children:[a&&(0,J.jsx)(`div`,{className:`-m-5 overflow-hidden p-5`,children:(0,J.jsxs)(Pr,{className:`mb-2 flex w-full cursor-default flex-col gap-4 border-0 p-6 pt-5 transition-none hover:translate-y-0 hover:scale-100 hover:shadow-[-7px_-6px_42px_8px_rgb(75_225_226_/_28%),7px_6px_42px_8px_rgb(202_103_255_/_32%)] md:flex-row md:items-center md:justify-between dark:hover:shadow-[-7px_-6px_42px_8px_rgb(75_225_226_/_36%),7px_6px_42px_8px_rgb(202_103_255_/_38%)]`,size:`lg`,variant:`gradient`,children:[(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`text-base font-semibold`,children:s}),(0,J.jsx)(`div`,{className:`mt-2 text-gray-700`,children:c})]}),(0,J.jsx)(G,{className:`shrink-0 self-start md:self-center`,asChild:!0,children:(0,J.jsx)(`a`,{href:l,children:`Upgrade now`})})]})}),(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Who should be able to browse your site?`}),(0,J.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,J.jsxs)(U,{className:u?`relative z-10`:void 0,"data-disabled":u||void 0,children:[(0,J.jsx)(V,{className:`sr-only`,children:`Who should be able to browse your site?`}),(0,J.jsxs)(nn,{disabled:u,value:D?`private`:`public`,onValueChange:e=>{x(`is_private`,e===`private`),S(!0)},children:[(0,J.jsx)(en,{"aria-label":`Who should be able to browse your site?`,className:`border-transparent bg-muted hover:bg-muted`,"data-testid":`site-visibility-select`,children:(0,J.jsx)(tn,{children:Ps(Es,D?`private`:`public`)})}),(0,J.jsx)($t,{children:Ns(Es)})]})]})})]}),(D||u)&&(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row md:items-start`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px] md:pt-3`,children:`What access code should visitors use?`}),(0,J.jsxs)(`div`,{className:`w-full md:flex-1`,children:[(0,J.jsxs)(U,{className:u?`relative z-10`:void 0,"data-disabled":u||void 0,"data-invalid":!!C.password||void 0,children:[(0,J.jsx)(V,{className:`sr-only`,htmlFor:`site-access-code`,children:`Access code`}),(0,J.jsxs)(dn,{className:`h-[var(--control-height)] border-transparent bg-muted`,"data-disabled":u||void 0,"data-invalid":!!C.password||void 0,children:[(0,J.jsx)(cn,{"aria-invalid":!!C.password||void 0,"data-testid":`site-access-code`,disabled:u,id:`site-access-code`,placeholder:`Enter access code`,value:ee||``,onChange:e=>{x(`password`,e.target.value),S(!0)},onKeyDown:()=>w(`password`)}),(0,J.jsx)(ln,{align:`inline-end`,children:(0,J.jsx)(un,{"aria-label":`Regenerate access code`,"data-testid":`regenerate-access-code`,disabled:f,size:`icon-xs`,onClick:async()=>{p(!0);try{let e=(await d(null)).settings.find(e=>e.key===`password`)?.value;typeof e==`string`&&(x(`password`,e),w(`password`))}catch{y.error(`Could not regenerate access code`)}finally{p(!1)}},children:(0,J.jsx)(qr,{"aria-hidden":!0})})})]}),C.password&&(0,J.jsx)(an,{children:C.password})]}),k&&!u&&(0,J.jsxs)(H,{className:`mt-2`,children:[`A private RSS feed is available `,(0,J.jsx)(`a`,{className:`text-primary`,href:k,rel:`noopener noreferrer`,target:`_blank`,children:`here`})]})]})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Who should be able to subscribe to your site?`}),(0,J.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{className:`sr-only`,children:`Who should be able to subscribe to your site?`}),(0,J.jsxs)(nn,{value:E,onValueChange:e=>{x(`members_signup_access`,e),S(!0)},children:[(0,J.jsx)(en,{"aria-label":`Who should be able to subscribe to your site?`,className:`border-transparent bg-muted hover:bg-muted`,"data-testid":`subscription-access-select`,children:(0,J.jsx)(tn,{children:Ps(Ds,E)})}),(0,J.jsx)($t,{children:Ns(Ds)})]})]})})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Who should have access to new posts?`}),(0,J.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{className:`sr-only`,children:`Who should have access to new posts?`}),(0,J.jsxs)(nn,{value:te,onValueChange:e=>{x(`default_content_visibility`,e),S(!0)},children:[(0,J.jsx)(en,{"aria-label":`Who should have access to new posts?`,className:`border-transparent bg-muted hover:bg-muted`,"data-testid":`default-post-access-select`,children:(0,J.jsx)(tn,{children:Ps(Os,te)})}),(0,J.jsx)($t,{children:Ns(Os)})]})]})})]}),te===`tiers`&&(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Select specific tiers`}),(0,J.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{className:`sr-only`,children:`Select specific tiers`}),(0,J.jsxs)($e,{open:t,onOpenChange:n,children:[(0,J.jsx)(Mt,{"aria-label":`Select specific tiers`,className:`border-transparent bg-muted hover:bg-muted`,"data-testid":`tiers-select`,children:(0,J.jsx)(rt,{placeholder:!O,children:O||`Select...`})}),(0,J.jsx)(Ct,{children:(0,J.jsx)(fn,{groupBy:e=>e.metadata?.group,options:le,values:ce,onChange:e=>{ue(e),S(!0)}})})]})]})})]}),(0,J.jsx)(Mn,{}),(0,J.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,J.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Who can comment on posts?`}),(0,J.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(V,{className:`sr-only`,children:`Who can comment on posts?`}),(0,J.jsxs)(nn,{value:re,onValueChange:e=>{x(`comments_enabled`,e),S(!0)},children:[(0,J.jsx)(en,{"aria-label":`Who can comment on posts?`,className:`border-transparent bg-muted hover:bg-muted`,"data-testid":`commenting-select`,children:(0,J.jsx)(tn,{children:Ps(ks,re)})}),(0,J.jsx)($t,{children:Ns(ks)})]})]})})]})]})})},`Access`),Is={short_text:rr,long_text:Yn,address:Rn},Ls=({type:e,className:t})=>(0,J.jsx)(Is[e]||rr,{className:t}),Rs=mi.map(e=>({value:e.id,label:e.label})),zs=e=>mi.find(t=>t.id===e)||mi[0],Bs=({userTypeId:e})=>(0,J.jsx)(`span`,{className:`flex w-5 shrink-0 items-center justify-center`,children:(0,J.jsx)(Ls,{className:`size-4`,type:zs(e).id})}),Vs=e=>(0,J.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(Bs,{userTypeId:e.value}),(0,J.jsx)(`span`,{children:e.label})]}),Hs=N.create(({field:e})=>{let t=Ge(),{mutateAsync:n}=ui(),{mutateAsync:r}=di(),{mutateAsync:i}=li(),a=h(),o=!!e,{formState:s,updateForm:c,handleSave:u,errors:d,clearError:f,setErrors:p,okProps:m}=w({initialState:{name:e?.name||``,userTypeId:e?pi(e).id:mi[0].id},savingDelay:500,onValidate:e=>{let t={};return e.name.trim()||(t.name=`Enter a name for the field`),t},onSave:async t=>{e?await r({key:e.key,name:t.name.trim()}):await n({name:t.name.trim(),type:zs(t.userTypeId).id})},onSaveError:e=>{if(e instanceof v&&e.data?.errors?.[0]?.property===`name`){p({name:l(e,`Invalid name`)});return}a(e)}}),g=e?.status===`archived`,_=Rs.find(e=>e.value===s.userTypeId),b=(0,J.jsx)(G,{className:`text-destructive hover:text-destructive`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t.remove(),N.show(P,{title:`Archive custom field`,prompt:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`mb-6`,children:[`Your custom field `,(0,J.jsx)(`strong`,{children:e.name}),` will no longer show up on your members, collect new information, or appear in filters.`]}),(0,J.jsx)(`div`,{children:`Values already collected for this field will remain unchanged.`})]}),okLabel:`Archive`,okVariant:`destructive`,onOk:async t=>{try{await r({key:e.key,status:`archived`}),t?.remove(),y.success(`Custom field archived`)}catch(e){y.error(`Failed to archive the custom field`),a(e,{withToast:!1})}}})},children:`Archive`}),x=(0,J.jsx)(G,{className:`text-green hover:text-green`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t.remove(),N.show(P,{title:`Reactivate custom field`,prompt:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`mb-6`,children:[`Reactivating `,(0,J.jsx)(`strong`,{children:e.name}),` will immediately make it available again on your members, for collecting, and in filters.`]}),(0,J.jsx)(`div`,{children:`Values already collected for this field will remain unchanged.`})]}),okLabel:`Reactivate`,onOk:async t=>{try{await r({key:e.key,status:`active`}),t?.remove(),y.success(`Custom field reactivated`)}catch(e){y.error(`Failed to reactivate the custom field`),a(e,{withToast:!1})}}})},children:`Reactivate`}),S;o&&(S=g?x:b);let C=(0,J.jsxs)(Nn,{children:[(0,J.jsx)(Vr,{asChild:!0,children:(0,J.jsx)(G,{"aria-label":`Menu`,size:`icon`,type:`button`,variant:`ghost`,children:(0,J.jsx)(qn,{})})}),(0,J.jsx)(Fr,{align:`end`,className:`z-[9999]`,children:(0,J.jsxs)(sr,{className:`text-destructive focus:text-destructive`,onSelect:()=>{t.remove(),N.show(P,{title:`Delete custom field`,prompt:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`strong`,{children:e.name}),` and every value collected from your members will be permanently deleted from the database. This can’t be undone.`]}),okLabel:`Delete`,okVariant:`destructive`,onOk:async t=>{try{await i(e.key),t?.remove(),y.success(`Custom field deleted`)}catch(e){y.error(`Failed to delete the custom field`),a(e,{withToast:!1})}}})},children:[(0,J.jsx)(Hn,{className:`size-4`}),`Delete custom field`]})})]});return(0,J.jsx)(tt,{buttonsDisabled:m.disabled,cancelLabel:o?`Close`:`Cancel`,leftButton:S,okLabel:m.label||`Save`,okVariant:m.variant,size:`sm`,testId:`custom-field-modal`,title:o?`Edit custom field`:`Add custom field`,topRightContent:g?C:void 0,onOk:async()=>{try{await u()&&t.remove()}catch{}},children:(0,J.jsxs)(rn,{className:`mt-10 gap-8 [&_:where(input)]:h-[var(--control-height)] [&_:where(input)]:border-transparent [&_:where(input)]:bg-muted`,children:[(0,J.jsxs)(U,{"data-invalid":!!d.name||void 0,children:[(0,J.jsx)(V,{htmlFor:`custom-field-name`,children:`Name`}),(0,J.jsx)(K,{"aria-invalid":!!d.name||void 0,autoComplete:`off`,id:`custom-field-name`,placeholder:`Enter custom field name`,value:s.name,autoFocus:!0,onChange:e=>c(t=>({...t,name:e.target.value})),onKeyDown:()=>f(`name`)}),d.name&&(0,J.jsx)(an,{children:d.name})]}),(0,J.jsxs)(U,{"data-disabled":o||void 0,children:[(0,J.jsx)(V,{children:`Type`}),(0,J.jsxs)(nn,{disabled:o,value:s.userTypeId,onValueChange:e=>{c(t=>({...t,userTypeId:zs(e).id}))},children:[(0,J.jsx)(en,{"aria-label":`Type`,"data-testid":`custom-field-type`,children:(0,J.jsx)(tn,{placeholder:`Select type`,children:_&&Vs(_)})}),(0,J.jsx)($t,{children:Rs.map(e=>(0,J.jsx)(Qt,{value:e.value,children:Vs(e)},e.value))})]}),o&&(0,J.jsx)(H,{children:`Type can’t be changed after creation`})]})]})})}),Us=5,Ws=({fields:e,showAll:t,onShowAll:n,openModal:r})=>e.length===0?(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)(lr,{})}),`No custom fields found.`]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(F,{children:(t?e:e.slice(0,Us)).map(e=>{let t=pi(e);return(0,J.jsxs)(It,{"data-testid":`custom-field-list-item`,children:[(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsxs)(`button`,{className:`flex w-full items-center gap-3 py-3 text-left`,type:`button`,onClick:()=>r(e),children:[(0,J.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted`,children:(0,J.jsx)(Ls,{className:`size-[18px]`,type:t.id})}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block font-semibold`,children:e.name}),(0,J.jsx)(`span`,{className:`block text-sm text-muted-foreground`,children:t.label})]})]})}),(0,J.jsx)(ot,{children:(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,size:`sm`,type:`button`,variant:`link`,onClick:()=>r(e),children:`Edit`})})]},e.key)})}),!t&&e.length>Us&&(0,J.jsx)(`div`,{className:`flex items-center gap-2 border-t border-border pt-2 font-bold text-green hover:opacity-80`,children:(0,J.jsx)(`button`,{type:`button`,onClick:n,children:`Show all`})})]}),Gs=j(({keywords:e})=>{let{data:t}=fi({enabled:Te(`membersCustomFields`)}),n=t?.members_custom_fields||[],[r,i]=(0,q.useState)(`active-fields`),[a,o]=(0,q.useState)(!1),[s,c]=(0,q.useState)(!1),l=n.filter(e=>e.status===`active`),u=n.filter(e=>e.status===`archived`),d=(0,q.useRef)({active:0,archived:0});(0,q.useEffect)(()=>{l.length>d.current.active&&d.current.active>0&&o(!0),u.length>d.current.archived&&d.current.archived>0&&c(!0),d.current={active:l.length,archived:u.length}},[l.length,u.length]);let f=e=>N.show(Hs,{field:e});return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{size:`sm`,type:`button`,variant:`ghost`,onClick:()=>f(),children:`Add custom field`}),description:`Create and manage custom fields to store extra information about your members`,keywords:e,navid:`custom-fields`,testId:`custom-fields`,title:`Custom fields`,children:n.length>0&&(0,J.jsxs)(Xt,{value:r,variant:`underline`,onValueChange:i,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`active-fields`,children:`Active`}),(0,J.jsx)(R,{value:`archived-fields`,children:`Archived`})]}),(0,J.jsx)(z,{value:`active-fields`,children:(0,J.jsx)(Ws,{fields:l,openModal:f,showAll:a,onShowAll:()=>o(!0)})}),(0,J.jsx)(z,{value:`archived-fields`,children:(0,J.jsx)(Ws,{fields:u,openModal:f,showAll:s,onShowAll:()=>c(!0)})})]})})},`Custom fields`),Ks=j(({keywords:e})=>{let{siteData:t}=L(),n=`${t?.url.replace(/\/$/,``)}/#/portal/gift`;return(0,J.jsx)(Y,{description:(0,J.jsxs)(J.Fragment,{children:[`Allow your readers to share your work by purchasing a gift subscription for a friend or colleague. `,(0,J.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/gift-subscriptions/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]}),keywords:e,navid:`gift-subscriptions`,testId:`gift-subscriptions`,title:`Gift subscriptions`,hideEditButton:!0,children:(0,J.jsx)(I,{columns:1,children:(0,J.jsxs)(pe,{value:n,children:[(0,J.jsx)(At,{children:`Shareable link`}),(0,J.jsxs)(Pt,{children:[(0,J.jsx)(gt,{"data-testid":`gift-url`}),(0,J.jsxs)(st,{children:[(0,J.jsx)(G,{"data-testid":`preview-shareable-link`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{window.open(n,`_blank`)},children:`Preview`}),(0,J.jsx)(xt,{copiedLabel:`Copied`,"data-testid":`copy-shareable-link`,children:`Copy link`})]})]})]})})})},`Gift subscriptions`),qs=()=>{let{settings:e,siteData:t}=L(),[n,r=!1,i=!1]=W(e,[`members_signup_access`,`donations_enabled`,`recommendations_enabled`]);if(typeof n!=`string`)throw TypeError(`members_signup_access should be a string`);if(typeof r!=`boolean`)throw TypeError(`donations_enabled should be a boolean`);if(typeof i!=`boolean`)throw TypeError(`recommendations_enabled should be a boolean`);return S({siteUrl:t.url,membersSignupAccess:n,donationsEnabled:r,recommendationsEnabled:i})},Js={useFileUpload:te,fileTypes:ie},Ys=({delay:e})=>{let[t,n]=(0,q.useState)(!1);return(0,q.useEffect)(()=>{let t=setTimeout(()=>n(!0),e);return()=>clearTimeout(t)},[e]),(0,J.jsx)(`div`,{className:`flex h-64 items-center justify-center transition-opacity ${t?`opacity-100`:`opacity-0`}`,children:(0,J.jsx)(hr,{size:`lg`})})},Xs=O(`pb-10 text-[1.6rem] leading-[1.6] tracking-[-0.01em]`,`dark:text-white dark:selection:bg-[rgba(88,101,116,0.99)]`,`[&_.koenig-lexical-editor-input-placeholder]:font-sans! [&_.koenig-lexical-editor-input-placeholder]:text-[1.6rem] [&_.koenig-lexical-editor-input-placeholder]:tracking-tight`,`[&_:is(h2,h3)]:dark:text-white`,`[&_.koenig-lexical_input]:text-[1.4rem]`,`[&_[data-kg-plus-button]]:top-[-4px]`,`[&_[data-kg-card-selected]]:isolate`,`[&_:is(p,blockquote,aside,ul,ol)]:tracking-tight`,`[&_figcaption_:is(p,blockquote,aside,ul,ol)]:text-[1.4rem] [&_figcaption_:is(p,blockquote,aside,ul,ol)]:tracking-[.025em]`,`[&_figcaption_p]:mb-0`,`[&_:is(h1)]:text-[36px] [&_:is(h1,h2,h3,h4,h5,h6)]:mb-[0.5em] [&_:is(h2)]:text-[32px] [&_:is(h3)]:text-[26px] [&_:is(h4)]:text-[21px] [&_:is(h5)]:text-[19px] [&_:is(h6)]:text-[19px]`,`[&_:is(hr)]:pt-0`,`[&_p]:mb-4 [&_strong]:font-semibold`,`[&_[data-kg-settings-panel]_p]:!mb-0`,`[&_.not-kg-prose>div]:font-sans! [&_.not-kg-prose>div]:text-[1.6rem]! [&_.not-kg-prose>div]:leading-[1.6]! [&_.not-kg-prose>div]:tracking-tight!`,`[&_.kg-inherit-styles_p]:mb-0!`,`[&_.kg-inherit-styles]:pt-[3px]!`,`[&_.koenig-lexical-cta-label_p]:!text-[12.5px]`),Zs=({editor:e,darkMode:t,cardConfig:n,initialEditorState:r,placeholder:i,className:a,registerAPI:o,onChange:s})=>{let c=e.read().EmailEditor;return(0,J.jsx)(`div`,{className:O(`koenig-react-editor w-full`,Xs,a),children:(0,J.jsx)(c,{cardConfig:n,className:`koenig-lexical koenig-lexical-editor-input`,darkMode:t,fileUploader:Js,initialEditorState:r,placeholderText:i,registerAPI:o,onChange:s})})},Qs=q.memo(({value:e,placeholder:t,className:n,onChange:r})=>{let i=(0,q.useRef)(null),o=(0,q.useRef)(e),{unsplashConfig:s}=a(),c=E(),{config:l,settings:u}=L(),{fetchAutocompleteLinks:d,searchLinks:f}=qs(),p=C(),m=l.klipy?.apiKey?l.klipy:null,{fetchKoenigLexical:h,darkMode:g}=qt(),_=(0,q.useMemo)(()=>{if(!h)throw Error(`Koenig Lexical loader is not available`);return me(h)},[h]),[v]=W(u,[`transistor`]),y=(0,q.useMemo)(()=>({unsplash:s,pinturaConfig:c,klipy:m,fetchEmbed:p,fetchAutocompleteLinks:d,searchLinks:f,feature:{transistor:v},visibilitySettings:`none`}),[s,c,m,p,d,f,v]),b=(0,q.useCallback)(e=>{i.current=e},[]),x=(0,q.useCallback)(e=>{r&&e&&typeof e==`object`&&r(JSON.stringify(e))},[r]),S=(0,q.useCallback)(e=>{(e.metaKey||e.ctrlKey)&&e.key===`k`&&e.stopPropagation()},[]);return(0,J.jsx)(`div`,{className:`h-full`,onKeyDown:S,onMouseDown:e=>{i.current&&se(i.current,e)},children:(0,J.jsx)(_t,{name:`email-editor`,children:(0,J.jsx)(q.Suspense,{fallback:(0,J.jsx)(Ys,{delay:200}),children:(0,J.jsx)(Zs,{cardConfig:y,className:n,darkMode:g,editor:_,initialEditorState:o.current,placeholder:t,registerAPI:b,onChange:x})})})})}),$s=({previewState:e})=>{let[t,n]=(0,q.useState)(null),[r,i]=(0,q.useState)(!1),a=(0,q.useRef)(!1),o=(0,q.useRef)(null),s=(0,q.useRef)(null),c=(0,q.useRef)(null),l=(0,q.useRef)(null);function u(){s.current?.disconnect(),s.current=null,c.current!==null&&(window.cancelAnimationFrame(c.current),c.current=null),l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null)}(0,q.useEffect)(()=>(u(),a.current=!1,i(!1),n(null),()=>{u()}),[e.status===`success`?e.html:``,e.status]);function d(){let e=o.current,t=e?.contentDocument;if(!e||!t)return;t.documentElement.style.overflowY=`hidden`,t.body.style.overflowY=`hidden`;let r=Math.max(t.documentElement?.scrollHeight||0,t.body?.scrollHeight||0,t.documentElement?.offsetHeight||0,t.body?.offsetHeight||0);r>0&&(n(e=>e===r?e:r),!a.current&&l.current===null&&(l.current=window.requestAnimationFrame(()=>{l.current=window.requestAnimationFrame(()=>{l.current=null,a.current=!0,i(!0)})})))}function f(){c.current!==null&&window.cancelAnimationFrame(c.current),c.current=window.requestAnimationFrame(()=>{c.current=null,d()})}function p(){let e=o.current,t=e?.contentDocument;if(!(!e||!t)&&(u(),f(),typeof ResizeObserver<`u`)){let e=new ResizeObserver(()=>{f()});e.observe(t.documentElement),e.observe(t.body),s.current=e}}return(0,J.jsxs)(`div`,{className:`relative w-full`,"data-testid":`welcome-email-preview`,children:[(e.status===`loading`||e.status===`success`&&!r)&&(0,J.jsx)(`div`,{className:`flex min-h-full items-start justify-center pt-24`,"data-testid":`welcome-email-preview-loading`,style:t?{height:`${t}px`}:void 0,children:(0,J.jsx)(`div`,{className:`flex h-64 items-center justify-center`,children:(0,J.jsx)(hr,{size:`lg`})})}),e.status===`success`&&(0,J.jsx)(`div`,{"aria-hidden":!r,className:O(`w-full`,!r&&`pointer-events-none absolute top-0 left-0 opacity-0`),children:(0,J.jsx)(`iframe`,{ref:o,className:`w-full rounded bg-white`,"data-testid":`welcome-email-preview-iframe`,sandbox:`allow-same-origin allow-popups allow-popups-to-escape-sandbox`,srcDoc:e.html,style:{height:t?`${t}px`:`600px`},title:`Welcome email preview`,onLoad:p})}),(e.status===`error`||e.status===`invalid`)&&(0,J.jsx)(`div`,{className:`flex h-full items-center justify-center px-4`,"data-testid":`welcome-email-preview-error`,children:(0,J.jsx)(an,{children:e.message})})]})},ec=e=>{if(!e)return!0;try{let t=JSON.parse(e)?.root?.children;return!t||t.length===0||t.length===1&&t[0].type===`paragraph`&&(!t[0].children||t[0].children.length===0)}catch{return!0}},tc=e=>{let t={};return e.subject?.trim()||(t.subject=`A subject is required`),ec(e.lexical)&&(t.lexical=`Email content is required`),t},nc=e=>{if(typeof DOMParser>`u`)return e;let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`a[href]`).forEach(e=>{e.target=`_blank`,e.rel=`noopener noreferrer`}),`<!doctype html>${t.documentElement.outerHTML}`},rc=e=>{let t=`Failed to render preview`;return e instanceof s&&e.data?.errors?.[0]?e.data.errors[0].context||e.data.errors[0].message||t:e instanceof Error&&e.message?e.message:t},ic=({automatedEmailId:e,previewWelcomeEmail:t,setErrors:n})=>{let[r,i]=(0,q.useState)({status:`idle`}),a=(0,q.useRef)(0),o=()=>{a.current+=1,i({status:`idle`})},s=async r=>{let o=a.current+1;a.current=o;let s=tc(r);if(n(s),s.subject||s.lexical){i({status:`invalid`,message:s.subject||s.lexical});return}i({status:`loading`});try{let n=await t({id:e,subject:r.subject,lexical:r.lexical});if(a.current!==o)return;let s=n.automated_emails?.[0];if(!s?.html||!s?.plaintext||!s?.subject)throw Error(`Preview response was incomplete`);i({status:`success`,preview:{...s,html:nc(s.html)}})}catch(e){if(a.current!==o)return;i({status:`error`,message:rc(e)})}},c={status:`loading`};return r.status===`success`?c={status:`success`,html:r.preview.html}:(r.status===`error`||r.status===`invalid`)&&(c={status:r.status,message:r.message}),{previewFrameState:c,previewState:r,enterPreview:s,exitPreview:o}},ac=({automatedEmailId:e,subject:t,lexical:n,validateForm:r})=>{let{data:i}=c(),{mutateAsync:a}=re(),[o,l]=(0,q.useState)(i?.email||``),[u,d]=(0,q.useState)(``),[f,p]=(0,q.useState)(`idle`),m=(0,q.useRef)(null);return(0,q.useEffect)(()=>()=>{m.current&&clearTimeout(m.current)},[]),(0,q.useEffect)(()=>{i?.email&&l(i.email)},[i?.email]),(0,J.jsxs)(br,{align:`end`,className:`z-[9999] w-[260px] p-4`,"data-testid":`test-email-dropdown`,sideOffset:8,children:[(0,J.jsxs)(`div`,{className:`mb-3`,children:[(0,J.jsx)(`label`,{className:`mb-2 block font-semibold`,htmlFor:`test-email-input`,children:`Send test email`}),(0,J.jsx)(K,{className:`h-[36px]! border-transparent bg-muted`,id:`test-email-input`,placeholder:`you@yoursite.com`,value:o,onChange:e=>{l(e.target.value)}})]}),(0,J.jsx)(G,{className:`w-full`,disabled:f===`sending`,type:`button`,onClick:async()=>{if(d(``),!Ka.default.isEmail(o)){d(`Please enter a valid email address`);return}if(!r()){d(`Please complete the required fields`);return}p(`sending`);try{await a({id:e,email:o,subject:t,lexical:n}),p(`sent`),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>p(`idle`),2e3)}catch(e){p(`idle`);let t;e instanceof s&&e.data&&e.data.errors[0]?t=e.data.errors[0].context||e.data.errors[0].message:e instanceof Error&&(t=e.message),d(t||`Failed to send test email`)}},children:f===`sent`?`Sent`:f===`sending`?`Sending...`:`Send`}),u&&(0,J.jsx)(an,{className:`mt-2`,children:u})]})},oc=q.forwardRef(({title:e,centeredHeaderContent:t,headerActions:n,children:r,className:i,isEditMode:a=!1},o)=>(0,J.jsxs)(`div`,{ref:o,className:O(`flex size-full flex-col gap-0 overflow-hidden p-0`,a?`bg-white`:`bg-gray-100`,`dark:bg-gray-950`,i),children:[(0,J.jsxs)(`div`,{className:`sticky top-0 grid shrink-0 grid-cols-[1fr_auto_1fr] items-center border-b border-gray-200 bg-white px-5 py-3 dark:border-gray-900 dark:bg-gray-950`,children:[(0,J.jsx)(`h3`,{className:`justify-self-start text-xl font-semibold`,children:e}),(0,J.jsx)(`div`,{className:`justify-self-center`,children:t}),(0,J.jsx)(`div`,{className:`flex items-center gap-2 justify-self-end`,children:n})]}),(0,J.jsx)(`div`,{className:`flex h-[clamp(0px,calc(100dvh-320px),82vh)] min-h-0 grow flex-col overflow-y-auto [scrollbar-gutter:stable]`,children:r})]}));oc.displayName=`EmailPreviewModalContent`;var sc=({children:e,className:t})=>(0,J.jsx)(`div`,{className:O(`relative isolate z-20 mx-auto w-full max-w-[780px] rounded-t-lg border border-b-0 border-gray-200 bg-white px-6 py-4 transition-[max-width,padding] duration-300 ease-out motion-reduce:transition-none dark:border-grey-900 dark:bg-grey-950`,t),children:e}),cc=({children:e,className:t})=>(0,J.jsx)(`div`,{className:O(`mx-auto flex w-full max-w-[780px] grow rounded-b-lg transition-[max-width,height,padding] duration-300 ease-out motion-reduce:transition-none dark:border-grey-900 dark:shadow-none`,t),children:e}),lc=N.create(({emailType:e=`free`,automatedEmail:t})=>{let n=Ge(),{settings:r,config:i}=L(),[a,o,s]=W(r,[`title`,`default_email_address`,`support_email_address`]),{updateRoute:c}=A(),{mutateAsync:l}=ae(),{mutateAsync:u}=b(),{data:d}=ne(),[f,p]=(0,q.useState)(!1),[m,g]=(0,q.useState)(`edit`),[_,v]=(0,q.useState)(null),y=(0,q.useRef)(t?.lexical||``),x=(0,q.useRef)(!1),S=h(),{resolvedSenderName:C,resolvedSenderEmail:T,resolvedReplyToEmail:ee,hasDistinctReplyTo:E}=To(d?.automated_emails||[],{config:i,defaultEmailAddress:o,siteTitle:a,supportEmailAddress:s}),te=`${e===`paid`?`Paid`:`Free`} members welcome email`,{confirm:re,dialogProps:ie}=Ht(),{formState:D,saveState:oe,updateForm:se,setFormState:ce,setErrors:le,handleSave:k,okProps:ue,errors:de,validate:fe}=w({initialState:{subject:t?.subject||`Welcome`,lexical:t?.lexical||``},savingDelay:500,onSave:async e=>{await l({...t,...e})},onSaveError:S,onValidate:tc}),pe=ue.label||`Save`,{previewFrameState:me,enterPreview:he,exitPreview:ge}=ic({automatedEmailId:t.id,previewWelcomeEmail:u,setErrors:le}),_e=oe===`unsaved`,ve=(0,q.useCallback)(()=>{re(_e,()=>{n.remove()})},[re,n,_e]),ye=(0,q.useRef)(k);(0,q.useEffect)(()=>{ye.current=k},[k]),(0,q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),ye.current({fakeWhenUnchanged:!0}))};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[]);let be=(0,q.useCallback)(e=>{g(e),e===`preview`?(v(null),he(D)):(p(!1),v(null),ge())},[he,ge,D]),xe=(0,q.useCallback)(e=>{if(!x.current){y.current=e,ce(t=>({...t,lexical:e}));return}e===y.current?ce(t=>({...t,lexical:e})):se(t=>({...t,lexical:e}))},[ce,se]);return(0,J.jsxs)(tt,{afterClose:()=>{c(`memberemails`)},backDropClick:!1,dirty:_e,footer:!1,header:!1,padding:!1,scrolling:!1,size:`full`,testId:`welcome-email-modal`,width:`full`,children:[(0,J.jsx)(oc,{centeredHeaderContent:(0,J.jsx)(Xt,{"data-testid":`welcome-email-mode-toggle`,value:m,variant:`segmented-sm`,onValueChange:e=>e&&be(e),children:(0,J.jsxs)(Yt,{className:`grid w-[240px] grid-cols-2 bg-gray-100 shadow-[inset_0_0_0_1px_rgba(0,0,0,0.04)]`,children:[(0,J.jsx)(R,{className:`w-full justify-center data-[state=active]:bg-white dark:data-[state=active]:bg-white dark:data-[state=active]:text-black`,"data-testid":`welcome-email-mode-edit`,value:`edit`,children:`Email content`}),(0,J.jsx)(R,{className:`w-full justify-center`,"data-testid":`welcome-email-mode-preview`,value:`preview`,children:`Preview`})]})}),className:`dark:bg-[#151719]`,headerActions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(G,{className:`font-semibold`,type:`button`,variant:`ghost`,onClick:ve,children:`Close`}),(0,J.jsx)(G,{disabled:ue.disabled,type:`button`,onClick:async()=>await k({fakeWhenUnchanged:!0}),children:pe})]}),isEditMode:m===`edit`,title:te,children:(0,J.jsxs)(`div`,{className:`flex grow flex-col items-center p-6`,children:[m===`preview`&&(0,J.jsx)(sc,{className:`border-x-0 border-t-0 border-b`,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center py-1`,children:[(0,J.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`From:`}),(0,J.jsx)(`div`,{className:`min-w-0 grow pr-4`,children:(0,J.jsxs)(`span`,{className:`flex gap-1 truncate whitespace-nowrap`,children:[(0,J.jsx)(`span`,{children:C}),(0,J.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:`<${T}>`})]})}),(0,J.jsxs)(jr,{open:f,onOpenChange:p,children:[(0,J.jsx)(yr,{asChild:!0,children:(0,J.jsxs)(G,{type:`button`,variant:`outline`,children:[(0,J.jsx)(kr,{}),`Test`]})}),f&&(0,J.jsx)(ac,{automatedEmailId:t.id,lexical:D.lexical,subject:D.subject,validateForm:fe})]})]}),E&&(0,J.jsxs)(`div`,{className:`flex items-center`,children:[(0,J.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`Reply-to:`}),(0,J.jsx)(`div`,{className:`grow text-gray-500 dark:text-gray-400`,children:ee})]}),(0,J.jsxs)(`div`,{className:`flex items-center`,children:[(0,J.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`Subject:`}),(0,J.jsxs)(`div`,{className:`grow`,children:[(0,J.jsx)(K,{className:`w-full border-transparent bg-muted`,"data-testid":`welcome-email-preview-subject`,value:_??D.subject,onChange:e=>{let t=e.target.value;v(t),se(e=>({...e,subject:t}))}}),de.subject&&(0,J.jsx)(an,{className:`mt-2`,children:de.subject})]})]})]})}),(0,J.jsxs)(cc,{className:O(m===`preview`&&`bg-white shadow-sm dark:bg-grey-950`,m===`edit`&&`px-6`,m===`edit`&&`rounded-lg`,m===`edit`&&de.lexical&&`border border-red-500`),children:[(0,J.jsx)(`div`,{className:O(`mx-auto w-full max-w-[600px] pt-10 pb-8 transition-[max-width,padding] duration-300 ease-out motion-reduce:transition-none`,m===`preview`&&`hidden`),"data-testid":`welcome-email-editor`,onKeyDown:()=>{x.current=!0},onPointerDown:()=>{x.current=!0},children:(0,J.jsx)(Qs,{className:`welcome-email-editor`,placeholder:`Begin writing your email...`,value:D.lexical,onChange:xe},t?.id||`new`)}),m===`preview`&&(0,J.jsx)($s,{previewState:me})]}),m===`edit`&&de.lexical&&(0,J.jsx)(an,{className:`mt-2 max-w-[740px]`,children:de.lexical})]})}),(0,J.jsx)(Ie,{...ie})]})}),uc=({automatedEmail:e,emailType:t,icon:n,title:r,enabled:i,isBusy:a,isInitialLoading:o,onEdit:s,onToggle:c})=>(0,J.jsxs)(It,{"data-testid":`${t}-welcome-email-row`,children:[(0,J.jsx)(ut,{asChild:!0,children:(0,J.jsxs)(`button`,{className:`flex w-full min-w-0 items-center gap-3 py-3 text-left focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none`,"data-testid":`${t}-welcome-email-preview`,type:`button`,onClick:s,children:[(0,J.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-muted`,children:(0,J.jsx)(`span`,{className:`text-muted-foreground [&>svg]:size-5`,children:n})}),(0,J.jsxs)(`span`,{className:`min-w-0 grow`,children:[(0,J.jsx)(`span`,{className:`block leading-tight font-medium`,"data-testid":`${t}-welcome-email-title`,children:r}),(0,J.jsx)(`span`,{className:`mt-1 block text-sm leading-[1.35] text-muted-foreground`,children:e.subject})]})]})}),(0,J.jsx)(ot,{children:(0,J.jsxs)(`div`,{className:`flex items-center gap-7 ${a&&!o?`pointer-events-none`:``}`,children:[o?(0,J.jsx)(`div`,{className:`h-4 w-7 rounded-full bg-muted`}):(0,J.jsx)(B,{"aria-label":`${r} welcome email`,checked:i,disabled:a,onCheckedChange:c}),(0,J.jsx)(G,{className:`h-auto p-0 font-bold text-green hover:text-green/90 hover:no-underline`,type:`button`,variant:`link`,onClick:s,children:`Edit`})]})})]}),dc=({settings:e,config:t,freeEmailForDisplay:n,paidEmailForDisplay:r,freeWelcomeEmailEnabled:i,paidWelcomeEmailEnabled:a,isBusy:o,isLoading:s,onFreeEdit:c,onFreeToggle:l,onPaidEdit:u,onPaidToggle:d})=>(0,J.jsxs)(F,{className:`border-t border-border`,children:[(0,J.jsx)(uc,{automatedEmail:n,emailType:`free`,enabled:i,icon:(0,J.jsx)(kn,{}),isBusy:o,isInitialLoading:s,title:`Free members welcome email`,onEdit:c,onToggle:l}),Jr(e,t)&&(0,J.jsx)(uc,{automatedEmail:r,emailType:`paid`,enabled:a,icon:(0,J.jsx)(xr,{}),isBusy:o,isInitialLoading:s,title:`Paid members welcome email`,onEdit:u,onToggle:d})]}),fc=j(({keywords:e})=>{let{settings:t,config:n}=L(),[r]=W(t,[`title`]),i=zt().getParam(`verifyEmail`),{data:a,isLoading:o}=ne(),{mutateAsync:s,isPending:c}=oe(),{mutateAsync:l,isPending:u}=ae(),{mutateAsync:d}=D(),f=h(),m=a?.automated_emails||[],g=o||c||u,_=m.find(e=>e.slug===_o.free),v=m.find(e=>e.slug===_o.paid),b=_?.status===`active`,x=v?.status===`active`,S=async(e,t)=>{let n=bo(e,r);return s({...n,status:t})},C=(0,q.useRef)(null);(0,q.useEffect)(()=>{if(!i||!window.location.href.includes(`memberemails`)||C.current===i)return;C.current=i;let e=()=>{let e=window.location.hash.slice(1),t=new URL(e||`/memberemails`,window.location.origin);t.searchParams.delete(`verifyEmail`);let n=t.search?`#${t.pathname}${t.search}`:`#${t.pathname}`;window.history.replaceState(null,``,`${window.location.pathname}${n}`)};(async()=>{try{let{meta:{email_verified:t}={}}=await d({token:i});e();let n=`Sender email verified`,r=(0,J.jsx)(J.Fragment,{children:`Welcome email sender settings have been updated.`});t===`sender_reply_to`&&(n=`Reply-to address verified`,r=(0,J.jsx)(J.Fragment,{children:`Welcome email reply-to address has been verified and updated.`})),N.show(P,{title:n,prompt:r,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(t){let n=`There was an error verifying your email address. Try again later.`;t instanceof p&&t.message===`Token expired`&&(n=`Verification link has expired.`),e(),N.show(P,{title:`Error verifying email address`,prompt:n,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),f(t,{withToast:!1})}})()},[f,i,d]);let w=async e=>{let t=m.find(t=>t.slug===_o[e]),n=e===`free`?`Free members`:`Paid members`;if(!g)try{t?t.status===`active`?(await l({...t,status:`inactive`}),y.success(`${n} welcome email disabled`)):(await l({...t,status:`active`}),y.success(`${n} welcome email enabled`)):(await S(e,`active`),y.success(`${n} welcome email enabled`))}catch(e){f(e)}},T=async e=>{let t=m.find(t=>t.slug===_o[e]);if(!g)if(t)N.show(lc,{emailType:e,automatedEmail:t});else try{let t=(await S(e,`inactive`))?.automated_emails?.[0];t&&N.show(lc,{emailType:e,automatedEmail:t})}catch(e){f(e)}},ee=_||xo(`free`,r),E=v||xo(`paid`,r);return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>N.show(Lo),children:`Customize`}),description:`Create and manage automated emails for your members`,keywords:e,navid:`memberemails`,testId:`memberemails`,title:`Welcome emails`,children:(0,J.jsx)(dc,{config:n,freeEmailForDisplay:ee,freeWelcomeEmailEnabled:b,isBusy:g,isLoading:o,paidEmailForDisplay:E,paidWelcomeEmailEnabled:x,settings:t,onFreeEdit:()=>T(`free`),onFreeToggle:()=>w(`free`),onPaidEdit:()=>T(`paid`),onPaidToggle:()=>w(`paid`)})})},`MemberEmails`),pc=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAcCAQAAADc8cciAAADJ0lEQVR4AYyUA2DsaBCAZ3X2s23btm3btm3btm3btm2VqyT31W3K9DfGkkjNJGaRkeZW8dpl6Zwpz295Al5i2awiCwt5nOQeGxjJUNZ9Or2i5AoRS6xQfW78f1sbTk+6UJ+SpMdEU49HeX4TS8wSWLrEAbU5qZXCDGO0MtF9xHWVB+oGZSjuh0UeipijRe2Umif8Qhd13/kubZOWtAaBZvnpaHpasY2vH4d8DJAtKoHrpOMscTk2r/A8EZNOxMBzr19fTeaJ1wGvKLS3tIrHK6847EGi0c0s8nAIezgxJkMgOf0Hqj0pqxqn1msVGf3LWnU9qx7UfqBzn+neKNqojT/P/CwxdTHX/IcLbNAGnyuv480j/mPLvLSG4WBRq3BLW8C0Zr8HyzggB2MpzS7EuN+tSD1OaEOud7su1wOEXtKAcjTxXeYrxn1GTn5nMytZl8eWRySPvF9ELSozu0ycMmLUu6QgLRXYxMqemQKVdM9jLCXoMjDXQDHqhf4jB39ynHF7W+8V2SvKaBaQl6bdinUToy5WSvI3Sxj3bMKzAAu6WzCY8VTc0jw2yfexLKnoxHrvWd4i3uIowUBGMMo+3S7G/XJFslCc/fYpdhG7PC1FZsYylV2DExnnraMNecnCbu+R3iJiGpSeJMyggTLNfsUec9qbeyejKSUoybr7be+L3PfvvjVcmVlAL3dPLpWJEx16wLs2g9JkYhGLuiYOspC58b8U0LrSnqH+6Ic25tDljS4x89i+LKICBciu3Hzd67W8FglczNOSUc/Zmeb0V8az7Hbl23rxTSKVE55qwESlCAWIo1xWt6iizz9z+d99RzFKbUJHbbk24d2Ad/JOKv1cNcnYvGerO9pSm7z+vRxJOM3+qXHFHClf52dnpjaaHZxX9rpuOFpSjIJkJSNZSEMmGlOV1+5eL3O/lKAuL3VdzGI6V5qSSnFGsJWbXGAFA2lJA7qygItMJ+Hjco91IkfiXzj+0bquBtRSW9OYNgxmGetZSB/iU/pQxkPRoupKXvn4s/I8LO1ZicqUIAfZFb/ZHtY3ZoXIEQaMMNqBRYXdgcWBAVMjAKGlEzkN2rk9AAAAAElFTkSuQmCC`,mc=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////8IX9KGAAAAFnRSTlMAQI+v38+/cCD/n3/vkFAwYBCAoLBfxGozVwAAAT1JREFUeAHd1NEO2yAMheGTBhL/idtAu73/q67VFIkRAevVpH13KDkYkGX9C9NtDiEuq/3l7wunzTR2o7RrZAH8/jA70jxKnPvPWb9ZAFb1JOBZrF/AoY4Ad5UiLP0CIat0AKam+XrkpXsLh+Na9IdaMqCKQdBp/HEQyOCqHL2A/Pokj/pdR0+ywV1NK8TLFZjUlB3WukBQxxP4Wax34KGeWHZ0vtG5QdHRIZkk2x2IGrDIhwfn46WRvFPwpIHd+VNI4/P4lg4zm9Z5NDoOB2LKOlkKQLDO/75WNe/tOWAO4VAtuZve9ljlcmgUz1lv+dIjO7ipyeqAAUlfBDZY9EUgO0zfBB6dvt/DBxDezrfa2vMqUzr3jZ0TLRTOWQ1ktdjbBME+qok0uHRrOQ5o4fldQKZxQEODMwyY/h+/ADWjEK3gLf0/AAAAAElFTkSuQmCC`,hc=({title:e,color:t,price:n})=>(0,J.jsxs)(`div`,{className:`rounded-lg bg-grey-100/70 px-3 pt-1.5 pb-3`,children:[(0,J.jsx)(`div`,{className:`font-space-grotesk text-[1.5rem] font-bold`,style:{color:t},children:e}),(0,J.jsx)(`div`,{className:`-mt-1 font-space-grotesk text-[1.7rem] font-bold`,children:n}),(0,J.jsxs)(`div`,{className:`mt-5 flex flex-col gap-1.5`,children:[(0,J.jsx)(`div`,{className:`h-1.5 w-[100%] bg-grey-300/60`}),(0,J.jsx)(`div`,{className:`h-1.5 w-[70%] bg-grey-300/60`}),(0,J.jsx)(`div`,{className:`h-1.5 w-[90%] bg-grey-300/60`})]})]}),gc=j(({keywords:e})=>{let{updateRoute:t}=A(),{settings:n}=L(),[r,i,a]=W(n,[`accent_color`,`icon`,`members_signup_access`]),o=()=>{t(`portal/edit`)},s=r||`#F6414E`;return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,disabled:a===`none`,size:`sm`,type:`button`,variant:`ghost`,onClick:o,children:`Customize`}),description:`Customize members modal signup flow`,keywords:e,navid:`portal`,testId:`portal`,title:`Signup portal`,children:(0,J.jsxs)(`div`,{className:`relative isolate -mx-5 -mb-5 hidden flex-col items-center justify-end overflow-hidden rounded-b-xl bg-grey-50 px-5 pt-6 text-black sm:visible! sm:flex! md:-mx-7 md:-mb-7`,children:[(0,J.jsx)(`div`,{className:`absolute right-6 bottom-6 flex size-12 items-center justify-center rounded-full text-white shadow-lg`,style:{backgroundColor:s},children:(0,J.jsx)(`img`,{className:`size-6`,src:mc})}),(0,J.jsxs)(`div`,{className:`grid w-full max-w-[440px] grid-cols-3 gap-5 rounded-t-xl bg-white px-9 py-6 shadow-xl`,children:[(0,J.jsxs)(`div`,{className:`col-span-3 mb-1 flex flex-col items-center justify-center`,children:[i?(0,J.jsx)(`div`,{className:`size-6 rounded-sm bg-cover bg-center`,style:{backgroundImage:`url(${i})`}}):(0,J.jsx)(`div`,{className:`flex aspect-square items-center justify-center overflow-hidden rounded-full p-1 text-white`,style:{backgroundColor:s},children:(0,J.jsx)(`img`,{className:`h-auto w-5`,src:pc})}),(0,J.jsx)(`div`,{className:`mt-1.5 font-space-grotesk text-lg font-bold`,children:`Sign up`}),(0,J.jsx)(`div`,{className:`mt-1.5 flex h-6 w-1/2 items-center rounded border border-grey-200 p-2 text-sm text-grey-700`,children:`jamie@example.com`})]}),(0,J.jsx)(hc,{color:s,price:`$0`,title:`Free`}),(0,J.jsx)(hc,{color:s,price:`$5`,title:`Silver`}),(0,J.jsx)(hc,{color:s,price:`$10`,title:`Gold`})]})]})})},`Portal settings`),_c=j(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,errors:s,clearError:c,handleEditingChange:l}=M({onValidate:()=>({})}),[u]=W(t,[`blocked_email_domains`]),d=JSON.parse(u||`[]`),[f,p]=q.useState(d.join(`
3
+ `)),m=e=>{let t=e.target.value;p(t);let r=t.split(/[\s,]+/).map(e=>e.trim().toLowerCase().split(`@`).pop()).filter(e=>e&&e.includes(`.`));o(`blocked_email_domains`,JSON.stringify(r)),n||l(!0)},h=(0,J.jsxs)(J.Fragment,{children:[`Prevent unwanted signups by blocking email domains. Add one domain per line, e.g., `,(0,J.jsx)(`code`,{children:`spam.xyz`}),` to block signups from email addresses like `,(0,J.jsx)(`code`,{children:`hello@spam.xyz`}),`.`]});return(0,J.jsx)(Y,{description:`Protect your member signups from spam`,isEditing:n,keywords:e,navid:`spam-filters`,saveState:r,testId:`spam-filters`,title:`Spam filters`,hideEditButton:!0,onCancel:a,onEditingChange:l,onSave:i,children:(0,J.jsx)(I,{columns:1,children:(0,J.jsxs)(U,{"data-invalid":!!s.blockedEmailDomains||void 0,children:[(0,J.jsx)(V,{htmlFor:`blocked-email-domains`,children:`Blocked email domains`}),(0,J.jsx)(sn,{"aria-invalid":!!s.blockedEmailDomains||void 0,className:`h-[86px] max-w-full resize-y border-transparent bg-muted`,id:`blocked-email-domains`,placeholder:`spam.xyz
4
+ junk.com`,value:f,onChange:m,onKeyDown:()=>c(`spam-filters`)}),s.blockedEmailDomains?(0,J.jsx)(an,{children:s.blockedEmailDomains}):(0,J.jsx)(H,{children:h})]})})})},`Spam Filters`),vc=de(`group/tiercard flex cursor-pointer flex-col items-start justify-between gap-4 self-stretch rounded-sm border border-transparent bg-grey-100 p-4 transition-all hover:border-grey-100 hover:bg-grey-50 hover:shadow-sm min-[900px]:min-h-[200px] dark:bg-grey-950 dark:hover:border-grey-800`),yc=({tier:e})=>{let{updateRoute:t}=A(),n=e?.currency||`USD`,r=n?lt(n):`$`;return(0,J.jsx)(`div`,{className:vc,"data-testid":`tier-card`,"data-tier":e.slug,children:(0,J.jsxs)(`div`,{className:`w-full grow`,onClick:()=>{t({route:`tiers/${e.id}`})},children:[(0,J.jsx)(`div`,{className:`text-[1.65rem] leading-tight font-bold tracking-tight text-black dark:text-white`,children:e.name}),(0,J.jsxs)(`div`,{className:`mt-2 flex items-baseline`,children:[(0,J.jsx)(`span`,{className:`ml-1 translate-y-[-3px] text-md font-bold uppercase`,children:r}),(0,J.jsx)(`span`,{className:`text-xl font-bold tracking-tighter`,children:k(at(e.monthly_price||0),{maximumFractionDigits:2})}),e.monthly_price&&e.monthly_price>0&&(0,J.jsx)(`span`,{className:`text-grey-700`,children:`/month`})]}),e.trial_days?(0,J.jsx)(`div`,{className:`mt-1 mb-4`,children:(0,J.jsx)(jt,{size:`sm`,trialDays:e.trial_days})}):``,(0,J.jsx)(`div`,{className:`mt-2 line-clamp-2 text-[1.4rem] font-medium`,children:e.description||(0,J.jsx)(`span`,{className:`opacity-30`,children:`No description`})})]})})},bc=({tab:e,tiers:t})=>{let{updateRoute:n}=A(),r=()=>{n(`tiers/add`)};return t.length?(0,J.jsxs)(`div`,{className:`mt-4 grid grid-cols-1 gap-4 min-[900px]:grid-cols-3`,children:[t.map(e=>(0,J.jsx)(yc,{tier:e},e.id)),e===`active-tiers`&&(0,J.jsx)(`button`,{className:`${vc} group cursor-pointer`,type:`button`,onClick:()=>{r()},children:(0,J.jsx)(`div`,{className:`flex size-full flex-col items-center justify-center`,children:(0,J.jsxs)(`div`,{className:`flex flex-col items-center justify-center`,children:[(0,J.jsx)(`div`,{className:`translate-y-[15px] transition-all group-hover:translate-y-0`,children:(0,J.jsx)(Gr,{className:`size-5 text-green`})}),(0,J.jsx)(`div`,{className:`mt-2 translate-y-[-10px] font-semibold text-green opacity-0 transition-all group-hover:translate-y-0 group-hover:opacity-100`,children:`Add tier`})]})})})]}):(0,J.jsxs)(Xn,{children:[(0,J.jsx)($r,{children:(0,J.jsx)(xr,{})}),`No `,e===`active-tiers`?`active`:`archived`,` tiers found.`]})},xc=({className:e,onClick:t})=>(e=de(`h-[34px] shrink-0 gap-2 px-3 font-semibold`,e),(0,J.jsxs)(G,{className:e,"data-testid":`stripe-connected`,type:`button`,variant:`outline`,onClick:t,children:[(0,J.jsx)(ir,{variant:`success`}),(0,J.jsx)(`span`,{children:`Connected to Stripe`})]})),Sc=j(({keywords:e})=>{let[t,n]=(0,q.useState)(`active-tiers`),{settings:r,config:i}=L(),{data:{tiers:a,meta:o,isEnd:s}={},fetchNextPage:c}=ii(),l=si(a||[]),u=ai(a||[]),{updateRoute:d}=A(),f=We(),p=async()=>{if(f?.isDisabled(`limitStripeConnect`)&&!Jr(r,i))try{await f.errorIfWouldGoOverLimit(`limitStripeConnect`)}catch(e){if(e instanceof Ve){N.show(Ke,{prompt:e.message||`Your current plan doesn't support Stripe Connect.`,onOk:()=>d({route:`/pro`,isExternal:!0})});return}}d(`stripe-connect`)},m=e=>[...e].sort((e,t)=>(e.monthly_price??0)-(t.monthly_price??0)),h;return h=Jr(r,i)?(0,J.jsxs)(Xt,{value:t,variant:`underline`,onValueChange:n,children:[(0,J.jsxs)(Yt,{children:[(0,J.jsx)(R,{value:`active-tiers`,children:`Active`}),(0,J.jsx)(R,{value:`archived-tiers`,children:`Archived`})]}),(0,J.jsx)(z,{value:`active-tiers`,children:(0,J.jsx)(bc,{tab:`active-tiers`,tiers:m(l)})}),(0,J.jsx)(z,{value:`archived-tiers`,children:(0,J.jsx)(bc,{tab:`archive-tiers`,tiers:m(u)})})]}):(0,J.jsx)(bc,{tab:`free-tier`,tiers:l.filter(e=>e.type===`free`)}),(0,J.jsxs)(Y,{customButtons:Jr(r,i)?(0,J.jsx)(xc,{className:`hidden tablet:!visible tablet:!inline-flex`,onClick:p}):(0,J.jsx)(nt,{className:`hidden tablet:!visible tablet:!block`,onClick:p}),description:`Set prices and paid member sign up settings`,keywords:e,navid:`tiers`,testId:`tiers`,title:`Tiers`,children:[(0,J.jsx)(`div`,{className:`w-full tablet:hidden`,children:Jr(r,i)?(0,J.jsx)(xc,{className:`w-full`,onClick:p}):(0,J.jsx)(nt,{onClick:p})}),h,s===!1&&(0,J.jsx)(G,{type:`button`,variant:`link`,onClick:()=>c(),children:`Load more (showing ${k(a?.length||0)}/${k(o?.pagination.total||0)} tiers)`})]})},`Tiers`),Cc=1e4,wc=j(({keywords:e})=>{let[t,n]=(0,q.useState)(!1),{confirm:r,dialogProps:i}=Ht(),{localSettings:a,siteData:o,updateSetting:s,saveState:c,handleSave:l,handleCancel:u,focusRef:d,errors:f,validate:p,clearError:m,handleEditingChange:h}=M({onValidate:()=>({donationsSuggestedAmount:Tt(v,g,{maxAmount:Cc})})}),[g=`USD`,_=`500`]=W(a,[`donations_currency`,`donations_suggested_amount`]),v=parseInt(_),y=St(v,e=>T(`donations_suggested_amount`,e.toString())),b=`${o?.url.replace(/\/$/,``)}/#/portal/support`,x=Ft().flatMap(e=>e.options.map(t=>({...t,metadata:{groupKey:e.key,groupLabel:e.label}})));(0,q.useEffect)(()=>{p()},[g]);let[S,C]=(0,q.useState)(!1);(0,q.useEffect)(()=>{a.some(e=>e.dirty)&&!S&&(C(!0),h(!0))},[a,S,h]);let w=()=>{r(c===`unsaved`,()=>window.open(b,`_blank`))},T=(e,t)=>{s(e,t)};return(0,J.jsxs)(Y,{description:`Give your audience a simple way to support your work with one-time payments.`,isEditing:S,keywords:e,navid:`tips-and-donations`,saveState:c,testId:`tips-and-donations`,title:`Tips & donations`,hideEditButton:!0,onCancel:()=>{u(),C(!1)},onEditingChange:C,onSave:async()=>{await l()&&C(!1)},children:[(0,J.jsxs)(I,{columns:1,children:[(0,J.jsxs)(U,{className:`max-w-[180px]`,"data-invalid":!!f.donationsSuggestedAmount||void 0,children:[(0,J.jsx)(V,{htmlFor:`donations-suggested-amount`,children:`Suggested amount`}),(0,J.jsxs)(dn,{className:`h-[var(--control-height)] border-transparent bg-muted`,"data-invalid":!!f.donationsSuggestedAmount||void 0,children:[(0,J.jsx)(cn,{ref:d,"aria-invalid":!!f.donationsSuggestedAmount||void 0,id:`donations-suggested-amount`,inputMode:`decimal`,placeholder:`5`,value:y.value,onBlur:()=>{y.onBlur(),p()},onChange:e=>y.onChange(e.target.value),onKeyDown:()=>m(`donationsSuggestedAmount`)}),(0,J.jsx)(ln,{align:`inline-end`,children:(0,J.jsxs)(jr,{open:t,onOpenChange:n,children:[(0,J.jsx)(yr,{asChild:!0,children:(0,J.jsxs)(un,{"aria-expanded":t,"aria-label":`Currency`,role:`combobox`,children:[g,(0,J.jsx)(bn,{className:`size-3.5 opacity-50`})]})}),(0,J.jsx)(br,{align:`end`,className:`z-[9999] w-64 p-0`,children:(0,J.jsx)(fn,{groupBy:e=>({key:e.metadata?.groupKey,label:e.metadata?.groupLabel}),i18n:{searchPlaceholder:`Search currencies...`},isMultiSelect:!1,options:x,values:[g],autoCloseOnSelect:!0,onChange:e=>{e[0]&&T(`donations_currency`,e[0])},onClose:()=>n(!1)})})]})})]}),f.donationsSuggestedAmount&&(0,J.jsx)(an,{children:f.donationsSuggestedAmount})]}),(0,J.jsxs)(pe,{value:b,children:[(0,J.jsx)(At,{children:`Shareable link`}),(0,J.jsxs)(Pt,{children:[(0,J.jsx)(gt,{"data-testid":`donate-url`}),(0,J.jsxs)(st,{children:[(0,J.jsx)(G,{"data-testid":`preview-shareable-link`,size:`sm`,type:`button`,variant:`ghost`,onClick:w,children:`Preview`}),(0,J.jsx)(xt,{copiedLabel:`Copied`,"data-testid":`copy-shareable-link`,children:`Copy link`})]})]})]})]}),(0,J.jsxs)(`div`,{className:`items-center-mt-1 flex`,children:[`All tips and donations are subject to Stripe's `,(0,J.jsx)(`a`,{className:`ml-1 font-medium text-green`,href:`https://ghost.org/help/tips-donations/`,rel:`noopener noreferrer`,target:`_blank`,children:` tipping policy`}),`.`]}),(0,J.jsx)(Ie,{...i})]})},`Tips & donations`),Q={access:[`membership`,`default`,`access`,`subscription`,`post`,`membership`,`comments`,`commenting`,`signup`,`sign up`,`spam`,`filters`,`prevention`,`prevent`,`block`,`domains`,`email`,`password protection`,`lock site`,`private site`,`private site mode`,`make this site private`],tiers:[`membership`,`tiers`,`payment`,`paid`,`stripe`],portal:[`membership`,`portal`,`signup`,`sign up`,`signin`,`sign in`,`login`,`account`,`membership`,`support`,`email`,`address`,`support email address`,`support address`],giftSubscriptions:[`membership`,`gift`,`gifts`,`gift subscriptions`,`present`,`share`,`shareable link`],memberEmails:[`membership`,`signup`,`welcome email`,`welcome emails`,`email`,`new user`,`new member`,`account`],tips:[`membership`,`tips`,`donations`,`one time`,`payment`],customFields:[`membership`,`custom fields`,`fields`,`member fields`,`custom field`]},Tc=()=>{let{config:e,settings:t}=L(),[n,r]=W(t,[`donations_enabled`,`paid_members_enabled`]),i=Jr(t||[],e||{}),a=Te(`automations`),o=Te(`membersCustomFields`);return(0,J.jsxs)(Qi,{keywords:[Q.access,Q.tiers,Q.portal,...r?[Q.giftSubscriptions]:[],...a?[]:[Q.memberEmails],...n&&i?[Q.tips]:[],...o?[Q.customFields]:[]].flat(),title:`Membership`,children:[(0,J.jsx)(Fs,{keywords:Q.access}),(0,J.jsx)(_c,{keywords:Q.access}),(0,J.jsx)(Sc,{keywords:Q.tiers}),(0,J.jsx)(gc,{keywords:Q.portal}),r&&(0,J.jsx)(Ks,{keywords:Q.giftSubscriptions}),!a&&(0,J.jsx)(fc,{keywords:Q.memberEmails}),n&&i&&(0,J.jsx)(wc,{keywords:Q.tips}),o&&(0,J.jsx)(Gs,{keywords:Q.customFields})]})},Ec=j(({keywords:e})=>{let{updateRoute:t}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`announcement-bar/edit`)},children:`Customize`}),description:`Highlight important updates or offers`,keywords:e,navid:`announcement-bar`,testId:`announcement-bar`,title:`Announcement bar`})},`Announcement bar`),Dc=j(({keywords:e})=>{let[t,n]=(0,q.useState)(null),[r,i]=(0,q.useState)(!1),{checkThemeLimitError:a}=Rt(),{route:o,updateRoute:s}=A(),{data:c}=Hr(),l=c?.themes.find(e=>e.active);(0,q.useEffect)(()=>{(async()=>{i(!0);let e=await a();n(e),i(!1)})()},[a]);let u=async()=>{r||(t?N.show(Ke,{prompt:t,onOk:()=>s({route:`/pro`,isExternal:!0})}):s(`design/change-theme`))},f=(0,J.jsx)(I,{children:(0,J.jsxs)(`div`,{className:`flex flex-col`,children:[(0,J.jsx)(Gt,{as:`h6`,className:`text-base`,weight:`semibold`,children:`Active theme`}),(0,J.jsxs)(`div`,{className:`mt-1 flex w-full items-center justify-between gap-4`,children:[(0,J.jsx)(`div`,{children:l?`${l.name} (v${l.package?.version||`1.0`})`:`Loading...`}),(0,J.jsx)(`div`,{className:`-mr-3`,children:(0,J.jsxs)(Nn,{children:[(0,J.jsx)(Vr,{asChild:!0,children:(0,J.jsx)(G,{"aria-label":`Menu`,disabled:!l,size:`icon`,type:`button`,variant:`ghost`,children:(0,J.jsx)(qn,{})})}),(0,J.jsxs)(Fr,{align:`end`,children:[(0,J.jsx)(sr,{onSelect:async()=>{if(!l)return;let e=await a(`.`);if(e){N.show(Ke,{prompt:e,onOk:()=>s({route:`/pro`,isExternal:!0})});return}s(`theme/edit/${encodeURIComponent(l.name)}?from=${encodeURIComponent(o??``)}`)},children:`Edit code`}),(0,J.jsx)(sr,{onSelect:()=>{if(!l)return;let{apiRoot:e}=d();_(`${e}/themes/${l.name}/download`)},children:`Download`})]})]})})]})]})});return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:u,children:`Change theme`}),description:`Browse and install official themes or upload one`,keywords:e,navid:`theme`,testId:`theme`,title:`Theme`,children:f})},`Branding and design`),Oc=``+new URL(`design-settings-R1OjGW68.png`,import.meta.url).href,kc=j(({keywords:e})=>{let{updateRoute:t}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`design/edit`)},children:`Customize`}),description:`Customize the style and layout of your site`,keywords:e,navid:`design`,testId:`design`,title:`Design & branding`,children:(0,J.jsx)(`img`,{src:Oc})})},`Branding and design`),Ac=j(({keywords:e})=>{let{updateRoute:t}=A();return(0,J.jsx)(Y,{customButtons:(0,J.jsx)(G,{className:`mt-[-5px]`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>{t(`navigation/edit`)},children:`Customize`}),description:`Set up primary and secondary menus`,keywords:e,navid:`navigation`,testId:`navigation`,title:`Navigation`})},`Navigation`),jc={design:[`site`,`logo`,`cover`,`colors`,`fonts`,`background`,`themes`,`appearance`,`style`,`design & branding`,`design and branding`],theme:[`theme`,`template`,`upload`],navigation:[`site`,`navigation`,`menus`,`primary`,`secondary`,`links`],announcementBar:[`site`,`announcement bar`,`important`,`banner`]},Mc=()=>(0,J.jsx)(J.Fragment,{children:(0,J.jsxs)(Qi,{keywords:Object.values(jc).flat(),title:`Site`,children:[(0,J.jsx)(kc,{keywords:jc.design}),(0,J.jsx)(Dc,{keywords:jc.theme}),(0,J.jsx)(Ac,{keywords:jc.navigation}),(0,J.jsx)(Ec,{keywords:jc.announcementBar})]})}),Nc=()=>{let e=Te(`automations`);return(0,J.jsx)(J.Fragment,{children:(0,J.jsxs)(`div`,{className:`mb-[60vh] px-8 pt-16 tablet:max-w-[760px] tablet:px-14 tablet:pt-0`,children:[(0,J.jsx)(fs,{}),(0,J.jsx)(Mc,{}),(0,J.jsx)(Tc,{}),e?(0,J.jsx)(Ho,{}):(0,J.jsx)(va,{}),(0,J.jsx)(Ts,{}),(0,J.jsx)(ea,{})]})})},$=({icon:e,keywords:t,navid:n,onClick:r,title:i})=>{let{ref:a,props:o}=Qe(n),{currentSection:s}=ft(),{checkVisible:c}=ct(),l=(Array.isArray(n)?n:[n]).includes(s||``);return(0,J.jsx)(`li`,{ref:a,...o,children:(0,J.jsxs)(`a`,{"aria-current":l?`page`:void 0,className:de(`mt-px flex h-8 w-full cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-left text-control font-medium text-text-secondary transition-all hover:bg-tab-hover focus-visible:bg-tab-hover focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:outline-hidden [&>svg]:size-4 [&>svg]:shrink-0`,l&&`bg-tab-active text-foreground`,!c(t)&&`hidden`),id:Array.isArray(n)?n[0]:n,onClick:r,children:[e,i]})})},Pc=({children:e,isVisible:t,title:n})=>t?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Gt,{as:`h2`,className:`mb-4 ml-2 tracking-normal`,size:`md`,weight:`semibold`,children:n}),e&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Cr,{className:`-mt-1 mb-7 gap-0`,children:e}),(0,J.jsx)(Mn,{className:`mx-2 mb-7 w-auto bg-border-default`})]})]}):null,Fc=()=>(0,J.jsxs)(Bn,{className:`gap-1 border-transparent bg-orange-100 px-1.5 py-0 text-[11px] leading-5 font-semibold text-orange-700 shadow-[0_0_0_1px_rgba(255,255,255,0.55)] dark:bg-orange-500/20 dark:text-orange-300 dark:shadow-[0_0_0_1px_rgba(255,255,255,0.12)]`,variant:`secondary`,children:[(0,J.jsx)(Lr,{className:`size-3`,strokeWidth:2.25}),`Private`]}),Ic=()=>{let{filter:e,setFilter:t,checkVisible:n,noResult:r,setNoResult:i}=ct(),{updateRoute:a}=A(),o=(0,q.useRef)(null),{isAnyTextFieldFocused:s}=qt(),{settings:c,config:l}=L(),[u,d,f,p]=W(c,[`donations_enabled`,`is_private`,`paid_members_enabled`,`editor_default_email_recipients`]),m=Jr(c||[],l||{}),h=Te(`automations`),g=Te(`membersCustomFields`),_=p!==`disabled`,v=!!l.mailgunIsConfigured,y=_&&!v,b=q.useMemo(()=>[Q.access,Q.tiers,Q.portal,...f?[Q.giftSubscriptions]:[],...h?[]:[Q.memberEmails],...u&&m?[Q.tips]:[],...g?[Q.customFields]:[]].flat(),[m,u,f,h,g]),x=q.useMemo(()=>{let e=h?Ro:_a;return[e.enableNewsletters,..._?[e.defaultRecipients]:[],...h?[Ro.emails]:_?[_a.newsletters]:[],...y?[e.mailgun]:[]].flat()},[h,_,y]),S=q.useMemo(()=>[Z.network,Z.explore,Z.recommendations,Z.embedSignupForm,...m?[Z.offers]:[]].flat(),[m]);(0,q.useEffect)(()=>{let e=e=>{e.target instanceof HTMLElement&&(e.target.nodeName===`INPUT`||e.target.nodeName===`TEXTAREA`||e.target.isContentEditable)||e.key===`/`&&!s&&(e?.preventDefault(),o.current&&o.current.focus())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),(0,q.useEffect)(()=>{o.current&&o.current.focus()},[]),(0,q.useEffect)(()=>{!n(Object.values(X).flat())&&!n(Object.values(jc).flat())&&!n([...b,...x])&&!n(S)&&!n(Object.values($i).flat())?i(!0):i(!1)},[n,i,e,x,b,S]),(0,q.useEffect)(()=>{let t=o.current,n=t=>{t.key===`Escape`&&e&&(o.current?.blur(),t.stopPropagation())};return t?.addEventListener(`keydown`,n),()=>{t?.removeEventListener(`keydown`,n)}},[e]);let C=e=>{e&&(t(``),i(!1),a(e.currentTarget.id))},w=e=>{t(e.target.value),e.target.value&&document.querySelector(`.admin-x-settings`)?.scrollTo({top:0,left:0})},T=de(`hidden pt-10 tablet:visible! tablet:block!`);return(0,J.jsxs)(`div`,{className:`ml-auto flex w-full flex-col pt-0 tablet:max-w-[240px]`,"data-testid":`sidebar`,children:[(0,J.jsx)(`div`,{className:`sticky top-0 flex content-stretch items-end tablet:h-20 tablet:bg-grey-50 xl:h-20 dark:bg-grey-950 dark:tablet:bg-[#101114]`,children:(0,J.jsxs)(dn,{className:`mr-8 rounded-full border-control-border bg-surface-elevated-2 shadow-sm has-[[data-slot=input-group-control]:focus-visible]:border-green! has-[[data-slot=input-group-control]:focus-visible]:bg-surface-elevated-2! has-[[data-slot=input-group-control]:focus-visible]:ring-green/25! tablet:mr-0`,children:[(0,J.jsx)(ln,{align:`inline-start`,children:(0,J.jsx)(Dr,{"aria-hidden":`true`,className:`size-4`})}),(0,J.jsx)(cn,{ref:o,"aria-label":`Search settings`,autoComplete:`off`,autoCorrect:`off`,placeholder:`Search settings`,value:e,onChange:w}),(0,J.jsx)(ln,{align:`inline-end`,children:e?(0,J.jsx)(un,{"aria-label":`Clear query`,size:`icon-xs`,onClick:()=>{t(``),o.current?.focus()},children:(0,J.jsx)(Dn,{"aria-hidden":`true`})}):(0,J.jsx)(Sn,{className:`hidden tablet:inline-flex`,children:`/`})})]})}),(0,J.jsxs)(`nav`,{className:T,id:`admin-x-settings-sidebar`,children:[r&&(0,J.jsxs)(`div`,{className:`ml-2 text-base text-grey-700`,children:[(0,J.jsx)(`h2`,{className:`mb-2 text-base font-semibold tracking-normal text-black dark:text-white`,children:`No result`}),(0,J.jsxs)(`div`,{children:[`We couldn't find any setting matching '${e}'`,`.`]})]}),(0,J.jsxs)(Pc,{isVisible:n(Object.values(X).flat()),title:`General settings`,children:[(0,J.jsx)($,{icon:(0,J.jsx)(lr,{}),keywords:X.titleAndDescription,navid:`general`,title:`Title & description`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Fn,{}),keywords:X.timeZone,navid:`timezone`,title:`Timezone`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Er,{}),keywords:X.publicationLanguage,navid:`publication-language`,title:`Publication language`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(In,{}),keywords:X.users,navid:`staff`,title:`Staff`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(zr,{}),keywords:X.metadata,navid:`metadata`,title:`Meta data`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(zn,{}),keywords:X.socialAccounts,navid:`social-accounts`,title:`Social accounts`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(tr,{}),keywords:X.analytics,navid:`analytics`,title:`Analytics`,onClick:C})]}),(0,J.jsxs)(Pc,{isVisible:n(Object.values(jc).flat()),title:`Site`,children:[(0,J.jsx)($,{icon:(0,J.jsx)(Ir,{}),keywords:jc.design,navid:`design`,title:`Design & branding`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Kn,{}),keywords:jc.theme,navid:`theme`,title:`Theme`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Rr,{}),keywords:jc.navigation,navid:`navigation`,title:`Navigation`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Nr,{}),keywords:jc.announcementBar,navid:`announcement-bar`,title:`Announcement bar`,onClick:C})]}),(0,J.jsxs)(Pc,{isVisible:n([...b,...x]),title:`Membership`,children:[(0,J.jsx)($,{icon:(0,J.jsx)(Ur,{}),keywords:Q.access,navid:[`members`,`spam-filters`],title:(0,J.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center justify-between gap-2`,children:[(0,J.jsx)(`span`,{className:`min-w-0 truncate`,children:`Access`}),d&&(0,J.jsx)(Fc,{})]}),onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(xr,{}),keywords:Q.tiers,navid:`tiers`,title:`Tiers`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Or,{}),keywords:Q.portal,navid:`portal`,title:`Signup portal`,onClick:C}),f&&(0,J.jsx)($,{icon:(0,J.jsx)(fr,{}),keywords:Q.giftSubscriptions,navid:`gift-subscriptions`,title:`Gift subscriptions`,onClick:C}),!h&&(0,J.jsx)($,{icon:(0,J.jsx)(yn,{}),keywords:Q.memberEmails,navid:`memberemails`,title:`Welcome emails`,onClick:C}),u&&m&&(0,J.jsx)($,{icon:(0,J.jsx)(wr,{}),keywords:Q.tips,navid:`tips-and-donations`,title:`Tips & donations`,onClick:C}),g&&(0,J.jsx)($,{icon:(0,J.jsx)(lr,{}),keywords:Q.customFields,navid:`custom-fields`,title:`Custom fields`,onClick:C}),h?(0,J.jsx)($,{icon:(0,J.jsx)(ar,{}),keywords:x,navid:[`enable-newsletters`,`default-recipients`,`emails`,`mailgun`],title:`Email`,onClick:C}):(0,J.jsx)($,{icon:(0,J.jsx)(ar,{}),keywords:x,navid:[`enable-newsletters`,`default-recipients`,`newsletters`,`mailgun`],title:`Newsletters`,onClick:C})]}),(0,J.jsxs)(Pc,{isVisible:n(S),title:`Growth`,children:[(0,J.jsx)($,{icon:(0,J.jsx)(Tn,{}),keywords:Z.network,navid:`network`,title:`Network`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Zr,{}),keywords:Z.explore,navid:`explore`,title:`Ghost Explore`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(ur,{}),keywords:Z.recommendations,navid:`recommendations`,title:`Recommendations`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(nr,{}),keywords:Z.embedSignupForm,navid:`embed-signup-form`,title:`Signup forms`,onClick:C}),m&&(0,J.jsx)($,{icon:(0,J.jsx)(Br,{}),keywords:Z.offers,navid:`offers`,title:`Offers`,onClick:C})]}),(0,J.jsxs)(Pc,{isVisible:n(Object.values($i).flat()),title:`Advanced`,children:[(0,J.jsx)($,{icon:(0,J.jsx)(Mr,{}),keywords:$i.integrations,navid:`integrations`,title:`Integrations`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(An,{}),keywords:$i.migrationtools,navid:`migration`,title:`Import/Export`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Cn,{}),keywords:$i.codeInjection,navid:`code-injection`,title:`Code injection`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(On,{}),keywords:$i.labs,navid:`labs`,title:`Labs`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(vr,{}),keywords:$i.history,navid:`history`,title:`History`,onClick:C}),(0,J.jsx)($,{icon:(0,J.jsx)(Pn,{}),keywords:$i.dangerzone,navid:`dangerzone`,title:`Danger zone`,onClick:C})]}),!e&&(0,J.jsxs)(`a`,{className:`mt-1 mb-10 flex h-[38px] w-100 cursor-pointer items-center rounded-lg px-3 py-2 text-left text-[14px] font-medium text-grey-800 transition-all hover:bg-grey-200 focus:bg-grey-100 dark:text-grey-600 dark:hover:bg-grey-950 dark:focus:bg-grey-900`,onClick:()=>{a(`about`)},children:[(0,J.jsx)(`img`,{alt:`Ghost Logo`,className:`mr-[7px] size-[18px]`,src:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAC9FBMVEUAAAB+J/tXRf9mPP99M/9bQP9XQ/9VRv9VRv9WRf9WRP9XRP9XRf9VRf9cQP9aP/9bQP9ZQf9WRf9bQf9VRf9VRf9YRP9cPv9hPf9hPf9gPf9XPf9qN/9kOv9kOv9oOP9WQv9jOv9tNf9pN/9mOv9bP/95Kv9zMP9uNf9yMP9sNP9xMf9sM/9qNv9iPv9fP/9dQP9eP/96LP94Lv9yMf9oOP9qOP9hPf9mO/9fPv+FJP+DJf95LP+DIv93Lf94Lv92L/9uNv9kPP9lO/+BJ/+MH/9/Jv+HI/+FJf+AKf9+Kv9dP/+UGv+QHf+KH/+PG/+JIv+HI/+bFP+NIP+UGf9tNf+eFP+aFf+WGP+UGv+VGf9yMv+hEv+oDP+cE/+dFP+bFf95Lf+hDf+cFv+rCf+uB/+vCP+rC/+jEP+lDv+xB/+vB/+4A/+FJf+9BPa9AP64A/6wCP+vCP+NH/+IJP+FIf+2Bv+5Av+9AP64Bv6/AP6OHv/KAPfFAPrEAPvEAPrDAPvCAPi+AP66Af7HAPjCAPzFAPnRAPLMAPbNAPbQAPXNAPfhAPPXAPPTAPTKAPSpCv/UAPTUAPPQAPbGAPerC//VAPPUAPPXAPS2BP/bAPK1BP/dAPHeAPLgAPLdAPDcHO65AP+4Av/lAPXfAPLfAPC8AP3rAfDoAPHeAPHgAPDGAPryAfDlAPHsAPLyAPLoAPDzHPP1DvHsAPHzAPPvAPLpAPL7APP6APHzAPPOAPbNAPbRAPX0APH5A/L4APPvAPPLAPb4BPP+BfPyAPL3APP5APLdAO//GfH/Ku/8CvL/Nev/L+3/Ke//HfH/EfP8BPLxAPH9O+f1APDfAPH/QOn/POr/MO3/MO7/K+/8APH4AvLjAPL/Sef/Ref/ROj/Nuz/Nez/H/D2APDuAe7mAO//SOr/Rej/Ref/Qej/Qen/POr/LO37BvL/R+j/N+v/M+z/F/H+E/L/QOj/R+f/R+f/Ner/SOr/Suf/Qej/Tej/R+axG5kdAAAA/HRSTlMABQ4SCStddYWDfGhhVU04IDWViX9vZD5vmIAZi4ZoUUYmk3RiMCJsfVg5MitItayeWY+GPrrXzam+fW5cMC670J1ea1x3HoS1xp55aYlFLK1VdJg8mUx9XqaVpGdrRJacry+MTXk1iaBFXnGRqQ9mR6ZVT7skHn5YJoO0LGleo5lYt01xxzkmZJ2EzR1flzI9smy8P7tYw6moTb01mtZuB3iWGLllQk5Jej3ANovJjmIKE2ykf3Q5W5aNr0pRhcBnKjB5d39tK1WRpXV3hrDHYUIOKzd6mn6n0XFevluglbfHZUQ0Lhdtgom2pV5WpWuIdE1HnLFTL1+QOFCCqXMxAAAELklEQVR4AYXVtZ4jRxSF8XOru5rFtMzMu2ZmptjsFzDzEzgzQ2hKzJSZmdle5mEeSSN1S2qoWtSwNP/4fr8TXsI0RARIFqKFqQEnIhBFKp1QmitI1U2QC4DsShwA0ZDAdMpEOo+bzNMjJ3TqeuAHgTbGpZGrtFpYSBRoREUwQBjmiJDCIciqsEqzLixXVUX3vNhQkDdqDhN6lI0Cr2GGLDSWjokZC2tCTidAKGPFvCdzIOqqM5iez0N1Te+QmBooW13HYyDDFe58AgnFs+Eeb+AxJgMtM6IWpwTnU90kUNF3HKL+vhIAZT3laFewRjR6F+5T5gXokBPBleSSIkl4MapU9qOJJbZ3LNu9hO2vqKyRrlVkM7iaqo4HimJEB/djiuUretwUUcb4vbgQR5vBjSAiDMUN+hAzbC5q+e5IYsOfK3YGABTgalOJGLyUrnyAmQYXh9m15bNGxWjcHgXAgKTPDZhZi94jzES7zAVa9c96aEZ+AYACdavJaglVDd4hiVnQoL6gUD+zx2ZclAGGu8j1M1VS3obEbCT+ODAISHIX0QaAgSGTZDlDk4RWfqhuKZ4nOZZKgEGL19Hg8hVItPSvg36x7Gh/RgG7j/sxK85ttEGhJjYuwS3LcAGYgXScOVDRhsRzq2HWsNVIQlWgCK2KZ9BWeHTLKvq4kAWYEh/TkElhLof16i2FFQADsmVT0TCHPB3O7fcPrAADZA6KgvbuCyNN40kNpNpEVLXKaM/2IxgC6ALjnEsLGbRXQN6EDUCyToSGZXC0t9Osb5awLzTAnjcNrc4Z2iFo6wKowdp9BhhUFboX3oc2JGKMHZTYHSShgqmKLtkWtPNao+986hhZ1rkBKvQKl3pgop19jtiteGcfOvM2MNyZMjUf6jtoicDX+KY4e9T9H2AAh5lM6vJNtCI/Zjs1fxQH8dTJQIOmSW5lPkYrf5ib5IL1R+NxnAxuTnCuNRgYWnj5oh1HL+pHXC4AoAIIbOKwPPbNpZjFJ0fZzsjm2PFz4R4ABADf0XDCsznR+Zju570Nb2GxrI3Ykj2BZoBfyA8cV5eN6s2Y5E1eiw+lvBrzt2rfaP6TE8HHC4RCx/XHnI6TyX+fXVNM9NSAktN9zb9yW+WbzIorMRHgP4U8m6gkSyuGLdv1BBBGWRzRypsruy79dQW6uh7GSSpO2oJDBnmsQGQw2+3na3a6OKc+kExtodShfy9FMeiY8XZ7qQaLqGZ15K2DWN1lDSgd/Nyuxf8EZ9GP+a47gZMYmhbM3ylr3BUyHTuyjg8uN7aWF64trvnHirA3P9a8B2GKChFc1R+BtyqyQpT6eTW+fGfux3vQpGKKGGoUDS2NSV5KHsq5FLdWlmT5fEwgzNCb7bIdv5QfskQiUjz9q1swiYoZFgD/JbhURRqIqHcLpiC09NoO/HUPpjsGm6qha0KGUP0AAAAASUVORK5CYII=`}),`About Ghost`]})]})]})},Lc=[],Rc=`:is([role="dialog"], [role="alertdialog"])[data-state="open"]`,zc=({children:e})=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`fixed top-2 right-0 z-50 m-8 flex justify-end bg-transparent tablet:fixed tablet:top-0`,id:`done-button-container`,children:(0,J.jsx)(gi,{})}),(0,J.jsx)(`div`,{className:`fixed top-0 left-0 flex size-full bg-grey-50 dark:bg-grey-950 dark:tablet:bg-[#101114]`,id:`admin-x-settings-content`,children:e})]}),Bc=()=>{let{currentUser:e}=L(),{loadingModal:t}=A(),{isDirty:n}=Kt(),{confirm:r,dialogProps:i}=Ht(),a=e=>{window.location.hash=e},o=()=>document.getElementById(`modal-backdrop`)?!0:!!document.querySelector(Rc);return(0,q.useEffect)(()=>{y.dismiss()},[]),(0,q.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){if(o())return;r(n,()=>{a(`/`)})}};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[r,n]),_n(e)?vn(e)?(0,J.jsxs)(zc,{children:[(0,J.jsx)(`div`,{className:`flex-1 bg-white dark:bg-grey-950`,children:(0,J.jsx)(`div`,{className:`h-full overflow-y-auto overscroll-y-contain`,id:`admin-x-settings-scroller`,children:(0,J.jsxs)(`div`,{className:`mx-auto max-w-5xl px-[5vmin] tablet:mt-16 xl:mt-10`,children:[(0,J.jsx)(Gt,{as:`h1`,className:`mb-[5vmin] text-4xl`,leading:`supertight`,weight:`bold`,children:`Settings`}),(0,J.jsx)(ds,{highlight:!1,keywords:Lc})]})})}),(0,J.jsx)(Ie,{...i})]}):(0,J.jsxs)(zc,{children:[t&&(0,J.jsx)(`div`,{className:`fixed inset-0 z-40 h-[calc(100vh-55px)] w-[100vw] bg-modal-backdrop backdrop-blur-[3px] tablet:h-[100vh]`}),(0,J.jsx)(`div`,{className:`fixed inset-x-0 top-0 z-[35] max-w-[calc(100%-16px)] flex-1 basis-[320px] overscroll-y-contain bg-white p-8 tablet:relative tablet:inset-x-auto tablet:top-auto tablet:h-full tablet:overflow-y-scroll tablet:bg-grey-50 tablet:py-0 dark:bg-grey-950 dark:tablet:bg-[#101114]`,id:`admin-x-settings-sidebar-scroller`,children:(0,J.jsx)(`div`,{className:`relative w-full`,children:(0,J.jsx)(Ic,{})})}),(0,J.jsx)(`div`,{className:`h-full flex-1 bg-white tablet:basis-[800px] dark:bg-grey-950 dark:tablet:bg-black`,children:(0,J.jsx)(`div`,{className:`relative h-full overflow-y-scroll overscroll-y-contain pt-13`,id:`admin-x-settings-scroller`,children:(0,J.jsx)(Nc,{})})}),(0,J.jsx)(Ie,{...i})]}):null},Vc={"design/change-theme":`DesignAndThemeModal`,"design/edit":`DesignAndThemeModal`,"theme/install":`DesignAndThemeModal`,"theme/edit/:name":`DesignAndThemeModal`,"navigation/edit":`NavigationModal`,"staff/invite":`InviteUserModal`,"staff/:slug/social-links":`UserDetailModal`,"staff/:slug/email-notifications":`UserDetailModal`,"staff/:slug/edit":`UserDetailModal`,"staff/:slug":`UserDetailModal`,"portal/edit":`PortalModal`,"tiers/add":`TierDetailModal`,"tiers/:id":`TierDetailModal`,"stripe-connect":`StripeConnectModal`,"newsletters/new":`AddNewsletterModal`,"newsletters/:id":`NewsletterDetailModal`,"history/view":`HistoryModal`,"history/view/:user":`HistoryModal`,"integrations/contentapi":`ContentApiModal`,"integrations/zapier":`ZapierModal`,"integrations/transistor":`TransistorModal`,"integrations/slack":`SlackModal`,"integrations/unsplash":`UnsplashModal`,"integrations/firstpromoter":`FirstPromoterModal`,"integrations/pintura":`PinturaModal`,"integrations/new":`AddIntegrationModal`,"integrations/:id":`CustomIntegrationModal`,"recommendations/add":`AddRecommendationModal`,"recommendations/edit":`EditRecommendationModal`,"announcement-bar/edit":`AnnouncementBarModal`,"embed-signup-form/show":`EmbedSignupFormModal`,"offers/edit":`OffersContainerModal`,"offers/edit/:id":`OffersContainerModal`,"offers/edit/retention/:id":`OffersContainerModal`,"offers/new":`OffersContainerModal`,"explore/testimonial":`TestimonialsModal`,about:`AboutModal`},Hc=()=>le(()=>import(`./modals-CxRaan1J.js`),__vite__mapDeps([33,1,2,3,13,14,6,15,4,16,17,34,35,26,36,37,12,18,19,20,21,5,22,23,24,25,27,38,39,40,41,42,43,44,45,46,47,48,10,11,49,50,51,52,53,7,8,9,54,55,56,57,58,59,60]),import.meta.url),Uc=()=>{let{updateNavigatedSection:e,scrollToSection:t}=ft(),{route:n,updateRoute:r}=A();return Ue((e,n)=>{e===n&&t(e.split(`/`)[0])},[t]),(0,q.useEffect)(()=>{if(n!==void 0){if(n.split(`/`)[0]===`locksite`){r(`members`);return}e(n.split(`/`)[0])}},[n,e,r]),null};function Wc({upgradeStatus:e}){return(0,J.jsx)(Xe,{upgradeStatus:e,children:(0,J.jsx)(N.Provider,{children:(0,J.jsx)(ge,{basePath:`settings`,modals:{paths:Vc,load:Hc},children:(0,J.jsx)(`div`,{className:`admin-x-base admin-x-settings [--color-focus-ring:var(--color-green-500)] [--focus-ring:var(--color-green-500)]`,children:(0,J.jsxs)(N.Provider,{children:[(0,J.jsx)(Uc,{}),(0,J.jsx)(Bc,{})]})})})})})}var Gc=e(n(),1);function Kc(){return(0,Gc.createPortal)((0,J.jsx)(`div`,{className:`shade shade-admin`,style:{position:`absolute`,inset:0,zIndex:20},children:(0,J.jsx)(Wc,{})}),document.body)}export{Kc as default};
@@ -0,0 +1 @@
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{t as r}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{c as i}from"./dist-DGzPJ_bO.js";import{t as a}from"./edit-profile-SGrJve5M.js";import{As as o,Cr as s,Dr as c,Er as l,Kt as u,No as d,Nr as f,Or as p,Zo as m,qt as h,xr as g}from"./index-ukW_0Uie.js";var _=e(t(),1),v=n(),y=({account:e,className:t=``})=>{let[n,r]=(0,_.useState)(!1),i=u();return(0,v.jsxs)(`div`,{className:`flex flex-col ${t}`,children:[(0,v.jsx)(T,{}),(0,v.jsxs)(w,{children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Profile`}),(0,v.jsx)(x,{children:`Edit your profile information and account details`})]}),(0,v.jsxs)(g,{open:n,onOpenChange:r,children:[(0,v.jsx)(p,{children:(0,v.jsx)(C,{children:(0,v.jsx)(f,{variant:`secondary`,children:`Edit`})})}),(0,v.jsxs)(s,{onOpenAutoFocus:e=>e.preventDefault(),children:[(0,v.jsx)(l,{children:(0,v.jsx)(c,{children:`Profile settings`})}),e&&(0,v.jsx)(a,{account:e,setIsEditingProfile:r})]})]})]}),(0,v.jsxs)(w,{to:`/preferences/handle`,withHover:!0,children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Social web handle`}),(0,v.jsx)(x,{children:`Set your account username and domain`})]}),(0,v.jsx)(C,{className:`flex items-center gap-2`,children:(0,v.jsx)(m,{size:20})})]}),(0,v.jsxs)(w,{withHover:!0,onClick:()=>i(`/preferences/moderation`),children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Moderation`}),(0,v.jsx)(x,{children:`Manage blocked users and domains`})]}),(0,v.jsx)(C,{className:`flex items-center gap-2`,children:(0,v.jsx)(m,{size:20})})]}),(0,v.jsxs)(w,{withHover:!0,onClick:()=>i(`/preferences/bluesky-sharing`),children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Bluesky sharing`}),(0,v.jsx)(x,{children:`Share content directly on Bluesky`})]}),(0,v.jsxs)(C,{className:`flex items-center gap-2`,children:[e?.blueskyEnabled?(0,v.jsx)(`span`,{className:`font-medium text-black`,children:`On`}):(0,v.jsx)(`span`,{children:`Off`}),(0,v.jsx)(m,{size:20})]})]}),(0,v.jsxs)(w,{to:`/preferences/move`,withHover:!0,children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Account migration`}),(0,v.jsx)(x,{children:`Move another social web account to this one`})]}),(0,v.jsx)(C,{className:`flex items-center gap-2`,children:(0,v.jsx)(m,{size:20})})]}),(0,v.jsx)(T,{}),(0,v.jsxs)(w,{href:`https://ghost.org/help/social-web/`,withHover:!0,children:[(0,v.jsxs)(S,{children:[(0,v.jsx)(b,{children:`Help`}),(0,v.jsx)(x,{children:`Social web guides and support resources`})]}),(0,v.jsx)(C,{children:(0,v.jsx)(d,{size:18})})]})]})},b=o,x=({children:e,className:t=``})=>(0,v.jsx)(`span`,{className:`text-sm text-gray-700 ${t}`,children:e}),S=({children:e,className:t=``})=>(0,v.jsx)(`div`,{className:`relative flex flex-col gap-0.5 ${t}`,children:e}),C=({children:e,className:t=``})=>(0,v.jsx)(`div`,{className:`relative text-gray-500 ${t}`,children:e}),w=({children:e,className:t=``,withHover:n=!1,to:a,href:o,onClick:s})=>{let c=h(),l=i(`flex items-center justify-between py-3 gap-4`,n?`relative cursor-pointer before:absolute before:inset-x-[-16px] before:inset-y-[-1px] before:rounded-md before:bg-gray-50 before:opacity-0 before:transition-opacity before:will-change-[opacity] hover:z-10 hover:cursor-pointer hover:border-b-transparent hover:before:opacity-100 dark:before:bg-gray-950`:``,t),u=a&&a.startsWith(`/`)?`${c}${a}`:a;return u?(0,v.jsx)(r,{className:l,to:u,children:e}):o?(0,v.jsx)(`a`,{className:l,href:o,rel:`noreferrer`,target:`_blank`,children:e}):s?(0,v.jsx)(`div`,{className:l,role:`button`,tabIndex:0,onClick:s,children:e}):(0,v.jsx)(`div`,{className:l,children:e})},T=()=>(0,v.jsx)(`hr`,{className:`my-3 h-px border-0 bg-gray-200 dark:bg-gray-950`});export{y as n,C as t};
@@ -0,0 +1,3 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{t as i}from"./dist-Ndy-PuGN.js";import{c as a,g as o,o as s,x as c}from"./dist-DGzPJ_bO.js";var l=e(t(),1),u=r(),d=Object.defineProperty,f=(e,t)=>{let n={};for(var r in e)d(n,r,{get:e[r],enumerable:!0});return t||d(n,Symbol.toStringTag,{value:`Module`}),n},p=f({default:()=>m}),m=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:24,width:24,id:`Alert-Triangle--Streamline-Ultimate`,...e,children:[(0,u.jsx)(`desc`,{children:`Alert Triangle Streamline Icon: https://streamlinehq.com`}),(0,u.jsx)(`path`,{d:`m23.77 20.57 -10 -19A2 2 0 0 0 12 0.5a2 2 0 0 0 -1.77 1.07l-10 19a2 2 0 0 0 0.06 2A2 2 0 0 0 2 23.5h20a2 2 0 0 0 1.77 -2.93ZM11 8.5a1 1 0 0 1 2 0v6a1 1 0 0 1 -2 0ZM12.05 20a1.53 1.53 0 0 1 -1.52 -1.47A1.48 1.48 0 0 1 12 17a1.53 1.53 0 0 1 1.52 1.47A1.48 1.48 0 0 1 12.05 20Z`,fill:`currentColor`,strokeWidth:1})]}),h=f({default:()=>g}),g=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:24,width:24,id:`Information-Circle--Streamline-Ultimate`,...e,children:[(0,u.jsx)(`desc`,{children:`Information Circle Streamline Icon: https://streamlinehq.com`}),(0,u.jsx)(`path`,{d:`M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm0.25 5a1.5 1.5 0 1 1 -1.5 1.5 1.5 1.5 0 0 1 1.5 -1.5Zm2.25 13.5h-4a1 1 0 0 1 0 -2h0.75a0.25 0.25 0 0 0 0.25 -0.25v-4.5a0.25 0.25 0 0 0 -0.25 -0.25h-0.75a1 1 0 0 1 0 -2h1a2 2 0 0 1 2 2v4.75a0.25 0.25 0 0 0 0.25 0.25h0.75a1 1 0 0 1 0 2Z`,fill:`currentcolor`,strokeWidth:1})]}),_=f({default:()=>v}),v=e=>(0,u.jsxs)(`svg`,{height:16,id:`Skull-2--Streamline-Ultimate`,viewBox:`0 0 16 16`,width:16,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,u.jsx)(`desc`,{children:`
2
+ Skull 2 Streamline Icon: https://streamlinehq.com
3
+ `}),(0,u.jsxs)(`g`,{children:[(0,u.jsx)(`path`,{d:`M12.333333333333332 7.333333333333333a4.333333333333333 4.333333333333333 0 1 0 -7.333333333333333 3.126666666666667v1.88a1 1 0 0 0 2 0 1 1 0 0 0 2 0 1 1 0 1 0 2 0v-1.88a4.326666666666666 4.326666666666666 0 0 0 1.3333333333333333 -3.126666666666667Zm-6.253333333333334 1a1 1 0 1 1 1 -1 1 1 0 0 1 -1 1Zm4 0a1 1 0 1 1 1 -1 1 1 0 0 1 -1 1Z`,fill:`currentColor`,strokeWidth:.6667}),(0,u.jsx)(`path`,{d:`m1.8666666666666665 3.28 1.22 1.22a0.3466666666666667 0.3466666666666667 0 0 0 0.26666666666666666 0.09333333333333334 0.35333333333333333 0.35333333333333333 0 0 0 0.24666666666666665 -0.14666666666666667 5.133333333333333 5.133333333333333 0 0 1 0.8066666666666666 -0.9733333333333333 0.3133333333333333 0.3133333333333333 0 0 0 0.09999999999999999 -0.2333333333333333 0.3666666666666667 0.3666666666666667 0 0 0 -0.09333333333333334 -0.24666666666666665L3.28 1.8666666666666665A1.1666666666666665 1.1666666666666665 0 0 0 1.8399999999999999 0.11333333333333334a0.6666666666666666 0.6666666666666666 0 0 0 -0.3666666666666667 0.48l-0.09999999999999999 0.5133333333333333a0.31999999999999995 0.31999999999999995 0 0 1 -0.26 0.26666666666666666l-0.52 0.09999999999999999a0.6666666666666666 0.6666666666666666 0 0 0 -0.48 0.3666666666666667A1.1666666666666665 1.1666666666666665 0 0 0 1.8666666666666665 3.28Z`,fill:`currentColor`,strokeWidth:.6667}),(0,u.jsx)(`path`,{d:`M12.4 4.446666666666666a0.35333333333333333 0.35333333333333333 0 0 0 0.24666666666666665 0.14666666666666667 0.3466666666666667 0.3466666666666667 0 0 0 0.26666666666666666 -0.09333333333333334l1.22 -1.22a1.1666666666666665 1.1666666666666665 0 0 0 1.7533333333333332 -1.44 0.6666666666666666 0.6666666666666666 0 0 0 -0.48 -0.3666666666666667l-0.52 -0.09999999999999999a0.31999999999999995 0.31999999999999995 0 0 1 -0.26 -0.26666666666666666l-0.09999999999999999 -0.5133333333333333a0.6666666666666666 0.6666666666666666 0 0 0 -0.3666666666666667 -0.48 1.1666666666666665 1.1666666666666665 0 0 0 -1.44 1.7533333333333332l-1.1333333333333333 1.1266666666666665a0.3666666666666667 0.3666666666666667 0 0 0 -0.09333333333333334 0.24666666666666665 0.3133333333333333 0.3133333333333333 0 0 0 0.09999999999999999 0.2333333333333333 5.133333333333333 5.133333333333333 0 0 1 0.8066666666666666 0.9733333333333333Z`,fill:`currentColor`,strokeWidth:.6667}),(0,u.jsx)(`path`,{d:`M3.6 11.559999999999999a0.33999999999999997 0.33999999999999997 0 0 0 -0.26666666666666666 -0.15333333333333332 0.3466666666666667 0.3466666666666667 0 0 0 -0.26666666666666666 0.09333333333333334l-1.2 1.22a1.1666666666666665 1.1666666666666665 0 0 0 -1.7533333333333332 1.44 0.6666666666666666 0.6666666666666666 0 0 0 0.48 0.3666666666666667l0.52 0.09999999999999999a0.31999999999999995 0.31999999999999995 0 0 1 0.26 0.26666666666666666l0.09999999999999999 0.5133333333333333a0.6666666666666666 0.6666666666666666 0 0 0 0.3666666666666667 0.48 1.1666666666666665 1.1666666666666665 0 0 0 1.44 -1.7533333333333332l1.1333333333333333 -1.1266666666666665a0.36 0.36 0 0 0 0.09333333333333334 -0.24 0.31999999999999995 0.31999999999999995 0 0 0 -0.09999999999999999 -0.24 5.333333333333333 5.333333333333333 0 0 1 -0.8066666666666666 -0.9666666666666666Z`,fill:`currentColor`,strokeWidth:.6667}),(0,u.jsx)(`path`,{d:`m14.133333333333333 12.719999999999999 -1.22 -1.22a0.3466666666666667 0.3466666666666667 0 0 0 -0.26666666666666666 -0.09333333333333334 0.33999999999999997 0.33999999999999997 0 0 0 -0.24666666666666665 0.15333333333333332 5.333333333333333 5.333333333333333 0 0 1 -0.8066666666666666 0.9666666666666666 0.31999999999999995 0.31999999999999995 0 0 0 -0.09999999999999999 0.24 0.36 0.36 0 0 0 0.09333333333333334 0.24l1.1333333333333333 1.1266666666666665a1.1666666666666665 1.1666666666666665 0 0 0 1.44 1.7533333333333332 0.6666666666666666 0.6666666666666666 0 0 0 0.3666666666666667 -0.48l0.09999999999999999 -0.5133333333333333a0.31999999999999995 0.31999999999999995 0 0 1 0.26 -0.26666666666666666l0.52 -0.09999999999999999a0.6666666666666666 0.6666666666666666 0 0 0 0.48 -0.3666666666666667 1.1666666666666665 1.1666666666666665 0 0 0 -1.7533333333333332 -1.44Z`,fill:`currentColor`,strokeWidth:.6667})]})]}),y=f({default:()=>b}),b=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:24,width:24,id:`Check-Circle-1--Streamline-Ultimate`,...e,children:[(0,u.jsx)(`desc`,{children:`Check Circle 1 Streamline Icon: https://streamlinehq.com`}),(0,u.jsx)(`path`,{d:`M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm6.93 8.2 -6.85 9.29a1 1 0 0 1 -1.43 0.19l-4.89 -3.91a1 1 0 0 1 -0.15 -1.41A1 1 0 0 1 7 12.21l4.08 3.26L17.32 7a1 1 0 0 1 1.39 -0.21 1 1 0 0 1 0.22 1.41Z`,fill:`currentcolor`,strokeWidth:1})]}),x=f({default:()=>S}),S=e=>(0,u.jsxs)(`svg`,{viewBox:`-0.75 -0.75 20 20`,xmlns:`http://www.w3.org/2000/svg`,height:24,width:24,...e,children:[(0,u.jsx)(`desc`,{children:`Typography`}),(0,u.jsx)(`path`,{d:`m0.578125 9.827354166666668 8.09375 0`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5}),(0,u.jsx)(`path`,{d:`m12.140625 13.296104166666666 5.78125 0`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5}),(0,u.jsx)(`path`,{d:`M12.140625 16.764854166666666V10.40625a2.890625 2.890625 0 0 1 5.78125 0v6.359375`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5}),(0,u.jsx)(`path`,{d:`M0.578125 16.764854166666666V5.78125a4.046875 4.046875 0 0 1 8.09375 0v10.984375`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5})]}),C=s(``,{variants:{size:{sm:`size-3`,md:`size-4`,lg:`size-6`,xl:`size-8`}},defaultVariants:{size:`md`}}),w=Object.entries(Object.assign({"../../assets/icons/error-fill.svg":p,"../../assets/icons/info-fill.svg":h,"../../assets/icons/skull-and-bones.svg":_,"../../assets/icons/success-fill.svg":y,"../../assets/icons/typography.svg":x})).reduce((e,[t,n])=>{let r=o(t.match(/[^/]+(?=\.svg$)/)?.[0]??``),i=e=>{let{size:t,className:r,...i}=e,o=a(C({size:t,className:r}));return l.createElement(n.default,{...i,className:o})};return i.displayName=`Icon.${r}`,e[r]=i,e},{}),T=w,E=l.createContext({isDirty:!1,setGlobalDirtyState:()=>{}}),D=({children:e})=>{let[t,n]=(0,l.useState)([]),r=(0,l.useCallback)((e,t)=>{n(n=>t&&!n.includes(e)?[...n,e]:!t&&n.includes(e)?n.filter(t=>t!==e):n)},[]);return(0,u.jsx)(E.Provider,{value:{isDirty:t.length>0,setGlobalDirtyState:r},children:e})},O=()=>{let e=(0,l.useId)(),{isDirty:t,setGlobalDirtyState:n}=(0,l.useContext)(E);return(0,l.useEffect)(()=>()=>n(e,!1),[e,n]),{isDirty:t,setGlobalDirtyState:(0,l.useCallback)(t=>n(e,t),[e,n])}},k=({className:e,style:t,theme:n=`light`,toastOptions:r,...o})=>{let{classNames:s,...c}=r??{};return(0,u.jsx)(i,{className:a(`toaster group`,e),style:{"--normal-bg":`var(--background)`,"--normal-text":`var(--foreground)`,"--normal-border":`var(--border)`,...t},theme:n,toastOptions:{...c,classNames:{...s,closeButton:a(`border-control-border! bg-background! text-foreground! hover:bg-interactive-hover! focus-visible:ring-2! focus-visible:ring-focus-ring! focus-visible:ring-offset-2! focus-visible:ring-offset-background! data-[disabled=true]:opacity-50!`,s?.closeButton)}},...o})},A=e(n(),1),j=(0,l.createContext)({isAnyTextFieldFocused:!1,setFocusState:()=>{},fetchKoenigLexical:null,darkMode:!1}),M=()=>(0,l.useContext)(j),N=()=>{let e=M();if(!e)throw Error(`useFocusContext must be used within a FocusProvider`);return e},P=()=>{let[e,t]=(0,l.useState)(!1);return(0,l.useEffect)(()=>(t(!0),()=>t(!1)),[]),e?(0,A.createPortal)((0,u.jsx)(`div`,{className:I,style:{width:`unset`,height:`unset`},children:(0,u.jsx)(k,{duration:5e3,icons:{error:(0,u.jsx)(w.ErrorFill,{className:`text-red`}),success:(0,u.jsx)(w.SuccessFill,{className:`text-green`}),info:(0,u.jsx)(w.InfoFill,{className:`text-text-tertiary`})},position:`bottom-left`,toastOptions:{classNames:{title:`mt-[-1px]! text-md! font-semibold! leading-tighter! tracking-[0.1px]!`,description:`text-text-primary! text-sm! mt-px!`,icon:`ml-0!`},style:{alignItems:`flex-start`,maxWidth:`290px`}},closeButton:!0})}),document.body):null},F=({darkMode:e,fetchKoenigLexical:t,children:n})=>{let[r,i]=(0,l.useState)(!1);return(0,u.jsx)(j.Provider,{value:{isAnyTextFieldFocused:r,setFocusState:e=>{i(e)},fetchKoenigLexical:t,darkMode:e},children:(0,u.jsxs)(D,{children:[n,(0,u.jsx)(P,{})]})})},I=`shade shade-admin shade-activitypub shade-stats shade-posts`,L=({darkMode:e,fetchKoenigLexical:t,className:n,children:r,...i})=>(0,u.jsx)(`div`,{className:c(`shade`,n),...i,children:(0,u.jsx)(F,{darkMode:e,fetchKoenigLexical:t,children:r})});export{T as a,O as i,L as n,N as r,I as t};