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
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{p as r}from"./hooks-CuEZV2-q.js";import{w as i}from"./dist-B3keLvjj.js";import{t as a}from"./inline-BWSs_VzR.js";import{$n as o,D as s,ft as c,t as l,v as u}from"./button-eNMKQWXr.js";import{i as d,n as f,r as p,t as m}from"./tabs-D2yWLMp_.js";import{t as h}from"./switch-CI4gLWqb.js";import{o as g,t as _}from"./use-settings-navigation-CZjGrhsp.js";import{i as v,o as y,t as b}from"./field-Dihp5p18.js";import{i as x,n as S,t as C}from"./use-url-input-DFr8lCbS.js";import{$n as w,$r as T,Cr as E,Tr as D,jr as O,t as k,ti as A,xr as j}from"./index-6MkPdCtr.js";import{a as M,c as N,i as P,n as ee,o as te,r as ne,s as F,t as I}from"./images-scfkWZiK.js";import{t as L}from"./validator-Cr0sMKuW.js";import{n as re}from"./global-data-context-gAMDH9u1.js";import{t as ie}from"./use-setting-group-DpcuCUDg.js";import{t as R}from"./format-url-Ju4k5CIm.js";var ae=e(L(),1),z=e(t(),1),B=[`public`,`members`,`paid`,`public_free`,`public_paid`,`public_only`,`free_members`,`none`],V=e=>!!(e&&!e.match(/^\s*$/)),H=e=>!!(V(e.label)||e.url!==`/`||V(e.icon)),U=e=>({...e,icon:e.icon||``,visibility:e.visibility||`public`,errors:{}}),W=({url:e,label:t,icon:n,visibility:r})=>({url:e.trim(),label:t.trim(),...n?.trim()?{icon:n.trim()}:{},...r&&r!==`public`?{visibility:r}:{}}),G=({items:e,setItems:t})=>{let n=S({items:(0,z.useMemo)(()=>e.map(U),[e]),setItems:(0,z.useCallback)(e=>{t(e.map(W))},[t]),blank:{url:`/`,label:``,icon:``,visibility:`public`,errors:{}},canAddNewItem:H}),r=new RegExp(/^(\/|#|[a-zA-Z0-9-]+:)/),i=e=>{let t={},n=V(e.label),i=V(e.icon);return!n&&!i&&(t.label=`You must specify a label or icon`),(!e.url||e.url.match(/\s/)||!ae.default.isURL(e.url,{require_protocol:!0})&&!e.url.match(r))&&(t.url=`You must specify a valid URL or relative path`),e.visibility&&!B.includes(e.visibility)&&(t.visibility=`You must specify a valid visibility`),t},a=(e,t)=>{let n={...e.errors};return V(t.icon)&&(n.icon=void 0,n.label=void 0),{...e,...t,errors:n}},o=(e,t)=>{let r=n.items.find(t=>t.id===e);n.updateItem(e,a(r.item,t))},s=()=>{let e=i(n.newItem);Object.values(e).some(e=>e)?n.setNewItem({...n.newItem,errors:e}):n.addItem()},c=e=>{n.removeItem(e)},l=(e,t)=>{n.moveItem(e,t)},u=(e,t)=>{if(e===`new`)n.setNewItem({...n.newItem,errors:{...n.newItem.errors,[t]:void 0}});else{let r=n.items.find(t=>t.id===e).item;n.updateItem(e,{...r,errors:{...r.errors,[t]:void 0}})}};return{items:n.items.map(({item:e,id:t})=>({...e,id:t})),updateItem:o,addItem:s,removeItem:c,moveItem:l,newItem:{...n.newItem,id:`new`},setNewItem:e=>n.setNewItem(a(n.newItem,e)),clearError:u,validate:()=>{let e=!0;if(n.items.forEach(({item:t,id:r})=>{let a=i(t);Object.values(a).some(e=>e)&&(e=!1,n.updateItem(r,{...t,errors:a}))}),H(n.newItem)){let t=i(n.newItem);Object.values(t).some(e=>e)&&(e=!1,n.setNewItem({...n.newItem,errors:t}))}return e}}},K=n(),q=({idPrefix:e,item:t,clearError:n,updateItem:r,uploadIcon:i})=>(0,K.jsx)(ne,{className:`size-[38px]`,children:t.icon?(0,K.jsxs)(N,{children:[(0,K.jsx)(F,{alt:``,className:`size-[38px] rounded-lg object-contain p-2.5`,src:t.icon}),(0,K.jsx)(M,{className:`inset-0 flex items-center justify-center`,children:(0,K.jsx)(P,{"aria-label":`Remove navigation icon`,className:`size-full rounded-lg bg-black/75 p-0 text-white hover:bg-black/90 hover:text-white`,onClick:()=>{n?.(`icon`),r?.({icon:``})},children:(0,K.jsx)(s,{className:`size-4`})})})]}):(0,K.jsx)(te,{accept:{"image/*":[]},"aria-label":`Upload navigation icon`,className:`size-[38px] rounded-lg border-0 bg-muted p-0 text-muted-foreground hover:bg-muted hover:text-foreground`,id:`${e}-icon-${t.id}`,inputAriaLabel:`Upload navigation icon`,onDropAccepted:([e])=>void i?.(e).then(e=>{e&&r?.({icon:e})}),children:(0,K.jsx)(u,{"aria-hidden":`true`,className:`size-4`})})}),J={public:`Everyone`,members:`Members only`,paid:`Paid-members only`,public_free:`Public + free`,public_paid:`Public + paid`,public_only:`Public only`,free_members:`Free only`,none:`Hidden`},oe=B.map(e=>({value:e,label:J[e]})),se=[{key:`public-visitors`,label:`Public visitors`},{key:`free-members`,label:`Free members`},{key:`paid-members`,label:`Paid members`}],ce={public:{"public-visitors":!0,"free-members":!0,"paid-members":!0},members:{"public-visitors":!1,"free-members":!0,"paid-members":!0},paid:{"public-visitors":!1,"free-members":!1,"paid-members":!0},public_free:{"public-visitors":!0,"free-members":!0,"paid-members":!1},public_paid:{"public-visitors":!0,"free-members":!1,"paid-members":!0},public_only:{"public-visitors":!0,"free-members":!1,"paid-members":!1},free_members:{"public-visitors":!1,"free-members":!0,"paid-members":!1},none:{"public-visitors":!1,"free-members":!1,"paid-members":!1}},le=[`paid`,`public_paid`],ue={"000":`none`,"001":`paid`,"010":`free_members`,"011":`members`,100:`public_only`,101:`public_paid`,110:`public_free`,111:`public`},de=e=>oe.some(t=>t.value===e)?e:`public`,fe=e=>J[e],pe=(e,t)=>({...ce[e],...t?{}:{"paid-members":!1}}),me=e=>ue[[e[`public-visitors`],e[`free-members`],e[`paid-members`]].map(e=>e?`1`:`0`).join(``)],he=({idPrefix:e,item:t,clearError:n,updateItem:r,showPaidVisibility:i})=>{let a=de(t.visibility),s=fe(a),c=`${e}-visibility-${t.id}`,l=`${c}-error`,u=pe(a,i),d=e=>{n?.(`visibility`),r?.({visibility:e})},f=(e,t)=>{let n={...u,[e]:t};i||(n[`paid-members`]=n[`free-members`]);let r=me(n);!i&&le.includes(r)||d(r)};return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`label`,{className:`sr-only`,id:c,children:`Visibility`}),(0,K.jsxs)(j,{children:[(0,K.jsx)(O,{asChild:!0,children:(0,K.jsxs)(`button`,{"aria-describedby":t.errors.visibility?l:void 0,"aria-invalid":!!t.errors.visibility,"aria-labelledby":c,className:`flex h-[38px] w-full items-center justify-between rounded-lg border-transparent bg-gray-100 px-3 text-md text-black hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:outline-hidden dark:bg-gray-900 dark:text-white dark:hover:bg-gray-900`,"data-testid":`navigation-item-visibility`,type:`button`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:s}),(0,K.jsx)(o,{"aria-hidden":`true`,className:`size-4 opacity-80`})]})}),(0,K.jsx)(E,{align:`end`,className:`z-[300] w-[190px] rounded-lg p-2`,sideOffset:6,children:(0,K.jsx)(`div`,{className:`flex flex-col`,children:se.filter(e=>e.key!==`paid-members`||i).map(e=>{let t=u[e.key];return(0,K.jsxs)(D,{className:`flex cursor-pointer items-center justify-between gap-3 rounded-md px-2 py-1.5 text-sm text-gray-900 dark:text-gray-100`,onSelect:n=>{n.preventDefault(),f(e.key,!t)},children:[(0,K.jsx)(`span`,{children:e.label}),(0,K.jsx)(h,{"aria-label":e.label,checked:t,size:`sm`,onCheckedChange:t=>f(e.key,t),onClick:e=>e.stopPropagation()})]},e.key)})})})]}),t.errors.visibility&&(0,K.jsx)(`div`,{className:`mt-1 text-xs text-red`,id:l,role:`alert`,children:t.errors.visibility})]})},ge=`flex w-full items-start gap-3 [--control-height:38px]`,Y={icon:`w-[38px] shrink-0`,label:`min-w-0 flex-[0.75]`,url:`min-w-0 flex-[1.25]`,visibility:`w-[190px] shrink-0`,action:`w-10 shrink-0`},X=`pt-1`,Z=({baseUrl:e,idPrefix:t,item:n,updateItem:r,uploadIcon:o,addItem:s,clearError:c,labelPlaceholder:l,unstyled:u,textFieldClasses:d,action:f,showIcon:p,showPaidVisibility:m,showVisibility:h,className:g,..._})=>{let x=C({baseUrl:e,nullable:!0,value:n.url,onChange:e=>r?.({url:e||``})});return(0,K.jsxs)(`div`,{className:i(ge,g),"data-testid":`navigation-item-editor`,..._,children:[p&&(0,K.jsx)(`div`,{className:i(`flex flex-col`,Y.icon,`pt-1`),children:(0,K.jsx)(q,{clearError:c,idPrefix:t,item:n,updateItem:r,uploadIcon:o})}),(0,K.jsx)(`div`,{className:i(`flex`,Y.label,X),children:(0,K.jsxs)(b,{className:`grow`,"data-invalid":!!n.errors.label||void 0,children:[(0,K.jsx)(y,{className:`sr-only`,htmlFor:`navigation-label-${n.id}`,children:`Label`}),(0,K.jsx)(w,{"aria-invalid":!!n.errors.label||void 0,className:i(u&&`border-0 bg-transparent shadow-none focus-visible:ring-0`,d),id:`navigation-label-${n.id}`,placeholder:l,value:n.label,onChange:e=>r?.({label:e.target.value}),onKeyDown:e=>{r?.({label:e.target.value}),e.key===`Enter`&&(e.preventDefault(),s?.()),n.errors.label&&c?.(`label`)}}),n.errors.label&&(0,K.jsx)(v,{children:n.errors.label})]})}),(0,K.jsx)(`div`,{className:i(`flex`,Y.url,X),children:(0,K.jsxs)(b,{className:`grow`,"data-invalid":!!n.errors.url||void 0,children:[(0,K.jsx)(y,{className:`sr-only`,htmlFor:`navigation-url-${n.id}`,children:`URL`}),(0,K.jsx)(w,{"aria-invalid":!!n.errors.url||void 0,className:d,id:`navigation-url-${n.id}`,value:x.displayValue,onBlur:x.commitValue,onChange:e=>x.setDisplayValue(e.target.value),onFocus:x.handleFocus,onKeyDown:t=>{x.handleKeyDown(t);let n=R(t.target.value,e,!0);r?.({url:n.save||``})},onKeyUp:t=>{if(t.key===`Enter`){t.preventDefault();let n=R(t.target.value,e,!0);r?.({url:n.save||``}),s?.()}n.errors.url&&c?.(`url`)}}),n.errors.url&&(0,K.jsx)(v,{children:n.errors.url})]})}),h&&(0,K.jsx)(`div`,{className:i(`flex flex-col`,Y.visibility,`pt-1`),children:(0,K.jsx)(he,{clearError:c,idPrefix:t,item:n,showPaidVisibility:m,updateItem:r})}),f&&(0,K.jsx)(a,{align:`center`,className:i(`h-[calc(var(--control-height)+0.25rem)] shrink-0 pt-1`,Y.action),children:f})]})},Q=`text-xs font-semibold text-muted-foreground`,$=({baseUrl:e,idPrefix:t,navigation:n,showIcon:r,showPaidVisibility:i,showVisibility:o,uploadIcon:u})=>(0,K.jsxs)(`div`,{className:`w-full pt-2`,children:[(r||o)&&(0,K.jsxs)(`div`,{className:`-mb-1 flex w-full items-center gap-3`,children:[(0,K.jsx)(`div`,{className:`h-7 w-4 shrink-0`}),(0,K.jsxs)(`div`,{className:`flex w-full items-start gap-3 [--control-height:38px]`,children:[r&&(0,K.jsx)(`div`,{className:`${Y.icon} ${Q}`,children:`Icon`}),(0,K.jsx)(`div`,{className:`${Y.label} ${Q}`,children:`Label`}),(0,K.jsx)(`div`,{className:`${Y.url} ${Q}`,children:`URL`}),o&&(0,K.jsx)(`div`,{className:`${Y.visibility} ${Q}`,children:`Visibility`}),(0,K.jsx)(`div`,{className:Y.action})]})]}),(0,K.jsx)(x,{dragHandleClass:`translate-y-0.5`,getDragHandleLabel:e=>`Reorder ${e.label||`navigation item`}`,items:n.items,itemSeparator:!1,renderItem:a=>(0,K.jsx)(Z,{action:(0,K.jsx)(l,{"aria-label":`Delete navigation item`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>n.removeItem(a.id),children:(0,K.jsx)(s,{})}),baseUrl:e,clearError:e=>n.clearError(a.id,e),idPrefix:t,item:a,showIcon:r,showPaidVisibility:i,showVisibility:o,updateItem:e=>n.updateItem(a.id,e),uploadIcon:u}),onMove:n.moveItem}),(0,K.jsxs)(a,{align:`start`,className:`mt-5 border-t pt-5`,gap:`md`,children:[(0,K.jsx)(a,{align:`center`,className:`h-[calc(var(--control-height)+0.5rem)] shrink-0 translate-y-0.5 pt-2`,children:(0,K.jsx)(c,{className:`size-4 text-muted-foreground`})}),(0,K.jsx)(Z,{action:(0,K.jsx)(l,{"aria-label":`Add navigation item`,"data-testid":`add-button`,size:`icon`,type:`button`,variant:`ghost`,onClick:n.addItem,children:(0,K.jsx)(c,{})}),addItem:n.addItem,baseUrl:e,className:`mt-1`,clearError:e=>n.clearError(n.newItem.id,e),"data-testid":`new-navigation-item`,idPrefix:t,item:n.newItem,labelPlaceholder:`New item label`,showIcon:r,showPaidVisibility:i,showVisibility:o,updateItem:n.setNewItem,uploadIcon:u})]})]});function _e(){let{updateRoute:e}=_(),t=r(),{mutateAsync:n}=ee(),{config:i}=re(),{localSettings:a,updateSetting:o,saveState:s,handleSave:c,siteData:l}=ie(),[u,h,v]=A(a,[`navigation`,`secondary_navigation`,`members_signup_access`]),y=k(`navigationIcons`),b=y,x=y&&v!==`none`,S=T(a,i),C=(0,z.useMemo)(()=>JSON.parse(u||`[]`),[u]),w=(0,z.useMemo)(()=>JSON.parse(h||`[]`),[h]),E=(0,z.useCallback)(e=>{o(`navigation`,JSON.stringify(e))},[o]),D=(0,z.useCallback)(e=>{o(`secondary_navigation`,JSON.stringify(e))},[o]),O=G({items:C,setItems:E}),j=G({items:w,setItems:D}),[M,N]=(0,z.useState)(`primary-nav`),P=async e=>{try{return I(await n({file:e}))}catch(e){let n=e;n.response?.status===415&&(n.message=`Unsupported file type`),t(n)}};return(0,K.jsx)(g,{buttonsDisabled:s===`saving`,cancelLabel:`Close`,dirty:a.some(e=>e.dirty),okLabel:s===`saving`?`Saving...`:`Save`,scrolling:!0,size:`lg`,stickyFooter:!0,testId:`navigation-modal`,title:`Navigation`,onClose:()=>{e(`navigation`)},onOk:async()=>{O.validate()&&j.validate()&&(await c(),e(`navigation`))},children:(0,K.jsx)(`div`,{className:`mt-6 mb-1`,children:(0,K.jsxs)(m,{value:M,variant:`underline`,onValueChange:N,children:[(0,K.jsxs)(p,{children:[(0,K.jsx)(d,{value:`primary-nav`,children:`Primary`}),(0,K.jsx)(d,{value:`secondary-nav`,children:`Secondary`})]}),(0,K.jsx)(f,{value:`primary-nav`,children:(0,K.jsx)($,{baseUrl:l.url,idPrefix:`primary-navigation`,navigation:O,showIcon:b,showPaidVisibility:S,showVisibility:x,uploadIcon:P})}),(0,K.jsx)(f,{value:`secondary-nav`,children:(0,K.jsx)($,{baseUrl:l.url,idPrefix:`secondary-navigation`,navigation:j,showIcon:b,showPaidVisibility:S,showVisibility:x,uploadIcon:P})})]})})})}export{_e as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{i as r}from"./hooks-CuEZV2-q.js";import{n as i}from"./dist-Ndy-PuGN.js";import{c as a}from"./posts-DuGazgTb.js";import{o}from"./post-helpers-C5OQMBoi.js";import{h as s}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as c}from"./router-provider-B0gZyiGJ.js";import{b as l,g as u,h as d,m as f}from"./dist-B3keLvjj.js";import{a as p}from"./heading-Dh5SFVjL.js";import{A as m,L as h,Sr as g,Zn as _,k as v,t as y,xt as b}from"./button-eNMKQWXr.js";import{i as x,r as S,t as C}from"./tabs-D2yWLMp_.js";import{n as ee}from"./skeleton-Ce9GgUpf.js";import{a as w,i as te,n as T,o as E,r as D,t as O}from"./card--VNbfgo3.js";import{c as k,l as A,n as ne,o as re,r as ie,s as ae,t as oe,u as se}from"./data-list-CA2jYGPq.js";import{i as ce,n as le,o as j,r as M,t as N}from"./use-simple-pagination-DzJWobPR.js";import{$n as ue,Jn as P,M as F,P as de,Un as I,Yn as L,Zn as fe,ci as pe,j as R,si as me}from"./index-6MkPdCtr.js";import{i as he,r as ge}from"./stats-Rjmk5owg.js";import{a as z,i as B,n as V,r as H,t as U}from"./kpi-card-DFafD1qq.js";import{r as _e,t as ve}from"./post-analytics-header-BYCsT0GP.js";import{n as ye}from"./post-analytics-context-D0Mw-Pmv.js";import{a as be,i as xe,n as W,o as G,r as K}from"./link-helpers-MVDdnFCY.js";var q=r({dataType:`FeedbackResponseType`,path:e=>`/feedback/${e}/`}),J=e(t(),1),Y=(e,t)=>{let{data:n,isLoading:r,error:i}=q(e,{searchParams:{limit:`50`,...t===void 0?{}:{score:t.toString()}}});return{feedback:(0,J.useMemo)(()=>n?.feedback?n.feedback:[],[n]),isLoading:r,error:i}},X=n(),Se=({feedbackStats:e})=>{let{postId:t}=s(),n=c(),[r,i]=(0,J.useState)(`positive`),{feedback:a,isLoading:o}=Y(t||``,+(r===`positive`)),{totalPages:f,paginatedData:g,nextPage:_,previousPage:b,hasNextPage:k,hasPreviousPage:A}=N({data:a,itemsPerPage:9}),ne=o;return(0,X.jsxs)(O,{children:[(0,X.jsxs)(w,{className:`pb-5`,children:[(0,X.jsx)(E,{children:`Feedback`}),(0,X.jsx)(D,{children:`What did your readers think?`})]}),e.totalFeedback>0?(0,X.jsxs)(T,{className:`pb-3`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,X.jsx)(C,{className:`pb-3`,defaultValue:`positive`,value:r,variant:`button`,onValueChange:e=>i(e),children:(0,X.jsxs)(S,{className:`gap-1`,children:[(0,X.jsx)(x,{className:`h-7`,value:`positive`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,X.jsx)(v,{size:14,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`More like this`}),(0,X.jsx)(`span`,{className:`font-semibold tracking-tight`,children:d(e.positiveFeedback/e.totalFeedback)})]})}),(0,X.jsx)(x,{className:`h-7`,value:`negative`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,X.jsx)(m,{size:14,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`Less like this`}),(0,X.jsx)(`span`,{className:`font-semibold tracking-tight`,children:d(e.negativeFeedback/e.totalFeedback)})]})})]})}),(0,X.jsx)(p,{className:`mr-2 mb-3 lg:hidden xl:visible! xl:block!`,children:`Date`})]}),(0,X.jsx)(I,{}),ne?(0,X.jsx)(ee,{className:`mt-3`,lines:3}):g&&g.length>0?(0,X.jsx)(`div`,{className:`flex w-full flex-col py-3`,children:g.map(e=>(0,X.jsxs)(`div`,{className:`flex h-10 w-full items-center justify-between gap-3 rounded-sm border-none px-2 text-sm hover:cursor-pointer hover:bg-accent`,onClick:()=>{n(`/members/${e.member.id}`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,X.jsxs)(P,{className:`size-7`,children:[e.member?.avatar_image&&(0,X.jsx)(`img`,{className:`absolute aspect-square size-full`,src:e.member?.avatar_image}),(0,X.jsx)(L,{className:`text-white`,style:{backgroundColor:`${l(R(e.member),`45`,`55`)}`},children:F(e.member)})]}),R(e.member)]}),(0,X.jsx)(`div`,{className:`whitespace-nowrap text-muted-foreground`,children:u(e.created_at)})]},e.id))}):(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center py-8 text-center text-sm text-muted-foreground`,children:(0,X.jsxs)(`div`,{children:[`No `,r===`positive`?`positive`:`negative`,` feedback yet`]})})]}):(0,X.jsxs)(T,{className:`flex grow flex-col items-center justify-center text-center text-sm text-muted-foreground`,children:[(0,X.jsx)(`div`,{children:`No members have given feedback yet`}),(0,X.jsx)(`div`,{children:`When someone does, you'll see their response here.`})]}),e.totalFeedback>0&&(0,X.jsx)(te,{className:`grow-0`,children:(0,X.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,X.jsxs)(y,{variant:`outline`,onClick:()=>{let e=`(feedback.post_id:'${t}'+feedback.score:1)`,i=`(feedback.post_id:'${t}'+feedback.score:0)`,a=`${encodeURIComponent(e)}&post=${t}`,o=`${encodeURIComponent(i)}&post=${t}`;n(`/members?filter=${r===`positive`?a:o}`)},children:[`View all`,(0,X.jsx)(h,{})]}),f>1&&(0,X.jsx)(le,{className:`pb-0`,children:(0,X.jsxs)(M,{children:[(0,X.jsx)(j,{disabled:!A,onClick:b}),(0,X.jsx)(ce,{disabled:!k,onClick:_})]})})]})})]})},Ce=e=>{let{data:t,isLoading:n}=a(e),{data:r,isLoading:i}=a(e,{searchParams:{include:`count.positive_feedback,count.negative_feedback`}}),o=(0,J.useMemo)(()=>t?.posts[0],[t]),s=(0,J.useMemo)(()=>r?.posts[0],[r]),c=(0,J.useMemo)(()=>o?{sent:o.email?.email_count||0,opened:o.email?.opened_count||0,clicked:o.count?.clicks||0,openedRate:o.email?.opened_count?o.email.opened_count/o.email.email_count:0,clickedRate:o.count?.clicks&&o.email?.email_count?o.count.clicks/o.email.email_count:0}:{sent:0,opened:0,clicked:0,openedRate:0,clickedRate:0},[o]),l=(0,J.useMemo)(()=>{if(!s?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=s.count.positive_feedback||0,t=s.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[s]),u=(0,J.useMemo)(()=>o?.newsletter?.id,[o]),{data:d,isLoading:f}=ge({searchParams:u?{newsletter_id:u}:{},enabled:!!u}),p=(0,J.useMemo)(()=>d?.stats?d.stats.map(e=>e.post_id):[],[d]),{data:m,isLoading:h}=he({searchParams:u&&p.length>0?{newsletter_id:u,post_ids:p.join(`,`)}:{},enabled:!!u&&p.length>0}),g=(0,J.useMemo)(()=>{if(!d?.stats)return;let e=d.stats,t=m?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...d,stats:r}},[d,m]),_=f||h,{data:v,isLoading:y,refetch:b}=be({searchParams:{filter:`post_id:'${e}'`}}),x=(0,J.useMemo)(()=>{if(!g||!g.stats)return{openRate:0,clickRate:0};let e=g.stats;if(e.length===0)return{openRate:0,clickRate:0};let t=e.reduce((e,t)=>e+(t.open_rate||0),0),n=e.reduce((e,t)=>e+(t.click_rate||0),0);return{openRate:Number((t/e.length).toFixed(2)),clickRate:Number((n/e.length).toFixed(2))}},[g]),S=(0,J.useMemo)(()=>K(v),[v]);return{post:o,stats:c,feedbackStats:l,averageStats:(0,J.useMemo)(()=>({openedRate:x.openRate,clickedRate:x.clickRate}),[x]),topLinks:S,refetchTopLinks:b,isLoading:n||i||_||y}},we=({breakpoints:e={sm:1080,md:1280,lg:1360}}={})=>{let[t,n]=(0,J.useState)(`md`);return(0,J.useEffect)(()=>{let t=()=>{let t=window.innerWidth;t<e.sm?n(`sm`):t<e.md?n(`md`):n(`lg`)};return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),{chartSize:t,isSmall:t===`sm`,isMedium:t===`md`,isLarge:t===`lg`}},Te=()=>(0,X.jsx)(`div`,{className:`absolute top-1/2 -right-4 z-10 hidden size-8 -translate-y-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground md:visible! md:flex!`,children:(0,X.jsx)(_,{className:`ml-0.5`,size:16,strokeWidth:1.5})}),Ee=({dataColor:e,value:t,avgValue:n})=>(0,X.jsxs)(`div`,{className:`absolute top-6 left-1/2 z-50 flex w-[200px] -translate-x-1/2 flex-col items-stretch gap-1.5 rounded-md bg-background px-4 py-2 text-sm opacity-0 shadow-md transition-all group-hover/block:top-3 group-hover/block:opacity-100`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`div`,{className:`size-2 rounded-full bg-chart-blue opacity-50`,style:{backgroundColor:e}}),`This newsletter`]}),(0,X.jsx)(`div`,{className:`text-right font-mono`,children:t})]}),(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,X.jsx)(`div`,{className:`size-2 rounded-full bg-chart-gray opacity-80`}),`Average`]}),(0,X.jsx)(`div`,{className:`text-right font-mono`,children:n})]})]}),De=()=>{let e=c(),[t,n]=(0,J.useState)(null),[r,a]=(0,J.useState)(``),s=(0,J.useRef)(null),l=(0,J.useRef)(null),{chartSize:u}=we(),m=me(),h=pe(),{post:_,isPostLoading:v,postId:x}=ye(),S=t=>e(de({filter:t})),C=_,P=o(C);(0,J.useEffect)(()=>{!v&&!P&&e(`/posts/analytics/${x}`)},[e,x,v,P]);let{stats:F,averageStats:L,topLinks:R,isLoading:he,refetchTopLinks:ge}=Ce(x),{mutate:be}=xe(),K=(0,J.useMemo)(()=>{if(!C?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=C.count.positive_feedback||0,t=C.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[C]),q=(0,J.useMemo)(()=>C?.newsletter?.feedback_enabled===!0,[C]),Y=(0,J.useMemo)(()=>K.totalFeedback>0?!0:q,[K.totalFeedback,q]),De=e=>{let t=W(R,e);t&&(n(e),a(t.link.to))},Oe=()=>{if(!t)return;let e=W(R,t);if(!e)return;let o=r.trim();if(o===``||o===e.link.to){n(null),a(``);return}be({originalUrl:e.link.originalTo,editedUrl:r,postId:x},{onSuccess:()=>{n(null),a(``),ge()},onError:()=>{i.error(`Couldn’t update the link. Please try again.`)}})},{totalPages:ke,paginatedData:Ae,nextPage:je,previousPage:Me,hasNextPage:Ne,hasPreviousPage:Pe}=N({data:R,itemsPerPage:10});(0,J.useEffect)(()=>{if(t&&s.current){s.current.focus();let e=W(R,t),i=t=>{l.current&&!l.current.contains(t.target)&&r===e?.link.to&&(n(null),a(``))};return document.addEventListener(`mousedown`,i),()=>{document.removeEventListener(`mousedown`,i)}}},[t,r,R]);let Z=he||v,Fe=[{datatype:`Sent`,value:1,fill:`url(#gradientPurple)`,color:`var(--chart-purple)`}],Ie={percentage:{label:`O`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Le=[{datatype:`Average`,value:L.openedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],Re={percentage:{label:`Opened`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},ze=[{datatype:`Average`,value:L.clickedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`}],Be={percentage:{label:`Clicked`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Q=`grid-cols-3`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-[10/14] md:max-w-none lg:aspect-square`;return(!m||!h)&&(Q=`grid-cols-2`,$=`aspect-[16/10] w-full max-w-[320px] sm:aspect-[2/1] md:aspect-square md:max-w-none lg:aspect-[15/10]`),!m&&!h&&(Q=`grid-cols-1`,$=`aspect-square w-full sm:aspect-[16/10] md:max-w-[320px] md:max-h-[320px] lg:aspect-[12/10]`),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ve,{currentTab:`Newsletter`}),(0,X.jsx)(_e,{children:(0,X.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 ${Y&&m&&`lg:grid-cols-2`}`,children:[(0,X.jsxs)(O,{className:Y&&m?`lg:col-span-2`:``,children:[(0,X.jsxs)(w,{className:`hidden`,children:[(0,X.jsx)(E,{children:`Newsletters`}),(0,X.jsx)(D,{children:`How did this post perform`})]}),Z?(0,X.jsx)(T,{className:`h-[25vw] p-6`,children:(0,X.jsx)(fe,{})}):(0,X.jsxs)(T,{className:`p-0`,children:[(0,X.jsxs)(`div`,{className:`grid ${Q} items-stretch border-b`,children:[(0,X.jsxs)(U,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`emails.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`emails.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-purple opacity-50`}),`Sent`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.sent)})})]}),h&&(0,X.jsxs)(U,{className:`p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`opened_emails.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`opened_emails.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-blue opacity-50`}),`Opened`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.opened)})})]}),m&&(0,X.jsxs)(U,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[(0,X.jsx)(B,{onClick:()=>{S(`clicked_links.post_id:${x}`)},children:`View members →`}),(0,X.jsxs)(H,{onClick:()=>{S(`clicked_links.post_id:${x}`)},children:[(0,X.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-teal opacity-50`}),`Clicked`]}),(0,X.jsx)(V,{children:(0,X.jsx)(z,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:f(F.clicked)})})]})]}),(0,X.jsxs)(`div`,{className:`$ mx-auto grid grid-cols-1 items-center justify-center gap-4 transition-all md:gap-0 ${Q===`grid-cols-2`&&`md:grid-cols-2`} ${Q===`grid-cols-3`&&`md:grid-cols-3`}`,children:[(0,X.jsxs)(`div`,{className:`relative border-r-0 px-6 ${(h||m)&&`md:border-r`}`,children:[(0,X.jsx)(G,{className:$,config:Ie,data:Fe,percentageLabel:`Sent`,percentageValue:d(1),size:u,tooltip:!1}),(h||m)&&(0,X.jsx)(Te,{})]}),h&&(0,X.jsxs)(`div`,{className:`group/block relative border-r-0 px-6 transition-all hover:bg-muted/25 ${m&&`md:border-r`}`,children:[(0,X.jsx)(Ee,{avgValue:d(L.openedRate),dataColor:`var(--chart-blue)`,value:d(F.openedRate)}),(0,X.jsx)(G,{className:$,config:Re,data:Le,percentageLabel:`Open rate`,percentageValue:d(F.openedRate),size:u,tooltip:!1}),m&&(0,X.jsx)(Te,{})]}),m&&(0,X.jsxs)(`div`,{className:`group/block relative px-6 transition-all hover:bg-muted/25`,children:[(0,X.jsx)(Ee,{avgValue:d(L.clickedRate),dataColor:`var(--chart-teal)`,value:d(F.clickedRate)}),(0,X.jsx)(G,{className:$,config:Be,data:ze,percentageLabel:`Click rate`,percentageValue:d(F.clickedRate),size:u,tooltip:!1})]})]})]})]}),Y&&(0,X.jsx)(Se,{feedbackStats:K}),m&&(0,X.jsxs)(O,{className:`group/datalist overflow-hidden`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,X.jsxs)(w,{className:`p-0`,children:[(0,X.jsx)(E,{children:`Newsletter clicks`}),(0,X.jsx)(D,{children:`Which links resonated with your readers`})]}),(0,X.jsx)(p,{className:`mr-2`,children:`Members`})]}),Z?(0,X.jsxs)(T,{className:`p-6 pt-0`,children:[(0,X.jsx)(I,{}),(0,X.jsx)(ee,{className:`mt-6`})]}):(0,X.jsxs)(T,{className:`pb-0`,children:[(0,X.jsx)(I,{}),R.length>0?(0,X.jsx)(oe,{className:``,children:(0,X.jsx)(ie,{children:Ae?.map(e=>{let n=F.clicked>0?e.count/F.clicked:0,i=e.link.link_id,o=e.link.title,c=e.link.to,u=e.link.edited;return(0,X.jsxs)(se,{children:[t!==i&&(0,X.jsx)(ne,{style:{width:`${n?Math.round(n*100):0}%`}}),(0,X.jsx)(re,{className:`w-full`,children:t===i?(0,X.jsxs)(`div`,{ref:l,className:`flex w-full items-center gap-2`,children:[(0,X.jsx)(ue,{ref:s,className:`z-50 h-7 w-full border-border bg-background text-sm`,value:r,onChange:e=>a(e.target.value)}),(0,X.jsx)(y,{size:`sm`,onClick:Oe,children:`Update`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(y,{className:`mr-2 shrink-0 bg-background`,size:`sm`,variant:`outline`,onClick:()=>De(i),children:(0,X.jsx)(b,{})}),(0,X.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:c,rel:`noreferrer`,target:`_blank`,title:o,children:o}),u&&(0,X.jsx)(`span`,{className:`ml-1 text-gray-500`,children:`(edited)`})]})}),(0,X.jsxs)(ae,{children:[(0,X.jsx)(k,{children:f(e.count||0)}),(0,X.jsx)(A,{children:d(n)})]})]},i)})})}):(0,X.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]}),!Z&&R.length>1&&(0,X.jsx)(te,{children:(0,X.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-3`,children:[(0,X.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 pl-4 text-sm text-green`,children:[(0,X.jsx)(g,{size:20,strokeWidth:1.5}),`Sent a broken link? You can update it!`]}),ke>1&&(0,X.jsx)(le,{className:`pb-0`,children:(0,X.jsxs)(M,{children:[(0,X.jsx)(j,{disabled:!Pe,onClick:Me}),(0,X.jsx)(ce,{disabled:!Ne,onClick:je})]})})]})})]})]})})]})};export{De as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{g as r,p as i}from"./hooks-CuEZV2-q.js";import{n as a}from"./dist-Ndy-PuGN.js";import{t as o}from"./use-form-vRjI0Kwk.js";import{a as s,i as c,r as l}from"./config-DOMQDZGZ.js";import{h as u}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{w as d}from"./dist-B3keLvjj.js";import{t as f}from"./inline-BWSs_VzR.js";import{t as p}from"./stack-B2eszIiq.js";import{i as m,o as h,r as g}from"./shade-app-CcS3f8MZ-vwURazk8.js";import{A as _,N as v,P as y,Rt as b,S as x,U as S,Un as C,W as w,Z as T,hr as ee,k as E,mn as te,t as ne,x as re}from"./button-eNMKQWXr.js";import{i as D,n as O,r as k,t as ie}from"./tabs-D2yWLMp_.js";import{t as A}from"./switch-CI4gLWqb.js";import{i as ae,n as j,o as M,s as N,t as oe}from"./select-cb0t_TAJ.js";import{t as P}from"./use-settings-navigation-CZjGrhsp.js";import{a as F,c as I,i as L,n as R,o as z,r as se,s as B,t as V}from"./field-Dihp5p18.js";import{t as ce}from"./textarea-DJ1Q5V39.js";import{n as H,t as U}from"./toggle-group-ByUJsxwD.js";import{r as le}from"./components-CwL6a6As-B0E0-NBJ.js";import{t as W}from"./use-limiter-D2WRRx0H.js";import{i as ue,r as de}from"./newsletters-DhNigJUh.js";import{$n as G,Un as fe,ei as pe,t as me,ti as K}from"./index-6MkPdCtr.js";import{t as he}from"./validator-Cr0sMKuW.js";import{n as ge}from"./confirmation-context-CBM8G0Vj.js";import{n as q}from"./global-data-context-gAMDH9u1.js";import{t as _e}from"./use-upgrade-route-DhRSo7at.js";import{t as ve}from"./use-setting-group-DpcuCUDg.js";import{t as J}from"./color-picker-field-D9nUhvA7.js";import{i as ye,r as be,t as Y}from"./newsletter-emails-DKzwafuh.js";import{t as xe}from"./html-field-CJBCLTvv.js";import{t as X}from"./color-utils-Dzeeuj1F.js";import{t as Se}from"./preview-modal-BfeFqi5y.js";``+new URL(`user-cover-yM4cP_Mo.jpg`,import.meta.url).href,``+new URL(`latest-posts-1-D7-ilqhR.jpg`,import.meta.url).href,``+new URL(`latest-posts-2-BPfbGB8B.jpg`,import.meta.url).href,``+new URL(`latest-posts-3-D72O3dn8.jpg`,import.meta.url).href;var Z=n(),Ce=({senderName:e,senderEmail:t,senderReplyTo:n,headerImage:r,headerIcon:i,headerTitle:a,headerSubtitle:o,showPostTitleSection:s,showExcerpt:l,titleAlignment:u,titleFontCategory:f,titleFontWeight:p,bodyFontCategory:m,authorPlaceholder:h,showCommentCta:g,showFeatureImage:v,showFeedback:y,showShareButton:x,showLatestPosts:S,showSubscriptionDetails:C,siteTitle:w,footerContent:ee,showBadge:te,backgroundColor:ne,headerBackgroundColor:re,accentColor:D,textColor:O,secondaryTextColor:k,headerTextColor:ie,secondaryHeaderTextColor:A,postTitleColor:ae,sectionTitleColor:j,dividerColor:M,buttonColor:N,buttonTextColor:oe,linkColor:P,buttonCorners:F,buttonStyle:I,imageCorners:L,linkStyle:R,dividerStyle:z})=>{let se=i||a,{config:B}=q(),V=new Date().toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`numeric`}),ce=new Date().getFullYear(),H=ee?ee.replace(/<a/g,`<a target="_blank" rel="noopener noreferrer"`):``,U;U=c(B)?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`From: `}),(0,Z.jsxs)(`span`,{children:[e,` (`,t,`)`]})]}),(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`Reply-to: `}),n||t]})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:e}),(0,Z.jsxs)(`span`,{children:[` `,t]})]}),(0,Z.jsxs)(`p`,{className:`leading-normal`,children:[(0,Z.jsx)(`span`,{className:`font-semibold text-gray-900`,children:`To:`}),` Jamie Larson jamie@example.com`]})]});let W=`mb-5 text-pretty leading-[1.7] text-black`;return W=f===`serif`&&m===`serif`?d(W,`mb-8 font-serif text-[2.0rem] leading-tight`):f!==`serif`&&m===`serif`?d(W,`mb-8 text-[1.7rem] leading-tight tracking-tight`):f===`serif`&&m!==`serif`?d(W,`mb-8 font-serif text-[2.0rem] leading-tight`):d(W,`mb-8 text-[1.9rem] leading-tight tracking-tight`),u===`center`&&(W=d(W,`text-center`)),(0,Z.jsx)(`div`,{className:`relative flex grow flex-col`,children:(0,Z.jsx)(`div`,{className:`absolute inset-0 m-5 flex items-center justify-center`,children:(0,Z.jsxs)(`div`,{className:`mx-auto my-0 flex max-h-full w-full max-w-[700px] flex-col overflow-hidden rounded-[4px] text-black shadow-sm`,children:[(0,Z.jsx)(`div`,{className:`flex-column flex min-h-[77px] justify-center gap-1 rounded-t-sm border-b border-gray-200 bg-white px-6 text-gray-700`,children:U}),(0,Z.jsxs)(`div`,{className:`overflow-y-auto`,style:{backgroundColor:ne},children:[(0,Z.jsxs)(`div`,{className:`px-[7rem]`,style:{backgroundColor:re},children:[r&&(0,Z.jsx)(`div`,{children:(0,Z.jsx)(`img`,{alt:``,className:`mb-4 block pt-6`,src:r})}),se&&(0,Z.jsxs)(`div`,{className:`py-3`,children:[i&&(0,Z.jsx)(`img`,{alt:``,className:`mx-auto mb-2 size-10`,role:`presentation`,src:i}),a&&(0,Z.jsx)(`h4`,{className:`mb-1 text-center text-[1.6rem] leading-tight font-bold tracking-tight text-gray-900 uppercase`,style:{color:ie},children:a}),o&&(0,Z.jsx)(`h5`,{className:`mb-1 text-center text-[1.3rem] font-normal text-gray-700`,style:{color:A},children:o})]}),s&&(0,Z.jsxs)(`div`,{className:d(`flex flex-col py-8`,u===`center`?`items-center`:`items-start`),children:[(0,Z.jsx)(`h2`,{className:d(`text-4xl leading-supertight font-bold text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`,u===`center`?`text-center`:`text-left`,l?`mb-2`:`mb-8`),style:{color:ae},children:`Your email newsletter`}),l&&(0,Z.jsx)(`p`,{className:W,style:{color:ie},children:`A subtitle to highlight key points and engage your readers.`}),(0,Z.jsxs)(`div`,{className:d(`flex w-full justify-between text-center text-md leading-none text-gray-700`,u===`center`?`flex-col gap-1`:`flex-row`),children:[(0,Z.jsxs)(`p`,{className:`pb-1 text-[1.3rem]`,style:{color:A},children:[`By `,h,(0,Z.jsx)(`span`,{className:`before:pr-1 before:pl-0.5 before:content-['•']`,children:V})]}),(0,Z.jsx)(`p`,{className:`pb-1 text-[1.3rem] underline`,style:{color:A},children:(0,Z.jsx)(`span`,{children:`View in browser`})})]})]}),v&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:d(`h-[unset] w-full max-w-[600px] bg-cover bg-no-repeat`,s?``:`pt-6`),children:(0,Z.jsx)(`img`,{alt:`Feature`,className:d(`min-h-full min-w-full shrink-0`,L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`user-cover-yM4cP_Mo.jpg`,import.meta.url).href})}),(0,Z.jsx)(`div`,{className:`mt-1 w-full max-w-[600px] pb-8 text-center text-[1.3rem] text-gray-700`,style:{color:A},children:`Feature image caption`})]})]}),(0,Z.jsxs)(`div`,{className:d(`px-[7rem]`,re!==`transparent`&&`pt-10`),children:[(0,Z.jsxs)(`div`,{className:d(`max-w-[600px] border-b border-gray-200 pb-[52px] leading-[27.2px] text-black`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`,m===`serif`?`font-serif text-[1.8rem]`:`text-[1.7rem] tracking-tight`,v||s?``:`pt-8`),style:{borderColor:M},children:[(0,Z.jsx)(`p`,{className:`mb-6`,style:{color:O},children:`This is what your content will look like when you send one of your posts as an email newsletter to your subscribers.`}),(0,Z.jsx)(`p`,{className:`mb-6`,style:{color:O},children:`Over there on the right you'll see some settings that allow you to customize the look and feel of this template – from colors and typography to layout and buttons – to make it perfectly suited to your brand.`}),(0,Z.jsx)(`p`,{className:`mb-[52px]`,style:{color:O},children:`Email templates are exceptionally finnicky to make, but we've spent a long time optimising this one to make it work beautifully across devices, email clients and content types. So, you can trust that every email you send with Ghost will look great and work well. Just like the rest of your site.`}),(0,Z.jsx)(`hr`,{className:d(`my-[52px] border-[#e0e7eb]`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-t-0 border-b-2 border-dotted`),style:{borderColor:M}}),(0,Z.jsx)(`h3`,{className:d(`mb-[13px] text-[2.6rem] leading-supertight`,f===`serif`&&`font-serif`,f===`sans_serif`&&`font-sans`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`Need inspiration?`}),(0,Z.jsxs)(`p`,{className:`mb-[27px]`,style:{color:O},children:[`We've put together a`,` `,(0,Z.jsx)(`a`,{className:d(R===`underline`&&`underline`,R===`bold`&&`font-bold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:{color:P||D},target:`_blank`,children:`quick guide`}),` `,`that walks through all of the available settings, along with a few examples of what's possible.`]}),(0,Z.jsx)(`a`,{className:d(`inline-block border px-[18px] py-2 font-sans text-[15px]`,F===`rounded`&&`rounded-[6px]`,F===`pill`&&`rounded-full`,F===`square`&&`rounded-none`,I===`outline`?`bg-transparent`:`border-transparent text-white`,R===`bold`?`font-bold`:`font-semibold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:I===`outline`?{borderColor:N||D,color:N||D}:{backgroundColor:N||D,color:oe},target:`_blank`,children:`Learn more`})]}),(y||g||x)&&(0,Z.jsx)(`div`,{className:d(`grid gap-5 border-b border-gray-200 px-6 py-5`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:(0,Z.jsxs)(`div`,{className:`grid auto-cols-fr grid-flow-col gap-4`,children:[y&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(E,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`More like this`})]}),(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(_,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Less like this`})]})]}),g&&(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(b,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Comment`})]}),x&&(0,Z.jsxs)(`div`,{className:`pointer-events-none flex min-w-[120px] cursor-default flex-col items-center gap-[11px] text-center`,children:[(0,Z.jsx)(`span`,{className:`inline-flex size-[54px] items-center justify-center rounded-full border`,style:{borderColor:M,color:O},children:(0,Z.jsx)(T,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Share`})]})]})}),S&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-6`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:[(0,Z.jsx)(`h3`,{className:`mt-2 mb-4 pb-1 text-[1.2rem] font-semibold tracking-wide text-black uppercase`,style:{color:O},children:`Keep reading`}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`The three latest posts published on your site`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Posts sent as an email only will never be shown here.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-1-D7-ilqhR.jpg`,import.meta.url).href})})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`Displayed at the bottom of each newsletter`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Giving your readers one more place to discover your stories.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-2-BPfbGB8B.jpg`,import.meta.url).href})})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between gap-4 py-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:d(`mt-0.5 text-[1.9rem] text-black`,f===`serif`&&`font-serif`,p===`normal`&&`font-normal`,p===`medium`&&`font-medium`,p===`semibold`&&`font-semibold`,p===`bold`&&`font-bold`),style:{color:j},children:`To keep your work front and center`}),(0,Z.jsx)(`p`,{className:`m-0 text-base text-gray-700`,style:{color:k},children:`Making sure that your audience stays engaged.`})]}),(0,Z.jsx)(`div`,{className:`aspect-square h-auto w-full max-w-[100px] bg-cover bg-no-repeat`,children:(0,Z.jsx)(`img`,{alt:`Latest post`,className:d(L===`square`&&`rounded-none`,L===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-3-D72O3dn8.jpg`,import.meta.url).href})})]})]}),C&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-8`,z===`dashed`&&`border-dashed`,z===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:M},children:[(0,Z.jsx)(`h4`,{className:`mb-3 text-[1.2rem] tracking-wide text-black uppercase`,style:{color:O},children:`Subscription details`}),(0,Z.jsxs)(`p`,{className:`m-0 mb-4 text-base`,style:{color:O},children:[`You are receiving this because you are a paid subscriber to `,w,`. Your subscription will renew on 17 Jul 2024.`]}),(0,Z.jsxs)(`div`,{className:`flex`,children:[(0,Z.jsxs)(`div`,{className:`shrink-0 text-base`,children:[(0,Z.jsx)(`p`,{style:{color:O},children:`Name: Jamie Larson`}),(0,Z.jsx)(`p`,{style:{color:O},children:`Email: jamie@example.com`}),(0,Z.jsx)(`p`,{style:{color:O},children:`Member since: 17 July 2023`})]}),(0,Z.jsx)(`span`,{className:d(`w-full self-end text-right text-base whitespace-nowrap`,R===`underline`&&`underline`,R===`bold`&&`font-bold`),style:{color:P||D},children:`Manage subscription`})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col items-center pt-10`,children:[(0,Z.jsx)(`div`,{dangerouslySetInnerHTML:{__html:H||``},className:`text px-8 py-3 text-center text-[1.3rem] leading-base break-words text-gray-700 [&_a]:underline`,style:{color:k}}),(0,Z.jsxs)(`div`,{className:`px-8 pt-3 pb-14 text-center text-[1.3rem] text-gray-700`,children:[(0,Z.jsxs)(`span`,{style:{color:k},children:[w,` © `,ce,` —`,` `]}),(0,Z.jsx)(`span`,{className:`pointer-events-none cursor-auto underline`,style:{color:k},children:`Unsubscribe`})]}),te&&(0,Z.jsx)(`div`,{className:`flex flex-col items-center pt-[10px] pb-[40px]`,children:(0,Z.jsxs)(`a`,{className:`pointer-events-none inline-flex cursor-auto items-center px-2 py-1 text-[1.25rem] font-semibold tracking-tight text-gray-900`,href:`https://ghost.org`,style:{color:O},children:[(0,Z.jsx)(le,{className:`mr-[6px] size-4`}),(0,Z.jsx)(`span`,{children:`Powered by Ghost`})]})})]})]})]})]})})})},Q=e(t(),1),we=({newsletter:e})=>{let{currentUser:t,settings:n,siteData:r,config:i}=q(),[a,o,s,c,l]=K(n,[`title`,`icon`,`comments_enabled`,`support_email_address`,`default_email_address`]),u=null;e.show_header_title?u=a||null:e.show_header_name&&(u=e.name);let d=e.show_header_title&&e.show_header_name?e.name:void 0,f=e.show_comment_cta&&s!==`off`,p=e.feedback_enabled,m=e.show_share_button,h=()=>{let t=e.background_color;return/#([0-9a-f]{3}){1,2}$/i.test(t)?t:`#ffffff`},g=()=>{let t=e.header_background_color;return!t||t===`transparent`?`transparent`:/#([0-9a-f]{3}){1,2}$/i.test(t)?t:`transparent`},_=()=>{let t=e.button_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===null?X(h()).hex():r.accent_color},v=()=>{let t=e.button_style,n=_();if(n&&t===`fill`)return X(n).hex()},y=()=>{let t=e.link_color===void 0?`accent`:e.link_color;return t===`accent`?r.accent_color:/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:X(h()).hex()},b=()=>{let t=e.post_title_color;if(/#([0-9a-f]{3}){1,2}$/i.test(t||``))return t;if(t===`accent`)return r.accent_color;let n=g();return X(n===`transparent`?h():n).hex()},x=()=>{let t=e.section_title_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===`accent`?r.accent_color:X(h()).hex()},S=()=>{let t=e.divider_color;return/#([0-9a-f]{3}){1,2}$/i.test(t||``)?t:t===`accent`?r.accent_color:`#e0e7eb`},C=X(h()).hex(),w=X(h()).alpha(.5).toString(),T=g()===`transparent`?C:X(g()).hex(),ee=g()===`transparent`?w:X(g()).alpha(.5).toString(),E={backgroundColor:h(),headerBackgroundColor:g(),postTitleColor:b()||void 0,sectionTitleColor:x()||void 0,buttonColor:_()||void 0,buttonTextColor:v()||void 0,linkColor:y()||void 0,dividerColor:S()||void 0,textColor:C,secondaryTextColor:w,headerTextColor:T,secondaryHeaderTextColor:ee};return(0,Z.jsx)(Ce,{accentColor:r.accent_color,authorPlaceholder:t.name||t.email,backgroundColor:E.backgroundColor||`#ffffff`,bodyFontCategory:e.body_font_category,buttonCorners:e.button_corners||`rounded`,buttonStyle:e.button_style||`fill`,dividerStyle:e.divider_style||`solid`,footerContent:e.footer_content,headerBackgroundColor:E.headerBackgroundColor||`transparent`,headerIcon:e.show_header_icon?o:void 0,headerImage:e.header_image,headerSubtitle:d,headerTitle:u,imageCorners:e.image_corners||`square`,linkStyle:e.link_style||`underline`,senderEmail:be(e,i,l),senderName:e.sender_name||a,senderReplyTo:Y(e,i,c,l),showBadge:e.show_badge,showCommentCta:f,showExcerpt:e.show_excerpt,showFeatureImage:e.show_feature_image,showFeedback:p,showLatestPosts:e.show_latest_posts,showPostTitleSection:e.show_post_title_section,showShareButton:m,showSubscriptionDetails:e.show_subscription_details,siteTitle:a,titleAlignment:e.title_alignment,titleFontCategory:e.title_font_category,titleFontWeight:e.title_font_weight||`bold`,...E})},Te=e(he(),1),$=({label:e,value:t,options:n,onValueChange:r})=>(0,Z.jsx)(U,{"aria-label":e,type:`single`,value:t,onValueChange:e=>e&&r(e),children:n.map(e=>(0,Z.jsxs)(g,{children:[(0,Z.jsx)(h,{asChild:!0,children:(0,Z.jsx)(H,{"aria-label":e.label,disabled:e.disabled,value:e.value,children:e.icon})}),(0,Z.jsx)(m,{children:e.label})]},e.value))}),Ee=({newsletter:e,updateNewsletter:t,errors:n,clearError:r})=>{let{settings:i,config:a}=q(),[o,s]=K(i,[`default_email_address`,`support_email_address`]),[c,l]=(0,Q.useState)(Y(e,a,s,o)||``),u=be(e,a,o),d=(0,Q.useCallback)(e=>{l(e.target.value),t({sender_reply_to:e.target.value||`newsletter`})},[t,l]);return(0,Z.jsxs)(V,{"data-invalid":!!n.sender_reply_to||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-reply-to`,children:`Reply-to email`}),(0,Z.jsx)(G,{"aria-invalid":!!n.sender_reply_to||void 0,id:`newsletter-reply-to`,maxLength:191,placeholder:u||``,value:c,onBlur:()=>{let t=Y(e,a,s,o)||``;l(t)},onChange:d,onKeyDown:()=>r(`sender_reply_to`)}),n.sender_reply_to&&(0,Z.jsx)(L,{children:n.sender_reply_to})]})},De=({newsletter:e,onlyOne:t,updateNewsletter:n,validate:o,errors:s,clearError:u})=>{let{updateRoute:d}=P(),m=_e(),{mutateAsync:h}=ue(),g=W(),{settings:_,config:b,siteData:T}=q(),[E,H]=K(_,[`icon`,`default_email_address`]),[U,le]=(0,Q.useState)(`generalSettings`),{localSettings:me}=ve(),[he]=K(me,[`title`]),Y=i(),{confirm:Se,showLimit:Ce}=ge(),{data:{newsletters:we}={}}=de(),Te=[`all`,`paid`].includes(pe(_,`comments_enabled`)||``),De=be(e,b,H),[Oe,ke]=(0,Q.useState)(we||[]),Ae=Oe.filter(e=>e.status===`active`);(0,Q.useEffect)(()=>{ke(we||[])},[we]);let je=[{value:`serif`,label:`Elegant serif`,className:`font-serif`},{value:`sans_serif`,label:`Clean sans-serif`}],Me={sans_serif:{options:[{value:`normal`,label:`Regular`,className:`font-normal`},{value:`medium`,label:`Medium`,className:`font-medium`},{value:`semibold`,label:`Semi-bold`,className:`font-semibold`},{value:`bold`,label:`Bold`,className:`font-bold`}]},serif:{options:[{value:`normal`,label:`Regular`,className:`font-normal`},{value:`bold`,label:`Bold`,className:`font-bold`}],map:{medium:`normal`,semibold:`bold`}}},Ne=()=>e.background_color===`light`?!1:X(e.background_color).hex().toLowerCase()===`#ffffff`,Pe=async()=>{if(e.status===`active`)Se({title:`Archive newsletter`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mb-6`,children:[`Your newsletter `,(0,Z.jsx)(`strong`,{children:e.name}),` will no longer be visible to members or available as an option when publishing new posts.`]}),(0,Z.jsx)(`div`,{children:`Existing posts previously sent as this newsletter will remain unchanged.`})]}),okLabel:`Archive`,okVariant:`destructive`,onOk:async t=>{try{await h({...e,status:`archived`}),t?.remove(),a.success(`Newsletter archived`)}catch(e){Y(e)}}});else{try{await g?.errorIfWouldGoOverLimit(`newsletters`)}catch(e){if(e instanceof r){Ce({prompt:e.message||`Your current plan doesn't support more newsletters.`,onOk:()=>d({route:m,isExternal:!0})});return}else throw e}Se({title:`Reactivate newsletter`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[`Reactivating `,(0,Z.jsx)(`strong`,{children:e.name}),` will immediately make it visible to members and re-enable it as an option when publishing new posts.`]}),okLabel:`Reactivate`,onOk:async t=>{await h({...e,status:`active`}),t?.remove(),a.success(`Newsletter reactivated`)}})}},Fe=()=>{if(!c(b))return(0,Z.jsxs)(V,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(G,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,placeholder:De||``,value:e.sender_email||``,onChange:e=>n({sender_email:e.target.value}),onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(L,{children:s.sender_email})]});if(l(b))return(0,Z.jsxs)(V,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(G,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,maxLength:191,placeholder:H,value:e.sender_email||``,onChange:e=>{n({sender_email:e.target.value})},onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(L,{children:s.sender_email})]})},Ie=Me[e.title_font_category||`sans_serif`].options,Le=[{id:`generalSettings`,title:`General`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Name and description`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{"data-invalid":!!s.name||void 0,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-detail-name`,children:`Name`}),(0,Z.jsx)(G,{"aria-invalid":!!s.name||void 0,id:`newsletter-detail-name`,maxLength:191,placeholder:`Weekly Roundup`,value:e.name||``,onChange:e=>n({name:e.target.value}),onKeyDown:()=>u(`name`)}),s.name&&(0,Z.jsx)(L,{children:s.name})]}),(0,Z.jsxs)(V,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-description`,children:`Description`}),(0,Z.jsx)(ce,{id:`newsletter-description`,maxLength:2e3,rows:2,value:e.description||``,onChange:e=>n({description:e.target.value})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Email info`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-sender-name`,children:`Sender name`}),(0,Z.jsx)(G,{id:`newsletter-sender-name`,maxLength:191,placeholder:he,value:e.sender_name||``,onChange:e=>n({sender_name:e.target.value})})]}),Fe(),(0,Z.jsx)(Ee,{clearError:u,errors:s,newsletter:e,updateNewsletter:n,validate:o})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Member settings`}),(0,Z.jsx)(F,{children:(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-subscribe-on-signup`,children:`Subscribe new members on signup`}),(0,Z.jsx)(A,{checked:!!e.subscribe_on_signup,id:`newsletter-subscribe-on-signup`,onCheckedChange:e=>n({subscribe_on_signup:e})})]})})]}),(0,Z.jsx)(`div`,{className:`mt-10 mb-5`,children:e.status===`active`?!t&&(0,Z.jsx)(ne,{className:`text-destructive hover:text-destructive`,disabled:Ae.length===1,type:`button`,variant:`ghost`,onClick:()=>void Pe(),children:`Archive newsletter`}):(0,Z.jsx)(ne,{className:`text-green hover:text-green`,type:`button`,variant:`ghost`,onClick:()=>void Pe(),children:`Reactivate newsletter`})})]})},{id:`content`,title:`Content`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(ye,{inputId:`newsletter-header-image`,value:e.header_image||``,onChange:e=>n({header_image:e||null}),onUploadError:Y}),(0,Z.jsxs)(p,{gap:`md`,children:[E&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-icon`,children:`Publication icon`}),(0,Z.jsx)(A,{checked:!!e.show_header_icon,id:`newsletter-show-header-icon`,onCheckedChange:e=>n({show_header_icon:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-title`,children:`Publication title`}),(0,Z.jsx)(A,{checked:!!e.show_header_title,id:`newsletter-show-header-title`,onCheckedChange:e=>n({show_header_title:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-header-name`,children:`Newsletter name`}),(0,Z.jsx)(A,{checked:!!e.show_header_name,id:`newsletter-show-header-name`,onCheckedChange:e=>n({show_header_name:e})})]})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Title section`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-post-title`,children:`Post title`}),(0,Z.jsx)(A,{checked:!!e.show_post_title_section,id:`newsletter-show-post-title`,onCheckedChange:e=>n({show_post_title_section:e})})]}),e.show_post_title_section&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-excerpt`,children:`Post excerpt`}),(0,Z.jsx)(A,{checked:!!e.show_excerpt,id:`newsletter-show-excerpt`,onCheckedChange:e=>n({show_excerpt:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-feature-image`,children:`Feature image`}),(0,Z.jsx)(A,{checked:!!e.show_feature_image,id:`newsletter-show-feature-image`,onCheckedChange:e=>n({show_feature_image:e})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Footer`}),(0,Z.jsxs)(F,{children:[(0,Z.jsxs)(p,{gap:`lg`,children:[(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-feedback-enabled`,children:`Ask your readers for feedback`}),(0,Z.jsx)(A,{checked:!!e.feedback_enabled,id:`newsletter-feedback-enabled`,onCheckedChange:e=>n({feedback_enabled:e})})]}),Te&&(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-comment-cta`,children:`Add a link to your comments`}),(0,Z.jsx)(A,{checked:!!e.show_comment_cta,id:`newsletter-show-comment-cta`,onCheckedChange:e=>n({show_comment_cta:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-share-button`,children:`Show share button`}),(0,Z.jsx)(A,{checked:!!e.show_share_button,id:`newsletter-show-share-button`,onCheckedChange:e=>n({show_share_button:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-latest-posts`,children:`Share your latest posts`}),(0,Z.jsx)(A,{checked:!!e.show_latest_posts,id:`newsletter-show-latest-posts`,onCheckedChange:e=>n({show_latest_posts:e})})]}),(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-subscription-details`,children:`Show subscription details`}),(0,Z.jsx)(A,{checked:!!e.show_subscription_details,id:`newsletter-show-subscription-details`,onCheckedChange:e=>n({show_subscription_details:e})})]})]}),(0,Z.jsx)(xe,{hint:`Any extra information or legal text`,nodes:`MINIMAL_NODES`,placeholder:` `,title:`Email footer`,value:e.footer_content||``,onChange:e=>n({footer_content:e})})]})]}),(0,Z.jsx)(fe,{className:`mt-8`}),(0,Z.jsxs)(`div`,{className:`my-5 flex w-full items-start`,children:[(0,Z.jsx)(`span`,{children:(0,Z.jsx)(te,{className:`mt-[-1px] mr-2 size-5 text-red`})}),(0,Z.jsx)(F,{className:`gap-8`,children:(0,Z.jsxs)(V,{orientation:`horizontal`,children:[(0,Z.jsxs)(R,{children:[(0,Z.jsx)(z,{htmlFor:`newsletter-show-badge`,children:`Promote independent publishing`}),(0,Z.jsx)(se,{children:`Show you're a part of the indie publishing movement with a small badge in the footer`})]}),(0,Z.jsx)(A,{checked:!!e.show_badge,id:`newsletter-show-badge`,onCheckedChange:e=>n({show_badge:e})})]})})]})]})},{id:`design`,title:`Design`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Global`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{hex:`#ffffff`,value:`light`,title:`White`}],title:`Background color`,value:e.background_color||`light`,onChange:e=>n({background_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Heading font`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Heading font`}),(0,Z.jsxs)(oe,{value:e.title_font_category,onValueChange:t=>{let r=e.title_font_weight,i=r;return Me[t].options.find(e=>e.value===r)||(i=Me[t].map?.[r]||`bold`),n({title_font_category:t,title_font_weight:i})},children:[(0,Z.jsx)(M,{"aria-label":`Heading font`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:je.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Heading weight`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Heading weight`}),(0,Z.jsxs)(oe,{value:(()=>{let t=e.title_font_category||`sans_serif`,n=e.title_font_weight,r=Me[t].map,i=r&&r[n]||n;return Ie.find(e=>e.value===i)||Ie[0]})().value,onValueChange:e=>n({title_font_weight:e}),children:[(0,Z.jsx)(M,{"aria-label":`Heading weight`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:Ie.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{className:`shrink-0`,children:`Body font`}),(0,Z.jsxs)(V,{className:`max-w-[200px]`,children:[(0,Z.jsx)(z,{className:`sr-only`,children:`Body font`}),(0,Z.jsxs)(oe,{value:e.body_font_category,onValueChange:e=>n({body_font_category:e}),children:[(0,Z.jsx)(M,{"aria-label":`Body font`,"data-testid":`body-font-select`,children:(0,Z.jsx)(N,{})}),(0,Z.jsx)(j,{children:je.map(e=>(0,Z.jsx)(ae,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`transparent`,title:`Transparent`,hex:`#00000000`}],title:`Header background color`,value:e.header_background_color||`transparent`,onChange:e=>n({header_background_color:e})})}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Post title color`,value:e.post_title_color,onChange:e=>n({post_title_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Title alignment`}),(0,Z.jsx)($,{label:`Title alignment`,options:[{value:`left`,label:`Left`,icon:(0,Z.jsx)(v,{className:`size-3.5!`}),disabled:!e.show_post_title_section},{value:`center`,label:`Center`,icon:(0,Z.jsx)(y,{className:`size-3.5!`}),disabled:!e.show_post_title_section}],value:e.title_alignment,onValueChange:e=>n({title_alignment:e})})]})]})]}),(0,Z.jsxs)(I,{className:`mt-8`,children:[(0,Z.jsx)(B,{className:`text-lg! font-semibold`,children:`Body`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Section title color`,value:e.section_title_color,onChange:e=>n({section_title_color:e})})}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`accent`,title:`Accent`,hex:T.accent_color},{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`}],title:`Button color`,value:e.button_color,onChange:e=>n({button_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Button style`}),(0,Z.jsx)($,{label:`Button style`,options:[{value:`fill`,label:`Fill`,icon:(0,Z.jsx)(S,{className:`size-3.5!`,fill:`currentColor`})},{value:`outline`,label:`Outline`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})}],value:e.button_style||`fill`,onValueChange:e=>n({button_style:e})})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Button corners`}),(0,Z.jsx)($,{label:`Button corners`,options:[{value:`square`,label:`Squared`,icon:(0,Z.jsx)(w,{className:`size-3.5!`})},{value:`rounded`,label:`Rounded`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})},{value:`pill`,label:`Pill`,icon:(0,Z.jsx)(C,{className:`size-3.5!`})}],value:e.button_corners||`rounded`,onValueChange:e=>n({button_corners:e})})]}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`accent`,title:`Accent`,hex:T.accent_color},{value:null,title:`Auto`,hex:Ne()?`#ffffff`:`#000000`}],title:`Link color`,value:e.link_color,onChange:e=>n({link_color:e})})}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Link style`}),(0,Z.jsx)($,{label:`Link style`,options:[{value:`underline`,label:`Underline`,icon:(0,Z.jsx)(re,{className:`size-3.5!`})},{value:`regular`,label:`Regular`,icon:(0,Z.jsx)(x,{className:`size-3.5!`})},{value:`bold`,label:`Bold`,icon:(0,Z.jsx)(ee,{className:`size-3.5!`})}],value:e.link_style||`underline`,onValueChange:e=>n({link_style:e})})]}),(0,Z.jsxs)(f,{className:`w-full`,gap:`sm`,justify:`between`,children:[(0,Z.jsx)(`div`,{children:`Image corners`}),(0,Z.jsx)($,{label:`Image corners`,options:[{value:`square`,label:`Squared`,icon:(0,Z.jsx)(w,{className:`size-3.5!`})},{value:`rounded`,label:`Rounded`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})}],value:e.image_corners||`square`,onValueChange:e=>n({image_corners:e})})]}),(0,Z.jsx)(`div`,{className:`mb-1`,children:(0,Z.jsx)(J,{direction:`rtl`,eyedropper:!0,swatches:[{value:`light`,title:`Light`,hex:`#e0e7eb`},{value:`accent`,title:`Accent`,hex:T.accent_color}],title:`Divider color`,value:e.divider_color||`light`,onChange:e=>n({divider_color:e})})})]})]})]})}];return(0,Z.jsx)(`div`,{className:`flex flex-col`,children:(0,Z.jsx)(`div`,{className:`px-7 pt-0 pb-7`,children:(0,Z.jsxs)(ie,{value:U,variant:`underline`,onValueChange:e=>{le(e)},children:[(0,Z.jsx)(k,{className:`sticky top-0 z-50 bg-surface-elevated-2`,children:Le.map(e=>(0,Z.jsx)(D,{value:e.id,children:e.title},e.id))}),Le.map(e=>(0,Z.jsx)(O,{value:e.id,children:e.contents},e.id))]})})})},Oe=({newsletter:e,onlyOne:t})=>{let{config:n}=q(),{mutateAsync:r}=ue(),{updateRoute:c}=P(),u=me(`automations`)?`emails`:`newsletters`,{formState:d,saveState:f,updateForm:p,setFormState:m,handleSave:h,validate:g,errors:_,clearError:v,okProps:y}=o({initialState:e,savingDelay:500,onSave:async()=>{let{meta:{sent_email_verification:[e]=[]}={}}=await r(d),t;(e&&e===`sender_email`||e&&e===`sender_reply_to`)&&(t=(0,Z.jsx)(`div`,{children:`We‘ve sent a confirmation email to the new address.`})),t&&a.info(t)},onSaveError:i(),onValidate:()=>{let e={};return d.name||(e.name=`A name is required for your newsletter`),d.sender_email&&!Te.default.isEmail(d.sender_email)?e.sender_email=`Enter a valid email address`:d.sender_email&&l(n)&&d.sender_email.split(`@`)[1]!==s(n)&&(e.sender_email=`Email address must end with @${s(n)}`),d.sender_reply_to&&!Te.default.isEmail(d.sender_reply_to)&&![`newsletter`,`support`].includes(d.sender_reply_to)&&(e.sender_reply_to=`Enter a valid email address`),e}}),b=e=>{p(t=>({...t,...e}))};(0,Q.useEffect)(()=>{m(()=>e)},[m,e]);let x=(0,Z.jsx)(we,{newsletter:d}),S=(0,Z.jsx)(De,{clearError:v,errors:_,newsletter:d,onlyOne:t,updateNewsletter:b,validate:g});return(0,Z.jsx)(Se,{buttonsDisabled:y.disabled,cancelLabel:`Close`,dirty:f===`unsaved`,okLabel:y.label||`Save`,okVariant:y.variant,preview:x,previewBgColor:`grey`,previewToolbar:!1,sidebar:S,sidebarPadding:!1,testId:`newsletter-modal`,title:`Newsletter`,onClose:()=>c(u),onOk:async()=>{await h({fakeWhenUnchanged:!0})}})},ke=()=>{let{newsletterId:e}=u(),{data:{newsletters:t,isEnd:n}={},fetchNextPage:r}=de(),i=t?.find(({id:t})=>t===e);return(0,Q.useEffect)(()=>{!i&&!n&&r()},[r,n,i]),i?(0,Z.jsx)(Oe,{newsletter:i,onlyOne:t.length===1}):null};export{ke as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{t as e}from"./react-Bb3IsNbi.js";import{t}from"./jsx-runtime-DX3WBWVO.js";import{i as n,r}from"./config-DOMQDZGZ.js";import{m as i}from"./dist-B3keLvjj.js";import{D as a}from"./button-B2jcu6bk.js";import{o,r as s,t as c}from"./field-Cj8lmDOo.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./images-h8VZEQ9k.js";e();var _=t(),v=({inputId:e=`welcome-email-header-image`,onUploadError:t,value:n,onChange:r})=>{let{mutateAsync:v}=f(),y=async e=>{try{r(g(await v({file:e})))}catch(e){if(t){t(e);return}throw e}};return(0,_.jsxs)(c,{"data-testid":`header-image-field`,children:[(0,_.jsx)(o,{htmlFor:e,children:`Header image`}),(0,_.jsx)(m,{className:`aspect-[2/1] w-full`,children:n?(0,_.jsxs)(u,{children:[(0,_.jsx)(h,{alt:`Header`,src:n}),(0,_.jsx)(l,{children:(0,_.jsx)(d,{"aria-label":`Remove header image`,type:`button`,onClick:()=>r(``),children:(0,_.jsx)(a,{})})})]}):(0,_.jsx)(p,{accept:{"image/*":[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.svg`]},inputId:e,onDropAccepted:e=>e[0]&&void y(e[0]),children:(0,_.jsx)(`span`,{className:`text-control font-medium`,children:`Upload header image`})})}),(0,_.jsxs)(s,{children:[i(1200),`×`,i(600),` recommended. Use a transparent PNG for best results on any background.`]})]})},y=(e,t,i)=>n(t)&&!r(t)&&i?i:e.sender_email||i||``,b=(e,t,r,i)=>e.sender_reply_to===`newsletter`?n(t)?``:y(e,t,i):e.sender_reply_to===`support`?r||i||``:e.sender_reply_to,x=(e,t,n,r)=>b(e,t,n,r)||(e.sender_reply_to===`newsletter`?y(e,t,r)||n||r||``:n||r||``);export{v as i,x as n,y as r,b as t};
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{t as e}from"./react-Bb3IsNbi.js";import{t}from"./jsx-runtime-DX3WBWVO.js";import{i as n,r}from"./config-DOMQDZGZ.js";import{m as i}from"./dist-B3keLvjj.js";import{D as a}from"./button-eNMKQWXr.js";import{o,r as s,t as c}from"./field-Dihp5p18.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./images-scfkWZiK.js";e();var _=t(),v=({inputId:e=`welcome-email-header-image`,onUploadError:t,value:n,onChange:r})=>{let{mutateAsync:v}=f(),y=async e=>{try{r(g(await v({file:e})))}catch(e){if(t){t(e);return}throw e}};return(0,_.jsxs)(c,{"data-testid":`header-image-field`,children:[(0,_.jsx)(o,{htmlFor:e,children:`Header image`}),(0,_.jsx)(m,{className:`aspect-[2/1] w-full`,children:n?(0,_.jsxs)(u,{children:[(0,_.jsx)(h,{alt:`Header`,src:n}),(0,_.jsx)(l,{children:(0,_.jsx)(d,{"aria-label":`Remove header image`,type:`button`,onClick:()=>r(``),children:(0,_.jsx)(a,{})})})]}):(0,_.jsx)(p,{accept:{"image/*":[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.svg`]},inputId:e,onDropAccepted:e=>e[0]&&void y(e[0]),children:(0,_.jsx)(`span`,{className:`text-control font-medium`,children:`Upload header image`})})}),(0,_.jsxs)(s,{children:[i(1200),`×`,i(600),` recommended. Use a transparent PNG for best results on any background.`]})]})},y=(e,t,i)=>n(t)&&!r(t)&&i?i:e.sender_email||i||``,b=(e,t,r,i)=>e.sender_reply_to===`newsletter`?n(t)?``:y(e,t,i):e.sender_reply_to===`support`?r||i||``:e.sender_reply_to,x=(e,t,n,r)=>b(e,t,n,r)||(e.sender_reply_to===`newsletter`?y(e,t,r)||n||r||``:n||r||``);export{v as i,x as n,y as r,b as t};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{i as r}from"./pagemenu-B5KKCpbA.js";import{_ as i}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a,t as o}from"./router-provider-B0gZyiGJ.js";import{c as s,h as c,m as l,u}from"./dist-B3keLvjj.js";import{Ut as d,Wt as f,t as p}from"./button-eNMKQWXr.js";import{g as m,n as h,o as g,r as _}from"./chart-BrhA41Zi.js";import{a as v,i as y,o as b,r as ee}from"./trend-badge-6ye93YAW.js";import{n as te,t as x}from"./sort-button-VVeQjjbu.js";import{r as ne,t as re}from"./tabs-D2yWLMp_.js";import{a as S,i as C,n as w,o as T,r as E,s as D,t as O}from"./select-cb0t_TAJ.js";import{n as k}from"./skeleton-Ce9GgUpf.js";import{a as A,n as j,o as M,r as N,t as P}from"./card--VNbfgo3.js";import{t as F}from"./empty-indicator-D9QdpuNX.js";import{a as I,c as L,n as R,r as z,s as B,t as ie}from"./table-Do6iQ83Q.js";import{r as V}from"./newsletters-DhNigJUh.js";import{Cr as ae,J as H,Tr as U,Zn as oe,ci as W,jr as se,si as G,ui as ce,xr as le}from"./index-6MkPdCtr.js";import{i as ue,n as de,r as fe,t as pe}from"./stats-view-BGGmkmgv.js";import{i as me,r as he,u as ge}from"./stats-Rjmk5owg.js";import{a as K,c as _e,i as q,n as J,r as ve}from"./chart-helpers-CfBKt0vT.js";import{n as Y,r as X,t as ye}from"./kpi-tabs-BJItvLYm.js";import{t as be}from"./use-analytics-data-CWCMAESo.js";import{t as xe}from"./get-site-timezone-HgL0jI_F.js";var Z=e(t(),1),Q=n(),Se=({active:e,payload:t})=>{if(!e||!t?.length)return null;let n=t[0].payload,r=typeof n.send_date==`string`?n.send_date:n.send_date.toISOString().split(`T`)[0];return(0,Q.jsxs)(`div`,{className:`max-w-[240px] min-w-[220px] rounded-lg border bg-background px-3 py-2 shadow-lg`,children:[(0,Q.jsxs)(`div`,{className:`mb-2 flex w-full flex-col border-b pb-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm leading-tight font-semibold`,children:n.post_title}),(0,Q.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Sent on `,u(r)]})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Sent`}),(0,Q.jsx)(`div`,{className:`ml-2 w-full text-right font-mono`,children:l(n.sent_to)})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Opens`}),(0,Q.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[l(n.total_opens),` / `]}),c(n.open_rate)]})]}),(0,Q.jsxs)(`div`,{className:`mb-1 flex w-full justify-between`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Clicks`}),(0,Q.jsxs)(`div`,{className:`ml-2 w-full text-right font-mono`,children:[(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[l(n.total_clicks),` / `]}),c(n.click_rate)]})]})]})},Ce=({subscribersData:e,avgsData:t,totals:n,isLoading:r,isAvgsLoading:o,initialTab:u=`total-subscribers`})=>{let[d,p]=(0,Z.useState)(u),[x,S]=(0,Z.useState)(!1),{range:C}=H(),w=a(),[T]=i(),E=G(),D=W(),{totalSubscribers:O,avgOpenRate:k,avgClickRate:A}=n,j=(0,Z.useMemo)(()=>{if(!e||e.length===0)return[];let t=[];return t=_e(e,C,`value`,`exact`),t.map(e=>({...e,formattedValue:l(e.value),label:`Total Subscribers`}))},[e,C]),M=(0,Z.useMemo)(()=>ve(C,e||[]),[e,C]),N=(0,Z.useMemo)(()=>{if(!j||j.length<=1)return{direction:`same`,value:`0%`};let e=j[0]?.value??0,t=j[j.length-1]?.value??0,n=`same`;t>e?n=`up`:t<e&&(n=`down`);let r;if(e===0)r=t===0?`0%`:`+100%`;else{let n=(t-e)/e*100,i=Math.round(n*10)/10;r=`${n>=0?`+`:``}${i}%`}return{direction:n,value:r}},[j]);(0,Z.useEffect)(()=>{p(u)},[u]);let P=e=>{p(e);let t=new URLSearchParams(T);t.set(`tab`,e),w(`?${t.toString()}`,{replace:!0})},I={open_rate:{label:`Open rate`}},L=(0,Z.useMemo)(()=>({"total-subscribers":{color:`var(--chart-darkblue)`,datakey:`value`},"avg-open-rate":{color:`var(--chart-blue)`,datakey:`open_rate`},"avg-click-rate":{color:`var(--chart-teal)`,datakey:`click_rate`}}),[]),{barDomain:R,barTicks:z}=(0,Z.useMemo)(()=>{if(!t||t.length===0||d===`total-subscribers`)return{barDomain:[0,1],barTicks:[0,1]};let e=L[d]?.datakey;if(!e)return{barDomain:[0,1],barTicks:[0,1]};let n=t.map(t=>t[e]).filter(e=>typeof e==`number`);if(n.length===0)return{barDomain:[0,1],barTicks:[0,1]};let r=d===`avg-open-rate`?k:A,i=Math.max(Math.max(...n),r),a;return a=i<.01?.01:i<.1?(Math.floor(i*100)+1)/100:(Math.floor(i*10)+1)/10,{barDomain:[0,a],barTicks:[0,a]}},[t,d,L,k,A]);if(r)return(0,Q.jsx)(`div`,{className:`-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center`,children:(0,Q.jsx)(oe,{})});let B=`grid-cols-3`;(!E||!D)&&(B=`grid-cols-2`),!E&&!D&&(B=`grid-cols-1`);let ie=d===`avg-open-rate`&&k>R[0]&&k<R[1]||d===`avg-click-rate`&&A>R[0]&&A<R[1],V=d===`avg-open-rate`?k:A;return(0,Q.jsxs)(re,{defaultValue:u,variant:`kpis`,children:[(0,Q.jsxs)(ne,{className:`-mx-6 hidden grid-cols-3 md:visible! md:grid! ${B}`,children:[(0,Q.jsx)(Y,{className:`${!D&&!E&&`cursor-auto after:hidden`}`,value:`total-subscribers`,onClick:()=>{P(`total-subscribers`)},children:(0,Q.jsx)(X,{color:L[`total-subscribers`].color,"data-testid":`total-subscribers-value`,diffDirection:N.direction,diffValue:N.value,label:`Total subscribers`,value:l(O)})}),D&&(0,Q.jsx)(Y,{value:`avg-open-rate`,onClick:()=>{P(`avg-open-rate`)},children:(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-open-rate`].color,label:`Avg. open rate`,value:c(k)})}),E&&(0,Q.jsx)(Y,{value:`avg-click-rate`,onClick:()=>{P(`avg-click-rate`)},children:(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-click-rate`].color,label:`Avg. click rate`,value:c(A)})})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(se,{className:`md:hidden`,asChild:!0,children:(0,Q.jsxs)(ye,{children:[d===`total-subscribers`&&(0,Q.jsx)(X,{color:L[`total-subscribers`].color,label:`Total subscribers`,value:l(O)}),d===`avg-open-rate`&&D&&(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-open-rate`].color,label:`Avg. open rate`,value:c(k)}),d===`avg-click-rate`&&E&&(0,Q.jsx)(X,{className:o?`opacity-50`:``,color:L[`avg-click-rate`].color,label:`Avg. click rate`,value:c(A)})]})}),(0,Q.jsxs)(ae,{align:`end`,className:`w-56`,children:[(0,Q.jsx)(U,{onClick:()=>P(`total-subscribers`),children:`Total subscribers`}),D&&(0,Q.jsx)(U,{onClick:()=>P(`avg-open-rate`),children:`Avg. open rate`}),E&&(0,Q.jsx)(U,{onClick:()=>P(`avg-click-rate`),children:`Avg. click rate`})]})]}),(0,Q.jsxs)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:[d===`total-subscribers`&&(0,Q.jsx)(ee,{className:`-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:L[`total-subscribers`].color,data:j,id:`mrr`,range:M}),(d===`avg-open-rate`&&D||d===`avg-click-rate`&&E)&&(0,Q.jsx)(Q.Fragment,{children:o?(0,Q.jsx)(`div`,{className:`h-[320px] w-full items-center justify-center`,children:(0,Q.jsx)(oe,{})}):t&&t.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(h,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]`,config:I,children:(0,Q.jsxs)(te,{className:x?`cursor-pointer!`:``,data:t,margin:{top:20},onClick:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;t&&w(`/posts/analytics/${t}`)},onMouseLeave:()=>S(!1),onMouseMove:e=>{let t=(e.activePayload?.[0])?.payload?.post_id;S(!!t)},children:[(0,Q.jsx)(`defs`,{children:(0,Q.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,Q.jsx)(`stop`,{offset:`0%`,stopColor:L[d].color,stopOpacity:.8}),(0,Q.jsx)(`stop`,{offset:`100%`,stopColor:L[d].color,stopOpacity:.6})]})}),(0,Q.jsx)(b,{horizontal:!0,stroke:`var(--border)`,vertical:!1}),(0,Q.jsx)(v,{axisLine:{stroke:`var(--border)`,strokeWidth:1},dataKey:`post_id`,interval:0,stroke:`var(--border)`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,Q.jsx)(y,{axisLine:!1,domain:R,tickFormatter:e=>c(e),tickLine:!1,ticks:z,width:s(z,e=>c(e))}),(0,Q.jsx)(_,{content:(0,Q.jsx)(Se,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ie&&(0,Q.jsx)(g,{label:{value:`${c(V)}`,position:`left`,offset:8,fill:`var(--muted-foreground)`},opacity:.5,stroke:`var(--muted-foreground)`,strokeDasharray:`4 4`,y:V}),(0,Q.jsx)(m,{activeBar:{fillOpacity:1},dataKey:L[d].datakey,fill:`url(#barGradient)`,fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),(0,Q.jsxs)(`div`,{className:`-mt-4 text-center text-sm text-muted-foreground`,children:[`Newsletters `,d===`avg-open-rate`?`opens`:`clicks`,` in this period`]})]}):(0,Q.jsx)(F,{className:`size-full py-20`,title:`No newsletters ${q(C)}`,children:(0,Q.jsx)(f,{strokeWidth:1.5})})})]})]})},we=({newsletters:e})=>{let{selectedNewsletterId:t,setSelectedNewsletterId:n}=H(),r=(0,Z.useMemo)(()=>e?.filter(e=>e.status===`active`)||[],[e]);return(0,Z.useEffect)(()=>{if(r.length>0&&!t){let e=r.find(e=>e.sort_order===0);n(e?e.id:r[0].id)}},[r,t,n]),r.length<=1?null:(0,Q.jsxs)(O,{value:t||``,onValueChange:e=>{n(e)},children:[(0,Q.jsxs)(T,{className:`w-auto`,children:[(0,Q.jsx)(d,{className:`mr-2`,size:16,strokeWidth:1.5}),(0,Q.jsx)(D,{placeholder:`Select a newsletter`})]}),(0,Q.jsx)(w,{align:`end`,children:(0,Q.jsxs)(E,{children:[(0,Q.jsx)(S,{children:`Newsletters`}),r.map(e=>(0,Q.jsx)(C,{value:e.id,children:e.name},e.id))]})})]})},Te=(e,t,n=!0)=>{let r=e??30,{startDate:i,endDate:a}=(0,Z.useMemo)(()=>K(r),[r]),o=ge({searchParams:(0,Z.useMemo)(()=>{let e={date_from:J(i),date_to:J(a)};return t&&(e.newsletter_id=t),e},[i,a,t]),enabled:n});return n?o:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:o.refetch}},Ee=(e,t,n,r=!0)=>{let i=e??30,a=t??`date desc`,{startDate:o,endDate:s}=(0,Z.useMemo)(()=>K(i),[i]),c=he({searchParams:(0,Z.useMemo)(()=>{let e={date_from:J(o),date_to:J(s),order:a};return n&&(e.newsletter_id=n),e},[o,s,a,n]),enabled:r});return r?c:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:c.refetch}},De=(e,t=[],n=!0)=>{let r=me({searchParams:(0,Z.useMemo)(()=>{let n={};return e&&(n.newsletter_id=e),t.length>0&&(n.post_ids=t.join(`,`)),n},[e,t]),enabled:n});return n?r:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:r.refetch}},Oe=(e,t,n,r=!0)=>{let i=Ee(e,t,n,r),a=(0,Z.useMemo)(()=>i.data?.stats?i.data.stats.map(e=>e.post_id):[],[i.data]),o=De(n,a,r&&a.length>0);return{data:(0,Z.useMemo)(()=>{if(!i.data?.stats)return;let e=i.data.stats,t=o.data?.stats||[],n=new Map;t.forEach(e=>{n.set(e.post_id,e)});let r=e.map(e=>{let t=n.get(e.post_id);return{...e,total_clicks:t?.total_clicks||0,click_rate:t?.click_rate||0}});return{...i.data,stats:r}},[i.data,o.data]),isLoading:i.isLoading,isClicksLoading:o.isLoading,error:i.error||o.error,isError:i.isError||o.isError,refetch:()=>{i.refetch(),o.refetch()}}},ke=Z.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})=>{let i=a(),{settings:o}=be(),s=xe(o),{data:d,isLoading:m,isClicksLoading:h}=Oe(e,r,t||void 0,!!n),g=G(),_=W(),v=(0,Z.useMemo)(()=>d?.stats||[],[d]),y=_&&g?5:_||g?4:3,b=(0,Z.useMemo)(()=>(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(L,{className:`last:border-none [&>td]:py-2.5`,children:(0,Q.jsx)(z,{className:`font-medium`,colSpan:y,children:(0,Q.jsx)(k,{className:`mt-5`})})})}),[y]),ee=(0,Z.useMemo)(()=>v.length>0?(0,Q.jsx)(Q.Fragment,{children:v.map(e=>(0,Q.jsxs)(L,{className:`last:border-none [&>td]:py-2.5`,children:[(0,Q.jsx)(z,{className:`font-medium`,children:(0,Q.jsx)(`div`,{className:`group/link inline-flex items-center gap-2`,children:e.post_id?(0,Q.jsx)(p,{className:`h-auto p-0 text-left whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:()=>{i(`/posts/analytics/${e.post_id}/`)},children:e.post_title}):(0,Q.jsx)(Q.Fragment,{children:e.post_title})})}),(0,Q.jsx)(z,{className:`text-sm whitespace-nowrap`,children:u(e.send_date,s)}),(0,Q.jsx)(z,{className:`text-right font-mono text-sm`,children:l(e.sent_to)}),_&&(0,Q.jsxs)(z,{className:`text-right font-mono text-sm`,children:[(0,Q.jsx)(`span`,{className:`group-hover:hidden`,children:c(e.open_rate)}),(0,Q.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:l(e.total_opens)})]}),g&&(0,Q.jsx)(z,{className:`text-right font-mono text-sm`,children:h?(0,Q.jsx)(`span`,{className:`inline-block h-4 w-8 animate-pulse rounded bg-gray-200`}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`group-hover:hidden`,children:c(e.click_rate)}),(0,Q.jsx)(`span`,{className:`hidden group-hover:visible! group-hover:block!`,children:l(e.total_clicks)})]})})]},e.post_id))}):(0,Q.jsx)(L,{className:`border-none hover:bg-transparent`,children:(0,Q.jsx)(z,{className:`text-center group-hover:bg-transparent!`,colSpan:y,children:(0,Q.jsx)(F,{className:`size-full py-20`,title:`No newsletters ${q(e)}`,children:(0,Q.jsx)(f,{strokeWidth:1.5})})})}),[v,h,i,g,_,e,s]);return m||!d?b:ee});ke.displayName=`NewsletterTableRows`;var Ae=Z.memo(({sortBy:e,setSortBy:t,range:n})=>{let r=(0,Z.useMemo)(()=>(0,Q.jsxs)(A,{children:[(0,Q.jsx)(M,{children:`Top newsletters`}),(0,Q.jsxs)(N,{children:[` Your best performing newsletters `,q(n)]})]}),[n]),i=G(),a=W();return(0,Q.jsx)(B,{children:(0,Q.jsxs)(L,{children:[(0,Q.jsx)(I,{className:`min-w-[320px]`,variant:`cardhead`,children:r}),(0,Q.jsx)(I,{className:`w-[65px]`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`date desc`,children:`Date`})}),(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`sent_to desc`,children:`Sent`})}),a&&(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`open_rate desc`,children:`Opens`})}),i&&(0,Q.jsx)(I,{className:`w-[90px] text-right`,children:(0,Q.jsx)(x,{activeSortBy:e,setSortBy:t,sortBy:`click_rate desc`,children:`Clicks`})})]})})});Ae.displayName=`NewsletterTableHeader`;var $=Z.memo(({range:e,selectedNewsletterId:t,shouldFetchStats:n})=>{let[r,i]=(0,Z.useState)(`open_rate desc`);return(0,Q.jsx)(P,{className:`w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]`,"data-testid":`top-newsletters-card`,children:(0,Q.jsx)(j,{children:(0,Q.jsxs)(ie,{children:[(0,Q.jsx)(Ae,{range:e,setSortBy:i,sortBy:r}),(0,Q.jsx)(R,{children:(0,Q.jsx)(ke,{range:e,selectedNewsletterId:t,shouldFetchStats:n,sortBy:r})})]})})})});$.displayName=`TopNewslettersTable`;var je=()=>{let{range:e,selectedNewsletterId:t}=H(),[n]=i(),a=ce(),s=n.get(`tab`)||`total-subscribers`,{data:c,isLoading:l}=V({searchParams:{limit:`50`}}),u=!l&&c&&c.newsletters.length>0&&!!t,{data:d,isLoading:f}=Te(e,t||void 0,u||!1),{data:p,isLoading:m,isClicksLoading:h}=Oe(e,`date asc`,t||void 0,u||!1),g=(0,Z.useMemo)(()=>!c?.newsletters||!t?null:c.newsletters.find(e=>e.id===t)||null,[c,t]),_=(0,Z.useMemo)(()=>{let e=g?.count?.active_members||d?.stats?.[0]?.total||0,t=0,n=0;if(p?.stats&&p.stats.length>0){let e=p.stats,r=e.reduce((e,t)=>e+(t.open_rate||0),0),i=e.reduce((e,t)=>e+(t.click_rate||0),0);t=r/e.length,n=i/e.length}return{totalSubscribers:e,avgOpenRate:t,avgClickRate:n}},[g,d,p]),v=(0,Z.useMemo)(()=>{if(!d?.stats?.[0]?.values||d.stats[0].values.length===0){let{startDate:t,endDate:n}=K(e),r=[],i=t.clone().toDate(),a=n.toDate();for(;i<=a;)r.push({date:i.toISOString().split(`T`)[0],value:0}),i.setDate(i.getDate()+1);return r}let t=d.stats[0].values;if(t.length===1){let n=t[0],r=new Date,i=e,a=new Date(r.getTime()-i*24*60*60*1e3);return[{...n,date:a.toISOString().split(`T`)[0]},{...n,date:r.toISOString().split(`T`)[0]}]}return t},[d,e]),y=(0,Z.useMemo)(()=>p?.stats?p.stats.map(e=>({post_id:e.post_id,post_title:e.post_title,send_date:e.send_date,sent_to:e.sent_to,total_opens:e.total_opens,open_rate:e.open_rate,total_clicks:e.total_clicks||0,click_rate:e.click_rate||0})):[],[p]),b=f||h||m;return a===!1?(0,Q.jsx)(o,{to:`/analytics`}):(0,Q.jsxs)(de,{children:[(0,Q.jsx)(fe,{children:(0,Q.jsxs)(r,{children:[(0,Q.jsx)(we,{newsletters:c?.newsletters}),(0,Q.jsx)(ue,{})]})}),(0,Q.jsx)(pe,{isLoading:!1,loadingComponent:(0,Q.jsx)(Q.Fragment,{}),children:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(P,{"data-testid":`newsletters-card`,children:(0,Q.jsx)(j,{children:(0,Q.jsx)(Ce,{avgsData:y,initialTab:s,isAvgsLoading:!1,isLoading:b,subscribersData:v,totals:_})})}),(0,Q.jsx)($,{range:e,selectedNewsletterId:t,shouldFetchStats:!!u})]})})]})};export{je as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{h as r}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{s as i}from"./router-provider-B0gZyiGJ.js";import{hn as a}from"./button-eNMKQWXr.js";import{t as o}from"./skeleton-Ce9GgUpf.js";import{t as s}from"./use-navigate-with-base-path-BHPA228f.js";import{Dn as c,Et as l,Gt as u,It as d,Mt as f,Nt as p,Qn as m,Tn as h,ht as g,mt as _,pt as v}from"./index-6MkPdCtr.js";import{i as y,n as b,r as x,t as S}from"./use-reply-chain-data-ns0caK8k.js";var C=e(t(),1),w=n(),T=()=>(0,w.jsx)(`div`,{className:`h-px w-full bg-gray-200 dark:bg-gray-950`}),E=()=>{let{postId:e}=r(),{canGoBack:t}=i(),[n,E]=(0,C.useState)(new Set),[D,O]=(0,C.useState)(new Set),[k,A]=(0,C.useState)(new Set),[j,M]=(0,C.useState)(!1),N=(0,C.useRef)(null),P=(0,C.useRef)(null),F=(0,C.useRef)(null),I=(0,C.useRef)(null),L=s(),{threadParents:R,post:z,processedReplies:B,isLoading:V,loadMoreChildren:H,loadMoreChildReplies:U,hasMoreChildren:W,hasMoreChildReplies:G}=S(decodeURIComponent(e??``),{includeAncestors:!0}),K=z?.object,q=K?.replyCount??0,[J,Y]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{P.current&&R.length>0&&!J&&(P.current.scrollIntoView({behavior:`instant`,block:`start`}),Y(!0))},[R,J]),(0,C.useEffect)(()=>{F.current&&F.current.disconnect();let e=document.querySelector(`[data-scrollable-container]`);if(e)return F.current=new IntersectionObserver(async e=>{if(e[0].isIntersecting&&W&&!j){M(!0);try{await H()}catch(e){console.error(`Failed to load more top-level replies:`,e)}finally{M(!1)}}},{root:e,rootMargin:`200px`}),I.current&&F.current.observe(I.current),()=>{F.current&&F.current.disconnect()}},[W,j,H]),V)return(0,w.jsx)(g,{children:(0,w.jsxs)(`div`,{className:`mx-auto flex max-w-[620px] flex-col items-center gap-3 pt-9 lg:px-8`,children:[(0,w.jsxs)(`div`,{className:`flex w-full items-center gap-3`,children:[(0,w.jsx)(o,{className:`size-10 rounded-full`}),(0,w.jsxs)(`div`,{className:`grow pt-1`,children:[(0,w.jsx)(o,{className:`w-24`}),(0,w.jsx)(o,{className:`w-3/5`})]})]}),(0,w.jsxs)(`div`,{className:`mb-7 w-full`,children:[(0,w.jsx)(o,{}),(0,w.jsx)(o,{className:`w-4/5`}),(0,w.jsx)(o,{})]}),(0,w.jsx)(T,{}),(0,w.jsxs)(`div`,{className:`flex w-full items-center gap-3 py-3`,children:[(0,w.jsx)(o,{className:`block size-full`,containerClassName:`size-10 rounded-full overflow-hidden`}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(o,{className:`w-52`}),(0,w.jsx)(o,{className:`w-28`})]})]}),(0,w.jsx)(T,{})]})});if(!z)return(0,w.jsx)(g,{children:(0,w.jsx)(`div`,{className:`mx-auto mt-4 flex w-full max-w-[620px] flex-col items-center`,children:(0,w.jsxs)(_,{children:[(0,w.jsx)(v,{children:(0,w.jsx)(a,{})}),(0,w.jsx)(`div`,{children:`Error loading note.`})]})})});function X(){}function Z(e){E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),O(t=>{let n=new Set(t);return n.add(e),n})),n})}async function Q(e,t){if(!k.has(e)){A(t=>new Set(t).add(e));try{U&&await U(t)}catch(e){console.error(`Failed to load more replies for chain:`,e)}finally{A(t=>{let n=new Set(t);return n.delete(e),n})}}}return(0,w.jsx)(g,{children:(0,w.jsx)(`div`,{className:`mx-auto flex h-full max-w-[620px] flex-col`,children:(0,w.jsx)(`div`,{className:`relative flex-1`,children:(0,w.jsx)(`div`,{className:`grow overflow-y-auto`,children:(0,w.jsxs)(`div`,{className:`mx-auto px-8 pt-5 pb-10 max-lg:px-0`,children:[!R.length&&(0,w.jsx)(d,{actor:z.actor,isCurrentUser:z.object.authored,children:(0,w.jsxs)(`div`,{className:`col-[2/3] mx-auto flex w-full cursor-pointer items-center gap-3 ${t?`pt-10 max-md:pt-5`:`pt-5`}`,children:[(0,w.jsx)(`div`,{className:`relative z-10`,children:(0,w.jsx)(u,{author:z.actor,showFollowButton:!z.object.authored&&!z.actor.followedByMe})}),(0,w.jsxs)(`div`,{className:`relative z-10 flex w-full min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]`,onClick:e=>{p(z.actor,L,e)},children:[(0,w.jsx)(`div`,{className:`flex w-full`,children:(0,w.jsx)(`span`,{className:`min-w-0 truncate font-semibold whitespace-nowrap hover:underline`,children:z.actor.name})}),(0,w.jsxs)(`div`,{className:`flex w-full`,children:[(0,w.jsx)(`span`,{className:`truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-["·"]`,children:c(z.actor)}),(0,w.jsx)(`span`,{className:`text-gray-700`,children:f(K,!K.authored)})]})]})]})}),R.map(e=>e.object.type===`Tombstone`?(0,w.jsx)(x,{last:!1}):(0,w.jsx)(l,{actor:e.actor,allowDelete:!1,commentCount:e.object.replyCount??0,last:!1,layout:`reply`,likeCount:e.object.likeCount??0,object:e.object,repostCount:e.object.repostCount??0,type:`Note`,onClick:()=>{L(`/${e.object.type===`Article`?`reader`:`notes`}/${encodeURIComponent(e.object.id)}`)}})),(0,w.jsx)(`div`,{ref:P,className:`${t?`scroll-mt-[12px]`:`scroll-mt-[124px]`}`,children:(0,w.jsxs)(`div`,{className:`${R.length>0&&`min-h-[calc(100vh-52px)]`}`,children:[(0,w.jsx)(l,{actor:z.actor,allowDelete:!1,commentCount:q,last:!0,layout:`modal`,likeCount:K.likeCount??0,object:K,repostCount:K.repostCount,showHeader:R.length>0,showStats:!0,type:`Note`}),(0,w.jsx)(y,{object:K}),(0,w.jsx)(T,{}),(0,w.jsxs)(`div`,{ref:N,children:[B.map((e,t)=>{let r=t===B.length-1,i=e.mainReply.id,a=n.has(i),o=D.has(i),s=k.has(i),c=e.chain.length>0;return(0,w.jsxs)(C.Fragment,{children:[(0,w.jsx)(l,{actor:e.mainReply.actor,allowDelete:e.mainReply.object.authored,commentCount:e.mainReply.object.replyCount??0,isChainParent:c,isPending:h(e.mainReply.id),last:!c,layout:`reply`,likeCount:e.mainReply.object.likeCount??0,object:e.mainReply.object,parentId:K.id,repostCount:e.mainReply.object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(e.mainReply.id)}`)},onDelete:X}),c&&e.chain[0]&&(0,w.jsx)(l,{actor:e.chain[0].actor,allowDelete:e.chain[0].object.authored,commentCount:e.chain[0].object.replyCount??0,isChainContinuation:!0,isPending:h(e.chain[0].id),last:e.chain.length===1,layout:`reply`,likeCount:e.chain[0].object.likeCount??0,object:e.chain[0].object,parentId:K.id,repostCount:e.chain[0].object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(e.chain[0].id)}`)},onDelete:X},e.chain[0].id),c&&a&&e.chain.slice(1).map((n,r)=>{let i=r===e.chain.slice(1).length-1,a=G&&G(t),o=i&&a;return(0,w.jsx)(l,{actor:n.actor,allowDelete:n.object.authored,commentCount:n.object.replyCount??0,isChainContinuation:!0,isPending:h(n.id),last:i&&!o,layout:`reply`,likeCount:n.object.likeCount??0,object:n.object,parentId:K.id,repostCount:n.object.repostCount??0,type:`Note`,onClick:()=>{L(`/notes/${encodeURIComponent(n.id)}`)},onDelete:X},n.id)}),c&&e.chain.length>1&&!a&&(0,w.jsx)(b,{variant:`expand`,onClick:()=>Z(i)}),c&&a&&o&&G&&G(t)&&(0,w.jsx)(b,{loading:s,variant:`loadMore`,onClick:()=>Q(i,t)}),!r&&(0,w.jsx)(T,{})]},e.mainReply.id)}),j&&(0,w.jsx)(`div`,{className:`flex flex-col items-center justify-center text-center`,children:(0,w.jsx)(m,{size:`md`})})]}),W&&(0,w.jsx)(`div`,{ref:I,className:`h-1`})]})})]})})})})})};export{E as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{m as r}from"./dist-B3keLvjj.js";import{$n as i,_r as a,ct as o,h as s,mn as c,ot as l,t as u,xr as d}from"./button-eNMKQWXr.js";import{t as f}from"./skeleton-Ce9GgUpf.js";import{t as p}from"./use-navigate-with-base-path-BHPA228f.js";import{At as m,En as h,Ft as g,Gt as _,Ht as v,It as y,Mt as b,Nt as x,Ot as S,Qn as C,Tt as w,Ut as T,Wt as E,ft as D,ht as O,jt as k,ln as A,mt as j,pt as M}from"./index-6MkPdCtr.js";import"./layout-Bjv2Ll-5.js";var N=e(t(),1),P=n(),F=({notificationType:e,size:t=`lg`,className:n})=>{let r,i=``,a=`white`,u=t===`sm`?13:20,f=t===`sm`?2:1.5;switch(e){case`follow`:r=(0,P.jsx)(s,{className:`-mt-0.5 -mr-0.5 ${t===`sm`&&`size-[11px]`}`,color:a,size:u,strokeWidth:f}),i=`bg-blue-600`;break;case`like`:r=(0,P.jsx)(c,{className:`${t===`sm`?`size-[11px]`:`mt-px size-5`}`,color:a,strokeWidth:f}),i=`bg-pink-600`;break;case`reply`:r=(0,P.jsx)(l,{className:`mr-px mb-px`,color:a,size:u,strokeWidth:f}),i=`bg-purple-600`;break;case`repost`:r=(0,P.jsx)(o,{color:a,size:u,strokeWidth:f}),i=`bg-green-500`;break;case`mention`:r=(0,P.jsx)(d,{className:`${t===`sm`?`size-[12px]`:`size-5`}`,color:a,size:u,strokeWidth:f}),i=`bg-orange-500`;break}return(0,P.jsx)(`div`,{className:`flex ${t===`sm`?`size-5`:`size-9`} items-center justify-center rounded-full ${i} ${n&&n}`,children:r})},I=N.createContext(void 0),L=({isGrouped:e,centerAlign:t,children:n,onClick:r,url:i,className:a})=>(0,P.jsx)(I.Provider,{value:{onClick:r,url:i},children:(0,P.jsx)(`div`,{className:`group relative -mx-4 -my-px ${e?`grid`:`flex`} ${t?`items-center`:`items-start`} break-anywhere cursor-pointer grid-cols-[auto_1fr] gap-x-4 gap-y-2.5 rounded-lg px-4 py-5 text-left hover:bg-gray-100 ${a}`,role:`button`,onClick:r,children:n})});L.Icon=({size:e=`lg`,type:t})=>(0,P.jsx)(`div`,{className:`col-start-1 row-start-1`,children:(0,P.jsx)(F,{notificationType:t,size:e})}),L.Avatars=({children:e})=>(0,P.jsx)(`div`,{className:`col-start-2 row-start-1 flex gap-2`,children:e}),L.Content=({children:e})=>(0,P.jsx)(`div`,{className:`col-start-2 row-start-2 -mt-0.5 grow overflow-hidden`,children:e});var R=()=>(0,P.jsx)(`div`,{className:`h-px w-full bg-gray-200 dark:bg-gray-950`});function z(e){let t=1440*60*1e3,n=new Date(e).getTime();return(Math.floor(n/t)*t).toString()}function B(e){let t={},n=null,r=0;return e.forEach(e=>{e.type!==n&&(r+=1,n=e.type);let i=``,a=`_${z(e.createdAt)}`,o=`_seq${r}`;switch(e.type){case`like`:e.post?.id&&(i=`like_${e.post.id}${a}${o}`);break;case`reply`:i=`reply_${e.id}`;break;case`repost`:e.post?.id&&(i=`repost_${e.post.id}${a}${o}`);break;case`follow`:i=`follow_${a}${o}`;break;case`mention`:i=`mention_${e.id}`;break}t[i]||(t[i]={id:e.id,type:e.type,actors:[],post:e.post,inReplyTo:e.inReplyTo,createdAt:e.createdAt}),t[i].actors.find(t=>t.id===e.actor.id)||t[i].actors.push(e.actor)}),Object.values(t)}var V=({group:e})=>{let[t,...n]=e.actors,i=n.length>0,a=n.length,o=p(),s=(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(y,{actor:t,align:`center`,isCurrentUser:!1,children:(0,P.jsx)(`span`,{className:`cursor-pointer font-semibold hover:underline text-black dark:text-white`,onClick:e=>{e?.stopPropagation(),t.handle&&x(t.handle,o)},children:t.name})}),i&&` and ${r(a)} ${a>1?`others`:`other`}`]});switch(e.type){case`follow`:return(0,P.jsxs)(P.Fragment,{children:[s,` followed you`]});case`like`:return(0,P.jsxs)(P.Fragment,{children:[s,` liked your `,e.post?.type===`article`?`post`:`note`]});case`repost`:return(0,P.jsxs)(P.Fragment,{children:[s,` reposted your `,e.post?.type===`article`?`post`:`note`]});case`reply`:if(e.inReplyTo&&typeof e.inReplyTo!=`string`)return s;break;case`mention`:return s}return(0,P.jsx)(P.Fragment,{})},H=({content:e,className:t,stripTags:n=[]})=>{let r=(0,N.useRef)(null),i=p();return(0,N.useEffect)(()=>{let e=r.current;if(!e)return;let t=e=>{let t=e.target.closest(`a[data-profile]`);if(t){let n=t.getAttribute(`data-profile`)?.trim();/^@([\w.-]+)@([\w-]+\.[\w.-]+[a-zA-Z])$/.test(n||``)&&n&&(e.preventDefault(),e.stopPropagation(),x(n,i))}};return e.addEventListener(`click`,t),()=>{e.removeEventListener(`click`,t)}},[i,e]),(0,P.jsx)(`div`,{dangerouslySetInnerHTML:{__html:v(T(e||``,n))},ref:r,className:t})},U=({post:e,variant:t})=>{let n=e?.attachments??[],r=n.length>0,{contentWarning:i,shouldHideContentWarning:a,shouldHideSensitiveMedia:o,revealSensitiveMedia:s,revealContentWarning:c}=k({contentWarning:e?.contentWarning,sensitive:e?.sensitive,hasMedia:r,resetKey:e?.id});return e?a&&i?t===`inline`?(0,P.jsxs)(`button`,{className:`mt-0.5 block max-w-full truncate text-left text-sm text-gray-700 hover:text-black dark:text-gray-600 dark:hover:text-white`,type:`button`,onClick:c,children:[(0,P.jsx)(`span`,{className:`font-semibold`,children:`Content warning:`}),` `,i,` `,(0,P.jsx)(`span`,{className:`font-semibold`,children:`Show`})]}):(0,P.jsx)(w,{className:`mt-2.5`,label:i,size:`compact`,onReveal:c}):t===`inline`?(0,P.jsxs)(`div`,{className:`ap-note-content mt-0.5 line-clamp-1 text-sm text-pretty text-gray-700 dark:text-gray-600`,children:[e.type===`article`&&e.title&&(0,P.jsxs)(P.Fragment,{children:[e.title,` — `]}),(0,P.jsx)(`span`,{dangerouslySetInnerHTML:{__html:v(T(e.content||``))}})]}):(0,P.jsxs)(`div`,{className:`mt-2.5 rounded-md bg-gray-100 px-5 py-[14px] group-hover:bg-gray-200 dark:bg-gray-950/30 group-hover:dark:bg-black/40`,children:[(0,P.jsx)(H,{className:`ap-note-content text-pretty`,content:e.content||``,stripTags:[`a`]}),r&&(0,P.jsxs)(`div`,{className:`relative mt-2.5 aspect-square w-[calc(20%-6.4px)] min-w-[96px] overflow-hidden rounded-md [&_img]:absolute [&_img]:inset-0 [&_img]:mt-0 [&_img]:size-full [&_img]:max-h-none [&_img]:max-w-none [&_img]:object-cover [&>.attachment-gallery]:absolute [&>.attachment-gallery]:inset-0 [&>.attachment-gallery]:mt-0 [&>.attachment-gallery]:grid [&>.attachment-gallery]:size-full`,children:[m({type:`Note`,attachment:n}),o&&(0,P.jsx)(S,{showLabel:!1,size:`compact`,isLayered:!0,onReveal:s})]})]}):null},W=()=>{let[e,t]=N.useState({}),n=p(),o=e=>{t(t=>({...t,[e]:!t[e]}))},s=()=>{},{data:c,error:l,fetchNextPage:d,hasNextPage:m,isFetchingNextPage:v,isLoading:y}=A(`index`),S=c?.pages.flatMap(e=>B(e.notifications))??Array(10).fill({actors:[{}]}),w=(0,N.useRef)(null),T=(0,N.useRef)(null);(0,N.useEffect)(()=>(w.current&&w.current.disconnect(),w.current=new IntersectionObserver(e=>{e[0].isIntersecting&&m&&!v&&d()}),T.current&&w.current.observe(T.current),()=>{w.current&&w.current.disconnect()}),[m,v,d]);let k=(e,t)=>{switch(e.type){case`like`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`reply`:e.post&&e.inReplyTo&&n(`/notes/${encodeURIComponent(e.post.id)}`);break;case`repost`:e.post&&n(`/${e.post.type===`article`?`reader`:`notes`}/${encodeURIComponent(e.post.id)}`);break;case`follow`:e.actors.length>1?o(e.id||`${e.type}_${t}`):e.actors[0]?.handle&&x(e.actors[0].handle,n);break;case`mention`:e.post&&n(`/notes/${encodeURIComponent(e.post.id)}`);break}};return l&&h(l)?(0,P.jsx)(D,{errorCode:l.code,statusCode:l.statusCode}):(0,P.jsx)(O,{children:(0,P.jsxs)(`div`,{className:`z-0 flex w-full flex-col items-center`,children:[y===!1&&S.length===0&&(0,P.jsxs)(j,{children:[(0,P.jsx)(M,{children:(0,P.jsx)(a,{})}),`Quiet for now, but not for long! When someone likes, boosts, or replies to you, you'll find it here.`]}),S.length>0&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`my-8 flex w-full max-w-[620px] flex-col max-md:mt-5`,children:S.map((t,a)=>(0,P.jsxs)(N.Fragment,{children:[(0,P.jsxs)(L,{centerAlign:t.actors.length<2&&t.type===`follow`,className:`hover:bg-gray-100 dark:hover:bg-gray-950`,isGrouped:t.actors.length>1,onClick:()=>k(t,a),children:[y?(0,P.jsx)(f,{className:`rounded-full`,containerClassName:`flex h-10 w-10`}):t.actors.length>1?(0,P.jsx)(L.Icon,{type:t.type}):(0,P.jsxs)(`div`,{className:`relative`,children:[(0,P.jsx)(_,{author:{icon:{url:t.actors[0].avatarUrl||``},name:t.actors[0].name,handle:t.actors[0].handle},size:`notification`},t.actors[0].id),(0,P.jsx)(F,{className:`absolute -right-1 -bottom-1 z-10 border-2 border-white dark:border-black`,notificationType:t.type,size:`sm`})]}),t.actors.length>1&&(0,P.jsx)(L.Avatars,{children:(0,P.jsxs)(`div`,{className:`flex w-full flex-col`,children:[(0,P.jsxs)(`div`,{className:`relative flex w-fit items-center pl-2`,children:[!e[t.id||`${t.type}_${a}`]&&t.actors.slice(0,5).map(e=>(0,P.jsx)(_,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},className:`-ml-2 bg-[#F3F3F3]! outline-2 outline-white group-hover:bg-[#EDEEF0]! group-hover:outline-gray-100 dark:outline-black group-hover:dark:outline-gray-950`,size:`notification`},e.id)),t.actors.length>5&&!e[t.id||`${t.type}_${a}`]&&(0,P.jsx)(`div`,{className:`absolute right-[28px] z-10 flex size-9 items-center justify-center rounded-full bg-black/50 text-base font-semibold tracking-tightest text-white`,children:`+${r(t.actors.length-5)}`}),t.actors.length>1&&(0,P.jsxs)(u,{className:`group flex items-center gap-0.5 text-gray-700 hover:bg-transparent hover:text-black dark:text-gray-600 dark:hover:text-white ${e[t.id||`${t.type}_${a}`]?`ml-[-20px]`:`ml-0 w-[28px]`}`,variant:`ghost`,onClick:e=>{e?.stopPropagation(),o(t.id||`${t.type}_${a}`)},children:[(0,P.jsx)(i,{className:`${e[t.id||`${t.type}_${a}`]?`rotate-180`:``}`,size:20,strokeWidth:1.5}),e[t.id||`${t.type}_${a}`]?`Hide`:(0,P.jsx)(`span`,{className:`sr-only`,children:`Show all`})]})]}),(0,P.jsx)(`div`,{className:`overflow-hidden transition-all duration-300 ease-in-out ${e[t.id||`${t.type}_${a}`]?`mb-2 max-h-[1384px] opacity-100`:`max-h-0 opacity-0`}`,children:e[t.id||`${t.type}_${a}`]&&t.actors.length>1&&(0,P.jsx)(`div`,{className:`flex flex-col gap-2 pt-2`,children:t.actors.map(e=>(0,P.jsxs)(`div`,{className:`group/item break-anywhere flex items-center justify-between gap-4`,onClick:t=>{t?.stopPropagation(),e.handle&&x(e.handle,n)},children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center`,children:[(0,P.jsx)(_,{author:{icon:{url:e.avatarUrl||``},name:e.name,handle:e.handle},size:`xs`}),(0,P.jsx)(`span`,{className:`ml-2 line-clamp-1 text-base font-semibold group-hover/item:underline dark:text-white`,children:e.name}),(0,P.jsx)(`span`,{className:`ml-1 line-clamp-1 text-base text-gray-700 dark:text-gray-600`,children:e.handle})]}),t.type===`follow`&&!e.followedByMe&&e.handle&&(0,P.jsx)(E,{following:!1,handle:e.handle,variant:`link`})]},e.id))})})]})}),(0,P.jsxs)(L.Content,{children:[(0,P.jsx)(`div`,{children:y?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(f,{}),(0,P.jsx)(f,{className:`w-full max-w-60`})]}):(0,P.jsxs)(`div`,{className:`flex justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,P.jsx)(`span`,{className:`truncate`,children:(0,P.jsx)(V,{group:t})}),t.actors.length<2&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`span`,{className:`mt-px text-[8px] text-gray-700 dark:text-gray-600`,children:`•`}),(0,P.jsx)(`span`,{className:`mt-0.5 text-sm text-gray-700 dark:text-gray-600`,children:b(t,!1)})]})]}),t.actors.length===1&&(t.type===`follow`||t.type===`reply`||t.type===`mention`)&&!t.actors[0].followedByMe&&t.actors[0].handle&&(0,P.jsx)(E,{following:!1,handle:t.actors[0].handle,variant:`link`})]})}),(t.type===`reply`&&t.inReplyTo||t.type===`mention`||t.type===`like`&&!t.post?.name&&t.post?.content||t.type===`repost`&&!t.post?.name&&t.post?.content)&&(0,P.jsx)(U,{post:t.post,variant:t.type!==`reply`&&t.type!==`mention`?`inline`:`quoted`}),(t.type===`reply`&&t.post||t.type===`mention`)&&(0,P.jsx)(`div`,{className:`mt-1.5`,children:(0,P.jsx)(g,{actor:{...t.actors[0],icon:{url:t.actors[0].avatarUrl||``},id:t.actors[0].url,preferredUsername:t.actors[0].handle?.replace(/^@([^@]+)@.*$/,`$1`)||`unknown`},buttonClassName:`hover:bg-gray-200`,commentCount:t.post.replyCount||0,layout:`notification`,likeCount:t.post.likeCount||0,object:{...t.post,liked:t.post.likedByMe,reposted:t.post.repostedByMe},repostCount:t.post.repostCount||0,onLikeClick:s})})]})]}),a<S.length-1&&(0,P.jsx)(`div`,{className:`pl-[52px]`,children:(0,P.jsx)(R,{})})]},t.id||`${t.type}_${a}`))}),(0,P.jsx)(`div`,{ref:T,className:`h-1`}),v&&(0,P.jsx)(`div`,{className:`-mt-4 mb-8 flex flex-col items-center justify-center gap-4 text-center`,children:(0,P.jsx)(C,{size:`md`})})]})]})})};export{W as default};