ghost 6.64.0 → 6.65.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 (672) hide show
  1. package/bin/create-migration.js +15 -0
  2. package/components/tryghost-adapter-base-scheduling-0.2.4.tgz +0 -0
  3. package/components/tryghost-api-framework-0.0.0.tgz +0 -0
  4. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  5. package/components/tryghost-kg-default-cards-10.3.6.tgz +0 -0
  6. package/components/tryghost-kg-lexical-html-renderer-1.5.1.tgz +0 -0
  7. package/components/tryghost-metafield-types-0.0.0.tgz +0 -0
  8. package/content/themes/casper/assets/built/casper.js +1 -1
  9. package/content/themes/casper/assets/built/screen.css +1 -1
  10. package/content/themes/casper/assets/css/screen.css +15 -2
  11. package/content/themes/casper/assets/js/init.js +37 -9
  12. package/content/themes/casper/package.json +8 -8
  13. package/content/themes/source/assets/built/screen.css +1 -1
  14. package/content/themes/source/assets/built/source.js +1 -1
  15. package/content/themes/source/assets/css/screen.css +14 -1
  16. package/content/themes/source/assets/js/main.js +24 -4
  17. package/content/themes/source/package.json +7 -7
  18. package/core/boot.js +22 -16
  19. package/core/bridge.js +1 -1
  20. package/core/built/admin/assets/Combination-DQ6f9A5P.js +41 -0
  21. package/core/built/admin/assets/{PolarAngleAxis-a81ieQUO.js → PolarAngleAxis-BBaU7PRV.js} +1 -1
  22. package/core/built/admin/assets/RadialBarChart-Bp20JPnA.js +1 -0
  23. package/core/built/admin/assets/{about-39CAfroa.js → about-Dp43j18M.js} +1 -1
  24. package/core/built/admin/assets/accordion-h62UzFhj.js +1 -0
  25. package/core/built/admin/assets/account-migration-CBTbtX6Q.js +1 -0
  26. package/core/built/admin/assets/action-list-DC9QpX-l.js +1 -0
  27. package/core/built/admin/assets/activitypub/{account-migration-KA6Jjf9L.js → account-migration-B1DUZS4Q.js} +8 -8
  28. package/core/built/admin/assets/activitypub/activitypub.js +24 -11
  29. package/core/built/admin/assets/activitypub/avatar-CRGud8yf.js +153 -0
  30. package/core/built/admin/assets/activitypub/{avatar-flipboard-csQaNeYK.js → avatar-flipboard-BZNFAXfm.js} +3 -3
  31. package/core/built/admin/assets/activitypub/{bluesky-sharing-C7nTDMvw.js → bluesky-sharing-Cg_v-LwS.js} +30 -31
  32. package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-Ck3O4oo2.js → chunk-KS7C4IRE-CTUL98Lc.js} +2498 -1885
  33. package/core/built/admin/assets/activitypub/{content-formatters-CLcjaBwV.js → content-formatters-D7GWP7nH.js} +23 -24
  34. package/core/built/admin/assets/activitypub/{copy-DcOh8kXw.js → copy-CgzTvoeR.js} +2 -2
  35. package/core/built/admin/assets/activitypub/{domain-fZ-X8i4-.js → domain-C3G_nkHU.js} +46 -46
  36. package/core/built/admin/assets/activitypub/{edit-profile-BqMLQV88.js → edit-profile-C8cCY-AK.js} +927 -928
  37. package/core/built/admin/assets/activitypub/{explore-B4yPoP8E.js → explore-NlDT4inq.js} +11 -11
  38. package/core/built/admin/assets/activitypub/{feed-BRC_mvAe.js → feed-DF22jCTV.js} +10 -10
  39. package/core/built/admin/assets/activitypub/{field-COacNgOt.js → field-95-iuTte.js} +4 -4
  40. package/core/built/admin/assets/activitypub/{hash-C7u-irQQ.js → hash-R7LMLnhY.js} +2 -2
  41. package/core/built/admin/assets/activitypub/{inbox-CbTTdDQ3.js → inbox-DUJUiV6x.js} +2 -2
  42. package/core/built/admin/assets/activitypub/{inbox-BW-yvUoN.js → inbox-DerExBzA.js} +416 -414
  43. package/core/built/admin/assets/activitypub/{label-kPMmYI7l.js → label-EwCn1QYc.js} +4 -4
  44. package/core/built/admin/assets/activitypub/layout-Dy6NnW1G.js +1 -0
  45. package/core/built/admin/assets/activitypub/{moderation-CuidJzc0.js → moderation-BSkfiVYo.js} +73 -75
  46. package/core/built/admin/assets/activitypub/{note-CAMRRSqD.js → note-DOnAJTXK.js} +9 -9
  47. package/core/built/admin/assets/activitypub/{notifications-BmNlXGgp.js → notifications-DZc6XTjG.js} +27 -27
  48. package/core/built/admin/assets/activitypub/{onboarding-Dmun9jr_.js → onboarding-8vEIwYTH.js} +3 -3
  49. package/core/built/admin/assets/activitypub/{onboarding-Bqg7fh_L.js → onboarding-DYVqbNmp.js} +2 -2
  50. package/core/built/admin/assets/activitypub/{preferences--oH19wf9.js → preferences-DDok6F2N.js} +1418 -1390
  51. package/core/built/admin/assets/activitypub/{profile-DH_tQx2D.js → profile-DjVa2hUk.js} +254 -255
  52. package/core/built/admin/assets/activitypub/{reply-Cap9PxSH.js → reply-DtXBpHxu.js} +2 -2
  53. package/core/built/admin/assets/activitypub/routes-Cw302e1c.js +4946 -0
  54. package/core/built/admin/assets/activitypub/{separator-CAxxu8VV.js → separator-FpRpVDd3.js} +8 -9
  55. package/core/built/admin/assets/activitypub/settings-yK-puALn.js +314 -0
  56. package/core/built/admin/assets/activitypub/{site-BYps63oh.js → site-CHw0R2PA.js} +2 -2
  57. package/core/built/admin/assets/activitypub/{step-1-CKjR2KAm.js → step-1-737bnvxk.js} +7 -7
  58. package/core/built/admin/assets/activitypub/{step-2-B6PKfOUQ.js → step-2-DBaIsAsM.js} +7 -7
  59. package/core/built/admin/assets/activitypub/{step-3-C-qBbcUo.js → step-3-BBmy9m9V.js} +23 -23
  60. package/core/built/admin/assets/activitypub/tabs-LQ2xirdm.js +1101 -0
  61. package/core/built/admin/assets/activitypub/{topic-filter-DsUOuu0k.js → topic-filter-75Nu0CKj.js} +4 -4
  62. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CX9snsLs.js → use-activity-pub-queries-CYI2QJMs.js} +58 -58
  63. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-DsJTGDSS.js → use-navigate-with-base-path-B4jZ8hyg.js} +3924 -1403
  64. package/core/built/admin/assets/activitypub/{use-reply-chain-data-AJi9zkzm.js → use-reply-chain-data-BHmFxc3U.js} +6 -6
  65. package/core/built/admin/assets/activitypub/users-CSjOwpT9.js +886 -0
  66. package/core/built/admin/assets/activitypub/{x-DR8AT3-4.js → x-B9ptWCds.js} +2 -2
  67. package/core/built/admin/assets/{add-integration-modal-B12oRifD.js → add-integration-modal-BwePhq95.js} +1 -1
  68. package/core/built/admin/assets/add-newsletter-modal-Zv0I7Msm.js +1 -0
  69. package/core/built/admin/assets/{add-recommendation-modal-CJf92edY.js → add-recommendation-modal-cdLv0wHy.js} +1 -1
  70. package/core/built/admin/assets/analytics-DY8_SaP7.js +1 -0
  71. package/core/built/admin/assets/announcement-bar-modal-C-2yWwag.js +1 -0
  72. package/core/built/admin/assets/api-keys-BHKATUqQ.js +1 -0
  73. package/core/built/admin/assets/{audience-6GXevic-.js → audience-wRcSN0jV.js} +1 -1
  74. package/core/built/admin/assets/{automated-emails-DJQ4uNZo.js → automated-emails-CzUa3v4d.js} +1 -1
  75. package/core/built/admin/assets/automations-DupSsSOr.js +1 -0
  76. package/core/built/admin/assets/badge-CI1Z0xyG.js +1 -0
  77. package/core/built/admin/assets/bluesky-sharing-B8PC1SBj.js +1 -0
  78. package/core/built/admin/assets/box-LUuYRT-1.js +1 -0
  79. package/core/built/admin/assets/brand-icon-CrmbX86T.js +1 -0
  80. package/core/built/admin/assets/breadcrumb-DDDpzLyo.js +1 -0
  81. package/core/built/admin/assets/button-D414TI3B.js +1 -0
  82. package/core/built/admin/assets/calendar-Cp_opo3i.js +1 -0
  83. package/core/built/admin/assets/card-C2dfd5u0.js +1 -0
  84. package/core/built/admin/assets/chart-B_UNLXse.js +63 -0
  85. package/core/built/admin/assets/chart-helpers-Czu_9QpJ.js +1 -0
  86. package/core/built/admin/assets/checkbox-CFFqf0Nh.js +1 -0
  87. package/core/built/admin/assets/{chunk.368.22ce1b732c0b40abd3f1.js → chunk.201.6961b57ed7a281ac193e.js} +23 -19
  88. package/core/built/admin/assets/chunk.524.0b850e72ec49a0fa3882.js +25 -0
  89. package/core/built/admin/assets/chunk.582.db2ae9e968256e8d58ac.js +27 -0
  90. package/core/built/admin/assets/code-editor-view-Bd_nnHKk.js +1 -0
  91. package/core/built/admin/assets/code-editor-view-BeU3Yf9M.js +1 -0
  92. package/core/built/admin/assets/color-picker-Bzm1V7qg.js +3 -0
  93. package/core/built/admin/assets/color-picker-field-DP0moHz9.js +1 -0
  94. package/core/built/admin/assets/combobox-6_ruuTuj.js +1 -0
  95. package/core/built/admin/assets/command-B5wfm6pd.js +1 -0
  96. package/core/built/admin/assets/comments-BB26dUSl.js +1 -0
  97. package/core/built/admin/assets/confirmation-context-znVJD4pX.js +1 -0
  98. package/core/built/admin/assets/container-CHHif8km.js +1 -0
  99. package/core/built/admin/assets/{content-api-modal-0ZjuLcQ8.js → content-api-modal-DOHwl0yZ.js} +1 -1
  100. package/core/built/admin/assets/context-menu-BpY46Dlb.js +1 -0
  101. package/core/built/admin/assets/copy-field-DRBx6Ady.js +1 -0
  102. package/core/built/admin/assets/create-ghost-browse-value-source-eIXo5Qws.js +1 -0
  103. package/core/built/admin/assets/custom-field-type-option-DrSlETOI.js +1 -0
  104. package/core/built/admin/assets/custom-integration-modal-Dgo425Ec.js +1 -0
  105. package/core/built/admin/assets/data-list-DM8yqpXi.js +1 -0
  106. package/core/built/admin/assets/date-range-select-DdC23c13.js +1 -0
  107. package/core/built/admin/assets/design-and-theme-modal-CbSu9IT4.js +2 -0
  108. package/core/built/admin/assets/detail-page-CN4NdhpV.js +1 -0
  109. package/core/built/admin/assets/dirty-confirm-dialog-BT_Vq9TD.js +1 -0
  110. package/core/built/admin/assets/{disabled-sources-indicator-CLZhMv8J.js → disabled-sources-indicator-C5xtW0Q2.js} +1 -1
  111. package/core/built/admin/assets/dist-B40T-RCQ.js +1 -0
  112. package/core/built/admin/assets/dist-CrlaEoaK.js +1 -0
  113. package/core/built/admin/assets/domain-BPReCZa8.js +1 -0
  114. package/core/built/admin/assets/dropzone-B2auMkf2.js +5 -0
  115. package/core/built/admin/assets/edit-profile-B7XTBzKe.js +1 -0
  116. package/core/built/admin/assets/editor-BcaC9dqm.js +8 -0
  117. package/core/built/admin/assets/editor-screen-FuMpItC8.js +27 -0
  118. package/core/built/admin/assets/email-sending-status-provider-9d81o1C2.js +1 -0
  119. package/core/built/admin/assets/embed-signup-form-modal-CbVbMsxl.js +8 -0
  120. package/core/built/admin/assets/empty-indicator-CSQts7GV.js +1 -0
  121. package/core/built/admin/assets/explore-DbSXFTJN.js +1 -0
  122. package/core/built/admin/assets/feature-image-placeholder-DFXA4vfJ.js +1 -0
  123. package/core/built/admin/assets/feed-W7RlF-Gp.js +1 -0
  124. package/core/built/admin/assets/field-BXEh3ptU.js +1 -0
  125. package/core/built/admin/assets/filter-sources-DHK2IoCk.js +1 -0
  126. package/core/built/admin/assets/filters-0SYNTqyQ.js +1 -0
  127. package/core/built/admin/assets/filters-DTtZKQyq.js +1 -0
  128. package/core/built/admin/assets/{first-promoter-modal-wr73Dldc.js → first-promoter-modal-DcoN_OXu.js} +1 -1
  129. package/core/built/admin/assets/{ghost-a1e6e172c6917e8ef8fa6b0007756d9b.js → ghost-25495154132af7305cb7b646fd83f48f.js} +562 -514
  130. package/core/built/admin/assets/gift-link-modal-BX-Q1TOk.js +1 -0
  131. package/core/built/admin/assets/grid-BEUIDQX7.js +1 -0
  132. package/core/built/admin/assets/growth-G6PLO4aF.js +1 -0
  133. package/core/built/admin/assets/growth-tkD-fBOY.js +3 -0
  134. package/core/built/admin/assets/heading-ih-fOVqF.js +1 -0
  135. package/core/built/admin/assets/history-modal-Ca-gStoq.js +1 -0
  136. package/core/built/admin/assets/html-field-B3CrKV9Y.js +1 -0
  137. package/core/built/admin/assets/images-H-BIm8OQ.js +1 -0
  138. package/core/built/admin/assets/{inbox-DgSZ6w2p.js → inbox-DBbDVMPz.js} +14 -14
  139. package/core/built/admin/assets/index-DOF2jDq0.js +4 -0
  140. package/core/built/admin/assets/index-JrrNchW1.css +2 -0
  141. package/core/built/admin/assets/input-group-CvH-3d3F.js +1 -0
  142. package/core/built/admin/assets/input-surface-CL23Mlh8.js +1 -0
  143. package/core/built/admin/assets/integration-header-C7GXGis_.js +1 -0
  144. package/core/built/admin/assets/invite-user-modal-EJ2_6RpV.js +1 -0
  145. package/core/built/admin/assets/isPlainObject-BzzgUf1E.js +1 -0
  146. package/core/built/admin/assets/{koenig-lexical-CXVgQFUk.js → koenig-lexical-Dkwee5FG.js} +1 -1
  147. package/core/built/admin/assets/koenig-loader-BzXCXHoA.js +2 -0
  148. package/core/built/admin/assets/kpi-card-iCDUTgOR.js +1 -0
  149. package/core/built/admin/assets/kpi-card-jTnpLKGr.js +1 -0
  150. package/core/built/admin/assets/kpi-helpers-Criu0YAf.js +1 -0
  151. package/core/built/admin/assets/kpi-tabs-DbOmmyOo.js +1 -0
  152. package/core/built/admin/assets/label-Du0yqMqL.js +1 -0
  153. package/core/built/admin/assets/label-picker-Bq1XXr1D.js +1 -0
  154. package/core/built/admin/assets/{labels-KMkFoRG6.js → labels-0x2NfLtC.js} +1 -1
  155. package/core/built/admin/assets/layout-Ckwzsnsu.js +1 -0
  156. package/core/built/admin/assets/lib-CCz2mjm8.js +2 -0
  157. package/core/built/admin/assets/link-helpers-o9GgBTni.js +1 -0
  158. package/core/built/admin/assets/{links-FwNCVyVe.js → links-Ctujreuh.js} +1 -1
  159. package/core/built/admin/assets/list-page-CH_wnDC3.js +1 -0
  160. package/core/built/admin/assets/member-activity-CsAh6MxK.js +1 -0
  161. package/core/built/admin/assets/member-activity-feed-0ytsQbtY.js +1 -0
  162. package/core/built/admin/assets/member-custom-fields-CTFGnnYv.js +1 -0
  163. package/core/built/admin/assets/member-detail-QU3vB1ML.js +1 -0
  164. package/core/built/admin/assets/members-CtMVO_AB.js +4 -0
  165. package/core/built/admin/assets/modal-page-8Ipfl51B.js +1 -0
  166. package/core/built/admin/assets/moderation-B8VtA-W0.js +1 -0
  167. package/core/built/admin/assets/multi-select-combobox-_9wEYmGv.js +1 -0
  168. package/core/built/admin/assets/navigation-modal-CGcjJvkc.js +1 -0
  169. package/core/built/admin/assets/newsletter-BpHjjqmq.js +1 -0
  170. package/core/built/admin/assets/newsletter-detail-modal-DzTbGOyo.js +1 -0
  171. package/core/built/admin/assets/newsletter-emails-BMKH4Osp.js +1 -0
  172. package/core/built/admin/assets/newsletters-BxC84_cL.js +1 -0
  173. package/core/built/admin/assets/note-BPtEzzZS.js +1 -0
  174. package/core/built/admin/assets/notifications-ng3ulEdp.js +1 -0
  175. package/core/built/admin/assets/offers-container-modal-CwqnRa3T.js +1 -0
  176. package/core/built/admin/assets/onboarding-route-CplZzd7F.js +1 -0
  177. package/core/built/admin/assets/overview-B0yD9OoX.js +1 -0
  178. package/core/built/admin/assets/overview-C4eJzQqi.js +1 -0
  179. package/core/built/admin/assets/page-header-CdCpekG9.js +1 -0
  180. package/core/built/admin/assets/pagemenu-CKQD9hoP.js +1 -0
  181. package/core/built/admin/assets/pages-route-CKsnxIvw.js +1 -0
  182. package/core/built/admin/assets/{pintura-modal-BljM7hf8.js → pintura-modal-C5jzeyGk.js} +1 -1
  183. package/core/built/admin/assets/portal-frame-DYo0bh0E.js +1 -0
  184. package/core/built/admin/assets/portal-modal-C0d8xjKa.js +1 -0
  185. package/core/built/admin/assets/post-analytics-C5C7IyAm.js +1 -0
  186. package/core/built/admin/assets/post-analytics-header-DKWHwoK2.js +1 -0
  187. package/core/built/admin/assets/{post-analytics-provider-CgreZDjS.js → post-analytics-provider-BqCPPxmW.js} +1 -1
  188. package/core/built/admin/assets/post-share-modal-wxmqbAv_.js +1 -0
  189. package/core/built/admin/assets/posts-list-screen-B978ZO0R.js +2 -0
  190. package/core/built/admin/assets/posts-route-CDqxKazl.js +1 -0
  191. package/core/built/admin/assets/preferences-CnejTRc4.js +5 -0
  192. package/core/built/admin/assets/preview-chrome-C7yZWVLZ.js +1 -0
  193. package/core/built/admin/assets/preview-modal-CFUxUGHp.js +1 -0
  194. package/core/built/admin/assets/profile-ClRGiOqA.js +1 -0
  195. package/core/built/admin/assets/radio-group-CTmLo0h9.js +1 -0
  196. package/core/built/admin/assets/router-provider-DDZvgS3V.js +1 -0
  197. package/core/built/admin/assets/select-D_4xWFYv.js +1 -0
  198. package/core/built/admin/assets/settings-BRl7-7a9.js +1 -0
  199. package/core/built/admin/assets/settings-BoQcPa-y.js +4 -0
  200. package/core/built/admin/assets/settings-breadcrumbs-C9Yxl81q.js +1 -0
  201. package/core/built/admin/assets/{dist-BXHrDV19.js → shade-scope-Cccj-c7I-D0XwkdKQ.js} +5 -3
  202. package/core/built/admin/assets/share-modal-DBqZobuR.js +1 -0
  203. package/core/built/admin/assets/simple-pagination-D5t_ox6x.js +1 -0
  204. package/core/built/admin/assets/skeleton-CPcTiTSX.js +1 -0
  205. package/core/built/admin/assets/{slack-modal-D7W_fNON.js → slack-modal-BF9ex8cd.js} +1 -1
  206. package/core/built/admin/assets/sort-button-C0EXGjnS.js +1 -0
  207. package/core/built/admin/assets/{source-icon-CQboPZQ3.js → source-icon-BzzftCQ2.js} +1 -1
  208. package/core/built/admin/assets/stats-view-CzpGoHzF.js +1 -0
  209. package/core/built/admin/assets/{step-1-BKhjy0PV.js → step-1-CBUYUPPF.js} +1 -1
  210. package/core/built/admin/assets/{step-2-PxA1OM7R.js → step-2-CEIXUwQa.js} +1 -1
  211. package/core/built/admin/assets/{step-3-BJbAiq16.js → step-3-C1HA5i1N.js} +2 -2
  212. package/core/built/admin/assets/stripe-button-DMFsLs80.js +1 -0
  213. package/core/built/admin/assets/stripe-connect-modal-CEvxCUTv.js +1 -0
  214. package/core/built/admin/assets/switch-DoOJF2yg.js +1 -0
  215. package/core/built/admin/assets/table-BDYbUHJz.js +1 -0
  216. package/core/built/admin/assets/tabs-BZyz4ZCH.js +1 -0
  217. package/core/built/admin/assets/tag-detail-CFzaz_9E.js +2 -0
  218. package/core/built/admin/assets/tag-picker-BKUCZuRc.js +1 -0
  219. package/core/built/admin/assets/tags-Bs1FiD7m.js +1 -0
  220. package/core/built/admin/assets/{testimonials-modal-Dkt6ODLW.js → testimonials-modal-CVm0_7E-.js} +1 -1
  221. package/core/built/admin/assets/text-BLI0C8Mc.js +1 -0
  222. package/core/built/admin/assets/textarea-C5qolByg.js +1 -0
  223. package/core/built/admin/assets/tier-detail-modal-Cmwzi-e7.js +1 -0
  224. package/core/built/admin/assets/toggle-group-BTL1QsWY.js +1 -0
  225. package/core/built/admin/assets/{topic-filter-DVOe3D-b.js → topic-filter-BMjhquv7.js} +1 -1
  226. package/core/built/admin/assets/transistor-modal-hMv53jF8.js +1 -0
  227. package/core/built/admin/assets/trend-badge-1w_HEzkG.js +1 -0
  228. package/core/built/admin/assets/{unsplash-modal-DXt7Brum.js → unsplash-modal-jzC8lEB2.js} +1 -1
  229. package/core/built/admin/assets/use-analytics-data-B3lGOxsC.js +1 -0
  230. package/core/built/admin/assets/use-availability-DnKqOyqd.js +1 -0
  231. package/core/built/admin/assets/{use-check-theme-limit-error-JD-J5aaZ.js → use-check-theme-limit-error-C1tc2P4N.js} +2 -2
  232. package/core/built/admin/assets/use-filter-params-DU-aiaTb.js +1 -0
  233. package/core/built/admin/assets/{use-filterable-api-CEMSAYPg.js → use-filterable-api-CxCrnPxG.js} +1 -1
  234. package/core/built/admin/assets/use-growth-stats-E13rMQUE.js +1 -0
  235. package/core/built/admin/assets/use-limiter-DlL7au90.js +19 -0
  236. package/core/built/admin/assets/{use-navigate-with-base-path-88EQpw2k.js → use-navigate-with-base-path-BzgNwMAx.js} +1 -1
  237. package/core/built/admin/assets/{use-pintura-config-BmU45Ruy.js → use-pintura-config-CtEV1JQY.js} +1 -1
  238. package/core/built/admin/assets/{use-pintura-editor-Bz2bZ4iT.js → use-pintura-editor-CaxE64kD.js} +1 -1
  239. package/core/built/admin/assets/use-reply-chain-data-BST2OgCM.js +1 -0
  240. package/core/built/admin/assets/use-sending-eta-DR9ueMH8.js +1 -0
  241. package/core/built/admin/assets/use-setting-group-ldtX1Vsk.js +1 -0
  242. package/core/built/admin/assets/use-settings-navigation-CzGU4sus.js +1 -0
  243. package/core/built/admin/assets/use-staff-users-DoeXaPsb.js +1 -0
  244. package/core/built/admin/assets/use-tinybird-query-BaBNCaj0.js +1 -0
  245. package/core/built/admin/assets/{use-tinybird-token-Lk1RSn0t.js → use-tinybird-token-CnZ19NDf.js} +1 -1
  246. package/core/built/admin/assets/{use-url-input-DpmbDppC.js → use-url-input-C5KHJw79.js} +1 -1
  247. package/core/built/admin/assets/user-detail-modal-Dm0KfPeR.js +1 -0
  248. package/core/built/admin/assets/{vendor-2dd263291938d407802568d3357ec69e.js → vendor-97e91ff8dd1457c668f9ef103ee1a77b.js} +2748 -2977
  249. package/core/built/admin/assets/virtual-list-tAuPUICw.js +1 -0
  250. package/core/built/admin/assets/web-BQlKcW2x.js +2 -0
  251. package/core/built/admin/assets/web-NTT5DkEz.js +1 -0
  252. package/core/built/admin/assets/{zapier-modal-BafLUO4R.js → zapier-modal-DsHG9Oev.js} +1 -1
  253. package/core/built/admin/index.html +22 -24
  254. package/core/frontend/apps/private-blogging/index.js +2 -2
  255. package/core/frontend/apps/private-blogging/lib/middleware.js +1 -1
  256. package/core/frontend/apps/private-blogging/lib/router.js +1 -1
  257. package/core/frontend/helpers/cancel_link.js +3 -3
  258. package/core/frontend/helpers/content.js +2 -2
  259. package/core/frontend/helpers/content_api_url.js +1 -1
  260. package/core/frontend/helpers/date.js +1 -1
  261. package/core/frontend/helpers/foreach.js +5 -5
  262. package/core/frontend/helpers/get.js +7 -4
  263. package/core/frontend/helpers/ghost_head.js +2 -2
  264. package/core/frontend/helpers/has.js +1 -3
  265. package/core/frontend/helpers/link.js +7 -7
  266. package/core/frontend/helpers/link_class.js +2 -2
  267. package/core/frontend/helpers/navigation.js +1 -2
  268. package/core/frontend/helpers/recommendations.js +5 -6
  269. package/core/frontend/helpers/tiers.js +1 -1
  270. package/core/frontend/helpers/total_members.js +1 -1
  271. package/core/frontend/helpers/total_paid_members.js +1 -1
  272. package/core/frontend/meta/author-url.js +1 -1
  273. package/core/frontend/meta/modified-date.js +1 -1
  274. package/core/frontend/meta/published-date.js +1 -1
  275. package/core/frontend/meta/schema.js +3 -8
  276. package/core/frontend/meta/structured-data.js +1 -2
  277. package/core/frontend/services/assets-minification/minifier.js +1 -1
  278. package/core/frontend/services/data/entry-lookup.js +1 -1
  279. package/core/frontend/services/data/fetch-data.js +2 -2
  280. package/core/frontend/services/rendering/format-response.js +1 -1
  281. package/core/frontend/services/rendering/renderer.js +3 -0
  282. package/core/frontend/services/rendering/templates.js +1 -1
  283. package/core/frontend/services/routing/controllers/static.js +1 -1
  284. package/core/frontend/services/routing/parent-router.js +1 -1
  285. package/core/frontend/services/routing/registry.js +1 -1
  286. package/core/frontend/services/sitemap/base-site-map-generator.js +68 -97
  287. package/core/frontend/services/sitemap/site-map-index-generator.js +16 -21
  288. package/core/frontend/services/sitemap/site-map-manager.js +82 -43
  289. package/core/frontend/services/sitemap/sitemap-xml.js +72 -0
  290. package/core/frontend/services/theme-engine/handlebars/utils.js +8 -8
  291. package/core/frontend/services/theme-engine/i18n/i18n.js +4 -5
  292. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +1 -1
  293. package/core/frontend/services/theme-engine/preview.js +1 -1
  294. package/core/frontend/utils/member-count.js +2 -2
  295. package/core/frontend/web/routers/serve-public-file.js +1 -1
  296. package/core/server/adapters/scheduling/README.md +4 -0
  297. package/core/server/adapters/scheduling/get-scheduler-idempotency-key.js +21 -0
  298. package/core/server/adapters/storage/LocalStorageBase.js +2 -1
  299. package/core/server/api/endpoints/automated-emails.js +8 -2
  300. package/core/server/api/endpoints/db.js +1 -1
  301. package/core/server/api/endpoints/emails.js +3 -3
  302. package/core/server/api/endpoints/mail.js +1 -1
  303. package/core/server/api/endpoints/member-signin-urls.js +1 -1
  304. package/core/server/api/endpoints/members.js +3 -3
  305. package/core/server/api/endpoints/oembed.js +1 -1
  306. package/core/server/api/endpoints/posts.js +1 -1
  307. package/core/server/api/endpoints/settings.js +2 -2
  308. package/core/server/api/endpoints/themes.js +5 -5
  309. package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -2
  310. package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
  311. package/core/server/api/endpoints/utils/serializers/input/tags.js +1 -1
  312. package/core/server/api/endpoints/utils/serializers/input/utils/slug-filter-order.js +4 -4
  313. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +8 -5
  314. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
  315. package/core/server/api/endpoints/utils/serializers/output/pages.js +4 -4
  316. package/core/server/api/endpoints/utils/serializers/output/posts.js +4 -4
  317. package/core/server/api/endpoints/utils/serializers/output/search-index.js +11 -11
  318. package/core/server/api/endpoints/utils/serializers/output/settings.js +1 -1
  319. package/core/server/api/endpoints/utils/serializers/output/utils/extra-attrs.js +3 -3
  320. package/core/server/api/endpoints/utils/validators/input/automated_emails.js +23 -33
  321. package/core/server/api/endpoints/utils/validators/input/settings.js +3 -3
  322. package/core/server/data/exporter/exporter.js +1 -2
  323. package/core/server/data/exporter/table-lists.js +1 -0
  324. package/core/server/data/importer/handlers/image.js +1 -2
  325. package/core/server/data/importer/handlers/json.js +1 -3
  326. package/core/server/data/importer/handlers/markdown.js +4 -8
  327. package/core/server/data/importer/import-manager.js +1 -1
  328. package/core/server/data/importer/importers/content-file-importer.js +4 -8
  329. package/core/server/data/importer/importers/data/base.js +10 -10
  330. package/core/server/data/importer/importers/data/custom-theme-settings-importer.js +1 -1
  331. package/core/server/data/importer/importers/data/data-importer.js +3 -4
  332. package/core/server/data/importer/importers/data/posts-importer.js +10 -10
  333. package/core/server/data/importer/importers/data/products-importer.js +3 -3
  334. package/core/server/data/importer/importers/data/settings-importer.js +2 -2
  335. package/core/server/data/importer/importers/data/stripe-prices-importer.js +1 -1
  336. package/core/server/data/importer/importers/data/stripe-products-importer.js +1 -1
  337. package/core/server/data/importer/importers/data/tags-importer.js +1 -1
  338. package/core/server/data/importer/importers/data/users-importer.js +2 -2
  339. package/core/server/data/importer/importers/json-to-html.js +12 -9
  340. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +1 -1
  341. package/core/server/data/migrations/versions/6.65/2026-09-16-15-35-26-add-members-metafield-change-events.js +17 -0
  342. package/core/server/data/schema/fixtures/fixture-manager.js +3 -3
  343. package/core/server/data/schema/index.js +1 -1
  344. package/core/server/data/schema/schema.js +26 -0
  345. package/core/server/data/schema/validator.js +96 -123
  346. package/core/server/data/seeders/importers/email-recipients-importer.js +2 -2
  347. package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
  348. package/core/server/data/seeders/importers/members-newsletters-importer.js +1 -1
  349. package/core/server/data/seeders/importers/members-paid-subscription-events-importer.js +1 -1
  350. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -1
  351. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +1 -1
  352. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +1 -1
  353. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +2 -2
  354. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
  355. package/core/server/data/tinybird/pipes/mv_hits.pipe +25 -20
  356. package/core/server/data/tinybird/scripts/docker-analytics-manager.js +2 -2
  357. package/core/server/ghost-server.js +1 -19
  358. package/core/server/lib/image/image-size.js +1 -3
  359. package/core/server/lib/request-external.js +53 -117
  360. package/core/server/models/base/plugins/actions.js +2 -3
  361. package/core/server/models/base/plugins/crud.js +1 -2
  362. package/core/server/models/base/plugins/events.js +4 -4
  363. package/core/server/models/base/plugins/raw-knex.js +3 -3
  364. package/core/server/models/base/plugins/sanitize.js +1 -1
  365. package/core/server/models/benefit.js +1 -1
  366. package/core/server/models/collection.js +1 -1
  367. package/core/server/models/comment.js +3 -3
  368. package/core/server/models/invite.js +2 -5
  369. package/core/server/models/label.js +3 -6
  370. package/core/server/models/member.js +7 -10
  371. package/core/server/models/newsletter.js +1 -1
  372. package/core/server/models/permission.js +3 -6
  373. package/core/server/models/post.js +20 -23
  374. package/core/server/models/product.js +4 -1
  375. package/core/server/models/relations/authors.js +9 -12
  376. package/core/server/models/role.js +2 -5
  377. package/core/server/models/settings.js +3 -3
  378. package/core/server/models/tag.js +2 -5
  379. package/core/server/models/user.js +8 -10
  380. package/core/server/models/webhook.js +2 -4
  381. package/core/server/notify.js +2 -2
  382. package/core/server/services/adapter-manager/utils.js +6 -1
  383. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +2 -2
  384. package/core/server/services/auth/api-key/admin.js +2 -2
  385. package/core/server/services/auth/api-key/content.js +1 -1
  386. package/core/server/services/auth/passwordreset.js +1 -1
  387. package/core/server/services/auth/setup.js +1 -3
  388. package/core/server/services/automations/README.md +19 -0
  389. package/core/server/services/automations/poll.js +3 -1
  390. package/core/server/services/automations/service.js +2 -2
  391. package/core/server/services/automations/welcome-email-automation-poll.js +199 -293
  392. package/core/server/services/comments/comments-controller.js +9 -30
  393. package/core/server/services/comments/comments-service-email-renderer.js +1 -1
  394. package/core/server/services/comments/comments-service-emails.js +1 -1
  395. package/core/server/services/comments/comments-service.js +27 -58
  396. package/core/server/services/comments/comments-stats-service.js +1 -1
  397. package/core/server/services/content-import/import/staged-file.js +9 -9
  398. package/core/server/services/content-import/index.js +1 -1
  399. package/core/server/services/custom-redirects/validation.js +1 -1
  400. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +23 -55
  401. package/core/server/services/email-analytics/index.js +35 -19
  402. package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.js +31 -60
  403. package/core/server/services/email-service/README.md +35 -0
  404. package/core/server/services/email-service/batch-sending-service.js +13 -14
  405. package/core/server/services/email-service/email-renderer.js +50 -14
  406. package/core/server/services/email-service/email-service-wrapper.js +3 -2
  407. package/core/server/services/email-service/email-service.js +33 -8
  408. package/core/server/services/email-service/email-templates/partials/feedback-button.hbs +2 -1
  409. package/core/server/services/email-service/email-templates/partials/styles.hbs +0 -6
  410. package/core/server/services/email-service/email-templates/template.hbs +1 -1
  411. package/core/server/services/email-service/jobs/send-email-job.js +12 -0
  412. package/core/server/services/email-service/mailgun-email-provider.js +7 -2
  413. package/core/server/services/email-service/sending-service.js +1 -1
  414. package/core/server/services/gifts/gift-service.js +12 -3
  415. package/core/server/services/gifts/index.js +0 -2
  416. package/core/server/services/gifts/jobs/index.js +12 -24
  417. package/core/server/services/gifts/jobs/send-gift-reminders-job.js +6 -46
  418. package/core/server/services/invitations/accept.js +2 -2
  419. package/core/server/services/jobs/job-service.js +0 -28
  420. package/core/server/services/jobs-service/jobs-service.js +5 -0
  421. package/core/server/services/jobs-service/register-job-handlers.js +17 -1
  422. package/core/server/services/lib/mailgun-client.js +16 -1
  423. package/core/server/services/lib/mailgun-recipient-message-id.js +49 -0
  424. package/core/server/services/limits.js +1 -1
  425. package/core/server/services/mail/ghost-mailer.js +1 -1
  426. package/core/server/services/member-attribution/member-attribution-service.js +1 -1
  427. package/core/server/services/member-attribution/referrer-translator.js +1 -1
  428. package/core/server/services/members/account-service.js +3 -3
  429. package/core/server/services/members/api.js +1 -1
  430. package/core/server/services/members/import-export/import/importer.js +25 -16
  431. package/core/server/services/members/import-export/import/spool.js +11 -15
  432. package/core/server/services/members/import-export/index.js +6 -4
  433. package/core/server/services/members/jobs/index.js +1 -1
  434. package/core/server/services/members/jobs/members-import-job.js +18 -0
  435. package/core/server/services/members/member-avatar.js +18 -0
  436. package/core/server/services/members/members-api/controllers/member-controller.js +2 -2
  437. package/core/server/services/members/members-api/members-api.js +4 -4
  438. package/core/server/services/members/members-api/repositories/event-repository.js +36 -1
  439. package/core/server/services/members/members-api/repositories/member-repository.js +55 -17
  440. package/core/server/services/members/members-api/repositories/product-repository.js +1 -1
  441. package/core/server/services/members/members-api/services/member-bread-service.js +4 -7
  442. package/core/server/services/members/service.js +7 -2
  443. package/core/server/services/members/stats/members-stats.js +2 -2
  444. package/core/server/services/members-events/event-storage.js +2 -2
  445. package/core/server/services/members-metafields/actions.js +23 -2
  446. package/core/server/services/members-metafields/bindings-service.js +5 -5
  447. package/core/server/services/members-metafields/definitions-service.js +2 -7
  448. package/core/server/services/members-metafields/index.js +2 -1
  449. package/core/server/services/members-metafields/queries.js +7 -1
  450. package/core/server/services/members-metafields/schema.js +49 -1
  451. package/core/server/services/members-metafields/values-service.js +112 -10
  452. package/core/server/services/mentions/mention-sending-service.js +2 -2
  453. package/core/server/services/mentions/mention.js +3 -4
  454. package/core/server/services/mentions/mentions-api.js +4 -1
  455. package/core/server/services/mentions-jobs/job-service.js +0 -28
  456. package/core/server/services/milestones/milestones-service.js +1 -1
  457. package/core/server/services/newsletters/newsletters-service.js +1 -1
  458. package/core/server/services/notifications/notifications.js +3 -3
  459. package/core/server/services/oembed/oembed-service.js +79 -3
  460. package/core/server/services/permissions/can-this.js +1 -2
  461. package/core/server/services/post-scheduling/post-scheduling.js +8 -1
  462. package/core/server/services/posts/post-scheduling.js +7 -0
  463. package/core/server/services/settings/settings-bread-service.js +3 -3
  464. package/core/server/services/settings/settings-utils.js +1 -1
  465. package/core/server/services/settings-helpers/settings-helpers.js +1 -1
  466. package/core/server/services/staff/staff-service-emails.js +9 -9
  467. package/core/server/services/stats/posts-stats-service.js +10 -10
  468. package/core/server/services/stats/referrers-stats-service.js +1 -1
  469. package/core/server/services/stats/subscription-stats-service.js +3 -3
  470. package/core/server/services/stats/utils/tinybird.js +8 -1
  471. package/core/server/services/stripe/stripe-api.js +3 -3
  472. package/core/server/services/stripe/stripe-migrations.js +6 -6
  473. package/core/server/services/themes/storage.js +21 -26
  474. package/core/server/services/themes/theme-storage.js +2 -2
  475. package/core/server/services/tiers/tier.js +15 -15
  476. package/core/server/services/tinybird-sync/index.js +3 -0
  477. package/core/server/services/tinybird-sync/tinybird-sync-service.js +7 -2
  478. package/core/server/services/update-check/update-check-service.js +3 -3
  479. package/core/server/services/webhooks/serialize.js +1 -1
  480. package/core/server/web/api/app.js +0 -5
  481. package/core/server/web/api/middleware/upload.js +29 -2
  482. package/core/server/web/parent/middleware/index.js +1 -1
  483. package/core/server/web/parent/middleware/log-request.js +5 -0
  484. package/core/server/web/parent/middleware/queue-request.js +104 -59
  485. package/core/server/web/shared/middleware/api/spam-prevention.js +2 -2
  486. package/core/shared/config/defaults.json +6 -1
  487. package/core/shared/custom-theme-settings-cache/custom-theme-settings-service.js +1 -1
  488. package/core/shared/labs.js +3 -2
  489. package/core/shared/settings-cache/cache-manager.js +1 -1
  490. package/nodemon.json +1 -1
  491. package/package.json +6 -7
  492. package/pnpm-lock.yaml +126 -728
  493. package/pnpm-workspace.yaml +4 -7
  494. package/tsconfig.json +1 -1
  495. package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
  496. package/core/built/admin/assets/Combination-DWfJPcz9.js +0 -41
  497. package/core/built/admin/assets/RadialBarChart-CHRBhiBN.js +0 -1
  498. package/core/built/admin/assets/_baseAssignValue-DcPokYW8.js +0 -1
  499. package/core/built/admin/assets/accordion-CJmRaqK7.js +0 -1
  500. package/core/built/admin/assets/account-migration-DYf7skbb.js +0 -1
  501. package/core/built/admin/assets/action-list-Crnh-_UI.js +0 -1
  502. package/core/built/admin/assets/activitypub/avatar-DVJF5bxP.js +0 -261
  503. package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +0 -1
  504. package/core/built/admin/assets/activitypub/routes-DdyY9uFF.js +0 -7181
  505. package/core/built/admin/assets/activitypub/settings-B6EEcVkW.js +0 -315
  506. package/core/built/admin/assets/activitypub/tabs-DLhZtVde.js +0 -1083
  507. package/core/built/admin/assets/activitypub/users-inweyKL5.js +0 -1499
  508. package/core/built/admin/assets/add-newsletter-modal-CTvXiIqY.js +0 -1
  509. package/core/built/admin/assets/analytics-PHR1Fggi.js +0 -1
  510. package/core/built/admin/assets/announcement-bar-modal-Bql0CXdp.js +0 -1
  511. package/core/built/admin/assets/api-keys-CubH-7_H.js +0 -1
  512. package/core/built/admin/assets/automations-DcZSLFDU.js +0 -1
  513. package/core/built/admin/assets/badge-qP06OT7C.js +0 -1
  514. package/core/built/admin/assets/bluesky-sharing-CJw4d4Mf.js +0 -1
  515. package/core/built/admin/assets/box-CZ_LSVSy.js +0 -1
  516. package/core/built/admin/assets/brand-icon-D3ffDYaC.js +0 -1
  517. package/core/built/admin/assets/breadcrumb-Chn1Ip_q.js +0 -1
  518. package/core/built/admin/assets/button-DvIh2Bq-.js +0 -1
  519. package/core/built/admin/assets/calendar-1QGoStFM.js +0 -1
  520. package/core/built/admin/assets/card-FHQ4D10L.js +0 -1
  521. package/core/built/admin/assets/chart-helpers-CNpA7re_.js +0 -1
  522. package/core/built/admin/assets/chart-jVz9Nf9t.js +0 -63
  523. package/core/built/admin/assets/checkbox-DKht9xMl.js +0 -1
  524. package/core/built/admin/assets/chunk.524.cc9be98e44890cedc8c8.js +0 -25
  525. package/core/built/admin/assets/chunk.582.e6fe742b3217207b11a6.js +0 -27
  526. package/core/built/admin/assets/code-editor-view-BLQIV85-.js +0 -1
  527. package/core/built/admin/assets/code-editor-view-Cg5eJxcr.js +0 -1
  528. package/core/built/admin/assets/color-picker-DQoghc0t.js +0 -3
  529. package/core/built/admin/assets/color-picker-field-BbeK5RRs.js +0 -1
  530. package/core/built/admin/assets/combobox-weO4FBbv.js +0 -1
  531. package/core/built/admin/assets/command-DlLrCm9V.js +0 -1
  532. package/core/built/admin/assets/comments-BjTitLmP.js +0 -1
  533. package/core/built/admin/assets/confirmation-context-IyqoXVk-.js +0 -1
  534. package/core/built/admin/assets/container-DAimjOF_.js +0 -1
  535. package/core/built/admin/assets/context-menu-BtioYFrg.js +0 -1
  536. package/core/built/admin/assets/copy-field-C6ujqJlP.js +0 -1
  537. package/core/built/admin/assets/create-ghost-browse-value-source-DAZMWZNq.js +0 -1
  538. package/core/built/admin/assets/custom-integration-modal-Dm8QI_J4.js +0 -1
  539. package/core/built/admin/assets/data-list-C0CKkeWW.js +0 -1
  540. package/core/built/admin/assets/date-range-select-DrjHQdgz.js +0 -1
  541. package/core/built/admin/assets/design-and-theme-modal-CXVOzBWu.js +0 -2
  542. package/core/built/admin/assets/detail-page-QpLIL-EO.js +0 -1
  543. package/core/built/admin/assets/dirty-confirm-dialog-DWwxREGh.js +0 -1
  544. package/core/built/admin/assets/dist-Bf-HQtVL.js +0 -1
  545. package/core/built/admin/assets/dist-CUwte9v_.js +0 -1
  546. package/core/built/admin/assets/dist-FEQQAwTe.js +0 -1
  547. package/core/built/admin/assets/domain-DBrBic6q.js +0 -1
  548. package/core/built/admin/assets/dropzone-D61QVcEY.js +0 -5
  549. package/core/built/admin/assets/edit-profile-jCqJBxqw.js +0 -1
  550. package/core/built/admin/assets/editor-8Fm4UBEd.js +0 -8
  551. package/core/built/admin/assets/editor-screen-BSX_uC2B.js +0 -27
  552. package/core/built/admin/assets/email-sending-status-provider-DnNhlIvt.js +0 -1
  553. package/core/built/admin/assets/embed-signup-form-modal-DqtBs1WE.js +0 -8
  554. package/core/built/admin/assets/empty-indicator-L4Ql5Db7.js +0 -1
  555. package/core/built/admin/assets/en-Cx75dJv5.js +0 -1
  556. package/core/built/admin/assets/explore-DXhDCtKw.js +0 -1
  557. package/core/built/admin/assets/feature-image-placeholder-e2q6TcH6.js +0 -1
  558. package/core/built/admin/assets/feed-mmt4noNL.js +0 -1
  559. package/core/built/admin/assets/field-p7KnP98B.js +0 -1
  560. package/core/built/admin/assets/filter-bar-CiIKBg3D.js +0 -1
  561. package/core/built/admin/assets/filter-sources-I-dRaQxl.js +0 -1
  562. package/core/built/admin/assets/filters-1injvyxJ.js +0 -1
  563. package/core/built/admin/assets/filters-DnpO6GWX.js +0 -1
  564. package/core/built/admin/assets/gift-link-modal-C3H7YFXO.js +0 -1
  565. package/core/built/admin/assets/grid-5vplBYri.js +0 -1
  566. package/core/built/admin/assets/growth-B1og1kQp.js +0 -1
  567. package/core/built/admin/assets/growth-Bf6OHZlK.js +0 -3
  568. package/core/built/admin/assets/heading-BB21QAbb.js +0 -1
  569. package/core/built/admin/assets/history-modal-t_qEnxPx.js +0 -1
  570. package/core/built/admin/assets/html-field-COLQbV4r.js +0 -1
  571. package/core/built/admin/assets/images-4mvoc3lB.js +0 -1
  572. package/core/built/admin/assets/index-B3HZU2i8.css +0 -2
  573. package/core/built/admin/assets/index-DDd-zhNL.js +0 -4
  574. package/core/built/admin/assets/inline-B8H6NzIw.js +0 -1
  575. package/core/built/admin/assets/input-group-CLIN2ykI.js +0 -1
  576. package/core/built/admin/assets/input-surface-wSO5CRy5.js +0 -1
  577. package/core/built/admin/assets/integration-header-CKGrXNVP.js +0 -1
  578. package/core/built/admin/assets/invite-user-modal-BaN2mdhI.js +0 -1
  579. package/core/built/admin/assets/koenig-loader-B1XPPY5C.js +0 -2
  580. package/core/built/admin/assets/kpi-card-CRLPVlFW.js +0 -1
  581. package/core/built/admin/assets/kpi-card-CRPbW8NZ.js +0 -1
  582. package/core/built/admin/assets/kpi-helpers-D7zT96bp.js +0 -1
  583. package/core/built/admin/assets/kpi-tabs-DE_yh9Go.js +0 -1
  584. package/core/built/admin/assets/label-CgeBxy4o.js +0 -1
  585. package/core/built/admin/assets/label-picker-DGDp4Vwr.js +0 -1
  586. package/core/built/admin/assets/layout-DWnOMly4.js +0 -1
  587. package/core/built/admin/assets/lib-_QYaUU89.js +0 -2
  588. package/core/built/admin/assets/link-helpers-8J7ixADV.js +0 -1
  589. package/core/built/admin/assets/list-page-DLMP0PxC.js +0 -1
  590. package/core/built/admin/assets/member-activity-ClMWFyvN.js +0 -1
  591. package/core/built/admin/assets/member-activity-feed-BQY5Rwaj.js +0 -1
  592. package/core/built/admin/assets/member-custom-fields-Dd_ie1zG.js +0 -1
  593. package/core/built/admin/assets/member-detail-DjwkGVne.js +0 -1
  594. package/core/built/admin/assets/members--N9lhk1N.js +0 -4
  595. package/core/built/admin/assets/modal-page-Dz-9TP4E.js +0 -1
  596. package/core/built/admin/assets/moderation-DfYBKq9s.js +0 -1
  597. package/core/built/admin/assets/multi-select-combobox-BcBEzUW_.js +0 -1
  598. package/core/built/admin/assets/navigation-modal-Cd-scywg.js +0 -1
  599. package/core/built/admin/assets/newsletter-detail-modal-CFRY6vg_.js +0 -1
  600. package/core/built/admin/assets/newsletter-emails-4ntck1AC.js +0 -1
  601. package/core/built/admin/assets/newsletter-o6eCJtab.js +0 -1
  602. package/core/built/admin/assets/newsletters-Bmlv0edG.js +0 -1
  603. package/core/built/admin/assets/note-CWs3LF-0.js +0 -1
  604. package/core/built/admin/assets/notifications-BjSvTJqh.js +0 -1
  605. package/core/built/admin/assets/offers-container-modal-Bc9A196w.js +0 -1
  606. package/core/built/admin/assets/onboarding-route-Di1LJYEE.js +0 -1
  607. package/core/built/admin/assets/overview-DE7NHZQN.js +0 -1
  608. package/core/built/admin/assets/overview-DEF-ZY6x.js +0 -1
  609. package/core/built/admin/assets/page-header-B-G_g42C.js +0 -1
  610. package/core/built/admin/assets/pagemenu-CnkTDO71.js +0 -1
  611. package/core/built/admin/assets/pages-route-VT7r7YhG.js +0 -1
  612. package/core/built/admin/assets/portal-frame-D9V8iq5x.js +0 -1
  613. package/core/built/admin/assets/portal-modal-B5OOR9ZD.js +0 -1
  614. package/core/built/admin/assets/post-analytics-header-J0WciLx6.js +0 -1
  615. package/core/built/admin/assets/post-analytics-rGb-PgD-.js +0 -1
  616. package/core/built/admin/assets/post-share-modal-D0BbTo4W.js +0 -1
  617. package/core/built/admin/assets/posts-list-screen-CO5jAWoU.js +0 -2
  618. package/core/built/admin/assets/posts-route-DV-CXWK9.js +0 -1
  619. package/core/built/admin/assets/preferences-Tac29oG6.js +0 -5
  620. package/core/built/admin/assets/preview-chrome-C2lQgZBZ.js +0 -1
  621. package/core/built/admin/assets/preview-modal-CjRbBr8U.js +0 -1
  622. package/core/built/admin/assets/profile-yiM1f_Og.js +0 -1
  623. package/core/built/admin/assets/radio-group-CKROWsw4.js +0 -1
  624. package/core/built/admin/assets/router-provider-CU87qxXw.js +0 -1
  625. package/core/built/admin/assets/select-CKaC4ggu.js +0 -1
  626. package/core/built/admin/assets/settings-81kxUa28.js +0 -1
  627. package/core/built/admin/assets/settings-BVXFqBVK.js +0 -4
  628. package/core/built/admin/assets/settings-breadcrumbs-czGRx-iu.js +0 -1
  629. package/core/built/admin/assets/shade-app-CcS3f8MZ-D5BnfHck.js +0 -3
  630. package/core/built/admin/assets/share-modal-BL-16PiB.js +0 -1
  631. package/core/built/admin/assets/skeleton-DwCva0-b.js +0 -1
  632. package/core/built/admin/assets/sort-button-Dquc83jY.js +0 -1
  633. package/core/built/admin/assets/stack-BURz77VS.js +0 -1
  634. package/core/built/admin/assets/stats-view-NDja_g96.js +0 -1
  635. package/core/built/admin/assets/stripe-button-C3cfCAou.js +0 -1
  636. package/core/built/admin/assets/stripe-connect-modal-FyE3Ey2c.js +0 -1
  637. package/core/built/admin/assets/switch-zfUUy9Jh.js +0 -1
  638. package/core/built/admin/assets/table-dE4GTIRT.js +0 -1
  639. package/core/built/admin/assets/tabs-B3XK93sR.js +0 -1
  640. package/core/built/admin/assets/tag-detail-D4P-tZdM.js +0 -2
  641. package/core/built/admin/assets/tag-picker-BNSZ6Qxw.js +0 -1
  642. package/core/built/admin/assets/tags-BsZcaJ6h.js +0 -1
  643. package/core/built/admin/assets/text-DC-ot6u2.js +0 -1
  644. package/core/built/admin/assets/textarea-B4FffFmE.js +0 -1
  645. package/core/built/admin/assets/tier-detail-modal-a77Z2VMH.js +0 -1
  646. package/core/built/admin/assets/toggle-group-D2p4okmJ.js +0 -1
  647. package/core/built/admin/assets/transistor-modal-C8RMkhOD.js +0 -1
  648. package/core/built/admin/assets/trend-badge-B9v7kMF8.js +0 -1
  649. package/core/built/admin/assets/types-uYQ1HgqL.js +0 -1
  650. package/core/built/admin/assets/use-analytics-data-ChHqiZXv.js +0 -1
  651. package/core/built/admin/assets/use-availability-hPdeG76y.js +0 -1
  652. package/core/built/admin/assets/use-filter-params-BSFigDIn.js +0 -1
  653. package/core/built/admin/assets/use-growth-stats-CqqdnESN.js +0 -1
  654. package/core/built/admin/assets/use-limiter-DBGjYqu7.js +0 -19
  655. package/core/built/admin/assets/use-reply-chain-data-DmD2yX5D.js +0 -1
  656. package/core/built/admin/assets/use-sending-eta-CQeG6OP_.js +0 -1
  657. package/core/built/admin/assets/use-setting-group-Dza6bQ7W.js +0 -1
  658. package/core/built/admin/assets/use-settings-navigation-BIjI5mL3.js +0 -1
  659. package/core/built/admin/assets/use-simple-pagination-DwVxe-Lo.js +0 -1
  660. package/core/built/admin/assets/use-staff-users-i_Mq9OGR.js +0 -1
  661. package/core/built/admin/assets/use-tinybird-query-DXoF74NM.js +0 -1
  662. package/core/built/admin/assets/user-detail-modal-BU4QCHE7.js +0 -1
  663. package/core/built/admin/assets/virtual-list-DScLNuU8.js +0 -1
  664. package/core/built/admin/assets/web-BZS-t4H0.js +0 -1
  665. package/core/built/admin/assets/web-DxAUxnK3.js +0 -2
  666. package/core/frontend/services/sitemap/utils.js +0 -17
  667. package/core/server/services/automations/get-scheduler-idempotency-key.js +0 -13
  668. package/core/server/web/api/testmode/index.js +0 -1
  669. package/core/server/web/api/testmode/jobs/cpu-hog.js +0 -15
  670. package/core/server/web/api/testmode/jobs/graceful-job.js +0 -50
  671. package/core/server/web/api/testmode/jobs/say-hello.js +0 -17
  672. package/core/server/web/api/testmode/routes.js +0 -120
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{g as n,p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{n as a}from"./dist-DziNzWI2.js";import{t as o}from"./use-form-DJKZJhQh.js";import{a as s,i as c,r as l}from"./config-BPljH6wF.js";import{h as u}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{w as d}from"./dist-BXHrDV19.js";import{t as f}from"./inline-B8H6NzIw.js";import{t as p}from"./stack-BURz77VS.js";import{i as m,o as h,r as g}from"./shade-app-CcS3f8MZ-D5BnfHck.js";import{A as _,Kn as v,N as y,P as b,S as x,U as S,W as C,Z as w,gn as ee,k as T,t as E,vr as te,x as ne,zt as re}from"./button-DvIh2Bq-.js";import{t as D}from"./use-limiter-DBGjYqu7.js";import{i as O,n as k,r as ie,t as A}from"./tabs-B3XK93sR.js";import{t as j}from"./switch-zfUUy9Jh.js";import{i as M,n as N,o as P,s as ae,t as F}from"./select-CKaC4ggu.js";import{t as I}from"./use-settings-navigation-BIjI5mL3.js";import{a as L,c as R,i as z,n as B,o as V,r as oe,s as H,t as U}from"./field-p7KnP98B.js";import{t as se}from"./textarea-B4FffFmE.js";import{n as W,t as G}from"./toggle-group-D2p4okmJ.js";import{r as ce}from"./components-CwL6a6As-CCRaoCeP.js";import{i as le,r as ue}from"./newsletters-Dz77m__5.js";import{Un as de,Zn as K,li as fe,t as pe,ui as me}from"./index-DDd-zhNL.js";import{t as he}from"./validator-DlFQP70j.js";import{n as ge}from"./confirmation-context-IyqoXVk-.js";import{n as q}from"./global-data-context-3MItMry2.js";import{t as _e}from"./use-upgrade-route-CVjDlNSs.js";import{t as ve}from"./use-setting-group-Dza6bQ7W.js";import{t as J}from"./color-picker-field-BbeK5RRs.js";import{i as ye,r as be,t as Y}from"./newsletter-emails-4ntck1AC.js";import{t as xe}from"./html-field-COLQbV4r.js";import{t as X}from"./color-utils-Dzeeuj1F.js";import{t as Se}from"./preview-modal-CjRbBr8U.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=i(),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:b,showLatestPosts:x,showSubscriptionDetails:S,siteTitle:C,footerContent:ee,showBadge:E,backgroundColor:te,headerBackgroundColor:ne,accentColor:D,textColor:O,secondaryTextColor:k,headerTextColor:ie,secondaryHeaderTextColor:A,postTitleColor:j,sectionTitleColor:M,dividerColor:N,buttonColor:P,buttonTextColor:ae,linkColor:F,buttonCorners:I,buttonStyle:L,imageCorners:R,linkStyle:z,dividerStyle:B})=>{let V=i||a,{config:oe}=q(),H=new Date().toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`numeric`}),U=new Date().getFullYear(),se=ee?ee.replace(/<a/g,`<a target="_blank" rel="noopener noreferrer"`):``,W;W=c(oe)?(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 G=`mb-5 text-pretty leading-[1.7] text-black`;return G=f===`serif`&&m===`serif`?d(G,`mb-8 font-serif text-[2.0rem] leading-tight`):f!==`serif`&&m===`serif`?d(G,`mb-8 text-[1.7rem] leading-tight tracking-tight`):f===`serif`&&m!==`serif`?d(G,`mb-8 font-serif text-[2.0rem] leading-tight`):d(G,`mb-8 text-[1.9rem] leading-tight tracking-tight`),u===`center`&&(G=d(G,`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:W}),(0,Z.jsxs)(`div`,{className:`overflow-y-auto`,style:{backgroundColor:te},children:[(0,Z.jsxs)(`div`,{className:`px-[7rem]`,style:{backgroundColor:ne},children:[r&&(0,Z.jsx)(`div`,{children:(0,Z.jsx)(`img`,{alt:``,className:`mb-4 block pt-6`,src:r})}),V&&(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:j},children:`Your email newsletter`}),l&&(0,Z.jsx)(`p`,{className:G,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:H})]}),(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`,R===`square`&&`rounded-none`,R===`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]`,ne!==`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`,B===`dashed`&&`border-dashed`,B===`dotted`&&`border-b-2 border-dotted`,m===`serif`?`font-serif text-[1.8rem]`:`text-[1.7rem] tracking-tight`,v||s?``:`pt-8`),style:{borderColor:N},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]`,B===`dashed`&&`border-dashed`,B===`dotted`&&`border-t-0 border-b-2 border-dotted`),style:{borderColor:N}}),(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:M},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(z===`underline`&&`underline`,z===`bold`&&`font-bold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:{color:F||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]`,I===`rounded`&&`rounded-[6px]`,I===`pill`&&`rounded-full`,I===`square`&&`rounded-none`,L===`outline`?`bg-transparent`:`border-transparent text-white`,z===`bold`?`font-bold`:`font-semibold`),href:`https://ghost.org/help/email-design/`,rel:`noopener noreferrer`,style:L===`outline`?{borderColor:P||D,color:P||D}:{backgroundColor:P||D,color:ae},target:`_blank`,children:`Learn more`})]}),(y||g||b)&&(0,Z.jsx)(`div`,{className:d(`grid gap-5 border-b border-gray-200 px-6 py-5`,B===`dashed`&&`border-dashed`,B===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:N},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:N,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:`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:N,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:N,color:O},children:(0,Z.jsx)(re,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Comment`})]}),b&&(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:N,color:O},children:(0,Z.jsx)(w,{className:`size-5`})}),(0,Z.jsx)(`span`,{className:`font-sans text-[1.3rem] leading-[1.4] font-medium`,style:{color:O},children:`Share`})]})]})}),x&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-6`,B===`dashed`&&`border-dashed`,B===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:N},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:M},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(R===`square`&&`rounded-none`,R===`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:M},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(R===`square`&&`rounded-none`,R===`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:M},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(R===`square`&&`rounded-none`,R===`rounded`&&`rounded-md`),src:``+new URL(`latest-posts-3-D72O3dn8.jpg`,import.meta.url).href})})]})]}),S&&(0,Z.jsxs)(`div`,{className:d(`border-b border-gray-200 py-8`,B===`dashed`&&`border-dashed`,B===`dotted`&&`border-b-2 border-dotted`),style:{borderColor:N},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 `,C,`. 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`,z===`underline`&&`underline`,z===`bold`&&`font-bold`),style:{color:F||D},children:`Manage subscription`})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col items-center pt-10`,children:[(0,Z.jsx)(`div`,{dangerouslySetInnerHTML:{__html:se||``},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:[C,` © `,U,` —`,` `]}),(0,Z.jsx)(`span`,{className:`pointer-events-none cursor-auto underline`,style:{color:k},children:`Unsubscribe`})]}),E&&(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)(ce,{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]=me(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(),ee=g()===`transparent`?C:X(g()).hex(),T=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:ee,secondaryHeaderTextColor:T};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)(G,{"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)(W,{"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]=me(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)(U,{"data-invalid":!!n.sender_reply_to||void 0,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-reply-to`,children:`Reply-to email`}),(0,Z.jsx)(K,{"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)(z,{children:n.sender_reply_to})]})},De=({newsletter:e,onlyOne:t,updateNewsletter:i,validate:o,errors:s,clearError:u})=>{let{updateRoute:d}=I(),m=_e(),{mutateAsync:h}=le(),g=D(),{settings:_,config:w,siteData:T}=q(),[re,W]=me(_,[`icon`,`default_email_address`]),[G,ce]=(0,Q.useState)(`generalSettings`),{localSettings:pe}=ve(),[he]=me(pe,[`title`]),Y=r(),{confirm:Se,showLimit:Ce}=ge(),{data:{newsletters:we}={}}=ue(),Te=[`all`,`paid`].includes(fe(_,`comments_enabled`)||``),De=be(e,w,W),[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 n){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(w))return(0,Z.jsxs)(U,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(K,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,placeholder:De||``,value:e.sender_email||``,onChange:e=>i({sender_email:e.target.value}),onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(z,{children:s.sender_email})]});if(l(w))return(0,Z.jsxs)(U,{"data-invalid":!!s.sender_email||void 0,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-sender-email`,children:`Sender email address`}),(0,Z.jsx)(K,{"aria-invalid":!!s.sender_email||void 0,id:`newsletter-sender-email`,maxLength:191,placeholder:W,value:e.sender_email||``,onChange:e=>{i({sender_email:e.target.value})},onKeyDown:()=>u(`sender_email`)}),s.sender_email&&(0,Z.jsx)(z,{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)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Name and description`}),(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(U,{"data-invalid":!!s.name||void 0,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-detail-name`,children:`Name`}),(0,Z.jsx)(K,{"aria-invalid":!!s.name||void 0,id:`newsletter-detail-name`,maxLength:191,placeholder:`Weekly Roundup`,value:e.name||``,onChange:e=>i({name:e.target.value}),onKeyDown:()=>u(`name`)}),s.name&&(0,Z.jsx)(z,{children:s.name})]}),(0,Z.jsxs)(U,{children:[(0,Z.jsx)(V,{htmlFor:`newsletter-description`,children:`Description`}),(0,Z.jsx)(se,{id:`newsletter-description`,maxLength:2e3,rows:2,value:e.description||``,onChange:e=>i({description:e.target.value})})]})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Email info`}),(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(U,{children:[(0,Z.jsx)(V,{htmlFor:`newsletter-sender-name`,children:`Sender name`}),(0,Z.jsx)(K,{id:`newsletter-sender-name`,maxLength:191,placeholder:he,value:e.sender_name||``,onChange:e=>i({sender_name:e.target.value})})]}),Fe(),(0,Z.jsx)(Ee,{clearError:u,errors:s,newsletter:e,updateNewsletter:i,validate:o})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Member settings`}),(0,Z.jsx)(L,{children:(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-subscribe-on-signup`,children:`Subscribe new members on signup`}),(0,Z.jsx)(j,{checked:!!e.subscribe_on_signup,id:`newsletter-subscribe-on-signup`,onCheckedChange:e=>i({subscribe_on_signup:e})})]})})]}),(0,Z.jsx)(`div`,{className:`mt-10 mb-5`,children:e.status===`active`?!t&&(0,Z.jsx)(E,{className:`text-destructive hover:text-destructive`,disabled:Ae.length===1,type:`button`,variant:`ghost`,onClick:()=>void Pe(),children:`Archive newsletter`}):(0,Z.jsx)(E,{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)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(ye,{inputId:`newsletter-header-image`,value:e.header_image||``,onChange:e=>i({header_image:e||null}),onUploadError:Y}),(0,Z.jsxs)(p,{gap:`md`,children:[re&&(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-header-icon`,children:`Publication icon`}),(0,Z.jsx)(j,{checked:!!e.show_header_icon,id:`newsletter-show-header-icon`,onCheckedChange:e=>i({show_header_icon:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-header-title`,children:`Publication title`}),(0,Z.jsx)(j,{checked:!!e.show_header_title,id:`newsletter-show-header-title`,onCheckedChange:e=>i({show_header_title:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-header-name`,children:`Newsletter name`}),(0,Z.jsx)(j,{checked:!!e.show_header_name,id:`newsletter-show-header-name`,onCheckedChange:e=>i({show_header_name:e})})]})]})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Title section`}),(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-post-title`,children:`Post title`}),(0,Z.jsx)(j,{checked:!!e.show_post_title_section,id:`newsletter-show-post-title`,onCheckedChange:e=>i({show_post_title_section:e})})]}),e.show_post_title_section&&(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-excerpt`,children:`Post excerpt`}),(0,Z.jsx)(j,{checked:!!e.show_excerpt,id:`newsletter-show-excerpt`,onCheckedChange:e=>i({show_excerpt:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-feature-image`,children:`Feature image`}),(0,Z.jsx)(j,{checked:!!e.show_feature_image,id:`newsletter-show-feature-image`,onCheckedChange:e=>i({show_feature_image:e})})]})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Footer`}),(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(p,{gap:`lg`,children:[(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-feedback-enabled`,children:`Ask your readers for feedback`}),(0,Z.jsx)(j,{checked:!!e.feedback_enabled,id:`newsletter-feedback-enabled`,onCheckedChange:e=>i({feedback_enabled:e})})]}),Te&&(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-comment-cta`,children:`Add a link to your comments`}),(0,Z.jsx)(j,{checked:!!e.show_comment_cta,id:`newsletter-show-comment-cta`,onCheckedChange:e=>i({show_comment_cta:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-share-button`,children:`Show share button`}),(0,Z.jsx)(j,{checked:!!e.show_share_button,id:`newsletter-show-share-button`,onCheckedChange:e=>i({show_share_button:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-latest-posts`,children:`Share your latest posts`}),(0,Z.jsx)(j,{checked:!!e.show_latest_posts,id:`newsletter-show-latest-posts`,onCheckedChange:e=>i({show_latest_posts:e})})]}),(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-subscription-details`,children:`Show subscription details`}),(0,Z.jsx)(j,{checked:!!e.show_subscription_details,id:`newsletter-show-subscription-details`,onCheckedChange:e=>i({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=>i({footer_content:e})})]})]}),(0,Z.jsx)(de,{className:`mt-8`}),(0,Z.jsxs)(`div`,{className:`my-5 flex w-full items-start`,children:[(0,Z.jsx)(`span`,{children:(0,Z.jsx)(ee,{className:`mt-[-1px] mr-2 size-5 text-red`})}),(0,Z.jsx)(L,{className:`gap-8`,children:(0,Z.jsxs)(U,{orientation:`horizontal`,children:[(0,Z.jsxs)(B,{children:[(0,Z.jsx)(V,{htmlFor:`newsletter-show-badge`,children:`Promote independent publishing`}),(0,Z.jsx)(oe,{children:`Show you're a part of the indie publishing movement with a small badge in the footer`})]}),(0,Z.jsx)(j,{checked:!!e.show_badge,id:`newsletter-show-badge`,onCheckedChange:e=>i({show_badge:e})})]})})]})]})},{id:`design`,title:`Design`,contents:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Global`}),(0,Z.jsxs)(L,{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=>i({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)(U,{className:`max-w-[200px]`,children:[(0,Z.jsx)(V,{className:`sr-only`,children:`Heading font`}),(0,Z.jsxs)(F,{value:e.title_font_category,onValueChange:t=>{let n=e.title_font_weight,r=n;return Me[t].options.find(e=>e.value===n)||(r=Me[t].map?.[n]||`bold`),i({title_font_category:t,title_font_weight:r})},children:[(0,Z.jsx)(P,{"aria-label":`Heading font`,children:(0,Z.jsx)(ae,{})}),(0,Z.jsx)(N,{children:je.map(e=>(0,Z.jsx)(M,{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)(U,{className:`max-w-[200px]`,children:[(0,Z.jsx)(V,{className:`sr-only`,children:`Heading weight`}),(0,Z.jsxs)(F,{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=>i({title_font_weight:e}),children:[(0,Z.jsx)(P,{"aria-label":`Heading weight`,children:(0,Z.jsx)(ae,{})}),(0,Z.jsx)(N,{children:Ie.map(e=>(0,Z.jsx)(M,{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)(U,{className:`max-w-[200px]`,children:[(0,Z.jsx)(V,{className:`sr-only`,children:`Body font`}),(0,Z.jsxs)(F,{value:e.body_font_category,onValueChange:e=>i({body_font_category:e}),children:[(0,Z.jsx)(P,{"aria-label":`Body font`,"data-testid":`body-font-select`,children:(0,Z.jsx)(ae,{})}),(0,Z.jsx)(N,{children:je.map(e=>(0,Z.jsx)(M,{value:e.value,children:(0,Z.jsx)(`span`,{className:e.className,children:e.label})},e.value))})]})]})]})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Header`}),(0,Z.jsxs)(L,{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=>i({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=>i({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)(y,{className:`size-3.5!`}),disabled:!e.show_post_title_section},{value:`center`,label:`Center`,icon:(0,Z.jsx)(b,{className:`size-3.5!`}),disabled:!e.show_post_title_section}],value:e.title_alignment,onValueChange:e=>i({title_alignment:e})})]})]})]}),(0,Z.jsxs)(R,{className:`mt-8`,children:[(0,Z.jsx)(H,{className:`text-lg! font-semibold`,children:`Body`}),(0,Z.jsxs)(L,{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=>i({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=>i({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=>i({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)(C,{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)(v,{className:`size-3.5!`})}],value:e.button_corners||`rounded`,onValueChange:e=>i({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=>i({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)(ne,{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)(te,{className:`size-3.5!`})}],value:e.link_style||`underline`,onValueChange:e=>i({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)(C,{className:`size-3.5!`})},{value:`rounded`,label:`Rounded`,icon:(0,Z.jsx)(S,{className:`size-3.5!`})}],value:e.image_corners||`square`,onValueChange:e=>i({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=>i({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)(A,{value:G,variant:`underline`,onValueChange:e=>{ce(e)},children:[(0,Z.jsx)(ie,{className:`sticky top-0 z-50 bg-surface-elevated-2`,children:Le.map(e=>(0,Z.jsx)(O,{value:e.id,children:e.title},e.id))}),Le.map(e=>(0,Z.jsx)(k,{value:e.id,children:e.contents},e.id))]})})})},Oe=({newsletter:e,onlyOne:t})=>{let{config:n}=q(),{mutateAsync:i}=le(),{updateRoute:c}=I(),u=pe(`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 i(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:r(),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}=ue(),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 +0,0 @@
1
- import{t as e}from"./react-BXwhMTuc.js";import{t}from"./jsx-runtime-BlNNh7jY.js";import{i as n,r}from"./config-BPljH6wF.js";import{m as i}from"./dist-BXHrDV19.js";import{D as a}from"./button-DvIh2Bq-.js";import{o,r as s,t as c}from"./field-p7KnP98B.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-4mvoc3lB.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 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{n as r}from"./dist-DziNzWI2.js";import{f as i}from"./posts-tcoO3iRG.js";import{h as a}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as o}from"./router-provider-CU87qxXw.js";import{b as s,g as c,h as l,m as u}from"./dist-BXHrDV19.js";import{a as d}from"./heading-BB21QAbb.js";import{A as f,L as p,Tr as m,er as h,k as g,t as _,xt as v}from"./button-DvIh2Bq-.js";import{i as y,r as b,t as x}from"./tabs-B3XK93sR.js";import{n as S}from"./skeleton-DwCva0-b.js";import{a as C,i as ee,n as w,o as T,r as E,t as D}from"./card-FHQ4D10L.js";import{c as O,l as te,n as ne,o as re,r as ie,s as ae,t as oe,u as se}from"./data-list-C0CKkeWW.js";import{i as ce,n as le,o as ue,r as de,t as fe}from"./use-simple-pagination-DwVxe-Lo.js";import{I as pe,Kn as k,N as A,P as j,Un as M,Yn as me,Zn as he,_i as ge,gi as _e,qn as N}from"./index-DDd-zhNL.js";import{a as P,o as F}from"./stats-Cvp8Ep5m.js";import{n as ve}from"./email-sending-status-context-C76KYL1V.js";import{n as I}from"./feedback-BTPBQLT5.js";import{n as ye,r as L}from"./links-FwNCVyVe.js";import{n as be}from"./post-analytics-context-bt2YTBAC.js";import{a as R,i as z,n as B,r as V,t as H}from"./kpi-card-CRPbW8NZ.js";import{r as xe,t as Se}from"./post-analytics-header-J0WciLx6.js";import{i as U,n as Ce,r as W,t as G}from"./link-helpers-8J7ixADV.js";var K=e(t(),1),we=(e,t)=>{let{data:n,isLoading:r,error:i}=I(e,{searchParams:{limit:`50`,...t===void 0?{}:{score:t.toString()}}});return{feedback:(0,K.useMemo)(()=>n?.feedback?n.feedback:[],[n]),isLoading:r,error:i}},q=n(),Te=({feedbackStats:e})=>{let{postId:t}=a(),n=o(),{isNewsletterDataHidden:r}=ve(),[i,u]=(0,K.useState)(`positive`),{feedback:m,isLoading:h}=we(t||``,+(i===`positive`)),{totalPages:v,paginatedData:O,nextPage:te,previousPage:ne,hasNextPage:re,hasPreviousPage:ie}=fe({data:m,itemsPerPage:9}),ae=h;return(0,q.jsxs)(D,{children:[(0,q.jsxs)(C,{className:`pb-5`,children:[(0,q.jsx)(T,{children:`Feedback`}),(0,q.jsx)(E,{children:`What did your readers think?`})]}),r?(0,q.jsx)(w,{className:`pb-3`,children:(0,q.jsx)(U,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`})}):e.totalFeedback>0?(0,q.jsx)(w,{className:`pb-3`,children:(0,q.jsxs)(U,{description:`Once the first responses are recorded, they'll show here`,title:`No feedback data available`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,q.jsx)(x,{className:`pb-3`,defaultValue:`positive`,value:i,variant:`button`,onValueChange:e=>u(e),children:(0,q.jsxs)(b,{className:`gap-1`,children:[(0,q.jsx)(y,{className:`h-7`,value:`positive`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(g,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`More like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:l(e.positiveFeedback/e.totalFeedback)})]})}),(0,q.jsx)(y,{className:`h-7`,value:`negative`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(f,{size:14,strokeWidth:1.25}),(0,q.jsx)(`span`,{className:`hidden font-medium sm:visible! sm:inline!`,children:`Less like this`}),(0,q.jsx)(`span`,{className:`font-semibold tracking-tight`,children:l(e.negativeFeedback/e.totalFeedback)})]})})]})}),(0,q.jsx)(d,{className:`mr-2 mb-3 lg:hidden xl:visible! xl:block!`,children:`Date`})]}),(0,q.jsx)(M,{}),ae?(0,q.jsx)(S,{className:`mt-3`,lines:3}):O&&O.length>0?(0,q.jsx)(`div`,{className:`flex w-full flex-col py-3`,children:O.map(e=>(0,q.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,q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,q.jsxs)(k,{className:`size-7`,children:[e.member?.avatar_image&&(0,q.jsx)(`img`,{className:`absolute aspect-square size-full`,src:e.member?.avatar_image}),(0,q.jsx)(N,{className:`text-white`,style:{backgroundColor:`${s(A(e.member),`45`,`55`)}`},children:j(e.member)})]}),A(e.member)]}),(0,q.jsx)(`div`,{className:`whitespace-nowrap text-muted-foreground`,children:c(e.created_at)})]},e.id))}):(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center py-8 text-center text-sm text-muted-foreground`,children:(0,q.jsxs)(`div`,{children:[`No `,i===`positive`?`positive`:`negative`,` feedback yet`]})})]})}):(0,q.jsxs)(w,{className:`flex grow flex-col items-center justify-center text-center text-sm text-muted-foreground`,children:[(0,q.jsx)(`div`,{children:`No members have given feedback yet`}),(0,q.jsx)(`div`,{children:`When someone does, you'll see their response here.`})]}),e.totalFeedback>0&&!r&&(0,q.jsx)(ee,{className:`grow-0`,children:(0,q.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,q.jsxs)(_,{variant:`outline`,onClick:()=>{let e=`(feedback.post_id:'${t}'+feedback.score:1)`,r=`(feedback.post_id:'${t}'+feedback.score:0)`,a=`${encodeURIComponent(e)}&post=${t}`,o=`${encodeURIComponent(r)}&post=${t}`;n(`/members?filter=${i===`positive`?a:o}`)},children:[`View all`,(0,q.jsx)(p,{})]}),v>1&&(0,q.jsx)(le,{className:`pb-0`,children:(0,q.jsxs)(de,{children:[(0,q.jsx)(ue,{disabled:!ie,onClick:ne}),(0,q.jsx)(ce,{disabled:!re,onClick:te})]})})]})})]})},Ee=e=>{let{data:t,isLoading:n}=i(e),{data:r,isLoading:a}=i(e,{searchParams:{include:`count.positive_feedback,count.negative_feedback`}}),o=(0,K.useMemo)(()=>t?.posts[0],[t]),s=(0,K.useMemo)(()=>r?.posts[0],[r]),c=(0,K.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,K.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,K.useMemo)(()=>o?.newsletter?.id,[o]),{data:d,isLoading:f}=P({searchParams:u?{newsletter_id:u}:{},enabled:!!u}),p=(0,K.useMemo)(()=>d?.stats?d.stats.map(e=>e.post_id):[],[d]),{data:m,isLoading:h}=F({searchParams:u&&p.length>0?{newsletter_id:u,post_ids:p.join(`,`)}:{},enabled:!!u&&p.length>0}),g=(0,K.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}=L({searchParams:{filter:`post_id:'${e}'`}}),x=(0,K.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,K.useMemo)(()=>Ce(v),[v]);return{post:o,stats:c,feedbackStats:l,averageStats:(0,K.useMemo)(()=>({openedRate:x.openRate,clickedRate:x.clickRate}),[x]),topLinks:S,refetchTopLinks:b,isLoading:n||a||_||y}},De=({breakpoints:e={sm:1080,md:1280,lg:1360}}={})=>{let[t,n]=(0,K.useState)(`md`);return(0,K.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`}},Oe=()=>(0,q.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,q.jsx)(h,{className:`ml-0.5`,size:16,strokeWidth:1.5})}),ke=({dataColor:e,value:t,avgValue:n})=>(0,q.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,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-blue opacity-50`,style:{backgroundColor:e}}),`This newsletter`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:t})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,q.jsx)(`div`,{className:`size-2 rounded-full bg-chart-gray opacity-80`}),`Average`]}),(0,q.jsx)(`div`,{className:`text-right font-mono`,children:n})]})]}),Ae=()=>{let e=o(),[t,n]=(0,K.useState)(null),[i,a]=(0,K.useState)(``),s=(0,K.useRef)(null),c=(0,K.useRef)(null),{chartSize:f}=De(),p=_e(),h=ge(),{hasNewsletterAnalytics:g,isNewsletterDataHidden:y,isStatusLoading:b}=ve(),{post:x,isPostLoading:k,postId:A}=be(),j=t=>e(pe({filter:t})),N=x,P=g;(0,K.useEffect)(()=>{!k&&!b&&!P&&e(`/posts/analytics/${A}`)},[e,A,k,b,P]);let{stats:F,averageStats:I,topLinks:L,isLoading:Ce,refetchTopLinks:we}=Ee(A),{mutate:Ae}=ye(),J=(0,K.useMemo)(()=>{if(!N?.count)return{positiveFeedback:0,negativeFeedback:0,totalFeedback:0};let e=N.count.positive_feedback||0,t=N.count.negative_feedback||0;return{positiveFeedback:e,negativeFeedback:t,totalFeedback:e+t}},[N]),je=(0,K.useMemo)(()=>N?.newsletter?.feedback_enabled===!0,[N]),Y=(0,K.useMemo)(()=>J.totalFeedback>0?!0:je,[J.totalFeedback,je]),Me=e=>{let t=G(L,e);t&&(n(e),a(t.link.to))},Ne=()=>{if(!t)return;let e=G(L,t);if(!e)return;let o=i.trim();if(o===``||o===e.link.to){n(null),a(``);return}Ae({originalUrl:e.link.originalTo,editedUrl:i,postId:A},{onSuccess:()=>{n(null),a(``),we()},onError:()=>{r.error(`Couldn’t update the link. Please try again.`)}})},{totalPages:Pe,paginatedData:Fe,nextPage:Ie,previousPage:Le,hasNextPage:Re,hasPreviousPage:ze}=fe({data:L,itemsPerPage:10});(0,K.useEffect)(()=>{if(t&&s.current){s.current.focus();let e=G(L,t),r=t=>{c.current&&!c.current.contains(t.target)&&i===e?.link.to&&(n(null),a(``))};return document.addEventListener(`mousedown`,r),()=>{document.removeEventListener(`mousedown`,r)}}},[t,i,L]);let X=Ce||k||b,Be=p&&!y,Z=(0,q.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`–`}),Ve=[{datatype:`Sent`,value:1,fill:`url(#gradientPurple)`,color:`var(--chart-purple)`}],He={percentage:{label:`O`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Ue=[{datatype:`Average`,value:I.openedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],We={percentage:{label:`Opened`},Average:{label:`Average`},"This newsletter":{label:`This newsletter`}},Ge=[{datatype:`Average`,value:I.clickedRate,fill:`url(#gradientGray)`,color:`var(--chart-gray)`},{datatype:`This newsletter`,value:F.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`}],Ke={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(!p||!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]`),!p&&!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,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Se,{currentTab:`Newsletter`}),(0,q.jsx)(xe,{children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 ${Y&&Be&&`lg:grid-cols-2`}`,children:[(0,q.jsxs)(D,{className:Y&&Be?`lg:col-span-2`:``,children:[(0,q.jsxs)(C,{className:`hidden`,children:[(0,q.jsx)(T,{children:`Newsletters`}),(0,q.jsx)(E,{children:`How did this post perform`})]}),X&&!y?(0,q.jsx)(w,{className:`h-[25vw] p-6`,children:(0,q.jsx)(me,{})}):(0,q.jsxs)(w,{className:`p-0`,children:[(0,q.jsxs)(`div`,{className:`grid ${Q} items-stretch border-b ${y?`pointer-events-none opacity-40`:``}`,children:[(0,q.jsxs)(H,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!y&&(0,q.jsx)(z,{onClick:()=>{j(`emails.post_id:${A}`)},children:`View members →`}),(0,q.jsxs)(V,{onClick:()=>{j(`emails.post_id:${A}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-purple opacity-50`}),`Sent`]}),(0,q.jsx)(B,{children:(0,q.jsx)(R,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:y?Z:u(F.sent)})})]}),h&&(0,q.jsxs)(H,{className:`p-3 md:px-6 md:py-5`,children:[!y&&(0,q.jsx)(z,{onClick:()=>{j(`opened_emails.post_id:${A}`)},children:`View members →`}),(0,q.jsxs)(V,{onClick:()=>{j(`opened_emails.post_id:${A}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-blue opacity-50`}),`Opened`]}),(0,q.jsx)(B,{children:(0,q.jsx)(R,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:y?Z:u(F.opened)})})]}),p&&(0,q.jsxs)(H,{className:`group relative isolate grow p-3 md:px-6 md:py-5`,children:[!y&&(0,q.jsx)(z,{onClick:()=>{j(`clicked_links.post_id:${A}`)},children:`View members →`}),(0,q.jsxs)(V,{onClick:()=>{j(`clicked_links.post_id:${A}`)},children:[(0,q.jsx)(`div`,{className:`ml-0.5 size-[9px] rounded-full bg-chart-teal opacity-50`}),`Clicked`]}),(0,q.jsx)(B,{children:(0,q.jsx)(R,{className:`text-xl leading-none sm:text-2xl md:text-[2.6rem]`,children:y?Z:u(F.clicked)})})]})]}),(0,q.jsx)(U,{description:`Sends, opens and clicks will appear once every email has been sent`,title:`Your newsletter is being sent`,children:(0,q.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,q.jsxs)(`div`,{className:`relative border-r-0 px-6 ${(h||p)&&`md:border-r`}`,children:[(0,q.jsx)(W,{className:$,config:He,data:Ve,percentageLabel:`Sent`,percentageValue:l(1),size:f,tooltip:!1}),(h||p)&&(0,q.jsx)(Oe,{})]}),h&&(0,q.jsxs)(`div`,{className:`group/block relative border-r-0 px-6 transition-all hover:bg-muted/25 ${p&&`md:border-r`}`,children:[(0,q.jsx)(ke,{avgValue:l(I.openedRate),dataColor:`var(--chart-blue)`,value:l(F.openedRate)}),(0,q.jsx)(W,{className:$,config:We,data:Ue,percentageLabel:`Open rate`,percentageValue:l(F.openedRate),size:f,tooltip:!1}),p&&(0,q.jsx)(Oe,{})]}),p&&(0,q.jsxs)(`div`,{className:`group/block relative px-6 transition-all hover:bg-muted/25`,children:[(0,q.jsx)(ke,{avgValue:l(I.clickedRate),dataColor:`var(--chart-teal)`,value:l(F.clickedRate)}),(0,q.jsx)(W,{className:$,config:Ke,data:Ge,percentageLabel:`Click rate`,percentageValue:l(F.clickedRate),size:f,tooltip:!1})]})]})})]})]}),Y&&(0,q.jsx)(Te,{feedbackStats:J}),Be&&(0,q.jsxs)(D,{className:`group/datalist overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,q.jsxs)(C,{className:`p-0`,children:[(0,q.jsx)(T,{children:`Newsletter clicks`}),(0,q.jsx)(E,{children:`Which links resonated with your readers`})]}),(0,q.jsx)(d,{className:`mr-2`,children:`Members`})]}),X?(0,q.jsxs)(w,{className:`p-6 pt-0`,children:[(0,q.jsx)(M,{}),(0,q.jsx)(S,{className:`mt-6`})]}):(0,q.jsxs)(w,{className:`pb-0`,children:[(0,q.jsx)(M,{}),L.length>0?(0,q.jsx)(oe,{className:``,children:(0,q.jsx)(ie,{children:Fe?.map(e=>{let n=F.clicked>0?e.count/F.clicked:0,r=e.link.link_id,o=e.link.title,d=e.link.to,f=e.link.edited;return(0,q.jsxs)(se,{children:[t!==r&&(0,q.jsx)(ne,{style:{width:`${n?Math.round(n*100):0}%`}}),(0,q.jsx)(re,{className:`w-full`,children:t===r?(0,q.jsxs)(`div`,{ref:c,className:`flex w-full items-center gap-2`,children:[(0,q.jsx)(he,{ref:s,className:`z-50 h-7 w-full border-border bg-background text-sm`,value:i,onChange:e=>a(e.target.value)}),(0,q.jsx)(_,{size:`sm`,onClick:Ne,children:`Update`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(_,{className:`mr-2 shrink-0 bg-background`,size:`sm`,variant:`outline`,onClick:()=>Me(r),children:(0,q.jsx)(v,{})}),(0,q.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:d,rel:`noreferrer`,target:`_blank`,title:o,children:o}),f&&(0,q.jsx)(`span`,{className:`ml-1 text-gray-500`,children:`(edited)`})]})}),(0,q.jsxs)(ae,{children:[(0,q.jsx)(O,{children:u(e.count||0)}),(0,q.jsx)(te,{children:l(n)})]})]},r)})})}):(0,q.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:`You have no links in your post.`})]}),!X&&L.length>1&&(0,q.jsx)(ee,{children:(0,q.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 pl-4 text-sm text-green`,children:[(0,q.jsx)(m,{size:20,strokeWidth:1.5}),`Sent a broken link? You can update it!`]}),Pe>1&&(0,q.jsx)(le,{className:`pb-0`,children:(0,q.jsxs)(de,{children:[(0,q.jsx)(ue,{disabled:!ze,onClick:Le}),(0,q.jsx)(ce,{disabled:!Re,onClick:Ie})]})})]})})]})]})})]})};export{Ae as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{i as r}from"./pagemenu-CnkTDO71.js";import{_ as i}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a,t as o}from"./router-provider-CU87qxXw.js";import{c as s,h as c,m as l,u}from"./dist-BXHrDV19.js";import{Gt as d,Wt as f,t as p}from"./button-DvIh2Bq-.js";import{g as m,n as h,o as g,r as _}from"./chart-jVz9Nf9t.js";import{a as v,i as y,o as b,r as ee}from"./trend-badge-B9v7kMF8.js";import{n as te,t as x}from"./sort-button-Dquc83jY.js";import{r as ne,t as re}from"./tabs-B3XK93sR.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-CKaC4ggu.js";import{n as k}from"./skeleton-DwCva0-b.js";import{a as A,n as j,o as M,r as N,t as P}from"./card-FHQ4D10L.js";import{t as F}from"./empty-indicator-L4Ql5Db7.js";import{a as I,c as L,n as R,r as z,s as B,t as ie}from"./table-dE4GTIRT.js";import{r as V}from"./newsletters-Dz77m__5.js";import{Ar as ae,Sr as oe,X as H,Yn as se,_i as U,br as ce,gi as W,wr as G,yi as le}from"./index-DDd-zhNL.js";import{i as ue,n as de,r as fe,t as pe}from"./stats-view-NDja_g96.js";import{a as me,f as he,o as ge}from"./stats-Cvp8Ep5m.js";import{a as K,c as _e,i as q,n as J,r as ve}from"./chart-helpers-CNpA7re_.js";import{n as Y,r as X,t as ye}from"./kpi-tabs-DE_yh9Go.js";import{t as be}from"./use-analytics-data-ChHqiZXv.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[f,p]=(0,Z.useState)(u),[x,S]=(0,Z.useState)(!1),{range:C}=H(),w=a(),[T]=i(),E=W(),D=U(),{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||f===`total-subscribers`)return{barDomain:[0,1],barTicks:[0,1]};let e=L[f]?.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=f===`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,f,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)(se,{})});let B=`grid-cols-3`;(!E||!D)&&(B=`grid-cols-2`),!E&&!D&&(B=`grid-cols-1`);let ie=f===`avg-open-rate`&&k>R[0]&&k<R[1]||f===`avg-click-rate`&&A>R[0]&&A<R[1],V=f===`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)(ce,{children:[(0,Q.jsx)(ae,{className:`md:hidden`,asChild:!0,children:(0,Q.jsxs)(ye,{children:[f===`total-subscribers`&&(0,Q.jsx)(X,{color:L[`total-subscribers`].color,label:`Total subscribers`,value:l(O)}),f===`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)}),f===`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)(oe,{align:`end`,className:`w-56`,children:[(0,Q.jsx)(G,{onClick:()=>P(`total-subscribers`),children:`Total subscribers`}),D&&(0,Q.jsx)(G,{onClick:()=>P(`avg-open-rate`),children:`Avg. open rate`}),E&&(0,Q.jsx)(G,{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:[f===`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}),(f===`avg-open-rate`&&D||f===`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)(se,{})}):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[f].color,stopOpacity:.8}),(0,Q.jsx)(`stop`,{offset:`100%`,stopColor:L[f].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[f].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 `,f===`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)(d,{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)(f,{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=he({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=me({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=ge({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:f,isLoading:m,isClicksLoading:h}=Oe(e,r,t||void 0,!!n),g=W(),_=U(),v=(0,Z.useMemo)(()=>f?.stats||[],[f]),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)(d,{strokeWidth:1.5})})})}),[v,h,i,g,_,e,s]);return m||!f?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=W(),a=U();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=le(),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};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{h as r}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{s as i}from"./router-provider-CU87qxXw.js";import{_n as a}from"./button-DvIh2Bq-.js";import{t as o}from"./skeleton-DwCva0-b.js";import{t as s}from"./use-navigate-with-base-path-88EQpw2k.js";import{At as c,En as l,Pt as u,Wt as d,Xn as f,dt as p,ft as m,jt as h,pt as g,wn as _,wt as v}from"./index-DDd-zhNL.js";import{i as y,n as b,r as x,t as S}from"./use-reply-chain-data-DmD2yX5D.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)(m,{children:[(0,w.jsx)(p,{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)(u,{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)(d,{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=>{h(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:l(z.actor)}),(0,w.jsx)(`span`,{className:`text-gray-700`,children:c(K,!K.authored)})]})]})]})}),R.map(e=>e.object.type===`Tombstone`?(0,w.jsx)(x,{last:!1}):(0,w.jsx)(v,{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)(v,{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)(v,{actor:e.mainReply.actor,allowDelete:e.mainReply.object.authored,commentCount:e.mainReply.object.replyCount??0,isChainParent:c,isPending:_(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)(v,{actor:e.chain[0].actor,allowDelete:e.chain[0].object.authored,commentCount:e.chain[0].object.replyCount??0,isChainContinuation:!0,isPending:_(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)(v,{actor:n.actor,allowDelete:n.object.authored,commentCount:n.object.replyCount??0,isChainContinuation:!0,isPending:_(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)(f,{size:`md`})})]}),W&&(0,w.jsx)(`div`,{ref:I,className:`h-1`})]})})]})})})})})};export{E as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{m as r}from"./dist-BXHrDV19.js";import{br as i,ct as a,gn as o,h as s,nr as c,ot as l,t as u,wr as d}from"./button-DvIh2Bq-.js";import{t as f}from"./skeleton-DwCva0-b.js";import{t as p}from"./use-navigate-with-base-path-88EQpw2k.js";import{At as m,Bt as h,Ct as g,Et as _,Nt as v,Ot as y,Pt as b,Tn as x,Ut as S,Vt as C,Wt as w,Xn as T,cn as E,dt as D,ft as O,jt as k,kt as A,pt as j,ut as M}from"./index-DDd-zhNL.js";import"./layout-DWnOMly4.js";var N=e(t(),1),P=n(),F=({notificationType:e,size:t=`lg`,className:n})=>{let r,i=``,c=`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:c,size:u,strokeWidth:f}),i=`bg-blue-600`;break;case`like`:r=(0,P.jsx)(o,{className:`${t===`sm`?`size-[11px]`:`mt-px size-5`}`,color:c,strokeWidth:f}),i=`bg-pink-600`;break;case`reply`:r=(0,P.jsx)(l,{className:`mr-px mb-px`,color:c,size:u,strokeWidth:f}),i=`bg-purple-600`;break;case`repost`:r=(0,P.jsx)(a,{color:c,size:u,strokeWidth:f}),i=`bg-green-500`;break;case`mention`:r=(0,P.jsx)(d,{className:`${t===`sm`?`size-[12px]`:`size-5`}`,color:c,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)(b,{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&&k(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(),k(n,i))}};return e.addEventListener(`click`,t),()=>{e.removeEventListener(`click`,t)}},[i,e]),(0,P.jsx)(`div`,{dangerouslySetInnerHTML:{__html:h(C(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}=A({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)(g,{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:h(C(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:[y({type:`Note`,attachment:n}),o&&(0,P.jsx)(_,{showLabel:!1,size:`compact`,isLayered:!0,onReveal:s})]})]}):null},W=()=>{let[e,t]=N.useState({}),n=p(),a=e=>{t(t=>({...t,[e]:!t[e]}))},o=()=>{},{data:s,error:l,fetchNextPage:d,hasNextPage:h,isFetchingNextPage:g,isLoading:_}=E(`index`),y=s?.pages.flatMap(e=>B(e.notifications))??Array(10).fill({actors:[{}]}),b=(0,N.useRef)(null),C=(0,N.useRef)(null);(0,N.useEffect)(()=>(b.current&&b.current.disconnect(),b.current=new IntersectionObserver(e=>{e[0].isIntersecting&&h&&!g&&d()}),C.current&&b.current.observe(C.current),()=>{b.current&&b.current.disconnect()}),[h,g,d]);let A=(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?a(e.id||`${e.type}_${t}`):e.actors[0]?.handle&&k(e.actors[0].handle,n);break;case`mention`:e.post&&n(`/notes/${encodeURIComponent(e.post.id)}`);break}};return l&&x(l)?(0,P.jsx)(M,{errorCode:l.code,statusCode:l.statusCode}):(0,P.jsx)(j,{children:(0,P.jsxs)(`div`,{className:`z-0 flex w-full flex-col items-center`,children:[_===!1&&y.length===0&&(0,P.jsxs)(O,{children:[(0,P.jsx)(D,{children:(0,P.jsx)(i,{})}),`Quiet for now, but not for long! When someone likes, boosts, or replies to you, you'll find it here.`]}),y.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:y.map((t,i)=>(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:()=>A(t,i),children:[_?(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)(w,{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}_${i}`]&&t.actors.slice(0,5).map(e=>(0,P.jsx)(w,{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}_${i}`]&&(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}_${i}`]?`ml-[-20px]`:`ml-0 w-[28px]`}`,variant:`ghost`,onClick:e=>{e?.stopPropagation(),a(t.id||`${t.type}_${i}`)},children:[(0,P.jsx)(c,{className:`${e[t.id||`${t.type}_${i}`]?`rotate-180`:``}`,size:20,strokeWidth:1.5}),e[t.id||`${t.type}_${i}`]?`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}_${i}`]?`mb-2 max-h-[1384px] opacity-100`:`max-h-0 opacity-0`}`,children:e[t.id||`${t.type}_${i}`]&&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&&k(e.handle,n)},children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center`,children:[(0,P.jsx)(w,{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)(S,{following:!1,handle:e.handle,variant:`link`})]},e.id))})})]})}),(0,P.jsxs)(L.Content,{children:[(0,P.jsx)(`div`,{children:_?(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:m(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)(S,{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)(v,{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:o})})]})]}),i<y.length-1&&(0,P.jsx)(`div`,{className:`pl-[52px]`,children:(0,P.jsx)(R,{})})]},t.id||`${t.type}_${i}`))}),(0,P.jsx)(`div`,{ref:C,className:`h-1`}),g&&(0,P.jsx)(`div`,{className:`-mt-4 mb-8 flex flex-col items-center justify-center gap-4 text-center`,children:(0,P.jsx)(T,{size:`md`})})]})]})})};export{W as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{_ as n,f as r,p as i}from"./hooks-DYfTEQLk.js";import{t as a}from"./jsx-runtime-BlNNh7jY.js";import{n as o}from"./dist-DziNzWI2.js";import{t as s}from"./use-form-DJKZJhQh.js";import{a as c,i as l,n as u,r as d,t as f}from"./offers-ByWSK0rR.js";import{i as p,r as m}from"./currency-Dy4Tc2R2.js";import{m as h}from"./dist-BXHrDV19.js";import{t as g}from"./inline-B8H6NzIw.js";import{t as _}from"./stack-BURz77VS.js";import{Cr as v,Tr as y,jr as b,t as x,tn as S}from"./button-DvIh2Bq-.js";import{t as C}from"./switch-zfUUy9Jh.js";import{i as w,n as T,o as E,s as D,t as O}from"./select-CKaC4ggu.js";import{o as k,t as A}from"./use-settings-navigation-BIjI5mL3.js";import{t as j}from"./badge-qP06OT7C.js";import{a as M,i as N,n as P,o as F,r as I,t as L}from"./field-p7KnP98B.js";import{a as R,i as z,n as B,r as V,t as H}from"./input-group-CLIN2ykI.js";import{n as ee,t as te}from"./radio-group-CKROWsw4.js";import{a as U,c as W,n as G,r as K,s as q,t as ne}from"./table-dE4GTIRT.js";import{t as re}from"./textarea-B4FffFmE.js";import{Ar as ie,Dr as ae,Er as oe,Or as se,Sr as ce,Tr as le,Zn as J,br as ue,ct as de,wr as fe,xr as pe}from"./index-DDd-zhNL.js";import{a as me,r as he}from"./tiers-6mPzCXlM.js";import{t as ge}from"./brand-icon-D3ffDYaC.js";import{n as _e}from"./confirmation-context-IyqoXVk-.js";import{n as Y}from"./global-data-context-3MItMry2.js";import{o as ve,r as ye}from"./zapier-modal-BafLUO4R.js";import{t as be}from"./preview-modal-CjRbBr8U.js";import{t as xe}from"./portal-frame-D9V8iq5x.js";import{t as Se}from"./settings-breadcrumbs-czGRx-iu.js";var Ce=(e,t)=>{let{disableBackground:n=!1,name:r,code:i,displayTitle:a=``,displayDescription:o=``,type:s,cadence:c,amount:l=0,duration:u,durationInMonths:d,currency:f=`usd`,status:p,tierId:m,redemptionType:h=`signup`}=e;t=t.replace(/\/$/,``);let g=new URLSearchParams;return g.append(`disableBackground`,`false`),g.append(`name`,encodeURIComponent(r)),g.append(`code`,encodeURIComponent(i)),g.append(`display_title`,encodeURIComponent(a)),g.append(`display_description`,encodeURIComponent(o)),g.append(`type`,encodeURIComponent(s)),g.append(`cadence`,encodeURIComponent(c)),g.append(`amount`,encodeURIComponent(l)),g.append(`duration`,encodeURIComponent(u)),g.append(`duration_in_months`,encodeURIComponent(d)),g.append(`currency`,encodeURIComponent(f)),g.append(`status`,encodeURIComponent(p)),g.append(`tier_id`,encodeURIComponent(m)),g.append(`redemption_type`,encodeURIComponent(h)),n&&g.append(`disableBackground`,`true`),g.append(`admin_toolbar`,`0`),`${t}/?v=modal-portal-offer#/portal/preview/offer?${g.toString()}`},we=e=>{let t=[];return e.forEach(e=>{t.push({label:`${e.name} - Monthly`,value:`${e.id}-month-${e.currency}`}),t.push({label:`${e.name} - Yearly`,value:`${e.id}-year-${e.currency}`})}),t},X=e(t(),1),Z=a();function Te(e){return e.toString().toLowerCase().trim().replace(/\s+/g,`-`).replace(/[^\w-]+/g,``).replace(/--+/g,`-`)}var Ee=191,De=e=>{let{fixedAmount:t=0,percentAmount:n=0,trialAmount:r=0,amount:i=0}=e;switch(e.type){case`fixed`:return t*100;case`percent`:return n;case`trial`:return r;default:return i}},Oe=({tierOptions:e,handleTierChange:t,selectedTier:n,typeOptions:r,durationOptions:i,handleTypeChange:a,handleDurationChange:o,overrides:s,handleAmountTypeChange:c,handleNameInput:l,handleTextAreaInput:u,handleDisplayTitleInput:d,handleDurationInMonthsInput:f,handleAmountInput:p,handleCodeInput:m,clearError:g,errors:_,testId:v,handleTrialAmountInput:y,amountOptions:b})=>{let S=s.cadence===`year`,C=S?i.filter(e=>e.value!==`repeating`):i,[k,A]=(0,X.useState)(0),j=k>40?`text-red`:`text-green`,{siteData:V}=Y(),[U,W]=(0,X.useState)(!1),G=de(V),K=`${G}${s.code.value}`,q=async()=>{await navigator.clipboard.writeText(K),W(!0),setTimeout(()=>W(!1),2e3)};return(0,Z.jsx)(`div`,{className:`pt-7`,"data-testid":v,children:(0,Z.jsxs)(M,{className:`mb-10 gap-8`,children:[(0,Z.jsxs)(`section`,{children:[(0,Z.jsx)(`h2`,{className:`mb-4 text-lg`,children:`General`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Z.jsxs)(L,{"data-invalid":!!_.name||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-name`,children:`Offer name`}),(0,Z.jsx)(J,{"aria-invalid":!!_.name||void 0,id:`offer-name`,maxLength:40,placeholder:`Black Friday`,onChange:e=>{l(e),A(e.target.value.length)},onKeyDown:()=>g(`name`)}),_.name?(0,Z.jsx)(N,{children:_.name}):(0,Z.jsx)(I,{children:(0,Z.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Z.jsx)(`span`,{children:`Visible to members on Stripe Checkout page`}),(0,Z.jsxs)(`strong`,{children:[(0,Z.jsx)(`span`,{className:j,children:h(k)}),` /`,` `,h(40)]})]})})]}),(0,Z.jsxs)(L,{"data-invalid":!!_.displayTitle||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-display-title`,children:`Display title`}),(0,Z.jsx)(J,{"aria-invalid":!!_.displayTitle||void 0,id:`offer-display-title`,maxLength:Ee,placeholder:`Black Friday Special`,value:s.displayTitle.value,onChange:e=>{d(e)},onKeyDown:()=>g(`displayTitle`)}),_.displayTitle&&(0,Z.jsx)(N,{children:_.displayTitle})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{htmlFor:`offer-display-description`,children:`Display description`}),(0,Z.jsx)(re,{id:`offer-display-description`,maxLength:Ee,placeholder:`Take advantage of this limited-time offer.`,value:s.displayDescription,onChange:e=>{u(e)}})]})]})]}),(0,Z.jsxs)(`section`,{className:`mt-4`,children:[(0,Z.jsx)(`h2`,{className:`mb-4 text-lg`,children:`Details`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Z.jsx)(te,{"aria-label":`Offer type`,className:`rounded-md border border-border-default p-4`,value:s.type===`trial`?`trial`:`percent`,onValueChange:a,children:r.map(e=>{let t=`offer-type-${e.value}`;return(0,Z.jsxs)(L,{orientation:`horizontal`,children:[(0,Z.jsx)(ee,{id:t,value:e.value}),(0,Z.jsxs)(P,{children:[(0,Z.jsx)(F,{className:`cursor-pointer`,htmlFor:t,children:e.title}),(0,Z.jsx)(I,{children:e.description})]})]},e.value)})}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{children:`Tier — Cadence`}),(0,Z.jsxs)(O,{value:n.value,onValueChange:n=>{let r=e.find(e=>e.value===n);r&&t(r)},children:[(0,Z.jsx)(E,{"aria-label":`Tier — Cadence`,"data-testid":`tier-cadence-select-offers`,children:(0,Z.jsx)(D,{})}),(0,Z.jsx)(T,{children:e.map(e=>(0,Z.jsx)(w,{value:e.value,children:e.label},e.value))})]})]}),s.type!==`trial`&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(L,{"data-invalid":!!_.amount||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-amount`,children:`Amount off`}),(0,Z.jsxs)(H,{"data-invalid":!!_.amount||void 0,children:[(0,Z.jsx)(z,{id:`offer-amount`,type:`number`,value:s.type===`fixed`?s.fixedAmount===0?``:s.fixedAmount?.toString():s.percentAmount===0?``:s.percentAmount?.toString(),onChange:e=>{p(e)},onKeyDown:()=>g(`amount`)}),(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsxs)(O,{value:s.type===`percent`?b[0].value:b[1].value,onValueChange:c,children:[(0,Z.jsx)(E,{"aria-label":`Amount type`,className:`h-7 w-20 border-0 bg-transparent px-2 shadow-none focus-visible:ring-0`,"data-testid":`amount-type-select-offers`,children:(0,Z.jsx)(D,{})}),(0,Z.jsx)(T,{align:`end`,children:b.map(e=>(0,Z.jsx)(w,{value:e.value,children:e.label},e.value))})]})})]}),_.amount&&(0,Z.jsx)(N,{children:_.amount})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{children:`Duration`}),(0,Z.jsxs)(O,{value:s.duration,onValueChange:e=>{g(`durationInMonths`),o(e)},children:[(0,Z.jsx)(E,{"aria-label":`Duration`,"data-testid":`duration-select-offers`,children:(0,Z.jsx)(D,{})}),(0,Z.jsx)(T,{children:C.map(e=>(0,Z.jsx)(w,{value:e.value,children:e.label},e.value))})]})]}),s.duration===`repeating`&&!S&&(0,Z.jsx)(`div`,{className:`-mt-4`,children:(0,Z.jsxs)(L,{"data-invalid":!!_.durationInMonths||void 0,children:[(0,Z.jsxs)(H,{"data-invalid":!!_.durationInMonths||void 0,children:[(0,Z.jsx)(z,{"aria-invalid":!!_.durationInMonths||void 0,"data-testid":`duration-months-input`,type:`number`,value:s.durationInMonths===0?``:String(s.durationInMonths),onChange:e=>{f(e)},onKeyDown:()=>g(`durationInMonths`)}),(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsx)(R,{children:s.durationInMonths===1?`month`:`months`})})]}),_.durationInMonths&&(0,Z.jsx)(N,{children:_.durationInMonths})]})})]}),s.type===`trial`&&(0,Z.jsxs)(L,{"data-invalid":!!_.amount||void 0,children:[(0,Z.jsx)(F,{htmlFor:`trial-duration`,children:`Trial duration`}),(0,Z.jsx)(J,{"aria-invalid":!!_.amount||void 0,id:`trial-duration`,type:`number`,value:s.trialAmount?.toString(),onChange:e=>{y(e)},onKeyDown:()=>g(`amount`)}),_.amount&&(0,Z.jsx)(N,{children:_.amount})]}),(0,Z.jsxs)(L,{"data-invalid":!!_.code||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-code`,children:`Offer code`}),(0,Z.jsx)(J,{"aria-invalid":!!_.code||void 0,id:`offer-code`,placeholder:`black-friday`,value:s.code.value,onChange:e=>{m(e)},onKeyDown:()=>g(`code`)}),_.code?(0,Z.jsx)(N,{children:_.code}):s.code.value!==``&&(0,Z.jsx)(I,{children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{children:[G,(0,Z.jsx)(`span`,{className:`font-bold`,children:s.code.value})]}),(0,Z.jsx)(x,{className:`h-auto p-0 text-sm text-green hover:text-green`,size:`sm`,type:`button`,variant:`link`,onClick:()=>void q(),children:U?`Copied`:`Copy`})]})})]})]})]})]})})},Q=e=>{let[t,n,r]=e.split(`-`);if(!t||!n||!r)throw Error(`Invalid input format. Expected format is: id-period-currency`);return{id:t,period:n,currency:r}},ke=()=>{let{siteData:e}=Y(),t=[{title:`Discount`,description:`Offer a special reduced price`,value:`percent`},{title:`Free trial`,description:`Give free access for a limited time`,value:`trial`}],r=[{value:`once`,label:`First-payment`},{value:`repeating`,label:`Multiple-months`},{value:`forever`,label:`Forever`}],[i,a]=(0,X.useState)(``),{updateRoute:c}=A(),{data:{tiers:l}={}}=me(),d=he(l||[]),p=we(d),{mutateAsync:m}=f(),[h,g]=(0,X.useState)({tier:p[0]||{},dataset:{id:p[0]?.value?Q(p[0]?.value).id:``,period:p[0]?.value?Q(p[0]?.value).period:``,currency:p[0]?.value?Q(p[0]?.value).currency:``}}),{data:{offers:_=[]}={}}=u(),{formState:v,updateForm:y,handleSave:b,saveState:x,okProps:S,validate:C,errors:w,clearError:T}=s({initialState:{disableBackground:!1,name:``,code:{isDirty:!1,value:``},displayTitle:{isDirty:!1,value:``},displayDescription:``,type:`percent`,cadence:h?.dataset?.period||``,amount:0,duration:`once`,durationInMonths:1,currency:h?.dataset?.currency||`USD`,status:`active`,tierId:h?.dataset?.id||``,trialAmount:7,fixedAmount:0,percentAmount:0},onSave:async()=>{let e=v.type===`trial`?`trial`:v.duration,t={name:v.name,code:v.code.value,display_title:v.displayTitle.value,display_description:v.displayDescription,cadence:v.cadence,amount:De(v)||0,duration:e,...e===`repeating`?{duration_in_months:v.durationInMonths}:{},currency:v.currency,status:v.status,redemption_type:`signup`,tier:{id:v.tierId},type:v.type,currency_restriction:!1},n=await m(t);n&&n.offers&&n.offers.length>0&&c(`offers/success/${n.offers[0].id}`)},onSaveError:()=>{},onValidate:()=>{let e={};return!v.name&&v.name.length===0&&(e.name=`Name is required`),!v.code.value&&v.code.value.length===0&&(e.code=`Code is required`),!v.displayTitle.value&&v.displayTitle.value.length===0&&(e.displayTitle=`Display title is required`),v.type===`percent`&&v.percentAmount===0&&(e.amount=`Enter an amount greater than 0.`),v.type===`percent`&&(v.percentAmount<1||v.percentAmount>100)&&(e.amount=`Enter an amount between 1 and 100%.`),(v.type===`fixed`&&v.fixedAmount===0||v.type===`fixed`&&v.fixedAmount<1)&&(e.amount=`Enter an amount greater than 0.`),v.type===`trial`&&v.trialAmount===0&&(e.amount=`Enter an amount greater than 0.`),v.type===`trial`&&v.trialAmount<1&&(e.amount=`Free trial must be at least 1 day.`),v.type!==`trial`&&v.duration===`repeating`&&(!Number.isInteger(v.durationInMonths)||v.durationInMonths<1)&&(e.durationInMonths=`Enter a whole number of months (1 or more).`),e},savingDelay:500}),E=[{value:`percent`,label:`%`},{value:`fixed`,label:v.currency}],D=e=>{let t=Q(e.value),n=t.period===`year`;g({tier:e,dataset:t}),y(e=>({...e,cadence:t.period,currency:t.currency,tierId:t.id,duration:n&&e.duration===`repeating`?`once`:e.duration})),n&&T(`durationInMonths`)},O=e=>{e===`trial`&&(T(`amount`),T(`durationInMonths`)),y(t=>({...t,type:e}))},k=e=>{y(t=>({...t,type:e===`percent`?`percent`:`fixed`}))},j=e=>{let t=e.target;v.type===`fixed`?y(e=>({...e,fixedAmount:Number(t.value)})):v.type===`percent`?y(e=>({...e,percentAmount:Number(t.value)})):y(e=>({...e,amount:Number(t.value)}))},M=e=>{let t=e.target,n=Number(t.value);y(e=>({...e,durationInMonths:Number.isNaN(n)?0:n}))},N=e=>{let t=e.target.value;y(e=>{let n={...e};return n.name=t,e.code.isDirty||(T(`code`),n.code={...e.code,value:Te(t)}),e.displayTitle.isDirty||(T(`displayTitle`),n.displayTitle={...e.displayTitle,value:t}),n})},P=e=>{let t=e.target;y(e=>({...e,displayTitle:{...e.displayTitle,isDirty:!0,value:t.value}}))},F=e=>{let t=e.target;y(e=>({...e,displayDescription:t.value}))},I=e=>{let t=e.target;y(e=>({...e,trialAmount:Number(t.value)}))},L=e=>{y(t=>({...t,duration:e}))},R=e=>{let t=e.target;y(e=>({...e,code:{...e.code,isDirty:!0,value:t.value}}))},z=()=>{_.length>0?c(`offers/edit`):c(`offers`)},B=(0,X.useMemo)(()=>({name:v.name||``,code:v.code.value||``,displayTitle:v.displayTitle.value||``,displayDescription:v.displayDescription||``,type:v.type||`percent`,cadence:v.cadence||`month`,amount:De(v)||0,duration:v.type===`trial`?`trial`:v.duration||`once`,durationInMonths:v.durationInMonths||0,currency:v.currency||`USD`,status:v.status||`active`,tierId:v.tierId||d[0]?.id,redemptionType:`signup`}),[v,d]);(0,X.useEffect)(()=>{let t=Ce(B,e.url);a(t)},[v,e.url,v.type,B]);let V=(0,Z.jsx)(Oe,{amountOptions:E,clearError:T,durationOptions:r,errors:w,handleAmountInput:j,handleAmountTypeChange:k,handleCodeInput:R,handleDisplayTitleInput:P,handleDurationChange:L,handleDurationInMonthsInput:M,handleNameInput:N,handleTextAreaInput:F,handleTierChange:D,handleTrialAmountInput:I,handleTypeChange:O,overrides:v,selectedTier:h.tier,testId:`add-offer-sidebar`,tierOptions:p,typeOptions:t,validate:C}),H=(0,Z.jsx)(xe,{href:i||``,portalParent:`offers`});return(0,Z.jsx)(be,{backDropClick:!1,cancelLabel:`Cancel`,dirty:x===`unsaved`,height:`full`,okLabel:`Publish`,okVariant:S.variant,preview:H,previewToolbar:!1,sidebar:V,size:`lg`,testId:`add-offer-modal`,title:`Offer`,width:1140,onCancel:z,onClose:()=>{c(`offers`)},onOk:async()=>{if(C(),!Object.values(w).every(e=>!e)){o.dismiss(),o.info(`Can't save offer`,{description:`Make sure you filled all required fields`});return}try{if(await b({force:!0}))return}catch(e){let t;e instanceof n&&e.data&&e.data.errors[0]&&(t=e.data.errors[0].context||e.data.errors[0].message),o.dismiss(),t&&o.error(`Can't save offer`,{description:t||`Please try again later`})}}})},Ae=e=>new Date(e).toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`2-digit`}),je=e=>{let t=`${r().adminRoot}#/members`,n=`offer_redemptions:[${e.join(`,`)}]`;return`${t}?filter=${encodeURIComponent(n)}`},Me=e=>je([e]),Ne=({amount:e,duration:t})=>e===100&&t===`repeating`,Pe=(e,t)=>`Retention ${e} (${t})`,Fe=({amount:e,duration:t,durationInMonths:n})=>Ne({amount:e,duration:t})?`${n} ${n===1?`month`:`months`} free`:t===`once`?`${e}% off once`:t===`repeating`?`${e}% off for ${n} mo`:`${e}% off forever`,Ie=(e,t)=>{let n=t.trim(),r=Fe(e),i=Pe(r,n);if(i.length<=40)return i;let a=i.length-40,o=Math.max(3,n.length-a);return Pe(r,n.slice(0,o))},Le=e=>e===`month`?`monthly`:`yearly`,Re=e=>e===`once`?`First payment`:e===`repeating`?`Repeating`:`Forever`,ze=(e,t,n,r,i)=>{let a=``,o=n===`month`?i?.monthly_price??0:i?.yearly_price??0,s=o,c=e=>parseFloat(e.toFixed(2)),l=e=>h(c(m(e)),{maximumFractionDigits:2}),u=p(r)+l(o);switch(e){case`percent`:a=`${h(t)}% off`,s=o-o*t/100;break;case`fixed`:a=`${l(t)} ${r} off`,s=o-t;break;case`trial`:a=`${h(t)} days free`,u=``;break;default:break}s<0&&(s=0);let d=p(r)+l(s);return{discountOffer:a,originalPriceWithCurrency:u,updatedPriceWithCurrency:d}};function Be(e){return new Date(e).toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`2-digit`})}var Ve=({clearError:e,errors:t,offer:n,updateOffer:r})=>{let{siteData:a}=Y(),[s,c]=(0,X.useState)(!1),u=i(),{confirm:d}=_e(),{mutateAsync:f}=l(),[p,m]=(0,X.useState)(n?.name.length||0),g=p>40?`text-red`:`text-green`,{updateRoute:_}=A();(0,X.useEffect)(()=>{n?.name&&m(n?.name.length)},[n?.name]);let v=de(a),y=`${v}${n?.code}`,b=async()=>{await navigator.clipboard.writeText(y),c(!0),setTimeout(()=>c(!1),2e3)},S=()=>{n?.status===`active`?d({title:`Archive offer`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`p`,{children:`New members will no longer be able to subscribe using this offer.`}),(0,Z.jsxs)(`p`,{children:[`All members that previously redeemed `,(0,Z.jsx)(`strong`,{children:n?.name}),` will remain unchanged.`]})]}),okLabel:`Archive`,okVariant:`destructive`,onOk:async e=>{try{await f({...n,status:`archived`}),e?.remove(),o.success(`Offer archived`),_(`offers/edit`)}catch(e){u(e)}}}):d({title:`Reactivate offer`,prompt:(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsxs)(`p`,{children:[`Reactivating `,(0,Z.jsx)(`strong`,{children:n?.name}),` will allow new members to subscribe using this offer. Existing members will remain unchanged.`]})}),okLabel:`Reactivate`,onOk:async e=>{try{await f({...n,status:`active`}),e?.remove(),o.success(`Offer reactivated`),_(`offers/edit`)}catch(e){u(e)}}})};return(0,Z.jsxs)(`div`,{className:`flex grow flex-col pt-2`,children:[(0,Z.jsxs)(M,{className:`mb-10 grow gap-8`,children:[(0,Z.jsx)(`section`,{children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-5 rounded-md border border-gray-300 p-4 pb-3.5 dark:border-gray-800`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-sm leading-none font-semibold text-gray-700`,children:`Created on`}),(0,Z.jsx)(`span`,{children:Be(n?.created_at?n.created_at:``)})]}),(0,Z.jsxs)(`div`,{className:`flex items-end justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-sm leading-none font-semibold text-gray-700`,children:`Performance`}),(0,Z.jsxs)(`span`,{children:[h(n?.redemption_count||0),` `,n?.redemption_count===1?`redemption`:`redemptions`]})]}),n?.redemption_count>0&&n?.last_redeemed?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-sm leading-none font-semibold text-gray-700`,children:`Last redemption`}),(0,Z.jsx)(`span`,{children:Be(n?.last_redeemed)})]}):null]}),n?.redemption_count>0?(0,Z.jsx)(`a`,{className:`font-semibold text-green`,href:Me(n?.id),children:`See members →`}):null]})]})}),(0,Z.jsxs)(`section`,{className:`mt-2`,children:[(0,Z.jsx)(`h2`,{className:`mb-4 text-lg`,children:`General`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Z.jsxs)(L,{"data-invalid":!!t.name||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-name`,children:`Offer name`}),(0,Z.jsx)(J,{"aria-invalid":!!t.name||void 0,id:`offer-name`,maxLength:40,placeholder:`Black Friday`,value:n?.name??``,onChange:e=>{m(e.target.value.length),r({name:e.target.value})},onKeyDown:()=>e(`name`)}),t.name?(0,Z.jsx)(N,{children:t.name}):(0,Z.jsx)(I,{children:(0,Z.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Z.jsx)(`span`,{children:`Visible to members on Stripe Checkout page`}),(0,Z.jsxs)(`strong`,{children:[(0,Z.jsx)(`span`,{className:g,children:h(p)}),` /`,` `,h(40)]})]})})]}),(0,Z.jsxs)(L,{className:`group`,"data-invalid":!!t.code||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-code`,children:`Offer code`}),(0,Z.jsxs)(H,{"data-invalid":!!t.code||void 0,children:[(0,Z.jsx)(z,{"aria-invalid":!!t.code||void 0,id:`offer-code`,placeholder:`black-friday`,value:n?.code??``,onChange:e=>r({code:e.target.value}),onKeyDown:()=>e(`code`)}),n?.code!==``&&(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsx)(V,{onClick:()=>void b(),children:s?`Copied!`:`Copy link`})})]}),t.code?(0,Z.jsx)(N,{children:t.code}):n?.code!==``&&(0,Z.jsxs)(I,{className:`truncate`,children:[v,(0,Z.jsx)(`span`,{className:`font-bold text-foreground`,children:n?.code})]})]}),(0,Z.jsxs)(L,{"data-invalid":!!t.displayTitle||void 0,children:[(0,Z.jsx)(F,{htmlFor:`offer-display-title`,children:`Display title`}),(0,Z.jsx)(J,{"aria-invalid":!!t.displayTitle||void 0,id:`offer-display-title`,placeholder:`Black Friday Special`,value:n?.display_title??``,onChange:e=>r({display_title:e.target.value}),onKeyDown:()=>e(`displayTitle`)}),t.displayTitle&&(0,Z.jsx)(N,{children:t.displayTitle})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{htmlFor:`offer-display-description`,children:`Display description`}),(0,Z.jsx)(re,{id:`offer-display-description`,placeholder:`Take advantage of this limited-time offer.`,value:n?.display_description??``,onChange:e=>r({display_description:e.target.value})})]})]})]})]}),(0,Z.jsx)(`div`,{className:`mb-2`,children:n?.status===`active`?(0,Z.jsx)(x,{className:`h-auto p-0 text-destructive hover:text-destructive`,type:`button`,variant:`link`,onClick:S,children:`Archive offer`}):(0,Z.jsx)(x,{className:`h-auto p-0 text-green hover:text-green`,type:`button`,variant:`link`,onClick:S,children:`Reactivate offer`})})]})},He=({id:e})=>{let{siteData:t}=Y(),{updateRoute:r}=A(),a=i(),{mutateAsync:c}=l(),[u,f]=(0,X.useState)(``),{data:{offers:p=[]}={}}=d(e||``),{formState:m,saveState:h,updateForm:g,setFormState:_,handleSave:v,validate:y,errors:b,clearError:x,okProps:S}=s({initialState:p[0],savingDelay:500,onSave:async()=>{await c(m)},onSaveError:a,onValidate:()=>{let e={};return m?.name||(e.name=`Name is required`),m?.display_title||(e.displayTitle=`Display title is required`),m?.code||(e.code=`Please enter a code`),e}});(0,X.useEffect)(()=>{_(()=>p[0])},[_,p]);let C=(0,Z.jsx)(Ve,{clearError:x,errors:b,offer:m,updateOffer:e=>{g(t=>({...t,...e}))},validate:y});(0,X.useEffect)(()=>{let e=Ce({name:m?.name||``,code:m?.code||``,displayTitle:m?.display_title||``,displayDescription:m?.display_description||``,type:m?.type||``,cadence:m?.cadence||``,amount:m?.amount,duration:m?.duration||``,durationInMonths:m?.duration_in_months||0,currency:m?.currency||``,status:m?.status||``,tierId:m?.tier?.id||``,redemptionType:`signup`},t.url);f(e)},[m,t]);let w=(0,Z.jsx)(xe,{href:u||``,portalParent:`offers`}),T=()=>{r(`offers/edit`)};return p?(0,Z.jsx)(be,{backDropClick:!1,cancelLabel:`Cancel`,dirty:h===`unsaved`,height:`full`,okLabel:S.label||`Save`,okVariant:S.variant,preview:w,previewToolbarBreadcrumbs:(0,Z.jsx)(Se,{current:m?.name||`Offer`,label:`Offers`,onBack:T}),sidebar:C,size:`lg`,testId:`offer-update-modal`,title:`Offer`,width:1140,onCancel:T,onClose:()=>{r(`offers`)},onOk:async()=>{try{if(await v({force:!0}))return}catch(e){let t;e instanceof n&&e.data&&e.data.errors[0]&&(t=e.data.errors[0].context||e.data.errors[0].message),o.dismiss(),t&&o.error(`Can't save offer`,{description:`Please try again later`})}}}):null},Ue=[{title:`Percentage discount`,description:`Offer a special reduced price`,value:`percent`},{title:`Free month(s)`,description:`Give free access for a limited time`,value:`free_months`}],We=[{value:`once`,label:`First-payment`},{value:`repeating`,label:`Multiple-months`},{value:`forever`,label:`Forever`}],Ge=191,Ke=99,qe=`Enter a whole number of months between 1 and ${Ke}.`,Je=e=>Math.max(1,Number.isFinite(e)?Math.trunc(e):0),Ye=({type:e,percentAmount:t,freeMonths:n,lastPercentAmount:r,lastFreeMonths:i})=>e===`free_months`?n>0?n:i:t>0?t:r,Xe=(e=`monthly`)=>({enabled:!1,displayTitle:``,displayDescription:``,type:e===`yearly`?`percent`:`free_months`,percentAmount:20,duration:`once`,durationInMonths:1,freeMonths:1}),Ze=e=>e.type===`percent`&&e.amount===100&&e.duration===`repeating`,Qe=(e,t=`monthly`)=>{let n=Xe(t);if(!e)return n;let r=Ze(e),i=e.type===`percent`&&!r,a=e.duration===`repeating`&&e.duration_in_months?e.duration_in_months:n.durationInMonths;return{enabled:e.status===`active`,displayTitle:e.display_title||``,displayDescription:e.display_description||``,type:r?`free_months`:`percent`,percentAmount:i?e.amount:n.percentAmount,duration:i?e.duration:n.duration,durationInMonths:a,freeMonths:r&&e.duration_in_months||n.freeMonths}},$e=({formState:e,lastPercentAmount:t,lastFreeMonths:n})=>{let r=Ye({type:e.type,percentAmount:e.percentAmount,freeMonths:e.freeMonths,lastPercentAmount:t,lastFreeMonths:n});if(e.type===`free_months`)return{type:`percent`,amount:100,duration:`repeating`,durationInMonths:Je(r)};let i=e.duration;return{type:`percent`,amount:r,duration:i,durationInMonths:i===`repeating`?Je(e.durationInMonths):0}},et=e=>{if(!e)return null;let t=e.duration_in_months??0;return{type:`percent`,amount:e.amount,duration:e.duration,durationInMonths:t}},tt=e=>e?`${e.type}:${e.amount}:${e.duration}:${e.durationInMonths}`:``,nt=e=>Number.isInteger(e)&&e>0&&e<=Ke,rt=(e,t)=>e.displayTitle!==t.displayTitle||e.displayDescription!==t.displayDescription||e.type!==t.type||e.percentAmount!==t.percentAmount||e.duration!==t.duration||e.durationInMonths!==t.durationInMonths||e.freeMonths!==t.freeMonths,it=({formState:e,updateForm:t,clearError:n,errors:r,cadence:i,lastRedeemed:a,membersFilterUrl:o,redemptions:s})=>{let c=i===`yearly`?We.filter(e=>e.value!==`repeating`):We;return(0,Z.jsx)(`div`,{className:`flex grow flex-col pt-2`,children:(0,Z.jsxs)(M,{className:`mb-10 grow gap-8`,children:[(0,Z.jsx)(`section`,{children:(0,Z.jsx)(`div`,{className:`flex flex-col gap-5 rounded-md border border-gray-300 p-4 pb-3.5 dark:border-gray-800`,children:(0,Z.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:(0,Z.jsxs)(`div`,{className:`flex items-end justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-sm leading-none font-semibold text-gray-700`,children:`Performance`}),(0,Z.jsxs)(`span`,{children:[h(s),` `,s===1?`redemption`:`redemptions`]})]}),s>0&&a?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-sm leading-none font-semibold text-gray-700`,children:`Last redemption`}),(0,Z.jsx)(`span`,{children:Ae(a)})]}):null]}),s>0&&o?(0,Z.jsx)(`a`,{className:`font-semibold text-green`,href:o,children:`See members →`}):null]})})})}),(0,Z.jsx)(`section`,{className:`mt-2`,children:(0,Z.jsxs)(L,{orientation:`horizontal`,children:[(0,Z.jsxs)(P,{children:[(0,Z.jsxs)(F,{htmlFor:`${i}-retention-enabled`,children:[`Enable `,i,` retention`]}),(0,Z.jsx)(I,{children:i===`monthly`?`Applied to monthly plans`:`Applied to annual plans`})]}),(0,Z.jsx)(C,{checked:e.enabled,id:`${i}-retention-enabled`,onCheckedChange:e=>t(t=>({...t,enabled:e}))})]})}),e.enabled&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`section`,{className:`mt-2`,children:[(0,Z.jsx)(`h2`,{className:`mb-4 text-lg`,children:`General`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{htmlFor:`retention-display-title`,children:`Display title`}),(0,Z.jsx)(J,{id:`retention-display-title`,maxLength:Ge,placeholder:`Before you go`,value:e.displayTitle,onChange:e=>{t(t=>({...t,displayTitle:e.target.value}))}})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{htmlFor:`retention-display-description`,children:`Display description`}),(0,Z.jsx)(re,{id:`retention-display-description`,maxLength:Ge,placeholder:`We'd hate to see you leave. How about a special offer to stay?`,value:e.displayDescription,onChange:e=>{t(t=>({...t,displayDescription:e.target.value}))}})]})]})]}),(0,Z.jsxs)(`section`,{className:`mt-4`,children:[(0,Z.jsx)(`h2`,{className:`mb-4 text-lg`,children:`Details`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[i===`monthly`&&(0,Z.jsx)(te,{"aria-label":`${i} retention offer type`,className:`rounded-md border border-border-default p-4`,value:e.type,onValueChange:e=>{n(`amount`),n(`durationInMonths`),t(t=>({...t,type:e}))},children:Ue.map(e=>{let t=`${i}-retention-type-${e.value}`;return(0,Z.jsxs)(L,{orientation:`horizontal`,children:[(0,Z.jsx)(ee,{id:t,value:e.value}),(0,Z.jsxs)(P,{children:[(0,Z.jsx)(F,{className:`cursor-pointer`,htmlFor:t,children:e.title}),(0,Z.jsx)(I,{children:e.description})]})]},e.value)})}),e.type===`percent`&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(L,{"data-invalid":!!r.amount||void 0,children:[(0,Z.jsx)(F,{htmlFor:`retention-amount`,children:`Amount off`}),(0,Z.jsxs)(H,{"data-invalid":!!r.amount||void 0,children:[(0,Z.jsx)(z,{"aria-invalid":!!r.amount||void 0,id:`retention-amount`,type:`number`,value:e.percentAmount===0?``:String(e.percentAmount),onChange:e=>{let n=Number(e.target.value),r=Number.isNaN(n)?0:n;t(e=>({...e,percentAmount:r}))},onKeyDown:()=>n(`amount`)}),(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsx)(R,{children:`%`})})]}),r.amount&&(0,Z.jsx)(N,{children:r.amount})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsx)(F,{children:`Duration`}),(0,Z.jsxs)(O,{value:e.duration,onValueChange:e=>{n(`durationInMonths`),t(t=>({...t,duration:e}))},children:[(0,Z.jsx)(E,{"aria-label":`Duration`,children:(0,Z.jsx)(D,{})}),(0,Z.jsx)(T,{children:c.map(e=>(0,Z.jsx)(w,{value:e.value,children:e.label},e.value))})]})]}),e.duration===`repeating`&&(0,Z.jsx)(`div`,{className:`-mt-4`,children:(0,Z.jsxs)(L,{"data-invalid":!!r.durationInMonths||void 0,children:[(0,Z.jsxs)(H,{"data-invalid":!!r.durationInMonths||void 0,children:[(0,Z.jsx)(z,{"aria-invalid":!!r.durationInMonths||void 0,"data-testid":`duration-months-input`,type:`number`,value:e.durationInMonths===0?``:String(e.durationInMonths),onChange:e=>{let n=Number(e.target.value);t(e=>({...e,durationInMonths:Number.isNaN(n)?0:n}))},onKeyDown:()=>n(`durationInMonths`)}),(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsx)(R,{children:e.durationInMonths===1?`month`:`months`})})]}),r.durationInMonths&&(0,Z.jsx)(N,{children:r.durationInMonths})]})})]}),e.type===`free_months`&&(0,Z.jsxs)(L,{"data-invalid":!!r.amount||void 0,children:[(0,Z.jsx)(F,{htmlFor:`retention-free-months`,children:`Free months`}),(0,Z.jsxs)(H,{"data-invalid":!!r.amount||void 0,children:[(0,Z.jsx)(z,{"aria-invalid":!!r.amount||void 0,id:`retention-free-months`,type:`number`,value:e.freeMonths===0?``:String(e.freeMonths),onChange:e=>{let n=Number(e.target.value);t(e=>({...e,freeMonths:Number.isNaN(n)?0:n}))},onKeyDown:()=>n(`amount`)}),(0,Z.jsx)(B,{align:`inline-end`,children:(0,Z.jsx)(R,{children:e.freeMonths===1?`month`:`months`})})]}),r.amount&&(0,Z.jsx)(N,{children:r.amount})]})]})]})]})]})})},at=({cadence:e})=>{let{updateRoute:t}=A(),{siteData:r}=Y(),{data:{tiers:i=[]}={}}=me(),{data:{offers:a=[]}={},isFetched:d,isFetching:p}=u(),{mutateAsync:m}=f(),{mutateAsync:h}=l(),g=c(),[_,v]=(0,X.useState)(``),y=e===`monthly`?`Monthly retention`:`Yearly retention`,b=e===`monthly`?`month`:`year`,x=he(i||[]),S=(0,X.useMemo)(()=>a.filter(e=>e.redemption_type===`retention`&&e.cadence===b).sort((e,t)=>{let n=e.created_at?new Date(e.created_at).getTime():0;return(t.created_at?new Date(t.created_at).getTime():0)-n}),[a,b]),C=(0,X.useMemo)(()=>S.find(e=>e.status===`active`)||null,[S]),w=S[0]||null,T=C||w,E=(0,X.useMemo)(()=>S.reduce((e,t)=>e+(t.redemption_count||0),0),[S]),D=(0,X.useMemo)(()=>S.map(e=>e.id),[S]),O=(0,X.useMemo)(()=>S.map(e=>e.last_redeemed).filter(e=>!!e).sort((e,t)=>new Date(t).getTime()-new Date(e).getTime())[0]||null,[S]),k=(0,X.useMemo)(()=>E===0||D.length===0?null:je(D),[D,E]),[j,M]=(0,X.useState)(20),[N,P]=(0,X.useState)(1),[F,I]=(0,X.useState)(null),{formState:L,setFormState:R,updateForm:z,handleSave:B,saveState:V,okProps:H,errors:ee,clearError:te}=s({initialState:Xe(e),savingDelay:500,onSave:async()=>{let t=!1,n=$e({formState:L,lastPercentAmount:j,lastFreeMonths:N}),r=tt(et(T))!==tt(n),i=L.enabled?`active`:`archived`,a=L.displayTitle||``,o=L.displayDescription||``,s=T?a!==(T.display_title||``)||o!==(T.display_description||``):a!==``||o!==``,c=Xe(e),l=!L.enabled&&!T&&rt(L,c),u=async e=>{let r=crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8,`0`),i=Ie(n,r);await m({name:i,code:r,display_title:a,display_description:o,cadence:b,amount:n.amount,duration:n.duration,duration_in_months:n.duration===`repeating`?n.durationInMonths:null,currency:null,status:e,redemption_type:`retention`,tier:null,type:n.type,currency_restriction:!1}),t=!0},d=async()=>{t&&await g()};if(!(!T&&!L.enabled&&!l)){if(r){!L.enabled&&C&&(await h({...C,status:`archived`}),t=!0),await u(i),await d();return}if(T){let e=T.status!==i;(s||e)&&(await h({...T,display_title:a,display_description:o,status:i}),t=!0),await d();return}(L.enabled||l)&&await u(i),await d()}},onSaveError:e=>{let t=`Please try again later`;e instanceof n&&e.data&&e.data.errors[0]&&(t=e.data.errors[0].context||e.data.errors[0].message||t),o.dismiss(),o.error(`Failed to save offer`,{description:t})},onValidate:()=>{let e={};return L.enabled?(L.type===`percent`&&((L.percentAmount<1||L.percentAmount>100)&&(e.amount=`Enter an amount between 1 and 100%.`),L.duration===`repeating`&&!nt(L.durationInMonths)&&(e.durationInMonths=qe)),L.type===`free_months`&&(nt(L.freeMonths)||(e.amount=qe)),e):e}}),U=`${e}:${T?.id||`none`}`;(0,X.useEffect)(()=>{!d||p||V===`unsaved`||F===U||(R(()=>Qe(T,e)),I(U))},[e,U,T,d,F,p,V,R]),(0,X.useEffect)(()=>{L.percentAmount>0&&M(L.percentAmount)},[L.percentAmount]),(0,X.useEffect)(()=>{L.freeMonths>0&&P(L.freeMonths)},[L.freeMonths]);let W=()=>{t(`offers/edit`)},G=(0,Z.jsx)(it,{cadence:e,clearError:te,errors:ee,formState:L,lastRedeemed:O,membersFilterUrl:k,redemptions:E,updateForm:z}),K=async()=>{try{await B({force:!0})&&W()}catch{}},q=(0,X.useMemo)(()=>{let t=$e({formState:L,lastPercentAmount:j,lastFreeMonths:N}),n=x.find(e=>b===`month`?e.monthly_price:e.yearly_price);return{enabled:L.enabled,name:`${e} retention`,code:`${e}-retention`,displayTitle:L.displayTitle||``,displayDescription:L.displayDescription||``,type:t.type,cadence:b,amount:t.amount,duration:t.duration,durationInMonths:t.durationInMonths,currency:``,status:`active`,tierId:n?.id||``,redemptionType:`retention`}},[x,e,L,N,j,b]);(0,X.useEffect)(()=>{if(!r.url){v(``);return}let e=Ce(q,r.url);v(e)},[q,r.url]);let ne=(0,Z.jsx)(xe,{href:_||``,portalParent:`offers`});return(0,Z.jsx)(be,{backDropClick:!1,cancelLabel:`Cancel`,dirty:V===`unsaved`,height:`full`,okLabel:H.label||`Save`,okVariant:H.variant,preview:ne,previewToolbarBreadcrumbs:(0,Z.jsx)(Se,{current:y,label:`Offers`,onBack:W}),sidebar:G,size:`lg`,testId:`retention-offer-modal`,title:`Offer`,width:1140,onCancel:W,onClose:()=>t(`offers`),onOk:K})},ot=({id:e})=>{let{updateRoute:t}=A(),{data:{offers:n=[]}={}}=d(e||``),[r,i]=(0,X.useState)(),[a,o]=(0,X.useState)(``),{siteData:s}=Y();(0,X.useEffect)(()=>{if(n.length>0){let e=n[0],t=`${de(s)}${e?.code}`;o(t),i(e)}},[n,s]);let[c,l]=(0,X.useState)(!1),u=()=>{let e=``;switch(r?.type){case`percent`:e=r?.amount+`% discount`;break;case`fixed`:e=h(m(r?.amount),{maximumFractionDigits:2})+` `+r?.currency+` discount`;break;case`trial`:e=r?.amount+` days free trial`;break;default:break}return`${encodeURIComponent(r?.name||``)} — Check out ${encodeURIComponent(e)} on:`},f=async()=>{await navigator.clipboard.writeText(a),l(!0),setTimeout(()=>l(!1),2e3)};return(0,Z.jsx)(k,{animate:!1,backDropClick:!1,footer:!1,height:`full`,size:`lg`,testId:`offer-success-modal`,topRightContent:`close`,width:1140,onClose:()=>{t(`offers`)},children:(0,Z.jsxs)(`div`,{className:`-mt-6 flex h-full flex-col items-center justify-center text-center`,children:[(0,Z.jsx)(Se,{className:`absolute top-5 left-6`,current:r?.name||``,label:`Offers`,onBack:()=>t(`offers/edit`)}),(0,Z.jsx)(v,{className:`-mt-4 size-10 text-gray-700`}),(0,Z.jsx)(`h1`,{className:`mt-6 text-4xl`,children:`Your new offer is live!`}),(0,Z.jsx)(`p`,{className:`mt-3 max-w-[510px] text-[1.6rem]`,children:`You can share the link anywhere. In your newsletter, social media, a podcast, or in-person. It all just works.`}),(0,Z.jsxs)(`div`,{className:`mt-8 flex w-full max-w-md flex-col gap-8`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2`,children:[(0,Z.jsx)(J,{name:`offer-url`,type:`url`,value:a,disabled:!0}),(0,Z.jsx)(x,{className:`w-full`,type:`button`,onClick:()=>void f(),children:c?`Copied!`:`Copy link`})]}),(0,Z.jsx)(`div`,{className:`flex items-center gap-4 text-sm font-medium before:h-px before:grow before:bg-gray-300 before:content-[""] after:h-px after:grow after:bg-gray-300 after:content-[""] dark:before:bg-gray-800 dark:after:bg-gray-800`,children:`OR`}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(x,{"aria-label":`Share on X`,className:`h-8 flex-1`,size:`sm`,type:`button`,variant:`outline`,onClick:()=>{window.open(`https://twitter.com/intent/tweet?url=${encodeURI(a)}&text=${u()}`,`_blank`)},children:(0,Z.jsx)(ge,{className:`size-3.5!`,name:`twitter-x`})}),(0,Z.jsx)(x,{"aria-label":`Share on Facebook`,className:`h-8 flex-1`,size:`sm`,type:`button`,variant:`outline`,onClick:()=>{window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURI(a)}`,`_blank`)},children:(0,Z.jsx)(ge,{className:`size-3.5!`,name:`facebook`})}),(0,Z.jsx)(x,{"aria-label":`Share on LinkedIn`,className:`h-8 flex-1`,size:`sm`,type:`button`,variant:`outline`,onClick:()=>{window.open(`http://www.linkedin.com/shareArticle?mini=true&url=${encodeURI(a)}&title=${u()}`,`_blank`)},children:(0,Z.jsx)(ge,{className:`size-3.5!`,name:`linkedin`})})]})]})]})})},st=(e,t)=>e.find(e=>e.redemption_type===`retention`&&e.cadence===t&&e.status===`active`)||null,ct=(e,t)=>e.reduce((e,n)=>n.redemption_type!==`retention`||n.cadence!==t?e:e+(n.redemption_count||0),0),lt=(e,t)=>e.filter(e=>e.redemption_type===`retention`&&e.cadence===t).map(e=>e.id),ut=(e,t)=>{let n=e.filter(e=>e.redemption_type===`retention`&&e.cadence===t&&e.created_at).map(e=>new Date(e.created_at).getTime()).filter(e=>!Number.isNaN(e));return n.length===0?null:new Date(Math.max(...n)).toISOString()},dt=e=>e.type===`percent`&&e.amount===100&&e.duration===`repeating`,ft=e=>{if(!e)return null;if(dt(e)){let t=e.duration_in_months||0,n=t===1?`month`:`months`;return`${h(t)} ${n} free`}return e.type===`percent`?`${h(e.amount)}% OFF`:null},pt=e=>{if(!e)return null;if(dt(e))return``;if(e.duration===`once`)return`First payment`;if(e.duration===`repeating`&&e.duration_in_months){let t=e.duration_in_months===1?`month`:`months`;return`For ${h(e.duration_in_months)} ${t}`}return e.duration===`forever`?`Forever`:null},mt=e=>{let t=st(e,`month`),n=st(e,`year`),r=lt(e,`month`),i=lt(e,`year`),a=ct(e,`month`),o=ct(e,`year`);return[{id:`monthly`,name:`Monthly retention`,description:`Applied to monthly plans`,terms:ft(t),termsDetail:pt(t),redemptionOfferIds:r,redemptions:a,status:t?`active`:`inactive`,createdAt:ut(e,`month`)},{id:`yearly`,name:`Yearly retention`,description:`Applied to annual plans`,terms:ft(n),termsDetail:pt(n),redemptionOfferIds:i,redemptions:o,status:n?`active`:`inactive`,createdAt:ut(e,`year`)}]},ht=({showArchived:e,setShowArchived:t,sortOption:n,sortDirection:r,onSortChange:i,onDirectionChange:a})=>(0,Z.jsxs)(ue,{children:[(0,Z.jsx)(ie,{asChild:!0,children:(0,Z.jsx)(x,{"aria-label":`Filter options`,className:`text-muted-foreground hover:text-foreground`,size:`icon`,type:`button`,variant:`ghost`,children:(0,Z.jsx)(S,{size:16,strokeWidth:1.5})})}),(0,Z.jsxs)(ce,{align:`end`,className:`z-[9999] min-w-[200px] normal-case`,children:[(0,Z.jsx)(le,{className:`text-xs tracking-wide text-muted-foreground uppercase`,children:`Sort by`}),(0,Z.jsxs)(oe,{value:n,onValueChange:i,children:[(0,Z.jsx)(ae,{value:`date-added`,children:`Date added`}),(0,Z.jsx)(ae,{value:`name`,children:`Name`}),(0,Z.jsx)(ae,{value:`redemptions`,children:`Redemptions`})]}),(0,Z.jsxs)(fe,{onSelect:a,children:[r===`asc`?(0,Z.jsx)(y,{className:`size-3`}):(0,Z.jsx)(b,{className:`size-3`}),r===`asc`?`Ascending`:`Descending`]}),(0,Z.jsx)(se,{}),(0,Z.jsx)(pe,{checked:e,onCheckedChange:e=>t(!!e),children:`Show archived`})]})]}),gt=({offer:e,onClick:t})=>{let n=e.redemptions>0&&e.redemptionOfferIds.length>0?je(e.redemptionOfferIds):void 0;return(0,Z.jsxs)(W,{"data-testid":`retention-offer-item`,children:[(0,Z.jsx)(K,{className:`sticky left-0 z-10 bg-background p-0`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:t,children:(0,Z.jsxs)(_,{gap:`none`,children:[(0,Z.jsx)(`span`,{className:`font-semibold`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:e.description})]})})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:t,children:e.terms?(0,Z.jsxs)(_,{gap:`none`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium uppercase`,children:e.terms}),(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:e.termsDetail})]}):(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`–`})})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:t,children:(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`–`})})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:n?(0,Z.jsx)(`a`,{className:`block cursor-pointer p-5 hover:underline`,"data-testid":`retention-redemptions-link-${e.id}`,href:n,children:h(e.redemptions)}):(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,"data-testid":`retention-redemptions-link-${e.id}`,type:`button`,onClick:t,children:h(e.redemptions)})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:t,children:e.status===`active`?(0,Z.jsx)(j,{className:`rounded-full uppercase`,variant:`success`,children:`Active`}):(0,Z.jsx)(j,{className:`rounded-full uppercase`,variant:`secondary`,children:`Inactive`})})})]})},_t=({archived:e,offer:t,tier:n,onClick:r})=>{let{discountOffer:i,originalPriceWithCurrency:a,updatedPriceWithCurrency:o}=ze(t.type,t.amount,t.cadence,t.currency||`USD`,n);return(0,Z.jsxs)(W,{className:e?`opacity-60`:void 0,"data-testid":`offer-item`,children:[(0,Z.jsx)(K,{className:`sticky left-0 z-10 bg-background p-0`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:r,children:(0,Z.jsxs)(_,{gap:`none`,children:[(0,Z.jsx)(`span`,{className:`font-semibold`,children:t.name}),(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[n.name,` `,Le(t.cadence)]})]})})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:r,children:(0,Z.jsxs)(_,{gap:`none`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium uppercase`,children:i}),(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:t.type===`trial`?`Trial period`:Re(t.duration)})]})})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsxs)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:r,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:o}),` `,t.type===`trial`?null:(0,Z.jsx)(`span`,{className:`relative text-sm text-muted-foreground before:absolute before:-inset-x-0.5 before:top-1/2 before:rotate-[-20deg] before:border-t before:content-[""]`,children:a})]})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:t.redemption_count>0&&t.id?(0,Z.jsx)(`a`,{className:`block cursor-pointer p-5 hover:underline`,href:Me(t.id),children:h(t.redemption_count)}):(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:r,children:h(t.redemption_count)})}),(0,Z.jsx)(K,{className:`p-0 whitespace-nowrap`,children:(0,Z.jsx)(`button`,{className:`block w-full cursor-pointer p-5 text-left`,type:`button`,onClick:r,children:e?(0,Z.jsx)(j,{className:`rounded-full uppercase`,variant:`secondary`,children:`Archived`}):(0,Z.jsx)(j,{className:`rounded-full uppercase`,variant:`success`,children:`Active`})})})]})},$=e=>e.offer.name,vt=e=>e.kind===`retention`?e.offer.redemptions:e.offer.redemption_count,yt=e=>e.kind===`retention`?e.offer.createdAt:e.offer.created_at||null,bt=(e,t,n)=>{let r=n===`desc`?-1:1;return[...e].sort((e,n)=>{let i;switch(t){case`name`:i=$(e).localeCompare($(n));break;case`redemptions`:i=vt(e)-vt(n);break;default:{let t=yt(e),r=yt(n);if(!t&&!r)i=0;else if(!t)return 1;else if(r)i=new Date(t).getTime()-new Date(r).getTime();else return-1;break}}return(i||$(e).localeCompare($(n)))*r})},xt=()=>{let{updateRoute:e}=A(),{data:{offers:t=[]}={}}=u(),{data:{tiers:n}={}}=me(),r=t.filter(e=>e.redemption_type===`signup`),i=mt(t),{sortingState:a,setSortingState:s}=ve(),c=a?.find(e=>e.type===`offers`),{offersShowArchived:l,setOffersShowArchived:d}=ye(),f=c?.option||`date-added`,p=c?.direction||`desc`,m=t=>{t&&e(`offers/edit/${t}`)},h=t=>{e(`offers/edit/retention/${t}`)},v=he(n||[]),y=r.filter(e=>{let t=n?.find(t=>t.id===e?.tier?.id),r=e.status===`active`&&t&&t.active===!0,i=e.status===`archived`||t&&t.active===!1;return!!(r||l&&i)}),b=bt([...i.map(e=>({kind:`retention`,offer:e})),...y.map(e=>({kind:`signup`,offer:e}))],f,p),S=e=>{s?.([{type:`offers`,option:e,direction:p}])},C=()=>{s?.([{type:`offers`,option:f,direction:p===`asc`?`desc`:`asc`}])},w=e=>{let t=n?.find(t=>t.id===e?.tier?.id);return e.status===`archived`||t?.active===!1};return(0,Z.jsx)(k,{animate:!1,backDropClick:!1,cancelLabel:``,footer:!1,height:`full`,size:`lg`,testId:`offers-modal`,title:`Offers`,topRightContent:(0,Z.jsxs)(g,{gap:`md`,children:[(0,Z.jsx)(x,{type:`button`,variant:`outline`,onClick:()=>{e(`offers`)},children:`Close`}),(0,Z.jsx)(x,{type:`button`,onClick:()=>{v.length===0?o.info(`You must have an active tier to create an offer.`):e(`offers/new`)},children:`New offer`})]}),width:1140,onClose:()=>{e(`offers`)},children:(0,Z.jsx)(_,{className:`h-full pt-8`,children:(0,Z.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Z.jsxs)(ne,{className:`m-0 min-w-[900px]`,children:[(0,Z.jsxs)(`colgroup`,{children:[(0,Z.jsx)(`col`,{className:`w-[25%]`}),(0,Z.jsx)(`col`,{className:`w-[200px]`}),(0,Z.jsx)(`col`,{className:`w-[200px]`}),(0,Z.jsx)(`col`,{className:`w-[200px]`}),(0,Z.jsx)(`col`,{className:`w-[220px]`})]}),(0,Z.jsx)(q,{children:(0,Z.jsxs)(W,{children:[(0,Z.jsx)(U,{className:`sticky left-0 z-10 h-auto bg-background p-0 pb-2.5 pl-5 uppercase`,children:`Name`}),(0,Z.jsx)(U,{className:`h-auto p-0 pb-2.5 pl-5 uppercase`,children:`Terms`}),(0,Z.jsx)(U,{className:`h-auto p-0 pb-2.5 pl-5 uppercase`,children:`Price`}),(0,Z.jsx)(U,{className:`h-auto p-0 pb-2.5 pl-5 uppercase`,children:`Redemptions`}),(0,Z.jsx)(U,{className:`h-auto p-0 px-5 pb-2.5 uppercase`,children:(0,Z.jsxs)(g,{align:`center`,justify:`between`,children:[`Status`,(0,Z.jsx)(ht,{setShowArchived:d,showArchived:l,sortDirection:p,sortOption:f,onDirectionChange:C,onSortChange:S})]})})]})}),(0,Z.jsx)(G,{"data-testid":`offers-table-body`,children:b.map(e=>{if(e.kind===`retention`)return(0,Z.jsx)(gt,{offer:e.offer,onClick:()=>h(e.offer.id)},`retention-${e.offer.id}`);let t=e.offer,r=n?.find(e=>e.id===t?.tier?.id);if(!r)return null;let i=w(t);return(0,Z.jsx)(_t,{archived:i,offer:t,tier:r,onClick:()=>m(t.id)},`signup-${t.id}`)})})]})})})})},St=`offers/edit/retention/`,Ct=e=>{let t=e.slice(22).replace(/\/+$/,``);return t===`monthly`||t===`yearly`?t:null},wt=({route:e})=>{if(e===`offers/new`)return(0,Z.jsx)(ke,{});if(e===`offers/edit/retention`||e.startsWith(St)){let t=e.startsWith(St)?Ct(e):null;return t?(0,Z.jsx)(at,{cadence:t}):(0,Z.jsx)(xt,{})}else if(e.startsWith(`offers/edit/`)&&e.length>12){let t=e.split(`/`).pop();return(0,Z.jsx)(He,{id:t||``})}else if(e.startsWith(`offers/success/`)&&e.length>15){let t=e.split(`/`).pop();return(0,Z.jsx)(ot,{id:t||``})}else if(e===`offers/edit`||e===`offers/edit/`)return(0,Z.jsx)(xt,{})},Tt=()=>{let{route:e}=A();return(0,Z.jsx)(wt,{route:e})};export{Tt as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{_ as r}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as i,t as a}from"./router-provider-CU87qxXw.js";import{Or as o,at as s,pn as c,rr as l,t as u}from"./button-DvIh2Bq-.js";import{B as d,li as f,lt as p,pi as m,z as h}from"./index-DDd-zhNL.js";import{t as g}from"./share-modal-BL-16PiB.js";var _=e(t(),1),v=``+new URL(`logo-loader-dark-CuSPz-zc.mp4`,import.meta.url).href,y=``+new URL(`logo-loader-88VPEpXE.mp4`,import.meta.url).href,b=n();function x(){return(0,b.jsxs)(`div`,{className:`relative mb-6 size-20`,children:[(0,b.jsx)(`video`,{"aria-hidden":`true`,className:`size-20 dark:hidden`,height:80,preload:`metadata`,role:`presentation`,tabIndex:-1,width:80,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,children:(0,b.jsx)(`source`,{src:y,type:`video/mp4`})}),(0,b.jsx)(`video`,{"aria-hidden":`true`,className:`hidden size-20 dark:block`,height:80,preload:`metadata`,role:`presentation`,tabIndex:-1,width:80,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,children:(0,b.jsx)(`source`,{src:v,type:`video/mp4`})}),(0,b.jsx)(`div`,{className:`pointer-events-none absolute inset-0 hidden bg-[hsl(216deg_11%_70%/1%)] dark:block`})]})}function S({complete:e,id:t,isBeforeNext:n,isLast:r,isNext:i,onClick:a,step:s}){let c=s.icon;return(0,b.jsxs)(`button`,{className:`group ${i?`relative z-10 -mx-8 flex w-[calc(100%+64px)] items-center justify-between rounded-md bg-background px-8 py-6 text-left shadow-[0_1px_0_rgba(17,17,26,0.05),0_0_8px_rgba(17,17,26,0.10)] transition-none dark:ring-1 dark:ring-border ${r?`-mb-[18px]`:`mb-1.5`}`:`relative flex w-full items-center justify-between bg-transparent py-6 text-left ${r||n||i?``:`after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border after:content-['']`}`}`,"data-testid":`onboarding-step-${s.id}`,id:t,type:`button`,onClick:a,children:[(0,b.jsxs)(`span`,{className:`flex min-w-0 items-center ${e?`opacity-20 group-hover:opacity-25`:`group-hover:opacity-90`}`,children:[(0,b.jsx)(c,{className:`mr-4 size-5 shrink-0 text-purple`}),(0,b.jsxs)(`span`,{className:`min-w-0 text-left`,children:[(0,b.jsx)(`span`,{className:`block truncate pr-8 text-[16px] leading-[1.3] font-bold text-foreground`,children:s.title}),i&&(0,b.jsx)(`span`,{className:`mt-1 block pr-8 text-[15px] leading-[1.4] text-muted-foreground`,children:s.description})]})]}),(0,b.jsx)(`span`,{className:`flex shrink-0 items-center transition-transform group-hover:translate-x-[5px] ${e?`text-green`:`text-purple`}`,children:e?(0,b.jsx)(l,{className:`size-5`}):(0,b.jsx)(o,{className:`size-3.5`})})]})}function C({allStepsCompleted:e,completedSteps:t,nextStep:n,onComplete:r,onDismiss:i,onStepClick:a,siteTitle:o}){let c=new Set(t);return(0,b.jsx)(`main`,{className:`relative flex min-h-screen flex-col items-center justify-center px-6 py-8`,children:(0,b.jsxs)(`section`,{className:`mt-[-48px] flex w-full flex-col items-center`,"data-test-dashboard":`onboarding-checklist`,"data-testid":`onboarding-checklist`,children:[(0,b.jsxs)(`div`,{className:`mb-8 flex flex-col items-center text-center`,children:[(0,b.jsx)(x,{}),e?(0,b.jsx)(`h1`,{className:`text-[32px] leading-[1.15] font-bold tracking-normal text-foreground max-[480px]:text-[24px]`,children:`You're all set.`}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h1`,{className:`text-[32px] leading-[1.15] font-bold tracking-normal text-foreground max-[480px]:text-[24px]`,children:`Let's get started!`}),(0,b.jsxs)(`p`,{className:`mt-2 mb-0 text-[15px] text-muted-foreground max-[480px]:m-0 max-[480px]:text-[14px]`,children:[`Welcome! It's time to set up `,o,`.`]})]})]}),(0,b.jsxs)(`div`,{className:`w-full max-w-[540px] rounded-md border border-border bg-background px-6 pt-4 pb-1`,children:[(0,b.jsxs)(`div`,{className:`mt-[-12px] flex items-center justify-between py-6 ${n===`customize-design`?`border-b-0`:`border-b border-border`}`,children:[(0,b.jsxs)(`span`,{className:`flex min-w-0 items-center opacity-20`,children:[(0,b.jsx)(s,{className:`mr-4 size-5 shrink-0 text-purple`}),(0,b.jsx)(`span`,{className:`truncate pr-8 text-[16px] leading-[1.3] font-bold text-foreground`,children:`Start a new Ghost publication`})]}),(0,b.jsx)(`span`,{className:`shrink-0 text-green`,children:(0,b.jsx)(l,{className:`size-5`})})]}),d.map((e,t)=>(0,b.jsx)(S,{complete:c.has(e.id),id:`ob-${e.id}`,isBeforeNext:d[t+1]?.id===n,isLast:t===d.length-1,isNext:n===e.id,step:e,onClick:()=>a(e.id)},e.id))]}),e&&(0,b.jsx)(u,{className:`mt-6 h-auto w-full max-w-[540px] p-3 text-[16px] max-[480px]:text-[15px]`,"data-testid":`onboarding-complete`,id:`ob-completed`,type:`button`,onClick:r,children:`Explore your dashboard`}),(0,b.jsxs)(`p`,{className:`mt-8 mb-0 text-[15px] text-muted-foreground max-[480px]:text-[14px]`,children:[`More questions? Check out our`,` `,(0,b.jsx)(u,{className:`h-auto p-0 align-baseline text-[15px] text-green hover:text-green/90 max-[480px]:text-[14px]`,variant:`link`,asChild:!0,children:(0,b.jsx)(`a`,{href:`https://ghost.org/help?utm_source=admin&utm_campaign=onboarding`,id:`ob-help-center`,rel:`noreferrer`,target:`_blank`,children:`Help Center`})}),`.`]}),!e&&(0,b.jsx)(u,{className:`mt-6 h-[38px] overflow-hidden px-3.5 py-px text-[15px] font-normal whitespace-nowrap text-muted-foreground hover:border-gray-300 hover:text-foreground`,"data-testid":`onboarding-skip`,id:`ob-skip`,type:`button`,variant:`outline`,onClick:i,children:`Skip onboarding`})]})})}function w({description:e,imageUrl:t,onOpenChange:n,open:r,siteTitle:i,siteUrl:a}){let o=encodeURIComponent(a),s=[{href:`https://twitter.com/intent/tweet?url=${o}`,id:`ob-share-on-x`,label:`Share your publication on X`,service:`x`},{href:`https://threads.net/intent/post?text=${o}`,id:`ob-share-on-threads`,label:`Share your publication on Threads`,service:`threads`},{href:`https://www.facebook.com/sharer/sharer.php?u=${o}`,id:`ob-share-on-fb`,label:`Share your publication on Facebook`,service:`facebook`},{href:`https://www.linkedin.com/feed/?shareActive=true&text=${o}`,id:`ob-share-on-li`,label:`Share your publication on LinkedIn`,service:`linkedin`}];return(0,b.jsx)(g.Root,{open:r,onOpenChange:n,children:(0,b.jsxs)(g.Content,{className:`dark:bg-surface-elevated`,"data-test-modal":`onboarding-share`,"data-testid":`onboarding-share-modal`,children:[(0,b.jsxs)(g.Header,{className:`flex-row items-center justify-between gap-4 space-y-0 text-left`,children:[(0,b.jsx)(g.Title,{className:`text-2xl`,children:`Share your publication`}),(0,b.jsx)(g.CloseButton,{id:`ob-close-share-modal`,onClick:()=>n(!1)})]}),(0,b.jsxs)(g.Preview,{className:`rounded-lg bg-card`,href:a,children:[t?(0,b.jsx)(`div`,{className:`aspect-video bg-cover bg-center`,style:{backgroundImage:`url(${t})`}}):(0,b.jsx)(`div`,{className:`flex aspect-video items-center justify-center bg-muted text-muted-foreground`,children:(0,b.jsx)(c,{className:`size-8`})}),(0,b.jsxs)(`div`,{className:`p-5`,children:[(0,b.jsx)(`div`,{className:`text-lg font-semibold`,children:i}),e&&(0,b.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e})]})]}),(0,b.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Set your publication's cover image and description in`,` `,(0,b.jsx)(u,{className:`h-auto p-0 align-baseline text-sm text-green hover:text-green/90`,variant:`link`,asChild:!0,children:(0,b.jsx)(`a`,{href:`#/settings/design/edit?ref=setup`,id:`ob-share-modal-design-settings`,children:`Design settings`})}),`.`]}),(0,b.jsxs)(g.Footer,{children:[(0,b.jsx)(g.SocialLinks,{links:s}),(0,b.jsx)(g.CopyButton,{className:`ml-0! grow cursor-pointer`,copyURL:a,"data-testid":`onboarding-copy-link`,icon:`link`,id:`ob-copy-publication-link`,label:`Copy link`})]})]})})}function T(e){return e&&/^\/analytics(?:\/|\?|$)/.test(e)?e:`/analytics`}function E(){let e=i(),[t]=r(),n=T(t.get(`returnTo`)),o=h(),s=m(),c=p(),l=(0,_.useRef)(!1),[u,g]=(0,_.useState)(!1),[v,y]=(0,_.useState)(!1),x=String(f(s.data?.settings,`title`)||c.data?.site.title||`your publication`),S=String(f(s.data?.settings,`description`)||c.data?.site.description||``),E=String(f(s.data?.settings,`cover_image`)||``),D=c.data?.site.url||`/`,{allStepsCompleted:O,completeChecklist:k,completedSteps:A,dismissChecklist:j,shouldShowChecklist:M,isLoading:N,markStepCompleted:P,nextStep:F}=o;if(N||c.isLoading||u||l.current)return null;if(!M)return(0,b.jsx)(a,{to:n,replace:!0});let I=async t=>{l.current=!0,g(!0);try{await t(),e(n,{replace:!0})}catch(e){l.current=!1,g(!1),console.error(e)}},L=async t=>{if(t===`share-publication`){await P(t),y(!0);return}await P(t);let n=d.find(({id:e})=>e===t);n?.route&&e(n.route)};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(C,{allStepsCompleted:O,completedSteps:A,nextStep:F,siteTitle:x,onComplete:()=>{I(k)},onDismiss:()=>{I(j)},onStepClick:e=>{L(e)}}),(0,b.jsx)(w,{description:S,imageUrl:E,open:v,siteTitle:x,siteUrl:D,onOpenChange:y})]})}export{E as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./use-tinybird-query-DXoF74NM.js";import{r as i}from"./post-helpers-C88JBa4D.js";import{h as a}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as o}from"./router-provider-CU87qxXw.js";import{h as s,l as c,m as l}from"./dist-BXHrDV19.js";import{a as u}from"./heading-BB21QAbb.js";import{Gt as d,q as f,rn as p,t as m,vn as h,yn as g}from"./button-DvIh2Bq-.js";import{r as _}from"./trend-badge-B9v7kMF8.js";import{t as v}from"./skeleton-DwCva0-b.js";import{a as y,n as b,o as x,t as S}from"./card-FHQ4D10L.js";import{c as ee,l as C,n as w,o as T,r as te,s as E,t as ne,u as re}from"./data-list-C0CKkeWW.js";import{t as D}from"./empty-indicator-L4Ql5Db7.js";import{Ci as O,Un as k,Yn as A,_i as ie,bi as ae,gi as oe,q as se,vi as ce}from"./index-DDd-zhNL.js";import{t as le}from"./disabled-sources-indicator-CLZhMv8J.js";import{a as ue,c as de,n as j,o as fe,r as pe,t as me}from"./chart-helpers-CNpA7re_.js";import{n as M,r as N,t as P}from"./kpi-card-CRLPVlFW.js";import{t as F}from"./use-analytics-data-ChHqiZXv.js";import{t as I}from"./clean-tracked-url-dkN05vOf.js";import{n as he}from"./email-sending-status-context-C76KYL1V.js";import{r as L}from"./links-FwNCVyVe.js";import{n as ge}from"./post-analytics-context-bt2YTBAC.js";import{a as R,n as z,r as B,t as V}from"./kpi-card-CRPbW8NZ.js";import{n as _e,r as ve,t as ye}from"./post-analytics-header-J0WciLx6.js";import{t as be}from"./gift-links-D8gl_yJS.js";import{r as xe,t as Se}from"./gift-link-modal-C3H7YFXO.js";import{t as Ce}from"./use-post-referrers-DyPjyBSN.js";import{i as H,n as U,r as W}from"./link-helpers-8J7ixADV.js";import{n as we,r as G}from"./kpi-helpers-D7zT96bp.js";var K=e(t(),1),q=n(),Te=({post:e,isNewsletterStatsLoading:t,isWebShown:n})=>{let{postId:r}=a(),i=o(),{isNewsletterDataHidden:f}=he(),h=(0,K.useMemo)(()=>{let t=e.email?.opened_count||0,n=e.email?.email_count||0,r=e.count?.clicks||0;return{opened:t,clicked:r,openedRate:n>0?t/n:0,clickedRate:n>0?r/n:0,sent:n}},[e]),{data:g}=L({searchParams:{filter:`post_id:'${r}'`}}),_=(0,K.useMemo)(()=>U(g),[g]),v=[{datatype:`Clicked`,value:h.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`},{datatype:`Opened`,value:h.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],D={percentage:{label:`Opened`},Average:{label:`Clicked`},"This newsletter":{label:`Opened`}},O=e.email_only||!n;return(0,q.jsxs)(S,{className:`group/datalist overflow-hidden ${O&&`col-span-2`}`,children:[(0,q.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,q.jsx)(y,{children:(0,q.jsxs)(x,{className:`flex items-center gap-1.5 text-lg`,children:[(0,q.jsx)(d,{size:16,strokeWidth:1.5}),`Newsletter performance`]})}),!f&&(0,q.jsx)(m,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{i(`/posts/analytics/${r}/newsletter`)},children:`View more`})]}),t?(0,q.jsx)(b,{children:(0,q.jsx)(`div`,{className:`mx-auto flex min-h-[250px] items-center justify-center xl:size-full`,children:(0,q.jsx)(A,{})})}):(0,q.jsx)(b,{children:(0,q.jsxs)(H,{className:c(O&&`grid gap-6 md:grid-cols-2 md:gap-0`),description:`Opens and clicks will appear once every email has been sent`,title:`Your newsletter is being sent`,children:[(0,q.jsxs)(`div`,{className:c(O&&`md:border-r md:pr-6`),children:[(0,q.jsxs)(`div`,{className:`grid grid-cols-2 gap-6`,children:[(0,q.jsx)(P,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,q.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,q.jsx)(M,{color:`var(--chart-blue)`,children:`Open rate`}),(0,q.jsx)(N,{value:s(h.openedRate)})]})}),(0,q.jsx)(P,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,q.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,q.jsx)(M,{color:`var(--chart-teal)`,children:`Click rate`}),(0,q.jsx)(N,{value:s(h.clickedRate)})]})})]}),!O&&(0,q.jsx)(k,{}),(0,q.jsx)(`div`,{className:`mx-auto my-6 h-[240px]`,children:(0,q.jsx)(W,{className:`pointer-events-none aspect-square h-[240px]`,config:D,data:v,tooltip:!1})})]}),(0,q.jsxs)(`div`,{className:c(O&&`border-t pt-6 md:border-t-0 md:pt-0 md:pl-6`),children:[!O&&(0,q.jsx)(k,{}),(0,q.jsxs)(`div`,{className:O?``:`pt-3`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 ${O?`pb-3`:`py-3`}`,children:[(0,q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Top clicked links in this email`}),(0,q.jsx)(u,{children:`Members`})]}),_.length>0?(0,q.jsx)(ne,{className:``,children:(0,q.jsx)(te,{children:_.slice(0,O?10:5).map(e=>{let t=h.clicked>0?e.count/h.clicked:0;return(0,q.jsxs)(re,{children:[(0,q.jsx)(w,{style:{width:`${t?Math.round(t*100):0}%`}}),(0,q.jsx)(T,{children:(0,q.jsxs)(`div`,{className:`flex items-center space-x-2 overflow-hidden`,children:[(0,q.jsx)(p,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),(0,q.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:e.link.to,rel:`noreferrer`,target:`_blank`,title:e.link.to,children:I(e.link.to,!0)})]})}),(0,q.jsxs)(E,{children:[(0,q.jsx)(ee,{children:l(e.count||0)}),(0,q.jsx)(C,{children:s(t)})]})]},e.link.link_id)})})}):(0,q.jsx)(`div`,{className:`py-20 text-center text-sm text-muted-foreground`,children:`You have no links in your post.`})]})]})]})})]})},Ee=({chartData:e,range:t,isLoading:n,visitors:r,sourcesData:i,isNewsletterShown:s=!0})=>{let{postId:c}=a(),d=o(),{site:f}=F(),p=f.url,g=f.icon,v=(0,K.useMemo)(()=>i?i.reduce((e,t)=>e+Number(t.visits||0),0):0,[i]);return(0,q.jsx)(q.Fragment,{children:(0,q.jsxs)(S,{className:`group/datalist overflow-hidden ${!s&&`col-span-2`}`,"data-testid":`web-performance`,children:[(0,q.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,q.jsx)(y,{children:(0,q.jsxs)(x,{className:`flex items-center gap-1.5 text-lg`,children:[(0,q.jsx)(h,{size:16,strokeWidth:1.5}),`Web performance`]})}),(0,q.jsx)(m,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{d(`/posts/analytics/${c}/web`)},children:`View more`})]}),(0,q.jsxs)(b,{children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(P,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,"data-testid":`unique-visitors`,children:(0,q.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,q.jsx)(M,{color:`var(--chart-blue)`,children:`Unique visitors`}),(0,q.jsx)(N,{value:l(r)})]})}),(0,q.jsx)(k,{}),(0,q.jsx)(`div`,{className:`max-h-[288px] py-6 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:n?(0,q.jsx)(`div`,{className:`flex h-[16vw] min-h-[240px] items-center justify-center`,children:(0,q.jsx)(A,{})}):(0,q.jsx)(_,{className:`aspect-auto h-[240px] w-full`,color:`var(--chart-blue)`,data:e||[],id:`visitors`,range:t,syncId:`overview-charts`})})]}),s&&(0,q.jsxs)(`div`,{className:s?`border-t pt-3`:`-mt-3`,children:[(0,q.jsx)(`div`,{children:(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-3`,children:[(0,q.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`How readers found this post`}),(0,q.jsx)(u,{children:`Visitors`})]})}),i&&i.length>0?(0,q.jsx)(G,{data:i,range:t,siteIcon:g,siteUrl:p,tableOnly:!0,topSourcesLimit:5,totalVisitors:v}):(0,q.jsx)(D,{className:`h-full py-10`,description:`Once someone visits this post, sources will show here`,title:`No visitors since you published this post`,children:(0,q.jsx)(h,{strokeWidth:1.5})})]})]})]})})},J=()=>{let e=o(),{statsConfig:t,isLoading:n}=F(),{post:a,isPostLoading:s,postId:c}=ge(),{totals:u,isLoading:d,currencySymbol:p}=Ce(c),h=oe(),_=ie(),ee=ce(),C=ae(),w=O(),{hasNewsletterAnalytics:T,isStatusLoading:te}=he(),E=_e(a),{token:ne,isLoading:re,error:D}=be(c,{enabled:E}),{usage:k,loading:M,error:N}=xe({postUuid:a?.uuid,token:ne,tokenLoading:re,tokenError:D,enabled:E}),[P,I]=(0,K.useState)(!1),L=(0,K.useMemo)(()=>a?.published_at?fe(a.published_at):se.allTime.value,[a?.published_at]),{startDate:H,endDate:U,timezone:W}=ue(L),G=(0,K.useMemo)(()=>{let e={site_uuid:t?.id||``,date_from:j(H),date_to:j(U),timezone:W,post_uuid:``};return!s&&a?.uuid?{...e,post_uuid:a.uuid}:e},[s,a,t?.id,H,U,W]),{data:J,loading:De}=r({endpoint:`api_kpis`,statsConfig:t,params:G}),Oe=(0,K.useMemo)(()=>J?.length?J.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0):0,[J]),Y=we.visits,ke=pe(L,J||[],{fieldName:Y.dataKey}),Ae=de(J||[],L,Y.dataKey,`sum`)?.map(e=>{let t=Number(e[Y.dataKey]);return{date:String(e.date),value:t,formattedValue:Y.formatter(t),label:Y.label}}),{data:je,loading:Me}=r({endpoint:`api_top_sources`,statsConfig:t,params:G}),Ne=n||d||s||De,Pe=s||n||De,X=T&&_&&h,Z=!a?.email_only&&w,Q=ee,$=!!(E&&a&&w);return(0,K.useEffect)(()=>{!s&&a&&i(a)&&!w&&Q&&e(`/posts/analytics/${c}/growth`,{replace:!0})},[s,a,w,e,c,Q]),s?(0,q.jsx)(A,{}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(ye,{currentTab:`Overview`}),(0,q.jsx)(ve,{children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-6 lg:grid lg:grid-cols-2`,children:[Z&&(0,q.jsx)(Ee,{chartData:Ae,isLoading:Pe||Ne||Me,isNewsletterShown:X,range:ke,sourcesData:je,visitors:Oe}),X&&(0,q.jsx)(Te,{isNewsletterStatsLoading:s||te,isWebShown:Z,post:a}),(Q||$)&&(0,q.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-6 lg:grid lg:grid-cols-3`,children:[Q&&(0,q.jsxs)(S,{className:`group overflow-hidden p-0 ${$?`lg:col-span-2`:`lg:col-span-3`}`,"data-testid":`growth`,children:[(0,q.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,q.jsx)(y,{children:(0,q.jsxs)(x,{className:`flex items-center gap-1.5 text-lg`,children:[(0,q.jsx)(f,{size:16,strokeWidth:1.5}),`Growth`]})}),(0,q.jsx)(m,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>{e(`/posts/analytics/${c}/growth`)},children:`View more`})]}),(0,q.jsx)(b,{className:`flex flex-col gap-6 px-0 md:grid md:grid-cols-3 md:items-stretch md:gap-0`,children:Ne?Array.from({length:3},(e,t)=>(0,q.jsxs)(`div`,{className:`h-[98px] gap-1 border-r px-6 py-5 last:border-r-0`,children:[(0,q.jsx)(v,{className:`w-2/3`}),(0,q.jsx)(v,{className:`h-7 w-12`})]},t)):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(V,{className:`grow gap-1 py-0`,children:[(0,q.jsx)(B,{children:`Free members`}),(0,q.jsx)(z,{children:(0,q.jsx)(R,{className:`text-[2.2rem]`,children:l(u?.free_members||0)})})]}),C&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(V,{className:`grow gap-1 py-0`,children:[(0,q.jsx)(B,{children:`Paid members`}),(0,q.jsx)(z,{children:(0,q.jsx)(R,{className:`text-[2.2rem]`,children:l(u?.paid_members||0)})})]}),(0,q.jsxs)(V,{className:`grow gap-1 py-0`,children:[(0,q.jsx)(B,{children:`MRR impact`}),(0,q.jsx)(z,{children:(0,q.jsxs)(R,{className:`text-[2.2rem]`,children:[p,l(me(u?.mrr||0))]})})]})]})]})})]}),$&&(0,q.jsxs)(S,{className:`group/datalist overflow-hidden ${Q?`lg:col-span-1`:`lg:col-span-3`}`,"data-testid":`gift-link-card`,children:[(0,q.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,q.jsx)(y,{children:(0,q.jsxs)(x,{className:`flex items-center gap-1.5 text-lg`,children:[(0,q.jsx)(g,{size:16,strokeWidth:1.5}),`Gift link`]})}),(0,q.jsx)(m,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:()=>I(!0),children:`Share`})]}),!M&&!N&&(0,q.jsxs)(b,{className:`flex flex-col gap-1`,children:[(0,q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Visitors`}),(0,q.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold`,"data-testid":`gift-link-card-visitors`,children:l(k?.visits??0)})]})]})]}),!Z&&!X&&!Q&&!$&&(0,q.jsx)(le,{className:`col-span-2 py-20`})]})}),$&&(0,q.jsx)(Se,{open:P,postId:c,source:`gift-link-card`,onOpenChange:I},c)]})};export{J as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./use-tinybird-query-DXoF74NM.js";import{i}from"./pagemenu-CnkTDO71.js";import{r as a}from"./posts-tcoO3iRG.js";import{o}from"./config-BPljH6wF.js";import{t as s}from"./analytics-53FOa2wq.js";import{t as c}from"./post-utils-DKF4mfuo.js";import{t as l}from"./post-helpers-C88JBa4D.js";import{a as u}from"./router-provider-CU87qxXw.js";import{h as d,l as f,m as p,s as m,u as h}from"./dist-BXHrDV19.js";import{r as g}from"./heading-BB21QAbb.js";import{At as _,On as v,Rn as y,X as b,Yt as x,et as S,g as C,ir as w,kt as T,lr as E,r as D,sr as ee,t as O,u as k,vn as A,xt as te}from"./button-DvIh2Bq-.js";import{r as j}from"./trend-badge-B9v7kMF8.js";import{n as M,t as N}from"./skeleton-DwCva0-b.js";import{a as P,n as F,o as I,r as L,s as ne,t as R}from"./card-FHQ4D10L.js";import{t as z}from"./empty-indicator-L4Ql5Db7.js";import{t as re}from"./use-host-limits-mpTkZIq8.js";import{Ci as B,E as V,V as ie,X as H,Yn as ae,_i as oe,bi as U,gi as se,q as ce,vi as W}from"./index-DDd-zhNL.js";import{i as le,n as ue,r as de,t as fe}from"./stats-view-NDja_g96.js";import{g as pe,u as me}from"./stats-Cvp8Ep5m.js";import{a as he,c as G,i as K,n as q,r as ge,t as J}from"./chart-helpers-CNpA7re_.js";import{t as _e}from"./use-growth-stats-CqqdnESN.js";import{n as ve,r as ye,t as be}from"./kpi-card-CRLPVlFW.js";import{t as Y}from"./use-analytics-data-ChHqiZXv.js";import{n as xe}from"./audience-6GXevic-.js";import{n as Se}from"./url-helpers-DcQbx-Xg.js";import{t as Ce}from"./get-site-timezone-HgL0jI_F.js";import{t as we}from"./post-share-modal-D0BbTo4W.js";import{t as Te}from"./feature-image-placeholder-e2q6TcH6.js";var X=e(t(),1),Ee=()=>{let{data:{posts:[e]}={posts:[]},isLoading:t}=a({searchParams:{filter:`status:[published,sent]`,order:`published_at DESC`,limit:`1`,include:`authors,email,count.clicks`}}),n=e,{data:r,isLoading:i}=me(n?.id||``,{enabled:!!n?.id});return{data:(0,X.useMemo)(()=>{if(!n)return null;let e=r?.stats?.[0]||{id:n.id,recipient_count:null,opened_count:null,open_rate:null,member_delta:0,free_members:0,paid_members:0,visitors:0};return{id:n.id,uuid:n.uuid,title:n.title||``,slug:n.slug||``,feature_image:n.feature_image||null,published_at:n.published_at||``,url:n.url||``,excerpt:n.excerpt||``,email_only:n.email_only||!1,status:n.status,email:n.email,count:n.count,authors:n.authors||[],recipient_count:e.recipient_count,opened_count:e.opened_count,open_rate:e.open_rate,member_delta:e.member_delta,free_members:e.free_members,paid_members:e.paid_members,visitors:e.visitors,click_rate:null}},[n,r]),isLoading:t||!!n?.id&&i}},Z=n(),De=e=>e.email_only?`Sent`:e.email?`Published and sent`:`Published`,Oe=({latestPostStats:e,isLoading:t})=>{let n=u(),[r,i]=(0,X.useState)(!1),{site:a,settings:o}=Y(),c=se(),m=oe(),g=B(),y=W()??!1;(0,X.useEffect)(()=>{r&&s(`Share Modal Opened`,{giftLinkShown:!1,source:`stats-overview`})},[r]);let S=a.title||String(o.find(e=>e.key===`title`)?.value||`Ghost Site`),w=Ce(o),T=e?l(e,{membersTrackSources:y}):null,E=`group mr-2 flex flex-col gap-1.5 hover:cursor-pointer`,D=!!e?.email,k=Se({postId:e?.id,hasEmailData:D,analytics:{webAnalytics:g,membersTrackSources:y}}),j=k.startsWith(`/editor/`),M=V(k);return(0,Z.jsxs)(R,{className:`group/card`,"data-testid":`latest-post`,children:[(0,Z.jsxs)(P,{children:[(0,Z.jsx)(I,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:`Latest post performance`}),(0,Z.jsx)(L,{className:`hidden`,children:`How your last post did`})]}),(0,Z.jsxs)(F,{className:`flex flex-col gap-6 px-0 lg:flex-row xl:grid xl:grid-cols-3`,children:[t&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex w-full items-center gap-6 px-6 xl:col-span-2`,children:[(0,Z.jsx)(`div`,{className:`w-full max-w-[232px] grow`,children:(0,Z.jsx)(N,{className:`aspect-[16/10] rounded-md`})}),(0,Z.jsxs)(`div`,{className:`w-full grow`,children:[(0,Z.jsx)(N,{className:`w-full max-w-[420px]`}),(0,Z.jsx)(N,{className:`w-1/2`})]})]}),(0,Z.jsx)(`div`,{className:`flex flex-col items-stretch gap-2 px-6`,children:(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-5`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(N,{className:`w-3/4`}),(0,Z.jsx)(N,{className:`h-10 w-1/3`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(N,{className:`w-3/4`}),(0,Z.jsx)(N,{className:`h-10 w-1/3`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(N,{className:`w-3/4`}),(0,Z.jsx)(N,{className:`h-10 w-1/3`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(N,{className:`w-3/4`}),(0,Z.jsx)(N,{className:`h-10 w-1/3`})]})]})})]}),!t&&e&&T?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-6 px-6 transition-all md:flex-row md:items-start xl:col-span-2`,children:[e.feature_image&&(0,Z.jsx)(`div`,{className:`aspect-[16/10] w-full min-w-[100px] rounded-sm bg-cover bg-center sm:max-w-[170px] lg:max-w-[170px] xl:max-w-[232px]`,style:{backgroundImage:`url(${e.feature_image})`}}),(0,Z.jsxs)(`div`,{className:`flex grow flex-col items-start justify-center self-stretch`,children:[(0,Z.jsx)(`div`,{className:`text-md leading-tighter font-semibold tracking-tight hover:cursor-pointer hover:opacity-75`,onClick:()=>{!t&&e&&n(k,{crossApp:M})},children:e.title}),(0,Z.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[e.authors&&e.authors.length>0&&(0,Z.jsxs)(`div`,{children:[`By `,e.authors.map(e=>e.name).join(`, `),` –`,` `,h(e.published_at,w)]}),(0,Z.jsx)(`div`,{className:`mt-0.5`,children:De(e)})]}),(0,Z.jsxs)(`div`,{className:`mt-6 flex items-center gap-2`,children:[!e.email_only&&(0,Z.jsx)(we,{author:e.authors?.map(e=>e.name).join(`, `)||``,description:``,faviconURL:a.icon||``,featureImageURL:e.feature_image||``,open:r,postExcerpt:e.excerpt||``,postTitle:e.title,postURL:e.url||``,siteTitle:S,onClose:()=>i(!1),onOpenChange:i,children:(0,Z.jsxs)(O,{onClick:()=>i(!0),children:[(0,Z.jsx)(b,{}),` Share post`]})}),(0,Z.jsx)(O,{className:e.email_only?`w-full`:``,variant:`outline`,onClick:()=>{n(k,{crossApp:M})},children:j?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(te,{}),(0,Z.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Edit post`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ee,{}),(0,Z.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:e.email_only?`Post analytics`:`Analytics`})]})})]})]})]}),(0,Z.jsx)(`div`,{className:`-ml-4 flex w-full flex-col items-stretch gap-2 pr-6 xl:h-full xl:max-w-none`,children:(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-6 pl-10 lg:border-l xl:h-full`,children:[T.showWebMetrics&&g&&(0,Z.jsxs)(`div`,{className:E,"data-testid":`latest-post-visitors`,onClick:()=>{n(`/posts/analytics/${e.id}/web`)},children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,Z.jsx)(A,{size:16,strokeWidth:1.25}),(0,Z.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Visitors`})]}),(0,Z.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:p(e.visitors)})]}),T.showMemberGrowth&&(0,Z.jsxs)(`div`,{className:f(E,T.showEmailMetrics&&(!T.showWebMetrics||!g)&&`col-[1/2] row-[2/3]`),"data-testid":`latest-post-members`,onClick:()=>{n(`/posts/analytics/${e.id}/growth`)},children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,Z.jsx)(C,{size:16,strokeWidth:1.25}),(0,Z.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Members`})]}),(0,Z.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.member_delta?(0,Z.jsxs)(Z.Fragment,{children:[`+`,p(e.member_delta)]}):0})]}),T.showEmailMetrics&&e.email&&(0,Z.jsxs)(Z.Fragment,{children:[m&&(0,Z.jsxs)(`div`,{className:E,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`)},children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,Z.jsx)(x,{size:16,strokeWidth:1.25}),(0,Z.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Opens`})]}),(0,Z.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count?d((e.email.opened_count||0)/e.email.email_count):`0%`})]}),c&&(0,Z.jsxs)(`div`,{className:E,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`)},children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,Z.jsx)(_,{size:16,strokeWidth:1.25}),(0,Z.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Clicks`})]}),(0,Z.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count&&e.count?.clicks?d((e.count.clicks||0)/e.email.email_count):`0%`})]})]})]})})]}):!t&&(0,Z.jsx)(z,{actions:(0,Z.jsx)(O,{variant:`secondary`,onClick:()=>{n(`/editor/post`,{crossApp:!0})},children:`New post`}),className:`w-full pb-10 xl:col-span-3`,description:`Once it's live, you can track performance here`,title:`Publish your first post`,children:(0,Z.jsx)(v,{strokeWidth:1.5})})]})]})},Q=({title:e,iconName:t,description:n,color:r,diffDirection:i,diffValue:a,formattedValue:o,trendingFromValue:s,children:c,onClick:l})=>{let{range:u}=H(),d=t&&D[t],f=X.useMemo(()=>{if(!i||i===`empty`||u===ce.allTime.value||!a)return``;let e=i===`up`?`up`:i===`down`?`down`:`at`,t=K(u).replace(`in the `,``).replace(/^\(|\)$/g,``);return i===`same`?(0,Z.jsxs)(`span`,{children:[`You're trending at the same level as`,` `,(0,Z.jsx)(`span`,{className:`font-semibold`,children:o}),` compared to the`,` `,(0,Z.jsx)(`span`,{className:`font-semibold`,children:t})]}):(0,Z.jsxs)(`span`,{children:[`You're trending`,` `,(0,Z.jsxs)(`span`,{className:`font-semibold`,children:[e,` `,a]}),` `,`from `,(0,Z.jsx)(`span`,{className:`font-semibold`,children:s}),` compared to the`,` `,t]})},[i,a,s,o,u]);return(0,Z.jsxs)(R,{className:`group`,"data-testid":e,children:[(0,Z.jsxs)(P,{className:`hidden`,children:[(0,Z.jsx)(I,{children:e}),(0,Z.jsx)(L,{children:n})]}),(0,Z.jsxs)(be,{className:`relative flex grow flex-row items-start justify-between gap-5 border-none pb-2 xl:pb-4`,children:[(0,Z.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,Z.jsxs)(ve,{className:l&&`transition-all group-hover:text-foreground`,children:[r&&(0,Z.jsx)(`span`,{className:`inline-block size-2 rounded-full opacity-50`,style:{backgroundColor:r}}),d&&(0,Z.jsx)(d,{size:16,strokeWidth:1.5}),e]}),(0,Z.jsx)(ye,{diffDirection:u===ce.allTime.value?`hidden`:i,diffTooltip:f,diffValue:a,value:o})]}),l&&(0,Z.jsx)(O,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`outline`,onClick:l,children:`View more`})]}),(0,Z.jsx)(F,{children:c})]})},ke=({kpiValues:e,visitorsChartData:t,visitorsChartRange:n,visitorsYRange:r,growthTotals:i,membersChartData:a,mrrChartData:s,growthChartRange:c,currencySymbol:l,isLoading:d})=>{let f=u(),m=B(),h=U(),g=re(),{config:_}=Y(),v=g?.limitAnalytics?.disabled===!0,y=`-mb-3 h-[10vw] max-h-[200px] min-h-[100px] hover:cursor-pointer!`;if(d)return(0,Z.jsx)(ne,{className:`flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:cursor-pointer!`,children:(0,Z.jsx)(ae,{})});let b=m,x=v&&!b,S=h,C=[b,x,!0,S].filter(Boolean).length,T=`lg:grid-cols-3`;return C===2?T=`lg:grid-cols-2`:C===1&&(T=`lg:grid-cols-1`),(0,Z.jsxs)(`div`,{className:`flex flex-col lg:grid ${T} gap-6`,children:[b&&!x&&(0,Z.jsx)(Q,{description:`Number of individual people who visited your website`,diffDirection:`empty`,formattedValue:e.visits,iconName:`Globe`,linkto:`/analytics/web/`,title:`Unique visitors`,onClick:()=>{f(`/analytics/web/`)},children:(0,Z.jsx)(j,{className:y,color:`var(--chart-blue)`,data:t,id:`visitors`,range:n,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`,yAxisRange:r})}),x&&(0,Z.jsxs)(R,{children:[(0,Z.jsxs)(P,{className:`hidden`,children:[(0,Z.jsx)(I,{children:`Unlock web analytics`}),(0,Z.jsx)(L,{children:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`})]}),(0,Z.jsx)(F,{className:`flex h-full items-center justify-center p-6`,children:(0,Z.jsx)(z,{actions:(0,Z.jsx)(O,{variant:`outline`,onClick:()=>f(o(_),{crossApp:!0}),children:`Upgrade now`}),className:`py-10`,description:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`,title:`Unlock web analytics`,children:(0,Z.jsx)(w,{})})})]}),(0,Z.jsx)(Q,{description:`How number of members of your publication changed over time`,diffDirection:i.directions.total,diffValue:i.percentChanges.total,formattedValue:p(i.totalMembers),iconName:`User`,linkto:`/analytics/growth/`,title:`Members`,trendingFromValue:`${p(a[0]?.value??0)}`,onClick:()=>{f(`/analytics/growth/?tab=total-members`)},children:(0,Z.jsx)(j,{className:y,color:`var(--chart-darkblue)`,data:a,id:`members`,range:c,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})}),S&&(0,Z.jsx)(Q,{description:`Monthly recurring revenue changes over time`,diffDirection:i.directions.mrr,diffValue:i.percentChanges.mrr,formattedValue:`${l}${p(J(i.mrr))}`,iconName:`Coins`,linkto:`/analytics/growth/`,title:`MRR`,trendingFromValue:`${l}${p(s[0]?.value??0)}`,onClick:()=>{f(`/analytics/growth/?tab=mrr`)},children:(0,Z.jsx)(j,{className:y,color:`var(--chart-teal)`,data:s,id:`mrr`,range:c,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})})]})},$=({className:e,metrics:t,title:n})=>(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsxs)(`div`,{className:f(`pointer-events-none absolute bottom-[calc(100%+2px)] left-1/2 z-50 min-w-[160px] -translate-x-1/2 rounded-md bg-background p-3 text-sm opacity-0 shadow-md transition-all group-hover/tooltip:bottom-[calc(100%+12px)] group-hover/tooltip:opacity-100`,e),children:[(0,Z.jsx)(`div`,{className:`mb-1.5 border-b pr-10 pb-1.5 font-medium whitespace-nowrap text-muted-foreground`,children:n}),(0,Z.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:t?.map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-5`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 whitespace-nowrap`,children:[e.icon,e.label]}),(0,Z.jsx)(`span`,{className:`font-mono`,children:e.metric})]},e.label))})]})}),Ae=({topPostsData:e,isLoading:t})=>{let n=u(),r=V(`/editor`),{range:i}=H(),{settings:a}=Y(),o=U(),s=Ce(a),l=B(),d=W()??!1,f=se()??!1,g=oe()??!1,_=`flex items-center justify-end gap-1 rounded-md px-2 py-1 font-mono text-gray-800 hover:bg-muted-foreground/10 group-hover:text-foreground`;return(0,Z.jsxs)(R,{className:`group/card w-full lg:col-span-2`,"data-testid":`top-posts-card`,children:[(0,Z.jsxs)(P,{children:[(0,Z.jsxs)(I,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:[`Top posts `,K(i)]}),(0,Z.jsx)(L,{className:`hidden`,children:`Most viewed posts in this period`})]}),(0,Z.jsx)(F,{children:t?(0,Z.jsx)(M,{className:`mt-6`}):(0,Z.jsxs)(Z.Fragment,{children:[e?.stats?.map(e=>(0,Z.jsxs)(`div`,{className:`group relative flex w-full items-start justify-between gap-5 border-t border-border/50 py-4 before:absolute before:-inset-x-4 before:inset-y-0 before:z-0 before:hidden before:rounded-md before:bg-table-row-hover before:content-[""] first:border-border! hover:cursor-pointer hover:border-transparent hover:before:block md:items-center [&+div]:hover:border-transparent`,children:[(0,Z.jsxs)(`div`,{className:`z-10 flex min-w-[160px] grow items-start gap-4 md:items-center lg:min-w-[320px]`,onClick:()=>{let t=Se({postId:e.post_id,hasEmailData:e.sent_count!==null,analytics:{webAnalytics:l,membersTrackSources:d}});n(t,{crossApp:t.startsWith(`/editor/`)&&r})},children:[e.feature_image?(0,Z.jsx)(`div`,{className:`hidden aspect-[16/10] w-[80px] shrink-0 rounded-sm bg-cover bg-center sm:visible! sm:block! lg:w-[100px]`,style:{backgroundImage:`url(${e.feature_image})`}}):(0,Z.jsx)(Te,{className:`hidden aspect-[16/10] w-[80px] shrink-0 group-hover:bg-muted-foreground/10 sm:visible! sm:flex! lg:w-[100px]`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Z.jsx)(`span`,{className:`line-clamp-2 text-md font-semibold`,children:e.title}),(0,Z.jsxs)(`span`,{className:`text text-muted-foreground`,children:[`By `,e.authors,` –`,` `,h(e.published_at,s)]}),(0,Z.jsx)(`span`,{className:`text text-muted-foreground`,children:c(e)})]})]}),(0,Z.jsxs)(`div`,{className:`z-10 flex flex-col items-end justify-center gap-0.5 text-sm md:flex-row md:items-center md:justify-end md:gap-3`,children:[l&&(0,Z.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,"data-testid":`statistics-visitors`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/web`)},children:[(0,Z.jsx)($,{metrics:[{icon:(0,Z.jsx)(A,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Unique visitors`,metric:p(e.views)}],title:`Web traffic`}),(0,Z.jsxs)(`div`,{className:_,children:[(0,Z.jsx)(A,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),m(e.views)]})]}),e.sent_count!==null&&(0,Z.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/newsletter`)},children:[(0,Z.jsx)($,{className:`${d?``:`right-0 left-auto translate-x-0`}`,metrics:[{icon:(0,Z.jsx)(S,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Sent`,metric:p(e.sent_count||0)},...g?[{icon:(0,Z.jsx)(x,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Opens`,metric:p(e.opened_count||0)}]:[],...f?[{icon:(0,Z.jsx)(T,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Clicks`,metric:p(e.clicked_count||0)}]:[]],title:`Newsletter performance`}),(0,Z.jsx)(`div`,{className:_,children:g?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(x,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.open_rate?`${Math.round(e.open_rate)}%`:`0%`]}):f?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(T,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.click_rate?`${Math.round(e.click_rate)}%`:`0%`]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(S,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),m(e.sent_count||0)]})})]}),d&&(0,Z.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,"data-testid":`statistics-members`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/growth`)},children:[(0,Z.jsx)($,{className:`right-0 left-auto translate-x-0`,metrics:[{icon:(0,Z.jsx)(k,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Free`,metric:e.free_members>0?`+${p(e.free_members)}`:`0`},...o?[{icon:(0,Z.jsx)(y,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Paid`,metric:e.paid_members>0?`+${p(e.paid_members)}`:`0`}]:[]],title:`New members`}),(0,Z.jsxs)(`div`,{className:_,children:[(0,Z.jsx)(C,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.members>0?`+${p(e.members)}`:`0`]})]})]})]},e.post_id)),(!e?.stats||e.stats.length===0)&&(0,Z.jsx)(z,{className:`w-full pb-10`,title:`No posts ${K(i)}`,children:(0,Z.jsx)(v,{strokeWidth:1.5})})]})})]})},je=({className:e,title:t,description:n,url:r,children:i})=>(0,Z.jsx)(`a`,{className:f(`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,e),href:r,rel:`noreferrer`,target:`_blank`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-6`,children:[i,(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5 leading-tight`,children:[(0,Z.jsx)(`span`,{className:`text-base font-semibold`,children:t}),(0,Z.jsx)(`span`,{className:`text-sm font-normal text-gray-700`,children:n})]})]})}),Me=()=>{let e=U(),{range:t}=H(),{statsConfig:n,isLoading:a}=Y(),{startDate:o,endDate:s,timezone:c}=he(t),{isLoading:l,chartData:u,totals:d,currencySymbol:f}=_e(t),{data:m,isLoading:h}=Ee(),{data:_,isLoading:v}=pe({searchParams:{date_from:q(o),date_to:q(s),limit:`5`,timezone:c}}),{data:y,loading:b}=r({endpoint:`api_kpis`,statsConfig:n,params:{site_uuid:n?.id||``,date_from:q(o),date_to:q(s),timezone:c,member_status:xe(ie)}}),x=(0,X.useMemo)(()=>G(y||[],t,`visits`,`sum`)?.map(e=>{let t=Number(e.visits),n=isNaN(t)?0:t;return{date:String(e.date),value:n,formattedValue:p(n),label:`Visitors`}}),[y,t]),S=(0,X.useMemo)(()=>ge(t,y||[],{fieldName:`visits`}),[y,t]),C=(0,X.useMemo)(()=>{let e=[0,1];if(!x||x.length===0)return e;let t=x.map(e=>e.value).filter(e=>e>=0);return t.length===0?e:[0,Math.max(...t)||e[1]]},[x]),w=(0,X.useMemo)(()=>ge(t,u||[]),[u,t]),T=(0,X.useMemo)(()=>{if(!u||u.length===0)return[];let e=[];return e=G(u,t,`value`,`exact`),e.map(e=>({date:e.date,value:e.free+e.paid,formattedValue:p(e.free+e.paid),label:`Members`}))},[u,t]),D=(0,X.useMemo)(()=>{if(!e||!u||u.length===0)return[];let n=[];return n=G(u,t,`mrr`,`exact`),n.map(e=>({date:e.date,value:J(e.mrr),formattedValue:`${f}${p(J(e.mrr))}`,label:`MRR`}))},[u,t,f,e]),ee=(0,X.useMemo)(()=>y?.length?{visits:p(y.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0))}:{visits:`0`},[y]);return(0,Z.jsxs)(ue,{children:[(0,Z.jsx)(de,{children:(0,Z.jsx)(i,{children:(0,Z.jsx)(le,{excludeRanges:[`today`]})})}),(0,Z.jsxs)(fe,{isLoading:a,loadingComponent:(0,Z.jsx)(Z.Fragment,{}),children:[(0,Z.jsx)(ke,{currencySymbol:f,growthChartRange:w,growthTotals:d,isLoading:b||l,kpiValues:ee,membersChartData:T,mrrChartData:D,visitorsChartData:x,visitorsChartRange:S,visitorsYRange:C}),(0,Z.jsx)(Oe,{isLoading:h,latestPostStats:m}),(0,Z.jsx)(Ae,{isLoading:v,topPostsData:_}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,children:[(0,Z.jsx)(g,{className:`mt-4 -mb-4 lg:col-span-2`,children:`Grow your audience`}),(0,Z.jsx)(je,{description:`Find out how to review the performance of your content and get the most out of post analytics in Ghost.`,title:`Understanding analytics in Ghost`,url:`https://ghost.org/help/native-analytics`,children:(0,Z.jsx)(`div`,{className:`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tr from-[#14B8FF]/20 to-[#00BBA7]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100`,children:(0,Z.jsx)(E,{className:`text-[#00BBA7]`,size:20,strokeWidth:1.5})})}),(0,Z.jsx)(je,{description:`Use these content distribution tactics to get more people to discover your work and increase engagement.`,title:`How to get your content seen online`,url:`https://ghost.org/resources/content-distribution/`,children:(0,Z.jsx)(`div`,{className:`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tl from-[#FDC700]/20 to-[#FF2056]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100`,children:(0,Z.jsx)(A,{className:`text-[#FE9A00]`,size:20,strokeWidth:1.5})})})]})]})]})};export{Me as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{l as r}from"./dist-BXHrDV19.js";import{t as i}from"./inline-B8H6NzIw.js";import{t as a}from"./stack-BURz77VS.js";import{t as o}from"./text-DC-ot6u2.js";import{t as s}from"./heading-BB21QAbb.js";import{Ar as c,Sr as l,br as u}from"./index-DDd-zhNL.js";var d=e(t(),1),f=n();function p({className:e,children:t}){return(0,f.jsx)(i,{align:`center`,className:r(`pt-1 text-sm text-muted-foreground`,e),"data-page-header":`breadcrumb`,gap:`sm`,children:t})}function m({className:e,children:t}){return(0,f.jsx)(o,{as:`span`,className:r(`ml-1 text-base tabular-nums`,e),"data-page-header":`count`,tone:`secondary`,weight:`regular`,children:t})}function h({className:e,children:t}){return(0,f.jsx)(o,{as:`p`,className:e,"data-page-header":`description`,size:`sm`,tone:`secondary`,children:t})}function g({className:e,children:t}){return(0,f.jsx)(o,{as:`p`,className:r(`mt-0.5`,e),"data-page-header":`meta`,size:`sm`,tone:`secondary`,children:t})}function _({className:e,children:t}){let n=[],i=[];d.Children.forEach(t,e=>{if(!d.isValidElement(e)){n.push(e);return}switch(e.type){case h:case g:i.push(e);break;default:n.push(e)}});let o=(0,f.jsx)(s,{className:r(`text-lg font-semibold tracking-[0.1px] whitespace-nowrap`,e),"data-page-header":`title`,children:n});return i.length>0?(0,f.jsxs)(a,{"data-page-header":`title-body`,gap:`none`,children:[o,i]}):o}function v({className:e,children:t}){return(0,f.jsx)(a,{className:r(`h-full min-h-(--control-height) min-w-0`,e),"data-page-header":`left`,gap:`xs`,justify:`center`,children:t})}function y({children:e}){return(0,f.jsx)(f.Fragment,{children:e})}function b({children:e}){return(0,f.jsx)(u,{children:e})}function x({children:e,...t}){return(0,f.jsx)(c,{asChild:!0,...t,children:e})}function S({children:e,...t}){return(0,f.jsx)(l,{align:`end`,sideOffset:8,...t,children:e})}var C=640,w=e=>typeof window>`u`?!1:window.innerWidth<e,T=e=>{let[t,n]=d.useState(()=>w(e));return d.useEffect(()=>{let t=()=>{n(w(e))};return t(),window.addEventListener(`resize`,t),()=>{window.removeEventListener(`resize`,t)}},[e]),t},E=Object.assign(function({className:e,children:t,mobileMenuBreakpoint:n=C}){let r=d.Children.toArray(t),a=[],o=null,s=null,c=T(n);return r.forEach(e=>{if(!d.isValidElement(e)){a.push(e);return}let t=e;if(t.type===b){o=t;return}if(t.type===y){s=t.props.children??null,a.push(t.props.children??null);return}a.push(t)}),o?c?(0,f.jsx)(i,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:(0,f.jsxs)(i,{align:`center`,className:`ml-auto`,"data-page-header":`action-group-mobile`,gap:`sm`,children:[o,s&&(0,f.jsx)(`div`,{"data-page-header":`action-group-mobile-primary`,children:s})]})}):(0,f.jsx)(i,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:(0,f.jsx)(i,{align:`center`,"data-page-header":`action-group-desktop`,gap:`sm`,justify:`end`,children:a})}):(0,f.jsx)(i,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:t})},{Primary:y,MobileMenu:b,MobileMenuTrigger:x,MobileMenuContent:S});function D({className:e,children:t}){return(0,f.jsx)(i,{align:`center`,className:r(`min-h-(--control-height) shrink-0`,e),"data-page-header":`actions`,gap:`lg`,children:t})}var O=Object.assign(function({className:e,children:t,sticky:n=!0,blurredBackground:a=!0}){return(0,f.jsx)(`header`,{className:r(`flex flex-col`,n&&`sticky top-0 z-50`,a&&`bg-gradient-to-b from-background via-background/70 to-background/70 backdrop-blur-md dark:bg-black`,e),"data-page-header":`page-header`,children:(0,f.jsx)(i,{align:`start`,className:`w-full`,"data-page-header":`main`,gap:`lg`,justify:`between`,children:t})})},{Left:v,Breadcrumb:p,Title:_,Count:m,Description:h,Meta:g,Actions:D,ActionGroup:E});export{O as t};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./use-tinybird-query-DXoF74NM.js";import{l as i}from"./dist-BXHrDV19.js";import{Pn as a,t as o}from"./button-DvIh2Bq-.js";import{Ar as s,Sr as c,br as l,wr as u}from"./index-DDd-zhNL.js";var d=e(t(),1),f=60*1e3,p=(e={})=>{let{postUuid:t,statsConfig:n,enabled:i=!0}=e,[a,o]=(0,d.useState)(null),{data:s,loading:c,error:l}=r({statsConfig:n,endpoint:`api_active_visitors`,params:{site_uuid:n?.id||``,...t&&{post_uuid:t}},enabled:i,refetchInterval:f,refetchIntervalInBackground:!0}),u=s?.[0]?.active_visitors;return(0,d.useEffect)(()=>{i&&u!==void 0&&typeof u==`number`&&o(u)},[i,u]),{activeVisitors:i&&a||0,isLoading:i&&c&&a===null,error:i?l:null}},m=n(),h=d.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:i(`mt-3 flex items-center gap-2 [grid-area:actions] lg:mt-0`,t),"data-navbar":`navbar-actions`,...n,children:e}));h.displayName=`NavbarActions`;var g=d.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:i(`[grid-area:navigation]`,t),"data-navbar":`navbar-navigation`,...n,children:e}));g.displayName=`NavbarNavigation`;var _=d.forwardRef(({children:e,className:t,...n},r)=>(0,m.jsx)(`div`,{ref:r,className:i(`grid grid-cols-[1fr] justify-between gap-x-5 gap-y-2 border-b [grid-template-areas:'navigation''actions''subactions'] lg:grid-cols-[1fr_auto] lg:[grid-template-areas:'navigation_actions''subactions_subactions']`,t),"data-navbar":`navbar`,...n,children:e}));_.displayName=`Navbar`;var v=d.createContext(null),y=d.forwardRef(({children:e,responsive:t=!1,value:n,defaultValue:r,onValueChange:f,className:p,...h},g)=>{let[_,y]=d.useState(d.Children.count(e)),[b,x]=d.useState(0),S=d.useRef(null),C=d.useRef(null);d.useLayoutEffect(()=>{if(!t||!S.current||!C.current){y(d.Children.count(e));return}requestAnimationFrame(()=>{if(!S.current||!C.current)return;let e=S.current,t=C.current,n=e.clientWidth,r=Array.from(t.children),i=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width;i+=(e>0?6:0)+t}if(i<=n-8){y(r.length);return}let a=0,o=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width,i=a+(e>0?6:0)+t;if(i+60<=n)a=i,o+=1;else break}y(o)})},[t,e,b]),d.useLayoutEffect(()=>{if(!t||!S.current)return;let e=new ResizeObserver(()=>{x(e=>e+1)});return e.observe(S.current),()=>e.disconnect()},[t]);let w=d.Children.toArray(e),T=w.slice(0,_),E=w.slice(_),D=E.length>0,O=E.find(e=>d.isValidElement(e)&&e.props?.value===n);return t?(0,m.jsxs)(v.Provider,{value:{defaultValue:r},children:[(0,m.jsx)(`div`,{ref:C,"aria-hidden":`true`,className:`pointer-events-none absolute flex items-center gap-2 opacity-0`,style:{top:-9999,left:-9999},children:e}),(0,m.jsxs)(`div`,{ref:S,className:`flex w-full min-w-0 flex-1 items-center gap-2`,children:[(0,m.jsx)(`div`,{ref:g,className:i(`flex min-w-0 items-center gap-2`,p),...h,children:T}),D&&(0,m.jsxs)(l,{children:[(0,m.jsx)(s,{asChild:!0,children:(0,m.jsx)(o,{className:i(`h-[30px] flex-shrink-0 px-3 py-2`,O&&`bg-accent text-accent-foreground`),variant:`ghost`,children:O?(0,m.jsx)(`span`,{className:`max-w-[100px] truncate`,children:O.props.children}):(0,m.jsx)(a,{className:`size-6`})})}),(0,m.jsx)(c,{align:`end`,children:E.map((e,t)=>!d.isValidElement(e)||!e.props?.value?null:(0,m.jsx)(u,{className:i(e.props.value===n&&`bg-accent text-accent-foreground`),onClick:()=>{f?.(e.props.value),e.props.onClick?.()},children:e.props.children},e.props.value||t))})]})]})]}):(0,m.jsx)(v.Provider,{value:{defaultValue:r},children:(0,m.jsx)(`div`,{ref:g,className:i(`flex items-center gap-2`,p),...h,children:e})})});y.displayName=`PageMenu`;var b=d.forwardRef(({children:e,value:t,className:n,...r},a)=>{let s=d.useContext(v)?.defaultValue===t;return(0,m.jsx)(o,{ref:a,className:i(`relative gap-1.5 px-3 text-control font-medium text-text-secondary hover:text-foreground focus-visible:ring-0`,`data-[state=active]:bg-muted-foreground/10 data-[state=active]:text-foreground`,`dark:hover:bg-tab-hover dark:data-[state=active]:bg-tab-active dark:data-[state=active]:hover:bg-tab-active`,n),"data-state":s?`active`:void 0,variant:`ghost`,...r,children:e})});b.displayName=`PageMenuItem`;export{g as a,h as i,b as n,p as o,_ as r,y as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-BlNNh7jY.js";import{t}from"./posts-list-screen-CO5jAWoU.js";var n=e();function r(){return(0,n.jsx)(t,{resource:`pages`})}export{r as default};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./inline-B8H6NzIw.js";import{Xn as i}from"./index-DDd-zhNL.js";var a=e(t(),1),o=n(),s=({href:e,onDestroyed:t,selectedTab:n,portalParent:s})=>{n||=`signup`;let c=(0,a.useRef)(null),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(!0),p=(0,a.useCallback)(()=>{setTimeout(()=>{c.current&&f(!1)},300)},[c]);if((0,a.useEffect)(()=>{let n=t=>{e&&new URL(t.origin).origin===new URL(e).origin&&t.data?.type===`portal-preview-ready`&&p()};return window.addEventListener(`message`,n,!0),()=>{window.removeEventListener(`message`,n,!0),t?.()}},[e,t,p,l]),!e)return null;let m=`mt-[-7%] flex h-screen items-center justify-center`,h=`hidden`;return s===`preview`?(m=`pointer-events-none absolute inset-0 z-50`,h=`invisible`):s===`offers`&&(m=`absolute inset-0 z-50`,h=`invisible`),(0,o.jsxs)(o.Fragment,{children:[d&&(0,o.jsx)(r,{align:`center`,className:m,justify:`center`,children:(0,o.jsx)(i,{size:`lg`})}),(0,o.jsx)(`iframe`,{ref:c,className:!d&&l?``:h,"data-testid":`portal-preview`,height:`100%`,src:e,title:`Portal Preview`,width:`100%`,onLoad:()=>{u(!0)}})]})};export{s as t};
@@ -1 +0,0 @@
1
- import{s as e,t}from"./react-BXwhMTuc.js";import{n,p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{t as a}from"./use-form-DJKZJhQh.js";import{m as o}from"./dist-BXHrDV19.js";import{t as s}from"./grid-5vplBYri.js";import{t as c}from"./inline-B8H6NzIw.js";import{t as l}from"./stack-BURz77VS.js";import{t as u}from"./text-DC-ot6u2.js";import{s as d}from"./shade-app-CcS3f8MZ-D5BnfHck.js";import{D as f,t as p,v as m}from"./button-DvIh2Bq-.js";import{i as h,n as g,r as _,t as v}from"./tabs-B3XK93sR.js";import{t as y}from"./switch-zfUUy9Jh.js";import{i as b,n as x,o as S,s as C,t as w}from"./select-CKaC4ggu.js";import{t as T}from"./use-settings-navigation-BIjI5mL3.js";import{t as E}from"./checkbox-DKht9xMl.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./copy-field-C6ujqJlP.js";import{a as N,c as P,i as F,n as I,o as L,r as R,s as z,t as B}from"./field-p7KnP98B.js";import{n as ee,t as te}from"./toggle-group-D2p4okmJ.js";import{Un as ne,Zn as V,bi as re,ci as H,ct as ie,hi as ae,li as U,ot as W,st as oe,ui as G}from"./index-DDd-zhNL.js";import{a as se,c as ce,i as le,n as ue,o as de,r as fe,s as pe,t as me}from"./images-4mvoc3lB.js";import{a as he,o as ge,r as _e}from"./tiers-6mPzCXlM.js";import{t as ve}from"./modal-page-Dz-9TP4E.js";import{t as ye}from"./validator-DlFQP70j.js";import{t as be}from"./brand-icon-D3ffDYaC.js";import{n as xe}from"./confirmation-context-IyqoXVk-.js";import{n as K}from"./global-data-context-3MItMry2.js";import{t as Se}from"./html-field-COLQbV4r.js";import{t as Ce}from"./preview-modal-CjRbBr8U.js";import{t as q}from"./portal-frame-D9V8iq5x.js";import{t as we}from"./use-query-params-DlOHCo-R.js";var J=e(t(),1),Y=i(),X=({localSettings:e,settingKey:t,updateSetting:n})=>{let r=t.replaceAll(`_`,`-`);return(0,Y.jsxs)(B,{orientation:`horizontal`,children:[(0,Y.jsx)(L,{htmlFor:r,children:`Display option to purchase gift`}),(0,Y.jsx)(y,{checked:!!U(e,t),id:r,onCheckedChange:e=>n(t,e)})]})},Te=({localSettings:e,updateSetting:t})=>{let[n,r,i,a,o,s]=G(e,[`transistor`,`transistor_portal_enabled`,`transistor_portal_heading`,`transistor_portal_description`,`transistor_portal_button_text`,`transistor_portal_url_template`]);if(n!==!0)return null;let c=r===!0;return(0,Y.jsxs)(l,{gap:`xl`,children:[(0,Y.jsx)(ne,{}),(0,Y.jsxs)(l,{gap:`md`,children:[(0,Y.jsx)(u,{as:`h5`,className:`md:text-lg`,leading:`supertight`,weight:`bold`,children:`Transistor`}),(0,Y.jsxs)(B,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`transistor-portal-enabled`,children:`Enable Transistor integration`}),(0,Y.jsx)(R,{children:`Show a section on the account page for members to access private podcasts`})]}),(0,Y.jsx)(y,{checked:c,id:`transistor-portal-enabled`,onCheckedChange:e=>t(`transistor_portal_enabled`,e)})]})]}),c&&(0,Y.jsxs)(N,{className:`gap-6`,children:[(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{htmlFor:`transistor-heading`,children:`Heading`}),(0,Y.jsx)(V,{id:`transistor-heading`,placeholder:`Podcasts`,value:i,onChange:e=>t(`transistor_portal_heading`,e.target.value)}),(0,Y.jsx)(R,{children:`The heading displayed above the Transistor section`})]}),(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{htmlFor:`transistor-description`,children:`Description`}),(0,Y.jsx)(V,{id:`transistor-description`,placeholder:`Access your RSS feeds`,value:a,onChange:e=>t(`transistor_portal_description`,e.target.value)}),(0,Y.jsx)(R,{children:`A short description of what members can do`})]}),(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{htmlFor:`transistor-button-text`,children:`Button text`}),(0,Y.jsx)(V,{id:`transistor-button-text`,placeholder:`Manage`,value:o,onChange:e=>t(`transistor_portal_button_text`,e.target.value)}),(0,Y.jsx)(R,{children:`The text displayed on the button`})]}),(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{htmlFor:`transistor-url-template`,children:`URL template`}),(0,Y.jsx)(V,{id:`transistor-url-template`,placeholder:`https://partner.transistor.fm/ghost/{memberUuid}`,value:s,onChange:e=>t(`transistor_portal_url_template`,e.target.value)}),(0,Y.jsxs)(R,{children:[`Use `,`{memberUuid}`,` as a placeholder for the member ID`]})]})]})]})},Ee=e(ye(),1),De=({localSettings:e,updateSetting:t,errors:n,setError:r})=>{let{siteData:i,settings:a,config:o}=K(),[s,c]=G(a,[`members_support_address`,`support_email_address`]),l=c?.toString()||W(s?.toString()||``,i,o),u=oe(i,o),[d,f]=(0,J.useState)(l);return(0,J.useEffect)(()=>{f(l)},[l]),(0,Y.jsx)(`div`,{className:`mt-7`,children:(0,Y.jsxs)(N,{className:`mb-10 gap-8`,children:[(0,Y.jsx)(X,{localSettings:e,settingKey:`portal_account_gift_promotion`,updateSetting:t}),(0,Y.jsxs)(B,{"data-invalid":!!n.members_support_address||void 0,children:[(0,Y.jsx)(L,{htmlFor:`members-support-address`,children:`Support email address`}),(0,Y.jsx)(V,{"aria-invalid":!!n.members_support_address||void 0,id:`members-support-address`,value:d,onBlur:e=>{let n=e.target.value;n?Ee.default.isEmail(n)?r(`members_support_address`,``):r(`members_support_address`,`Enter a valid email address`):r(`members_support_address`,`Enter an email address`);let a=u&&n===`noreply@${u}`?`noreply`:n;t(`members_support_address`,a),f(W(a,i,o))},onChange:e=>f(e.target.value)}),n.members_support_address&&(0,Y.jsx)(F,{children:n.members_support_address})]}),(0,Y.jsx)(Te,{localSettings:e,updateSetting:t})]})})},Z=[{icon:`portal-icon-1`,label:`Portal icon 1`,value:`icon-1`},{icon:`portal-icon-2`,label:`Portal icon 2`,value:`icon-2`},{icon:`portal-icon-3`,label:`Portal icon 3`,value:`icon-3`},{icon:`portal-icon-4`,label:`Portal icon 4`,value:`icon-4`},{icon:`portal-icon-5`,label:`Portal icon 5`,value:`icon-5`}],Oe=({localSettings:e,updateSetting:t})=>{let{mutateAsync:n}=ue(),i=r(),[a,o,c,d]=G(e,[`portal_button`,`portal_button_style`,`portal_button_icon`,`portal_button_signup_text`]),h=c||Z[0].value,[g,_]=(0,J.useState)(Z.map(({value:e})=>e).includes(h)?void 0:h),v=async e=>{try{let r=me(await n({file:e}));t(`portal_button_icon`,r),_(r)}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),i(t)}};return(0,Y.jsx)(`div`,{className:`mt-7`,children:(0,Y.jsxs)(N,{className:`mb-10 gap-8`,children:[(0,Y.jsxs)(B,{orientation:`horizontal`,children:[(0,Y.jsx)(L,{htmlFor:`show-portal-button`,children:`Show portal button`}),(0,Y.jsx)(y,{checked:!!a,id:`show-portal-button`,onCheckedChange:e=>t(`portal_button`,e)})]}),a&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{children:`Button style`}),(0,Y.jsxs)(w,{value:o,onValueChange:e=>t(`portal_button_style`,e),children:[(0,Y.jsx)(S,{"aria-label":`Button style`,children:(0,Y.jsx)(C,{})}),(0,Y.jsx)(x,{children:[{value:`icon-and-text`,label:`Icon and text`},{value:`icon-only`,label:`Icon only`},{value:`text-only`,label:`Text only`}].map(e=>(0,Y.jsx)(b,{value:e.value,children:e.label},e.value))})]})]}),o?.toString()?.includes(`icon`)&&(0,Y.jsxs)(l,{gap:`sm`,children:[(0,Y.jsx)(u,{as:`h6`,className:`text-base`,weight:`semibold`,children:`Icon`}),(0,Y.jsxs)(s,{className:`w-full gap-px rounded-(--input-group-radius) bg-muted p-0.5`,columns:6,gap:`none`,children:[(0,Y.jsx)(te,{"aria-label":`Portal button icon`,className:`contents border-0! bg-transparent! p-0`,type:`single`,value:h,onValueChange:e=>e&&t(`portal_button_icon`,e),children:Z.map(e=>(0,Y.jsx)(ee,{"aria-label":e.label,className:`group h-[46px] w-full min-w-0 rounded-[calc(var(--radius-md)+1px)] p-3`,value:e.value,children:(0,Y.jsx)(be,{className:`size-[18px] opacity-70 transition-opacity group-hover:opacity-100 group-data-[state=on]:opacity-100`,name:e.icon})},e.value))}),(0,Y.jsx)(fe,{className:`h-[46px] w-full min-w-0 overflow-visible rounded-[calc(var(--radius-md)+1px)] ${h===g?`bg-background shadow-sm`:``}`,children:g?(0,Y.jsxs)(ce,{className:`overflow-visible`,children:[(0,Y.jsx)(pe,{className:`rounded-md`,src:g}),(0,Y.jsx)(p,{"aria-label":`Use uploaded Portal icon`,"aria-pressed":h===g,className:`absolute inset-0 z-10 size-full rounded-md bg-transparent hover:bg-transparent`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>t(`portal_button_icon`,g)}),(0,Y.jsx)(se,{className:`-top-2 -right-2 z-20 opacity-100`,children:(0,Y.jsx)(le,{"aria-label":`Delete uploaded Portal icon`,className:`size-6 rounded-full p-0`,onClick:()=>{h===g&&t(`portal_button_icon`,null),_(void 0)},children:(0,Y.jsx)(f,{})})})]}):(0,Y.jsx)(de,{accept:{"image/*":[]},"aria-label":`Upload Portal icon`,className:`size-full rounded-[calc(var(--radius-md)+1px)] border-0 bg-transparent p-0 hover:bg-surface-elevated`,inputAriaLabel:`Upload Portal icon`,onDropAccepted:e=>void v(e[0]),children:(0,Y.jsx)(m,{className:`size-5`})})})]})]}),o?.toString()?.includes(`text`)&&(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{htmlFor:`portal-signup-button-text`,children:`Signup button text`}),(0,Y.jsx)(V,{id:`portal-signup-button-text`,value:d,onChange:e=>t(`portal_button_signup_text`,e.target.value)})]})]})]})})},Q=({name:e,value:t})=>(0,Y.jsxs)(M,{className:`lg:flex-row lg:items-center lg:gap-5`,value:t,children:[(0,Y.jsx)(D,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:e}),(0,Y.jsxs)(j,{children:[(0,Y.jsx)(A,{}),(0,Y.jsx)(k,{children:(0,Y.jsx)(O,{})})]})]}),ke=()=>{let[e,t]=(0,J.useState)(!1),[n,r]=(0,J.useState)(``),{siteData:i}=K(),{data:{tiers:a}={}}=he(),o=_e(a||[]),s=re();(0,J.useEffect)(()=>{o?.length&&!n&&r(o[0].id)},[o,n]);let d=o?.map(e=>({label:e.name,value:e.id})),f=ie(i);return(0,Y.jsx)(ve,{className:`max-w-[920px] text-base text-foreground`,children:(0,Y.jsxs)(l,{gap:`2xl`,children:[(0,Y.jsxs)(l,{gap:`xs`,children:[(0,Y.jsx)(ve.Title,{className:`mb-0`,children:`Links`}),(0,Y.jsxs)(u,{children:[`Use these `,e?`data attributes`:`links`,` in your theme to show pages of Portal.`]})]}),(0,Y.jsx)(`section`,{children:(0,Y.jsxs)(l,{gap:`lg`,children:[(0,Y.jsxs)(c,{as:`header`,className:`border-b border-border pb-2`,justify:`between`,children:[(0,Y.jsx)(u,{as:`h2`,size:`xl`,weight:`semibold`,children:`Generic`}),(0,Y.jsx)(v,{value:e?`data-attributes`:`links`,variant:`segmented-sm`,onValueChange:e=>t(e===`data-attributes`),children:(0,Y.jsxs)(_,{"aria-label":`Portal link format`,children:[(0,Y.jsx)(h,{value:`links`,children:`Links`}),(0,Y.jsx)(h,{value:`data-attributes`,children:`Data attributes`})]})})]}),(0,Y.jsxs)(l,{gap:`md`,children:[(0,Y.jsx)(Q,{name:`Default`,value:e?`data-portal`:`${f}#/portal`}),(0,Y.jsx)(Q,{name:`Sign in`,value:e?`data-portal="signin"`:`${f}#/portal/signin`}),(0,Y.jsx)(Q,{name:`Sign up`,value:e?`data-portal="signup"`:`${f}#/portal/signup`}),s&&(0,Y.jsx)(Q,{name:`Gift subscriptions`,value:e?`data-portal="gift"`:`${f}#/portal/gift`})]})]})}),(0,Y.jsx)(`section`,{children:(0,Y.jsxs)(l,{gap:`lg`,children:[(0,Y.jsx)(u,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Tiers`}),(0,Y.jsxs)(l,{gap:`md`,children:[(0,Y.jsxs)(B,{className:`lg:flex-row lg:items-center lg:justify-between lg:gap-5 [&>*]:w-auto`,children:[(0,Y.jsx)(L,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:`Tier`}),(0,Y.jsxs)(w,{value:n,onValueChange:r,children:[(0,Y.jsx)(S,{"aria-label":`Tier`,className:`w-fit`,children:(0,Y.jsx)(C,{})}),(0,Y.jsx)(x,{children:d.map(e=>(0,Y.jsx)(b,{value:e.value,children:e.label},e.value))})]})]}),(0,Y.jsx)(Q,{name:`Signup / Monthly`,value:e?`data-portal="signup/${n}/monthly"`:`${f}#/portal/signup/${n}/monthly`}),(0,Y.jsx)(Q,{name:`Signup / Yearly`,value:e?`data-portal="signup/${n}/yearly"`:`${f}#/portal/signup/${n}/yearly`}),(0,Y.jsx)(Q,{name:`Signup / Free`,value:e?`data-portal="signup/free"`:`${f}#/portal/signup/free`})]})]})}),(0,Y.jsx)(`section`,{children:(0,Y.jsxs)(l,{gap:`lg`,children:[(0,Y.jsx)(u,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Account`}),(0,Y.jsxs)(l,{gap:`md`,children:[(0,Y.jsx)(Q,{name:`Account`,value:e?`data-portal="account"`:`${f}#/portal/account`}),(0,Y.jsx)(Q,{name:`Account / Plans`,value:e?`data-portal="account/plans"`:`${f}#/portal/account/plans`}),(0,Y.jsx)(Q,{name:`Account / Profile`,value:e?`data-portal="account/profile"`:`${f}#/portal/account/profile`}),(0,Y.jsx)(Q,{name:`Account / Newsletters`,value:e?`data-portal="account/newsletters"`:`${f}#/portal/account/newsletters`}),(0,Y.jsx)(Q,{name:`Account / Newsletter help`,value:e?`data-portal="account/newsletters/help"`:`${f}#/portal/account/newsletters/help`})]})]})})]})})},Ae=({settings:e,config:t,tiers:n,siteData:r,selectedTab:i,previewTheme:a})=>{if(!r?.url)return null;let o=n.filter(e=>e.visibility===`public`&&e.type===`paid`).map(e=>e.id),s=r.url.replace(/\/$/,``),c=JSON.parse(U(e,`portal_plans`)||``),l=new URLSearchParams;l.append(`button`,U(e,`portal_button`)?`true`:`false`),l.append(`name`,U(e,`portal_name`)?`true`:`false`),l.append(`signupGiftPromotion`,U(e,`portal_signup_gift_promotion`)?`true`:`false`),l.append(`accountGiftPromotion`,U(e,`portal_account_gift_promotion`)?`true`:`false`),l.append(`isFree`,c.includes(`free`)?`true`:`false`),l.append(`isMonthly`,H(e,t)&&c.includes(`monthly`)?`true`:`false`),l.append(`isYearly`,H(e,t)&&c.includes(`yearly`)?`true`:`false`),l.append(`page`,i===`account`?`accountHome`:`signup`),l.append(`previewTheme`,a),l.append(`buttonIcon`,encodeURIComponent(U(e,`portal_button_icon`)||`icon-1`)),l.append(`signupButtonText`,encodeURIComponent(U(e,`portal_button_signup_text`)||``)),l.append(`membersSignupAccess`,U(e,`members_signup_access`)||`all`),l.append(`allowSelfSignup`,U(e,`allow_self_signup`)||`false`),l.append(`signupTermsHtml`,U(e,`portal_signup_terms_html`)||``),l.append(`signupCheckboxRequired`,U(e,`portal_signup_checkbox_required`)?`true`:`false`),l.append(`portalProducts`,o.join(`,`));let u=U(e,`portal_default_plan`);u&&l.append(`portalDefaultPlan`,u),c&&c.length&&l.append(`portalPrices`,encodeURIComponent(c.join(`,`)));let d=U(e,`accent_color`);d!=null&&l.append(`accentColor`,encodeURIComponent(d));let f=U(e,`portal_button_style`);return f&&l.append(`buttonStyle`,encodeURIComponent(f)),l.append(`disableBackground`,`false`),U(e,`transistor`)&&l.append(`transistorPortalSettings`,JSON.stringify({enabled:U(e,`transistor_portal_enabled`),heading:U(e,`transistor_portal_heading`)||`Podcasts`,description:U(e,`transistor_portal_description`)||`Access your RSS feeds`,button_text:U(e,`transistor_portal_button_text`)||`Manage`,url_template:U(e,`transistor_portal_url_template`)||`https://partner.transistor.fm/ghost/{memberUuid}`})),l.append(`admin_toolbar`,`0`),`${s}/?v=modal-portal-settings#/portal/preview?${l.toString()}`},je=({darkMode:e,selectedTab:t=`signup`,localSettings:n,localTiers:r})=>{let{siteData:i,config:a}=K(),o=Ae({settings:n,tiers:r,selectedTab:t,previewTheme:e?`dark`:`light`,siteData:i,config:a}),s=(0,Y.jsx)(Y.Fragment,{});switch(t){case`account`:s=(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)(q,{href:o||``,portalParent:`preview`,selectedTab:t})});break;case`links`:s=(0,Y.jsx)(ke,{});break;default:s=(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)(q,{href:o||``,portalParent:`preview`,selectedTab:t})});break}return s},Me=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a})=>{let{config:s}=K(),[c,l,u,d,f,p]=G(e,[`members_signup_access`,`portal_name`,`portal_signup_terms_html`,`portal_signup_checkbox_required`,`portal_plans`,`portal_default_plan`]),m=JSON.parse(f?.toString()||`[]`),h=(0,J.useMemo)(()=>{let e=document.createElement(`div`);return e.innerHTML=u?.toString()||``,e.innerText.length},[u]),g=(0,J.useCallback)((e,t)=>{a(e,t)},[]);(0,J.useEffect)(()=>{h>115?g(`portal_signup_terms_html`,`Signup notice is too long`):g(`portal_signup_terms_html`,void 0)},[h,g]);let _=e=>{let n=m.indexOf(e);n===-1?m.push(e):m.splice(n,1),t(`portal_plans`,JSON.stringify(m)),p===`yearly`?!m.includes(`yearly`)&&m.includes(`monthly`)&&t(`portal_default_plan`,`monthly`):p===`monthly`&&(m.includes(`monthly`)||t(`portal_default_plan`,`yearly`))},v=c===`all`||c===`paid`,T=c===`all`,D=H(e,s),O=[];n&&n.forEach(e=>{e.type===`free`&&T&&O.push({checked:m.includes(`free`),disabled:!v,label:e.name,value:`free`,testId:`free-tier-checkbox`,onChange:n=>{m.includes(`free`)&&!n&&m.splice(m.indexOf(`free`),1),!m.includes(`free`)&&n&&m.push(`free`),t(`portal_plans`,JSON.stringify(m)),r({...e,visibility:n?`public`:`none`})}})});let k=_e(n)||[],A=[{value:`yearly`,label:`Yearly`},{value:`monthly`,label:`Monthly`}];D&&k.length>0&&k.forEach(e=>{O.push({checked:e.visibility===`public`,label:e.name,value:e.id,onChange:t=>r({...e,visibility:t?`public`:`none`})})});let j=D&&k.length>0&&k.some(e=>e.visibility===`public`);return(0,Y.jsx)(`div`,{className:`mt-7`,children:(0,Y.jsxs)(N,{className:`mb-10 gap-8`,children:[(0,Y.jsxs)(B,{"data-disabled":!v||void 0,orientation:`horizontal`,children:[(0,Y.jsx)(L,{htmlFor:`portal-display-name`,children:`Display name in signup form`}),(0,Y.jsx)(y,{checked:!!l,disabled:!v,id:`portal-display-name`,onCheckedChange:e=>t(`portal_name`,e)})]}),(0,Y.jsxs)(P,{children:[(0,Y.jsx)(z,{variant:`label`,children:`Available tiers`}),(0,Y.jsx)(N,{"data-slot":`checkbox-group`,children:O.map(e=>(0,Y.jsxs)(B,{"data-disabled":e.disabled||void 0,orientation:`horizontal`,children:[(0,Y.jsx)(E,{checked:e.checked,"data-testid":e.testId,disabled:e.disabled,id:`portal-tier-${e.value}`,onCheckedChange:t=>e.onChange(t===!0)}),(0,Y.jsx)(L,{htmlFor:`portal-tier-${e.value}`,children:e.label})]},e.value))})]}),j&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(P,{children:[(0,Y.jsx)(z,{variant:`label`,children:`Available prices`}),(0,Y.jsx)(N,{"data-slot":`checkbox-group`,children:[`monthly`,`yearly`].map(e=>(0,Y.jsxs)(B,{"data-disabled":!v||void 0,orientation:`horizontal`,children:[(0,Y.jsx)(E,{checked:m.includes(e),disabled:!v,id:`portal-plan-${e}`,onCheckedChange:()=>_(e)}),(0,Y.jsx)(L,{className:`capitalize`,htmlFor:`portal-plan-${e}`,children:e})]},e))})]}),m.includes(`yearly`)&&m.includes(`monthly`)&&(0,Y.jsxs)(B,{children:[(0,Y.jsx)(L,{children:`Default price at signup`}),(0,Y.jsxs)(w,{value:typeof p==`string`?p:``,onValueChange:e=>t(`portal_default_plan`,e),children:[(0,Y.jsx)(S,{"aria-label":`Default price at signup`,children:(0,Y.jsx)(C,{})}),(0,Y.jsx)(x,{children:A.map(e=>(0,Y.jsx)(b,{value:e.value,children:e.label},e.value))})]})]})]}),(0,Y.jsx)(Se,{error:!!i.portal_signup_terms_html,hint:i.portal_signup_terms_html||(0,Y.jsxs)(Y.Fragment,{children:[`Recommended: `,(0,Y.jsx)(`strong`,{children:o(115)}),` characters. You've used`,` `,(0,Y.jsx)(`strong`,{className:`text-green`,children:o(h)})]}),nodes:`MINIMAL_NODES`,placeholder:`By signing up, I agree to receive emails from ...`,title:`Display notice at signup`,value:u?.toString(),onChange:e=>t(`portal_signup_terms_html`,e)}),u?.toString()&&(0,Y.jsxs)(B,{"data-disabled":!v||void 0,orientation:`horizontal`,children:[(0,Y.jsx)(L,{htmlFor:`portal-require-agreement`,children:`Require agreement`}),(0,Y.jsx)(y,{checked:!!d,disabled:!v,id:`portal-require-agreement`,onCheckedChange:e=>t(`portal_signup_checkbox_required`,e)})]}),(0,Y.jsx)(X,{localSettings:e,settingKey:`portal_signup_gift_promotion`,updateSetting:t})]})})},Ne=n({path:()=>`/settings/verifications`,method:`PUT`,body:({token:e})=>({token:e}),updateQueries:{dataType:`SettingsResponseType`,emberUpdateType:`createOrUpdate`,update:e=>({...e,settings:e.settings})}}),Pe={signupOptions:`signup`,lookAndFeel:`signup`,accountPage:`account`},$=`border-b-2 border-transparent after:hidden data-[state=active]:border-foreground`,Fe=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a,selectedTab:o,onTabChange:s})=>(0,Y.jsx)(`div`,{className:`pt-4`,children:(0,Y.jsxs)(v,{value:o,variant:`underline`,onValueChange:e=>s(e),children:[(0,Y.jsxs)(_,{children:[(0,Y.jsx)(h,{className:$,value:`signupOptions`,children:`Signup options`}),(0,Y.jsx)(h,{className:$,value:`lookAndFeel`,children:`Look & feel`}),(0,Y.jsx)(h,{className:$,value:`accountPage`,children:`Account page`})]}),(0,Y.jsx)(g,{value:`signupOptions`,children:(0,Y.jsx)(Me,{errors:i,localSettings:e,localTiers:n,setError:a,updateSetting:t,updateTier:r})}),(0,Y.jsx)(g,{value:`lookAndFeel`,children:(0,Y.jsx)(Oe,{localSettings:e,updateSetting:t})}),(0,Y.jsx)(g,{value:`accountPage`,children:(0,Y.jsx)(De,{errors:i,localSettings:e,setError:a,updateSetting:t})})]})}),Ie=()=>{let{updateRoute:e}=T(),{darkMode:t}=d(),[n,i]=(0,J.useState)(`signup`),[o,s]=(0,J.useState)(`signupOptions`),c=r(),{confirm:l}=xe(),{settings:u,siteData:f,config:p}=K(),{mutateAsync:m}=ae(),{data:{tiers:g}={}}=he(),{mutateAsync:y}=ge(),{mutateAsync:b}=Ne(),{getParam:x}=we(),S=x(`verifyEmail`);(0,J.useEffect)(()=>{S&&(async({token:e})=>{try{let{settings:t}=await b({token:e}),[n]=G(t,[`members_support_address`]);l({title:`Support address verified`,prompt:(0,Y.jsxs)(Y.Fragment,{children:[`Your support email address has been changed to `,(0,Y.jsx)(`strong`,{children:n}),`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Please try again.`;e instanceof Error&&e.message===`Token expired`&&(t=`Verification link has expired.`),l({title:`Error verifying support address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),c(e,{withToast:!1})}})({token:S})},[l,c,S,b]);let{formState:C,setFormState:w,saveState:E,handleSave:D,updateForm:O,okProps:k}=a({initialState:{settings:u,tiers:g||[]},savingDelay:500,onSave:async()=>{await Promise.all(C.tiers.filter(({dirty:e})=>e).map(e=>y(e))),w(e=>({...e,tiers:C.tiers.map(e=>({...e,dirty:!1}))}));let e=C.settings.filter(e=>e.dirty);if(!e.length)return;let{meta:t,settings:n}=await m(e);if(w(e=>({...e,settings:C.settings.map(e=>({...e,dirty:!1}))})),t?.sent_email_verification){let e=C.settings.find(e=>e.key===`members_support_address`)?.value,t=n.find(e=>e.key===`support_email_address`)?.value||W(n.find(e=>e.key===`members_support_address`)?.value?.toString()||`noreply`,f,p);l({title:`Confirm email address`,prompt:(0,Y.jsxs)(Y.Fragment,{children:[`We've sent a confirmation email to `,(0,Y.jsx)(`strong`,{children:e}),`. Until verified, your support email address will remain `,t,`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}},onSaveError:c});(0,J.useEffect)(()=>{!C.tiers.length&&g?.length&&w(e=>({...e,tiers:g}))},[g,C.tiers,w]);let[A,j]=(0,J.useState)({}),M=(e,t)=>{O(n=>({...n,settings:n.settings.map(n=>n.key===e?{...n,value:t,dirty:!0}:n)}))},N=(e,t)=>{j(n=>({...n,[e]:t}))},P=e=>{O(t=>({...t,tiers:t.tiers.map(t=>t.id===e.id?{...e,dirty:!0}:t)}))},F=e=>{i(e),e===`account`?s(`accountPage`):e===`signup`&&o===`accountPage`&&s(`signupOptions`)},I=(0,Y.jsx)(Fe,{errors:A,localSettings:C.settings,localTiers:C.tiers,selectedTab:o,setError:N,updateSetting:M,updateTier:P,onTabChange:e=>{s(e),i(Pe[e])}}),L=(0,Y.jsx)(je,{darkMode:t,localSettings:C.settings,localTiers:C.tiers,selectedTab:n}),R=(0,Y.jsx)(v,{value:n,variant:`button`,onValueChange:e=>F(e),children:(0,Y.jsxs)(_,{children:[(0,Y.jsx)(h,{value:`signup`,children:`Signup`}),(0,Y.jsx)(h,{value:`account`,children:`Account page`}),(0,Y.jsx)(h,{value:`links`,children:`Links`})]})});return(0,Y.jsx)(Ce,{buttonsDisabled:k.disabled,cancelLabel:`Close`,dirty:E===`unsaved`,okLabel:k.label||`Save`,okVariant:k.variant,preview:L,previewBgColor:n===`links`?`white`:`greygradient`,previewToolbarTabs:R,sidebar:I,testId:`portal-modal`,title:`Portal`,onClose:()=>{e(`portal`)},onOk:async()=>{Object.values(A).filter(Boolean).length||await D({force:!0})}})};export{Ie as default};