ghost 6.61.0 → 6.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) 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-jobs-0.0.0.tgz +0 -0
  4. package/components/tryghost-adapter-base-redirects-0.0.0.tgz +0 -0
  5. package/components/tryghost-adapter-base-route-settings-0.0.0.tgz +0 -0
  6. package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
  7. package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
  8. package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
  9. package/components/tryghost-checkout-0.0.0.tgz +0 -0
  10. package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
  11. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  12. package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
  13. package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
  14. package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
  15. package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
  16. package/components/tryghost-kg-default-nodes-2.2.1.tgz +0 -0
  17. package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
  18. package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
  19. package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
  20. package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
  21. package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
  22. package/components/tryghost-nql-string-0.0.0.tgz +0 -0
  23. package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
  24. package/content/settings/README.md +1 -1
  25. package/content/themes/casper/.gitignore +28 -0
  26. package/content/themes/casper/assets/built/casper.js +1 -1
  27. package/content/themes/casper/assets/built/screen.css +1 -1
  28. package/content/themes/casper/assets/css/screen.css +2 -1
  29. package/content/themes/casper/assets/js/lightbox.js +63 -46
  30. package/content/themes/casper/package.json +6 -6
  31. package/content/themes/casper/page.hbs +1 -0
  32. package/content/themes/casper/post.hbs +1 -0
  33. package/content/themes/source/.gitignore +28 -0
  34. package/content/themes/source/assets/built/screen.css +1 -1
  35. package/content/themes/source/assets/built/source.js +1 -1
  36. package/content/themes/source/assets/css/screen.css +2 -1
  37. package/content/themes/source/assets/js/lightbox.js +62 -45
  38. package/content/themes/source/assets/js/main.js +2 -2
  39. package/content/themes/source/package.json +4 -4
  40. package/content/themes/source/partials/feature-image.hbs +1 -0
  41. package/core/boot.js +54 -22
  42. package/core/built/admin/assets/Combination-B0l4MKVh.js +41 -0
  43. package/core/built/admin/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  44. package/core/built/admin/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  45. package/core/built/admin/assets/{about-Bve7IJS2.js → about-Dyae_UT6.js} +1 -1
  46. package/core/built/admin/assets/account-migration-CESa0mnX.js +1 -0
  47. package/core/built/admin/assets/activitypub/{account-migration-C-aej4x_.js → account-migration-By69CgCp.js} +16 -16
  48. package/core/built/admin/assets/activitypub/activitypub.js +9 -9
  49. package/core/built/admin/assets/activitypub/{bluesky-sharing-BXkA5mqV.js → bluesky-sharing-BJcPMrDd.js} +36 -36
  50. package/core/built/admin/assets/activitypub/{content-formatters-CHcyMFk4.js → content-formatters-3rTHg3mp.js} +3 -3
  51. package/core/built/admin/assets/activitypub/{domain-B3ihkPde.js → domain-DUR4xSkV.js} +121 -121
  52. package/core/built/admin/assets/activitypub/{edit-profile-DsZM3rTX.js → edit-profile-BqtfzxCp.js} +40 -40
  53. package/core/built/admin/assets/activitypub/{explore-BodNrZgR.js → explore-BxuJd-J4.js} +26 -26
  54. package/core/built/admin/assets/activitypub/{feed-PwH1iJ84.js → feed-BM1TcksA.js} +48 -48
  55. package/core/built/admin/assets/activitypub/{field-D06-kmOJ.js → field-Dn7HHx2-.js} +2 -2
  56. package/core/built/admin/assets/activitypub/inbox-CCjkuow2.js +1284 -0
  57. package/core/built/admin/assets/activitypub/label-1AA_s9Fa.js +16 -0
  58. package/core/built/admin/assets/activitypub/layout-2-0bw6HN.js +1 -0
  59. package/core/built/admin/assets/activitypub/{moderation-D1Yapsod.js → moderation-CnmxEB8w.js} +91 -91
  60. package/core/built/admin/assets/activitypub/{note-C5zjqq5C.js → note-ZKc_Bnba.js} +23 -23
  61. package/core/built/admin/assets/activitypub/{notifications-B9p8eCHD.js → notifications-CB2tJZau.js} +48 -48
  62. package/core/built/admin/assets/activitypub/{onboarding-CNelD_uF.js → onboarding-BsJ9E5qf.js} +2 -2
  63. package/core/built/admin/assets/activitypub/{onboarding-mat5Hrl0.js → onboarding-CSUJJIlh.js} +2 -2
  64. package/core/built/admin/assets/activitypub/{preferences-BCqUdC3v.js → preferences-0-JZnUkI.js} +1519 -1519
  65. package/core/built/admin/assets/activitypub/{profile-BRCWoFem.js → profile-C35cFIhM.js} +183 -183
  66. package/core/built/admin/assets/activitypub/{routes-BSXT992i.js → routes-BD4vscyc.js} +740 -731
  67. package/core/built/admin/assets/activitypub/settings-BsMROdqh.js +315 -0
  68. package/core/built/admin/assets/activitypub/{site-DHoMupSB.js → site-O0RL9YCN.js} +2 -2
  69. package/core/built/admin/assets/activitypub/{step-1-B-YfsVeO.js → step-1-BMSx7c_X.js} +4 -4
  70. package/core/built/admin/assets/activitypub/{step-3-D6BFMXL_.js → step-3-CLlOZTyt.js} +3 -3
  71. package/core/built/admin/assets/activitypub/{tabs-GpNecvfB.js → tabs-Dxk-b9M-.js} +306 -306
  72. package/core/built/admin/assets/activitypub/{topic-filter-BPDeQQys.js → topic-filter-5yZH6tId.js} +2 -2
  73. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-BoVOxXkV.js → use-activity-pub-queries-CV50qe03.js} +2 -2
  74. package/core/built/admin/assets/activitypub/{use-reply-chain-data-wVBX7swM.js → use-reply-chain-data-Cbvzgjzd.js} +30 -30
  75. package/core/built/admin/assets/activitypub/{users-CoX6FT_K.js → users-BjcoP_HC.js} +7 -5
  76. package/core/built/admin/assets/add-integration-modal-BlF6rs_f.js +1 -0
  77. package/core/built/admin/assets/add-newsletter-modal-CglVQqah.js +1 -0
  78. package/core/built/admin/assets/add-recommendation-modal-wz7BsuaG.js +1 -0
  79. package/core/built/admin/assets/analytics-C4HE1gBg.js +1 -0
  80. package/core/built/admin/assets/{announcement-bar-modal-DM3cYOpo.js → announcement-bar-modal-Ci4zz8jO.js} +1 -1
  81. package/core/built/admin/assets/{api-keys-BLm2NDBh.js → api-keys-Ck-Yteiv.js} +1 -1
  82. package/core/built/admin/assets/{audience-9mwU5TW6.js → audience-CtbA54Sn.js} +1 -1
  83. package/core/built/admin/assets/{automated-emails-te1D5kq-.js → automated-emails-D5VVMND9.js} +1 -1
  84. package/core/built/admin/assets/automations-CzKt5fb8.js +1 -0
  85. package/core/built/admin/assets/bluesky-sharing-BEtJ_gL_.js +1 -0
  86. package/core/built/admin/assets/{breadcrumb-DLiqCyFc.js → breadcrumb-zUrZrBtW.js} +1 -1
  87. package/core/built/admin/assets/{button-B2jcu6bk.js → button-eNMKQWXr.js} +1 -1
  88. package/core/built/admin/assets/{chart-helpers-Fo3bUL3K.js → chart-helpers-CfBKt0vT.js} +1 -1
  89. package/core/built/admin/assets/{checkbox-BfKktMph.js → checkbox-CgOn_tKW.js} +1 -1
  90. package/core/built/admin/assets/{chunk.524.60ca4692d91c6022042f.js → chunk.524.a697dee88db67fdf6021.js} +4 -4
  91. package/core/built/admin/assets/{chunk.582.525c7617c2d9e94c940a.js → chunk.582.5ed5d124cfca9c259b9c.js} +6 -6
  92. package/core/built/admin/assets/{chunk.896.435fe0637944d4a69810.js → chunk.598.7e056fabb47ce7dbd73f.js} +14 -14
  93. package/core/built/admin/assets/{code-editor-view-CYVu4EW6.js → code-editor-view-BYNoAoNV.js} +1 -1
  94. package/core/built/admin/assets/{code-editor-view-DCQJxsfU.js → code-editor-view-K2wI-I5f.js} +1 -1
  95. package/core/built/admin/assets/color-picker-Ddw80xX6.js +3 -0
  96. package/core/built/admin/assets/color-picker-field-D9nUhvA7.js +1 -0
  97. package/core/built/admin/assets/combobox-w9j8PPQT.js +1 -0
  98. package/core/built/admin/assets/command-BfpHORBv.js +1 -0
  99. package/core/built/admin/assets/comments-BLmCmyCs.js +1 -0
  100. package/core/built/admin/assets/confirmation-context-CBM8G0Vj.js +1 -0
  101. package/core/built/admin/assets/{content-api-modal-CyQEC3fr.js → content-api-modal-TXRz3U7S.js} +1 -1
  102. package/core/built/admin/assets/context-menu-_QMdd3kp.js +1 -0
  103. package/core/built/admin/assets/{copy-field-B3M1s78L.js → copy-field-6N01S07E.js} +1 -1
  104. package/core/built/admin/assets/create-ghost-browse-value-source-qIBymvvf.js +1 -0
  105. package/core/built/admin/assets/custom-field-type-option-BddFlJFa.js +1 -0
  106. package/core/built/admin/assets/custom-integration-modal-DmNquxUV.js +1 -0
  107. package/core/built/admin/assets/{date-range-select-DD2RKkgB.js → date-range-select-uvz_DtPh.js} +1 -1
  108. package/core/built/admin/assets/design-and-theme-modal-BSmo12Op.js +2 -0
  109. package/core/built/admin/assets/dirty-confirm-dialog-BZ1iytEd.js +1 -0
  110. package/core/built/admin/assets/{disabled-sources-indicator-Cvy47bE2.js → disabled-sources-indicator-DMRrxsiJ.js} +1 -1
  111. package/core/built/admin/assets/dist-Dcsslyo72.js +1 -0
  112. package/core/built/admin/assets/domain-BNYrt0aD.js +1 -0
  113. package/core/built/admin/assets/dropzone-D7nFdAe5.js +5 -0
  114. package/core/built/admin/assets/edit-profile-C5Asm4LA.js +1 -0
  115. package/core/built/admin/assets/editor-REokrzci.js +8 -0
  116. package/core/built/admin/assets/{embed-signup-form-modal-DeBMLxlL.js → embed-signup-form-modal-Ds6mPEi5.js} +1 -1
  117. package/core/built/admin/assets/en-B1jX3WMs.js +1 -0
  118. package/core/built/admin/assets/explore-UY10Egsp.js +1 -0
  119. package/core/built/admin/assets/feature-image-placeholder-D1iF_8bc.js +1 -0
  120. package/core/built/admin/assets/feed-81C8mJWR.js +1 -0
  121. package/core/built/admin/assets/{field-Cj8lmDOo.js → field-Dihp5p18.js} +1 -1
  122. package/core/built/admin/assets/filter-bar-Da1qxybu.js +1 -0
  123. package/core/built/admin/assets/filter-sources-BO9xUPj7.js +1 -0
  124. package/core/built/admin/assets/filters-CRUWecfY.js +1 -0
  125. package/core/built/admin/assets/filters-DirqNXjH.js +1 -0
  126. package/core/built/admin/assets/first-promoter-modal-CT6MxYZb.js +1 -0
  127. package/core/built/admin/assets/{ghost-c8807202a07c20030acb719ee0114815.css → ghost-8eabfc1ece81b03cf7b90780d31487e8.css} +1 -1
  128. package/core/built/admin/assets/{ghost-3894eedcc6968f658578c0abfe942aab.js → ghost-c2848508292937415f20f5a830eea59e.js} +31 -28
  129. package/core/built/admin/assets/{ghost-dark-fbf1e384aaef3ae315e540f0eb7373a7.css → ghost-dark-a7bebe2c561f55369dcf29f4c820f7ff.css} +1 -1
  130. package/core/built/admin/assets/gift-link-modal-CQVAye17.js +1 -0
  131. package/core/built/admin/assets/growth-BWIu-6xj.js +3 -0
  132. package/core/built/admin/assets/growth-DU29oxeA.js +1 -0
  133. package/core/built/admin/assets/history-modal-CFd1Hvx6.js +1 -0
  134. package/core/built/admin/assets/{html-field-C8qVGGC1.js → html-field-CJBCLTvv.js} +1 -1
  135. package/core/built/admin/assets/{images-h8VZEQ9k.js → images-scfkWZiK.js} +1 -1
  136. package/core/built/admin/assets/{inbox-BYd1M06Q.js → inbox-Mcp4DXZN.js} +14 -14
  137. package/core/built/admin/assets/index-6MkPdCtr.js +4 -0
  138. package/core/built/admin/assets/index-Bn7QhcZu.css +2 -0
  139. package/core/built/admin/assets/index.es-CNnuNH0d.js +1 -0
  140. package/core/built/admin/assets/{input-group-D8sCXRF5.js → input-group-CMhe2DvY.js} +1 -1
  141. package/core/built/admin/assets/invite-user-modal-DfheMXs0.js +1 -0
  142. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +14 -14
  143. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +3 -3
  144. package/core/built/admin/assets/koenig-lexical/style.css +1 -1
  145. package/core/built/admin/assets/{koenig-lexical-_-IsVI7E.js → koenig-lexical-DBSqAuiI.js} +3 -3
  146. package/core/built/admin/assets/koenig-loader-aFQNlJlD.js +2 -0
  147. package/core/built/admin/assets/{kpi-card-DZQk_0W8.js → kpi-card-DBRMfGOW.js} +1 -1
  148. package/core/built/admin/assets/{kpi-card-DW_2y3ug.js → kpi-card-DFafD1qq.js} +1 -1
  149. package/core/built/admin/assets/{kpi-helpers-PueTKuA6.js → kpi-helpers-Cv8i8hns.js} +1 -1
  150. package/core/built/admin/assets/{kpi-tabs-CojDs-Qz.js → kpi-tabs-BJItvLYm.js} +1 -1
  151. package/core/built/admin/assets/{label-DjbT91GM.js → label-BnSCvffu.js} +1 -1
  152. package/core/built/admin/assets/label-picker-KVoo91sh.js +1 -0
  153. package/core/built/admin/assets/layout-Bjv2Ll-5.js +1 -0
  154. package/core/built/admin/assets/member-custom-fields-DDQV6QeG.js +1 -0
  155. package/core/built/admin/assets/member-detail-CdJF6Agw.js +1 -0
  156. package/core/built/admin/assets/members-DjQbq9Z2.js +4 -0
  157. package/core/built/admin/assets/moderation-AgCIEso4.js +1 -0
  158. package/core/built/admin/assets/{multi-select-combobox-B6LiRzDO.js → multi-select-combobox-BcITkUVr.js} +1 -1
  159. package/core/built/admin/assets/navigation-modal-BkT7b1M2.js +1 -0
  160. package/core/built/admin/assets/newsletter-BMMAuvgq.js +1 -0
  161. package/core/built/admin/assets/newsletter-detail-modal-0SCJ7Zpm.js +1 -0
  162. package/core/built/admin/assets/{newsletter-emails-CFeLlt4z.js → newsletter-emails-DKzwafuh.js} +1 -1
  163. package/core/built/admin/assets/newsletters-BRBb_uQC.js +1 -0
  164. package/core/built/admin/assets/note-DyGHtS9a.js +1 -0
  165. package/core/built/admin/assets/notifications-ZgWniKna.js +1 -0
  166. package/core/built/admin/assets/nql-BLpCn7qX.js +21 -0
  167. package/core/built/admin/assets/offers-container-modal-B-E8TIWr.js +1 -0
  168. package/core/built/admin/assets/{onboarding-B4YhlZ0i.js → onboarding-CzIsre-d.js} +1 -1
  169. package/core/built/admin/assets/onboarding-qg8Akovm.js +1 -0
  170. package/core/built/admin/assets/{onboarding-route-Dmc4IPm3.js → onboarding-route-CaavZulg.js} +1 -1
  171. package/core/built/admin/assets/overview-BW8GLeYi.js +1 -0
  172. package/core/built/admin/assets/overview-BkXZNzaZ.js +1 -0
  173. package/core/built/admin/assets/{page-header-BR_nbIPp.js → page-header-De0VzKBi.js} +1 -1
  174. package/core/built/admin/assets/pagemenu-B5KKCpbA.js +1 -0
  175. package/core/built/admin/assets/pages-jgaFm69d.js +1 -0
  176. package/core/built/admin/assets/pages-route-CIUAQxtY.js +1 -0
  177. package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +10 -0
  178. package/core/built/admin/assets/{pintura-modal-BR9hEvS8.js → pintura-modal-BZ2J9w3n.js} +1 -1
  179. package/core/built/admin/assets/portal-frame-B6Hr9wHc.js +1 -0
  180. package/core/built/admin/assets/portal-modal-D4ceei3t.js +1 -0
  181. package/core/built/admin/assets/post-analytics-header-BYCsT0GP.js +1 -0
  182. package/core/built/admin/assets/post-analytics-ot7f6pih.js +1 -0
  183. package/core/built/admin/assets/{post-analytics-provider-CLfKGWZy.js → post-analytics-provider-Bo1gmYaP.js} +1 -1
  184. package/core/built/admin/assets/{post-share-modal-Cl0NXRJr.js → post-share-modal-C-PaYZ_e.js} +1 -1
  185. package/core/built/admin/assets/posts-DuGazgTb.js +1 -0
  186. package/core/built/admin/assets/posts-list-screen-CBGGgjjj.js +2 -0
  187. package/core/built/admin/assets/posts-route-D6xmS7Vf.js +1 -0
  188. package/core/built/admin/assets/preferences-C5YJLp74.js +5 -0
  189. package/core/built/admin/assets/{preview-modal-C-BL-F9k.js → preview-modal-BfeFqi5y.js} +1 -1
  190. package/core/built/admin/assets/profile-B8mx2yAu.js +1 -0
  191. package/core/built/admin/assets/radio-group-DczlLKOn.js +1 -0
  192. package/core/built/admin/assets/{schemas-4UPic-oD.js → schemas-DppqmpeJ.js} +1 -1
  193. package/core/built/admin/assets/select-cb0t_TAJ.js +1 -0
  194. package/core/built/admin/assets/settings-DZqxR0Da.js +1 -0
  195. package/core/built/admin/assets/settings-DvfTNdHQ.js +4 -0
  196. package/core/built/admin/assets/{settings-breadcrumbs-CyP_9zTo.js → settings-breadcrumbs-DLzbRRSt.js} +1 -1
  197. package/core/built/admin/assets/share-modal-D2-Bz1_I.js +1 -0
  198. package/core/built/admin/assets/slack-modal-DYDTUria.js +1 -0
  199. package/core/built/admin/assets/{sort-button-Cc-Z96sA.js → sort-button-VVeQjjbu.js} +1 -1
  200. package/core/built/admin/assets/{source-icon-v6PUnmyM.js → source-icon-Ck5_5Kgq.js} +1 -1
  201. package/core/built/admin/assets/stats-Rjmk5owg.js +1 -0
  202. package/core/built/admin/assets/stats-view-BGGmkmgv.js +1 -0
  203. package/core/built/admin/assets/{step-1-DSRp2vBj.js → step-1-CsaBjeN4.js} +1 -1
  204. package/core/built/admin/assets/{step-2-COqv2g0u.js → step-2-D2vnxOOM.js} +1 -1
  205. package/core/built/admin/assets/{step-3-6W1NMVQc.js → step-3-wBoLdGEb.js} +2 -2
  206. package/core/built/admin/assets/{stripe-button-D2K42Uty.js → stripe-button-CDgLz0S0.js} +1 -1
  207. package/core/built/admin/assets/stripe-connect-modal-CSjMJetP.js +1 -0
  208. package/core/built/admin/assets/{table-B2pIKjVh.js → table-Do6iQ83Q.js} +1 -1
  209. package/core/built/admin/assets/{tabs-SaW_UT-Q.js → tabs-D2yWLMp_.js} +1 -1
  210. package/core/built/admin/assets/tag-detail-BhXlOsCa.js +2 -0
  211. package/core/built/admin/assets/tags-ldukRApe.js +1 -0
  212. package/core/built/admin/assets/testimonials-modal-CtnZBJKl.js +1 -0
  213. package/core/built/admin/assets/tier-detail-modal-BOs8e_G8.js +1 -0
  214. package/core/built/admin/assets/{toggle-group-EM9WpESu.js → toggle-group-ByUJsxwD.js} +1 -1
  215. package/core/built/admin/assets/{topic-filter-DY4gNHn2.js → topic-filter-BgC3g5_v.js} +1 -1
  216. package/core/built/admin/assets/{transistor-modal-CpyPG-MH.js → transistor-modal-Drr0SNfo.js} +1 -1
  217. package/core/built/admin/assets/{trend-badge-ByMkuAuH.js → trend-badge-6ye93YAW.js} +1 -1
  218. package/core/built/admin/assets/{unsplash-modal-Cv2Q6GtY.js → unsplash-modal-p6AoQoWp.js} +1 -1
  219. package/core/built/admin/assets/{use-analytics-data-CHvjMYuT.js → use-analytics-data-CWCMAESo.js} +1 -1
  220. package/core/built/admin/assets/use-check-theme-limit-error-B8bjF-gO.css +1 -0
  221. package/core/built/admin/assets/{use-check-theme-limit-error-Qv4SVXqw.js → use-check-theme-limit-error-Cw3WQHy8.js} +1 -1
  222. package/core/built/admin/assets/use-filter-params-BIni9taJ.js +1 -0
  223. package/core/built/admin/assets/use-growth-stats-DCVG3s9w.js +1 -0
  224. package/core/built/admin/assets/{use-limiter-cwJvsNBo.js → use-limiter-D2WRRx0H.js} +1 -1
  225. package/core/built/admin/assets/{use-pintura-config-CzTfnufz.js → use-pintura-config-h-J0Lvta.js} +1 -1
  226. package/core/built/admin/assets/{use-pintura-editor-BDBXWUYq.js → use-pintura-editor-BfN1UwzH.js} +1 -1
  227. package/core/built/admin/assets/use-post-referrers-Czg47m8s.js +1 -0
  228. package/core/built/admin/assets/use-reply-chain-data-ns0caK8k.js +1 -0
  229. package/core/built/admin/assets/{use-router-history-entry-Bg6BhBQQ.js → use-router-history-entry-uldn7zJO.js} +1 -1
  230. package/core/built/admin/assets/{use-setting-group-VM7FQwMY.js → use-setting-group-DpcuCUDg.js} +1 -1
  231. package/core/built/admin/assets/use-settings-navigation-CZjGrhsp.js +1 -0
  232. package/core/built/admin/assets/{use-simple-pagination-Dum6Irbs.js → use-simple-pagination-DzJWobPR.js} +1 -1
  233. package/core/built/admin/assets/{use-staff-users-cZg4ugOF.js → use-staff-users-Csipb-O0.js} +1 -1
  234. package/core/built/admin/assets/use-tinybird-query-CSnGXzZh.js +1 -0
  235. package/core/built/admin/assets/use-tinybird-token-DTOKRR7e.js +1 -0
  236. package/core/built/admin/assets/{use-unsaved-changes-guard-BAy0RANR.js → use-unsaved-changes-guard-CBzs-KPi.js} +1 -1
  237. package/core/built/admin/assets/{use-url-input-Df5QzNa7.js → use-url-input-DFr8lCbS.js} +1 -1
  238. package/core/built/admin/assets/user-detail-modal-B_iUClI6.js +1 -0
  239. package/core/built/admin/assets/users-Cg-OeGzC.js +1 -0
  240. package/core/built/admin/assets/{virtual-list-DEx8WgiO.js → virtual-list-BW-padMe.js} +1 -1
  241. package/core/built/admin/assets/web-C1v33ehA.js +2 -0
  242. package/core/built/admin/assets/web-C4BKzn2T.js +1 -0
  243. package/core/built/admin/assets/{zapier-modal-Cw3BTBUu.js → zapier-modal-BBFfI6Ml.js} +1 -1
  244. package/core/built/admin/index.html +17 -22
  245. package/core/frontend/apps/private-blogging/lib/views/private.hbs +44 -43
  246. package/core/frontend/helpers/cancel_link.js +2 -2
  247. package/core/frontend/helpers/pagination.js +2 -2
  248. package/core/frontend/helpers/social_accounts.js +2 -2
  249. package/core/frontend/public/ghost.css +1 -1
  250. package/core/frontend/public/ghost.min.css +1 -1
  251. package/core/frontend/services/sitemap/user-map-generator.js +9 -2
  252. package/core/server/api/endpoints/index.js +2 -2
  253. package/core/server/api/endpoints/mail.js +1 -1
  254. package/core/server/api/endpoints/{member-custom-fields.js → member-metafields.js} +27 -28
  255. package/core/server/api/endpoints/members.js +4 -4
  256. package/core/server/api/endpoints/posts.js +3 -3
  257. package/core/server/api/endpoints/utils/serializers/input/members.js +4 -7
  258. package/core/server/api/endpoints/utils/serializers/output/index.js +2 -2
  259. package/core/server/api/endpoints/utils/serializers/output/{member-custom-fields.js → member-metafields.js} +2 -4
  260. package/core/server/api/endpoints/utils/serializers/output/members.js +2 -4
  261. package/core/server/api/endpoints/utils/validators/input/invitations.js +0 -5
  262. package/core/server/api/endpoints/utils/validators/input/pages.js +1 -1
  263. package/core/server/api/endpoints/utils/validators/input/posts.js +1 -1
  264. package/core/server/data/importer/importers/data/data-importer.js +3 -3
  265. package/core/server/data/migrations/utils/migrations.js +1 -1
  266. package/core/server/lib/image/image-size.js +24 -0
  267. package/core/server/lib/package-json/parse.js +2 -2
  268. package/core/server/models/member.js +6 -17
  269. package/core/server/models/post.js +2 -2
  270. package/core/server/models/relations/authors.js +2 -16
  271. package/core/server/models/user.js +9 -2
  272. package/core/server/services/auth/passwordreset.js +13 -0
  273. package/core/server/services/comments/comments-controller.js +30 -9
  274. package/core/server/services/comments/comments-service.js +55 -5
  275. package/core/server/services/content-import/csv/formula.js +12 -0
  276. package/core/server/services/content-import/csv/index.js +6 -1
  277. package/core/server/services/content-import/csv/parse.js +27 -6
  278. package/core/server/services/content-import/csv/serialize.js +13 -0
  279. package/core/server/services/content-import/import/completion-email.js +164 -0
  280. package/core/server/services/content-import/import/errors-file.js +36 -0
  281. package/core/server/services/content-import/import/importer.js +160 -53
  282. package/core/server/services/content-import/import/local-media-url.js +63 -0
  283. package/core/server/services/content-import/import/media.js +254 -0
  284. package/core/server/services/content-import/import/post-data.js +0 -1
  285. package/core/server/services/content-import/import/post-link.js +11 -0
  286. package/core/server/services/content-import/import/post-repository.js +25 -3
  287. package/core/server/services/content-import/import/reader.js +9 -2
  288. package/core/server/services/content-import/import/report.js +34 -0
  289. package/core/server/services/content-import/import/row.js +0 -2
  290. package/core/server/services/content-import/import/schema.js +1 -0
  291. package/core/server/services/content-import/import/staged-file.js +29 -0
  292. package/core/server/services/content-import/import/store.js +25 -2
  293. package/core/server/services/content-import/index.js +52 -6
  294. package/core/server/services/content-import/jobs/content-csv-import-job.js +20 -0
  295. package/core/server/services/custom-redirects/redirect-config-parser.js +2 -2
  296. package/core/server/services/custom-redirects/redirects-service.js +1 -1
  297. package/core/server/services/custom-redirects/validation.js +1 -1
  298. package/core/server/services/email-address/email-address-parser.js +30 -38
  299. package/core/server/services/email-address/email-address-service.js +37 -4
  300. package/core/server/services/email-analytics/index.js +2 -7
  301. package/core/server/services/email-service/batch-sending-service.js +0 -4
  302. package/core/server/services/email-service/email-renderer.js +14 -4
  303. package/core/server/services/email-service/email-service-wrapper.js +0 -9
  304. package/core/server/services/email-service/mailgun-email-provider.js +20 -9
  305. package/core/server/services/gifts/email-templates/gift-delivery.hbs +3 -3
  306. package/core/server/services/gifts/gift-email-service.js +0 -1
  307. package/core/server/services/gifts/index.js +3 -3
  308. package/core/server/services/gifts/jobs/index.js +4 -4
  309. package/core/server/services/indexnow-ping/indexnow-ping-service.js +2 -2
  310. package/core/server/services/invitations/accept.js +4 -2
  311. package/core/server/services/jobs/job-service.js +0 -9
  312. package/core/server/services/jobs-service/register-job-handlers.js +21 -11
  313. package/core/server/services/mail/ghost-mailer.js +4 -4
  314. package/core/server/services/member-welcome-emails/service.js +7 -7
  315. package/core/server/services/members/api.js +1 -0
  316. package/core/server/services/members/import-export/csv/parse.js +0 -7
  317. package/core/server/services/members/import-export/import/completion-email.js +2 -5
  318. package/core/server/services/members/import-export/import/row.js +0 -3
  319. package/core/server/services/members/import-export/index.js +4 -11
  320. package/core/server/services/members/jobs/clean-expired-comped-job.js +7 -0
  321. package/core/server/services/members/jobs/clean-expired-comped-task.js +145 -0
  322. package/core/server/services/members/jobs/index.js +48 -24
  323. package/core/server/services/members/members-api/controllers/member-controller.js +11 -0
  324. package/core/server/services/members/members-api/controllers/router-controller.js +3 -6
  325. package/core/server/services/members/members-api/members-api.js +4 -6
  326. package/core/server/services/members/members-api/repositories/event-repository.js +0 -4
  327. package/core/server/services/members/members-api/services/member-bread-service.js +34 -62
  328. package/core/server/services/members/members-api/services/payments-service.js +1 -1
  329. package/core/server/services/members/service.js +1 -5
  330. package/core/server/services/members-custom-fields/bindings-service.js +2 -1
  331. package/core/server/services/members-custom-fields/codec.js +3 -4
  332. package/core/server/services/members-custom-fields/definitions-service.js +62 -10
  333. package/core/server/services/members-custom-fields/filter.js +75 -93
  334. package/core/server/services/members-custom-fields/key.js +2 -1
  335. package/core/server/services/members-custom-fields/models.js +1 -1
  336. package/core/server/services/members-custom-fields/serializers.js +3 -5
  337. package/core/server/services/members-custom-fields/values-service.js +50 -28
  338. package/core/server/services/mentions/mention-controller.js +23 -21
  339. package/core/server/services/mentions/process-webmention-job.js +16 -0
  340. package/core/server/services/mentions/service.js +8 -4
  341. package/core/server/services/route-settings/validation-errors.js +1 -1
  342. package/core/server/services/route-settings/yaml-parser.js +1 -1
  343. package/core/server/services/settings/settings-service.js +1 -8
  344. package/core/server/services/settings-helpers/settings-helpers.js +4 -6
  345. package/core/server/services/slack-ping/slack-ping-service.js +1 -1
  346. package/core/server/services/staff/staff-service-emails.js +2 -2
  347. package/core/server/services/stripe/config.js +14 -8
  348. package/core/server/services/stripe/service.js +10 -1
  349. package/core/server/services/stripe/services/checkout/completed-session.js +2 -2
  350. package/core/server/services/stripe/services/checkout/session-options.js +18 -15
  351. package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +26 -5
  352. package/core/server/services/stripe/stripe-api.js +2 -0
  353. package/core/server/services/stripe/stripe-service.js +20 -10
  354. package/core/server/services/stripe/webhook-controller.js +10 -0
  355. package/core/server/services/tier-checkout-config/codec.js +9 -5
  356. package/core/server/services/tier-checkout-config/models.js +9 -3
  357. package/core/server/services/tier-checkout-config/queries.js +4 -4
  358. package/core/server/services/tier-checkout-config/serializers.js +16 -10
  359. package/core/server/services/tier-checkout-config/service.js +13 -12
  360. package/core/server/services/update-check/index.js +13 -13
  361. package/core/server/services/update-check/jobs/update-check-job.js +7 -0
  362. package/core/server/services/update-check/update-check-service.js +2 -2
  363. package/core/server/web/admin/controller.js +1 -1
  364. package/core/server/web/api/endpoints/admin/routes.js +19 -16
  365. package/core/shared/config/env/config.testing-mysql.json +1 -1
  366. package/core/shared/labs.js +5 -2
  367. package/package.json +24 -23
  368. package/pnpm-lock.yaml +704 -69
  369. package/pnpm-workspace.yaml +8 -5
  370. package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
  371. package/core/built/admin/assets/Combination-5fYEzgbs.js +0 -41
  372. package/core/built/admin/assets/account-migration-DRhAehfw.js +0 -1
  373. package/core/built/admin/assets/activitypub/inbox-BluD2ucT.js +0 -1284
  374. package/core/built/admin/assets/activitypub/label-FHSh6ZAw.js +0 -16
  375. package/core/built/admin/assets/activitypub/layout-Cq4NG0Xr.js +0 -1
  376. package/core/built/admin/assets/activitypub/settings-DQDkr06X.js +0 -315
  377. package/core/built/admin/assets/add-integration-modal-BC0jExDZ.js +0 -1
  378. package/core/built/admin/assets/add-newsletter-modal-DchTkA7l.js +0 -1
  379. package/core/built/admin/assets/add-recommendation-modal-DMvaJZKp.js +0 -1
  380. package/core/built/admin/assets/alert-dialog-QhXzdHfc.js +0 -1
  381. package/core/built/admin/assets/analytics-No1DDY3A.js +0 -1
  382. package/core/built/admin/assets/automations-DpUNUdcZ.js +0 -1
  383. package/core/built/admin/assets/bluesky-sharing-Cjrv_f62.js +0 -1
  384. package/core/built/admin/assets/color-picker-BTY_NdEm.js +0 -3
  385. package/core/built/admin/assets/color-picker-field-CPlkzOH0.js +0 -1
  386. package/core/built/admin/assets/combobox-DrMtv_4P.js +0 -1
  387. package/core/built/admin/assets/command-ZdgYJpoI.js +0 -1
  388. package/core/built/admin/assets/comments-kidj60-h.js +0 -1
  389. package/core/built/admin/assets/confirmation-context-BhbmQQEl.js +0 -1
  390. package/core/built/admin/assets/custom-field-type-option-CsGIZk1J.js +0 -10
  391. package/core/built/admin/assets/custom-integration-modal-BY37O_9X.js +0 -1
  392. package/core/built/admin/assets/design-and-theme-modal-DUSKM4uC.js +0 -22
  393. package/core/built/admin/assets/dialog-B44iRwlc.js +0 -1
  394. package/core/built/admin/assets/dirty-confirm-dialog-BxgQgQ6H.js +0 -1
  395. package/core/built/admin/assets/dist-Cy8tfrp_.js +0 -1
  396. package/core/built/admin/assets/domain-Ca6KhoQt.js +0 -1
  397. package/core/built/admin/assets/dropzone-Bb-5zQTk.js +0 -5
  398. package/core/built/admin/assets/edit-profile-BdupLlus.js +0 -1
  399. package/core/built/admin/assets/editor-BP883Lpn.js +0 -8
  400. package/core/built/admin/assets/explore-FB-CimXw.js +0 -1
  401. package/core/built/admin/assets/feed-C1GxsmI2.js +0 -1
  402. package/core/built/admin/assets/filter-sources-D5n5bFA2.js +0 -1
  403. package/core/built/admin/assets/filters-DJEzkMUK.js +0 -1
  404. package/core/built/admin/assets/filters-MZXvdH5D.js +0 -1
  405. package/core/built/admin/assets/first-promoter-modal-CGTGLCr5.js +0 -1
  406. package/core/built/admin/assets/gift-link-modal-B6v0tnRN.js +0 -1
  407. package/core/built/admin/assets/growth-BGAJD1rs.js +0 -3
  408. package/core/built/admin/assets/growth-D6mhcx3q.js +0 -1
  409. package/core/built/admin/assets/history-modal-iKwUY3XR.js +0 -1
  410. package/core/built/admin/assets/index-DjQe-e5s.js +0 -4
  411. package/core/built/admin/assets/index-Dqf2x-ry.css +0 -1
  412. package/core/built/admin/assets/index.es-VihPwfeH.js +0 -1
  413. package/core/built/admin/assets/input--W-rCTrX.js +0 -1
  414. package/core/built/admin/assets/invite-user-modal-MdImLCaJ.js +0 -1
  415. package/core/built/admin/assets/koenig-loader-DYZpm6El.js +0 -2
  416. package/core/built/admin/assets/label-picker-cB51xl1r.js +0 -1
  417. package/core/built/admin/assets/layout-c_B_1hax.js +0 -1
  418. package/core/built/admin/assets/loading-indicator-BpFWTVgh.js +0 -1
  419. package/core/built/admin/assets/member-custom-fields-qs0dIkxM.js +0 -1
  420. package/core/built/admin/assets/member-detail-B6uec2a6.js +0 -1
  421. package/core/built/admin/assets/members-BQF3CqhI.js +0 -2
  422. package/core/built/admin/assets/moderation-DY4wF1Q3.js +0 -1
  423. package/core/built/admin/assets/navigation-modal-DX-gNF3X.js +0 -1
  424. package/core/built/admin/assets/newsletter-CyQA7m3m.js +0 -1
  425. package/core/built/admin/assets/newsletter-detail-modal-BDrptuxn.js +0 -1
  426. package/core/built/admin/assets/newsletters-DXuNmC42.js +0 -1
  427. package/core/built/admin/assets/note-Cgo2LCJ6.js +0 -1
  428. package/core/built/admin/assets/notifications-BC50AMku.js +0 -1
  429. package/core/built/admin/assets/offers-container-modal-DWycIMzT.js +0 -1
  430. package/core/built/admin/assets/onboarding-DGQuV7Ew.js +0 -1
  431. package/core/built/admin/assets/overview-CVbFtn-k.js +0 -1
  432. package/core/built/admin/assets/overview-YKj7SZaK.js +0 -1
  433. package/core/built/admin/assets/pages-B6vr9F_D.js +0 -1
  434. package/core/built/admin/assets/popover-CCy0h5rq.js +0 -1
  435. package/core/built/admin/assets/portal-frame-dc4XKr0e.js +0 -1
  436. package/core/built/admin/assets/portal-modal-BvvdF_B9.js +0 -1
  437. package/core/built/admin/assets/post-analytics-DX470WRG.js +0 -1
  438. package/core/built/admin/assets/post-analytics-header-CXpJmdDv.js +0 -1
  439. package/core/built/admin/assets/posts-KY3aUhVV.js +0 -1
  440. package/core/built/admin/assets/preferences-DO0UUWFp.js +0 -5
  441. package/core/built/admin/assets/profile-CxT-0l4d.js +0 -1
  442. package/core/built/admin/assets/radio-group-Bgz60i81.js +0 -1
  443. package/core/built/admin/assets/select-DuDUFdPq.js +0 -1
  444. package/core/built/admin/assets/settings-BjCii7BM.js +0 -1
  445. package/core/built/admin/assets/settings-b8kNzZSQ.js +0 -4
  446. package/core/built/admin/assets/share-modal-BV70mr9k.js +0 -1
  447. package/core/built/admin/assets/shim-ClF_m5ux.js +0 -1
  448. package/core/built/admin/assets/slack-modal-Be2_KK-z.js +0 -1
  449. package/core/built/admin/assets/stats-C4reGh9O.js +0 -1
  450. package/core/built/admin/assets/stats-view-DP9pQ62k.js +0 -1
  451. package/core/built/admin/assets/stripe-connect-modal-Z-UT_BGc.js +0 -1
  452. package/core/built/admin/assets/tag-detail-Dc0nTOtU.js +0 -2
  453. package/core/built/admin/assets/tags-BLaXBwnb.js +0 -1
  454. package/core/built/admin/assets/testimonials-modal-sFwRnNLh.js +0 -1
  455. package/core/built/admin/assets/tier-detail-modal-BCFpWwUS.js +0 -1
  456. package/core/built/admin/assets/use-filter-params-CAvfDvf1.js +0 -1
  457. package/core/built/admin/assets/use-growth-stats-D6mZXGhK.js +0 -1
  458. package/core/built/admin/assets/use-post-referrers-DbY-mzci.js +0 -1
  459. package/core/built/admin/assets/use-reply-chain-data-BeQwz8oF.js +0 -1
  460. package/core/built/admin/assets/use-settings-navigation-BbrSUVcf.js +0 -1
  461. package/core/built/admin/assets/use-tinybird-query-B1IMyAcv.js +0 -39
  462. package/core/built/admin/assets/use-tinybird-token-Bow0Zwn8.js +0 -1
  463. package/core/built/admin/assets/user-detail-modal-yipSoQfv.js +0 -1
  464. package/core/built/admin/assets/users-5msE1WMs.js +0 -1
  465. package/core/built/admin/assets/web-CKcXAu86.js +0 -1
  466. package/core/built/admin/assets/web-DR4TqM3E.js +0 -2
  467. package/core/server/services/jobs/worker-model-event-bridge.js +0 -149
  468. package/core/server/services/members/jobs/clean-expired-comped.js +0 -132
  469. package/core/server/services/stripe/services/checkout/allowed-countries.js +0 -267
  470. package/core/server/services/stripe/services/checkout/field-ports.js +0 -34
  471. package/core/server/services/tier-checkout-config/destinations.js +0 -17
  472. package/core/server/services/update-check/run-update-check.js +0 -63
@@ -1 +0,0 @@
1
- import{r as e}from"./hooks-CuEZV2-q.js";import{zr as t}from"./index-DjQe-e5s.js";var n=`TinybirdTokenResponseType`,r={refetchInterval:7200*1e3,refetchIntervalInBackground:!0,staleTime:6600*1e3},i=e({dataType:n,path:`/tinybird/token/`}),a=(e={})=>i({...r,...e}),o=!1,s=(e={})=>{let{enabled:n=!0}=e,r=t(),i=n&&r,s=a({enabled:i});if(!i)return{token:void 0,isLoading:!1,error:null,refetch:s.refetch};let c=s.data?.tinybird?.token,l=s.error;return!s.isLoading&&s.data&&!c&&!o&&(console.warn(`Tinybird analytics: No valid token received. Check your Tinybird configuration (workspaceId and adminToken must be non-empty strings).`),o=!0),{token:c&&typeof c==`string`?c:void 0,isLoading:s.isLoading,error:l,refetch:s.refetch}};export{s as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{b as r,g as i,m as a,n as o,p as s,r as c}from"./hooks-CuEZV2-q.js";import{n as l}from"./dist-Ndy-PuGN.js";import{t as u}from"./use-form-vRjI0Kwk.js";import{h as d,u as f}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as p}from"./router-provider-B0gZyiGJ.js";import{m,w as h}from"./dist-B3keLvjj.js";import{t as g}from"./text-BQDSDsKs.js";import{An as _,D as v,g as y,t as b,yt as x}from"./button-B2jcu6bk.js";import{i as S,n as C,r as ee,t as w}from"./tabs-SaW_UT-Q.js";import{t as T}from"./switch-CI4gLWqb.js";import{t as te}from"./dropzone-Bb-5zQTk.js";import{t as E}from"./input--W-rCTrX.js";import{i as D,n as O,o as k,s as A,t as j}from"./select-DuDUFdPq.js";import{o as ne,t as re}from"./use-settings-navigation-BbrSUVcf.js";import{i as M,n as N,o as P,r as F,t as I}from"./field-Cj8lmDOo.js";import{t as L}from"./textarea-DJ1Q5V39.js";import{_ as R,c as ie,d as z,g as ae,h as oe,m as se,o as B,p as ce,s as le,t as V,u as ue}from"./users-5msE1WMs.js";import{n as H,t as de}from"./use-limiter-cwJvsNBo.js";import{Jn as fe,Kn as pe,Sn as me,Xn as U,nr as he,t as ge,wr as _e}from"./index-DjQe-e5s.js";import{a as ve,c as ye,i as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./images-h8VZEQ9k.js";import{a as W,c as G,i as Ee,n as K,o as q,r as De,t as Oe}from"./use-staff-users-cZg4ugOF.js";import{t as J}from"./validator-Cr0sMKuW.js";import{n as ke}from"./confirmation-context-BhbmQQEl.js";import{n as Y}from"./global-data-context-gAMDH9u1.js";import{t as Ae}from"./use-upgrade-route-DhRSo7at.js";import{t as X}from"./api-keys-BLm2NDBh.js";import{t as je}from"./use-pintura-editor-BDBXWUYq.js";var Z=n(),Me=({user:e,setUserData:t})=>{let{config:n,settings:r}=Y(),i=_e(r||[],n||{});return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-grey-700 uppercase`,children:`Engagement`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`comment-notifications`,children:`Comments`}),(0,Z.jsx)(F,{children:`Every time a member comments on one of your posts`})]}),(0,Z.jsx)(T,{checked:!!e.comment_notifications,id:`comment-notifications`,onCheckedChange:n=>t({...e,comment_notifications:n})})]}),B(e)&&(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`recommendation-notifications`,children:`Recommendations`}),(0,Z.jsx)(F,{children:`Every time another publisher recommends you to their audience`})]}),(0,Z.jsx)(T,{checked:!!e.recommendation_notifications,id:`recommendation-notifications`,onCheckedChange:n=>t({...e,recommendation_notifications:n})})]})]})]}),B(e)&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-grey-700 uppercase`,children:`Members`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`free-member-signup-notifications`,children:`New signups`}),(0,Z.jsx)(F,{children:`Every time a new free member signs up`})]}),(0,Z.jsx)(T,{checked:!!e.free_member_signup_notification,id:`free-member-signup-notifications`,onCheckedChange:n=>t({...e,free_member_signup_notification:n})})]}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`paid-subscription-started-notifications`,children:`New paid members`}),(0,Z.jsx)(F,{children:`Every time a member starts a new paid subscription`})]}),(0,Z.jsx)(T,{checked:!!e.paid_subscription_started_notification,id:`paid-subscription-started-notifications`,onCheckedChange:n=>t({...e,paid_subscription_started_notification:n})})]}),(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`paid-subscription-canceled-notifications`,children:`Paid member cancellations`}),(0,Z.jsx)(F,{children:`Every time a member cancels their paid subscription`})]}),(0,Z.jsx)(T,{checked:!!e.paid_subscription_canceled_notification,id:`paid-subscription-canceled-notifications`,onCheckedChange:n=>t({...e,paid_subscription_canceled_notification:n})})]})]})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-grey-700 uppercase`,children:`Revenue`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`milestone-notifications`,children:`Milestones`}),(0,Z.jsx)(F,{children:i?`Occasional summaries of your audience & revenue growth`:`Occasional summaries of your audience growth`})]}),(0,Z.jsx)(T,{checked:!!e.milestone_notifications,id:`milestone-notifications`,onCheckedChange:n=>t({...e,milestone_notifications:n})})]}),i&&(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`donation-notifications`,children:`Tips & donations`}),(0,Z.jsx)(F,{children:`Every time you receive a one-time payment`})]}),(0,Z.jsx)(T,{checked:!!e.donation_notifications,id:`donation-notifications`,onCheckedChange:n=>t({...e,donation_notifications:n})})]}),i&&(0,Z.jsxs)(I,{orientation:`horizontal`,children:[(0,Z.jsxs)(N,{children:[(0,Z.jsx)(P,{htmlFor:`gift-subscription-notifications`,children:`Gift subscriptions`}),(0,Z.jsx)(F,{children:`Every time someone purchases or redeems a gift subscription`})]}),(0,Z.jsx)(T,{checked:!!e.gift_subscription_notifications,id:`gift-subscription-notifications`,onCheckedChange:n=>t({...e,gift_subscription_notifications:n})})]})]})]})]})]})},Ne=({user:e,setUserData:t})=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Me,{setUserData:t,user:e})}),Q=e(t(),1),Pe=[`1234567890`,`qwertyuiop`,`qwertzuiop`,`asdfghjkl;`,`abcdefghij`,`0987654321`,`1q2w3e4r5t`,`12345asdfg`],Fe=[`ghost`,`password`,`passw0rd`],Ie=e=>{let t={},n=!0,r=e.length/2;for(let n=0;n<e.length;n+=1)t[e[n]]?t[e[n]]+=1:t[e[n]]=1;for(let e in t)if(t[e]>=r)return n=!1,n;return n},Le=({user:e})=>{let{currentUser:t,config:n,siteData:i}=Y(),[a,o]=(0,Q.useState)(!1),[c,u]=(0,Q.useState)(``),[d,f]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)({}),y=(0,Q.useRef)(null),x=(0,Q.useRef)(null),S=(0,Q.useRef)(null),{mutateAsync:C}=R(),ee=s(),w=e.id===t.id,T=({password:t,confirmPassword:r})=>{if(w&&!c)return{oldPassword:`Your current password is required to set a new one`};if(t!==r)return{newPassword:`Your new passwords do not match`,confirmNewPassword:`Your new passwords do not match`};let a=n.blogUrl||window.location.host,o=i.title;a=a.replace(/^http(s?):\/\//,``);let s=a.match(/\/$/)?a:`${a}/`;if(o&&=o.trim().toLowerCase(),t.length<10)return{newPassword:`Password must be at least 10 characters long.`};t=t.toString();for(let e of Pe)if(e===t)return{newPassword:`Sorry, you cannot use an insecure password.`};if(t.toLowerCase()===e.email.toLowerCase())return{newPassword:`Sorry, you cannot use an insecure password.`};for(let e of Fe)if(t.toLowerCase().indexOf(e)>=0)return{newPassword:`Sorry, you cannot use an insecure password.`};return t.toLowerCase()===o||t.toLowerCase()===a||t.toLowerCase()===s||!Ie(t)?{newPassword:`Sorry, you cannot use an insecure password.`}:{}};(0,Q.useEffect)(()=>{h===`saved`&&setTimeout(()=>{g(``),o(!1)},2500)},[h]),(0,Q.useEffect)(()=>{a&&setTimeout(()=>{w?S.current?.focus():y.current?.focus()},100)},[a,w]);let te=()=>{o(!0)},D=async()=>{g(`saving`);let t=T({password:d,confirmPassword:p});if(v(t),Object.keys(t).length>0){g(``);return}try{await C({newPassword:d,confirmNewPassword:p,oldPassword:c,userId:e?.id}),g(`saved`)}catch(e){g(``),l.error(e instanceof r?e.message:`Couldn't update password. Please try again.`),ee(e,{withToast:!1})}},O=`Save password`;h===`saving`?O=`Saving...`:h===`saved`&&(O=`Saved`);let k=(0,Z.jsxs)(Z.Fragment,{children:[w&&(0,Z.jsxs)(I,{"data-invalid":!!_.oldPassword||void 0,children:[(0,Z.jsx)(P,{htmlFor:`old-password`,children:`Old password`}),(0,Z.jsx)(E,{ref:S,"aria-invalid":!!_.oldPassword||void 0,"data-testid":`old-password`,id:`old-password`,type:`password`,value:c,onChange:e=>u(e.target.value)}),_.oldPassword&&(0,Z.jsx)(M,{children:_.oldPassword})]}),(0,Z.jsxs)(I,{"data-invalid":!!_.newPassword||void 0,children:[(0,Z.jsx)(P,{htmlFor:`new-password`,children:`New password`}),(0,Z.jsx)(E,{ref:y,"aria-invalid":!!_.newPassword||void 0,"data-testid":`new-password`,id:`new-password`,type:`password`,value:d,onChange:e=>f(e.target.value)}),_.newPassword&&(0,Z.jsx)(M,{children:_.newPassword})]}),(0,Z.jsxs)(I,{"data-invalid":!!_.confirmNewPassword||void 0,children:[(0,Z.jsx)(P,{htmlFor:`confirm-password`,children:`Confirm new password`}),(0,Z.jsx)(E,{ref:x,"aria-invalid":!!_.confirmNewPassword||void 0,"data-testid":`confirm-password`,id:`confirm-password`,type:`password`,value:p,onChange:e=>m(e.target.value)}),_.confirmNewPassword&&(0,Z.jsx)(M,{children:_.confirmNewPassword})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex items-center justify-end gap-3`,children:[(0,Z.jsx)(b,{type:`button`,variant:`outline`,onClick:()=>{o(!1),u(``),f(``),m(``),v({})},children:`Cancel`}),(0,Z.jsx)(b,{"data-testid":`save-password-button`,type:`button`,onClick:()=>void D(),children:O})]})]});return(0,Z.jsx)(Z.Fragment,{children:a?k:(0,Z.jsxs)(`div`,{className:`relative flex flex-col`,children:[(0,Z.jsxs)(I,{className:`grow`,"data-disabled":!0,children:[(0,Z.jsx)(P,{htmlFor:`current-password`,children:`Password`}),(0,Z.jsx)(E,{id:`current-password`,type:`password`,value:`••••••••••••`,disabled:!0})]}),(0,Z.jsx)(b,{className:`absolute top-0 right-0 h-auto p-0 hover:bg-transparent`,"data-testid":`change-password-button`,size:`sm`,type:`button`,variant:`ghost`,onClick:te,children:`Change`})]})})},Re=({user:e,setUserData:t})=>{let{data:{roles:n}={}}=H(),r=ge(`superEditors`),i=[{hint:`Can write and edit their own posts, but cannot publish them.`,label:`Contributor`,value:`contributor`},{hint:`Can create, edit and publish their own posts, but can’t modify others.`,label:`Author`,value:`author`},{hint:`Can edit and publish any posts, and manage Authors and Contributors.`,label:`Editor`,value:`editor`},{hint:`Trusted user who has full access to all content, settings, and user management.`,label:`Administrator`,value:`administrator`}];if(r&&(i=i.map(e=>e.value===`editor`?{...e,label:`Editor (beta mode)`,value:`super editor`,hint:`Can invite and manage other Authors and Contributors, as well as edit and publish any posts on the site. Can manage members and moderate comments.`}:e)),z(e)){let e={label:`Owner`,value:`owner`};return(0,Z.jsxs)(I,{children:[(0,Z.jsx)(P,{children:`Role`}),(0,Z.jsxs)(j,{value:e.value,disabled:!0,children:[(0,Z.jsx)(k,{"aria-label":`Role`,children:(0,Z.jsx)(A,{})}),(0,Z.jsx)(O,{children:(0,Z.jsx)(D,{value:e.value,children:e.label})})]}),(0,Z.jsxs)(F,{children:[`This user is the owner of the site.`,` `,(0,Z.jsx)(`a`,{href:`https://ghost.org/help/transfer-publication-ownership/`,rel:`noopener noreferrer`,target:`_blank`,children:`Transfer ownership`}),` `,`first to change their role.`]})]})}let a=e.roles[0].name.toLowerCase(),o=i.find(e=>e.value.toLowerCase()===a)?.label;return(0,Z.jsxs)(I,{children:[(0,Z.jsx)(P,{children:`Role`}),(0,Z.jsxs)(j,{value:a,onValueChange:r=>{let i=n?.find(e=>e.name.toLowerCase()===r.toLowerCase());i&&t?.({...e,roles:[i]})},children:[(0,Z.jsx)(k,{"aria-label":`Role`,"data-testid":`role-select`,children:(0,Z.jsx)(A,{children:o})}),(0,Z.jsx)(O,{children:i.map(e=>(0,Z.jsx)(D,{value:e.value,children:(0,Z.jsxs)(`span`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{children:e.label}),(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.hint})]})},e.value))})]})]})},$=c({dataType:`StaffTokenResponseType`,path:`/users/me/token/`}),ze=o({path:()=>`/users/me/token/`,method:`PUT`}),Be=()=>{let{refetch:e}=$({enabled:!1}),t=s(),{confirm:n}=ke(),[r,i]=(0,Q.useState)(``),{mutateAsync:a}=ze();return(0,Q.useEffect)(()=>{(async()=>{let t=await e();t?.data?.apiKey&&i(`${t.data.apiKey.id}:${t.data.apiKey.secret}`)})()},[e]),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(g,{as:`h6`,className:`mb-2 text-base`,weight:`semibold`,children:`Staff access token`}),(0,Z.jsx)(X,{hasLabel:!1,keys:[{id:`staff-access-token`,text:r||``,onRegenerate:()=>{n({title:`Regenerate your Staff Access Token`,prompt:`You can regenerate your Staff Access Token any time, but any scripts or applications using it will need to be updated.`,okLabel:`Regenerate your Staff Access Token`,okVariant:`destructive`,onOk:async e=>{try{let t=await a([]);i(`${t.apiKey.id}:${t.apiKey.secret}`),e?.remove()}catch(e){t(e)}}})}}]})]})},Ve=({errors:e,clearError:t,user:n,setUserData:r})=>{let{currentUser:i,siteData:a}=Y(),o=me(a);return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(I,{"data-invalid":!!e?.email||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-email`,children:`Email`}),(0,Z.jsx)(E,{"aria-invalid":!!e?.email||void 0,id:`staff-email`,maxLength:191,value:n.email,onChange:e=>r({...n,email:e.target.value}),onKeyDown:()=>t(`email`)}),e?.email?(0,Z.jsx)(M,{children:e.email}):(0,Z.jsx)(F,{children:`Used for notifications`})]}),(0,Z.jsx)(Le,{user:n}),B(i)&&(0,Z.jsx)(Re,{setUserData:r,user:n}),(0,Z.jsxs)(I,{"data-invalid":!!e?.name||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-name`,children:`Full name`}),(0,Z.jsx)(E,{"aria-invalid":!!e?.name||void 0,id:`staff-name`,maxLength:191,value:n.name,onChange:e=>r({...n,name:e.target.value}),onKeyDown:()=>t(`name`)}),e?.name?(0,Z.jsx)(M,{children:e.name}):(0,Z.jsx)(F,{children:`Use your real name so people can recognize you`})]}),(0,Z.jsxs)(I,{children:[(0,Z.jsx)(P,{htmlFor:`staff-slug`,children:`Slug`}),(0,Z.jsx)(E,{id:`staff-slug`,maxLength:191,value:n.slug,onChange:e=>r({...n,slug:e.target.value})}),(0,Z.jsxs)(F,{children:[o,`author/`,n.slug]})]}),(0,Z.jsxs)(I,{"data-invalid":!!e?.location||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-location`,children:`Location`}),(0,Z.jsx)(E,{"aria-invalid":!!e?.location||void 0,id:`staff-location`,maxLength:65535,value:n.location||``,onChange:e=>r({...n,location:e.target.value}),onKeyDown:()=>t(`location`)}),e?.location?(0,Z.jsx)(M,{children:e.location}):(0,Z.jsx)(F,{children:`Where in the world do you live?`})]}),(0,Z.jsxs)(I,{"data-invalid":!!e?.bio||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-bio`,children:`Bio`}),(0,Z.jsx)(L,{"aria-invalid":!!e?.bio||void 0,id:`staff-bio`,maxLength:65535,value:n.bio||``,onChange:e=>{r({...n,bio:e.target.value})},onKeyDown:()=>t(`bio`)}),e?.bio?(0,Z.jsx)(M,{children:e.bio}):(0,Z.jsxs)(F,{children:[`Recommended: `,m(250),` characters. You‘ve used`,` `,(0,Z.jsx)(`span`,{className:`font-bold`,children:m(n.bio?.length||0)})]})]}),n.id===i.id&&(0,Z.jsx)(Be,{})]})},He=e=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Ve,{...e})}),Ue=({errors:e,clearError:t,validateField:n,user:r,setUserData:i})=>{let[a,o]=(0,Q.useState)(()=>Object.fromEntries(K.map(e=>{let t=r[e.key];return[e.key,e.toDisplayValue(t)]})));return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(I,{"data-invalid":!!e?.website||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-website`,children:`Website`}),(0,Z.jsx)(E,{"aria-invalid":!!e?.website||void 0,"data-testid":`website-input`,id:`staff-website`,maxLength:2e3,placeholder:`https://example.com`,value:r.website||``,onChange:e=>{i({...r,website:e.target.value})},onKeyDown:()=>t(`website`)}),e?.website&&(0,Z.jsx)(M,{children:e.website})]}),K.map(s=>(0,Z.jsxs)(I,{"data-invalid":!!e?.[s.key]||void 0,children:[(0,Z.jsx)(P,{htmlFor:`staff-${s.key}`,children:s.staffTitle}),(0,Z.jsx)(E,{"aria-invalid":!!e?.[s.key]||void 0,"data-testid":s.testId,id:`staff-${s.key}`,maxLength:2e3,placeholder:s.placeholder,value:a[s.key],onBlur:e=>{if(n(s.key,e.target.value)){let{displayValue:t,storedValue:n}=W(s.key,e.target.value);o(e=>({...e,[s.key]:t})),i({...r,[s.key]:n})}},onChange:e=>{o(t=>({...t,[s.key]:e.target.value}))},onKeyDown:()=>t(s.key)}),e?.[s.key]&&(0,Z.jsx)(M,{children:e[s.key]})]},s.key))]})},We=e=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Ue,{...e})}),Ge=e(J(),1),Ke={name:({name:e})=>{let t=``;return e||(t=`Name is required`),e&&e.length>191&&(t=`Name is too long`),t},email:({email:e})=>Ge.default.isEmail(e||``)?``:`Enter a valid email address`,url:({url:e})=>!e||Ge.default.isURL(e,{require_tld:!1})?``:`Enter a valid URL`,bio:({bio:e})=>!e||e.length<=250?``:`Bio is too long`,location:({location:e})=>!e||e.length<=150?``:`Location is too long`,website:({website:e})=>!e||Ge.default.isURL(e)&&e.length<=2e3?``:`Enter a valid URL`,...Object.fromEntries(K.map(e=>[e.key,t=>Ee(e.key,t[e.key])]))},qe=({user:e,onDeletingUserChange:t})=>{let{updateRoute:n}=re(),r=p(),a=Ae(),o=f(),c=e=>{let t=e.split(`/`).pop()||``;return t===`social-links`||t===`email-notifications`?t:`profile`},{ownerUser:d}=Oe(),{currentUser:m}=Y(),T=s(),{confirm:E,showLimit:D}=ke(),{formState:O,setFormState:k,saveState:A,handleSave:j,updateForm:M,errors:N,setErrors:P,clearError:F,okProps:I}=u({initialState:e,savingDelay:500,savedDelay:500,onValidate:t=>Object.entries(Ke).reduce((n,[r,i])=>{if(De.includes(r)&&t[r]===e[r])return n;let a=i(t);return a&&(n[r]=a),n},{}),onSave:async t=>{let r=(await H?.(t))?.users?.[0];if(r&&(k(()=>r),r.slug!==e.slug)){let e=c(o.pathname),t=e===`profile`?``:`/${e}`;n({route:`staff/${r.slug}${t}`,replace:!0})}},onSaveError:T}),L=e=>M(()=>e),R=(e,t)=>{let n=Ke[e]?.({[e]:t});return n?(P({...N,[e]:n}),!1):(F(e),!0)},{mutateAsync:oe}=xe(),{mutateAsync:H}=se(),{mutateAsync:me}=ce(),{mutateAsync:ge}=ae(),_e=de(),W=je(),G=(0,Q.useCallback)(()=>{V(m)?n(`staff`):r(`/`)},[m,r,n]),Ee=async e=>{if(e.status===`inactive`&&e.roles[0].name!==`Contributor`)try{await _e?.errorIfWouldGoOverLimit(`staff`)}catch(e){if(e instanceof i){D({formSheet:!0,prompt:e.message||`Your current plan doesn't support more users.`,onOk:()=>n({route:a,isExternal:!0})});return}else throw e}let t=`This user will no longer be able to log in but their posts will be kept.`;e.status===`inactive`&&(t=`This user will be able to log in again and will have the same permissions they had previously.`),E({title:`Are you sure you want to suspend this user?`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`strong`,{children:`WARNING:`}),` `,t]}),okLabel:e.status===`inactive`?`Un-suspend`:`Suspend`,okRunningLabel:e.status===`inactive`?`Un-suspending...`:`Suspending...`,okVariant:`destructive`,onOk:async t=>{let n={...e,status:e.status===`inactive`?`active`:`inactive`};try{await H(n),k(()=>n),t?.remove(),l.success(e.status===`inactive`?`User un-suspended`:`User suspended`)}catch(e){T(e)}}})},K=(n,{owner:r})=>{E({title:`Are you sure you want to delete this user?`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`mb-3`,children:[(0,Z.jsx)(`span`,{className:`font-bold`,children:n.name||n.email}),` will be permanently deleted and all their posts will be automatically assigned to`,` `,(0,Z.jsx)(`span`,{className:`font-bold`,children:r.name}),`.`]}),(0,Z.jsxs)(`p`,{children:[`To make these easy to find in the future, each post will be given an internal tag of`,` `,(0,Z.jsxs)(`span`,{className:`font-bold`,children:[`#`,e.slug]})]})]}),okLabel:`Delete user`,okVariant:`destructive`,onOk:async e=>{t(!0);try{await me(n?.id),e?.remove(),G(),setTimeout(()=>l.success(`User deleted`),100)}catch(e){t(!1),T(e)}}})},q=()=>{E({title:`Transfer Ownership`,prompt:`Are you sure you want to transfer the ownership of this blog? You will not be able to undo this action.`,okLabel:`Yep — I'm sure`,okVariant:`destructive`,onOk:async t=>{try{await ge(e.id),t?.remove(),l.success(`Ownership transferred`)}catch(e){T(e)}}})},J=async(e,t)=>{try{let n=Te(await oe({file:t}));switch(e){case`cover_image`:M(e=>({...e,cover_image:n}));break;case`profile_image`:M(e=>({...e,profile_image:n}));break}}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),T(t)}},X=e=>{switch(e){case`cover_image`:M(e=>({...e,cover_image:``}));break;case`profile_image`:M(e=>({...e,profile_image:``}));break}},Me=B(m)||ue(m)&&ie(e),Pe=z(m)&&le(O)&&O.status!==`inactive`,Fe=O.id!==m.id&&(B(m)&&!z(e)||ue(m)&&ie(e)),Ie=O.status===`inactive`?`Un-suspend user`:`Suspend user`,Le=`h-8 bg-surface-inverse px-3 text-surface-inverse-foreground opacity-80 hover:bg-surface-inverse/90 hover:text-surface-inverse-foreground hover:opacity-100`,Re=O.status===`inactive`?` (Suspended)`:``,$=!V(m),ze=`mx-auto w-full max-w-[536px]`,[Be,Ve]=(0,Q.useState)(c(o.pathname));return(0,Z.jsx)(ne,{animate:!$,backDrop:!$,buttonsDisabled:I.disabled,cancelLabel:`Close`,dirty:A===`unsaved`,footerClassName:$?`mx-auto w-full max-w-[calc(536px+5rem)]`:void 0,hideXOnMobile:!0,okLabel:I.label||`Save`,okVariant:I.variant,size:$?`bleed`:`md`,stickyFooter:!0,testId:`user-detail-modal`,width:$?`full`:600,onClose:G,onOk:async()=>{await j({fakeWhenUnchanged:!0})},children:(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`relative ${$?`-mx-10 -mt-10`:`-mx-8 -mt-8 rounded-t`}`,children:(0,Z.jsx)(`div`,{className:h(`flex flex-wrap items-end justify-between gap-8 p-8`,O.cover_image&&`bg-cover bg-center`,$&&O.cover_image&&`min-h-[30vmin]`),style:{backgroundImage:O.cover_image?`url(${O.cover_image})`:`none`},children:(0,Z.jsxs)(`div`,{className:h(`flex w-full flex-col gap-2`,$&&ze),children:[(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-start justify-between gap-3`,children:[(0,Z.jsx)(`div`,{children:(0,Z.jsx)(Ce,{className:`-ml-1 size-20 overflow-visible rounded-full`,children:O.profile_image?(0,Z.jsxs)(ye,{className:`rounded-full`,children:[(0,Z.jsx)(we,{"data-testid":`profile-image-preview`,id:`avatar`,src:O.profile_image}),(0,Z.jsxs)(ve,{className:`top-1 right-1`,children:[W.isEnabled&&(0,Z.jsx)(be,{"aria-label":`Edit profile image`,className:`rounded-full`,onClick:()=>W.openEditor({image:O.profile_image||``,handleSave:async e=>J(`profile_image`,e)}),children:(0,Z.jsx)(x,{})}),(0,Z.jsx)(be,{"aria-label":`Remove profile image`,className:`rounded-full`,onClick:()=>X(`profile_image`),children:(0,Z.jsx)(v,{})})]})]}):(0,Z.jsx)(Se,{className:`rounded-full bg-surface-inverse text-surface-inverse-foreground opacity-80 hover:opacity-100`,inputId:`avatar`,inputTestId:`profile-image-upload`,onDropAccepted:e=>void J(`profile_image`,e[0]),children:(0,Z.jsx)(y,{className:`size-8 text-surface-inverse-foreground`})})})}),(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-start gap-3`,children:[O.cover_image?(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-end justify-end gap-4`,children:[(0,Z.jsx)(`img`,{alt:``,className:`hidden`,"data-testid":`cover-image-preview`,src:O.cover_image}),W.isEnabled&&(0,Z.jsx)(b,{className:Le,type:`button`,onClick:()=>W.openEditor({image:O.cover_image||``,handleSave:async e=>J(`cover_image`,e)}),children:`Edit cover image`}),(0,Z.jsx)(b,{className:Le,type:`button`,onClick:()=>X(`cover_image`),children:`Delete cover image`})]}):(0,Z.jsx)(te,{className:`h-8`,inputId:`cover-image`,inputTestId:`cover-image-upload`,variant:`button`,onDropAccepted:e=>void J(`cover_image`,e[0]),children:`Upload cover image`}),Me&&(0,Z.jsx)(`div`,{className:`z-10`,children:(0,Z.jsxs)(pe,{children:[(0,Z.jsx)(he,{asChild:!0,children:(0,Z.jsxs)(`button`,{className:h(`flex h-8 cursor-pointer items-center justify-center rounded px-3`,O.cover_image?`bg-[rgba(0,0,0,0.75)] opacity-80 hover:opacity-100`:`border border-grey-300 bg-transparent text-black dark:border-grey-800 dark:text-white`),type:`button`,children:[(0,Z.jsx)(`span`,{className:`sr-only`,children:`Actions`}),(0,Z.jsx)(_,{className:h(`size-5`,O.cover_image&&`text-white`)})]})}),(0,Z.jsxs)(fe,{align:`end`,className:`z-[9999]`,children:[Pe&&(0,Z.jsx)(U,{onSelect:q,children:`Make owner`}),(0,Z.jsx)(U,{onSelect:()=>{n(`history/view/${O.id}`)},children:`View user activity`}),Fe&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(U,{onSelect:()=>{Ee(O)},children:Ie}),(0,Z.jsx)(U,{className:`text-destructive focus:text-destructive`,onSelect:()=>{K(e,{owner:d})},children:`Delete user`})]})]})]})})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(g,{as:`h3`,className:h(`break-words md:text-2xl md:break-normal`,O.cover_image?`text-white`:`text-foreground`),leading:`heading`,size:`xl`,weight:`bold`,children:[e.name,Re]}),(0,Z.jsx)(`span`,{className:h(`text-md font-medium capitalize`,O.cover_image?`text-white`:`text-black dark:text-white`),children:e.roles[0].name.toLowerCase()})]})]})})}),(0,Z.jsx)(`div`,{className:h(`mt-6 flex flex-col`,$&&ze),children:(0,Z.jsxs)(w,{value:Be,variant:`underline`,onValueChange:t=>{let r=t===`profile`?``:`/${t}`;n(`staff/${e.slug}${r}`),Ve(t)},children:[(0,Z.jsxs)(ee,{children:[(0,Z.jsx)(S,{title:`Profile`,value:`profile`,children:`Profile`}),(0,Z.jsx)(S,{title:`Social Links`,value:`social-links`,children:`Social Links`}),(0,Z.jsx)(S,{title:`Email Notifications`,value:`email-notifications`,children:`Email Notifications`})]}),(0,Z.jsx)(C,{className:`pt-4`,value:`profile`,children:(0,Z.jsx)(He,{clearError:F,errors:N,setUserData:L,user:O,validateField:R})}),(0,Z.jsx)(C,{className:`pt-4`,value:`social-links`,children:(0,Z.jsx)(We,{clearError:F,errors:N,setUserData:L,user:O,validateField:R})}),(0,Z.jsx)(C,{className:`pt-4`,value:`email-notifications`,children:(0,Z.jsx)(Ne,{setUserData:L,user:O})})]})})]})})},Je=()=>{let{slug:e}=d(),{currentUser:t}=Y(),{updateRoute:n}=re(),r=p(),i=s(),[o,c]=(0,Q.useState)(!1),u=t.slug===e,{data:f,error:m}=oe(e||``,{enabled:!u&&!!e,defaultErrorHandler:!1}),h=u?t:f?.users?.[0],g=m instanceof a&&m.response?.status===404;(0,Q.useEffect)(()=>{m&&!g&&i(m)},[m,g,i]);let _=!u&&!!e&&!h&&(g||f!==void 0),v=(0,Q.useRef)(void 0);h&&(v.current=h);let y=h||(_?void 0:v.current),b=_?e??null:null,x=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{!b||o||x.current===b||(x.current=b,l.error(`User not found`),V(t)?n({route:`staff`,replace:!0}):r(`/`))},[b,o,t,r,n]),y?(0,Z.jsx)(qe,{user:y,onDeletingUserChange:c}):null};export{Je as default};
@@ -1 +0,0 @@
1
- import{i as e,n as t,s as n,t as r}from"./hooks-CuEZV2-q.js";import{r as i,t as a}from"./update-queries-C4CnvJaW.js";var o=n,s=r({dataType:o,path:`/users/`,defaultSearchParams:{limit:`100`,include:`roles`},defaultNextPageParams:(e,t)=>({...t,page:(e.meta?.pagination.next||1).toString()}),returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.users),r=t[t.length-1].meta;return{users:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),c=e({dataType:o,path:e=>`/users/slug/${e}/`,defaultSearchParams:{include:`roles`}}),l=t({method:`PUT`,path:e=>`/users/${e.id}/`,body:e=>({users:[e]}),searchParams:()=>({include:`roles`}),updateQueries:{dataType:o,emberUpdateType:`createOrUpdate`,update:i(`users`)}}),u=t({method:`DELETE`,path:e=>`/users/${e}/`,updateQueries:{dataType:o,emberUpdateType:`delete`,update:a(`users`)}}),d=t({method:`PUT`,path:()=>`/users/password/`,body:({newPassword:e,confirmNewPassword:t,userId:n,oldPassword:r})=>({password:[{user_id:n,oldPassword:r||``,newPassword:e,ne2Password:t}]})}),f=t({method:`PUT`,path:()=>`/users/owner/`,body:e=>({owner:[{id:e}]}),updateQueries:{dataType:o,emberUpdateType:`createOrUpdate`,update:i(`users`)}});function p(e){return e.roles.some(e=>e.name===`Owner`)}function m(e){return e.roles.some(e=>e.name===`Administrator`)}function h(e){return e.roles.some(e=>e.name===`Editor`)||e.roles.some(e=>e.name===`Super Editor`)}function g(e){return e.roles.some(e=>e.name===`Super Editor`)}function _(e){return e.roles.some(e=>e.name===`Author`)}function v(e){return e.roles.some(e=>e.name===`Contributor`)}function y(e){return _(e)||v(e)}function b(e){return p(e)||m(e)||h(e)}function x(e){return p(e)||m(e)||g(e)}function S(e){return p(e)||m(e)||h(e)}function C(e){return p(e)||m(e)||h(e)}function w(e){return p(e)||m(e)}function T(e){return p(e)||m(e)}export{d as _,S as a,y as c,p as d,s as f,f as g,c as h,x as i,v as l,l as m,T as n,w as o,u as p,C as r,m as s,b as t,h as u};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{t as r}from"./use-tinybird-query-B1IMyAcv.js";import{g as i}from"./stats-C4reGh9O.js";import{_ as a,h as o}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as s,t as c}from"./router-provider-B0gZyiGJ.js";import{_ as l,h as u,m as d}from"./dist-B3keLvjj.js";import{a as f}from"./heading-Dh5SFVjL.js";import{C as p}from"./shade-app-CcS3f8MZ-vwURazk8.js";import{L as m,mn as ee,t as h}from"./button-B2jcu6bk.js";import{r as te}from"./trend-badge-ByMkuAuH.js";import{r as g,t as _}from"./tabs-SaW_UT-Q.js";import{a as ne}from"./filters-MZXvdH5D.js";import{t as re}from"./loading-indicator-BpFWTVgh.js";import{a as v,i as y,n as b,o as x,r as S,t as C}from"./card--VNbfgo3.js";import{a as w,c as T,i as E,l as D,n as O,o as k,r as A,s as j,t as M,u as ie}from"./data-list-CA2jYGPq.js";import{t as ae}from"./empty-indicator-D9QdpuNX.js";import{a as N,i as oe,n as se,o as P,r as ce,s as F}from"./use-filter-params-CAvfDvf1.js";import{An as I,B as le,Dn as L,En as R,H as ue,Jn as z,Kn as B,On as V,Rn as H,Tn as U,Xn as W,kn as de,kr as fe,nr as pe,z as me,zr as he}from"./index-DjQe-e5s.js";import{t as G}from"./date-range-select-DD2RKkgB.js";import{a as K,c as ge,i as _e,n as q,o as ve,r as ye}from"./chart-helpers-Fo3bUL3K.js";import{n as J,r as Y,t as be}from"./kpi-tabs-CojDs-Qz.js";import{t as xe}from"./use-analytics-data-CHvjMYuT.js";import{n as Se,t as Ce}from"./audience-9mwU5TW6.js";import{r as we,t as Te}from"./post-analytics-header-CXpJmdDv.js";import{n as Ee}from"./post-analytics-context-D0Mw-Pmv.js";import{n as X,r as De,t as Z}from"./kpi-helpers-PueTKuA6.js";var Q=e(t(),1),$=n(),Oe=({data:e,range:t})=>{let[n]=a(),[r,i]=(0,Q.useState)(n.get(`tab`)||`visits`),o=X[r],s=ge(e||[],t,o.dataKey,`sum`)?.map(e=>{let t=Number(e[o.dataKey]);return{date:String(e.date),value:t,formattedValue:o.formatter(t),label:o.label}}),c=Z(e),l=ye(t,e||[],{fieldName:o.dataKey});return(0,$.jsx)(C,{children:(0,$.jsx)(b,{children:(0,$.jsxs)(_,{defaultValue:r,variant:`kpis`,children:[(0,$.jsxs)(g,{className:`-mx-6 hidden grid-cols-2 md:visible! md:grid!`,children:[(0,$.jsx)(J,{value:`visits`,onClick:()=>{i(`visits`)},children:(0,$.jsx)(Y,{color:X.visits.color,label:`Unique visitors`,value:c.visits})}),(0,$.jsx)(J,{value:`views`,onClick:()=>{i(`views`)},children:(0,$.jsx)(Y,{color:X.views.color,label:`Total views`,value:c.views})})]}),(0,$.jsxs)(B,{children:[(0,$.jsx)(pe,{className:`md:hidden`,asChild:!0,children:(0,$.jsxs)(be,{children:[r===`visits`&&(0,$.jsx)(Y,{color:`var(--chart-blue)`,label:`Unique visitors`,value:c.visits}),r===`views`&&(0,$.jsx)(Y,{color:`var(--chart-teal)`,label:`Total views`,value:c.views})]})}),(0,$.jsxs)(z,{align:`end`,className:`w-56`,children:[(0,$.jsx)(W,{onClick:()=>i(`visits`),children:`Unique visitors`}),(0,$.jsx)(W,{onClick:()=>i(`views`),children:`Total views`})]})]}),(0,$.jsx)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:(0,$.jsx)(te,{className:`-mb-3 aspect-auto h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:o.color,data:s,id:o.dataKey,range:l,showHours:!0,syncId:`overview-charts`})})]})})})},ke=e(P(),1);ke.registerLocale(N);var Ae=e=>me[e]||ke.getName(e,`en`,{select:`alias`})||`Unknown`,je=e=>({"UNITED STATES":`US`,"UNITED STATES OF AMERICA":`US`,USA:`US`,"UNITED KINGDOM":`GB`,UK:`GB`,"GREAT BRITAIN":`GB`,NETHERLANDS:`NL`})[e.toUpperCase()]||(e.length>2?e.substring(0,2):e),Me=({tableHeader:e,data:t,onLocationClick:n})=>(0,$.jsxs)(M,{children:[e&&(0,$.jsxs)(w,{children:[(0,$.jsx)(E,{children:`Country`}),(0,$.jsx)(E,{children:`Visitors`})]}),(0,$.jsx)(A,{children:t.map(e=>{let t=Ae(`${e.location}`)||`Unknown`,r=n&&e.location!==`Unknown`,i=e.location?e.location.toLowerCase():`unknown`;return(0,$.jsxs)(ie,{className:r?`cursor-pointer`:``,"data-testid":`location-row-${i}`,onClick:r?()=>n(e.location):void 0,children:[(0,$.jsx)(O,{style:{width:`${e.percentage?Math.round(e.percentage*100):0}%`}}),(0,$.jsx)(k,{className:`group-hover/data:max-w-[calc(100%-140px)]`,children:(0,$.jsxs)(`div`,{className:`flex items-center space-x-3 overflow-hidden`,title:t||`Unknown`,children:[(0,$.jsx)(F,{countryCode:`${je(e.location)}`,fallback:(0,$.jsx)(`span`,{className:`flex h-[14px] w-[22px] items-center justify-center rounded-[2px] bg-black text-white`,children:(0,$.jsx)(p.SkullAndBones,{className:`size-3`})})}),(0,$.jsx)(`div`,{className:`truncate font-medium`,children:t})]})}),(0,$.jsxs)(j,{children:[(0,$.jsx)(T,{children:d(Number(e.visits))}),(0,$.jsx)(D,{children:u(e.percentage)})]})]},e.location||`unknown`)})})]}),Ne=({data:e,isLoading:t,onLocationClick:n})=>{let r=e.slice(0,10);return(0,$.jsx)($.Fragment,{children:t?``:(0,$.jsx)($.Fragment,{children:e&&e.length>0&&(0,$.jsxs)(C,{className:`group/datalist`,"data-testid":`locations-card`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,$.jsxs)(v,{className:`p-0`,children:[(0,$.jsx)(x,{children:`Locations`}),(0,$.jsx)(S,{children:`Where are the readers of this post`})]}),(0,$.jsx)(f,{className:`mr-2`,children:`Visitors`})]}),(0,$.jsxs)(b,{className:`overflow-hidden`,children:[(0,$.jsx)(H,{}),(0,$.jsx)(Me,{data:r,tableHeader:!1,onLocationClick:n})]}),e.length>10&&(0,$.jsx)(y,{children:(0,$.jsxs)(U,{children:[(0,$.jsx)(I,{asChild:!0,children:(0,$.jsxs)(h,{variant:`outline`,children:[`View all `,(0,$.jsx)(m,{})]})}),(0,$.jsxs)(R,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,$.jsxs)(V,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,$.jsx)(de,{children:`Top locations`}),(0,$.jsx)(L,{children:`Where are the readers of this post`})]}),(0,$.jsx)(`div`,{className:`group/datalist`,children:(0,$.jsx)(Me,{data:e,tableHeader:!0,onLocationClick:n})})]})]})})]})})})},Pe=()=>{let e=s(),{postId:t}=o(),{statsConfig:n,isLoading:a,site:u}=xe(),{range:d,setRange:f,post:p,isPostLoading:m}=Ee(),{data:h}=fe(),te=he(),g=(0,Q.useRef)(null),{filters:_,setFilters:v}=ce({supportedFields:se,trackingSource:`post-analytics`}),y=(0,Q.useMemo)(()=>Ce(_.find(e=>e.field===`audience`)?.values),[_]);(0,Q.useEffect)(()=>{!m&&p?.email_only&&e(`/posts/analytics/${t}`)},[m,p?.email_only,e,t]);let x=(0,Q.useMemo)(()=>{if(!p?.published_at)return le.allTime.value;let e=ve(p.published_at),{startDate:t,endDate:n}=K(d);return n.diff(t,`days`)+1>e?e:d},[p?.published_at,d]),{startDate:S,endDate:w,timezone:T}=K(x),E=(0,Q.useCallback)(()=>{let e=l(g.current);e&&e.scrollTo({top:0,behavior:`smooth`})},[]),D=(0,Q.useMemo)(()=>{let e={};return _.forEach(t=>{let n=t.field,r=t.values;if(n===`audience`)return;let i=r&&r.length>0&&r[0]!==null&&r[0]!==void 0,a=n===`source`&&r?.[0]===``;if(i&&(r[0]!==``||a)){let t=String(r[0]);e[n]=t}}),e},[_]),O=(0,Q.useCallback)((e,t)=>{v(n=>n.find(t=>t.field===e)?n.map(n=>n.field===e?{...n,values:[t]}:n):[...n,ne(e,`is`,[t])]),E()},[v,E]),k=(0,Q.useCallback)(e=>O(`location`,e),[O]),A=(0,Q.useCallback)(e=>O(`source`,e),[O]),j=(0,Q.useMemo)(()=>{let e={site_uuid:n?.id||``,date_from:q(S),date_to:q(w),timezone:T,member_status:Se(y),post_uuid:``,...D};return!m&&p?.uuid?{...e,post_uuid:p.uuid}:e},[m,p,n?.id,S,w,T,y,D]),{data:M,loading:ie}=r({endpoint:`api_kpis`,statsConfig:n,params:j}),{data:N,loading:P}=r({endpoint:`api_top_locations`,statsConfig:n,params:j}),{data:F,loading:I}=r({endpoint:`api_top_sources`,statsConfig:n,params:j}),L=(0,Q.useMemo)(()=>N?.reduce((e,t)=>e+Number(t.visits),0)||0,[N]),R=(0,Q.useMemo)(()=>F?F.reduce((e,t)=>e+Number(t.visits||0),0):0,[F]),z=u.url,B=u.icon,V=(0,Q.useMemo)(()=>{let e=N?.map(e=>({location:String(e.location),visits:Number(e.visits),percentage:L>0?Number(e.visits)/L:0,isUnknown:ue.includes(String(e.location))}))||[],t=e.filter(e=>!e.isUnknown),n=e.filter(e=>e.isUnknown),r=n.length>0?[{location:`Unknown`,visits:n.reduce((e,t)=>e+t.visits,0),percentage:n.reduce((e,t)=>e+t.percentage,0)}]:[];return[...t,...r]},[N,L]),H=a||m||ie||P||I,U=Z(M),W=_.length>0;return h?.settings&&!te?(0,$.jsx)(c,{to:`/posts/analytics/${t}`,replace:!0}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(Te,{currentTab:`Web`,children:[W&&(0,$.jsx)(i,{children:(0,$.jsx)(G,{range:d,onRangeChange:f})}),(0,$.jsxs)(i,{className:`${W?`mt-0! [grid-area:subactions] lg:mt-[25px]!`:`[grid-area:actions]`}`,children:[(0,$.jsx)(oe,{filters:_,postUuid:p?.uuid,range:d,onChange:v}),!W&&(0,$.jsx)(G,{range:d,onRangeChange:f})]})]}),(0,$.jsx)(we,{ref:g,children:H?(0,$.jsx)(C,{className:`size-full`,variant:`plain`,children:(0,$.jsx)(b,{className:`size-full items-center justify-center`,children:(0,$.jsx)(re,{})})}):M&&M.length!==0&&U.visits!==`0`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Oe,{data:M,range:x}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-6 lg:grid lg:grid-cols-2`,children:[(0,$.jsx)(Ne,{data:V,isLoading:P,onLocationClick:k}),(0,$.jsx)(De,{data:F,range:x,siteIcon:B,siteUrl:z,totalVisitors:R,onSourceClick:A})]})]}):(0,$.jsx)(`div`,{className:`grow`,children:(0,$.jsx)(ae,{className:`h-full`,description:`Try adjusting filters to see more data.`,title:`No visitors ${_e(d)}`,children:(0,$.jsx)(ee,{strokeWidth:1.5})})})})]})};export{Pe as default};