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
@@ -1,6 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./code-editor-view-BfkwQto2.js","./rolldown-runtime-DAXXjFlN.js","./react-Bb3IsNbi.js","./jsx-runtime-CtMZ-PAS.js","./dist-BBIJuyPg.js","./esm-TSfGW7nz.js","./dist-duxRDcQu.js","./index-BacwlcOy.js","./react-dom-C6aoWSfl.js","./framework-provider-jQktxm9P.js","./hooks-Cjxexi_I.js","./Combination--5EZGaDs.js","./button--i2uMDDn.js","./dist-DW0QXQO3.js","./dist-CsekE4FL.js","./dist-DxFLceO5.js","./preload-helper-DYl5dUZ5.js","./chunk-KS7C4IRE-DG9HTHQ3.js","./router-provider-5fsX1CYn.js","./dist-BHE0dp6o.js","./dist-DJ6c4_De.js","./users-Pc8IRjk9.js","./update-queries-C4CnvJaW.js","./index-DxRNHH0o.css","./dist-BnFdlebk.js","./dist-DDY6GRVz.js","./dist-pHiOxyxa.js","./dist-CbHbGtQ-.js","./dist-Q1p9iXwH.js","./dist-DG78yroX.js","./modals-CIdwHVga.js","./automated-emails-UWM02CMr.js","./nql-BsgFMd93.js","./offers-D11QtPXX.js","./posts-CwH8VJvB.js","./inline-C22rnPro.js","./types-uYQ1HgqL.js","./social-urls-DgAF08Xc.js","./analytics-53FOa2wq.js","./tabs-dtOcExye.js","./switch-CNjkOmwz.js","./dist-JLOy8o0Q.js","./typeof-Ca-duI-z.js","./newsletters-DZm3yLj8.js","./tiers-EghDzCKc.js","./dist-QcACAOAD.js","./nql-lang-CvCSOQG3.js","./koenig-lexical-Di7b48ED.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./react-dom-C6aoWSfl.js";import{_ as r,i,n as a,o,s}from"./framework-provider-jQktxm9P.js";import{_ as c,a as l,b as u,d,f,l as p,m,n as h,p as g,r as _,u as v,y}from"./hooks-Cjxexi_I.js";import{t as b}from"./jsx-runtime-CtMZ-PAS.js";import{n as x}from"./dist-duxRDcQu.js";import{d as S,u as C}from"./Combination--5EZGaDs.js";import{a as w,c as ee,d as te,f as ne,g as re,h as T,i as ie,l as ae,m as oe,n as se,o as ce,p as le,r as ue,s as de,t as fe,u as pe}from"./automated-emails-UWM02CMr.js";import{n as me}from"./offers-D11QtPXX.js";import{t as he}from"./preload-helper-DYl5dUZ5.js";import{a as ge,o as E}from"./dist-BBIJuyPg.js";import{Dt as _e,Hn as ve,J as ye,O as be,Pt as xe,Q as Se,Ut as Ce,_ as we,ar as Te,er as Ee,et as De,t as Oe,tr as D,u as ke,v as Ae,zn as je}from"./button--i2uMDDn.js";import{t as Me}from"./inline-C22rnPro.js";import{n as Ne}from"./dist-DW0QXQO3.js";import{r as Pe}from"./dist-CsekE4FL.js";import{t as Fe}from"./dist-DxFLceO5.js";import{o as Ie}from"./dist-BHE0dp6o.js";import{a as Le,c as Re,d as ze,i as Be,l as Ve,o as He,p as Ue,s as O,u as We}from"./esm-TSfGW7nz.js";import{B as Ge,C as k,Ct as Ke,Dt as qe,F as Je,Ft as Ye,Gt as Xe,H as Ze,Ht as Qe,I as $e,It as et,Jt as tt,K as nt,Kt as A,L as rt,Lt as it,M as at,Mt as ot,N as st,O as ct,Ot as lt,Pt as ut,Q as dt,R as ft,Rt as pt,S as mt,St as ht,Tt as gt,U as _t,Ut as vt,Vt as yt,Wt as bt,Xt as j,Yt as xt,Zt as M,_ as St,at as Ct,b as wt,bt as Tt,c as Et,ct as N,d as Dt,dt as P,en as Ot,et as kt,g as At,gt as jt,h as Mt,ht as Nt,i as Pt,it as Ft,j as It,k as Lt,kt as F,l as Rt,lt as zt,m as Bt,mt as I,n as Vt,o as Ht,ot as Ut,p as Wt,pt as Gt,qt as Kt,r as qt,st as Jt,t as Yt,u as Xt,ut as Zt,v as Qt,vt as L,w as $t,wt as en,x as tn,xt as nn,y as rn,yt as an,zt as on}from"./social-urls-DgAF08Xc.js";import{i as sn,n as cn,r as ln,t as un}from"./tabs-dtOcExye.js";import{t as dn}from"./dist-JLOy8o0Q.js";import{t as fn}from"./switch-CNjkOmwz.js";import{c as pn,i as mn,n as hn,o as gn,s as _n,t as vn}from"./select-PhPjIBBT.js";import{t as yn}from"./dropzone-E0bSX4_a.js";import{t as bn}from"./textarea-CeKw3wmV.js";import{n as xn,t as Sn}from"./toggle-group-DfhZIMTW.js";import{l as Cn,o as wn,t as Tn,u as En}from"./users-Pc8IRjk9.js";import{An as Dn,Ar as On,Bn as kn,Cn as An,Cr as jn,Dn as Mn,Fi as Nn,Gn as Pn,Hn as Fn,Ii as In,Jn as Ln,Ni as Rn,Or as zn,Pi as Bn,Pr as Vn,Qr as Hn,Sr as Un,Ti as Wn,Tn as R,Xr as Gn,Yn as Kn,Zn as qn,ar as Jn,br as Yn,ei as Xn,er as Zn,fr as Qn,hr as $n,ir as er,jn as tr,lr as nr,mr as rr,nr as ir,or as ar,ri as or,rn as sr,rr as cr,sr as lr,tr as ur,wi as dr,wn as fr,x as pr,xr as mr,zn as hr}from"./index-BacwlcOy.js";import{a as gr,i as _r,r as vr,t as yr}from"./newsletters-DZm3yLj8.js";import{a as br,n as xr,r as Sr,t as Cr}from"./tiers-EghDzCKc.js";import{t as wr}from"./referrers-nxR52jPI.js";import{a as Tr,i as Er,o as Dr,r as Or,s as kr,t as Ar}from"./member-custom-fields-9uXFBqSt.js";import{i as jr}from"./gift-links-CY3GwiVi.js";var z=e(t(),1),B=b(),Mr=e=>(0,B.jsxs)(`svg`,{fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,B.jsx)(`title`,{children:`social-facebook`}),(0,B.jsx)(`path`,{d:`M20 40.004c11.046 0 20-8.955 20-20 0-11.046-8.954-20-20-20s-20 8.954-20 20c0 11.045 8.954 20 20 20z`,fill:`#1977F3`}),(0,B.jsx)(`path`,{d:`m27.785 25.785.886-5.782h-5.546V16.25c0-1.58.773-3.125 3.26-3.125h2.522V8.204s-2.29-.39-4.477-.39c-4.568 0-7.555 2.767-7.555 7.781v4.408h-5.08v5.782h5.08v13.976a20.08 20.08 0 0 0 3.125.242c1.063 0 2.107-.085 3.125-.242V25.785h4.66z`,fill:`#fff`})]}),Nr=e=>(0,B.jsxs)(`svg`,{fill:`none`,viewBox:`0 0 92 31`,...e,children:[(0,B.jsx)(`title`,{children:`google`}),(0,B.jsx)(`path`,{d:`M39.15 15.898c0 4.303-3.378 7.473-7.525 7.473s-7.526-3.17-7.526-7.473c0-4.334 3.38-7.474 7.526-7.474 4.147 0 7.526 3.14 7.526 7.474zm-3.294 0c0-2.69-1.958-4.529-4.231-4.529-2.273 0-4.231 1.84-4.231 4.529 0 2.662 1.958 4.528 4.231 4.528 2.273 0 4.231-1.87 4.231-4.528z`,fill:`#EA4335`}),(0,B.jsx)(`path`,{d:`M55.386 15.898c0 4.303-3.379 7.473-7.526 7.473-4.146 0-7.526-3.17-7.526-7.473 0-4.33 3.38-7.474 7.526-7.474 4.147 0 7.526 3.14 7.526 7.474zm-3.294 0c0-2.69-1.959-4.529-4.232-4.529s-4.231 1.84-4.231 4.529c0 2.662 1.958 4.528 4.231 4.528 2.273 0 4.232-1.87 4.232-4.528z`,fill:`#FBBC05`}),(0,B.jsx)(`path`,{d:`M70.945 8.875v13.418c0 5.52-3.267 7.774-7.13 7.774-3.636 0-5.825-2.423-6.65-4.404l2.868-1.19c.511 1.217 1.763 2.652 3.779 2.652 2.472 0 4.004-1.52 4.004-4.38V21.67h-.115c-.737.906-2.158 1.698-3.95 1.698-3.751 0-7.188-3.255-7.188-7.443 0-4.22 3.437-7.501 7.188-7.501 1.789 0 3.21.792 3.95 1.671h.115V8.88h3.129v-.004zm-2.895 7.05c0-2.632-1.763-4.556-4.005-4.556-2.273 0-4.177 1.924-4.177 4.556 0 2.604 1.904 4.501 4.177 4.501 2.242 0 4.005-1.897 4.005-4.501z`,fill:`#4285F4`}),(0,B.jsx)(`path`,{d:`M76.103 1.01v21.903H72.89V1.011h3.213z`,fill:`#34A853`}),(0,B.jsx)(`path`,{d:`M88.624 18.357l2.558 1.699c-.826 1.216-2.815 3.312-6.251 3.312-4.262 0-7.445-3.282-7.445-7.474 0-4.444 3.21-7.473 7.076-7.473 3.893 0 5.798 3.086 6.42 4.754l.341.85-10.028 4.137c.768 1.5 1.962 2.264 3.636 2.264 1.678 0 2.841-.822 3.693-2.069zm-7.87-2.688l6.703-2.774c-.368-.933-1.478-1.583-2.783-1.583-1.674 0-4.005 1.472-3.92 4.357z`,fill:`#EA4335`}),(0,B.jsx)(`path`,{d:`M11.936 13.953v-3.17h10.726c.105.552.159 1.206.159 1.914 0 2.378-.653 5.32-2.757 7.416-2.046 2.123-4.66 3.255-8.124 3.255-6.42 0-11.818-5.21-11.818-11.605C.122 5.368 5.52.158 11.94.158c3.551 0 6.081 1.389 7.982 3.198l-2.246 2.237c-1.363-1.273-3.21-2.264-5.74-2.264-4.688 0-8.354 3.764-8.354 8.434s3.666 8.434 8.354 8.434c3.041 0 4.773-1.216 5.882-2.322.9-.896 1.492-2.176 1.725-3.925l-7.607.003z`,fill:`#4285F4`})]}),Pr=e=>(0,B.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,...e,children:(0,B.jsx)(`g`,{children:(0,B.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`,fill:`currentColor`})})}),Fr=({title:e,isVisible:t,children:n})=>t?(0,B.jsxs)(B.Fragment,{children:[e&&(0,B.jsx)(`h2`,{className:`mb-4 ml-2 text-base font-semibold tracking-normal text-black dark:text-grey-400`,children:e}),n&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`ul`,{className:`-mt-1 mb-7`,children:n}),(0,B.jsx)(Ue,{className:`mx-2 mb-7 border-grey-300 dark:border-grey-950`})]})]}):null,Ir=z.lazy(()=>he(()=>import(`./code-editor-view-BfkwQto2.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]),import.meta.url)),Lr=(0,z.forwardRef)(function(e,t){return(0,B.jsx)(z.Suspense,{fallback:null,children:(0,B.jsx)(Ir,{...e,ref:t})})}),Rr=({selectedValue:e=``,onSelect:t,options:n=[],otherOption:r={value:`other`,label:`Other...`},otherPlaceholder:i=`Enter custom value`,otherHint:a,backToListLabel:o=`Choose from list`,defaultListValue:s,validate:c,allowEmpty:l=!1,error:u,hint:d,title:f,testId:p,...m})=>{let{...h}=m,g=z.useMemo(()=>e&&!n.some(t=>t.value===e)&&e!==r.value,[e,n,r.value]),[_,v]=(0,z.useState)(!!g),[y,b]=(0,z.useState)(null),x=e=>{e&&(e.value===r.value?(v(!0),t(``)):(v(!1),t(e.value)))},S=e=>{let n=e.target.value,r=null;c&&(r=c(n)),!r&&!n&&!l&&(r=`Enter a value`),b(r),t(n)},C=()=>{v(!1),b(null),s&&n.find(e=>e.value===s)?t(s):n.length>0&&t(n[0].value)},w=z.useMemo(()=>n.some(e=>e.value===r.value)?n:[...n,r],[n,r]),ee=_||g,te=u||!!y,ne=y||(typeof d==`string`?d:``);if(ee)return(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(A,{"data-testid":p,error:te,hideTitle:!f,hint:te?ne:a&&typeof a==`string`?a:``,placeholder:i,title:f,value:e,onChange:S}),(0,B.jsx)(`div`,{className:`mt-2`,children:(0,B.jsx)(`button`,{className:`text-sm text-green-400 hover:text-green-500`,type:`button`,onClick:C,children:o})})]});let re=n.find(t=>t.value===e);return(0,B.jsx)(et,{...h,async:!1,error:u,hint:d,options:w,selectedOption:re,testId:p,title:f,onSelect:x})},zr=({icon:e,iconColorClass:t,children:n})=>(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(M,{colorClass:t,name:e,size:`sm`}),n]}),Br=({href:e,color:t,className:n,children:r,...i})=>{t||=`green`;let a=t===`black`?`transition text-black hover:text-black-700`:`text-${t} hover:text-${t}-400`;return n&&(a=`${a} ${n}`),(0,B.jsx)(`a`,{className:a,href:e,...i,children:r})},Vr=({trigger:e,triggerButtonProps:t,items:n,position:r=`start`,open:i,setOpen:a})=>(e||=(0,B.jsx)(j,{icon:`ellipsis`,label:`Menu`,hideLabel:!0,...t}),(0,B.jsx)(tt,{open:i,position:r,setOpen:a,trigger:e,closeOnItemClick:!0,children:(0,B.jsx)(`div`,{className:`flex min-w-[160px] flex-col justify-stretch py-1`,role:`none`,children:n.map(e=>(0,B.jsxs)(`button`,{className:`mx-1 flex cursor-pointer items-center gap-2 rounded-[2.5px] px-4 py-1.5 text-left hover:bg-grey-100 dark:hover:bg-grey-900 ${e.destructive?`text-red-500`:``}`,type:`button`,onClick:t=>{e.onClick&&e.onClick(t)},children:[e.icon&&(0,B.jsx)(`span`,{"aria-hidden":`true`,className:`flex`,children:(0,B.jsx)(M,{name:e.icon,size:`sm`})}),e.label]},e.id))})})),Hr=(0,z.forwardRef)(function({title:e,navid:t=``,icon:n,isCurrent:r=!1,isVisible:i=!0,onClick:a=()=>{},...o},s){let c=E(`mt-px flex h-[32px] w-100 cursor-pointer items-center rounded-md px-3 py-2 text-left font-medium transition-all hover:bg-grey-200 focus:bg-grey-100 dark:text-grey-600 dark:hover:bg-grey-950 dark:focus:bg-grey-900`,r?`bg-grey-200 text-black dark:bg-grey-950 dark:text-white`:`text-grey-800`,!i&&`hidden`);return(0,B.jsx)(`li`,{ref:s,...o,children:(0,B.jsxs)(`a`,{className:c,id:t,onClick:a,children:[n&&(0,B.jsx)(M,{className:`mr-[7px] size-[16px]`,name:n,size:`custom`}),e]})})}),Ur=({title:e,sticky:t=!1})=>(0,B.jsx)(`h2`,{className:E(`z-20 mb-px pb-10 text-2xl font-semibold tracking-tight`,t?`sticky top-0 mt-[calc(-8vmin-4px)] bg-gradient-to-t from-transparent via-white via-20% to-white pt-[calc(8vmin-4px)] dark:bg-black`:`mt-[-5px]`),children:e}),Wr=({title:e,isVisible:t=!0,children:n})=>(0,B.jsxs)(`div`,{className:E(`mb-[10vh]`,t?``:`hidden`),children:[e&&(0,B.jsx)(Ur,{title:e}),n&&(0,B.jsx)(`div`,{className:`mb-10 flex flex-col gap-12`,children:n})]}),Gr=({darkMode:e,fetchKoenigLexical:t,className:n,children:r,...i})=>(0,B.jsx)(`div`,{className:E(`admin-x-base`,n),...i,children:(0,B.jsx)(Be,{darkMode:e,fetchKoenigLexical:t,children:r})}),Kr={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(let e in Kr)Object.freeze(Kr[e]);var qr=Object.freeze(Kr),Jr=Object.create(null);for(let e in qr)Object.hasOwn(qr,e)&&(Jr[qr[e]]=e);var V={to:{},get:{}};V.get=function(e){let t=e.slice(0,3).toLowerCase(),n,r;switch(t){case`hsl`:n=V.get.hsl(e),r=`hsl`;break;case`hwb`:n=V.get.hwb(e),r=`hwb`;break;default:n=V.get.rgb(e),r=`rgb`;break}return n?{model:r,value:n}:null},V.get.rgb=function(e){if(!e)return null;let t=/^#([a-f\d]{3,4})$/i,n=/^#([a-f\d]{6})([a-f\d]{2})?$/i,r=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,i=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/,o=[0,0,0,1],s,c,l;if(s=e.match(n)){for(l=s[2],s=s[1],c=0;c<3;c++){let e=c*2;o[c]=Number.parseInt(s.slice(e,e+2),16)}l&&(o[3]=Number.parseInt(l,16)/255)}else if(s=e.match(t)){for(s=s[1],l=s[3],c=0;c<3;c++)o[c]=Number.parseInt(s[c]+s[c],16);l&&(o[3]=Number.parseInt(l+l,16)/255)}else if(s=e.match(r)){for(c=0;c<3;c++)o[c]=Number.parseFloat(s[c+1]);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.match(i)){for(c=0;c<3;c++)o[c]=Math.round(Number.parseFloat(s[c+1])*2.55);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.toLowerCase().match(a))return s[1]===`transparent`?[0,0,0,0]:Object.hasOwn(qr,s[1])?(o=qr[s[1]].slice(),o[3]=1,o):null;else return null;for(c=0;c<3;c++)o[c]=Yr(o[c],0,255);return o[3]=Yr(o[3],0,1),o},V.get.hsl=function(e){if(!e)return null;let t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,Yr(Number.parseFloat(t[2]),0,100),Yr(Number.parseFloat(t[3]),0,100),Yr(Number.isNaN(e)?1:e,0,1)]}return null},V.get.hwb=function(e){if(!e)return null;let t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,Yr(Number.parseFloat(t[2]),0,100),Yr(Number.parseFloat(t[3]),0,100),Yr(Number.isNaN(e)?1:e,0,1)]}return null},V.to.hex=function(...e){return`#`+Xr(e[0])+Xr(e[1])+Xr(e[2])+(e[3]<1?Xr(Math.round(e[3]*255)):``)},V.to.rgb=function(...e){return e.length<4||e[3]===1?`rgb(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`)`:`rgba(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`, `+e[3]+`)`},V.to.rgb.percent=function(...e){let t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||e[3]===1?`rgb(`+t+`%, `+n+`%, `+r+`%)`:`rgba(`+t+`%, `+n+`%, `+r+`%, `+e[3]+`)`},V.to.hsl=function(...e){return e.length<4||e[3]===1?`hsl(`+e[0]+`, `+e[1]+`%, `+e[2]+`%)`:`hsla(`+e[0]+`, `+e[1]+`%, `+e[2]+`%, `+e[3]+`)`},V.to.hwb=function(...e){let t=``;return e.length>=4&&e[3]!==1&&(t=`, `+e[3]),`hwb(`+e[0]+`, `+e[1]+`%, `+e[2]+`%`+t+`)`},V.to.keyword=function(...e){return Jr[e.slice(0,3)]};function Yr(e,t,n){return Math.min(Math.max(t,e),n)}function Xr(e){let t=Math.round(e).toString(16).toUpperCase();return t.length<2?`0`+t:t}var Zr={};for(let e of Object.keys(qr))Zr[qr[e]]=e;var H={rgb:{channels:3,labels:`rgb`},hsl:{channels:3,labels:`hsl`},hsv:{channels:3,labels:`hsv`},hwb:{channels:3,labels:`hwb`},cmyk:{channels:4,labels:`cmyk`},xyz:{channels:3,labels:`xyz`},lab:{channels:3,labels:`lab`},oklab:{channels:3,labels:[`okl`,`oka`,`okb`]},lch:{channels:3,labels:`lch`},oklch:{channels:3,labels:[`okl`,`okc`,`okh`]},hex:{channels:1,labels:[`hex`]},keyword:{channels:1,labels:[`keyword`]},ansi16:{channels:1,labels:[`ansi16`]},ansi256:{channels:1,labels:[`ansi256`]},hcg:{channels:3,labels:[`h`,`c`,`g`]},apple:{channels:3,labels:[`r16`,`g16`,`b16`]},gray:{channels:1,labels:[`gray`]}},Qr=(6/29)**3;function $r(e){let t=e>.0031308?1.055*e**(1/2.4)-.055:e*12.92;return Math.min(Math.max(0,t),1)}function ei(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(let e of Object.keys(H)){if(!(`channels`in H[e]))throw Error(`missing channels property: `+e);if(!(`labels`in H[e]))throw Error(`missing channel labels property: `+e);if(H[e].labels.length!==H[e].channels)throw Error(`channel and label counts mismatch: `+e);let{channels:t,labels:n}=H[e];delete H[e].channels,delete H[e].labels,Object.defineProperty(H[e],"channels",{value:t}),Object.defineProperty(H[e],"labels",{value:n})}H.rgb.hsl=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s,c;switch(a){case i:s=0;break;case t:s=(n-r)/o;break;case n:s=2+(r-t)/o;break;case r:s=4+(t-n)/o;break}s=Math.min(s*60,360),s<0&&(s+=360);let l=(i+a)/2;return c=a===i?0:l<=.5?o/(a+i):o/(2-a-i),[s,c*100,l*100]},H.rgb.hsv=function(e){let t,n,r,i,a,o=e[0]/255,s=e[1]/255,c=e[2]/255,l=Math.max(o,s,c),u=l-Math.min(o,s,c),d=function(e){return(l-e)/6/u+1/2};if(u===0)i=0,a=0;else{switch(a=u/l,t=d(o),n=d(s),r=d(c),l){case o:i=r-n;break;case s:i=1/3+t-r;break;case c:i=2/3+n-t;break}i<0?i+=1:i>1&&--i}return[i*360,a*100,l*100]},H.rgb.hwb=function(e){let t=e[0],n=e[1],r=e[2],i=H.rgb.hsl(e)[0],a=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,a*100,r*100]},H.rgb.oklab=function(e){let t=ei(e[0]/255),n=ei(e[1]/255),r=ei(e[2]/255),i=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*r),a=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*r),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},H.rgb.cmyk=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r),a=(1-t-i)/(1-i)||0,o=(1-n-i)/(1-i)||0,s=(1-r-i)/(1-i)||0;return[a*100,o*100,s*100,i*100]};function ti(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}H.rgb.keyword=function(e){let t=Zr[e];if(t)return t;let n=1/0,r;for(let t of Object.keys(qr)){let i=qr[t],a=ti(e,i);a<n&&(n=a,r=t)}return r},H.keyword.rgb=function(e){return[...qr[e]]},H.rgb.xyz=function(e){let t=ei(e[0]/255),n=ei(e[1]/255),r=ei(e[2]/255),i=t*.4124564+n*.3575761+r*.1804375,a=t*.2126729+n*.7151522+r*.072175,o=t*.0193339+n*.119192+r*.9503041;return[i*100,a*100,o*100]},H.rgb.lab=function(e){let t=H.rgb.xyz(e),n=t[0],r=t[1],i=t[2];return n/=95.047,r/=100,i/=108.883,n=n>Qr?n**(1/3):7.787*n+16/116,r=r>Qr?r**(1/3):7.787*r+16/116,i=i>Qr?i**(1/3):7.787*i+16/116,[116*r-16,500*(n-r),200*(r-i)]},H.hsl.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i,a;if(n===0)return a=r*255,[a,a,a];let o=r<.5?r*(1+n):r+n-r*n,s=2*r-o,c=[0,0,0];for(let e=0;e<3;e++)i=t+1/3*-(e-1),i<0&&i++,i>1&&i--,a=6*i<1?s+(o-s)*6*i:2*i<1?o:3*i<2?s+(o-s)*(2/3-i)*6:s,c[e]=a*255;return c},H.hsl.hsv=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=n,a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;let o=(r+n)/2;return[t,(r===0?2*i/(a+i):2*n/(r+n))*100,o*100]},H.hsv.rgb=function(e){let t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),c=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,c,o];case 1:return[s,r,o];case 2:return[o,r,c];case 3:return[o,s,r];case 4:return[c,o,r];case 5:return[r,o,s]}},H.hsv.hsl=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01),a,o;o=(2-n)*r;let s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a||=0,o/=2,[t,a*100,o*100]},H.hwb.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i=n+r,a;i>1&&(n/=i,r/=i);let o=Math.floor(6*t),s=1-r;a=6*t-o,o&1&&(a=1-a);let c=n+a*(s-n),l,u,d;switch(o){default:case 6:case 0:l=s,u=c,d=n;break;case 1:l=c,u=s,d=n;break;case 2:l=n,u=s,d=c;break;case 3:l=n,u=c,d=s;break;case 4:l=c,u=n,d=s;break;case 5:l=s,u=n,d=c;break}return[l*255,u*255,d*255]},H.cmyk.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100,a=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,n*(1-i)+i),s=1-Math.min(1,r*(1-i)+i);return[a*255,o*255,s*255]},H.xyz.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i,a,o;return i=t*3.2404542+n*-1.5371385+r*-.4985314,a=t*-.969266+n*1.8760108+r*.041556,o=t*.0556434+n*-.2040259+r*1.0572252,i=$r(i),a=$r(a),o=$r(o),[i*255,a*255,o*255]},H.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];return t/=95.047,n/=100,r/=108.883,t=t>Qr?t**(1/3):7.787*t+16/116,n=n>Qr?n**(1/3):7.787*n+16/116,r=r>Qr?r**(1/3):7.787*r+16/116,[116*n-16,500*(t-n),200*(n-r)]},H.xyz.oklab=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=Math.cbrt(.8189330101*t+.3618667424*n-.1288597137*r),a=Math.cbrt(.0329845436*t+.9293118715*n+.0361456387*r),o=Math.cbrt(.0482003018*t+.2643662691*n+.633851707*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},H.oklab.oklch=function(e){return H.lab.lch(e)},H.oklab.xyz=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(.999999998*t+.396337792*n+.215803758*r)**3,a=(1.000000008*t-.105561342*n-.063854175*r)**3,o=(1.000000055*t-.089484182*n-1.291485538*r)**3,s=1.227013851*i-.55779998*a+.281256149*o,c=-.040580178*i+1.11225687*a-.071676679*o,l=-.076381285*i-.421481978*a+1.58616322*o;return[s*100,c*100,l*100]},H.oklab.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(t+.3963377774*n+.2158037573*r)**3,a=(t-.1055613458*n-.0638541728*r)**3,o=(t-.0894841775*n-1.291485548*r)**3,s=$r(4.0767416621*i-3.3077115913*a+.2309699292*o),c=$r(-1.2684380046*i+2.6097574011*a-.3413193965*o),l=$r(-.0041960863*i-.7034186147*a+1.707614701*o);return[s*255,c*255,l*255]},H.oklch.oklab=function(e){return H.lch.lab(e)},H.lab.xyz=function(e){let t=e[0],n=e[1],r=e[2],i,a,o;a=(t+16)/116,i=n/500+a,o=a-r/200;let s=a**3,c=i**3,l=o**3;return a=s>Qr?s:(a-16/116)/7.787,i=c>Qr?c:(i-16/116)/7.787,o=l>Qr?l:(o-16/116)/7.787,i*=95.047,a*=100,o*=108.883,[i,a,o]},H.lab.lch=function(e){let t=e[0],n=e[1],r=e[2],i;return i=Math.atan2(r,n)*360/2/Math.PI,i<0&&(i+=360),[t,Math.sqrt(n*n+r*r),i]},H.lch.lab=function(e){let t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},H.rgb.ansi16=function(e,t=null){let[n,r,i]=e,a=t===null?H.rgb.hsv(e)[2]:t;if(a=Math.round(a/50),a===0)return 30;let o=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return a===2&&(o+=60),o},H.hsv.ansi16=function(e){return H.rgb.ansi16(H.hsv.rgb(e),e[2])},H.rgb.ansi256=function(e){let t=e[0],n=e[1],r=e[2];return t>>4==n>>4&&n>>4==r>>4?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},H.ansi16.rgb=function(e){e=e[0];let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let n=(Math.trunc(e>50)+1)*.5;return[(t&1)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},H.ansi256.rgb=function(e){if(e=e[0],e>=232){let t=(e-232)*10+8;return[t,t,t]}e-=16;let t;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},H.rgb.hex=function(e){let t=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return`000000`.slice(t.length)+t},H.hex.rgb=function(e){let t=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},H.rgb.hcg=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a,s,c=o<1?a/(1-o):0;return s=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,s/=6,s%=1,[s*360,o*100,c*100]},H.hsl.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n),i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],r*100,i*100]},H.hsv.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},H.hcg.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];let i=[0,0,0],a=t%1*6,o=a%1,s=1-o,c=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return c=(1-n)*r,[(n*i[0]+c)*255,(n*i[1]+c)*255,(n*i[2]+c)*255]},H.hcg.hsv=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],r*100,n*100]},H.hcg.hsl=function(e){let t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],r*100,n*100]},H.hcg.hwb=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],(n-t)*100,(1-n)*100]},H.hwb.hcg=function(e){let t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},H.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},H.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},H.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},H.gray.hsl=function(e){return[0,0,e[0]]},H.gray.hsv=H.gray.hsl,H.gray.hwb=function(e){return[0,100,e[0]]},H.gray.cmyk=function(e){return[0,0,0,e[0]]},H.gray.lab=function(e){return[e[0],0,0]},H.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return`000000`.slice(n.length)+n},H.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function ni(){let e={},t=Object.keys(H);for(let{length:n}=t,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function ri(e){let t=ni(),n=[e];for(t[e].distance=0;n.length>0;){let e=n.pop(),r=Object.keys(H[e]);for(let{length:i}=r,a=0;a<i;a++){let i=r[a],o=t[i];o.distance===-1&&(o.distance=t[e].distance+1,o.parent=e,n.unshift(i))}}return t}function ii(e,t){return function(n){return t(e(n))}}function ai(e,t){let n=[t[e].parent,e],r=H[t[e].parent][e],i=t[e].parent;for(;t[i].parent;)n.unshift(t[i].parent),r=ii(H[t[i].parent][i],r),i=t[i].parent;return r.conversion=n,r}function oi(e){let t=ri(e),n={},r=Object.keys(t);for(let{length:e}=r,i=0;i<e;i++){let e=r[i];t[e].parent!==null&&(n[e]=ai(e,t))}return n}var U={},si=Object.keys(H);function ci(e){let t=function(...t){let n=t[0];return n==null?n:(n.length>1&&(t=n),e(t))};return`conversion`in e&&(t.conversion=e.conversion),t}function li(e){let t=function(...t){let n=t[0];if(n==null)return n;n.length>1&&(t=n);let r=e(t);if(typeof r==`object`)for(let{length:e}=r,t=0;t<e;t++)r[t]=Math.round(r[t]);return r};return`conversion`in e&&(t.conversion=e.conversion),t}for(let e of si){U[e]={},Object.defineProperty(U[e],"channels",{value:H[e].channels}),Object.defineProperty(U[e],"labels",{value:H[e].labels});let t=oi(e),n=Object.keys(t);for(let r of n){let n=t[r];U[e][r]=li(n),U[e][r].raw=ci(n)}}var ui=[`keyword`,`gray`,`hex`],di={};for(let e of Object.keys(U))di[[...U[e].labels].sort().join(``)]=e;var fi={};function W(e,t){if(!(this instanceof W))return new W(e,t);if(t&&t in ui&&(t=null),t&&!(t in U))throw Error(`Unknown model: `+t);let n,r;if(e==null)this.model=`rgb`,this.color=[0,0,0],this.valpha=1;else if(e instanceof W)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(typeof e==`string`){let t=V.get(e);if(t===null)throw Error(`Unable to parse color from string: `+e);this.model=t.model,r=U[this.model].channels,this.color=t.value.slice(0,r),this.valpha=typeof t.value[r]==`number`?t.value[r]:1}else if(e.length>0){this.model=t||`rgb`,r=U[this.model].channels;let n=Array.prototype.slice.call(e,0,r);this.color=gi(n,r),this.valpha=typeof e[r]==`number`?e[r]:1}else if(typeof e==`number`)this.model=`rgb`,this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;let t=Object.keys(e);`alpha`in e&&(t.splice(t.indexOf(`alpha`),1),this.valpha=typeof e.alpha==`number`?e.alpha:0);let r=t.sort().join(``);if(!(r in di))throw Error(`Unable to parse color from object: `+JSON.stringify(e));this.model=di[r];let{labels:i}=U[this.model],a=[];for(n=0;n<i.length;n++)a.push(e[i[n]]);this.color=gi(a)}if(fi[this.model])for(r=U[this.model].channels,n=0;n<r;n++){let e=fi[this.model][n];e&&(this.color[n]=e(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}W.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in V.to?this:this.rgb();t=t.round(typeof e==`number`?e:1);let n=t.valpha===1?t.color:[...t.color,this.valpha];return V.to[t.model](...n)},percentString(e){let t=this.rgb().round(typeof e==`number`?e:1),n=t.valpha===1?t.color:[...t.color,this.valpha];return V.to.rgb.percent(...n)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){let e={},{channels:t}=U[this.model],{labels:n}=U[this.model];for(let r=0;r<t;r++)e[n[r]]=this.color[r];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray(){let e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject(){let e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new W([...this.color.map(mi(e)),this.valpha],this.model)},alpha(e){return e===void 0?this.valpha:new W([...this.color,Math.max(0,Math.min(1,e))],this.model)},red:G(`rgb`,0,K(255)),green:G(`rgb`,1,K(255)),blue:G(`rgb`,2,K(255)),hue:G([`hsl`,`hsv`,`hsl`,`hwb`,`hcg`],0,e=>(e%360+360)%360),saturationl:G(`hsl`,1,K(100)),lightness:G(`hsl`,2,K(100)),saturationv:G(`hsv`,1,K(100)),value:G(`hsv`,2,K(100)),chroma:G(`hcg`,1,K(100)),gray:G(`hcg`,2,K(100)),white:G(`hwb`,1,K(100)),wblack:G(`hwb`,2,K(100)),cyan:G(`cmyk`,0,K(100)),magenta:G(`cmyk`,1,K(100)),yellow:G(`cmyk`,2,K(100)),black:G(`cmyk`,3,K(100)),x:G(`xyz`,0,K(95.047)),y:G(`xyz`,1,K(100)),z:G(`xyz`,2,K(108.833)),l:G(`lab`,0,K(100)),a:G(`lab`,1),b:G(`lab`,2),keyword(e){return e===void 0?U[this.model].keyword(this.color):new W(e)},hex(e){return e===void 0?V.to.hex(...this.rgb().round().color):new W(e)},hexa(e){if(e!==void 0)return new W(e);let t=this.rgb().round().color,n=Math.round(this.valpha*255).toString(16).toUpperCase();return n.length===1&&(n=`0`+n),V.to.hex(...t)+n},rgbNumber(){let e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){let e=this.rgb().color,t=[];for(let[n,r]of e.entries()){let e=r/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){let t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){let t=this.contrast(e);return t>=7?`AAA`:t>=4.5?`AA`:``},isDark(){let e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){let e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){let t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){let t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){let t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){let t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){let t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){let t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){let e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return W.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){let t=this.hsl(),n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw Error(`Argument to "mix" was not a Color instance, but rather an instance of `+typeof e);let n=e.rgb(),r=this.rgb(),i=t===void 0?.5:t,a=2*i-1,o=n.alpha()-r.alpha(),s=((a*o===-1?a:(a+o)/(1+a*o))+1)/2,c=1-s;return W.rgb(s*n.red()+c*r.red(),s*n.green()+c*r.green(),s*n.blue()+c*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(let e of Object.keys(U)){if(ui.includes(e))continue;let{channels:t}=U[e];W.prototype[e]=function(...t){return this.model===e?new W(this):t.length>0?new W(t,e):new W([...hi(U[this.model][e].raw(this.color)),this.valpha],e)},W[e]=function(...n){let r=n[0];return typeof r==`number`&&(r=gi(n,t)),new W(r,e)}}function pi(e,t){return Number(e.toFixed(t))}function mi(e){return function(t){return pi(t,e)}}function G(e,t,n){e=Array.isArray(e)?e:[e];for(let r of e)(fi[r]||=[])[t]=n;return e=e[0],function(r){let i;return r===void 0?(i=this[e]().color[t],n&&(i=n(i)),i):(n&&(r=n(r)),i=this[e](),i.color[t]=r,i)}}function K(e){return function(t){return Math.max(0,Math.min(e,t))}}function hi(e){return Array.isArray(e)?e:[e]}function gi(e,t){for(let n=0;n<t;n++)typeof e[n]!=`number`&&(e[n]=0);return e}var _i=[`PageUp`,`PageDown`],vi=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],yi={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},bi=`Slider`,[xi,Si,Ci]=Wn(bi),[wi,Ti]=Pe(bi,[Ci]),[Ei,Di]=wi(bi),Oi=z.forwardRef((e,t)=>{let{name:n,min:r=0,max:i=100,step:a=1,orientation:o=`horizontal`,disabled:s=!1,minStepsBetweenThumbs:c=0,defaultValue:l=[r],value:u,onValueChange:d=()=>{},onValueCommit:f=()=>{},inverted:p=!1,form:m,...h}=e,g=z.useRef(new Set),_=z.useRef(0),v=z.useRef(!1),y=o===`horizontal`?ji:Mi,[b=[],x]=C({prop:u,defaultProp:l,onChange:e=>{[...g.current][_.current]?.focus({preventScroll:!0,focusVisible:v.current}),v.current=!1,d(e)}}),w=z.useRef(b);function ee(e){re(e,Zi(b,e))}function te(e){re(e,_.current)}function ne(){let e=w.current[_.current];b[_.current]!==e&&f(b)}function re(e,t,{commit:n}={commit:!1}){let o=na(a),s=pn(ra(Math.round((e-r)/a)*a+r,o),[r,i]);x((e=[])=>{let r=Ji(e,s,t);if(ea(r,c*a)){_.current=r.indexOf(s);let t=String(r)!==String(e);return t&&n&&f(r),t?r:e}else return e})}return(0,B.jsx)(Ei,{scope:e.__scopeSlider,name:n,disabled:s,min:r,max:i,valueIndexToChangeRef:_,thumbs:g.current,values:b,orientation:o,form:m,children:(0,B.jsx)(xi.Provider,{scope:e.__scopeSlider,children:(0,B.jsx)(xi.Slot,{scope:e.__scopeSlider,children:(0,B.jsx)(y,{"aria-disabled":s,"data-disabled":s?``:void 0,...h,ref:t,onPointerDown:S(h.onPointerDown,()=>{s||(w.current=b,v.current=!1)}),min:r,max:i,inverted:p,onSlideStart:s?void 0:ee,onSlideMove:s?void 0:te,onSlideEnd:s?void 0:ne,onHomeKeyDown:()=>{s||(v.current=!0,re(r,0,{commit:!0}))},onEndKeyDown:()=>{s||(v.current=!0,re(i,b.length-1,{commit:!0}))},onStepKeyDown:({event:e,direction:t})=>{if(!s){v.current=!0;let n=_i.includes(e.key)||e.shiftKey&&vi.includes(e.key)?10:1,r=_.current,i=b[r];re(i+a*n*t,r,{commit:!0})}}})})})})});Oi.displayName=bi;var[ki,Ai]=wi(bi,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),ji=z.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:o,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,[d,f]=z.useState(null),p=ge(t,f),m=z.useRef(void 0),h=dr(i),g=h===`ltr`,_=g&&!a||!g&&a;function v(e){let t=m.current||d.getBoundingClientRect(),i=ta([0,t.width],_?[n,r]:[r,n]);return m.current=t,i(e-t.left)}return(0,B.jsx)(ki,{scope:e.__scopeSlider,startEdge:_?`left`:`right`,endEdge:_?`right`:`left`,direction:_?1:-1,size:`width`,children:(0,B.jsx)(Ni,{dir:h,"data-orientation":`horizontal`,...u,ref:p,style:{...u.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=v(e.clientX);o?.(t)},onSlideMove:e=>{let t=v(e.clientX);s?.(t)},onSlideEnd:()=>{m.current=void 0,c?.()},onStepKeyDown:e=>{let t=yi[_?`from-left`:`from-right`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),Mi=z.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:s,onStepKeyDown:c,...l}=e,u=z.useRef(null),d=ge(t,u),f=z.useRef(void 0),p=!i;function m(e){let t=f.current||u.current.getBoundingClientRect(),i=ta([0,t.height],p?[r,n]:[n,r]);return f.current=t,i(e-t.top)}return(0,B.jsx)(ki,{scope:e.__scopeSlider,startEdge:p?`bottom`:`top`,endEdge:p?`top`:`bottom`,size:`height`,direction:p?1:-1,children:(0,B.jsx)(Ni,{"data-orientation":`vertical`,...l,ref:d,style:{...l.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=m(e.clientY);a?.(t)},onSlideMove:e=>{let t=m(e.clientY);o?.(t)},onSlideEnd:()=>{f.current=void 0,s?.()},onStepKeyDown:e=>{let t=yi[p?`from-bottom`:`from-top`].includes(e.key);c?.({event:e,direction:t?-1:1})}})})}),Ni=z.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:c,...l}=e,u=Di(bi,n);return(0,B.jsx)(Fe.span,{...l,ref:t,onKeyDown:S(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):_i.concat(vi).includes(e.key)&&(c(e),e.preventDefault())}),onPointerDown:S(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),u.thumbs.has(t)?t.focus({preventScroll:!0,focusVisible:!1}):r(e)}),onPointerMove:S(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:S(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),Pi=`SliderTrack`,Fi=z.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=Di(Pi,n);return(0,B.jsx)(Fe.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})});Fi.displayName=Pi;var Ii=`SliderRange`,Li=z.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=Di(Ii,n),a=Ai(Ii,n),o=ge(t,z.useRef(null)),s=i.values.length,c=i.values.map(e=>Yi(e,i.min,i.max)),l=s>1?Math.min(...c):0,u=100-Math.max(...c);return(0,B.jsx)(Fe.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:o,style:{...e.style,[a.startEdge]:l+`%`,[a.endEdge]:u+`%`}})});Li.displayName=Ii;var Ri=`SliderThumb`,[zi,Bi]=wi(Ri),Vi=`SliderThumbProvider`;function Hi(e){let{__scopeSlider:t,name:n,children:r,internal_do_not_use_render:i}=e,a=Di(Vi,t),o=Si(t),[s,c]=z.useState(null),l=z.useMemo(()=>s?o().findIndex(e=>e.ref.current===s):-1,[o,s]),u=Ie(s),d=s?!!a.form||!!s.closest(`form`):!0,f=a.values[l],p=n??(a.name?a.name+(a.values.length>1?`[]`:``):void 0),m=f===void 0?0:Yi(f,a.min,a.max);z.useEffect(()=>{if(s)return a.thumbs.add(s),()=>{a.thumbs.delete(s)}},[s,a.thumbs]);let h={value:f,name:p,form:a.form,isFormControl:d,index:l,thumb:s,onThumbChange:c,percent:m,size:u};return(0,B.jsx)(zi,{scope:t,...h,children:ia(i)?i(h):r})}Hi.displayName=Vi;var Ui=`SliderThumbTrigger`,Wi=z.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=Di(Ui,n),a=Ai(Ui,n),{index:o,value:s,percent:c,size:l,onThumbChange:u}=Bi(Ui,n),d=ge(t,u),f=Xi(o,i.values.length),p=l?.[a.size],m=p?Qi(p,c,a.direction):0;return(0,B.jsx)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[a.startEdge]:`calc(${c}% + ${m}px)`},children:(0,B.jsx)(xi.ItemSlot,{scope:n,children:(0,B.jsx)(Fe.span,{role:`slider`,"aria-label":e[`aria-label`]||f,"aria-valuemin":i.min,"aria-valuenow":s,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,tabIndex:i.disabled?void 0:0,...r,ref:d,style:s===void 0?{display:`none`}:e.style,onFocus:S(e.onFocus,()=>{i.valueIndexToChangeRef.current=o})})})})});Wi.displayName=Ui;var Gi=z.forwardRef((e,t)=>{let{__scopeSlider:n,name:r,...i}=e;return(0,B.jsx)(Hi,{__scopeSlider:n,name:r,internal_do_not_use_render:({index:e,isFormControl:r})=>(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Wi,{...i,ref:t,__scopeSlider:n}),r?(0,B.jsx)(qi,{__scopeSlider:n},e):null]})})});Gi.displayName=Ri;var Ki=`SliderBubbleInput`,qi=z.forwardRef(({__scopeSlider:e,...t},n)=>{let{value:r,name:i,form:a}=Bi(Ki,e),o=z.useRef(null),s=ge(o,n),c=dn(r);return z.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(c!==r&&n){let t=new Event(`input`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[c,r]),(0,B.jsx)(Fe.input,{style:{display:`none`},name:i,form:a,...t,ref:s,defaultValue:r})});qi.displayName=Ki;function Ji(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}function Yi(e,t,n){return pn(100/(n-t)*(e-t),[0,100])}function Xi(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}function Zi(e,t){if(e.length===1)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}function Qi(e,t,n){let r=e/2;return(r-ta([0,50],[0,r])(t)*n)*n}function $i(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function ea(e,t){if(t>0){let n=$i(e);return Math.min(...n)>=t}return!0}function ta(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function na(e){if(!Number.isFinite(e))return 0;let t=e.toString();if(t.includes(`e`)){let[e,n]=t.split(`e`),r=e.split(`.`)[1]||``,i=Number(n);return Math.max(0,r.length-i)}let n=t.split(`.`)[1];return n?n.length:0}function ra(e,t){let n=10**t;return Math.round(e*n)/n}function ia(e){return typeof e==`function`}var aa=(0,z.createContext)(void 0),oa=()=>{let e=(0,z.useContext)(aa);if(!e)throw Error(`useColorPicker must be used within a ColorPickerProvider`);return e},sa=({value:e,defaultValue:t=`rgb(0 0 0)`,onChange:n,className:r,...i})=>{let a=W(e??t),[o,s]=(0,z.useState)(a.hue()),[c,l]=(0,z.useState)(a.saturationl()),[u,d]=(0,z.useState)(a.lightness()),[f,p]=(0,z.useState)(a.alpha()*100),[m,h]=(0,z.useState)(`hex`);return(0,z.useEffect)(()=>{if(e){let t=W(e);s(t.hue()),l(t.saturationl()),d(t.lightness()),p(t.alpha()*100)}},[e]),(0,z.useEffect)(()=>{n&&n(W.hsl(o,c,u).alpha(f/100).hex())},[o,c,u,f,n]),(0,B.jsx)(aa.Provider,{value:{hue:o,saturation:c,lightness:u,alpha:f,mode:m,setHue:s,setSaturation:l,setLightness:d,setAlpha:p,setMode:h},children:(0,B.jsx)(`div`,{className:D(`flex size-full flex-col gap-4`,r),...i})})},ca=(0,z.memo)(({className:e,...t})=>{let n=(0,z.useRef)(null),[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)(0),{hue:l,saturation:u,lightness:d,setSaturation:f,setLightness:p}=oa(),m=(0,z.useMemo)(()=>`linear-gradient(0deg, rgba(0,0,0,1), rgba(0,0,0,0)),
3
- linear-gradient(90deg, rgba(255,255,255,1), rgba(255,255,255,0)),
4
- hsl(${l}, 100%, 50%)`,[l]);(0,z.useEffect)(()=>{let e=u/100,t=e<.01?100:50+50*(1-e),n=Math.max(0,Math.min(1,1-d/t));o(e),c(n)},[u,d]);let h=(0,z.useCallback)(e=>{if(!n.current)return;let t=n.current.getBoundingClientRect(),r=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width)),i=Math.max(0,Math.min(1,(e.clientY-t.top)/t.height));o(r),c(i),f(r*100);let a=(r<.01?100:50+50*(1-r))*(1-i);p(a)},[f,p]),g=(0,z.useCallback)(e=>{r&&h(e)},[r,h]);return(0,z.useEffect)(()=>{let e=()=>i(!1);return r&&(window.addEventListener(`pointermove`,g),window.addEventListener(`pointerup`,e)),()=>{window.removeEventListener(`pointermove`,g),window.removeEventListener(`pointerup`,e)}},[r,g]),(0,B.jsx)(`div`,{ref:n,className:D(`relative size-full cursor-crosshair rounded`,e),style:{background:m},onPointerDown:e=>{e.preventDefault(),i(!0),h(e.nativeEvent)},...t,children:(0,B.jsx)(`div`,{className:`pointer-events-none absolute size-4 -translate-1/2 rounded-full border-2 border-white`,style:{left:`${a*100}%`,top:`${s*100}%`,boxShadow:`0 0 0 1px rgba(0,0,0,0.5)`}})})});ca.displayName=`ColorPickerSelection`;var la=({className:e,...t})=>{let{hue:n,setHue:r}=oa();return(0,B.jsxs)(Oi,{className:D(`relative flex h-4 w-full touch-none`,e),max:360,step:1,value:[n],onValueChange:([e])=>r(e),...t,children:[(0,B.jsx)(Fi,{className:`relative my-0.5 h-3 w-full grow rounded-full bg-[linear-gradient(90deg,red,yellow,lime,aqua,blue,magenta,red)]`,children:(0,B.jsx)(Li,{className:`absolute h-full`})}),(0,B.jsx)(Gi,{className:`block size-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`})]})},ua=({className:e,...t})=>{let{setHue:n,setSaturation:r,setLightness:i,setAlpha:a}=oa();return typeof window<`u`&&`EyeDropper`in window?(0,B.jsx)(Oe,{className:D(`size-8 shrink-0 text-muted-foreground`,e),size:`icon`,type:`button`,variant:`outline`,onClick:async()=>{try{let[e,t,o]=W((await new EyeDropper().open()).sRGBHex).hsl().array();n(e),r(t),i(o),a(100)}catch(e){console.error(`EyeDropper failed:`,e)}},...t,children:(0,B.jsx)(De,{size:16})}):null},da=[`hex`,`rgb`,`hsl`],fa=({...e})=>{let{mode:t,setMode:n}=oa();return(0,B.jsxs)(vn,{value:t,onValueChange:n,children:[(0,B.jsx)(gn,{className:`h-8 w-20 shrink-0 text-xs`,...e,children:(0,B.jsx)(_n,{placeholder:`Mode`})}),(0,B.jsx)(hn,{children:da.map(e=>(0,B.jsx)(mn,{className:`text-xs`,value:e,children:e.toUpperCase()},e))})]})},pa=({className:e,...t})=>{let{hue:n,saturation:r,lightness:i,mode:a,setHue:o,setSaturation:s,setLightness:c,setAlpha:l}=oa(),u=W.hsl(n,r,i),[d,f]=(0,z.useState)(null),p=(e,t)=>{try{if(a===`hex`){let t=W(e);o(t.hue()),s(t.saturationl()),c(t.lightness()),l(t.alpha()*100)}else if((a===`rgb`||a===`hsl`)&&t!==void 0){let n=u[a]().array().map(e=>Math.round(e));n[t]=parseInt(e,10)||0;let r=W[a](n[0],n[1],n[2]);o(r.hue()),s(r.saturationl()),c(r.lightness())}}catch{}};if(a===`hex`){let n=u.hex();return(0,B.jsx)(`div`,{className:D(`relative flex w-full items-center -space-x-px rounded-md`,e),...t,children:(0,B.jsx)(nr,{className:`h-8 px-2 font-mono text-xs shadow-none`,type:`text`,value:d??n,onBlur:()=>{f(null)},onChange:e=>{f(e.target.value),p(e.target.value)}})})}if(a===`rgb`||a===`hsl`){let n=u[a]().array().map(e=>Math.round(e));return(0,B.jsx)(`div`,{className:D(`flex flex-1 items-stretch -space-x-px rounded-md`,e),...t,children:n.map((e,t)=>(0,B.jsx)(nr,{className:D(`h-8 flex-1 px-2 font-mono text-xs shadow-none focus:z-10`,t&&`rounded-l-none`,t<n.length-1&&`rounded-r-none`),maxLength:3,size:4,type:`text`,value:e,onChange:e=>{p(e.target.value,t)}},t))})}return null},ma=e=>(0,B.jsxs)(sa,{className:`w-auto min-w-80`,...e,children:[(0,B.jsx)(ca,{className:`aspect-square`}),(0,B.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,B.jsx)(ua,{}),(0,B.jsx)(la,{})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,B.jsx)(fa,{}),(0,B.jsx)(pa,{})]})]}),ha=()=>{let{isDirty:e}=Ve(),t=()=>{window.location.hash=`/`};return(0,B.jsx)(j,{className:`text-grey-700 hover:text-grey-900!`,"data-testid":`exit-settings`,icon:`close`,id:`done-button`,label:``,link:!0,title:`Close (ESC)`,onClick:()=>lt(e,t)})},ga=(e,t)=>{let[n,r]=(0,z.useState)(`Save`),[i,a]=(0,z.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)}}},_a=O.create(({afterClose:e})=>{let{localSettings:t,handleSave:n,updateSetting:r}=k(),i=Re(),[a,o]=R(t,[`codeinjection_head`,`codeinjection_foot`]),[s,c]=(0,z.useState)(`header`),l=(0,z.useRef)(null),u=(0,z.useRef)(null),d=(0,z.useMemo)(()=>he(()=>import(`./dist-pHiOxyxa.js`).then(e=>e.html()),__vite__mapDeps([26,24,27,28,1,29,25]),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)},m=[{id:`header`,title:`Site header`,contents:(0,B.jsx)(Lr,{height:`full`,...f,ref:l,className:`mt-2`,"data-testid":`header-code`,autoFocus:!0}),tabWrapperClassName:`flex-auto`,containerClassName:`h-full`},{id:`footer`,title:`Site footer`,contents:(0,B.jsx)(Lr,{height:`full`,...p,ref:u,className:`mt-2`,"data-testid":`footer-code`}),tabWrapperClassName:`flex-auto`,containerClassName:`h-full`}],{savingTitle:h,isSaving:g,onSaveClick:_}=ga(n,!0);return(0,z.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),_())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),(0,B.jsx)(qe,{afterClose:e,backDropClick:!1,cancelLabel:`Close`,footer:(0,B.jsx)(B.Fragment,{}),height:`full`,size:`full`,testId:`modal-code-injection`,children:(0,B.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,B.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,B.jsx)(ze,{level:2,children:`Code injection`}),(0,B.jsx)(ot,{buttons:[{label:`Close`,color:`outline`,onClick:()=>{i.remove(),e?.()}},{disabled:g,label:h,color:h===`Saved`?`green`:`black`,onClick:_}]})]}),(0,B.jsx)(xt,{containerClassName:`flex-auto flex flex-col mb-16`,selectedTab:s,tabs:m,onTabChange:c})]})})}),q=({keywords:e,navid:t,children:n,...r})=>{let{checkVisible:i,noResult:a,registerComponent:o,unregisterComponent:s}=nt(),{route:c}=P(),[l,u]=(0,z.useState)(!1),{ref:d}=Ft(t),f=(0,z.useId)(),p=Jt(t||`component`,f);(0,z.useEffect)(()=>(o(p,e),()=>{s(p)}),[p,e,o,s]),(0,z.useEffect)(()=>{if(u(c===t),c===t){let e=setTimeout(()=>u(!1),2e3);return()=>clearTimeout(e)}},[c,t]);let m=z.Children.toArray(n).some(e=>z.isValidElement(e)&&e.type===`img`)?(0,B.jsx)(`div`,{className:`-mx-5 -mb-5 overflow-hidden rounded-b-xl bg-grey-50 md:-mx-7 md:-mb-7`,children:z.Children.map(n,e=>z.isValidElement(e)&&e.type===`img`?z.cloneElement(e,{className:`${e.props.className||``} h-full w-full rounded-b-xl`.trim()}):e)}):n;return(0,B.jsx)(Nt,{ref:d,highlight:l,isVisible:i(e)||a,navid:t,...r,children:m})},va=class extends z.Component{state={hasError:!1};constructor(e){super(e)}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,t){o(n=>{n.setTag(`adminx_settings_component`,t.componentStack),i(e)}),console.error(e),console.error(`In component:`,t.componentStack)}render(){return this.state.hasError?(0,B.jsxs)(Qe,{color:`red`,children:[`An error occurred loading `,this.props.name,`. Please refresh and try again.`]}):this.props.children}},J=(e,t)=>function(n){return(0,B.jsx)(va,{name:t,children:(0,B.jsx)(e,{...n})})},ya=J(({keywords:e})=>(0,B.jsx)(q,{customHeader:(0,B.jsxs)(`div`,{className:`z-10 flex items-start justify-between`,children:[(0,B.jsx)(jt,{description:`Add custom code to your publication.`,title:`Code injection`}),(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Open`,size:`sm`,onClick:()=>{O.show(_a)}})]}),description:`Add custom code to your publication`,keywords:e,navid:`code-injection`,testId:`code-injection`,title:`Code injection`}),`Code injection`),ba=h({method:`POST`,path:()=>`/db/`,body:e=>{let t=new FormData;return t.append(`importfile`,e),t}}),xa=h({method:`DELETE`,path:()=>`/db/`}),Sa=()=>d(`/db/`),Ca=h({method:`POST`,path:()=>`/authentication/reset/`}),wa=J(({keywords:e})=>{let{mutateAsync:t}=xa(),{mutateAsync:n}=Ca(),{mutateAsync:r}=jr(),i=s(),a=g(),{config:o}=N(),{totalUsers:c}=ft(),l=!!o?.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,B.jsx)(q,{customHeader:(0,B.jsx)(jt,{description:`Destructive actions that affect your entire site.`,title:`Danger zone`}),keywords:e,navid:`dangerzone`,testId:`dangerzone`,children:(0,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsx)(Ke,{action:(0,B.jsx)(j,{"aria-label":`Delete all content`,color:`red`,label:`Delete`,onClick:()=>{O.show(F,{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?`,okColor:`red`,okLabel:`Delete`,onOk:async e=>{try{await t(null),L({title:`All content deleted from database.`,type:`success`}),e?.remove(),await i.refetchQueries()}catch(e){a(e)}}})}}),bgOnHover:!1,detail:`Permanently delete all posts and tags from the database.`,testId:`delete-all-content`,title:`Delete all content`}),l&&(0,B.jsx)(Ke,{action:(0,B.jsx)(j,{"aria-label":`Reset all authentication`,color:`red`,label:`Reset`,onClick:()=>{O.show(F,{title:`Reset all authentication?`,prompt:(0,B.jsxs)(B.Fragment,{children:[(0,B.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,B.jsx)(`strong`,{children:`Settings → Advanced → Integrations`}),`.`]}),(0,B.jsxs)(`p`,{children:[u,` Your members aren't affected.`]})]}),okLabel:`Reset all authentication`,okRunningLabel:`Resetting...`,okColor:`red`,onOk:async e=>{try{let t=(await n(null))?.security_action?.[0],r=t?.api_keys_rotated??0,i=t?.users_locked??0;L({title:`Rotated ${r} API ${r===1?`key`:`keys`} and locked ${i} ${i===1?`user`:`users`}. You will be signed out shortly.`,type:`success`}),e?.remove(),window.location.href=f().adminRoot}catch(e){a(e)}}})}}),bgOnHover:!1,detail:`Rotate every API key, sign out every staff user, and require a password reset. Use after a suspected credential compromise.`,testId:`reset-all-authentication`,title:`Reset all authentication`}),(0,B.jsx)(Ke,{action:(0,B.jsx)(j,{"aria-label":`Reset all gift links`,color:`red`,label:`Reset`,onClick:()=>{O.show(F,{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...`,okColor:`red`,onOk:async e=>{try{let t=(await r(null))?.meta?.count??0;$t(`All Gift Links Reset`),L({title:`Reset ${t} gift ${t===1?`link`:`links`}.`,type:`success`}),e?.remove()}catch(e){a(e)}}})}}),bgOnHover:!1,detail:`Invalidate every active gift link across your site. Anyone holding one will lose access.`,testId:`reset-all-gift-links`,title:`Reset all gift links`})]})})},`Danger zone`),Ta=J(({keywords:e})=>{let{updateRoute:t}=P();return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`View history`,size:`sm`,onClick:()=>{t(`history/view`)}}),description:`View system event log`,keywords:e,navid:`history`,testId:`history`,title:`History`})},`History`),Ea=``+new URL(`integrations-settings-Ba5Zx8yQ.png`,import.meta.url).href,Da=({icon:e,title:t,detail:n,action:r,onDelete:i,active:a,disabled:o,testId:s,custom:c=!1})=>{let{updateRoute:l}=P(),u=e=>{e?.stopPropagation(),o?l({route:`pro`,isExternal:!0}):r()};return(0,B.jsx)(Ke,{action:c?(0,B.jsx)(j,{color:`red`,label:`Delete`,link:!0,onClick:e=>{e?.stopPropagation(),i?.()}}):o?(0,B.jsx)(j,{icon:`lock-locked`,label:`Upgrade`,link:!0,onClick:u}):(0,B.jsx)(j,{color:`green`,label:`Configure`,link:!0,onClick:u}),avatar:e,className:o?`opacity-50 saturate-0`:``,detail:n,hideActions:!o,testId:s,title:a?(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[t,` `,(0,B.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-[rgba(48,207,67,0.15)] px-1.5 py-px text-xs font-semibold tracking-wide text-green uppercase`,children:`Active`})]}):t,onClick:u})},Oa=()=>{let{config:e}=N(),{updateRoute:t}=P(),n=e=>{t(e)},r=e.hostSettings?.limits?.customIntegrations?.disabled,i=Qt(),{settings:a}=N(),[o,s,c,l,u]=R(a,[`unsplash`,`firstpromoter`,`slack_url`,`slack_username`,`transistor`]),d=[{detail:`Automation for your apps`,disabled:r,icon:(0,B.jsx)(M,{name:`zapier`,size:32}),modal:`integrations/zapier`,testId:`zapier-integration`,title:`Zapier`},{active:!!(c&&l),detail:`A messaging app for teams`,icon:(0,B.jsx)(M,{name:`slack`,size:32}),modal:`integrations/slack`,testId:`slack-integration`,title:`Slack`},{active:!!o,detail:`Beautiful, free photos`,icon:(0,B.jsx)(M,{name:`unsplash`,size:32}),modal:`integrations/unsplash`,testId:`unsplash-integration`,title:`Unsplash`},{active:!!s,detail:`Launch your member referral program`,icon:(0,B.jsx)(M,{name:`firstpromoter`,size:32}),modal:`integrations/firstpromoter`,testId:`firstpromoter-integration`,title:`FirstPromoter`},{active:i.isEnabled,detail:`Advanced image editing`,icon:(0,B.jsx)(M,{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,B.jsx)(M,{name:`transistor`,size:32}),modal:`integrations/transistor`,testId:`transistor-integration`,title:`Transistor.fm`},{detail:`Access your content programmatically`,icon:(0,B.jsx)(M,{name:`angle-brackets`,size:32}),modal:`integrations/contentapi`,testId:`content-api-integration`,title:`Content API`}];return(0,B.jsx)(en,{titleSeparator:!1,children:[...d.filter(e=>!e.disabled),...d.filter(e=>e.disabled)].map(e=>(0,B.jsx)(Da,{action:()=>{n(e.modal)},active:e.active,detail:e.detail,disabled:e.disabled,icon:e.icon,testId:e.testId,title:e.title},e.testId))})},ka=({integrations:e})=>{let{updateRoute:t}=P(),{mutateAsync:n}=kt(),r=g();return e.length?(0,B.jsx)(en,{borderTop:!1,children:e.map(e=>(0,B.jsx)(Da,{action:()=>t({route:`integrations/${e.id}`}),detail:(0,B.jsx)(`div`,{className:`line-clamp-2 break-words`,children:(0,B.jsx)(`span`,{title:`${e.name}: ${e.description||`No description`}`,children:e.description||`No description`})}),icon:e.icon_image?(0,B.jsx)(`img`,{className:`size-8 shrink-0 object-cover`,role:`presentation`,src:e.icon_image}):(0,B.jsx)(M,{className:`w-8 shrink-0`,name:`integration`}),title:e.name,custom:!0,onDelete:()=>{O.show(F,{title:`Are you sure?`,prompt:`Deleting this integration will remove all webhooks and api keys associated with it.`,okColor:`red`,okLabel:`Delete Integration`,onOk:async t=>{try{await n(e.id),t?.remove(),L({title:`Integration deleted`,type:`info`,options:{position:`bottom-left`}})}catch(e){r(e)}}})}},e.id))}):(0,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(Se,{})}),`No custom integration.`]})},Aa=J(({keywords:e})=>{let[t,n]=(0,z.useState)(`built-in`),{data:{integrations:r}={integrations:[]}}=dt(),{updateRoute:i}=P(),a=[{id:`built-in`,title:`Built-in`,contents:(0,B.jsx)(Oa,{})},{id:`custom`,title:`Custom`,contents:(0,B.jsx)(ka,{integrations:r.filter(e=>e.type===`custom`)})}];return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px] inline-flex h-7 cursor-pointer items-center justify-center rounded px-3 font-semibold whitespace-nowrap text-grey-900 transition hover:bg-grey-200 dark:text-white dark:hover:bg-grey-900 [&:hover]:text-black`,color:`clear`,label:`Add custom integration`,link:!0,onClick:()=>{i(`integrations/new`),n(`custom`)}}),customHeader:(0,B.jsxs)(`div`,{className:`sm:-mt-5 md:-mt-7`,children:[(0,B.jsx)(`div`,{className:`-mx-5 overflow-hidden rounded-t-xl border-b border-grey-200 md:-mx-7 dark:border-grey-800`,children:(0,B.jsx)(`img`,{className:`size-full`,src:Ea})}),(0,B.jsxs)(`div`,{className:` z-10 mt-6 flex items-start justify-between`,children:[(0,B.jsx)(jt,{description:`Make Ghost work with apps and tools.`,title:`Integrations`}),(0,B.jsx)(j,{className:`mt-[-5px] inline-flex h-7 cursor-pointer items-center justify-center rounded px-3 font-semibold whitespace-nowrap text-grey-900 transition hover:bg-grey-200 dark:text-white dark:hover:bg-grey-900 [&:hover]:text-black`,color:`clear`,label:`Add custom integration`,link:!0,onClick:()=>{i(`integrations/new`),n(`custom`)}})]})]}),keywords:e,navid:`integrations`,testId:`integrations`,children:(0,B.jsx)(xt,{selectedTab:t,tabs:a,onTabChange:n})})},`Integrations`),ja=O.create(({title:e,prompt:t,okLabel:n,okRunningLabel:r=`Enabling...`,onConfirm:i})=>{let a=Re(),[o,s]=z.useState(!1);return(0,B.jsx)(qe,{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,B.jsx)(`div`,{className:`py-4`,children:t})})}),Ma=({label:e,flag:t,disabled:n,confirmation:r})=>{let{settings:i}=N(),a=JSON.parse(fr(i,`labs`)||`{}`),{mutateAsync:o}=Dn(),c=s(),l=g(),u=!!a[t],d=async e=>{try{return await o([{key:`labs`,value:JSON.stringify({...a,[t]:e})}]),$t(`Feature Toggled`,{state:e?`on`:`off`,feature:t}),c.setQueriesData({queryKey:[Rn]},n=>({config:{...n.config,labs:{...n.config.labs,[t]:e}}})),!0}catch(e){return l(e),!1}};return(0,B.jsx)(ut,{checked:u,disabled:n,label:e,labelClasses:`sr-only`,name:`feature-${t}`,onChange:async()=>{let e=!u;if(r&&e){O.show(ja,{...r,onConfirm:()=>d(e)});return}await d(e)}})},Na=({title:e,detail:t,action:n})=>(0,B.jsx)(Ke,{action:n,bgOnHover:!1,detail:t,paddingRight:!1,title:e}),Pa=h({method:`POST`,path:()=>`/redirects/upload/`,body:e=>{let t=new FormData;return t.append(`redirects`,e),t}}),Fa=()=>d(`/redirects/download/`),Ia=h({method:`POST`,path:()=>`/settings/routes/yaml/`,body:e=>{let t=new FormData;return t.append(`routes`,e),t}}),La=()=>d(`/settings/routes/yaml/`),Ra=()=>{let{settings:e}=N(),{mutateAsync:t}=Pa(),{mutateAsync:n}=Ia(),r=g(),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(!1);return(0,B.jsxs)(en,{titleSeparator:!1,children:[(0,B.jsx)(Na,{action:(0,B.jsx)(Ma,{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:!!JSON.parse(fr(e,`labs`)||`{}`).automations,flag:`automations`,label:`Automations (beta)`}),detail:(0,B.jsxs)(B.Fragment,{children:[`Build automated email flows for your members, and get early access to new automation features as they ship. `,(0,B.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/automations-beta`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more →`})]}),title:`Automations (beta)`}),(0,B.jsx)(Na,{action:(0,B.jsx)(Ma,{flag:`superEditors`}),detail:(0,B.jsx)(B.Fragment,{children:`Allows newly-assigned editors to manage members and comments in addition to regular roles.`}),title:`Enhanced Editor role (beta)`}),(0,B.jsx)(Na,{action:(0,B.jsx)(Ma,{flag:`editorExcerpt`}),detail:(0,B.jsx)(B.Fragment,{children:`Adds the excerpt input below the post title in the editor`}),title:`Show post excerpt inline`}),(0,B.jsx)(Na,{action:(0,B.jsx)(Ma,{flag:`additionalPaymentMethods`}),detail:(0,B.jsxs)(B.Fragment,{children:[`Enable support for CashApp, iDEAL, Bancontact, and others. `,(0,B.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,B.jsx)(Na,{action:(0,B.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,B.jsx)(bt,{id:`upload-redirects`,onUpload:async e=>{try{a(!0),await t(e),L({title:`Redirects uploaded`,type:`success`})}catch(e){r(e)}finally{a(!1)}},children:(0,B.jsx)(j,{color:`grey`,label:i?`Uploading ...`:`Upload redirects file`,size:`sm`,tag:`div`})}),(0,B.jsx)(j,{color:`green`,label:`Download current redirects`,link:!0,onClick:()=>Fa()})]}),detail:(0,B.jsxs)(B.Fragment,{children:[`Configure redirects for old or moved content, `,(0,B.jsx)(`br`,{}),` more info in the `,(0,B.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/tutorials/implementing-redirects/`,rel:`noopener noreferrer`,target:`_blank`,children:`docs`})]}),title:`Redirects`}),(0,B.jsx)(Na,{action:(0,B.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,B.jsx)(bt,{id:`upload-routes`,onUpload:async e=>{try{s(!0),await n(e),L({type:`success`,title:`Routes uploaded`})}catch(e){r(e)}finally{s(!1)}},children:(0,B.jsx)(j,{color:`grey`,label:o?`Uploading ...`:`Upload routes file`,size:`sm`,tag:`div`})}),(0,B.jsx)(j,{color:`green`,label:`Download current routes`,link:!0,onClick:()=>La()})]}),detail:`Configure dynamic routing by modifying the routes.yaml file`,title:`Routes`})]})},za=`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`,Ba=[{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`}],Va=()=>{let e=rt(),[t,n]=(0,z.useState)([]);return(0,z.useEffect)(()=>{(async()=>{let t=[];for(let n of Ba)if(n.limitName&&e?.isLimited(n.limitName))try{await e.errorIfWouldGoOverLimit(n.limitName),t.push(n)}catch(e){e instanceof $e||t.push(n)}else t.push(n);n(t)})()},[e]),(0,B.jsx)(en,{titleSeparator:!1,children:t.map(e=>(0,B.jsx)(Na,{action:(0,B.jsx)(Ma,{flag:e.flag,label:e.title}),detail:e.description,title:e.title},e.flag))})};function Ha(e){let[t,n]=(0,z.useState)(!1),r=(0,z.useRef)(!1),{filter:i,getVisibleComponents:a,checkVisible:o}=nt();return(0,z.useEffect)(()=>{i||(r.current=!1)},[i]),(0,z.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 Ua=J(({keywords:e})=>{let[t,n]=(0,z.useState)(`labs-beta-features`),{config:r}=N(),{isOpen:i,openManually:a,closeManually:o}=Ha(e),s=[{id:`labs-beta-features`,title:`Beta features`,contents:(0,B.jsx)(Ra,{})},r.enableDeveloperExperiments&&{id:`labs-private-features`,title:`Private features`,contents:(0,B.jsx)(Va,{})}].filter(Boolean);return(0,B.jsx)(q,{customHeader:(0,B.jsxs)(`div`,{className:`z-10 flex items-start justify-between`,children:[(0,B.jsx)(jt,{description:`This is a testing ground for new or experimental features. They may change, break or inexplicably disappear at any time.`,title:`Labs`}),(0,B.jsx)(j,{className:`mt-[-5px]`,color:i?`grey`:`clear`,label:i?`Close`:`Open`,size:`sm`,onClick:i?o:a})]}),isEditing:i,keywords:e,navid:`labs`,testId:`labs`,children:i?(0,B.jsx)(xt,{selectedTab:t,tabs:s,onTabChange:n}):(0,B.jsx)(`div`,{className:`absolute inset-0 z-0 overflow-hidden opacity-70`,children:(0,B.jsx)(`img`,{className:`absolute -top-6 -right-6 dark:opacity-10`,src:za})})})},`Labs`),Wa=()=>{let[e,t]=z.useState(!1),n=g();return(0,B.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 pt-4 md:grid-cols-2 lg:grid-cols-3`,children:[(0,B.jsx)(j,{className:`h-9! font-semibold!`,color:`grey`,icon:`export`,iconColorClass:`h-4! w-auto!`,label:`Content & settings`,onClick:()=>Sa()}),(0,B.jsx)(j,{className:`h-9! font-semibold!`,color:`grey`,disabled:e,icon:`baseline-chart`,iconColorClass:`h-4! w-auto!`,label:`Post analytics`,loading:e,testId:`post-analytics-export-button`,onClick:async()=>{if(!e){t(!0);try{await p(`/posts/export/?limit=1000`,`posts.analytics.csv`)}catch(e){n(e)}finally{t(!1)}}}})]})},Ga=O.create(()=>{let e=Re(),{mutateAsync:t}=ba(),[n,r]=(0,z.useState)(!1),i=g();return(0,B.jsx)(qe,{backDropClick:!1,footer:(0,B.jsxs)(`div`,{className:`flex w-full items-center justify-between p-8`,children:[(0,B.jsx)(Br,{href:`https://docs.ghost.org/migration/ghost`,target:`_blank`,children:`Learn about importing`}),(0,B.jsx)(j,{color:`outline`,disabled:n,label:`Cancel`,onClick:()=>e.remove()})]}),okLabel:``,size:`sm`,testId:`universal-import-modal`,title:`Universal import`,children:(0,B.jsx)(`div`,{className:`py-4`,children:(0,B.jsx)(bt,{accept:`application/json, application/zip`,id:`import-file`,onUpload:async n=>{r(!0);try{await t(n),e.remove(),O.show(F,{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,B.jsx)(`div`,{className:`-mb-4 cursor-pointer bg-grey-50 p-10 text-center dark:bg-grey-950`,children:n?`Uploading...`:(0,B.jsxs)(B.Fragment,{children:[`Select any JSON or zip file that contains `,(0,B.jsx)(`br`,{}),`posts and settings`]})})})})})}),Ka=({icon:e,title:t,onClick:n})=>{let r=E(`flex h-9 cursor-pointer items-center justify-center gap-2 rounded-md bg-grey-100 px-2 font-semibold transition-all hover:bg-grey-200 dark:bg-grey-900`);return n?(0,B.jsxs)(`button`,{className:r,type:`button`,onClick:n,children:[e,t]}):(0,B.jsx)(B.Fragment,{})},qa=()=>{let{updateRoute:e}=P();return(0,B.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 pt-4 md:grid-cols-2 lg:grid-cols-3`,children:[(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`substack`,size:18}),title:`Substack`,onClick:()=>e({isExternal:!0,route:`/migrate/substack`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`beehiiv`,size:18}),title:`beehiiv`,onClick:()=>e({isExternal:!0,route:`/migrate/beehiiv`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`wordpress`,size:18}),title:`WordPress`,onClick:()=>e({isExternal:!0,route:`/migrate/wordpress`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`squarespace`,size:18}),title:`Squarespace`,onClick:()=>e({isExternal:!0,route:`/migrate/squarespace`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto dark:invert`,name:`medium`,size:18}),title:`Medium`,onClick:()=>e({isExternal:!0,route:`/migrate/medium`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`mailchimp`,size:20}),title:`Mailchimp`,onClick:()=>e({isExternal:!0,route:`/migrate/mailchimp`})}),(0,B.jsx)(Ka,{icon:(0,B.jsx)(M,{className:`w-auto`,name:`import`,size:16}),title:`Universal import`,onClick:()=>{O.show(Ga)}})]})},Ja=J(({keywords:e})=>{let[t,n]=(0,z.useState)(`import`),r=[{id:`import`,title:`Import`,contents:(0,B.jsx)(qa,{})},{id:`export`,title:`Export`,contents:(0,B.jsx)(Wa,{})}].filter(Boolean);return(0,B.jsx)(q,{customHeader:(0,B.jsx)(jt,{description:`Import content, members and subscriptions from other platforms or export your Ghost data.`,title:`Migration tools`}),keywords:e,navid:`migration`,testId:`migrationtools`,children:(0,B.jsx)(xt,{selectedTab:t,tabs:r,onTabChange:n})})},`Migration tools`),Ya=({keywords:e,...t})=>{let{checkVisible:n,noResult:r}=nt();return(0,B.jsx)(Wr,{isVisible:n(e)||r,...t})},Y={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`]},Xa=()=>(0,B.jsxs)(Ya,{keywords:Object.values(Y).flat(),title:`Advanced`,children:[(0,B.jsx)(Aa,{keywords:Y.integrations}),(0,B.jsx)(Ja,{keywords:Y.migrationtools}),(0,B.jsx)(ya,{keywords:Y.codeInjection}),(0,B.jsx)(Ua,{keywords:Y.labs}),(0,B.jsx)(Ta,{keywords:Y.history}),(0,B.jsx)(wa,{keywords:Y.dangerzone})]}),Za=[{label:`Free members`,value:`status:free`,color:`green`},{label:`Paid members`,value:`status:-free`,color:`pink`}],Qa=(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,z.useState)(null),s=e=>({value:e.id,label:e.name,color:`black`}),c=e=>({value:`label:${e.slug}`,label:e.name,color:`grey`}),l=e=>({value:`offer_redemptions:${e.id}`,label:e.name,color:`black`}),u=async(e,t)=>{let[o,u,f]=await Promise.all([n.loadData(e),r.loadData(e),i.loadData(e)]),p=[{options:Za.filter(({label:t})=>t.toLowerCase().includes(e.toLowerCase()))},{label:`Active Tiers`,options:o.filter(({active:e,type:t})=>e&&t!==`free`).map(s)||[]},{label:`Archived Tiers`,options:o.filter(({active:e})=>!e).map(s)||[]},{label:`Labels`,options:u.map(c)||[]},{label:`Offers`,options:f.map(l)||[]}];a===null&&d(),t(p.filter(e=>e.options.length>0))},d=async()=>{let e=t?.split(`,`)||[],a=[],u=[],d=[];for(let t of e)t.startsWith(`label:`)?u.push(t.replace(`label:`,``)):t.startsWith(`offer_redemptions:`)?d.push(t.replace(`offer_redemptions:`,``)):st(t)&&a.push(t);let f=await Promise.all([n.loadInitialValues(a,`id`).then(e=>e.map(s)),r.loadInitialValues(u,`slug`).then(e=>e.map(c)),i.loadInitialValues(d,`id`).then(e=>e.map(l))]).then(e=>e.flat());o(e.map(e=>f.find(t=>t.value===e)))};return(0,z.useEffect)(()=>{e===`segment`&&u(``,()=>{})},[e]),{loadOptions:mt(u,500),selectedSegments:a,setSelectedSegments:o}},$a=[{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`}];function eo({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 to=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=k(),[c,l]=R(t,[`editor_default_email_recipients`,`editor_default_email_recipients_filter`]),[u,d]=(0,z.useState)(eo({defaultEmailRecipients:c,defaultEmailRecipientsFilter:l})),{loadOptions:f,selectedSegments:p,setSelectedSegments:m}=Qa(u,l);(0,z.useEffect)(()=>{let e=eo({defaultEmailRecipients:c,defaultEmailRecipientsFilter:l});d(e)},[c,l]);let h=e=>{[`visibility`,`disabled`].includes(e)?(o(`editor_default_email_recipients`,e),o(`editor_default_email_recipients_filter`,null)):o(`editor_default_email_recipients`,`filter`),e===`all-members`&&o(`editor_default_email_recipients_filter`,`status:free,status:-free`),e===`paid-only`&&o(`editor_default_email_recipients_filter`,`status:-free`),e===`none`&&o(`editor_default_email_recipients_filter`,null),d(e),n||s(!0)};return(0,B.jsx)(q,{description:`When you publish new content, who do you usually want to send it to?`,isEditing:n,keywords:e,navid:`default-recipients`,saveState:r,testId:`default-recipients`,title:`Default recipients`,hideEditButton:!0,onCancel:a,onEditingChange:s,onSave:i,children:(0,B.jsxs)(I,{columns:1,children:[(0,B.jsx)(et,{hint:`Who should receive your posts by default?`,options:$a,selectedOption:$a.find(e=>e.value===u),testId:`default-recipients-select`,title:`Default Newsletter recipients`,onSelect:e=>{e&&h(e.value)}}),u===`segment`&&p&&(0,B.jsx)(it,{loadOptions:f,title:`Filter`,values:p,async:!0,defaultOptions:!0,onChange:e=>{if(m(e),e.length){let t=e?.map(({value:e})=>e).join(`,`);o(`editor_default_email_recipients_filter`,t)}else o(`editor_default_email_recipients_filter`,null),d(`none`);n||s(!0)}})]})})},`Default recipients`),no=J(({keywords:e})=>{let{settings:t}=N(),{mutateAsync:n}=Dn(),{updateRoute:r}=P(),i=g(),[a,o]=R(t,[`editor_default_email_recipients`,`members_signup_access`]),s=o===`none`;return(0,B.jsx)(q,{customButtons:(0,B.jsx)(B.Fragment,{children:(0,B.jsx)(ut,{checked:a!==`disabled`&&!s,direction:`rtl`,disabled:s,onChange:async e=>{let t=[{key:`editor_default_email_recipients`,value:e.target.checked?`visibility`:`disabled`}];e.target.checked||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,B.jsx)(I,{columns:1,values:[{key:`private`,value:a!==`disabled`&&!s?(0,B.jsx)(`div`,{className:`w-full`,children:(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(M,{colorClass:`text-green`,name:`check`,size:`sm`}),(0,B.jsx)(`span`,{children:`Enabled`})]})}):(0,B.jsxs)(`div`,{className:`w-full`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-grey-900`,children:[(0,B.jsx)(M,{colorClass:`text-grey-600`,name:`mail-block`,size:`sm`}),(0,B.jsx)(`span`,{children:`Disabled`})]}),s&&(0,B.jsxs)(Qe,{className:`mt-6`,color:`grey`,children:[`Your `,(0,B.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`),ro=[{label:`🇺🇸 US`,value:`https://api.mailgun.net/v3`},{label:`🇪🇺 EU`,value:`https://api.eu.mailgun.net/v3`}],io=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=k(),{mutateAsync:c}=Dn(),l=g(),[u,d,f]=R(t,[`mailgun_base_url`,`mailgun_domain`,`mailgun_api_key`]),p=(0,B.jsx)(I,{columns:1,values:d&&f?[{key:`status`,value:(0,B.jsx)(zr,{icon:`check-circle`,iconColorClass:`text-green`,children:`Mailgun is set up`})}]:[{heading:`Status`,key:`status`,value:`Mailgun is not set up`}]}),m=(0,B.jsxs)(B.Fragment,{children:[`Find your Mailgun API keys `,(0,B.jsx)(Br,{href:`https://app.mailgun.com/settings/api_security`,rel:`noopener noreferrer`,target:`_blank`,children:`here`})]}),h=(0,B.jsx)(I,{children:(0,B.jsxs)(`div`,{className:`grid grid-cols-[120px_auto] gap-x-3 gap-y-6`,children:[(0,B.jsx)(et,{options:ro,selectedOption:ro.find(e=>e.value===u),title:`Mailgun region`,onSelect:e=>{o(`mailgun_base_url`,e?.value||null)}}),(0,B.jsx)(A,{title:`Mailgun domain`,value:d??``,onChange:e=>{o(`mailgun_domain`,e.target.value)}}),(0,B.jsx)(`div`,{className:`col-span-2`,children:(0,B.jsx)(A,{hint:m,title:`Mailgun private API key`,type:`password`,value:f??``,onChange:e=>{o(`mailgun_api_key`,e.target.value)}})})]})});return(0,B.jsx)(q,{description:(0,B.jsxs)(B.Fragment,{children:[`The Mailgun API is used for bulk email newsletter delivery. `,(0,B.jsx)(Br,{href:`https://ghost.org/docs/faq/mailgun-newsletters/`,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:ro[0].value}])}catch(e){l(e);return}i()},children:n?h:p})},`Mailgun`),ao=({id:e,setRef:t,isDragging:n,style:r,children:i,separator:a,...o})=>{let{updateRoute:s}=P(),c=()=>{s({route:`newsletters/${e}`})},l=(0,B.jsx)(Kt,{ref:t,action:(0,B.jsx)(j,{color:`green`,"data-testid":`edit-newsletter-button`,label:`Edit`,link:!0,onClick:c}),className:n?`opacity-75`:``,hideActions:!1,style:r,onClick:c,children:(0,B.jsxs)(Me,{className:`w-full`,gap:`none`,children:[(o.dragHandleAttributes||n)&&(0,B.jsx)(`div`,{className:`w-10 shrink-0`,children:(0,B.jsx)(Tt,{className:`h-10`,isDragging:n||!1,...o})}),i]})});return n?(0,B.jsx)(an,{children:l}):l},oo=({newsletter:e})=>{let{updateRoute:t}=P(),n=()=>{t({route:`newsletters/${e.id}`})};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`grow py-3 pr-6`,onClick:n,children:(0,B.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,B.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight text-grey-700`,children:e.description||`No description`})]})}),(0,B.jsx)(`div`,{className:`hidden py-3 pr-6 md:block md:min-w-[11rem]`,onClick:n,children:(0,B.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,B.jsx)(`span`,{children:Te(e.count?.active_members||0)}),(0,B.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight whitespace-nowrap text-grey-700`,children:`Subscribers`})]})}),(0,B.jsx)(`div`,{className:`hidden py-3 pr-6 md:block md:min-w-[11rem]`,onClick:n,children:(0,B.jsxs)(`div`,{className:`flex grow flex-col`,children:[(0,B.jsx)(`span`,{children:Te(e.count?.posts||0)}),(0,B.jsx)(`span`,{className:`mt-0.5 text-sm leading-tight whitespace-nowrap text-grey-700`,children:`Delivered`})]})})]})},so=({newsletters:e,isLoading:t,isSortable:n,onSort:r})=>t?(0,B.jsx)(an,{isLoading:!0}):e.length&&n?(0,B.jsx)(nn,{container:e=>(0,B.jsx)(ao,{...e}),items:e,renderItem:e=>(0,B.jsx)(oo,{newsletter:e}),wrapper:an,onMove:(e,t)=>r?.(e,t)}):e.length?(0,B.jsx)(an,{children:e.map(e=>(0,B.jsx)(ao,{id:e.id,children:(0,B.jsx)(oo,{newsletter:e})},e.id))}):(0,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(_e,{})}),`No newsletters found.`]}),co=({id:e,children:t})=>{let n=Re(),{updateRoute:r}=P();return(0,B.jsx)(`button`,{className:`text-green`,type:`button`,onClick:()=>{r(`newsletters/${e}`),n.remove()},children:t})},lo=J(({keywords:e})=>{let{updateRoute:t}=P(),n=()=>{t(`newsletters/new`)},[r,i]=(0,z.useState)(`active-newsletters`),{data:{newsletters:a,meta:o,isEnd:c}={},isLoading:l,fetchNextPage:u}=vr(),{mutateAsync:d}=_r(),f=s(),p=St().getParam(`verifyEmail`),{mutateAsync:h}=gr(),_=g(),[v,y]=(0,z.useState)(a||[]);(0,z.useEffect)(()=>{y(a||[])},[a]),(0,z.useEffect)(()=>{!p||!window.location.href.includes(`newsletters`)||(async()=>{try{let{newsletters:[e],meta:{email_verified:t}={}}=await h({token:p}),n,r;t&&t===`sender_email`?(n=`Newsletter email verified`,r=(0,B.jsxs)(B.Fragment,{children:[`Newsletter `,(0,B.jsx)(co,{id:e.id,children:e.name}),` will now be sent from `,(0,B.jsx)(`strong`,{children:e.sender_email}),`.`]})):t&&t===`sender_reply_to`?(n=`Reply-to address verified`,r=(0,B.jsxs)(B.Fragment,{children:[`Newsletter `,(0,B.jsx)(co,{id:e.id,children:e.name}),` will now use `,(0,B.jsx)(`strong`,{children:e.sender_reply_to}),` as the reply-to address.`]})):(n=`Email address verified`,r=(0,B.jsxs)(B.Fragment,{children:[`Email address for newsletter `,(0,B.jsx)(co,{id:e.id,children:e.name}),` has been changed.`]})),O.show(F,{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 m&&e.message===`Token expired`&&(t=`Verification link has expired.`),O.show(F,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),_(e,{withToast:!1})}})()},[p,_,h]);let b=(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Add newsletter`,size:`sm`,onClick:()=>{n()}}),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,B.jsxs)(q,{customButtons:b,description:`Edit details and customize your design`,keywords:e,navid:`newsletters`,testId:`newsletters`,title:`Newsletters`,children:[(0,B.jsx)(xt,{selectedTab:r,tabs:[{id:`active-newsletters`,title:`Active`,contents:(0,B.jsx)(so,{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=ht(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:[yr]},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)}})},{id:`archived-newsletters`,title:`Archived`,contents:(0,B.jsx)(so,{isLoading:l,newsletters:S})}],onTabChange:i}),c===!1&&(0,B.jsx)(j,{label:`Load more (showing ${v?.length||0}/${o?.pagination.total||0} newsletters)`,link:!0,onClick:()=>u()})]})},`Newsletters`),uo={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`]},fo=()=>{let{settings:e,config:t}=N(),[n]=R(e,[`editor_default_email_recipients`]),r=n!==`disabled`,i=r&&!t.mailgunIsConfigured;return(0,B.jsxs)(Ya,{keywords:[uo.enableNewsletters,...r?[uo.defaultRecipients,uo.newsletters]:[],...i?[uo.mailgun]:[]].flat(),title:`Newsletters`,children:[(0,B.jsx)(no,{keywords:uo.enableNewsletters}),r&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(to,{keywords:uo.defaultRecipients}),(0,B.jsx)(lo,{keywords:uo.newsletters}),i&&(0,B.jsx)(io,{keywords:uo.mailgun})]})]})},po=({id:e,children:t})=>{let n=Re(),{updateRoute:r}=P();return(0,B.jsx)(`button`,{className:`text-green`,type:`button`,onClick:()=>{r(`newsletters/${e}`),n.remove()},children:t})},mo=()=>{let e=window.location.hash.slice(1),t=new URL(e||`/`,window.location.origin).pathname;return t.startsWith(`/settings/emails`)||t.startsWith(`/settings/newsletters`)},ho=J(({filter:e})=>{let{data:{newsletters:t,meta:n,isEnd:r}={},isLoading:i,fetchNextPage:a}=vr(),{mutateAsync:o}=_r(),c=s(),l=St().getParam(`verifyEmail`),{mutateAsync:u}=gr(),d=g(),[f,p]=(0,z.useState)(t||[]);(0,z.useEffect)(()=>{p(t||[])},[t]),(0,z.useEffect)(()=>{!l||!mo()||(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,B.jsxs)(B.Fragment,{children:[`Newsletter `,(0,B.jsx)(po,{id:e.id,children:e.name}),` will now be sent from `,(0,B.jsx)(`strong`,{children:e.sender_email}),`.`]})):t&&t===`sender_reply_to`?(n=`Reply-to address verified`,r=(0,B.jsxs)(B.Fragment,{children:[`Newsletter `,(0,B.jsx)(po,{id:e.id,children:e.name}),` will now use `,(0,B.jsx)(`strong`,{children:e.sender_reply_to}),` as the reply-to address.`]})):(n=`Email address verified`,r=(0,B.jsxs)(B.Fragment,{children:[`Email address for newsletter `,(0,B.jsx)(po,{id:e.id,children:e.name}),` has been changed.`]})),O.show(F,{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 m&&e.message===`Token expired`&&(t=`Verification link has expired.`),O.show(F,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),d(e,{withToast:!1})}})()},[l,d,u]);let h=f.filter(e=>e.status===`active`).sort((e,t)=>e.sort_order-t.sort_order)||[],_=f.filter(e=>e.status!==`active`);return(0,B.jsxs)(B.Fragment,{children:[e===`active`?(0,B.jsx)(so,{isLoading:i,isSortable:!0,newsletters:h,onSort:async(e,t)=>{let n=h.findIndex(t=>t.id===e),r=h.findIndex(e=>e.id===t)||0,i=ht(h,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+h.length?null:{...e,sort_order:t}).filter(e=>!!e),s=[...i,...a].sort((e,t)=>e.sort_order-t.sort_order);p(f.map(e=>s.find(t=>t.id===e.id)||e)),c.setQueriesData({queryKey:[yr]},e=>{if(e)return{...e,pages:e.pages.map(e=>({...e,newsletters:e.newsletters.map(e=>s.find(t=>t.id===e.id)||e)}))}});for(let e of s)await o(e)}}):(0,B.jsx)(so,{isLoading:i,newsletters:_}),r===!1&&(0,B.jsx)(j,{label:`Load more (showing ${f?.length||0}/${n?.pagination.total||0} newsletters)`,link:!0,onClick:()=>a()})]})},`Newsletters`),go=O.create(({title:e=`Are you sure you want to leave this page?`,description:t=(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsx)(`p`,{children:`Hey there! It looks like you didn't save the changes you made.`}),(0,B.jsx)(`p`,{children:`Save before you go!`})]})})=>{let n=Re(),r=(0,z.useRef)(n.visible),i=(0,z.useRef)(!1);return(0,z.useEffect)(()=>{r.current&&!n.visible&&(n.resolveHide(),n.remove()),r.current=n.visible},[n]),(0,B.jsx)(Zn,{open:n.visible,onOpenChange:e=>{e||(n.resolve(i.current),i.current=!1,n.hide())},children:(0,B.jsxs)(cr,{"data-testid":`welcome-email-dirty-confirm-modal`,onEscapeKeyDown:e=>{e.stopPropagation()},children:[(0,B.jsxs)(ar,{children:[(0,B.jsx)(lr,{children:e}),(0,B.jsx)(er,{asChild:!0,children:t})]}),(0,B.jsxs)(Jn,{children:[(0,B.jsx)(ir,{asChild:!0,children:(0,B.jsx)(Oe,{variant:`outline`,children:`Stay`})}),(0,B.jsx)(ur,{asChild:!0,children:(0,B.jsx)(Oe,{variant:`destructive`,onClick:()=>{i.current=!0},children:`Leave`})})]})]})})}),_o=({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,z.useRef)(s),f=(0,z.useRef)(e);(0,z.useEffect)(()=>{d.current=s},[s]),(0,z.useEffect)(()=>{f.current&&!e&&l?.(),f.current=e},[l,e]),(0,z.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 p=async()=>{if(!i){c();return}await O.show(go)&&c()};return(0,B.jsx)(zn,{open:e,onOpenChange:e=>{e||p()},children:(0,B.jsx)(On,{"aria-describedby":void 0,className:D(`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(),p()},children:(0,B.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,B.jsx)(`div`,{className:`hidden min-h-0 flex-1 flex-col bg-gray-50 dark:bg-black [@media(min-width:801px)]:flex`,children:(0,B.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center p-8`,children:n})}),(0,B.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,B.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-5`,children:[(0,B.jsx)(Vn,{children:t}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(Oe,{variant:`outline`,onClick:()=>p(),children:`Close`}),(0,B.jsx)(Oe,{className:o?.color===`green`?`bg-green text-white hover:bg-green/90`:void 0,disabled:a||o?.disabled,variant:o?.color===`red`?`destructive`:`default`,onClick:s,children:o?.label||`Save`})]})]}),r]})]})})})},vo=/^#(?:[0-9a-f]{3}){1,2}$/i;function yo(e){return vo.test(e)?e:`#ffffff`}function bo(e,t){return!e||e===`transparent`?`transparent`:e===`accent`?t:vo.test(e)?e:`transparent`}function xo(e,t,n){return vo.test(e||``)?e:e===null?Mt(n).hex():t}function So(e,t){if(e===`fill`)return Mt(t).hex()}function Co(e,t,n){let r=e===void 0?`accent`:e;return r===`accent`?t:vo.test(r||``)?r:Mt(n).hex()}function wo(e,t,n){return vo.test(e||``)?e:e===`accent`?t:Mt(n).hex()}function To(e,t){return vo.test(e||``)?e:e===`accent`?t:`#e0e7eb`}function Eo(e,t){let n=yo(e.background_color),r=bo(e.header_background_color,t),i=xo(e.button_color,t,n),a=Mt(n).hex(),o=Mt(n).alpha(.5).toString(),s=r===`transparent`?a:Mt(r).hex(),c=r===`transparent`?o:Mt(r).alpha(.5).toString();return{backgroundColor:n,headerBackgroundColor:r,sectionTitleColor:wo(e.section_title_color,t,n),buttonColor:i,buttonTextColor:So(e.button_style,i),linkColor:Co(e.link_color,t,n),dividerColor:To(e.divider_color,t),textColor:a,secondaryTextColor:o,headerTextColor:s,secondaryHeaderTextColor:c}}function Do(e){return e===`serif`?`Georgia, serif`:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`}function Oo(e){switch(e){case`square`:return`rounded-none`;case`pill`:return`rounded-full`;default:return`rounded-[6px]`}}function ko(e){return e===`rounded`?`rounded-md`:``}var Ao=({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,B.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,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`From:`}),` `,s]}),i&&t&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`To:`}),` subscriber@example.com`]}),o&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`font-semibold text-grey-900`,children:`Reply-to:`}),` `,o]}),a&&r&&(0,B.jsx)(`div`,{className:`text-base font-medium text-grey-900`,children:r})]})},jo=({iconUrl:e,showIcon:t,showTitle:n,siteTitle:r,backgroundColor:i,textColor:a})=>!t&&(!n||!r)?null:(0,B.jsxs)(`div`,{className:`px-[7rem] py-3 text-center`,style:{backgroundColor:i===`transparent`?void 0:i},children:[t&&e&&(0,B.jsx)(`img`,{alt:r||`Publication icon`,className:`mx-auto mb-3 size-12 rounded`,src:e}),n&&r&&(0,B.jsx)(`h4`,{className:`mb-1 text-[1.6rem] leading-tight font-bold tracking-tight uppercase`,style:{color:a},children:r})]}),Mo=({siteTitle:e,footerLinkText:t=`Unsubscribe`,emailFooter:n,showBadge:r,color:i,textColor:a})=>(0,B.jsxs)(`div`,{className:`flex flex-col items-center pt-10`,children:[n&&(0,B.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,B.jsxs)(`div`,{className:`px-8 pt-3 pb-14 text-center text-[1.3rem]`,children:[(0,B.jsxs)(`span`,{style:{color:i},children:[e||`Your publication`,` © `,new Date().getFullYear(),` — `]}),(0,B.jsx)(`span`,{className:`underline`,style:{color:i},children:t})]}),r&&(0,B.jsx)(`div`,{className:`flex flex-col items-center pt-[10px] pb-[40px]`,children:(0,B.jsxs)(`span`,{className:`inline-flex items-center px-2 py-1 text-[1.25rem] font-semibold tracking-tight`,style:{color:a},children:[(0,B.jsx)(Ot,{className:`mr-[6px] size-4`}),(0,B.jsx)(`span`,{children:`Powered by Ghost`})]})})]}),No=({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 _=Eo(e,t),v=ko(e.image_corners),y=r||void 0;return(0,B.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,B.jsx)(Ao,{replyToEmail:o,senderEmail:a,senderName:i,showRecipientLine:c,showSubjectLine:l,subject:s}),(0,B.jsxs)(`div`,{className:`min-h-0 w-full flex-1 overflow-y-auto`,style:{backgroundColor:_.backgroundColor},children:[(0,B.jsxs)(`div`,{className:`px-[7rem]`,style:{backgroundColor:_.headerBackgroundColor===`transparent`?void 0:_.headerBackgroundColor},children:[u&&(0,B.jsx)(`div`,{className:`pt-8`,children:(0,B.jsx)(`img`,{alt:`Header`,className:D(`h-auto w-full`,v),src:u})}),(0,B.jsx)(jo,{backgroundColor:`transparent`,iconUrl:n,showIcon:d&&!!n,showTitle:f,siteTitle:y,textColor:_.headerTextColor})]}),g,(0,B.jsx)(Mo,{color:_.secondaryTextColor,emailFooter:m,footerLinkText:h,showBadge:p,siteTitle:y,textColor:_.textColor})]})]})},Po=({value:e,onChange:t})=>{let{mutateAsync:n}=tn(),r=async e=>{t(wt(await n({file:e})))};return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,"data-testid":`header-image-field`,children:[(0,B.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-header-image`,children:`Header image`}),e?(0,B.jsxs)(`div`,{className:`relative overflow-hidden rounded-md border border-gray-200 dark:border-gray-800`,children:[(0,B.jsx)(`img`,{alt:`Header`,className:`h-auto w-full`,src:e}),(0,B.jsx)(`button`,{className:`absolute top-2 right-2 rounded bg-black/50 px-2 py-1 text-sm text-white hover:bg-black/70`,type:`button`,onClick:()=>t(``),children:`Remove`})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(yn,{accept:{"image/*":[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.svg`]},className:`flex h-24 items-center justify-center p-0`,id:`welcome-email-header-image`,onDropAccepted:e=>e[0]&&r(e[0]),children:(0,B.jsx)(`span`,{className:`text-gray-700`,children:`Upload header image`})}),(0,B.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`1200x600 recommended. Use a transparent PNG for best results on any background.`})]})]})},Fo=({value:e,onChange:t})=>(0,B.jsxs)(`div`,{className:`mt-6 flex items-start justify-between gap-4`,children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,B.jsx)(Ce,{className:`mt-0.5 size-4 shrink-0 text-red-500`}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,B.jsx)(`span`,{children:`Promote independent publishing`}),(0,B.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,B.jsx)(fn,{checked:e,size:`sm`,onCheckedChange:t})]}),Io=``+new URL(`email-design-user-image-BWe5RYS0.jpg`,import.meta.url).href,Lo=(0,z.createContext)(void 0),Ro=({settings:e,onSettingsChange:t,accentColor:n,children:r})=>(0,B.jsx)(Lo.Provider,{value:{settings:e,onSettingsChange:t,accentColor:n},children:r}),zo=()=>{let e=(0,z.useContext)(Lo);if(!e)throw Error(`useEmailDesign must be used within an EmailDesignProvider`);return e},Bo=()=>{let{settings:e,accentColor:t}=zo(),n=Eo(e,t),r=Do(e.body_font_category),i=Oo(e.button_corners),a=e.button_style===`outline`,o=D(`no-underline`,e.link_style===`underline`&&`underline`,e.link_style===`bold`&&`font-bold`),s=D(`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=D(e.body_font_category===`serif`?`font-serif text-[1.8rem]`:`text-[1.7rem]`);return(0,B.jsxs)(`div`,{className:`mx-auto w-full max-w-[600px] px-10 pt-16`,children:[(0,B.jsx)(`h3`,{className:s,style:{color:n.sectionTitleColor},children:`Your welcome email`}),(0,B.jsxs)(`div`,{className:D(c),style:{color:n.textColor,fontFamily:r},children:[(0,B.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,B.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,B.jsx)(`div`,{className:D(`h-[unset] w-full max-w-[600px] bg-cover bg-no-repeat`),children:(0,B.jsx)(`img`,{alt:`Example cover image`,className:D(`min-h-full min-w-full shrink-0`,ko(e.image_corners)),src:Io})}),(0,B.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,B.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,B.jsx)(`div`,{className:`my-5 py-4`,children:(0,B.jsx)(`hr`,{className:`m-0 border-0 border-t`,style:{borderColor:n.dividerColor}})}),(0,B.jsx)(`h3`,{className:s,style:{color:n.sectionTitleColor},children:`Need inspiration?`}),(0,B.jsx)(`div`,{className:D(c),style:{color:n.textColor,fontFamily:r},children:(0,B.jsxs)(`p`,{className:`mt-0 mb-6`,children:[`We’ve put together a `,(0,B.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,B.jsx)(`div`,{className:`pb-6`,children:(0,B.jsx)(`a`,{className:D(`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,B.jsx)(`div`,{className:`py-4`,children:(0,B.jsx)(`hr`,{className:`m-0 border-0 border-t`,style:{borderColor:n.dividerColor}})})]})},Vo=e(ee(),1),Ho=`AutomatedEmailDesignResponseType`,Uo=_({dataType:Ho,path:`/automated_emails/design/`}),Wo=h({method:`PUT`,path:()=>`/automated_emails/design/`,body:e=>({automated_email_design:[e]}),updateQueries:{emberUpdateType:`skip`,dataType:Ho,update:e=>e}}),Go=/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Ko=(e,t,n=[])=>{if(e&&Go.test(e))return e;switch(e){case`accent`:return t&&Go.test(t)?t:`#ffffff`;case`light`:return`#ffffff`;case`transparent`:return`#00000000`;default:break}let r=n.find(t=>t.value===e);return r?r.hex:`#ffffff`},qo=e=>{let t=e.toLowerCase();return t.length===5&&t[4]===`0`||t.length===9&&t.slice(7)===`00`},Jo=()=>(0,B.jsx)(`span`,{className:`pointer-events-none absolute inset-0 overflow-hidden rounded-full`,"data-testid":`transparent-indicator`,"aria-hidden":!0,children:(0,B.jsx)(`span`,{className:`absolute top-1/2 left-[-30%] block h-px w-[160%] -translate-y-1/2 -rotate-45 bg-red`})}),Yo=({title:e,value:t,onChange:n,accentColor:r,swatches:i=[]})=>{let[a,o]=(0,z.useState)(!1),s=Ko(t,r,i),c=(0,z.useRef)(!1),l=(0,z.useRef)(!1),u=(0,z.useRef)(null),d=i.find(e=>e.value===t||t&&e.hex.toLowerCase()===t.toLowerCase()),f=()=>{c.current=!1,l.current=!1},p=(0,z.useCallback)(()=>{u.current&&=(window.removeEventListener(`keydown`,u.current,!0),null)},[]),m=()=>{p(),f(),o(!1)},h=()=>{if(u.current)return;let e=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),m())};u.current=e,window.addEventListener(`keydown`,e,!0)};return(0,z.useEffect)(()=>()=>{p()},[p]),(0,B.jsxs)(Qn,{open:a,onOpenChange:e=>{f(),e?h():p(),o(e)},children:[(0,B.jsx)($n,{asChild:!0,children:(0,B.jsxs)(`div`,{className:`flex w-full cursor-pointer items-start justify-between`,children:[(0,B.jsx)(`span`,{className:`mt-px flex-1`,children:e}),(0,B.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[a&&i.length>0&&(0,B.jsx)(`div`,{className:`flex items-center gap-1`,children:i.map(e=>{let t=e.value===void 0?e.hex:e.value,r=d?.title===e.title;return(0,B.jsx)(`button`,{"aria-label":e.title,className:`relative flex size-5 shrink-0 cursor-pointer items-center overflow-hidden rounded-full border border-grey-300 dark:border-grey-800 ${r?`outline-2 outline-green`:``}`,style:{backgroundColor:e.hex},title:e.title,type:`button`,onClick:()=>{c.current=!1,l.current=!0,n(t),m()},children:qo(e.hex)&&(0,B.jsx)(Jo,{})},e.title)})}),(0,B.jsxs)(`button`,{"aria-label":`Pick color`,className:`relative size-6 cursor-pointer rounded-full border border-grey-200 dark:border-grey-800`,type:`button`,children:[(0,B.jsx)(`div`,{className:`absolute inset-0 rounded-full bg-[conic-gradient(hsl(360,100%,50%),hsl(315,100%,50%),hsl(270,100%,50%),hsl(225,100%,50%),hsl(180,100%,50%),hsl(135,100%,50%),hsl(90,100%,50%),hsl(45,100%,50%),hsl(0,100%,50%))]`}),(0,B.jsx)(`div`,{className:`absolute inset-[3px] overflow-hidden rounded-full border border-white dark:border-grey-950`,style:{backgroundColor:s}})]})]})]})}),(0,B.jsx)(rr,{align:`end`,className:`w-auto p-4`,onEscapeKeyDown:e=>{e.stopPropagation()},children:(0,B.jsx)(`div`,{onInputCapture:()=>{c.current=!0},onKeyDownCapture:()=>{c.current=!0},onMouseDownCapture:()=>{c.current=!0},onPointerDownCapture:()=>{c.current=!0},onTouchStartCapture:()=>{c.current=!0},children:(0,B.jsx)(ma,{value:s,onChange:e=>{l.current||!c.current||n(e)}})})})]})},Xo=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsx)(Yo,{swatches:[{title:`White`,value:`light`,hex:`#ffffff`}],title:`Background color`,value:e.background_color,onChange:e=>e&&t({background_color:e})})},Zo=[{value:`serif`,label:`Elegant serif`},{value:`sans_serif`,label:`Clean sans-serif`}],Qo={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 $o(e,t){let n=Qo[e]||Qo.sans_serif;return n.options.find(e=>e.value===t)?t:n.map?.[t]||`bold`}var es=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Body font`}),(0,B.jsxs)(vn,{value:e.body_font_category||`sans_serif`,onValueChange:e=>t({body_font_category:e}),children:[(0,B.jsx)(gn,{className:`w-[180px]`,children:(0,B.jsx)(_n,{})}),(0,B.jsx)(hn,{onEscapeKeyDown:e=>{e.stopPropagation()},children:Zo.map(e=>(0,B.jsx)(mn,{value:e.value,children:e.label},e.value))})]})]})},ts=/^#(?:[0-9a-f]{3}){1,2}$/i,ns=e=>e===`light`?`#ffffff`:ts.test(e)?e:`#ffffff`,rs=e=>Mt(ns(e)).hex(),is=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=zo(),r=rs(e.background_color);return(0,B.jsx)(Yo,{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})})},as=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Button corners`}),(0,B.jsxs)(Sn,{type:`single`,value:e.button_corners||`rounded`,onValueChange:e=>e&&t({button_corners:e}),children:[(0,B.jsx)(xn,{"aria-label":`Square`,value:`square`,children:(0,B.jsx)(`span`,{className:`inline-block size-4 border-[1.5px] border-current`})}),(0,B.jsx)(xn,{"aria-label":`Rounded`,value:`rounded`,children:(0,B.jsx)(`span`,{className:`inline-block size-4 rounded-sm border-[1.5px] border-current`})}),(0,B.jsx)(xn,{"aria-label":`Pill`,value:`pill`,children:(0,B.jsx)(`span`,{className:`inline-block size-4 rounded-full border-[1.5px] border-current`})})]})]})},os=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Button style`}),(0,B.jsxs)(Sn,{type:`single`,value:e.button_style||`fill`,onValueChange:e=>e&&t({button_style:e}),children:[(0,B.jsx)(xn,{"aria-label":`Fill`,value:`fill`,children:(0,B.jsx)(`span`,{className:`inline-block h-4 w-5 rounded-sm bg-current`})}),(0,B.jsx)(xn,{"aria-label":`Outline`,value:`outline`,children:(0,B.jsx)(`span`,{className:`inline-block h-4 w-5 rounded-sm border-[1.5px] border-current`})})]})]})},ss=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=zo();return(0,B.jsx)(Yo,{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})})},cs=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsx)(Yo,{swatches:[{title:`Transparent`,value:`transparent`,hex:`#00000000`}],title:`Header background color`,value:e.header_background_color,onChange:e=>e&&t({header_background_color:e})})},ls=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Heading font`}),(0,B.jsxs)(vn,{value:e.title_font_category||`sans_serif`,onValueChange:n=>{let r=$o(n,e.title_font_weight);t({title_font_category:n,title_font_weight:r})},children:[(0,B.jsx)(gn,{className:`w-[180px]`,children:(0,B.jsx)(_n,{})}),(0,B.jsx)(hn,{onEscapeKeyDown:e=>{e.stopPropagation()},children:Zo.map(e=>(0,B.jsx)(mn,{value:e.value,children:e.label},e.value))})]})]})},us=()=>{let{settings:e,onSettingsChange:t}=zo(),n=e.title_font_category||`sans_serif`,r=Qo[n]?.options||Qo.sans_serif.options,i=$o(n,e.title_font_weight);return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Heading weight`}),(0,B.jsxs)(vn,{value:i,onValueChange:e=>t({title_font_weight:e}),children:[(0,B.jsx)(gn,{className:`w-[180px]`,children:(0,B.jsx)(_n,{})}),(0,B.jsx)(hn,{onEscapeKeyDown:e=>{e.stopPropagation()},children:r.map(e=>(0,B.jsx)(mn,{value:e.value,children:e.label},e.value))})]})]})},ds=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Image corners`}),(0,B.jsxs)(Sn,{type:`single`,value:e.image_corners||`square`,onValueChange:e=>e&&t({image_corners:e}),children:[(0,B.jsx)(xn,{"aria-label":`Square`,value:`square`,children:(0,B.jsx)(`span`,{className:`inline-block size-4 border-[1.5px] border-current`})}),(0,B.jsx)(xn,{"aria-label":`Rounded`,value:`rounded`,children:(0,B.jsx)(`span`,{className:`inline-block size-4 rounded-sm border-[1.5px] border-current`})})]})]})},fs=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=zo(),r=rs(e.background_color);return(0,B.jsx)(Yo,{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})})},ps=()=>{let{settings:e,onSettingsChange:t}=zo();return(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{children:`Link style`}),(0,B.jsxs)(Sn,{type:`single`,value:e.link_style||`underline`,onValueChange:e=>e&&t({link_style:e}),children:[(0,B.jsx)(xn,{"aria-label":`Underline`,value:`underline`,children:(0,B.jsx)(we,{className:`size-4`})}),(0,B.jsx)(xn,{"aria-label":`Regular`,value:`regular`,children:(0,B.jsx)(Ae,{className:`size-4`})}),(0,B.jsx)(xn,{"aria-label":`Bold`,value:`bold`,children:(0,B.jsx)(je,{className:`size-4`})})]})]})},ms=()=>{let{settings:e,onSettingsChange:t,accentColor:n}=zo();return(0,B.jsx)(Yo,{accentColor:n,swatches:[{title:`Auto`,value:null,hex:rs(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})})},hs={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},gs={free:`member-welcome-email-free`,paid:`member-welcome-email-paid`},_s=`{"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}}`,vs=`{"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}}`,ys=(e,t)=>({name:e===`free`?`Free member welcome flow`:`Paid member welcome flow`,slug:gs[e],subject:e===`free`?`Welcome to ${t||`our site`}`:`Welcome to your paid subscription`,lexical:e===`free`?_s:vs}),bs=(e,t)=>({id:``,status:`inactive`,...ys(e,t),sender_name:null,sender_email:null,sender_reply_to:null,created_at:``,updated_at:null}),xs=e=>e?.trim()||``,Ss=(...e)=>e.map(xs).find(Boolean)||``,Cs=({automatedEmails:e=[],config:t,defaultEmailAddress:n,newsletter:r,siteTitle:i,supportEmailAddress:a})=>{let o=e.find(e=>e.slug===gs.free),s=e.find(e=>e.slug===gs.paid),c=Ss(o?.sender_name,s?.sender_name),l=Ss(o?.sender_email,s?.sender_email),u=Ss(o?.sender_reply_to,s?.sender_reply_to),d=xs(r?.sender_name),f=r?xs(Bt(r,t,n||void 0)):``,p=r?xs(Wt(r,t,a||void 0,n||void 0)):``,m=d||xs(i)||`Your site name`,h=f||xs(n),g=p||xs(a)||xs(n),_=c||m||`Your Site`,v=l||h||``,y=u||g||``,b=y!==``&&y!==v,x=Nn(t),S=Bn(t);return{hasDistinctReplyTo:b,replyToEmailInput:u,replyToEmailPlaceholder:g,resolvedReplyToEmail:y,resolvedSenderEmail:v,resolvedSenderName:_,senderEmailDomain:S?In(t):null,senderEmailInput:l,senderEmailPlaceholder:h,senderNameInput:c,senderNamePlaceholder:m,showSenderEmailInput:!x||S}},ws=(e=[],{config:t,defaultEmailAddress:n,siteTitle:r,supportEmailAddress:i})=>{let{data:a}=vr({searchParams:{filter:`status:active`,limit:`1`}}),o=a?.newsletters?.[0];return(0,z.useMemo)(()=>Cs({automatedEmails:e,config:t,defaultEmailAddress:n,newsletter:o,siteTitle:r,supportEmailAddress:i}),[e,t,n,o,r,i])},Ts=`welcome-email-design-save-error`,Es=new Set(Object.keys(hs)),Ds=e=>Es.has(e),Os=({generalSettings:e,onGeneralChange:t,showPublicationIconToggle:n,senderNamePlaceholder:r,senderEmailPlaceholder:i,replyToEmailPlaceholder:a,showSenderEmailInput:o,senderNameError:s,senderEmailError:c,replyToEmailError:l})=>(0,B.jsxs)(`div`,{className:`flex flex-col gap-6 pt-6`,children:[(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Email info`}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-sender-name`,children:`Sender name`}),(0,B.jsx)(nr,{id:`welcome-email-sender-name`,placeholder:r,value:e.senderName,onChange:e=>t({senderName:e.target.value})}),s?(0,B.jsx)(`p`,{className:`text-sm text-red`,children:s}):null]}),o?(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-sender-email`,children:`Sender email`}),(0,B.jsx)(nr,{id:`welcome-email-sender-email`,placeholder:i,value:e.senderEmail,onChange:e=>t({senderEmail:e.target.value})}),c?(0,B.jsx)(`p`,{className:`text-sm text-red`,children:c}):null]}):null,(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-reply-to-email`,children:`Reply-to email`}),(0,B.jsx)(nr,{id:`welcome-email-reply-to-email`,placeholder:a,value:e.replyToEmail,onChange:e=>t({replyToEmail:e.target.value})}),l?(0,B.jsx)(`p`,{className:`text-sm text-red`,children:l}):null]})]})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Content`}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,B.jsx)(Po,{value:e.headerImage,onChange:e=>t({headerImage:e})}),n&&(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:`Publication icon`}),(0,B.jsx)(fn,{checked:e.showPublicationIcon,size:`sm`,onCheckedChange:e=>t({showPublicationIcon:e})})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:`Publication title`}),(0,B.jsx)(fn,{checked:e.showPublicationTitle,size:`sm`,onCheckedChange:e=>t({showPublicationTitle:e})})]}),(0,B.jsxs)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:[(0,B.jsx)(`label`,{className:`font-medium`,htmlFor:`welcome-email-footer`,children:`Email footer`}),(0,B.jsx)(bn,{id:`welcome-email-footer`,placeholder:`Any extra information or legal text`,rows:3,value:e.emailFooter,onChange:e=>t({emailFooter:e.target.value})})]}),(0,B.jsx)(Fo,{value:e.showBadge,onChange:e=>t({showBadge:e})})]})]})]}),ks=()=>(0,B.jsxs)(`div`,{className:`flex flex-col gap-6 pt-6`,children:[(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Global`}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,B.jsx)(Xo,{}),(0,B.jsx)(ls,{}),(0,B.jsx)(us,{}),(0,B.jsx)(es,{})]})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Header`}),(0,B.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,B.jsx)(cs,{})})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h4`,{className:`mb-4 font-semibold md:text-lg`,children:`Body`}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,B.jsx)(ms,{}),(0,B.jsx)(is,{}),(0,B.jsx)(os,{}),(0,B.jsx)(as,{}),(0,B.jsx)(fs,{}),(0,B.jsx)(ps,{}),(0,B.jsx)(ds,{}),(0,B.jsx)(ss,{})]})]})]}),As=({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,B.jsxs)(un,{className:`flex min-h-0 flex-1 flex-col`,defaultValue:`general`,variant:`underline`,children:[(0,B.jsxs)(ln,{className:`px-5`,children:[(0,B.jsx)(sn,{value:`general`,children:`General`}),(0,B.jsx)(sn,{value:`design`,children:`Design`})]}),u?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,B.jsx)(Fn,{size:`md`})}):d?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-center text-gray-700 dark:text-gray-300`,children:d}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(cn,{className:`min-h-0 flex-1 overflow-y-auto px-5 pb-5`,value:`general`,children:(0,B.jsx)(Os,{generalSettings:e,replyToEmailError:l,replyToEmailPlaceholder:a,senderEmailError:c,senderEmailPlaceholder:i,senderNameError:s,senderNamePlaceholder:r,showPublicationIconToggle:n,showSenderEmailInput:o,onGeneralChange:t})}),(0,B.jsx)(cn,{className:`min-h-0 flex-1 overflow-y-auto px-5 pb-5`,value:`design`,children:(0,B.jsx)(ks,{})})]})]});function js(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 Ms(e){return Object.fromEntries(Object.entries(e).filter(([e])=>Ds(e)))}function Ns(e){return{...Object.fromEntries(Object.entries(e.designSettings).filter(([e])=>Ds(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 Ps=({message:e})=>(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center text-gray-700 dark:text-gray-300`,children:e}),Fs=e=>e?.trim()||null,Is=O.create(()=>{let e=Re(),{siteData:t,settings:n,config:r}=N(),[i,a,o,s]=R(n,[`title`,`default_email_address`,`icon`,`support_email_address`]),c=g(),{data:l,isLoading:u,isError:d}=Uo(),{data:f}=se(),{mutateAsync:p}=Wo(),{mutateAsync:m}=fe(),{mutateAsync:h}=ie(),_=Je(`automations`),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1),{senderNameInput:S,senderEmailInput:C,replyToEmailInput:w,senderNamePlaceholder:ee,senderEmailPlaceholder:te,replyToEmailPlaceholder:ne,showSenderEmailInput:T,senderEmailDomain:ae}=ws(f?.automated_emails||[],{config:r,defaultEmailAddress:a,siteTitle:i,supportEmailAddress:s}),oe=(0,z.useMemo)(()=>({senderName:S,senderEmail:C,replyToEmail:w,headerImage:``,showPublicationIcon:!0,showPublicationTitle:!0,showBadge:!0,emailFooter:``}),[w,C,S]),ce=(0,z.useCallback)(async()=>{let e=new Map((f?.automated_emails||[]).map(e=>[e.slug,e]));for(let t of[`free`,`paid`]){if(e.has(gs[t]))continue;let n=ys(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:ue,updateForm:de,setFormState:pe,handleSave:me,okProps:he,errors:ge}=re({initialState:{designSettings:{...hs},generalSettings:oe},savingDelay:500,onSave:async e=>{if(!ve)throw Ne.error(`Unable to load email design settings. Please try again.`,{id:Ts}),y(!0),Error(`Unable to load email design settings`);_||await ce();let t={sender_name:Fs(e.generalSettings.senderName),sender_reply_to:Fs(e.generalSettings.replyToEmail),...T?{sender_email:Fs(e.generalSettings.senderEmail)}:{}},{meta:{sent_email_verification:n=[]}={}}=await h(t);await p(Ns(e)),n.length>0&&Ne.info(`We’ve sent a confirmation email to the new address.`),y(!1),Ne.dismiss(Ts)},onSaveError:e=>{c(e,{withToast:!1}),Ne.error(`Unable to save email design settings. Please try again.`,{id:Ts}),y(!0)},onValidate:e=>{let t={},n=e.generalSettings.senderEmail?.trim(),r=e.generalSettings.replyToEmail?.trim();return T&&n&&(Vo.default.isEmail(n)?ae&&n.split(`@`)[1]?.toLowerCase()!==ae.toLowerCase()&&(t.senderEmail=`Email address must end with @${ae}`):t.senderEmail=`Enter a valid email address`),r&&!Vo.default.isEmail(r)&&(t.replyToEmail=`Enter a valid email address`),t}}),[E,_e]=(0,z.useState)(null),ve=l?.automated_email_design?.[0],ye=ve?`${ve.id}:${ve.updated_at??`initial`}`:null,{designSettings:be,generalSettings:xe}=le;(0,z.useEffect)(()=>{ve&&E===null&&(pe(e=>({designSettings:Ms(ve),generalSettings:js(ve,e.generalSettings)})),_e(ye))},[ve,ye,E,pe]),(0,z.useEffect)(()=>{b||f===void 0||(pe(e=>({...e,generalSettings:{...e.generalSettings,senderName:S,senderEmail:C,replyToEmail:w}})),x(!0))},[f,w,C,b,S,pe]);let Se=(0,z.useCallback)(e=>{y(!1),Ne.dismiss(Ts),de(t=>({...t,designSettings:{...t.designSettings,...e}}))},[de]),Ce=(0,z.useCallback)(e=>{y(!1),Ne.dismiss(Ts),de(t=>({...t,generalSettings:{...t.generalSettings,...e}}))},[de]),we=(0,z.useCallback)(()=>{e.hide()},[e]),Te=`Unable to load email design settings. Please try again.`,Ee=v?{...he,color:`red`,label:`Retry`}:he;return(0,B.jsx)(Ro,{accentColor:t.accent_color,settings:be,onSettingsChange:Se,children:(0,B.jsx)(_o,{afterClose:()=>{e.resolveHide(),e.remove()},dirty:ue===`unsaved`,isLoading:u||d,okProps:Ee,open:e.visible,preview:d?(0,B.jsx)(Ps,{message:Te}):(0,B.jsx)(No,{accentColor:t.accent_color,emailFooter:xe.emailFooter,footerLinkText:`Manage your preferences`,headerImage:xe.headerImage,publicationIcon:o,replyToEmail:xe.replyToEmail||ne||``,senderEmail:xe.senderEmail||te||a||``,senderName:xe.senderName||ee||i||`Your site`,settings:be,showBadge:xe.showBadge,showPublicationIcon:xe.showPublicationIcon&&!!o,showPublicationTitle:xe.showPublicationTitle,showRecipientLine:!1,showSubjectLine:!1,siteTitle:i,subject:`Welcome to ${xe.senderName||ee||i||`our publication`}`,children:(0,B.jsx)(Bo,{})}),sidebar:(0,B.jsx)(As,{errorMessage:d?Te:void 0,generalSettings:xe,isLoading:u,replyToEmailError:ge.replyToEmail,replyToEmailPlaceholder:ne,senderEmailError:ge.senderEmail,senderEmailPlaceholder:te,senderNameError:ge.senderName,senderNamePlaceholder:ee,showPublicationIconToggle:!!o,showSenderEmailInput:T,onGeneralChange:Ce}),testId:`welcome-email-customize-modal`,title:`Welcome emails`,onClose:we,onSave:()=>me({fakeWhenUnchanged:!0})})})}),Ls={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`]},Rs=()=>{let e=()=>{O.show(Is)};return(0,B.jsx)(an,{children:(0,B.jsx)(Kt,{action:(0,B.jsx)(`button`,{className:`font-semibold text-green hover:opacity-80`,type:`button`,onClick:e,children:`Edit`}),hideActions:!1,testId:`automations-transactional-row`,children:(0,B.jsxs)(`button`,{className:`flex w-full min-w-0 items-center gap-3 py-3 text-left focus-visible:ring-2 focus-visible:ring-green focus-visible:ring-offset-2 focus-visible:outline-none dark:focus-visible:ring-offset-black`,type:`button`,onClick:e,children:[(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-grey-100 dark:bg-grey-900`,children:(0,B.jsx)(M,{colorClass:`text-grey-700 dark:text-grey-600`,name:`mailplus`,size:`md`})}),(0,B.jsxs)(`div`,{className:`min-w-0 grow`,children:[(0,B.jsx)(`div`,{className:`leading-tight font-medium`,children:`Email design`}),(0,B.jsx)(`div`,{className:`mt-1 text-sm leading-[1.35] text-grey-700 dark:text-grey-600`,children:`Customize the appearance of automation emails`})]})]})})})},zs=()=>{let e=window.location.hash.slice(1);return new URL(e||`/`,window.location.origin).pathname.startsWith(`/settings/memberemails`)},Bs=({keywords:e,newslettersEnabled:t})=>{let{updateRoute:n}=P(),r=St().getParam(`verifyEmail`),{mutateAsync:i}=de(),a=g(),o=(0,z.useRef)(null),[s,c]=(0,z.useState)(t?`newsletters`:`transactional`),[l,u]=(0,z.useState)(`active`);return(0,z.useEffect)(()=>{!t&&s===`newsletters`&&c(`transactional`)},[t,s]),(0,z.useEffect)(()=>{!r||!zs()||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,B.jsx)(B.Fragment,{children:`Automation email sender settings have been updated.`});e===`sender_reply_to`&&(t=`Reply-to address verified`,a=(0,B.jsx)(B.Fragment,{children:`Automation email reply-to address has been verified and updated.`})),n(`emails`),O.show(F,{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 m&&e.message===`Token expired`&&(t=`Verification link has expired.`),n(`emails`),O.show(F,{title:`Error verifying email address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),a(e,{withToast:!1})}})())},[a,n,r,i]),(0,B.jsx)(q,{customButtons:t&&s===`newsletters`?(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Add newsletter`,size:`sm`,onClick:()=>{n(`newsletters/new`)}}):void 0,description:`Manage newsletters and design automation emails.`,keywords:e,navid:`emails`,testId:`emails`,title:`Newsletters & automation emails`,children:(0,B.jsxs)(un,{value:s,variant:`underline`,onValueChange:e=>c(e),children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between border-b border-grey-200 dark:border-grey-900`,children:[(0,B.jsxs)(ln,{className:`border-b-0`,children:[t&&(0,B.jsx)(sn,{value:`newsletters`,children:`Newsletters`}),(0,B.jsx)(sn,{value:`transactional`,children:`Automation emails`})]}),t&&s===`newsletters`&&(0,B.jsxs)(vn,{value:l,onValueChange:e=>u(e),children:[(0,B.jsx)(gn,{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,B.jsx)(_n,{})}),(0,B.jsxs)(hn,{children:[(0,B.jsx)(mn,{value:`active`,children:`Active`}),(0,B.jsx)(mn,{value:`archived`,children:`Archived`})]})]})]}),t&&(0,B.jsx)(cn,{value:`newsletters`,children:(0,B.jsx)(ho,{filter:l})}),(0,B.jsx)(cn,{value:`transactional`,children:(0,B.jsx)(Rs,{})})]})})},Vs=()=>{let{settings:e,config:t}=N(),[n]=R(e,[`editor_default_email_recipients`]),r=n!==`disabled`,i=r&&!t.mailgunIsConfigured;return(0,B.jsxs)(Ya,{keywords:[Ls.enableNewsletters,...r?[Ls.defaultRecipients]:[],Ls.emails,...i?[Ls.mailgun]:[]].flat(),title:`Email`,children:[(0,B.jsx)(no,{keywords:Ls.enableNewsletters}),r&&(0,B.jsx)(to,{keywords:Ls.defaultRecipients}),(0,B.jsx)(Bs,{keywords:Ls.emails,newslettersEnabled:r}),i&&(0,B.jsx)(io,{keywords:Ls.mailgun})]})},Hs=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=k(),[c,l,u,d,f,p]=R(t,[`email_track_opens`,`email_track_clicks`,`members_track_sources`,`outbound_link_tagging`,`web_analytics`,`web_analytics_configured`]),m=Mn(t,`email_track_clicks`),[h,g]=(0,z.useState)(!1),_=rt(),{updateRoute:v}=P();(0,z.useEffect)(()=>{_?.isLimited(`limitAnalytics`)?_.errorIfWouldGoOverLimit(`limitAnalytics`).catch(e=>{e instanceof $e&&g(!0)}):g(!1)},[_]);let y=(e,t)=>{o(e,t.target.checked),s(!0)},b=p&&!h;return(0,B.jsxs)(q,{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,B.jsxs)(I,{className:`analytics-settings gap-y-0!`,columns:1,children:[(0,B.jsx)(ut,{align:`center`,checked:f&&b,containerClasses:`py-4`,direction:`rtl`,disabled:!b,gap:`gap-0`,hint:p?(0,B.jsxs)(B.Fragment,{children:[`Cookie-free, first party traffic analytics for your site, powered by `,(0,B.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/integrations/tinybird`,rel:`noopener noreferrer`,target:`_blank`,children:`Tinybird`})]}):(0,B.jsx)(B.Fragment,{children:`Cookie-free, first party traffic analytics for your site`}),label:`Web analytics`,onChange:e=>{y(`web_analytics`,e)}}),h?(0,B.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,B.jsx)(`span`,{className:`flex items-start gap-2`,children:(0,B.jsxs)(`span`,{children:[`Web analytics is available on the Publisher plan and above. `,(0,B.jsx)(`span`,{className:`cursor-pointer text-green`,onClick:()=>v({route:`/pro`,isExternal:!0}),children:`Upgrade now →`})]})})}):p?(0,B.jsx)(Pn,{}):(0,B.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,B.jsx)(`span`,{className:`flex items-start gap-2`,children:(0,B.jsxs)(`span`,{children:[`Web analytics in Ghost is powered by `,(0,B.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,B.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,B.jsx)(ut,{align:`center`,checked:c,containerClasses:`py-4`,direction:`rtl`,gap:`gap-0`,hint:`Record when a member opens an email`,label:`Email opens`,onChange:e=>{y(`email_track_opens`,e)}}),(0,B.jsx)(Pn,{}),(0,B.jsx)(ut,{align:`center`,checked:l,containerClasses:`py-4`,direction:`rtl`,disabled:m,gap:`gap-0`,hint:`Record when a member clicks on any link in an email`,label:`Email clicks`,onChange:e=>{y(`email_track_clicks`,e)}}),(0,B.jsx)(Pn,{}),(0,B.jsx)(ut,{align:`center`,checked:u,containerClasses:`py-4`,direction:`rtl`,gap:`gap-0`,hint:`Track the traffic sources and posts that drive the most member growth`,label:`Member sources`,onChange:e=>{y(`members_track_sources`,e)}}),(0,B.jsx)(Pn,{}),(0,B.jsx)(ut,{align:`center`,checked:d,containerClasses:`py-4`,direction:`rtl`,gap:`gap-0`,hint:`Make it easier for other sites to track the traffic you send them in their analytics`,label:`Outbound link tagging`,onChange:e=>{y(`outbound_link_tagging`,e)}})]}),(0,B.jsx)(`div`,{className:`items-center-mt-1 flex justify-between`,children:(0,B.jsx)(`a`,{className:`font-medium text-green`,href:`https://ghost.org/help/post-analytics/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn about analytics`})})]})},`Analytics`),Us=[{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`}],Ws=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(`.`)),Gs=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(Ws.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},Ks=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,errors:s,handleEditingChange:c}=k({onValidate:()=>{let e=Gs(l);return e?{publicationLanguage:e}:{}}}),[l]=R(t,[`locale`]),u=z.useMemo(()=>Us.map(e=>({value:e.code,label:`${e.label} (${e.code})`})),[]),d=e=>{o(`locale`,e),n||c(!0)},f=(0,B.jsxs)(B.Fragment,{children:[`Default: English (`,(0,B.jsx)(`strong`,{children:`en`}),`); find out more about`,(0,B.jsx)(`a`,{className:`text-green-400`,href:`https://ghost.org/docs/faq/translation/`,rel:`noopener noreferrer`,target:`_blank`,children:` using Ghost in other languages`})]});return(0,B.jsx)(q,{description:`Set the language/locale which is used on your site`,isEditing:n,keywords:e,navid:`publication-language`,saveState:r,testId:`publication-language`,title:`Publication Language`,hideEditButton:!0,onCancel:a,onEditingChange:c,onSave:i,children:(0,B.jsx)(I,{columns:1,children:(0,B.jsx)(Rr,{defaultListValue:`en`,error:!!s.publicationLanguage,hint:s.publicationLanguage||f,options:u,otherHint:`Enter a custom locale code.`,otherPlaceholder:`e.g. pt-BR, sr-Cyrl, en`,selectedValue:l,testId:`locale-select`,title:`Site language`,validate:Gs,isSearchable:!0,onSelect:d})})})},`Publication language`),qs=({title:e,description:t,icon:n,url:r})=>{let i=r?.replace(/\/$/,``),a=i?.replace(/^https?:\/\//,``).replace(/\/?$/,``);return(0,B.jsx)(`div`,{children:(0,B.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,B.jsx)(`div`,{className:`-mt-4 mb-2 text-sm text-grey-500 uppercase dark:text-grey-800`,children:`Preview`}),(0,B.jsxs)(`div`,{className:`rounded-t-sm bg-white px-5 py-3 shadow-lg dark:bg-grey-950`,children:[(0,B.jsxs)(`div`,{className:`mt-3 flex items-center`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(Nr,{className:`mr-7 h-7`})}),(0,B.jsx)(`div`,{className:`grow`,children:(0,B.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,B.jsx)(M,{className:`stroke-[2px] text-blue-600`,name:`magnifying-glass`,size:`sm`})})})]}),(0,B.jsxs)(`div`,{className:`mt-4 flex items-center gap-2 border-t border-grey-200 pt-4 dark:border-grey-900`,children:[(0,B.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,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsx)(`span`,{children:a}),(0,B.jsx)(`span`,{className:`-mt-0.5 inline-block text-sm text-grey-600`,children:i})]})]}),(0,B.jsxs)(`div`,{className:`mt-1 flex flex-col`,children:[(0,B.jsx)(`span`,{className:`text-lg text-[#1a0dab] dark:text-blue`,children:e}),(0,B.jsx)(`span`,{className:`text-grey-900 dark:text-grey-700`,children:t})]})]})]})})},Js=J(({keywords:e})=>{let{localSettings:t,saveState:n,siteData:r,focusRef:i,isEditing:a,handleSave:o,handleCancel:s,handleEditingChange:c,updateSetting:l}=k(),u=g(),{mutateAsync:d}=tn(),f=Qt(),p=Je(`llmsTxt`),[m,h,_,v,y,b,x,S,C,w]=R(t,[`meta_title`,`meta_description`,`title`,`description`,`og_title`,`og_description`,`og_image`,`twitter_title`,`twitter_description`,`twitter_image`]).map(e=>e||``),[ee]=R(t,[`llms_enabled`]),te=ee!==!1,[ne,re]=(0,z.useState)(`metadata`),T=e=>t=>{l(e,t.target.value),a||c(!0)},ie=e=>async t=>{try{let n=wt(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)}},ae=e=>()=>{l(e,``),a||c(!0)},oe=e=>{l(`llms_enabled`,e.target.checked),a||c(!0)},se=T(`meta_title`),ce=T(`meta_description`),le=T(`og_title`),ue=T(`og_description`),de=ie(`og_image`),fe=ae(`og_image`),pe=T(`twitter_title`),me=T(`twitter_description`),he=ie(`twitter_image`),ge=ae(`twitter_image`),E=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(I,{className:`my-6 gap-3`,children:[p&&(0,B.jsx)(ut,{checked:te,direction:`rtl`,label:`Enable structured data for LLMs and AI search engines`,onChange:oe}),(0,B.jsx)(A,{hint:`Recommended: 70 characters`,inputRef:i,maxLength:300,placeholder:_,title:`Meta title`,value:m,onChange:se}),(0,B.jsx)(A,{hint:`Recommended: 156 characters`,maxLength:500,placeholder:v,title:`Meta description`,value:h,onChange:ce})]}),(0,B.jsx)(qs,{description:h||v,icon:r?.icon,title:m||_,url:r?.url})]}),_e=(0,B.jsxs)(`div`,{className:`mt-6 md:mx-[52px]`,children:[(0,B.jsxs)(`div`,{className:`mb-4 flex items-center gap-2`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(Mr,{className:`size-10`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`mb-1 leading-none font-semibold text-grey-900 dark:text-grey-300`,children:_}),(0,B.jsx)(`div`,{className:`leading-none text-grey-700`,children:`2h`})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`mb-2 h-3 w-full rounded bg-grey-200 dark:bg-grey-900`}),(0,B.jsx)(`div`,{className:`mb-4 h-3 w-3/5 rounded bg-grey-200 dark:bg-grey-900`}),(0,B.jsxs)(I,{className:`overflow-hidden rounded-md border border-grey-300 dark:border-grey-900`,children:[(0,B.jsx)(on,{fileUploadClassName:`flex cursor-pointer items-center justify-center rounded rounded-b-none border border-grey-100 border-b-0 bg-grey-50 p-3 font-semibold text-grey-800 hover:text-black dark:border-grey-900`,height:`300px`,id:`facebook-image`,imageURL:x,pintura:{isEnabled:f.isEnabled,openEditor:async()=>f.openEditor({image:x||``,handleSave:async e=>{let t=wt(await d({file:e}));l(`og_image`,t)}})},onDelete:fe,onUpload:de,children:`Upload Facebook image`}),(0,B.jsxs)(`div`,{className:`mt-5 flex flex-col gap-x-6 gap-y-7 px-4 pb-7`,children:[(0,B.jsx)(A,{maxLength:300,placeholder:_,title:`Facebook title`,value:y,onChange:le}),(0,B.jsx)(A,{maxLength:300,placeholder:v,title:`Facebook description`,value:b,onChange:ue})]})]})]})]}),ve=(0,B.jsxs)(`div`,{className:`mt-6 flex flex-col gap-3 md:flex-row`,children:[(0,B.jsx)(`div`,{className:`pt-1`,children:(0,B.jsx)(Pr,{className:`-mb-1 size-10`})}),(0,B.jsxs)(`div`,{className:`w-full md:mr-[52px]`,children:[(0,B.jsxs)(`div`,{className:`mb-2`,children:[(0,B.jsx)(`span`,{className:`mr-1 font-semibold text-grey-900 dark:text-grey-300`,children:_}),(0,B.jsx)(`span`,{className:`text-grey-700`,children:`· 2h`})]}),(0,B.jsx)(`div`,{className:`mb-2 h-3 w-full rounded bg-grey-200 dark:bg-grey-900`}),(0,B.jsx)(`div`,{className:`mb-4 h-3 w-3/5 rounded bg-grey-200 dark:bg-grey-900`}),(0,B.jsxs)(I,{className:`overflow-hidden rounded-md border border-grey-300 dark:border-grey-900`,children:[(0,B.jsx)(on,{fileUploadClassName:`flex cursor-pointer items-center justify-center rounded rounded-b-none border border-grey-100 border-b-0 bg-grey-50 p-3 font-semibold text-grey-800 hover:text-black dark:border-grey-900`,height:`300px`,id:`twitter-image`,imageURL:w,pintura:{isEnabled:f.isEnabled,openEditor:async()=>f.openEditor({image:w||``,handleSave:async e=>{let t=wt(await d({file:e}));l(`twitter_image`,t)}})},onDelete:ge,onUpload:he,children:`Upload X image`}),(0,B.jsxs)(`div`,{className:`mt-6 flex flex-col gap-x-6 gap-y-7 px-4 pb-7`,children:[(0,B.jsx)(A,{maxLength:300,placeholder:_,title:`X title`,value:S,onChange:pe}),(0,B.jsx)(A,{maxLength:300,placeholder:v,title:`X description`,value:C,onChange:me})]})]})]})]});return(0,B.jsx)(q,{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,B.jsx)(xt,{selectedTab:ne,tabs:[{id:`metadata`,title:`Search`,contents:E},{id:`twitter`,title:`X card`,contents:ve},{id:`facebook`,title:`Facebook card`,contents:_e}],testId:`seo-tabview`,onTabChange:re})})},`SEO meta`),Ys=[`facebook`,`twitter`],Xs=Vt.filter(e=>!Ys.includes(e)),Zs=e=>{let t=R(e,[...Vt]);return Object.fromEntries(Yt.map((e,n)=>{let r=t[n];return[e.key,e.toDisplayValue(r)]}))},Qs=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=k(),[c,l]=(0,z.useState)({}),[u,d]=(0,z.useState)(()=>Zs(t)),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)({});(0,z.useEffect)(()=>{n||h({})},[n]);let g=R(t,[...Vt]),_=Xs.some(e=>t?.some(t=>t.key===e)),v=(0,z.useMemo)(()=>_?Yt:Yt.filter(e=>Ys.includes(e.key)),[_]);(0,z.useEffect)(()=>{f||d(Zs(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}=Pt(e,t);o(e,n),c[e]&&l(t=>({...t,[e]:``}))}catch{l(n=>({...n,[e]:qt(e,t)}))}},b=e=>{if(p(t=>t===e?null:t),qt(e,u[e]))return;let{displayValue:t}=Pt(e,u[e]);d(n=>({...n,[e]:t}))};return(0,B.jsx)(q,{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=qt(t.key,u[t.key]);return n&&(e[t.key]=n),e},{});l(e),Object.keys(e).length===0&&i()},children:(0,B.jsx)(I,{children:v.map(e=>(0,B.jsx)(A,{"data-testid":e.testId,error:!!c[e.key],hint:c[e.key],placeholder:e.placeholder,title:e.publicationTitle,value:u[e.key],onBlur:()=>b(e.key),onChange:t=>y(e.key,t.target.value),onFocus:()=>p(e.key)},e.key))})})},`Social accounts`),$s=[{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`}],ec=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}}},tc=(e,t)=>`(${t}) ${e}`,nc=()=>$s.map(({name:e,label:t})=>{let{offsetString:n,offsetMinutes:r}=ec(e);return{name:e,label:n?tc(t,n):t,offsetMinutes:r}}).sort((e,t)=>e.offsetMinutes-t.offsetMinutes),rc=({timezone:e})=>{let[t,n]=(0,z.useState)(at(e));return(0,z.useEffect)(()=>{let t=setInterval(()=>{n(at(e))},1e3);return()=>{clearInterval(t)}},[e]),(0,B.jsxs)(B.Fragment,{children:[`The local time here is currently `,t]})},ic=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,handleEditingChange:s}=k(),[c]=R(t,[`timezone`]),l=nc().map(e=>({value:e.name,label:e.label})),u=e=>{o(`timezone`,e||null),s(!0)};return(0,B.jsx)(q,{description:`Set the time and date of your publication, used for all published posts`,hideEditButton:!0,isEditing:n,keywords:e,navid:`timezone`,saveState:r,testId:`timezone`,title:`Site timezone`,onCancel:a,onEditingChange:s,onSave:i,children:(0,B.jsx)(I,{columns:1,children:(0,B.jsx)(et,{hint:(0,B.jsx)(rc,{timezone:c}),options:l,selectedOption:l.find(e=>e.value===c),testId:`timezone-select`,title:`Site timezone`,isSearchable:!0,onSelect:e=>u(e?.value)})})})},`Site timezone`),ac=J(({keywords:e})=>{let{errors:t,localSettings:n,isEditing:r,saveState:i,focusRef:a,clearError:o,handleSave:s,handleCancel:c,updateSetting:l,handleEditingChange:u}=k({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]=R(n,[`title`,`description`]),p=e=>{l(`title`,e.target.value)},m=e=>{l(`description`,e.target.value)},h=(0,B.jsx)(I,{columns:2,values:[{heading:`Site title`,key:`site-title`,value:d},{heading:`Site description`,key:`site-description`,value:f}]}),g=(0,B.jsxs)(I,{children:[(0,B.jsx)(A,{error:!!t.title,hint:t.title||`The name of your site`,inputRef:a,maxLength:63,placeholder:`Site title`,title:`Site title`,value:d,onChange:p,onKeyDown:()=>o(`title`)}),(0,B.jsx)(A,{hint:`A short description, used in your theme, meta data and search results`,maxLength:200,placeholder:`Site description`,title:`Site description`,value:f,onChange:m})]});return(0,B.jsx)(q,{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`),oc=({user:e})=>{let{updateRoute:t}=P(),{currentUser:n}=N();return e?(0,B.jsxs)(`div`,{className:E(`group flex gap-3`,wn(n)&&`cursor-pointer`),"data-testid":`owner-user`,onClick:()=>{wn(n)&&t({route:`staff/${e.slug}`})},children:[(0,B.jsx)(qn,{className:`size-12`,email:e.email,name:e.name,src:e.profile_image}),(0,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsxs)(`span`,{children:[e.name,` — `,(0,B.jsx)(`strong`,{children:`Owner`}),` `,wn(n)&&(0,B.jsx)(`button`,{className:`ml-2 inline-block font-semibold text-green group-hover:visible md:invisible`,type:`button`,children:`View profile`})]}),(0,B.jsx)(`span`,{className:`text-sm text-grey-700`,children:e.email})]})]}):null},sc=({users:e,groupname:t})=>{let{updateRoute:n}=P(),{currentUser:r}=N(),i=e=>{n({route:`staff/${e.slug}`})};return!e||!e.length?(0,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(ke,{})}),`No `,t,` found.`]}):(0,B.jsx)(en,{titleSeparator:!1,children:e.map(e=>{let t=e.name||``;e.status===`inactive`&&(t=`${t} (Suspended)`);let n=wn(r)||En(r)&&Cn(e)||r.id===e.id;return(0,B.jsx)(Ke,{action:n&&(0,B.jsx)(j,{color:`green`,label:`Edit`,link:!0,onClick:()=>i(e)}),avatar:(0,B.jsx)(qn,{className:`size-10`,email:e.email,name:e.name,src:e.profile_image}),bgOnHover:n,className:`min-h-[64px]`,detail:e.email,hideActions:!0,id:`list-item-${e.id}`,separator:!1,testId:`user-list-item`,title:t,onClick:()=>n&&i(e)},e.id)})})},cc=({invite:e})=>{let[t,n]=(0,z.useState)(``),[r,i]=(0,z.useState)(``),{mutateAsync:a}=Ze(),{mutateAsync:o}=Ge(),s=g(),c=`Revoke`;t===`progress`&&(c=`Revoking...`);let l=`Resend`;return r===`progress`&&(l=`Resending...`),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(j,{color:`red`,label:c,link:!0,onClick:async()=>{try{n(`progress`),await a(e.id),L({title:`Invitation revoked`,message:e.email,type:`success`})}catch(e){s(e)}finally{n(``)}}}),(0,B.jsx)(j,{className:`ml-2`,color:`green`,label:l,link:!0,onClick:async()=>{try{i(`progress`),await a(e.id),await o({email:e.email,roleId:e.role_id}),L({title:`Invitation resent`,message:e.email,type:`success`})}catch(e){s(e)}finally{i(``)}}})]})},lc=({users:e})=>!e||!e.length?(0,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(ke,{})}),`No invitations found.`]}):(0,B.jsx)(en,{children:e.map(e=>(0,B.jsx)(Ke,{action:(0,B.jsx)(cc,{invite:e}),avatar:(0,B.jsx)(qn,{className:`size-10`,email:e.email}),className:`min-h-[64px]`,detail:e.role,hideActions:!0,id:`list-item-${e.id}`,separator:!1,testId:`user-invite`,title:e.email,onClick:()=>{}},e.id))}),uc=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}=ft(),{updateRoute:h}=P(),{settings:_,config:v,currentUser:y}=N(),b=()=>{h(`staff/invite`)},x=(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Invite people`,size:`sm`,linkWithPadding:!0,onClick:()=>{b()}}),S=St().getParam(`tab`),[C,w]=(0,z.useState)(S||`administrators`);(0,z.useEffect)(()=>{S&&w(S)},[S]);let ee=e=>{h(`staff?tab=${e}`),w(e)},te=[{id:`administrators`,title:`Administrators`,contents:(0,B.jsx)(sc,{groupname:`administrators`,users:o}),counter:o.length?o.length:void 0},{id:`editors`,title:`Editors`,contents:(0,B.jsx)(sc,{groupname:`editors`,users:s}),counter:s.length?s.length:void 0},{id:`authors`,title:`Authors`,contents:(0,B.jsx)(sc,{groupname:`authors`,users:c}),counter:c.length?c.length:void 0},{id:`contributors`,title:`Contributors`,contents:(0,B.jsx)(sc,{groupname:`contributors`,users:l}),counter:l.length?l.length:void 0},{id:`invited`,title:`Invited`,contents:(0,B.jsx)(lc,{users:u}),counter:r||void 0}],ne=fr(_,`require_email_mfa`)||!1,{mutateAsync:re}=Dn(),T=g();return(0,B.jsxs)(q,{customButtons:x,highlightOnModalClose:t,keywords:e,navid:`staff`,testId:`users`,title:`Staff`,children:[(0,B.jsx)(oc,{user:a}),(i.length>1||u.length>0)&&(0,B.jsx)(xt,{selectedTab:C,tabs:te,testId:`user-tabview`,onTabChange:ee}),d&&C!==`invited`&&(0,B.jsx)(j,{label:`Load more (showing ${Te(i.length)}/${Te(n)} users)`,link:!0,onClick:()=>f()}),p&&C===`invited`&&(0,B.jsx)(j,{label:`Load more (showing ${Te(u.length)}/${Te(r)} invites)`,link:!0,onClick:()=>m()}),v?.security?.staffDeviceVerification&&wn(y)&&(0,B.jsxs)(`div`,{className:`flex flex-col gap-6 ${i.length>1||u.length>0?`-mt-6`:``}`,children:[(0,B.jsx)(Pn,{}),(0,B.jsxs)(`div`,{className:`flex items-baseline justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsx)(`span`,{className:`text-[1.5rem] font-semibold tracking-tight`,children:`Security settings`}),(0,B.jsx)(`span`,{children:`Require email 2FA codes to be used on all staff logins`})]}),(0,B.jsx)(ut,{checked:ne,direction:`rtl`,gap:`gap-0`,onChange:async()=>{let e=!ne;try{await re([{key:`require_email_mfa`,value:e}])}catch(e){T(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`]},dc=()=>(0,B.jsxs)(Ya,{keywords:Object.values(X).flat(),title:`General settings`,children:[(0,B.jsx)(ac,{keywords:X.titleAndDescription}),(0,B.jsx)(ic,{keywords:X.timeZone}),(0,B.jsx)(Ks,{keywords:X.publicationLanguage}),(0,B.jsx)(uc,{keywords:X.users}),(0,B.jsx)(Js,{keywords:X.metadata}),(0,B.jsx)(Qs,{keywords:X.socialAccounts}),(0,B.jsx)(Hs,{keywords:X.analytics})]}),fc=({keywords:e})=>{let{updateRoute:t}=P();return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Embed`,size:`sm`,onClick:()=>{t(`embed-signup-form/show`)}}),description:`Grow your audience from anywhere on the web`,keywords:e,navid:`embed-signup-form`,testId:`embed-signup-form`,title:`Signup forms`})},pc=``+new URL(`explore-default-logo-P7UjmPqe.png`,import.meta.url).href,mc=``+new URL(`ghost-explore-BuZQ7HbF.png`,import.meta.url).href,hc=J(({keywords:e})=>{let{settings:t}=N(),{mutateAsync:n}=Dn(),r=g(),{updateRoute:i}=P(),{refetch:a}=pr({searchParams:{limit:`1`}}),[o,s]=(0,z.useState)(0);(0,z.useEffect)(()=>{(async()=>{let{data:e}=await a(),t=e?.meta?.pagination?.total||0;s(t)})()},[a]);let[c,l]=R(t,[`accent_color`,`icon`]),{localSettings:u,siteData:d}=k(),[f,p]=R(u,[`title`,`description`]),m=!!fr(t,`explore_ping`),h=!!fr(t,`explore_ping_growth`),_=d?.url,v=_?.replace(/^https?:\/\//,``).replace(/\/?$/,``),y=c||`#F6414E`,b=async(e,t)=>{let i=[{key:e,value:t.target.checked}];try{await n(i)}catch(e){r(e)}};return(0,B.jsx)(q,{customButtons:(0,B.jsx)(ut,{checked:m,direction:`rtl`,testId:`explore-toggle`,onChange: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,B.jsxs)(I,{columns:1,children:[(0,B.jsx)(Pn,{}),(0,B.jsx)(ut,{checked:h,containerClasses:`items-center!`,direction:`rtl`,gap:`gap-0`,hint:`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.`,label:`Share growth data to rank higher?`,labelClasses:`w-full`,testId:`explore-growth-toggle`,onChange:e=>b(`explore_ping_growth`,e)}),(0,B.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,B.jsxs)(`div`,{className:`relative w-full max-w-[320px] rounded-lg bg-white p-6 text-black shadow-lg`,children:[(0,B.jsx)(`div`,{className:`absolute top-2.5 right-3 text-sm text-grey-300 uppercase`,children:`Preview`}),l?(0,B.jsx)(`div`,{className:`size-9 rounded-sm bg-cover bg-center`,style:{backgroundImage:`url(${l})`}}):(0,B.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,B.jsx)(`img`,{className:`h-auto w-8`,src:pc})}),(0,B.jsx)(`div`,{className:`mt-3 text-lg font-semibold tracking-tight`,children:f}),p&&(0,B.jsx)(`div`,{className:`mt-0.5 leading-tight text-grey-700`,children:p}),(0,B.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,B.jsx)(`span`,{className:`font-semibold`,children:v}),h?(0,B.jsxs)(`span`,{className:`rounded-sm bg-black px-2 py-0.5 text-sm font-semibold text-white`,"data-testid":`explore-members-count`,children:[Ee(o),`\xA0`,o===1?`member`:`members`]}):(0,B.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,B.jsx)(M,{name:`arrow-right`,size:10})})]})]})}),(0,B.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,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:`Get featured on the Ghost.org homepage`}),(0,B.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,B.jsx)(j,{className:`border border-purple bg-white text-purple hover:bg-purple/5 hover:text-purple dark:bg-transparent`,icon:`send`,label:`Send testimonial`,onClick:()=>{i(`explore/testimonial`)}})]})]}):(0,B.jsx)(`img`,{src:mc})})},`Ghost Explore`),gc=``+new URL(`network-C2Wz-Sfw.png`,import.meta.url).href,_c=J(({keywords:e})=>{let{settings:t}=N(),{mutateAsync:n}=Dn(),r=g(),{updateRoute:i}=P(),a=rt()?.isDisabled(`limitSocialWeb`),{subdir:o}=f(),[s]=R(t,[`is_private`]),c=!!o,l=[`localhost`,`127.0.0.1`,`::1`].includes(window.location.hostname),u=Vo.default.isIP(window.location.hostname),d=a||c||l||u,p=!!s,m=d||p,[h]=R(t,[`social_web`]),_=!!h&&!m;return(0,B.jsx)(q,{customButtons:(0,B.jsx)(ut,{checked:_,direction:`rtl`,disabled:m,onChange:async e=>{let t=[{key:`social_web`,value:e.target.checked}];try{await n(t)}catch(e){r(e)}}},`${_}-${m}`),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,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(I,{columns:1,values:[{key:`private`,value:m&&(0,B.jsxs)(`div`,{className:`flex w-full gap-1.5 rounded-md border border-grey-200 bg-grey-50 p-3 dark:border-grey-900 dark:bg-grey-900`,children:[(0,B.jsx)(M,{name:`info`,size:16}),(0,B.jsx)(`div`,{className:`-mt-0.5`,children:p?(0,B.jsxs)(B.Fragment,{children:[`Network is automatically disabled while your site is in `,(0,B.jsx)(`span`,{className:`cursor-pointer text-green`,onClick:()=>i(`members`),children:`private mode`})]}):(0,B.jsxs)(B.Fragment,{children:[`You need to configure a supported custom domain to use this feature. `,(0,B.jsx)(`a`,{className:`text-green`,href:`https://ghost.org/help/social-web/#custom-domain-required`,rel:`noopener noreferrer`,target:`_blank`,children:`Help →`})]})})]})}]}),(0,B.jsx)(`div`,{className:`-mx-5 -mb-5 overflow-hidden rounded-b-xl md:-mx-7 md:-mb-7`,children:(0,B.jsx)(`img`,{className:`dark:opacity-90`,src:gc})})]})})},`Network`),vc=J(({keywords:e})=>{let{updateRoute:t}=P(),{settings:n,config:r}=N(),{data:{offers:i=[]}={}}=me(),{data:{tiers:a}={}}=br(),o=Sr(a||[]),s=i.filter(e=>e.redemption_type===`signup`);return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,disabled:!An(n,r),label:`Manage offers`,size:`sm`,onClick:()=>{t(`offers/edit`)}}),description:(0,B.jsxs)(B.Fragment,{children:[`Create discounts & coupons to boost new subscriptions and retain existing members.`,(0,B.jsx)(`span`,{children:` `}),(0,B.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,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:`You must have an active tier to create an offer.`}),` `,(0,B.jsx)(j,{className:`font-normal`,color:`green`,label:`Manage tiers`,link:!0,linkWithPadding:!0,onClick:()=>{t(`/tiers`)}})]}):``})},`Portal settings`),yc=({incomingRecommendation:e,stats:t})=>{let{updateRoute:n}=P(),r=(0,z.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,B.jsx)(Kt,{action:!e.recommending_back&&(0,B.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,B.jsx)(j,{color:`green`,label:`Recommend back`,size:`sm`,link:!0,onClick:i})}),testId:`incoming-recommendation-list-item`,hideActions:!0,children:(0,B.jsxs)(Me,{className:`w-full`,gap:`none`,children:[(0,B.jsx)(`div`,{className:`grow py-3 pr-6`,onClick:a,children:(0,B.jsxs)(Me,{className:`group hover:cursor-pointer`,gap:`md`,children:[(0,B.jsx)(It,{favicon:e.favicon,featured_image:e.featured_image,title:e.title||e.url}),(0,B.jsx)(`span`,{className:`line-clamp-1 font-medium`,children:e.title||e.url})]})}),(0,B.jsx)(`div`,{className:`hidden py-3 pr-6 text-left whitespace-nowrap md:block`,onClick:a,children:r===0?(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}):(0,B.jsx)(`div`,{className:`mr-2`,children:(0,B.jsx)(`span`,{children:Te(r)})})}),(0,B.jsx)(`div`,{className:`hidden w-[1%] py-3 pr-6 whitespace-nowrap md:block`,onClick:a,children:r===0?null:(0,B.jsx)(`div`,{className:`-mt-px text-left`,children:(0,B.jsx)(`span`,{className:`-mb-px inline-block min-w-[60px] text-left whitespace-nowrap text-grey-700 lowercase`,children:o})})}),e.recommending_back&&(0,B.jsx)(`div`,{className:`w-[1%] py-3 pr-6 whitespace-nowrap group-hover/table-row:visible md:invisible`,children:(0,B.jsx)(`div`,{className:`mt-1 text-right whitespace-nowrap text-grey-700`,children:`Recommending`})})]})})},bc=({incomingRecommendations:e,stats:t,pagination:n,showMore:r,isLoading:i})=>i||e.length?(0,B.jsx)(an,{isLoading:i,pagination:n,showMore:r,hintSeparator:!0,children:e.map(e=>(0,B.jsx)(yc,{incomingRecommendation:e,stats:t},e.id))}):(0,B.jsx)(hr,{children:(0,B.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.`})}),xc=({recommendation:e})=>{let{route:t}=P(),n=()=>{O.show(At,{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,B.jsx)(Kt,{className:`group hover:cursor-pointer`,testId:`recommendation-list-item`,onClick:n,children:(0,B.jsxs)(Me,{className:`w-full`,gap:`none`,children:[(0,B.jsx)(`div`,{className:`grow py-3 pr-6`,children:(0,B.jsxs)(Me,{gap:`md`,children:[(0,B.jsx)(It,{isGhostSite:r,...e}),(0,B.jsx)(`span`,{className:`line-clamp-1 font-medium`,children:e.title})]})}),(0,B.jsx)(`div`,{className:`hidden py-3 pr-6 text-left whitespace-nowrap md:block`,children:a===0?(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}):(0,B.jsxs)(`div`,{className:`flex items-center`,children:[(0,B.jsx)(`div`,{className:`mr-2`,children:(0,B.jsx)(`span`,{children:Te(a)})}),(0,B.jsxs)(`div`,{className:`text-grey-700 lowercase`,children:[(0,B.jsx)(`span`,{children:i?o:s}),(0,B.jsx)(`span`,{className:`invisible group-hover:visible`,children:` from you`})]})]})})]})})},Sc=({recommendations:e,pagination:t,showMore:n,isLoading:r})=>{let{siteData:i}=k(),a=`${i?.url.replace(/\/$/,``)}/#/portal/recommendations`,{updateRoute:o}=P(),s=()=>{o(`recommendations/add`)},[c,l]=(0,z.useState)(!1);return r||e.length?(0,B.jsx)(an,{hint:(0,B.jsxs)(`span`,{children:[`Shared with new members after signup, or anytime using `,(0,B.jsx)(Br,{href:a,target:`_blank`,children:`this link`}),(0,B.jsx)(Un,{delayDuration:0,children:(0,B.jsxs)(Yn,{children:[(0,B.jsx)(jn,{asChild:!0,children:(0,B.jsx)(j,{className:`ml-1 align-middle leading-none`,color:`clear`,hideLabel:!0,icon:c?`check-circle`:`duplicate`,iconColorClass:c?`text-green w-[14px] h-[14px]`:`text-grey-600 hover:opacity-80 w-[14px] h-[14px]`,label:c?`Copied`:`Copy`,unstyled:!0,onClick:()=>{navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3)}})}),(0,B.jsx)(mr,{children:c?`Copied`:`Copy link`})]})})]}),isLoading:r,pagination:t,showMore:n,hintSeparator:!0,children:e&&e.map(e=>(0,B.jsx)(xc,{recommendation:e},e.id))}):(0,B.jsxs)(hr,{children:[(0,B.jsx)(j,{color:`grey`,label:`Add first recommendation`,size:`sm`,onClick:()=>{s()}}),(0,B.jsxs)(`span`,{className:`mt-2 max-w-[40ch] text-center text-sm`,children:[`Need inspiration? `,(0,B.jsx)(Br,{href:`https://ghost.org/explore`,target:`_blank`,children:`Explore thousands of sites`})]})]})},Cc=J(({keywords:e})=>{let{saveState:t,handleSave:n}=k(),{data:{meta:i,recommendations:a}={},isLoading:o,hasNextPage:s,fetchNextPage:c}=Lt({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:r}),l={hasMore:!!s,loadMore:c},{data:{recommendations:u,meta:d}={},isLoading:f,hasNextPage:p,fetchNextPage:m}=ct({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:r}),{data:{stats:h}={},isLoading:g}=wr({}),_={hasMore:!!p,loadMore:m},[v,y]=(0,z.useState)(`your-recommendations`),b=[{id:`your-recommendations`,title:`Your recommendations`,counter:i?.pagination?.total,contents:(0,B.jsx)(Sc,{isLoading:o,recommendations:a??[],showMore:l})},{id:`recommending-you`,title:`Recommending you`,counter:d?.pagination?.total,contents:(0,B.jsx)(bc,{incomingRecommendations:u??[],isLoading:f||g,showMore:_,stats:h??[]})}],x=(0,B.jsx)(B.Fragment,{children:`Recommend any publication that your audience will find valuable, and find out when others are recommending you.`}),{updateRoute:S}=P(),C=()=>{S(`recommendations/add`)};return(0,B.jsxs)(q,{beta:!0,customButtons:(0,B.jsx)(j,{className:`mt-[-5px] hidden md:!visible md:!block`,color:`clear`,label:`Add recommendation`,size:`sm`,onClick:()=>{C()}}),description:x,keywords:e,navid:`recommendations`,saveState:t,testId:`recommendations`,title:`Recommendations`,onSave:n,children:[(0,B.jsx)(`div`,{className:`flex justify-center rounded border border-green px-4 py-2 md:hidden`,children:(0,B.jsx)(j,{color:`light-grey`,label:`Add recommendation`,link:!0,onClick:()=>{C()}})}),(0,B.jsx)(xt,{selectedTab:v,tabs:b,onTabChange:y})]})},`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`]},wc=()=>{let{config:e,settings:t}=N(),n=An(t||[],e||{});return(0,B.jsxs)(Ya,{keywords:[Z.network,Z.explore,Z.recommendations,Z.embedSignupForm,...n?[Z.offers]:[]].flat(),title:`Growth`,children:[(0,B.jsx)(_c,{keywords:Z.network}),(0,B.jsx)(hc,{keywords:Z.explore}),(0,B.jsx)(Cc,{keywords:Z.recommendations}),(0,B.jsx)(fc,{keywords:Z.embedSignupForm}),n&&(0,B.jsx)(vc,{keywords:Z.offers})]})},Tc=[{value:`public`,label:`Public`,hint:`Anyone can visit and read the website`},{value:`private`,label:`Private`,hint:`Access code required`}],Ec=[{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`}],Dc=[{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`}],Oc=[{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`}],kc=J(({keywords:e})=>{let{settings:t}=N(),n=rt()?.isDisabled(`publicSiteAccess`),r=Mn(t,`is_private`)||Mn(t,`password`),{mutateAsync:i}=tr(),[a,o]=z.useState(!1),{localSettings:s,isEditing:c,saveState:l,siteData:u,handleSave:d,handleCancel:f,updateSetting:p,handleEditingChange:m,errors:h,clearError:g}=k({onValidate:()=>_&&!v?{password:`Enter an access code`}:{}}),[_,v,y,b,x,S]=R(s,[`is_private`,`password`,`members_signup_access`,`default_content_visibility`,`default_content_visibility_tiers`,`comments_enabled`]),[C,w]=R(t,[`is_private`,`public_hash`]),ee=r?!0:_,{data:{tiers:te}={}}=br(),ne=[{label:`Active Tiers`,options:te?.filter(({active:e})=>e).map(e=>({value:e.id,label:e.name}))||[]},{label:`Archived Tiers`,options:te?.filter(({active:e})=>!e).map(e=>({value:e.id,label:e.name}))||[]}],re=JSON.parse(x||`[]`),T=ne.flatMap(e=>e.options).filter(e=>re.includes(e.value)),ie=C&&ee&&u?.url&&w?`${u.url.replace(/\/$/,``)}/${w}/rss`:null,ae=e=>{let t=e.map(e=>e.value);p(`default_content_visibility_tiers`,JSON.stringify(t))};return(0,B.jsx)(q,{description:`Set up who can browse your site, subscribe, read posts, and comment`,isEditing:c,keywords:e,navid:`members`,saveState:l,testId:`access`,title:`Access`,hideEditButton:!0,onCancel:f,onEditingChange:m,onSave:d,children:(0,B.jsxs)(I,{className:`gap-y-4`,columns:1,children:[n&&(0,B.jsx)(`div`,{className:`-m-5 overflow-hidden p-5`,children:(0,B.jsxs)(Ln,{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,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-base font-semibold`,children:`Pre-launch mode`}),(0,B.jsx)(`div`,{className:`mt-2 text-gray-700`,children:`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.`})]}),(0,B.jsx)(Oe,{className:`shrink-0 self-start md:self-center`,asChild:!0,children:(0,B.jsx)(`a`,{href:`#/pro/billing/plans`,children:`Upgrade now`})})]})}),(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,B.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,B.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,B.jsx)(et,{containerClassName:r?`relative z-10`:void 0,disabled:r,options:Tc,selectedOption:Tc.find(e=>e.value===(ee?`private`:`public`)),testId:`site-visibility-select`,onSelect:e=>{p(`is_private`,e?.value===`private`),m(!0)}})})]}),(ee||r)&&(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row md:items-start`,children:[(0,B.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,B.jsxs)(`div`,{className:`w-full md:flex-1`,children:[(0,B.jsx)(A,{containerClassName:r?`relative z-10`:void 0,"data-testid":`site-access-code`,disabled:r,error:!!h.password,hint:h.password,placeholder:`Enter access code`,rightPlaceholder:(0,B.jsx)(`span`,{className:`flex h-full items-center`,children:(0,B.jsx)(`button`,{"aria-label":`Regenerate access code`,className:`mr-[5px] flex size-5 cursor-pointer items-center justify-center p-0 text-grey-900 disabled:cursor-not-allowed disabled:opacity-40 dark:text-grey-400`,"data-testid":`regenerate-access-code`,disabled:a,title:`Regenerate access code`,type:`button`,onClick:async()=>{o(!0);try{let e=(await i(null)).settings.find(e=>e.key===`password`)?.value;typeof e==`string`&&(p(`password`,e),g(`password`))}catch{L({type:`error`,title:`Could not regenerate access code`})}finally{o(!1)}},children:(0,B.jsx)(ye,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.5})})}),title:`Access code`,value:v||``,hideTitle:!0,onChange:e=>{p(`password`,e.target.value),m(!0)},onKeyDown:()=>g(`password`)}),ie&&!r&&(0,B.jsx)(We,{className:`mt-2`,children:(0,B.jsxs)(B.Fragment,{children:[`A private RSS feed is available `,(0,B.jsx)(`a`,{className:`text-green`,href:ie,rel:`noopener noreferrer`,target:`_blank`,children:`here`})]})})]})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,B.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,B.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,B.jsx)(et,{options:Ec,selectedOption:Ec.find(e=>e.value===y),testId:`subscription-access-select`,onSelect:e=>{p(`members_signup_access`,e?.value||null),m(!0)}})})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,B.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,B.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,B.jsx)(et,{options:Dc,selectedOption:Dc.find(e=>e.value===b),testId:`default-post-access-select`,onSelect:e=>{p(`default_content_visibility`,e?.value||null),m(!0)}})})]}),b===`tiers`&&(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,B.jsx)(`div`,{className:`w-full max-w-none min-w-[160px] md:w-2/3 md:max-w-[320px]`,children:`Select specific tiers`}),(0,B.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,B.jsx)(it,{color:`black`,options:ne.filter(e=>e.options.length>0),testId:`tiers-select`,values:T,onChange:e=>{ae(e),m(!0)}})})]}),(0,B.jsx)(Pn,{}),(0,B.jsxs)(`div`,{className:`flex flex-col content-center items-center gap-4 md:flex-row`,children:[(0,B.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,B.jsx)(`div`,{className:`w-full md:flex-1`,children:(0,B.jsx)(et,{options:Oc,selectedOption:Oc.find(e=>e.value===S),testId:`commenting-select`,title:``,onSelect:e=>{p(`comments_enabled`,e?.value||null),m(!0)}})})]})]})})},`Access`),Ac=Ar.map(e=>({value:e.id,label:e.label})),jc=e=>Ar.find(t=>t.id===e)||Ar[0],Mc=({userTypeId:e})=>(0,B.jsx)(`span`,{className:`flex w-5 shrink-0 items-center justify-center`,children:(0,B.jsx)(M,{name:jc(e).icon,size:`sm`})}),Nc=({children:e,...t})=>(0,B.jsx)(pt.SingleValue,{...t,children:(0,B.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(Mc,{userTypeId:t.data.value}),(0,B.jsx)(`span`,{children:e})]})}),Pc=({children:e,...t})=>(0,B.jsx)(pt.Option,{...t,children:(0,B.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(Mc,{userTypeId:t.data.value}),(0,B.jsx)(`span`,{children:e})]})}),Fc=O.create(({field:e})=>{let t=Re(),{mutateAsync:n}=Er(),{mutateAsync:r}=Dr(),{mutateAsync:i}=Tr(),a=g(),o=!!e,{formState:s,updateForm:c,handleSave:l,errors:d,clearError:f,setErrors:p,okProps:m}=re({initialState:{name:e?.name||``,userTypeId:e?kr(e).id:Ar[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:jc(t.userTypeId).id})},onSaveError:e=>{if(e instanceof y&&e.data?.errors?.[0]?.property===`name`){p({name:u(e,`Invalid name`)});return}a(e)}}),h=Ac.find(e=>e.value===s.userTypeId),_=e?.status===`archived`,v={label:`Archive`,link:!0,color:`red`,size:`sm`,onClick:()=>{t.remove(),O.show(F,{title:`Archive custom field`,prompt:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`mb-6`,children:[`Your custom field `,(0,B.jsx)(`strong`,{children:e.name}),` will no longer show up on your members, collect new information, or appear in filters.`]}),(0,B.jsx)(`div`,{children:`Values already collected for this field will remain unchanged.`})]}),okLabel:`Archive`,okColor:`red`,onOk:async t=>{try{await r({key:e.key,status:`archived`}),t?.remove(),L({type:`success`,title:`Custom field archived`})}catch(e){L({type:`error`,title:`Failed to archive the custom field`}),a(e,{withToast:!1})}}})}},b={label:`Reactivate`,link:!0,color:`green`,size:`sm`,onClick:()=>{t.remove(),O.show(F,{title:`Reactivate custom field`,prompt:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`mb-6`,children:[`Reactivating `,(0,B.jsx)(`strong`,{children:e.name}),` will immediately make it available again on your members, for collecting, and in filters.`]}),(0,B.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(),L({type:`success`,title:`Custom field reactivated`})}catch(e){L({type:`error`,title:`Failed to reactivate the custom field`}),a(e,{withToast:!1})}}})}},x;o&&(x=_?b:v);let S=(0,B.jsx)(Vr,{items:[{id:`delete-field`,label:`Delete custom field`,icon:`trash`,destructive:!0,onClick:()=>{t.remove(),O.show(F,{title:`Delete custom field`,prompt:(0,B.jsxs)(B.Fragment,{children:[(0,B.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`,okColor:`red`,onOk:async t=>{try{await i(e.key),t?.remove(),L({type:`success`,title:`Custom field deleted`})}catch(e){L({type:`error`,title:`Failed to delete the custom field`}),a(e,{withToast:!1})}}})}}],position:`end`});return(0,B.jsx)(qe,{buttonsDisabled:m.disabled,cancelLabel:o?`Close`:`Cancel`,leftButtonProps:x,okColor:m.color,okLabel:m.label||`Save`,size:`sm`,testId:`custom-field-modal`,title:o?`Edit custom field`:`Add custom field`,topRightContent:_?S:void 0,onOk:async()=>{try{await l()&&t.remove()}catch{}},children:(0,B.jsxs)(vt,{marginBottom:!1,marginTop:!0,children:[(0,B.jsx)(A,{autoComplete:`off`,error:!!d.name,hint:d.name,placeholder:`Enter custom field name`,title:`Name`,value:s.name,autoFocus:!0,onChange:e=>c(t=>({...t,name:e.target.value})),onKeyDown:()=>f(`name`)}),(0,B.jsx)(et,{components:{SingleValue:Nc,Option:Pc},disabled:o,hint:o?`Type can’t be changed after creation`:void 0,menuPosition:`fixed`,options:Ac,prompt:`Select type`,selectedOption:h,testId:`custom-field-type`,title:`Type`,onSelect:e=>{c(t=>({...t,userTypeId:jc(e?.value??``).id}))}})]})})}),Ic=5,Lc=({fields:e,showAll:t,onShowAll:n,openModal:r})=>e.length===0?(0,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(be,{})}),`No custom fields found.`]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(en,{borderTop:!1,children:(t?e:e.slice(0,Ic)).map(e=>{let t=kr(e);return(0,B.jsx)(Ke,{action:(0,B.jsx)(j,{color:`green`,label:`Edit`,link:!0,onClick:t=>{t?.stopPropagation(),r(e)}}),avatar:(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-lg bg-grey-100 dark:bg-grey-900`,children:(0,B.jsx)(M,{name:t.icon,size:18})}),detail:t.label,testId:`custom-field-list-item`,title:(0,B.jsx)(`span`,{className:`font-semibold`,children:e.name}),separator:!0,onClick:()=>r(e)},e.key)})}),!t&&e.length>Ic&&(0,B.jsx)(`div`,{className:`flex items-center gap-2 border-t border-grey-100 pt-2 font-bold text-green hover:text-green-400 dark:border-grey-900`,children:(0,B.jsx)(`button`,{type:`button`,onClick:n,children:`Show all`})})]}),Rc=J(({keywords:e})=>{let{data:t}=Or({enabled:Je(`membersCustomFields`)}),n=t?.members_custom_fields||[],[r,i]=(0,z.useState)(`active-fields`),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(!1),l=n.filter(e=>e.status===`active`),u=n.filter(e=>e.status===`archived`),d=(0,z.useRef)({active:0,archived:0});(0,z.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=>O.show(Fc,{field:e}),p=[{id:`active-fields`,title:`Active`,contents:(0,B.jsx)(Lc,{fields:l,openModal:f,showAll:a,onShowAll:()=>o(!0)})},{id:`archived-fields`,title:`Archived`,contents:(0,B.jsx)(Lc,{fields:u,openModal:f,showAll:s,onShowAll:()=>c(!0)})}];return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{color:`clear`,label:`Add custom field`,size:`sm`,onClick:()=>f()}),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,B.jsx)(xt,{selectedTab:r,tabs:p,onTabChange:i})})},`Custom fields`),zc=J(({keywords:e})=>{let{siteData:t}=N(),[n,r]=(0,z.useState)(!1),i=`${t?.url.replace(/\/$/,``)}/#/portal/gift`;return(0,B.jsx)(q,{description:(0,B.jsxs)(B.Fragment,{children:[`Allow your readers to share your work by purchasing a gift subscription for a friend or colleague. `,(0,B.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,B.jsx)(I,{columns:1,children:(0,B.jsxs)(`div`,{className:`w-100`,children:[(0,B.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,B.jsx)(ze,{level:6,children:`Shareable link`})}),(0,B.jsxs)(`div`,{className:`group relative mt-0 flex w-100 items-center justify-between overflow-hidden border-b border-transparent pt-1 pb-2 hover:border-grey-300 dark:hover:border-grey-600`,children:[(0,B.jsx)(`span`,{"data-testid":`gift-url`,children:i}),(0,B.jsxs)(`div`,{className:`invisible flex gap-1 bg-white pl-1 group-hover:visible dark:bg-black`,children:[(0,B.jsx)(j,{color:`clear`,"data-testid":`preview-shareable-link`,label:`Preview`,size:`sm`,onClick:()=>{window.open(i,`_blank`)}}),(0,B.jsx)(j,{color:`light-grey`,"data-testid":`copy-shareable-link`,label:n?`Copied`:`Copy link`,size:`sm`,onClick:()=>{navigator.clipboard.writeText(i),r(!0),setTimeout(()=>r(!1),2e3)}})]})]})]})})})},`Gift subscriptions`),Bc=()=>{let{settings:e,siteData:t}=N(),[n,r=!1,i=!1]=R(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 te({siteUrl:t.url,membersSignupAccess:n,donationsEnabled:r,recommendationsEnabled:i})},Vc={useFileUpload:oe,fileTypes:le},Hc=({delay:e})=>{let[t,n]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{let t=setTimeout(()=>n(!0),e);return()=>clearTimeout(t)},[e]),(0,B.jsx)(`div`,{className:`flex h-64 items-center justify-center transition-opacity ${t?`opacity-100`:`opacity-0`}`,children:(0,B.jsx)(Fn,{size:`lg`})})},Uc=D(`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]`),Wc=({editor:e,darkMode:t,cardConfig:n,initialEditorState:r,placeholder:i,className:a,registerAPI:o,onChange:s})=>{let c=e.read().EmailEditor;return(0,B.jsx)(`div`,{className:D(`koenig-react-editor w-full`,Uc,a),children:(0,B.jsx)(c,{cardConfig:n,className:`koenig-lexical koenig-lexical-editor-input`,darkMode:t,fileUploader:Vc,initialEditorState:r,placeholderText:i,registerAPI:o,onChange:s})})},Gc=z.memo(({value:e,placeholder:t,className:n,onChange:r})=>{let i=(0,z.useRef)(null),o=(0,z.useRef)(e),{unsplashConfig:s}=a(),c=ae(),{config:l,settings:u}=N(),{fetchAutocompleteLinks:d,searchLinks:f}=Bc(),p=ne(),m=l.klipy?.apiKey?l.klipy:null,{fetchKoenigLexical:h,darkMode:g}=Le(),_=(0,z.useMemo)(()=>yt(h),[h]),[v]=R(u,[`transistor`]),y=(0,z.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,z.useCallback)(e=>{i.current=e},[]),x=(0,z.useCallback)(e=>{r&&e&&typeof e==`object`&&r(JSON.stringify(e))},[r]),S=(0,z.useCallback)(e=>{(e.metaKey||e.ctrlKey)&&e.key===`k`&&e.stopPropagation()},[]);return(0,B.jsx)(`div`,{className:`h-full`,onKeyDown:S,onMouseDown:e=>{i.current&&pe(i.current,e)},children:(0,B.jsx)(va,{name:`email-editor`,children:(0,B.jsx)(z.Suspense,{fallback:(0,B.jsx)(Hc,{delay:200}),children:(0,B.jsx)(Wc,{cardConfig:y,className:n,darkMode:g,editor:_,initialEditorState:o.current,placeholder:t,registerAPI:b,onChange:x})})})})}),Kc=({previewState:e})=>{let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(!1),a=(0,z.useRef)(!1),o=(0,z.useRef)(null),s=(0,z.useRef)(null),c=(0,z.useRef)(null),l=(0,z.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,z.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,B.jsxs)(`div`,{className:`relative w-full`,"data-testid":`welcome-email-preview`,children:[(e.status===`loading`||e.status===`success`&&!r)&&(0,B.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,B.jsx)(`div`,{className:`flex h-64 items-center justify-center`,children:(0,B.jsx)(Fn,{size:`lg`})})}),e.status===`success`&&(0,B.jsx)(`div`,{"aria-hidden":!r,className:D(`w-full`,!r&&`pointer-events-none absolute top-0 left-0 opacity-0`),children:(0,B.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,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-4`,"data-testid":`welcome-email-preview-error`,children:(0,B.jsx)(We,{color:`red`,children:e.message})})]})},qc=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}},Jc=e=>{let t={};return e.subject?.trim()||(t.subject=`A subject is required`),qc(e.lexical)&&(t.lexical=`Email content is required`),t},Yc=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}`},Xc=e=>{let t=`Failed to render preview`;return e instanceof c&&e.data?.errors?.[0]?e.data.errors[0].context||e.data.errors[0].message||t:e instanceof Error&&e.message?e.message:t},Zc=({automatedEmailId:e,previewWelcomeEmail:t,setErrors:n})=>{let[r,i]=(0,z.useState)({status:`idle`}),a=(0,z.useRef)(0),o=()=>{a.current+=1,i({status:`idle`})},s=async r=>{let o=a.current+1;a.current=o;let s=Jc(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:Yc(s.html)}})}catch(e){if(a.current!==o)return;i({status:`error`,message:Xc(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}},Qc=({automatedEmailId:e,subject:t,lexical:n,validateForm:r,onClose:i})=>{let{data:a}=l(),{mutateAsync:o}=ce(),[s,u]=(0,z.useState)(a?.email||``),[d,f]=(0,z.useState)(``),[p,m]=(0,z.useState)(`idle`),h=(0,z.useRef)(null);return(0,z.useEffect)(()=>()=>{h.current&&clearTimeout(h.current)},[]),(0,z.useEffect)(()=>{a?.email&&u(a.email)},[a?.email]),(0,z.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.stopPropagation(),i())};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)},[i]),(0,B.jsxs)(`div`,{className:`absolute top-full right-0 z-10 mt-2 w-[260px] rounded border border-grey-200 bg-white p-4 shadow-lg dark:border-grey-900 dark:bg-grey-950`,"data-testid":`test-email-dropdown`,children:[(0,B.jsxs)(`div`,{className:`mb-3`,children:[(0,B.jsx)(`label`,{className:`mb-2 block font-semibold`,htmlFor:`test-email-input`,children:`Send test email`}),(0,B.jsx)(A,{className:`h-[36px]!`,id:`test-email-input`,placeholder:`you@yoursite.com`,value:s,onChange:e=>{u(e.target.value)}})]}),(0,B.jsx)(j,{className:`w-full`,color:p===`sent`?`green`:`black`,disabled:p===`sending`,label:p===`sent`?`Sent`:p===`sending`?`Sending...`:`Send`,onClick:async()=>{if(f(``),!Vo.default.isEmail(s)){f(`Please enter a valid email address`);return}if(!r()){f(`Please complete the required fields`);return}m(`sending`);try{await o({id:e,email:s,subject:t,lexical:n}),m(`sent`),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>m(`idle`),2e3)}catch(e){m(`idle`);let t;e instanceof c&&e.data&&e.data.errors[0]?t=e.data.errors[0].context||e.data.errors[0].message:e instanceof Error&&(t=e.message),f(t||`Failed to send test email`)}}}),d&&(0,B.jsx)(We,{className:`mt-2`,color:`red`,children:d})]})},$c=z.forwardRef(({title:e,centeredHeaderContent:t,headerActions:n,children:r,className:i,isEditMode:a=!1},o)=>(0,B.jsxs)(`div`,{ref:o,className:D(`flex size-full flex-col gap-0 overflow-hidden rounded-xl p-0`,a?`bg-white`:`bg-gray-100`,`dark:bg-gray-950`,i),children:[(0,B.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,B.jsx)(`h3`,{className:`justify-self-start text-xl font-semibold`,children:e}),(0,B.jsx)(`div`,{className:`justify-self-center`,children:t}),(0,B.jsx)(`div`,{className:`flex items-center gap-2 justify-self-end`,children:n})]}),(0,B.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})]}));$c.displayName=`EmailPreviewModalContent`;var el=({children:e,className:t})=>(0,B.jsx)(`div`,{className:D(`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}),tl=({children:e,className:t})=>(0,B.jsx)(`div`,{className:D(`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}),nl=O.create(({emailType:e=`free`,automatedEmail:t})=>{let n=Re(),{settings:r,config:i}=N(),[a,o,s]=R(r,[`title`,`default_email_address`,`support_email_address`]),{updateRoute:c}=P(),{mutateAsync:l}=ue(),{mutateAsync:u}=w(),{data:d}=se(),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(`edit`),[_,v]=(0,z.useState)(null),y=(0,z.useRef)(null),b=(0,z.useRef)(t?.lexical||``),x=(0,z.useRef)(!1),S=g(),{resolvedSenderName:C,resolvedSenderEmail:ee,resolvedReplyToEmail:te,hasDistinctReplyTo:ne}=ws(d?.automated_emails||[],{config:i,defaultEmailAddress:o,siteTitle:a,supportEmailAddress:s}),T=`${e===`paid`?`Paid`:`Free`} members welcome email`,{formState:ie,saveState:ae,updateForm:oe,setFormState:ce,setErrors:le,handleSave:de,okProps:fe,errors:pe,validate:me}=re({initialState:{subject:t?.subject||`Welcome`,lexical:t?.lexical||``},savingDelay:500,onSave:async e=>{await l({...t,...e})},onSaveError:S,onValidate:Jc}),he=fe.label||`Save`,{previewFrameState:ge,enterPreview:E,exitPreview:_e}=Zc({automatedEmailId:t.id,previewWelcomeEmail:u,setErrors:le}),ve=ae===`unsaved`,ye=(0,z.useCallback)(()=>{lt(ve,()=>{n.remove()})},[n,ve]);(0,z.useEffect)(()=>{let e=e=>{y.current&&!y.current.contains(e.target)&&p(!1)};return f&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[f]);let be=(0,z.useRef)(de);(0,z.useEffect)(()=>{be.current=de},[de]),(0,z.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),be.current({fakeWhenUnchanged:!0}))};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[]);let xe=(0,z.useCallback)(e=>{h(e),e===`preview`?(v(null),E(ie)):(p(!1),v(null),_e())},[E,_e,ie]),Se=(0,z.useCallback)(e=>{if(!x.current){b.current=e,ce(t=>({...t,lexical:e}));return}e===b.current?ce(t=>({...t,lexical:e})):oe(t=>({...t,lexical:e}))},[ce,oe]);return(0,B.jsx)(qe,{afterClose:()=>{c(`memberemails`)},backDropClick:!1,dirty:ve,footer:!1,header:!1,padding:!1,scrolling:!1,size:`full`,testId:`welcome-email-modal`,width:`full`,children:(0,B.jsx)($c,{centeredHeaderContent:(0,B.jsx)(un,{"data-testid":`welcome-email-mode-toggle`,value:m,variant:`segmented-sm`,onValueChange:e=>e&&xe(e),children:(0,B.jsxs)(ln,{className:`grid w-[240px] grid-cols-2 bg-gray-100 shadow-[inset_0_0_0_1px_rgba(0,0,0,0.04)]`,children:[(0,B.jsx)(sn,{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,B.jsx)(sn,{className:`w-full justify-center`,"data-testid":`welcome-email-mode-preview`,value:`preview`,children:`Preview`})]})}),className:`dark:bg-[#151719]`,headerActions:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Oe,{variant:`outline`,onClick:ye,children:`Close`}),(0,B.jsx)(Oe,{disabled:fe.disabled,onClick:async()=>await de({fakeWhenUnchanged:!0}),children:he})]}),isEditMode:m===`edit`,title:T,children:(0,B.jsxs)(`div`,{className:`flex grow flex-col items-center p-6`,children:[m===`preview`&&(0,B.jsx)(el,{className:`border-x-0 border-t-0 border-b`,children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center py-1`,children:[(0,B.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`From:`}),(0,B.jsx)(`div`,{className:`min-w-0 grow pr-4`,children:(0,B.jsxs)(`span`,{className:`flex gap-1 truncate whitespace-nowrap`,children:[(0,B.jsx)(`span`,{children:C}),(0,B.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:`<${ee}>`})]})}),(0,B.jsxs)(`div`,{ref:y,className:`relative`,children:[(0,B.jsx)(j,{className:`border border-grey-200 font-semibold hover:border-grey-300 hover:bg-white! dark:border-grey-900 dark:hover:border-grey-800 dark:hover:bg-grey-950!`,color:`clear`,icon:`send`,label:`Test`,onClick:()=>p(!f)}),f&&(0,B.jsx)(Qc,{automatedEmailId:t.id,lexical:ie.lexical,subject:ie.subject,validateForm:me,onClose:()=>p(!1)})]})]}),ne&&(0,B.jsxs)(`div`,{className:`flex items-center`,children:[(0,B.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`Reply-to:`}),(0,B.jsx)(`div`,{className:`grow text-gray-500 dark:text-gray-400`,children:te})]}),(0,B.jsxs)(`div`,{className:`flex items-center`,children:[(0,B.jsx)(`div`,{className:`w-20 shrink-0 font-semibold`,children:`Subject:`}),(0,B.jsxs)(`div`,{className:`grow`,children:[(0,B.jsx)(A,{className:`w-full`,"data-testid":`welcome-email-preview-subject`,value:_??ie.subject,onChange:e=>{let t=e.target.value;v(t),oe(e=>({...e,subject:t}))}}),pe.subject&&(0,B.jsx)(We,{className:`mt-2`,color:`red`,children:pe.subject})]})]})]})}),(0,B.jsxs)(tl,{className:D(m===`preview`&&`bg-white shadow-sm dark:bg-grey-950`,m===`edit`&&`px-6`,m===`edit`&&`rounded-lg`,m===`edit`&&pe.lexical&&`border border-red-500`),children:[(0,B.jsx)(`div`,{className:D(`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,B.jsx)(Gc,{className:`welcome-email-editor`,placeholder:`Begin writing your email...`,value:ie.lexical,onChange:Se},t?.id||`new`)}),m===`preview`&&(0,B.jsx)(Kc,{previewState:ge})]}),m===`edit`&&pe.lexical&&(0,B.jsx)(We,{className:`mt-2 max-w-[740px]`,color:`red`,children:pe.lexical})]})})})}),rl=({automatedEmail:e,emailType:t,icon:n,title:r,enabled:i,isBusy:a,isInitialLoading:o,onEdit:s,onToggle:c})=>(0,B.jsx)(Kt,{action:(0,B.jsxs)(`div`,{className:`flex items-center gap-7 ${a&&!o?`pointer-events-none`:``}`,children:[o?(0,B.jsx)(`div`,{className:`h-4 w-7 rounded-full bg-grey-300 dark:bg-grey-800`}):(0,B.jsx)(ut,{checked:i,onChange:c}),(0,B.jsx)(`button`,{className:`font-semibold text-green hover:opacity-80`,type:`button`,onClick:s,children:`Edit`})]}),hideActions:!1,testId:`${t}-welcome-email-row`,children:(0,B.jsx)(`div`,{className:`w-full`,children:(0,B.jsxs)(`button`,{className:`flex w-full min-w-0 items-center gap-3 py-3 text-left focus-visible:ring-2 focus-visible:ring-green focus-visible:ring-offset-2 focus-visible:outline-none dark:focus-visible:ring-offset-black`,"data-testid":`${t}-welcome-email-preview`,type:`button`,onClick:s,children:[(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-grey-100 dark:bg-grey-900`,children:(0,B.jsx)(M,{colorClass:`text-grey-700 dark:text-grey-600`,name:n,size:`md`})}),(0,B.jsxs)(`div`,{className:`min-w-0 grow`,children:[(0,B.jsx)(`div`,{className:`leading-tight font-medium`,"data-testid":`${t}-welcome-email-title`,children:r}),(0,B.jsx)(`div`,{className:`mt-1 text-sm leading-[1.35] text-grey-700 dark:text-grey-600`,children:e.subject})]})]})})}),il=({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,B.jsxs)(an,{borderTop:!0,children:[(0,B.jsx)(rl,{automatedEmail:n,emailType:`free`,enabled:i,icon:`user-add`,isBusy:o,isInitialLoading:s,title:`Free members welcome email`,onEdit:c,onToggle:l}),An(e,t)&&(0,B.jsx)(rl,{automatedEmail:r,emailType:`paid`,enabled:a,icon:`bills`,isBusy:o,isInitialLoading:s,title:`Paid members welcome email`,onEdit:u,onToggle:d})]}),al=J(({keywords:e})=>{let{settings:t,config:n}=N(),[r]=R(t,[`title`]),i=St().getParam(`verifyEmail`),{data:a,isLoading:o}=se(),{mutateAsync:s,isPending:c}=fe(),{mutateAsync:l,isPending:u}=ue(),{mutateAsync:d}=de(),f=g(),p=a?.automated_emails||[],h=o||c||u,_=p.find(e=>e.slug===gs.free),v=p.find(e=>e.slug===gs.paid),y=_?.status===`active`,b=v?.status===`active`,x=async(e,t)=>{let n=ys(e,r);return s({...n,status:t})},S=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!i||!window.location.href.includes(`memberemails`)||S.current===i)return;S.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,B.jsx)(B.Fragment,{children:`Welcome email sender settings have been updated.`});t===`sender_reply_to`&&(n=`Reply-to address verified`,r=(0,B.jsx)(B.Fragment,{children:`Welcome email reply-to address has been verified and updated.`})),O.show(F,{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 m&&t.message===`Token expired`&&(n=`Verification link has expired.`),e(),O.show(F,{title:`Error verifying email address`,prompt:n,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),f(t,{withToast:!1})}})()},[f,i,d]);let C=async e=>{let t=p.find(t=>t.slug===gs[e]),n=e===`free`?`Free members`:`Paid members`;if(!h)try{t?t.status===`active`?(await l({...t,status:`inactive`}),L({type:`success`,title:`${n} welcome email disabled`})):(await l({...t,status:`active`}),L({type:`success`,title:`${n} welcome email enabled`})):(await x(e,`active`),L({type:`success`,title:`${n} welcome email enabled`}))}catch(e){f(e)}},w=async e=>{let t=p.find(t=>t.slug===gs[e]);if(!h)if(t)O.show(nl,{emailType:e,automatedEmail:t});else try{let t=(await x(e,`inactive`))?.automated_emails?.[0];t&&O.show(nl,{emailType:e,automatedEmail:t})}catch(e){f(e)}},ee=_||bs(`free`,r),te=v||bs(`paid`,r);return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Customize`,size:`sm`,onClick:()=>O.show(Is)}),description:`Create and manage automated emails for your members`,keywords:e,navid:`memberemails`,testId:`memberemails`,title:`Welcome emails`,children:(0,B.jsx)(il,{config:n,freeEmailForDisplay:ee,freeWelcomeEmailEnabled:y,isBusy:h,isLoading:o,paidEmailForDisplay:te,paidWelcomeEmailEnabled:b,settings:t,onFreeEdit:()=>w(`free`),onFreeToggle:()=>C(`free`),onPaidEdit:()=>w(`paid`),onPaidToggle:()=>C(`paid`)})})},`MemberEmails`),ol=`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`,sl=`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`,cl=({title:e,color:t,price:n})=>(0,B.jsxs)(`div`,{className:`rounded-lg bg-grey-100/70 px-3 pt-1.5 pb-3`,children:[(0,B.jsx)(`div`,{className:`font-space-grotesk text-[1.5rem] font-bold`,style:{color:t},children:e}),(0,B.jsx)(`div`,{className:`-mt-1 font-space-grotesk text-[1.7rem] font-bold`,children:n}),(0,B.jsxs)(`div`,{className:`mt-5 flex flex-col gap-1.5`,children:[(0,B.jsx)(`div`,{className:`h-1.5 w-[100%] bg-grey-300/60`}),(0,B.jsx)(`div`,{className:`h-1.5 w-[70%] bg-grey-300/60`}),(0,B.jsx)(`div`,{className:`h-1.5 w-[90%] bg-grey-300/60`})]})]}),ll=J(({keywords:e})=>{let{updateRoute:t}=P(),{settings:n}=N(),[r,i,a]=R(n,[`accent_color`,`icon`,`members_signup_access`]),o=()=>{t(`portal/edit`)},s=r||`#F6414E`;return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,disabled:a===`none`,label:`Customize`,size:`sm`,onClick:o}),description:`Customize members modal signup flow`,keywords:e,navid:`portal`,testId:`portal`,title:`Signup portal`,children:(0,B.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,B.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,B.jsx)(`img`,{className:`size-6`,src:sl})}),(0,B.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,B.jsxs)(`div`,{className:`col-span-3 mb-1 flex flex-col items-center justify-center`,children:[i?(0,B.jsx)(`div`,{className:`size-6 rounded-sm bg-cover bg-center`,style:{backgroundImage:`url(${i})`}}):(0,B.jsx)(`div`,{className:`flex aspect-square items-center justify-center overflow-hidden rounded-full p-1 text-white`,style:{backgroundColor:s},children:(0,B.jsx)(`img`,{className:`h-auto w-5`,src:ol})}),(0,B.jsx)(`div`,{className:`mt-1.5 font-space-grotesk text-lg font-bold`,children:`Sign up`}),(0,B.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,B.jsx)(cl,{color:s,price:`$0`,title:`Free`}),(0,B.jsx)(cl,{color:s,price:`$5`,title:`Silver`}),(0,B.jsx)(cl,{color:s,price:`$10`,title:`Gold`})]})]})})},`Portal settings`),ul=J(({keywords:e})=>{let{localSettings:t,isEditing:n,saveState:r,handleSave:i,handleCancel:a,updateSetting:o,errors:s,clearError:c,handleEditingChange:l}=k({onValidate:()=>({})}),[u]=R(t,[`blocked_email_domains`]),d=JSON.parse(u||`[]`),[f,p]=z.useState(d.join(`
5
- `)),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,B.jsxs)(B.Fragment,{children:[`Prevent unwanted signups by blocking email domains. Add one domain per line, e.g., `,(0,B.jsx)(`code`,{children:`spam.xyz`}),` to block signups from email addresses like `,(0,B.jsx)(`code`,{children:`hello@spam.xyz`}),`.`]});return(0,B.jsx)(q,{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,B.jsx)(I,{columns:1,children:(0,B.jsx)(Ye,{className:`h-[86px]`,error:!!s.blockedEmailDomains,hint:s.blockedEmailDomains||h,placeholder:`spam.xyz
6
- junk.com`,resize:`vertical`,title:`Blocked email domains`,value:f,onChange:m,onKeyDown:()=>c(`spam-filters`)})})})},`Spam Filters`),dl=E(`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`),fl=({tier:e})=>{let{updateRoute:t}=P(),n=e?.currency||`USD`,r=n?Xt(n):`$`;return(0,B.jsx)(`div`,{className:dl,"data-testid":`tier-card`,"data-tier":e.slug,children:(0,B.jsxs)(`div`,{className:`w-full grow`,onClick:()=>{t({route:`tiers/${e.id}`})},children:[(0,B.jsx)(`div`,{className:`text-[1.65rem] leading-tight font-bold tracking-tight text-black dark:text-white`,children:e.name}),(0,B.jsxs)(`div`,{className:`mt-2 flex items-baseline`,children:[(0,B.jsx)(`span`,{className:`ml-1 translate-y-[-3px] text-md font-bold uppercase`,children:r}),(0,B.jsx)(`span`,{className:`text-xl font-bold tracking-tighter`,children:Te(Rt(e.monthly_price||0),{maximumFractionDigits:2})}),e.monthly_price&&e.monthly_price>0&&(0,B.jsx)(`span`,{className:`text-grey-700`,children:`/month`})]}),e.trial_days?(0,B.jsx)(`div`,{className:`mt-1 mb-4`,children:(0,B.jsx)(Ht,{size:`sm`,trialDays:e.trial_days})}):``,(0,B.jsx)(`div`,{className:`mt-2 line-clamp-2 text-[1.4rem] font-medium`,children:e.description||(0,B.jsx)(`span`,{className:`opacity-30`,children:`No description`})})]})})},pl=({tab:e,tiers:t})=>{let{updateRoute:n}=P(),r=()=>{n(`tiers/add`)};return t.length?(0,B.jsxs)(`div`,{className:`mt-4 grid grid-cols-1 gap-4 min-[900px]:grid-cols-3`,children:[t.map(e=>(0,B.jsx)(fl,{tier:e},e.id)),e===`active-tiers`&&(0,B.jsx)(`button`,{className:`${dl} group cursor-pointer`,type:`button`,onClick:()=>{r()},children:(0,B.jsx)(`div`,{className:`flex size-full flex-col items-center justify-center`,children:(0,B.jsxs)(`div`,{className:`flex flex-col items-center justify-center`,children:[(0,B.jsx)(`div`,{className:`translate-y-[15px] transition-all group-hover:translate-y-0`,children:(0,B.jsx)(M,{colorClass:`text-green`,name:`add`})}),(0,B.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,B.jsxs)(hr,{children:[(0,B.jsx)(kn,{children:(0,B.jsx)(ve,{})}),`No `,e===`active-tiers`?`active`:`archived`,` tiers found.`]})},ml=({className:e,onClick:t})=>(e=E(`group flex shrink-0 items-center justify-center rounded border border-grey-300 px-3 py-1.5 font-semibold whitespace-nowrap text-grey-900 transition-all hover:border-grey-500 dark:border-grey-900 dark:text-white`,e),(0,B.jsxs)(`button`,{className:e,"data-testid":`stripe-connected`,type:`button`,onClick:t,children:[(0,B.jsx)(`span`,{className:`inline-flex size-2 rounded-full bg-green transition-all group-hover:bg-[#625BF6]`}),(0,B.jsx)(`span`,{className:`ml-2`,children:`Connected to Stripe`})]})),hl=J(({keywords:e})=>{let[t,n]=(0,z.useState)(`active-tiers`),{settings:r,config:i}=N(),{data:{tiers:a,meta:o,isEnd:s}={},fetchNextPage:c}=br(),l=Cr(a||[]),u=xr(a||[]),{updateRoute:d}=P(),f=rt(),p=async()=>{if(f?.isDisabled(`limitStripeConnect`)&&!An(r,i))try{await f.errorIfWouldGoOverLimit(`limitStripeConnect`)}catch(e){if(e instanceof $e){O.show(gt,{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=[{id:`active-tiers`,title:`Active`,contents:(0,B.jsx)(pl,{tab:`active-tiers`,tiers:m(l)})},{id:`archived-tiers`,title:`Archived`,contents:(0,B.jsx)(pl,{tab:`archive-tiers`,tiers:m(u)})}],g;return g=An(r,i)?(0,B.jsx)(xt,{selectedTab:t,tabs:h,onTabChange:n}):(0,B.jsx)(pl,{tab:`free-tier`,tiers:l.filter(e=>e.type===`free`)}),(0,B.jsxs)(q,{customButtons:An(r,i)?(0,B.jsx)(ml,{className:`hidden tablet:!visible tablet:!block`,onClick:p}):(0,B.jsx)(Gt,{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,B.jsx)(`div`,{className:`w-full tablet:hidden`,children:An(r,i)?(0,B.jsx)(ml,{className:`w-full`,onClick:p}):(0,B.jsx)(Gt,{onClick:p})}),g,s===!1&&(0,B.jsx)(j,{label:`Load more (showing ${a?.length||0}/${o?.pagination.total||0} tiers)`,link:!0,onClick:()=>c()})]})},`Tiers`),gl=1e4,_l=J(({keywords:e})=>{let{localSettings:t,siteData:n,updateSetting:r,saveState:i,handleSave:a,handleCancel:o,focusRef:s,errors:c,validate:l,clearError:u,handleEditingChange:d}=k({onValidate:()=>({donationsSuggestedAmount:Dt(m,f,{maxAmount:gl})})}),[f=`USD`,p=`500`]=R(t,[`donations_currency`,`donations_suggested_amount`]),m=parseInt(p),h=`${n?.url.replace(/\/$/,``)}/#/portal/support`;(0,z.useEffect)(()=>{l()},[f]);let[g,_]=(0,z.useState)(!1),[v,y]=(0,z.useState)(!1);(0,z.useEffect)(()=>{t.some(e=>e.dirty)&&!v&&(y(!0),d(!0))},[t,v,d]);let b=()=>{navigator.clipboard.writeText(h),_(!0),setTimeout(()=>_(!1),2e3)},x=()=>{lt(i===`unsaved`,()=>window.open(h,`_blank`))},S=(e,t)=>{r(e,t)};return(0,B.jsxs)(q,{description:`Give your audience a simple way to support your work with one-time payments.`,isEditing:v,keywords:e,navid:`tips-and-donations`,saveState:i,testId:`tips-and-donations`,title:`Tips & donations`,hideEditButton:!0,onCancel:()=>{o(),y(!1)},onEditingChange:y,onSave:async()=>{await a()&&y(!1)},children:[(0,B.jsxs)(I,{columns:1,children:[(0,B.jsx)(`div`,{className:`flex max-w-[180px] items-end gap-[.6rem]`,children:(0,B.jsx)(Xe,{error:!!c.donationsSuggestedAmount,hint:c.donationsSuggestedAmount,inputRef:s,placeholder:`5`,rightPlaceholder:(0,B.jsx)(et,{border:!1,clearBg:!0,containerClassName:`w-14`,fullWidth:!1,options:Et(),selectedOption:Et().flatMap(e=>e.options).find(e=>e.value===f),title:`Currency`,hideTitle:!0,isSearchable:!0,onSelect:e=>S(`donations_currency`,e?.value||`USD`)}),title:`Suggested amount`,valueInCents:parseInt(p),onBlur:l,onChange:e=>S(`donations_suggested_amount`,e.toString()),onKeyDown:()=>u(`donationsSuggestedAmount`)},p)}),(0,B.jsxs)(`div`,{className:`w-100`,children:[(0,B.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,B.jsx)(ze,{level:6,children:`Shareable link`})}),(0,B.jsxs)(`div`,{className:`group relative mt-0 flex w-100 items-center justify-between overflow-hidden border-b border-transparent pt-1 pb-2 hover:border-grey-300 dark:hover:border-grey-600`,children:[(0,B.jsx)(`span`,{"data-testid":`donate-url`,children:h}),(0,B.jsxs)(`div`,{className:`invisible flex gap-1 bg-white pl-1 group-hover:visible dark:bg-black`,children:[(0,B.jsx)(j,{color:`clear`,"data-testid":`preview-shareable-link`,label:`Preview`,size:`sm`,onClick:x}),(0,B.jsx)(j,{color:`light-grey`,"data-testid":`copy-shareable-link`,label:g?`Copied`:`Copy link`,size:`sm`,onClick:b})]})]})]})]}),(0,B.jsxs)(`div`,{className:`items-center-mt-1 flex`,children:[`All tips and donations are subject to Stripe's `,(0,B.jsx)(`a`,{className:`ml-1 font-medium text-green`,href:`https://ghost.org/help/tips-donations/`,rel:`noopener noreferrer`,target:`_blank`,children:` tipping policy`}),`.`]})]})},`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`]},vl=()=>{let{config:e,settings:t}=N(),[n,r]=R(t,[`donations_enabled`,`paid_members_enabled`]),i=An(t||[],e||{}),a=Je(`automations`),o=Je(`membersCustomFields`);return(0,B.jsxs)(Ya,{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,B.jsx)(kc,{keywords:Q.access}),(0,B.jsx)(ul,{keywords:Q.access}),(0,B.jsx)(hl,{keywords:Q.tiers}),(0,B.jsx)(ll,{keywords:Q.portal}),r&&(0,B.jsx)(zc,{keywords:Q.giftSubscriptions}),!a&&(0,B.jsx)(al,{keywords:Q.memberEmails}),n&&i&&(0,B.jsx)(_l,{keywords:Q.tips}),o&&(0,B.jsx)(Rc,{keywords:Q.customFields})]})},yl=J(({keywords:e})=>{let{updateRoute:t}=P();return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Customize`,size:`sm`,onClick:()=>{t(`announcement-bar/edit`)}}),description:`Highlight important updates or offers`,keywords:e,navid:`announcement-bar`,testId:`announcement-bar`,title:`Announcement bar`})},`Announcement bar`),bl=J(({keywords:e})=>{let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(!1),{checkThemeLimitError:a}=rn(),{route:o,updateRoute:s}=P(),{data:c}=sr(),l=c?.themes.find(e=>e.active);(0,z.useEffect)(()=>{(async()=>{i(!0);let e=await a();n(e),i(!1)})()},[a]);let u=async()=>{r||(t?O.show(gt,{prompt:t,onOk:()=>s({route:`/pro`,isExternal:!0})}):s(`design/change-theme`))},d=(0,B.jsx)(I,{children:(0,B.jsxs)(`div`,{className:`flex flex-col`,children:[(0,B.jsx)(ze,{grey:!1,level:6,children:`Active theme`}),(0,B.jsxs)(`div`,{className:`mt-1 flex w-full items-center justify-between gap-4`,children:[(0,B.jsx)(`div`,{children:l?`${l.name} (v${l.package?.version||`1.0`})`:`Loading...`}),(0,B.jsx)(`div`,{className:`-mr-3`,children:(0,B.jsxs)(Gn,{children:[(0,B.jsx)(or,{asChild:!0,children:(0,B.jsx)(j,{disabled:!l,icon:`ellipsis`,iconColorClass:`text-base`,label:`Menu`,size:`sm`,hideLabel:!0})}),(0,B.jsxs)(Hn,{align:`end`,children:[(0,B.jsx)(Xn,{onSelect:async()=>{if(!l)return;let e=await a(`.`);if(e){O.show(gt,{prompt:e,onOk:()=>s({route:`/pro`,isExternal:!0})});return}s(`theme/edit/${encodeURIComponent(l.name)}?from=${encodeURIComponent(o??``)}`)},children:`Edit code`}),(0,B.jsx)(Xn,{onSelect:()=>{if(!l)return;let{apiRoot:e}=f();v(`${e}/themes/${l.name}/download`)},children:`Download`})]})]})})]})]})});return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Change theme`,size:`sm`,onClick:u}),description:`Browse and install official themes or upload one`,keywords:e,navid:`theme`,testId:`theme`,title:`Theme`,children:d})},`Branding and design`),xl=``+new URL(`design-settings-R1OjGW68.png`,import.meta.url).href,Sl=J(({keywords:e})=>{let{updateRoute:t}=P();return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Customize`,size:`sm`,onClick:()=>{t(`design/edit`)}}),description:`Customize the style and layout of your site`,keywords:e,navid:`design`,testId:`design`,title:`Design & branding`,children:(0,B.jsx)(`img`,{src:xl})})},`Branding and design`),Cl=J(({keywords:e})=>{let{updateRoute:t}=P();return(0,B.jsx)(q,{customButtons:(0,B.jsx)(j,{className:`mt-[-5px]`,color:`clear`,label:`Customize`,size:`sm`,onClick:()=>{t(`navigation/edit`)}}),description:`Set up primary and secondary menus`,keywords:e,navid:`navigation`,testId:`navigation`,title:`Navigation`})},`Navigation`),wl={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`]},Tl=()=>(0,B.jsx)(B.Fragment,{children:(0,B.jsxs)(Ya,{keywords:Object.values(wl).flat(),title:`Site`,children:[(0,B.jsx)(Sl,{keywords:wl.design}),(0,B.jsx)(bl,{keywords:wl.theme}),(0,B.jsx)(Cl,{keywords:wl.navigation}),(0,B.jsx)(yl,{keywords:wl.announcementBar})]})}),El=()=>{let e=Je(`automations`);return(0,B.jsx)(B.Fragment,{children:(0,B.jsxs)(`div`,{className:`mb-[60vh] px-8 pt-16 tablet:max-w-[760px] tablet:px-14 tablet:pt-0`,children:[(0,B.jsx)(dc,{}),(0,B.jsx)(Tl,{}),(0,B.jsx)(vl,{}),e?(0,B.jsx)(Vs,{}):(0,B.jsx)(fo,{}),(0,B.jsx)(wc,{}),(0,B.jsx)(Xa,{})]})})},$=({keywords:e,navid:t,...n})=>{let{ref:r,props:i}=Ut(t),{currentSection:a}=Ct(),{checkVisible:o}=nt();return(0,B.jsx)(Hr,{ref:r,isCurrent:(Array.isArray(t)?t:[t]).includes(a||``),isVisible:o(e),navid:Array.isArray(t)?t[0]:t,...i,...n})},Dl=()=>(0,B.jsxs)(Kn,{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,B.jsx)(xe,{className:`size-3`,strokeWidth:2.25}),`Private`]}),Ol=()=>{let{filter:e,setFilter:t,checkVisible:n,noResult:r,setNoResult:i}=nt(),{updateRoute:a}=P(),o=(0,z.useRef)(null),{isAnyTextFieldFocused:s}=He(),{settings:c,config:l}=N(),[u,d,f,p]=R(c,[`donations_enabled`,`is_private`,`paid_members_enabled`,`editor_default_email_recipients`]),m=An(c||[],l||{}),h=Je(`automations`),g=Je(`membersCustomFields`),_=p!==`disabled`,v=!!l.mailgunIsConfigured,y=_&&!v,b=z.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=z.useMemo(()=>{let e=h?Ls:uo;return[e.enableNewsletters,..._?[e.defaultRecipients]:[],...h?[Ls.emails]:_?[uo.newsletters]:[],...y?[e.mailgun]:[]].flat()},[h,_,y]),S=z.useMemo(()=>[Z.network,Z.explore,Z.recommendations,Z.embedSignupForm,...m?[Z.offers]:[]].flat(),[m]);(0,z.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,z.useEffect)(()=>{o.current&&o.current.focus()},[]),(0,z.useEffect)(()=>{!n(Object.values(X).flat())&&!n(Object.values(wl).flat())&&!n([...b,...x])&&!n(S)&&!n(Object.values(Y).flat())?i(!0):i(!1)},[n,i,e,x,b,S]),(0,z.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})},ee=E(`hidden pt-10 tablet:visible! tablet:block!`);return(0,B.jsxs)(`div`,{className:`ml-auto flex w-full flex-col pt-0 tablet:max-w-[240px]`,"data-testid":`sidebar`,children:[(0,B.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,B.jsxs)(`div`,{className:`relative w-full`,children:[(0,B.jsx)(M,{className:`absolute top-2.5 left-3 z-10`,colorClass:`text-grey-500`,name:`magnifying-glass`,size:`sm`}),(0,B.jsx)(A,{autoComplete:`off`,autoCorrect:`off`,className:`mr-8 flex h-9 w-full items-center rounded-full border border-transparent bg-white px-[33px] py-1.5 shadow-[0_0_1px_rgba(21,23,26,0.25),0_1px_3px_rgba(0,0,0,0.03),0_8px_10px_-12px_rgba(0,0,0,.1)] transition-colors hover:shadow-sm focus:border-green focus:bg-white focus:shadow-[0_0_0_2px_rgba(48,207,67,0.25)] tablet:mr-0 dark:border-transparent dark:bg-grey-900 dark:text-white dark:placeholder:text-grey-800 dark:focus:border-green dark:focus:bg-grey-950`,containerClassName:`w-100`,inputRef:o,placeholder:`Search settings`,title:`Search`,value:e,clearBg:!0,hideTitle:!0,unstyled:!0,onChange:w}),e?(0,B.jsx)(j,{className:`absolute top-3 right-14 p-1 tablet:right-3`,icon:`close`,iconColorClass:`text-grey-700 w-[10px]! h-[10px]!`,size:`sm`,unstyled:!0,onClick:()=>{t(``),o.current?.focus()}}):(0,B.jsx)(`div`,{className:`absolute top-[7px] -right-1/2 hidden rounded border border-grey-400 bg-white px-1.5 py-0.5 text-2xs font-semibold tracking-wider text-grey-600 uppercase shadow-[0px_1px_#CED4D9] tablet:visible! tablet:right-3 tablet:block! dark:border-grey-800 dark:bg-grey-900 dark:text-grey-500 dark:shadow-[0px_1px_#626D79]`,children:`/`})]})}),(0,B.jsxs)(`nav`,{className:ee,id:`admin-x-settings-sidebar`,children:[r&&(0,B.jsxs)(`div`,{className:`ml-2 text-base text-grey-700`,children:[(0,B.jsx)(`h2`,{className:`mb-2 text-base font-semibold tracking-normal text-black dark:text-white`,children:`No result`}),(0,B.jsxs)(`div`,{children:[`We couldn't find any setting matching '${e}'`,`.`]})]}),(0,B.jsxs)(Fr,{isVisible:n(Object.values(X).flat()),title:`General settings`,children:[(0,B.jsx)($,{icon:`textfield`,keywords:X.titleAndDescription,navid:`general`,title:`Title & description`,onClick:C}),(0,B.jsx)($,{icon:`world-clock`,keywords:X.timeZone,navid:`timezone`,title:`Timezone`,onClick:C}),(0,B.jsx)($,{icon:`language`,keywords:X.publicationLanguage,navid:`publication-language`,title:`Publication language`,onClick:C}),(0,B.jsx)($,{icon:`user-pen`,keywords:X.users,navid:`staff`,title:`Staff`,onClick:C}),(0,B.jsx)($,{icon:`layer`,keywords:X.metadata,navid:`metadata`,title:`Meta data`,onClick:C}),(0,B.jsx)($,{icon:`like`,keywords:X.socialAccounts,navid:`social-accounts`,title:`Social accounts`,onClick:C}),(0,B.jsx)($,{icon:`baseline-chart`,keywords:X.analytics,navid:`analytics`,title:`Analytics`,onClick:C})]}),(0,B.jsxs)(Fr,{isVisible:n(Object.values(wl).flat()),title:`Site`,children:[(0,B.jsx)($,{icon:`palette`,keywords:wl.design,navid:`design`,title:`Design & branding`,onClick:C}),(0,B.jsx)($,{icon:`layout-2-col`,keywords:wl.theme,navid:`theme`,title:`Theme`,onClick:C}),(0,B.jsx)($,{icon:`navigation`,keywords:wl.navigation,navid:`navigation`,title:`Navigation`,onClick:C}),(0,B.jsx)($,{icon:`megaphone`,keywords:wl.announcementBar,navid:`announcement-bar`,title:`Announcement bar`,onClick:C})]}),(0,B.jsxs)(Fr,{isVisible:n([...b,...x]),title:`Membership`,children:[(0,B.jsx)($,{icon:`key`,keywords:Q.access,navid:[`members`,`spam-filters`],title:(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center justify-between gap-2`,children:[(0,B.jsx)(`span`,{className:`min-w-0 truncate`,children:`Access`}),d&&(0,B.jsx)(Dl,{})]}),onClick:C}),(0,B.jsx)($,{icon:`bills`,keywords:Q.tiers,navid:`tiers`,title:`Tiers`,onClick:C}),(0,B.jsx)($,{icon:`portal`,keywords:Q.portal,navid:`portal`,title:`Signup portal`,onClick:C}),f&&(0,B.jsx)($,{icon:`gift`,keywords:Q.giftSubscriptions,navid:`gift-subscriptions`,title:`Gift subscriptions`,onClick:C}),!h&&(0,B.jsx)($,{icon:`mailplus`,keywords:Q.memberEmails,navid:`memberemails`,title:`Welcome emails`,onClick:C}),u&&m&&(0,B.jsx)($,{icon:`piggybank`,keywords:Q.tips,navid:`tips-and-donations`,title:`Tips & donations`,onClick:C}),g&&(0,B.jsx)($,{icon:`textfield`,keywords:Q.customFields,navid:`custom-fields`,title:`Custom fields`,onClick:C}),h?(0,B.jsx)($,{icon:`email`,keywords:x,navid:[`enable-newsletters`,`default-recipients`,`emails`,`mailgun`],title:`Email`,onClick:C}):(0,B.jsx)($,{icon:`email`,keywords:x,navid:[`enable-newsletters`,`default-recipients`,`newsletters`,`mailgun`],title:`Newsletters`,onClick:C})]}),(0,B.jsxs)(Fr,{isVisible:n(S),title:`Growth`,children:[(0,B.jsx)($,{icon:`ap-network`,keywords:Z.network,navid:`network`,title:`Network`,onClick:C}),(0,B.jsx)($,{icon:`globe-simple`,keywords:Z.explore,navid:`explore`,title:`Ghost Explore`,onClick:C}),(0,B.jsx)($,{icon:`heart`,keywords:Z.recommendations,navid:`recommendations`,title:`Recommendations`,onClick:C}),(0,B.jsx)($,{icon:`emailfield`,keywords:Z.embedSignupForm,navid:`embed-signup-form`,title:`Signup forms`,onClick:C}),m&&(0,B.jsx)($,{icon:`discount`,keywords:Z.offers,navid:`offers`,title:`Offers`,onClick:C})]}),(0,B.jsxs)(Fr,{isVisible:n(Object.values(Y).flat()),title:`Advanced`,children:[(0,B.jsx)($,{icon:`modules-3`,keywords:Y.integrations,navid:`integrations`,title:`Integrations`,onClick:C}),(0,B.jsx)($,{icon:`download`,keywords:Y.migrationtools,navid:`migration`,title:`Import/Export`,onClick:C}),(0,B.jsx)($,{icon:`brackets`,keywords:Y.codeInjection,navid:`code-injection`,title:`Code injection`,onClick:C}),(0,B.jsx)($,{icon:`labs-flask`,keywords:Y.labs,navid:`labs`,title:`Labs`,onClick:C}),(0,B.jsx)($,{icon:`time-back`,keywords:Y.history,navid:`history`,title:`History`,onClick:C}),(0,B.jsx)($,{icon:`warning`,keywords:Y.dangerzone,navid:`dangerzone`,title:`Danger zone`,onClick:C})]}),!e&&(0,B.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,B.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`]})]})]})},kl=[],Al=`:is([role="dialog"], [role="alertdialog"])[data-state="open"]`,jl=({children:e})=>(0,B.jsxs)(B.Fragment,{children:[(0,B.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,B.jsx)(ha,{})}),(0,B.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})]}),Ml=()=>{let{currentUser:e}=N(),{loadingModal:t}=P(),{isDirty:n}=Ve(),r=e=>{window.location.hash=e},i=()=>document.getElementById(`modal-backdrop`)?!0:!!document.querySelector(Al);return(0,z.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){if(i())return;lt(n,()=>{r(`/`)})}};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[n]),(0,z.useEffect)(()=>{x.remove()},[]),Tn(e)?En(e)?(0,B.jsx)(jl,{children:(0,B.jsx)(`div`,{className:`flex-1 bg-white dark:bg-grey-950`,children:(0,B.jsx)(`div`,{className:`h-full overflow-y-auto overscroll-y-contain`,id:`admin-x-settings-scroller`,children:(0,B.jsxs)(`div`,{className:`mx-auto max-w-5xl px-[5vmin] tablet:mt-16 xl:mt-10`,children:[(0,B.jsx)(ze,{className:`mb-[5vmin]`,children:`Settings`}),(0,B.jsx)(uc,{highlight:!1,keywords:kl})]})})})}):(0,B.jsxs)(jl,{children:[t&&(0,B.jsx)(`div`,{className:`fixed inset-0 z-40 h-[calc(100vh-55px)] w-[100vw] tablet:h-[100vh] bg-[rgba(98,109,121,0.2)] backdrop-blur-[3px]`}),(0,B.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,B.jsx)(`div`,{className:`relative w-full`,children:(0,B.jsx)(Ol,{})})}),(0,B.jsx)(`div`,{className:`h-full flex-1 bg-white tablet:basis-[800px] dark:bg-grey-950 dark:tablet:bg-black`,children:(0,B.jsx)(`div`,{className:`relative h-full overflow-y-scroll overscroll-y-contain pt-13`,id:`admin-x-settings-scroller`,children:(0,B.jsx)(El,{})})})]}):null},Nl={"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`},Pl=()=>he(()=>import(`./modals-CIdwHVga.js`),__vite__mapDeps([30,1,2,8,9,3,10,6,11,4,12,13,14,15,31,32,22,33,34,7,16,17,18,19,20,21,23,35,36,5,24,25,37,38,39,40,41,42,43,44,45,46]),import.meta.url),Fl=()=>{let{updateNavigatedSection:e,scrollToSection:t}=Ct(),{route:n,updateRoute:r}=P();return Zt((e,n)=>{e===n&&t(e.split(`/`)[0])},[t]),(0,z.useEffect)(()=>{if(n!==void 0){if(n.split(`/`)[0]===`locksite`){r(`members`);return}e(n.split(`/`)[0])}},[n,e,r]),null};function Il({designSystem:e,upgradeStatus:t}){return(0,B.jsx)(_t,{upgradeStatus:t,children:(0,B.jsx)(O.Provider,{children:(0,B.jsx)(zt,{basePath:`settings`,modals:{paths:Nl,load:Pl},children:(0,B.jsxs)(Gr,{className:`admin-x-settings`,...e,children:[(0,B.jsx)(Fl,{}),(0,B.jsx)(Ml,{})]})})})})}var Ll=e(n(),1);async function Rl(){return await he(()=>import(`./koenig-lexical-Di7b48ED.js`),__vite__mapDeps([47,1,2,8,3,16,7,9,10,6,11,4,12,13,14,15,17,18,19,20,21,22,23]),import.meta.url)}function zl(){return(0,Ll.createPortal)((0,B.jsx)(`div`,{className:`shade shade-admin`,style:{position:`absolute`,inset:0,zIndex:20},children:(0,B.jsx)(Il,{designSystem:{darkMode:!1,fetchKoenigLexical:Rl}})}),document.body)}export{zl as default};